Файловый менеджер - Редактировать - /home/tuudkjt/globeasy/wp-includes/ID3/includes.tar
Назад
admin-functions.php 0000777 00000001047 15251254121 0010362 0 ustar 00 <?php function wpcf7_current_action() { foreach ( array( 'action', 'action2' ) as $var ) { $action = wpcf7_superglobal_request( $var, null ); if ( isset( $action ) and -1 !== $action ) { return $action; } } return false; } function wpcf7_admin_has_edit_cap() { return current_user_can( 'wpcf7_edit_contact_forms' ); } function wpcf7_add_tag_generator( $name, $title, $elm_id, $callback, $options = array() ) { $tag_generator = WPCF7_TagGenerator::get_instance(); return $tag_generator->add( $name, $title, $callback, $options ); } css/styles-rtl.css 0000777 00000002063 15251254121 0010176 0 ustar 00 /* * Form Tab */ .tag-generator-panel { text-align: right; } .tag-generator-dialog > .close-button { right: auto; left: 8px; } form.tag-generator-panel[data-version="1"] { .control-box > fieldset > legend { border: 1px solid #dfdfdf; border-right: 4px solid #00a0d2; } .insert-box input.tag { float: right; } .insert-box .submitbox input[type="button"] { float: left; } } /* * Mail Tab */ .contact-form-editor-box-mail span.mailtag { margin: 0 4px 0 0; } /* * Welcome Panel */ .wpcf7-welcome-panel .welcome-panel-close { left: 10px; right: auto; padding: 10px 21px 10px 15px; } .wpcf7-welcome-panel .welcome-panel-close::before { right: 0; left: auto; } .wpcf7-welcome-panel .welcome-panel-content { margin-right: 13px; } .wpcf7-welcome-panel .welcome-panel-column { float: right; padding: 0 0 0 2%; } /* * Integration */ .card { border-left: 1px solid #e5e5e5; border-right: 4px solid #e5e5e5; } .card img.icon { float: right; margin: 8px -8px 8px 8px; } .card h2.title { float: right; } .card .infobox { float: left; } css/styles.css 0000777 00000023626 15251254121 0007407 0 ustar 00 #titlediv .inside p.description { margin: 8px 2px 0; } #titlediv .inside p.description label { cursor: pointer; } span.shortcode { display: block; margin: 2px 0; } span.shortcode.old { background: #777; color: #fff; } span.shortcode input { font-size: 12px; border: none; box-shadow: none; padding: 4px 8px; margin: 0; } #wpcf7-contact-form-list-table span.shortcode input, #wpcf7-contact-form-editor span.shortcode input { background: transparent; } #wpcf7-contact-form-list-table span.shortcode input { color: #444; } #wpcf7-contact-form-editor span.shortcode input { color: #fff; width: 100%; } #submitpost input.copy { margin-bottom: 10px; } #submitpost input.delete { padding: 0; margin: 0; border: none; cursor: pointer; background: inherit; color: #a00; } #submitpost input.delete:hover { color: #dc3232; /* Red */ } #submitpost input.delete:focus { outline: thin dotted; } .postbox-container .postbox h3 { border-bottom: 1px solid transparent; } div.config-error, span.config-error, ul.config-error { color: #444; font-style: normal; font-size: 13px; } ul.config-error { margin: 2px 0; } ul.config-error li { list-style: none; padding: 2px 2px; margin: 0; } #misc-publishing-actions .config-error { line-height: 2; } [data-config-field][aria-invalid="true"] { border-color: #dc3232; } #contact-form-editor-tabs .icon-in-circle, #contact-form-editor .config-error .icon-in-circle, .wp-list-table .config-error .icon-in-circle, .icon-in-circle { display: inline-block; vertical-align: baseline; margin: 1px 6px 0; padding: 0 5px; min-width: 7px; height: 17px; border-radius: 11px; background-color: #ca4a1f; color: #fff; font-size: 12px; font-weight: bold; line-height: 17px; text-align: center; z-index: 26; } /* * Tabs */ #contact-form-editor-tabs { border-bottom: 1px solid #aaa; padding: 9px 10px 0; margin: 0; } #contact-form-editor-tabs button { display: inline-block; border: 1px solid #ccc; border-bottom: 1px solid #aaa; padding: 6px 10px; margin: 0 4px -1px; color: #333; background-color: #e4e4e4; font-size: 14px; font-weight: normal; line-height: 20px; } #contact-form-editor-tabs button[aria-selected="true"] { border-top: 1px solid #aaa; border-right: 1px solid #aaa; border-left: 1px solid #aaa; border-bottom: 1px solid #f5f5f5; color: #000; background-color: #f5f5f5; font-weight: bold; } #contact-form-editor-tabs button:hover { color: #000; } #contact-form-editor .contact-form-editor-panel > div.config-error { margin-bottom: 1.4em; } #contact-form-editor-tabs button[aria-selected="true"] .icon-in-circle { display: none; } #contact-form-editor .contact-form-editor-panel h2 { font-size: 18px; font-weight: 400; line-height: 24px; margin: 8px 0; padding: 0; } #contact-form-editor .contact-form-editor-panel { background-color: #f5f5f5; border: 1px solid #aaa; border-top: none; padding: 16px; } #contact-form-editor .form-table th { width: 100px; } #contact-form-editor .contact-form-editor-panel fieldset legend { line-height: 1.5; margin: .6em 0 .4em; } /* * Form Tab */ #tag-generator-list button { font-size: 12px; height: 26px; line-height: 24px; margin: 2px; padding: 0 8px 1px; } .tag-generator-dialog { padding: 12px; border: 1px solid #c3c4c7; box-shadow: 0 1px 1px rgba( 0, 0, 0, 0.04 ); height: 720px; width: 720px; overflow: auto; } .tag-generator-dialog::backdrop { background: rgb( 0 0 0 / 50% ); } .tag-generator-dialog > .close-button { position: absolute; top: 8px; right: 8px; } form.tag-generator-panel { display: flex; flex-direction: column; height: 720px; width: 720px; max-height: 100%; max-width: 100%; margin-block-end: 0; } form.tag-generator-panel[data-version="2"] { &:invalid .mail-tag-tip { display: none; } .description-box { box-sizing: border-box; flex: none; margin-inline: -12px; padding-inline: 12px; border-bottom: 1px solid #dfdfdf; } .control-box { box-sizing: border-box; flex: auto; display: flex; flex-direction: column; gap: 12px 0; min-height: 120px; overflow: auto; } .control-box > fieldset { margin-block: 8px; margin-inline-start: 10em; line-height: 2.25; } .control-box > fieldset > legend { font-weight: bolder; margin-block: 8px; margin-inline-start: -10em; line-height: 1.25; } .control-box input[type="text"] { width: 20rem; max-width: 88%; } .control-box input[type="number"] { width: 8rem; max-width: 44%; } .control-box textarea { height: 12ex; width: 20rem; max-width: 88%; } .control-box select { width: 20rem; max-width: 88%; } .control-box input:invalid, .control-box textarea:invalid { background-color: #ffe9de; } .insert-box { box-sizing: border-box; flex: none; margin-block-end: -12px; margin-inline: -12px; padding-block: 24px 12px; padding-inline: 12px; background-color: #fcfcfc; border-top: 1px solid #dfdfdf; } .insert-box .flex-container { display: flex; } .insert-box .flex-container > [data-tag-part="tag"] { flex: auto; margin-inline-end: 8px; } .insert-box .mail-tag-tip::before { font: 1.2rem dashicons; content: "\f348" / ''; color: #646970; padding-inline-end: 4px; vertical-align: top; } } form.tag-generator-panel[data-version="1"] { .control-box { padding: 0; margin: 0; overflow: auto; flex-grow: 1; } .control-box > fieldset > legend { border: 1px solid #dfdfdf; border-left: 4px solid #00a0d2; background: #f7fcfe; padding: 4px 12px; margin: 4px 0; line-height: 1.4em; width: 100%; box-sizing: border-box; } table { width: 100%; } table.form-table th { width: 120px; padding: 4px 10px 4px 0; font-size: 13px; } table.form-table td { padding: 4px 10px; font-size: 13px; } .control-box input.oneline { width: 200px; } .control-box input.large-text { width: 400px; } .control-box textarea.values { width: 200px; height: 6em; } .control-box input[type="number"], .control-box input[type="date"] { width: 88px; } .control-box table caption { text-align: left; font-size: 110%; font-weight: bold; color: #777; margin: 10px 0 5px; } .control-box table.form-table td label { line-height: 1.1em; } .control-box table.form-table td label .description { line-height: 1.4em; } .insert-box { margin: 0 -15px -15px; padding: 8px 16px; background-color: #fcfcfc; border-top: 1px solid #dfdfdf; overflow: auto; } .insert-box input.tag { width: 510px; float: left; background-color: transparent; box-shadow: none; } .insert-box .submitbox { padding: 0; } .insert-box .submitbox input[type="button"] { float: right; } .insert-box .description label { cursor: text; } } /* * Mail Tab */ .contact-form-editor-box-mail span.mailtag { display: inline-block; margin: 0 0 0 4px; padding: 1px 2px; cursor: pointer; color: #000; } .contact-form-editor-box-mail span.mailtag.used { color: #666; } .contact-form-editor-box-mail span.mailtag.unused { font-weight: bold; } /* * Messages Tab */ #messages-panel p.description { margin: 5px 0 10px; } /* * Tabs for integration modules */ #sendinblue-panel table tr.inactive ~ tr { display: none; } #sendinblue-panel .dashicons { text-decoration: none; } #sendinblue-panel td p { margin-top: 12px; } /* * List Table */ .fixed .column-title { width: 38%; } .fixed .column-shortcode { width: 38%; } /* * Welcome Panel */ .wpcf7-welcome-panel { position: relative; overflow: auto; margin: 16px 0; padding: 23px 10px 0; border: 1px solid #c3c4c7; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); background: #fff; font-size: 13px; line-height: 1.7; } .wpcf7-welcome-panel h3 { font-size: 16px; font-weight: 600; line-height: 2.1em; margin: 1em 0 1.2em; } .wpcf7-welcome-panel h3 .dashicons { position: relative; top: -2px; display: inline-block; width: 60px; color: #575757; font-size: 40px; } .wpcf7-welcome-panel p { color: #646970; } .wpcf7-welcome-panel p a { font-weight: bold; } .wpcf7-welcome-panel .welcome-panel-close { position: absolute; z-index: 2; top: 10px; right: 10px; padding: 10px 15px 10px 21px; font-size: 13px; line-height: 1.23076923; /* Chrome rounding, needs to be 16px equivalent */ text-decoration: none; } .wpcf7-welcome-panel .welcome-panel-close::before { background: 0 0; color: #787c82; content: "\f153" / ''; display: block; font: normal 16px/20px dashicons; speak: never; height: 20px; text-align: center; width: 20px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; position: absolute; top: 8px; left: 0; transition: all .1s ease-in-out; } .wpcf7-welcome-panel .welcome-panel-content { display: block; margin-left: 13px; max-width: 1500px; min-height: auto; } .wpcf7-welcome-panel .welcome-panel-column-container { clear: both; position: relative; } .wpcf7-welcome-panel .welcome-panel-column { display: block; width: 48%; min-width: 200px; float: left; padding: 0 2% 0 0; margin: 0 0 1em 0; } @media screen and (max-width: 870px) { .wpcf7-welcome-panel .welcome-panel-column { display: block; float: none; width: 100%; } } .wpcf7-welcome-panel .welcome-panel-column p { margin-top: 7px; color: #3c434a; } /* * Integration */ .card { background: #fff none repeat scroll 0 0; border: 1px solid #e5e5e5; border-left: 4px solid #e5e5e5; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); margin-top: 20px; max-width: 520px; min-width: 255px; padding: 0.7em 2em 1em; position: relative; } .card.active { border-color: #00a0d2; } #constant_contact.card.active { border-color: #dc3232; } .card img.icon { float: left; margin: 8px 8px 8px -8px; } .card h2.title { float: left; max-width: 240px; font-size: 1.3em; font-weight: 600; } .card .infobox { float: right; font-size: 13px; color: #666; margin: 1em; line-height: 1.5; max-width: 240px; } .card .inside .form-table th { padding: 15px 10px 15px 0; width: 160px; } .card .inside .form-table td { padding: 10px 10px; } .card .checkboxes li { margin: 0; } config-validator.php 0000777 00000007737 15251254121 0010530 0 ustar 00 <?php add_action( 'wpcf7_admin_menu', 'wpcf7_admin_init_bulk_cv', 10, 0 ); function wpcf7_admin_init_bulk_cv() { if ( ! wpcf7_validate_configuration() or ! current_user_can( 'wpcf7_edit_contact_forms' ) ) { return; } $result = WPCF7::get_option( 'bulk_validate' ); $last_important_update = WPCF7_ConfigValidator::last_important_update; if ( ! empty( $result['version'] ) and version_compare( $last_important_update, $result['version'], '<=' ) ) { return; } add_filter( 'wpcf7_admin_menu_change_notice', 'wpcf7_admin_menu_change_notice_bulk_cv', 10, 1 ); add_action( 'wpcf7_admin_warnings', 'wpcf7_admin_warnings_bulk_cv', 5, 3 ); } function wpcf7_admin_menu_change_notice_bulk_cv( $counts ) { $counts['wpcf7'] += 1; return $counts; } function wpcf7_admin_warnings_bulk_cv( $page, $action, $object ) { if ( 'wpcf7' === $page and 'validate' === $action ) { return; } wp_admin_notice( sprintf( '%1$s » %2$s', __( 'Misconfiguration leads to mail delivery failure or other troubles. Validate your contact forms now.', 'contact-form-7' ), wpcf7_link( add_query_arg( array( 'action' => 'validate' ), menu_page_url( 'wpcf7', false ) ), __( 'Validate Contact Form 7 Configuration', 'contact-form-7' ) ) ), array( 'type' => 'warning' ) ); } add_action( 'wpcf7_admin_load', 'wpcf7_load_bulk_validate_page', 10, 2 ); function wpcf7_load_bulk_validate_page( $page, $action ) { if ( 'wpcf7' !== $page or 'validate' !== $action or ! wpcf7_validate_configuration() or 'POST' !== wpcf7_superglobal_server( 'REQUEST_METHOD' ) ) { return; } check_admin_referer( 'wpcf7-bulk-validate' ); if ( ! current_user_can( 'wpcf7_edit_contact_forms' ) ) { wp_die( wp_kses_data( __( 'You are not allowed to validate configuration.', 'contact-form-7' ) ) ); } $contact_forms = WPCF7_ContactForm::find(); $result = array( 'timestamp' => time(), 'version' => WPCF7_VERSION, 'count_valid' => 0, 'count_invalid' => 0, ); foreach ( $contact_forms as $contact_form ) { $config_validator = new WPCF7_ConfigValidator( $contact_form ); $config_validator->validate(); $config_validator->save(); if ( $config_validator->is_valid() ) { $result['count_valid'] += 1; } else { $result['count_invalid'] += 1; } } WPCF7::update_option( 'bulk_validate', $result ); $redirect_to = add_query_arg( array( 'message' => 'validated', ), menu_page_url( 'wpcf7', false ) ); wp_safe_redirect( $redirect_to ); exit(); } function wpcf7_admin_bulk_validate_page() { $contact_forms = WPCF7_ContactForm::find(); $count = WPCF7_ContactForm::count(); $submit_text = sprintf( /* translators: %s: number of contact forms */ _n( 'Validate %s contact form now', 'Validate %s contact forms now', $count, 'contact-form-7' ), number_format_i18n( $count ) ); $formatter = new WPCF7_HTMLFormatter( array( 'allowed_html' => array_merge( wpcf7_kses_allowed_html(), array( 'form' => array( 'action' => true, 'method' => true, ), ) ), ) ); $formatter->append_start_tag( 'div', array( 'class' => 'wrap', ) ); $formatter->append_start_tag( 'h1' ); $formatter->append_preformatted( esc_html( __( 'Validate Configuration', 'contact-form-7' ) ) ); $formatter->end_tag( 'h1' ); $formatter->append_start_tag( 'form', array( 'method' => 'post', 'action' => '', ) ); $formatter->append_start_tag( 'p' ); $formatter->call_user_func( static function () { wp_nonce_field( 'wpcf7-bulk-validate' ); } ); $formatter->append_start_tag( 'input', array( 'type' => 'hidden', 'name' => 'action', 'value' => 'validate', ) ); $formatter->append_start_tag( 'input', array( 'type' => 'submit', 'class' => 'button', 'value' => $submit_text, ) ); $formatter->end_tag( 'form' ); $formatter->append_preformatted( wpcf7_link( __( 'https://contactform7.com/configuration-validator-faq/', 'contact-form-7' ), __( 'FAQ about Configuration Validator', 'contact-form-7' ) ) ); $formatter->print(); } js/index.js 0000777 00000030731 15251254121 0006636 0 ustar 00 (()=>{"use strict";var e={n:t=>{var a=t&&t.__esModule?()=>t.default:()=>t;return e.d(a,{a}),a},d:(t,a)=>{for(var r in a)e.o(a,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:a[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.i18n,a=document.querySelector("#contact-form-editor"),r=window.wp.apiFetch;var c=e.n(r);const o=e=>{const t=document.createElement("span");return t.classList.add("icon-in-circle"),t.setAttribute("aria-hidden","true"),t.append(e),t},n=e=>e.replace(/[^0-9a-z]+/gi,"-"),l=e=>{const t=document.querySelector(`#${e.dataset?.toggle}`);t&&(e.checked?t.classList.remove("hidden"):t.classList.add("hidden"))},i=()=>{document.querySelectorAll("#contact-form-editor .config-error, #misc-publishing-actions .config-error").forEach((e=>{e.remove()})),document.querySelectorAll("#contact-form-editor [data-config-field]").forEach((e=>{const t=e.dataset.configField;d(t).length?(e.setAttribute("aria-invalid","true"),e.setAttribute("aria-describedby",n(`wpcf7-config-error-for-${t}`)),e.after(u(t))):e.removeAttribute("aria-invalid")})),document.querySelectorAll("#contact-form-editor-tabs [data-panel]").forEach((e=>{e.querySelectorAll(".icon-in-circle").forEach((e=>{e.remove()})),s(e.dataset.panel)&&e.querySelector("a")?.append(o("!"))}));let e=0;if(document.querySelectorAll("#contact-form-editor .contact-form-editor-panel").forEach((a=>{const r=s(a.id);if(r){e+=r;const c=document.createElement("div");c.classList.add("config-error"),c.append(o("!"),(0,t.sprintf)((0,t._n)("%d configuration error detected in this tab panel.","%d configuration errors detected in this tab panel.",r,"contact-form-7"),r)),a.prepend(c)}})),e){const a=document.createElement("div");a.classList.add("misc-pub-section","config-error");const r=document.createElement("a");r.setAttribute("href",wpcf7.configValidator.docUrl),r.append((0,t.__)("How to resolve?","contact-form-7")),a.append(o("!"),(0,t.sprintf)((0,t._n)("%d configuration error detected.","%d configuration errors detected.",e,"contact-form-7"),e),document.createElement("br"),r),document.querySelector("#misc-publishing-actions")?.append(a)}},s=e=>document.querySelectorAll(`#${e} ul.config-error li`)?.length,d=e=>{const t=[];for(const a in wpcf7.configValidator.errors)a===e&&t.push(...wpcf7.configValidator.errors[a]);return t},u=e=>{if(!e)return"";const t=document.createElement("ul");return t.setAttribute("id",n(`wpcf7-config-error-for-${e}`)),t.classList.add("config-error"),d(e).forEach((e=>{if(!e.message)return;const a=document.createElement("li");if(a.append(o("!")),e.link){const t=document.createElement("a");t.setAttribute("href",e.link),t.append(e.message),a.append(" ",t)}else a.append(" ",e.message);t.append(a)})),t},m=document.querySelector("#wpcf7-welcome-panel"),p=e=>{const t=m.querySelector("#welcomepanelnonce")?.value;if(!t)return;const a=new FormData;a.append("action","wpcf7-update-welcome-panel"),a.append("visible",e),a.append("welcomepanelnonce",t),fetch(new Request(ajaxurl,{method:"POST",body:a})),e?m.classList.remove("hidden"):m.classList.add("hidden")},f=e=>{var t;const a=e.dataset.id,r=e.querySelector('[name="name"]');let c=null!==(t=r?.value.trim())&&void 0!==t?t:"";r&&(c||(c=`${a}-${Math.floor(1e3*Math.random())}`),r.value=c),e.querySelectorAll(".tag").forEach((t=>{const a=e.querySelector('[name="tagtype"]')?.value||t.name;a&&(t.value=v(a,e))})),e.querySelectorAll("span.mail-tag").forEach((e=>{e.innerText=`[${c}]`})),e.querySelectorAll("input.mail-tag").forEach((e=>{e.value=`[${c}]`}))},v=(e,t)=>{var a,r,c;const o=null!==(a=t.querySelector(`.scope.${e}`))&&void 0!==a?a:t,n=e+(t.querySelector('[name="required"]:checked')?"*":""),l=null!==(r=t.querySelector('[name="name"]')?.value)&&void 0!==r?r:"",i=[];o.querySelectorAll(".option").forEach((e=>{"checkbox"===e.type?e.checked&&i.push(e.name):"radio"===e.type?e.checked&&!e.classList.contains("default")&&i.push(`${e.name}:${e.value}`):""!==e.value&&(e.classList.contains("filetype")?i.push(`${e.name}:${e.value.split(/[,|\s]+/).join("|")}`):e.classList.contains("color")?i.push(`${e.name}:#${e.value}`):"class"===e.name?e.value.split(" ").forEach((e=>{i.push(`class:${e}`)})):i.push(`${e.name}:${e.value}`))})),"radio"===e&&i.push("default:1");const s=null!==(c=o.querySelector('[name="values"]')?.value.split("\n").map((e=>e.trim())).filter((e=>""!==e)).map((e=>`"${e.replace(/["]/g,""")}"`)))&&void 0!==c?c:[],d=[n,l,i.join(" "),s.join(" ")].map((e=>e.trim())).filter((e=>""!==e)),u=o.querySelector('[name="content"]')?.value.trim();return u?`[${d.join(" ")}] ${u} [/${n}]`:`[${d.join(" ")}]`},g=e=>{const t=h(e);t?(e.querySelectorAll('[data-tag-part="tag"]').forEach((e=>{e.value=t})),e.querySelectorAll('[data-taggen="insert-tag"]').forEach((e=>{e.disabled=!1})),e.querySelectorAll('[data-tag-part="mail-tag"]').forEach((t=>{const a=e.querySelector('[data-tag-part="name"]');a&&(t.innerText=`[${a.value.trim()}]`)}))):(e.querySelectorAll('[data-tag-part="tag"]').forEach((e=>{e.value=""})),e.querySelectorAll('[data-taggen="insert-tag"]').forEach((e=>{e.disabled=!0})))},h=e=>{var t,a;const r=e.querySelector('[data-tag-part="basetype"]')?.value.trim();if(!r)return;if(e.querySelector(":invalid"))return;let c=r;const o=e.querySelector('[data-tag-part="type-suffix"]');o&&(["checkbox","radio"].includes(o?.type)?c+=o.checked?o.value.trim():"":c+=o.value.trim());const n=e.querySelector('[data-tag-part="name"]');let l=null!==(t=n?.value.trim())&&void 0!==t?t:"";n&&(l||(l=`${r}-${Math.floor(1e3*Math.random())}`),n.value=l);const i=[];e.querySelectorAll('[data-tag-part="option"]').forEach((e=>{const t=e.dataset.tagOption?.trim();t&&(["checkbox","radio"].includes(e?.type)&&!e.checked||t.split(" ").forEach((t=>{t.endsWith(":")?e.value?.split(" ").forEach((e=>{(e=e.trim())&&i.push(t+e)})):i.push(t)})))}));const s=null!==(a=e.querySelector('[data-tag-part="value"]')?.value.split("\n").map((e=>e.trim())).filter((e=>""!==e)).map((e=>`"${e.replace(/["]/g,""")}"`)))&&void 0!==a?a:[],d=[c,l,i.join(" "),s.join(" ")].map((e=>e.trim())).filter((e=>""!==e)),u=e.querySelector('[data-tag-part="content"]')?.value.trim();return u?`[${d.join(" ")}] ${u} [/${c}]`:`[${d.join(" ")}]`},y=e=>{const t=document.querySelector("#wpcf7-admin-form-element");if(!t)return;let a=!1;t.querySelectorAll("input, textarea, select").forEach((e=>{if(!a)switch(e.type){case"button":case"hidden":case"image":case"reset":case"search":case"submit":break;case"checkbox":case"radio":a=e.defaultChecked!==e.checked;break;case"select-multiple":case"select-one":e.querySelectorAll("option").forEach((e=>{a||e.defaultSelected===e.selected||(a=!0)}));break;default:a=e.defaultValue!==e.value}})),a&&e.preventDefault()};document.addEventListener("DOMContentLoaded",(e=>{a&&a.querySelectorAll(':scope > [role="tablist"]').forEach((e=>{const t=e.querySelectorAll(':scope > [role="tab"]');let r=parseInt(e.dataset.activeTab);e.addEventListener("keydown",(a=>{["ArrowLeft","ArrowRight"].includes(a.key)&&(t[r].setAttribute("tabindex","-1"),"ArrowLeft"===a.key&&(r-=1,r<0&&(r=t.length-1)),"ArrowRight"===a.key&&(r+=1,t.length<=r&&(r=0)),t[r].setAttribute("tabindex","0"),t[r].focus(),e.dataset.activeTab=r)})),t.forEach((t=>{t.addEventListener("click",(r=>{const c=t.getAttribute("aria-controls");if(!c)return;const o=c.split(" ").reduceRight(((e,t)=>{const r=a.querySelector(`#${t}`);return r&&(e=r),e}),null);o&&(e.querySelectorAll(':scope > [aria-selected="true"]').forEach((e=>{e.setAttribute("aria-selected","false")})),t.setAttribute("aria-selected","true"),a.querySelectorAll(':scope > [role="tabpanel"]').forEach((e=>{e.setAttribute("hidden","hidden")})),o.removeAttribute("hidden"),document.querySelectorAll('input[name="active-tab"]').forEach((e=>{e.value=o.id})))}))}))})),document.querySelectorAll("#contact-form-editor [data-config-field]").forEach((e=>{e.addEventListener("change",(e=>{const t=document.querySelector('[name="post_ID"]')?.value;t&&0<t&&(e=>{const{namespace:t}=wpcf7.apiSettings,a=`/${t}/contact-forms/${e}`,r=new FormData;document.querySelectorAll("#contact-form-editor [data-config-field]").forEach((e=>{const t=e.name?.replace(/^wpcf7-/,"").replace(/-/g,"_");if(!t)return;let a;["checkbox","radio"].includes(e.type)?e.checked&&(a=e.value):a=e.value,void 0!==a&&(t.endsWith("[]")?r.append(t,a):r.set(t,a))})),r.set("context","dry-run"),c()({path:a,method:"POST",body:r}).then((e=>{wpcf7.configValidator.errors=e.config_errors,i()}))})(t)}))})),i(),(()=>{if(!m)return;const e=document.querySelector("#wpcf7-welcome-panel-show");m.querySelectorAll(".welcome-panel-close").forEach((t=>{t.addEventListener("click",(t=>{p(0),e?.removeAttribute("checked"),t.preventDefault()}))})),e?.addEventListener("click",(t=>{p(e?.checked?1:0)}))})(),document.querySelectorAll('[data-taggen="open-dialog"]').forEach((e=>{e.addEventListener("click",(t=>{const a=document.querySelector(`#${e.dataset.target}`);if(a){const e=a.querySelector("form.tag-generator-panel");e&&("1"===e.dataset.version?(e=>{f(e),e.querySelectorAll(".control-box").forEach((t=>{t.addEventListener("change",(t=>{var a;"name"===(a=t.target).name&&(a.value=a.value.replace(/[^0-9a-zA-Z:._-]/g,"").replace(/^[^a-zA-Z]+/,"")),a.classList.contains("numeric")&&(a.value=a.value.replace(/[^0-9.-]/g,"")),a.classList.contains("idvalue")&&(a.value=a.value.replace(/[^-0-9a-zA-Z_]/g,"")),a.classList.contains("classvalue")&&(a.value=a.value.split(" ").map((e=>e.replace(/[^-0-9a-zA-Z_]/g,""))).join(" ").replace(/\s+/g," ").trim()),a.classList.contains("color")&&(a.value=a.value.replace(/[^0-9a-fA-F]/g,"")),a.classList.contains("filesize")&&(a.value=a.value.replace(/[^0-9kKmMbB]/g,"")),a.classList.contains("filetype")&&(a.value=a.value.replace(/[^0-9a-zA-Z.,|\s]/g,"")),a.classList.contains("date")&&(a.value.match(/^\d{4}-\d{2}-\d{2}$/)||(a.value="")),"values"===a.name&&(a.value=a.value.trim()),f(e)}))}))})(e):"2"===e.dataset.version&&(e=>{var t;null!==(t=e.reset())&&void 0!==t||g(e),e.querySelectorAll(".control-box").forEach((t=>{t.addEventListener("change",(t=>{g(e)})),t.addEventListener("keyup",(t=>{var a;"text"!==(null!==(a=t.target.type)&&void 0!==a?a:"")&&"textarea"!==t.target.tagName?.toLowerCase()||g(e)}))}))})(e)),a.showModal()}}))})),document.querySelectorAll("dialog.tag-generator-dialog").forEach((e=>{e.querySelectorAll('[data-taggen="close-dialog"]').forEach((t=>{t.addEventListener("click",(t=>e.close("")))})),e.querySelectorAll('[data-taggen="insert-tag"], .insert-tag').forEach((t=>{t.addEventListener("click",(t=>{const a=e.querySelector('[data-tag-part="tag"], .tag');e.close(a?.value)}))})),e.addEventListener("close",(t=>{var a;const r=document.querySelector("textarea#wpcf7-form");if(null===r)return;if(""===e.returnValue)return;const c=null!==(a=r.selectionEnd)&&void 0!==a?a:0;0===c&&(e.returnValue+="\n\n"),r.value=r.value.substring(0,c)+e.returnValue+r.value.substring(c),r.selectionStart=c,r.selectionEnd=c+e.returnValue.length,r.focus()}))})),(()=>{const e=document.querySelector("#wpcf7-admin-form-element");e&&(window.addEventListener("beforeunload",y),e.addEventListener("submit",(e=>{e.submitter?.name&&"wpcf7-copy"===e.submitter.name||window.removeEventListener("beforeunload",y)})))})();const r=document.querySelector("input#title");r&&""===r.value&&r.focus(),document.querySelector("#wpcf7-admin-form-element")?.addEventListener("submit",(e=>{const a=document.querySelector('#wpcf7-admin-form-element [name="action"]'),r=document.querySelector('#wpcf7-admin-form-element [name="_wpnonce"]');"wpcf7-save"===e.submitter?.name&&(a&&(a.value="save"),r&&(r.value=wpcf7.nonce.save),document.querySelectorAll("#wpcf7-admin-form-element #publishing-action .spinner").forEach((e=>{e.classList.add("is-active")}))),"wpcf7-copy"===e.submitter?.name&&(a&&(a.value="copy"),r&&(r.value=wpcf7.nonce.copy)),"wpcf7-delete"===e.submitter?.name&&(window.confirm((0,t.__)("You are about to delete this contact form.\n 'Cancel' to stop, 'OK' to delete.","contact-form-7"))?(a&&(a.value="delete"),r&&(r.value=wpcf7.nonce.delete)):e.preventDefault())})),document.querySelectorAll('.contact-form-editor-box-mail span.mailtag, [data-tag-part="mail-tag"]').forEach((e=>{e.addEventListener("click",(t=>{const a=document.createRange();a.selectNodeContents(e),window.getSelection().addRange(a)}))})),document.querySelectorAll("input.selectable").forEach((e=>{e.addEventListener("click",(t=>{e.focus(),e.select()}))})),document.querySelectorAll("[data-toggle]").forEach((e=>{l(e),e.addEventListener("change",(t=>{l(e)}))})),document.querySelectorAll("#wpcf7-sendinblue-enable-contact-list, #wpcf7-sendinblue-enable-transactional-email").forEach((e=>{e.addEventListener("change",(t=>{e.checked?e.closest("tr").classList.remove("inactive"):e.closest("tr").classList.add("inactive")}))}))}))})(); js/index.asset.php 0000777 00000000162 15251254121 0010122 0 ustar 00 <?php return array( 'dependencies' => array( 'wp-api-fetch', 'wp-i18n', ), 'version' => WPCF7_VERSION, ); class-contact-forms-list-table.php 0000777 00000012762 15251254121 0013212 0 ustar 00 <?php if ( ! class_exists( 'WP_List_Table' ) ) { require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php'; } class WPCF7_Contact_Form_List_Table extends WP_List_Table { public static function define_columns() { $columns = array( 'cb' => '<input type="checkbox" />', 'title' => __( 'Title', 'contact-form-7' ), 'shortcode' => __( 'Shortcode', 'contact-form-7' ), 'author' => __( 'Author', 'contact-form-7' ), 'date' => __( 'Date', 'contact-form-7' ), ); return $columns; } public function __construct() { parent::__construct( array( 'singular' => 'post', 'plural' => 'posts', 'ajax' => false, ) ); } public function prepare_items() { $current_screen = get_current_screen(); $per_page = $this->get_items_per_page( 'wpcf7_contact_forms_per_page' ); $args = array( 'posts_per_page' => $per_page, 'orderby' => 'title', 'order' => 'ASC', 'offset' => ( $this->get_pagenum() - 1 ) * $per_page, ); if ( $search_keyword = wpcf7_superglobal_request( 's' ) ) { $args['s'] = $search_keyword; } if ( $order_by = wpcf7_superglobal_request( 'orderby' ) ) { $args['orderby'] = $order_by; } if ( $order = wpcf7_superglobal_request( 'order' ) and 'desc' === strtolower( $order ) ) { $args['order'] = 'DESC'; } $this->items = WPCF7_ContactForm::find( $args ); $total_items = WPCF7_ContactForm::count(); $total_pages = ceil( $total_items / $per_page ); $this->set_pagination_args( array( 'total_items' => $total_items, 'total_pages' => $total_pages, 'per_page' => $per_page, ) ); } public function get_columns() { return get_column_headers( get_current_screen() ); } protected function get_sortable_columns() { $columns = array( 'title' => array( 'title', true ), 'author' => array( 'author', false ), 'date' => array( 'date', false ), ); return $columns; } protected function get_bulk_actions() { $actions = array( 'delete' => __( 'Delete', 'contact-form-7' ), ); return $actions; } protected function column_default( $item, $column_name ) { return ''; } public function column_cb( $item ) { return sprintf( '<input type="checkbox" name="%1$s[]" value="%2$s" />', $this->_args['singular'], $item->id() ); } public function column_title( $item ) { $edit_link = add_query_arg( array( 'post' => absint( $item->id() ), 'action' => 'edit', ), menu_page_url( 'wpcf7', false ) ); $output = sprintf( '<a class="row-title" href="%1$s" aria-label="%2$s">%3$s</a>', esc_url( $edit_link ), esc_attr( sprintf( /* translators: %s: title of contact form */ __( 'Edit “%s”', 'contact-form-7' ), $item->title() ) ), esc_html( $item->title() ) ); $output = sprintf( '<strong>%s</strong>', $output ); if ( wpcf7_validate_configuration() and current_user_can( 'wpcf7_edit_contact_form', $item->id() ) ) { $config_validator = new WPCF7_ConfigValidator( $item ); $config_validator->restore(); if ( $count_errors = $config_validator->count_errors() ) { $error_notice = sprintf( /* translators: %s: number of errors detected */ _n( '%s configuration error detected', '%s configuration errors detected', $count_errors, 'contact-form-7' ), number_format_i18n( $count_errors ) ); $output .= sprintf( '<div class="config-error"><span class="icon-in-circle" aria-hidden="true">!</span> %s</div>', $error_notice ); } } return $output; } protected function handle_row_actions( $item, $column_name, $primary ) { if ( $column_name !== $primary ) { return ''; } $edit_link = add_query_arg( array( 'post' => absint( $item->id() ), 'action' => 'edit', ), menu_page_url( 'wpcf7', false ) ); $actions = array( 'edit' => wpcf7_link( $edit_link, __( 'Edit', 'contact-form-7' ) ), ); if ( current_user_can( 'wpcf7_edit_contact_form', $item->id() ) ) { $copy_link = add_query_arg( array( 'post' => absint( $item->id() ), 'action' => 'copy', ), menu_page_url( 'wpcf7', false ) ); $copy_link = wp_nonce_url( $copy_link, 'wpcf7-copy-contact-form_' . absint( $item->id() ) ); $actions = array_merge( $actions, array( 'copy' => wpcf7_link( $copy_link, __( 'Duplicate', 'contact-form-7' ) ), ) ); } return $this->row_actions( $actions ); } public function column_author( $item ) { $post = get_post( $item->id() ); if ( ! $post ) { return; } $author = get_userdata( $post->post_author ); if ( false === $author ) { return; } return esc_html( $author->display_name ); } public function column_shortcode( $item ) { $shortcodes = array( $item->shortcode() ); $output = ''; foreach ( $shortcodes as $shortcode ) { $output .= "\n" . sprintf( '<span class="shortcode"><input %s /></span>', wpcf7_format_atts( array( 'type' => 'text', 'readonly' => true, 'value' => $shortcode, 'class' => 'large-text code selectable', ) ) ); } return trim( $output ); } public function column_date( $item ) { $datetime = get_post_datetime( $item->id() ); if ( false === $datetime ) { return ''; } $t_time = sprintf( /* translators: 1: date, 2: time */ __( '%1$s at %2$s', 'contact-form-7' ), /* translators: date format, see https://www.php.net/date */ $datetime->format( __( 'Y/m/d', 'contact-form-7' ) ), /* translators: time format, see https://www.php.net/date */ $datetime->format( __( 'g:i a', 'contact-form-7' ) ) ); return $t_time; } } welcome-panel.php 0000777 00000020470 15251254121 0010015 0 ustar 00 <?php abstract class WPCF7_WelcomePanelColumn { abstract protected function icon(); abstract protected function title(); abstract protected function content(); public function print_content() { $content = $this->content(); if ( is_array( $content ) ) { $content = implode( "\n\n", $content ); } $content = wp_kses_post( $content ); $content = wptexturize( $content ); $content = convert_chars( $content ); $content = wpautop( $content ); $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'div', array( 'class' => 'welcome-panel-column', ) ); $formatter->append_start_tag( 'h3' ); $formatter->append_start_tag( 'span', array( 'class' => sprintf( 'dashicons dashicons-%s', $this->icon() ), 'aria-hidden' => 'true', ) ); $formatter->end_tag( 'span' ); $formatter->append_whitespace(); $formatter->append_preformatted( $this->title() ); $formatter->end_tag( 'h3' ); $formatter->append_preformatted( $content ); $formatter->print(); } } class WPCF7_WelcomePanelColumn_AntiSpam extends WPCF7_WelcomePanelColumn { protected function icon() { return 'shield'; } protected function title() { return __( 'Getting spammed? You have protection.', 'contact-form-7' ); } protected function content() { return array( __( 'Spammers target everything; your contact forms are not an exception. Before you get spammed, protect your contact forms with the powerful anti-spam features Contact Form 7 provides.', 'contact-form-7' ), sprintf( /* translators: 1: URL to support page about Akismet, 2: Cloudflare Turnstile, 3: Disallowed list */ __( 'Contact Form 7 supports spam-filtering with <a href="%1$s">Akismet</a>. <a href="%2$s">Cloudflare Turnstile</a> blocks annoying spambots. Plus, using <a href="%3$s">disallowed list</a>, you can block messages containing specified keywords or those sent from specified IP addresses.', 'contact-form-7' ), __( 'https://contactform7.com/spam-filtering-with-akismet/', 'contact-form-7' ), __( 'https://contactform7.com/turnstile-integration/', 'contact-form-7' ), __( 'https://contactform7.com/comment-blacklist/', 'contact-form-7' ) ), ); } } class WPCF7_WelcomePanelColumn_Donation extends WPCF7_WelcomePanelColumn { protected function icon() { return 'megaphone'; } protected function title() { return __( 'Contact Form 7 needs your support.', 'contact-form-7' ); } protected function content() { return array( __( 'It is hard to continue to maintain this plugin without support from users like you.', 'contact-form-7' ), sprintf( /* translators: %s: URL to support page about ways to contribute */ __( 'There are several ways for you to <a href="%s">contribute to the project</a>: testing, coding, translating it into your local languages, helping other users, financial donations, etc, etc. We equally welcome you regardless of the way you contribute.', 'contact-form-7' ), __( 'https://contactform7.com/contributing/', 'contact-form-7' ) ), ); } } class WPCF7_WelcomePanelColumn_Flamingo extends WPCF7_WelcomePanelColumn { protected function icon() { return 'editor-help'; } protected function title() { return __( 'Before you cry over spilt mail…', 'contact-form-7' ); } protected function content() { return array( __( 'Contact Form 7 does not store submitted messages anywhere. Therefore, you may lose important messages forever if your mail server has issues or you make a mistake in mail configuration.', 'contact-form-7' ), sprintf( /* translators: %s: URL to support page about the Flamingo plugin */ __( 'Install a message storage plugin before this happens to you. <a href="%s">Flamingo</a> saves all messages through contact forms into the database. Flamingo is a free WordPress plugin created by the same author as Contact Form 7.', 'contact-form-7' ), __( 'https://contactform7.com/save-submitted-messages-with-flamingo/', 'contact-form-7' ) ), ); } } class WPCF7_WelcomePanelColumn_Integration extends WPCF7_WelcomePanelColumn { protected function icon() { return 'superhero-alt'; } protected function title() { return __( 'You have strong allies to back you up.', 'contact-form-7' ); } protected function content() { return array( sprintf( /* translators: %s: URL to support page about the Brevo integration */ __( 'Your contact forms will become more powerful and versatile by integrating them with external APIs. With CRM and email marketing services, you can build your own contact lists (<a href="%s">Brevo</a>).', 'contact-form-7' ), __( 'https://contactform7.com/sendinblue-integration/', 'contact-form-7' ) ), sprintf( /* translators: 1: URL to support page about Cloudflare Turnstile, 2: Stripe */ __( 'With help from cloud-based machine learning, anti-spam services will protect your forms (<a href="%1$s">Cloudflare Turnstile</a>). Even payment services are natively supported (<a href="%2$s">Stripe</a>).', 'contact-form-7' ), __( 'https://contactform7.com/turnstile-integration/', 'contact-form-7' ), __( 'https://contactform7.com/stripe-integration/', 'contact-form-7' ) ), ); } } function wpcf7_welcome_panel() { $columns = array(); $flamingo_is_active = defined( 'FLAMINGO_VERSION' ); $sendinblue_is_active = false; if ( class_exists( 'WPCF7_Sendinblue' ) and $sendinblue = WPCF7_Sendinblue::get_instance() ) { $sendinblue_is_active = $sendinblue->is_active(); } if ( $flamingo_is_active and $sendinblue_is_active ) { $columns[] = new WPCF7_WelcomePanelColumn_AntiSpam(); $columns[] = new WPCF7_WelcomePanelColumn_Donation(); } elseif ( $flamingo_is_active ) { $columns[] = new WPCF7_WelcomePanelColumn_Integration(); $columns[] = new WPCF7_WelcomePanelColumn_AntiSpam(); } elseif ( $sendinblue_is_active ) { $columns[] = new WPCF7_WelcomePanelColumn_Flamingo(); $columns[] = new WPCF7_WelcomePanelColumn_AntiSpam(); } else { $columns[] = new WPCF7_WelcomePanelColumn_Flamingo(); $columns[] = new WPCF7_WelcomePanelColumn_Integration(); } $classes = 'wpcf7-welcome-panel'; $vers = (array) get_user_meta( get_current_user_id(), 'wpcf7_hide_welcome_panel_on', true ); if ( wpcf7_version_grep( wpcf7_version( 'only_major=1' ), $vers ) ) { $classes .= ' hidden'; } ?> <div id="wpcf7-welcome-panel" class="<?php echo esc_attr( $classes ); ?>"> <?php wp_nonce_field( 'wpcf7-welcome-panel-nonce', 'welcomepanelnonce', false ); ?> <a class="welcome-panel-close" href="<?php echo esc_url( menu_page_url( 'wpcf7', false ) ); ?>"><?php echo esc_html( __( 'Dismiss', 'contact-form-7' ) ); ?></a> <div class="welcome-panel-content"> <div class="welcome-panel-column-container"> <?php foreach ( $columns as $column ) { $column->print_content(); } ?> </div> </div> </div> <?php } add_action( 'wp_ajax_wpcf7-update-welcome-panel', 'wpcf7_admin_ajax_welcome_panel', 10, 0 ); function wpcf7_admin_ajax_welcome_panel() { check_ajax_referer( 'wpcf7-welcome-panel-nonce', 'welcomepanelnonce' ); $vers = get_user_meta( get_current_user_id(), 'wpcf7_hide_welcome_panel_on', true ); if ( empty( $vers ) or ! is_array( $vers ) ) { $vers = array(); } if ( empty( $_POST['visible'] ) ) { $vers[] = wpcf7_version( 'only_major=1' ); } else { $vers = array_diff( $vers, array( wpcf7_version( 'only_major=1' ) ) ); } $vers = array_unique( $vers ); update_user_meta( get_current_user_id(), 'wpcf7_hide_welcome_panel_on', $vers ); wp_die( 1 ); } add_filter( 'screen_settings', 'wpcf7_welcome_panel_screen_settings', 10, 2 ); function wpcf7_welcome_panel_screen_settings( $screen_settings, $screen ) { if ( 'toplevel_page_wpcf7' !== $screen->id ) { return $screen_settings; } $vers = (array) get_user_meta( get_current_user_id(), 'wpcf7_hide_welcome_panel_on', true ); $checkbox_id = 'wpcf7-welcome-panel-show'; $checked = ! in_array( wpcf7_version( 'only_major=1' ), $vers, true ); $checkbox = sprintf( '<input %s />', wpcf7_format_atts( array( 'id' => $checkbox_id, 'type' => 'checkbox', 'checked' => $checked, ) ) ); $screen_settings .= sprintf( ' <fieldset class="wpcf7-welcome-panel-options"> <legend>%1$s</legend> <label for="%2$s">%3$s %4$s</label> </fieldset>', esc_html( __( 'Welcome panel', 'contact-form-7' ) ), esc_attr( $checkbox_id ), $checkbox, esc_html( __( 'Show welcome panel', 'contact-form-7' ) ) ); return $screen_settings; } tag-generator.php 0000777 00000035763 15251254121 0010037 0 ustar 00 <?php /** * The base class for form-tag generators management. */ class WPCF7_TagGenerator { private static $instance; private $panels = array(); private function __construct() {} /** * Returns the singleton instance of this class. */ public static function get_instance() { if ( empty( self::$instance ) ) { self::$instance = new self(); } return self::$instance; } /** * Adds a form-tag generator instance. */ public function add( $id, $title, $callback, $options = '' ) { $id = trim( $id ); if ( '' === $id or ! wpcf7_is_name( $id ) or ! is_callable( $callback ) ) { return false; } $options = wp_parse_args( $options, array( 'version' => '1', ) ); $this->panels[$id] = array( 'title' => $title, 'content' => 'tag-generator-panel-' . $id, 'options' => $options, 'callback' => $callback, ); if ( version_compare( $options['version'], '2', '<' ) ) { $message = sprintf( /* translators: 1: version, 2: tag generator title */ __( 'Use of tag generator instances older than version 2 is deprecated. Version %1$s instance (%2$s) detected.', 'contact-form-7' ), $options['version'], $title ); wp_trigger_error( __METHOD__, $message, E_USER_DEPRECATED ); } return true; } /** * Renders form-tag generator calling buttons. */ public function print_buttons() { $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'span', array( 'id' => 'tag-generator-list', 'class' => 'hide-if-no-js', ) ); foreach ( (array) $this->panels as $panel ) { $formatter->append_start_tag( 'button', array( 'type' => 'button', 'data-taggen' => 'open-dialog', 'data-target' => $panel['content'], 'title' => sprintf( /* translators: %s: title of form-tag */ __( 'Form-tag Generator: %s', 'contact-form-7' ), $panel['title'] ), ) ); $formatter->append_preformatted( esc_html( $panel['title'] ) ); } $formatter->print(); } /** * Renders form-tag generator dialog panels (hidden until called). */ public function print_panels( WPCF7_ContactForm $contact_form ) { $formatter = new WPCF7_HTMLFormatter( array( 'allowed_html' => array_merge( wpcf7_kses_allowed_html(), array( 'dialog' => array( 'id' => true, 'class' => true, ), 'form' => array( 'method' => true, 'class' => true, 'data-*' => true, ), ) ), ) ); foreach ( (array) $this->panels as $id => $panel ) { $callback = $panel['callback']; $options = array_merge( $panel['options'], array( 'id' => $id, 'title' => $panel['title'], 'content' => $panel['content'], ) ); if ( is_callable( $callback ) ) { $formatter->append_start_tag( 'dialog', array( 'id' => $options['content'], 'class' => 'tag-generator-dialog', ) ); $formatter->append_start_tag( 'button', array( 'class' => 'close-button', 'title' => __( 'Close this dialog box', 'contact-form-7' ), 'data-taggen' => 'close-dialog', ) ); $formatter->append_preformatted( esc_html( __( 'Close', 'contact-form-7' ) ) ); $formatter->end_tag( 'button' ); $formatter->append_start_tag( 'form', array( 'method' => 'dialog', 'class' => 'tag-generator-panel', 'data-id' => $options['id'], 'data-version' => $options['version'], ) ); $formatter->call_user_func( $callback, $contact_form, $options ); $formatter->close_all_tags(); } } $formatter->print(); } } /** * Class helps to implement a form-tag generator content. */ class WPCF7_TagGeneratorGenerator { private $key = ''; /** * The constructor. */ public function __construct( $key ) { $this->key = $key; } /** * Returns a unique reference ID. */ public function ref( $suffix = '' ) { $ref = sprintf( '%s-%s', $this->key, $suffix ); $ref = strtolower( $ref ); $ref = preg_replace( '/[^0-9a-z-]/', '', $ref ); $ref = preg_replace( '/[-]+/', '-', $ref ); $ref = trim( $ref, '-' ); return $ref; } /** * Calls one of the template methods. */ public function print( $part, $options = '' ) { if ( is_callable( array( $this, $part ) ) ) { call_user_func( array( $this, $part ), $options ); } } /** * Template method for field type field. */ private function field_type( $options = '' ) { $options = wp_parse_args( $options, array( 'with_required' => false, 'with_optional' => false, 'select_options' => array(), ) ); $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'fieldset' ); $formatter->append_start_tag( 'legend', array( 'id' => $this->ref( 'type-legend' ), ) ); $formatter->append_preformatted( esc_html( __( 'Field type', 'contact-form-7' ) ) ); $formatter->end_tag( 'legend' ); $formatter->append_start_tag( 'select', array( 'data-tag-part' => 'basetype', 'aria-labelledby' => $this->ref( 'type-legend' ), ) ); foreach ( (array) $options['select_options'] as $basetype => $title ) { $formatter->append_start_tag( 'option', array( 'value' => $basetype, ) ); $formatter->append_preformatted( esc_html( $title ) ); } $formatter->end_tag( 'select' ); if ( $options['with_required'] ) { $formatter->append_start_tag( 'br' ); $formatter->append_start_tag( 'label' ); $formatter->append_start_tag( 'input', array( 'type' => 'checkbox', 'data-tag-part' => 'type-suffix', 'value' => '*', ) ); $formatter->append_whitespace(); $formatter->append_preformatted( esc_html( __( 'This is a required field.', 'contact-form-7' ) ) ); } if ( $options['with_optional'] ) { $formatter->append_start_tag( 'br' ); $formatter->append_start_tag( 'label' ); $formatter->append_start_tag( 'input', array( 'type' => 'checkbox', 'data-tag-part' => 'option', 'data-tag-option' => 'optional', 'checked' => true, ) ); $formatter->append_whitespace(); $formatter->append_preformatted( esc_html( __( 'This checkbox is optional.', 'contact-form-7' ) ) ); } $formatter->print(); } /** * Template method for field name field. */ private function field_name( $options = '' ) { $options = wp_parse_args( $options, array( 'ask_if' => '', ) ); ?> <fieldset> <legend id="<?php echo esc_attr( $this->ref( 'name-legend' ) ); ?>"><?php echo esc_html( __( 'Field name', 'contact-form-7' ) ); ?></legend> <input type="text" data-tag-part="name" pattern="[A-Za-z][A-Za-z0-9_\-]*" aria-labelledby="<?php echo esc_attr( $this->ref( 'name-legend' ) ); ?>" /> <?php $tag_option = $label = ''; if ( 'author_name' === $options['ask_if'] ) { $tag_option = 'autocomplete:name'; if ( wpcf7_akismet_is_available() ) { $tag_option .= ' akismet:author'; } $label = __( "This field expects the submitter name.", 'contact-form-7' ); } elseif ( 'author_email' === $options['ask_if'] ) { $tag_option = 'autocomplete:email'; if ( wpcf7_akismet_is_available() ) { $tag_option .= ' akismet:author_email'; } $label = __( "This field expects the submitter email.", 'contact-form-7' ); } elseif ( 'author_url' === $options['ask_if'] ) { $tag_option = 'autocomplete:url'; if ( wpcf7_akismet_is_available() ) { $tag_option .= ' akismet:author_url'; } $label = __( "This field expects the submitter URL.", 'contact-form-7' ); } elseif ( 'author_tel' === $options['ask_if'] ) { $tag_option = 'autocomplete:tel'; $label = __( "This field expects the submitter telephone number.", 'contact-form-7' ); } if ( $tag_option ) { ?> <br /> <label> <input type="checkbox" data-tag-part="option" data-tag-option="<?php echo esc_attr( $tag_option ); ?>" /> <?php echo esc_html( $label ); ?> </label> <?php } ?> </fieldset> <?php } /** * Template method for ID attribute option field. */ private function id_attr( $options = '' ) { ?> <fieldset> <legend id="<?php echo esc_attr( $this->ref( 'id-legend' ) ); ?>"><?php echo esc_html( __( 'ID attribute', 'contact-form-7' ) ); ?></legend> <input type="text" data-tag-part="option" data-tag-option="id:" pattern="[A-Za-z][A-Za-z0-9_\-]*" aria-labelledby="<?php echo esc_attr( $this->ref( 'id-legend' ) ); ?>" /> </fieldset> <?php } /** * Template method for class attribute option field. */ private function class_attr( $options = '' ) { ?> <fieldset> <legend id="<?php echo esc_attr( $this->ref( 'class-legend' ) ); ?>"><?php echo esc_html( __( 'Class attribute', 'contact-form-7' ) ); ?></legend> <input type="text" data-tag-part="option" data-tag-option="class:" pattern="[A-Za-z0-9_\-\s]*" aria-labelledby="<?php echo esc_attr( $this->ref( 'class-legend' ) ); ?>" /> </fieldset> <?php } /** * Template method for min/max options. */ private function min_max( $options = '' ) { $options = wp_parse_args( $options, array( 'type' => 'number', 'title' => __( 'Length', 'contact-form-7' ), 'min_option' => 'minlength:', 'max_option' => 'maxlength:', 'accept_minus' => false, ) ); $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'fieldset' ); $formatter->append_start_tag( 'legend' ); $formatter->append_preformatted( esc_html( $options['title'] ) ); $formatter->end_tag( 'legend' ); $formatter->append_start_tag( 'label' ); $formatter->append_preformatted( esc_html( __( 'Min', 'contact-form-7' ) ) ); $formatter->append_whitespace(); $formatter->append_start_tag( 'input', array( 'type' => $options['type'], 'data-tag-part' => 'option', 'data-tag-option' => $options['min_option'], 'min' => $options['accept_minus'] ? null : 0, ) ); $formatter->end_tag( 'label' ); $formatter->append_preformatted( ' ⇔ ' ); $formatter->append_start_tag( 'label' ); $formatter->append_preformatted( esc_html( __( 'Max', 'contact-form-7' ) ) ); $formatter->append_whitespace(); $formatter->append_start_tag( 'input', array( 'type' => $options['type'], 'data-tag-part' => 'option', 'data-tag-option' => $options['max_option'], 'min' => $options['accept_minus'] ? null : 0, ) ); $formatter->end_tag( 'label' ); $formatter->print(); } /** * Template method for default value field. */ private function default_value( $options = '' ) { $options = wp_parse_args( $options, array( 'type' => 'text', 'title' => __( 'Default value', 'contact-form-7' ), 'with_placeholder' => false, 'use_content' => false, ) ); $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'fieldset' ); $formatter->append_start_tag( 'legend', array( 'id' => $this->ref( 'value-legend' ), ) ); $formatter->append_preformatted( esc_html( $options['title'] ) ); $formatter->end_tag( 'legend' ); $formatter->append_start_tag( 'input', array( 'type' => $options['type'], 'data-tag-part' => $options['use_content'] ? 'content' : 'value', 'aria-labelledby' => $this->ref( 'value-legend' ), ) ); if ( $options['with_placeholder'] ) { $formatter->append_start_tag( 'br' ); $formatter->append_start_tag( 'label' ); $formatter->append_start_tag( 'input', array( 'type' => 'checkbox', 'data-tag-part' => 'option', 'data-tag-option' => 'placeholder', ) ); $formatter->append_whitespace(); $formatter->append_preformatted( esc_html( __( 'Use this text as the placeholder.', 'contact-form-7' ) ) ); } $formatter->print(); } /** * Template method for selectable values useful for checkboxes or a menu. */ private function selectable_values( $options = '' ) { $options = wp_parse_args( $options, array( 'first_as_label' => false, 'use_label_element' => false, ) ); $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'fieldset' ); $formatter->append_start_tag( 'legend', array( 'id' => $this->ref( 'selectable-values-legend' ), ) ); $formatter->append_preformatted( esc_html( __( 'Selectable values', 'contact-form-7' ) ) ); $formatter->end_tag( 'legend' ); $formatter->append_start_tag( 'span', array( 'id' => $this->ref( 'selectable-values-description' ), ) ); $formatter->append_preformatted( esc_html( __( 'One item per line.', 'contact-form-7' ) ) ); $formatter->end_tag( 'span' ); $formatter->append_start_tag( 'br' ); $formatter->append_start_tag( 'textarea', array( 'required' => true, 'data-tag-part' => 'value', 'aria-labelledby' => $this->ref( 'selectable-values-legend' ), 'aria-describedby' => $this->ref( 'selectable-values-description' ), ) ); $formatter->append_preformatted( esc_html( __( "Option 1\nOption 2\nOption 3", 'contact-form-7' ) ) ); $formatter->end_tag( 'textarea' ); if ( $options['first_as_label'] ) { $formatter->append_start_tag( 'br' ); $formatter->append_start_tag( 'label' ); $formatter->append_start_tag( 'input', array( 'type' => 'checkbox', 'checked' => 'checked' === $options['first_as_label'], 'data-tag-part' => 'option', 'data-tag-option' => 'first_as_label', ) ); $formatter->append_whitespace(); $formatter->append_preformatted( esc_html( __( 'Use the first item as a label.', 'contact-form-7' ) ) ); $formatter->end_tag( 'label' ); } if ( $options['use_label_element'] ) { $formatter->append_start_tag( 'br' ); $formatter->append_start_tag( 'label' ); $formatter->append_start_tag( 'input', array( 'type' => 'checkbox', 'checked' => 'checked' === $options['use_label_element'], 'data-tag-part' => 'option', 'data-tag-option' => 'use_label_element', ) ); $formatter->append_whitespace(); $formatter->append_preformatted( esc_html( __( 'Wrap each item with a label element.', 'contact-form-7' ) ) ); $formatter->end_tag( 'label' ); } $formatter->print(); } /** * Template method for insert-box content including the result form-tag. */ private function insert_box_content( $options = '' ) { $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'div', array( 'class' => 'flex-container', ) ); $formatter->append_start_tag( 'input', array( 'type' => 'text', 'class' => 'code selectable', 'readonly' => true, 'data-tag-part' => 'tag', 'aria-label' => __( 'The form-tag to be inserted into the form template', 'contact-form-7' ), ) ); $formatter->append_whitespace(); $formatter->append_start_tag( 'button', array( 'type' => 'button', 'class' => 'button button-primary', 'data-taggen' => 'insert-tag', ) ); $formatter->append_preformatted( esc_html( __( 'Insert Tag', 'contact-form-7' ) ) ); $formatter->end_tag( 'button' ); $formatter->print(); } /** * Template method for a tip message about mail-tag. */ private function mail_tag_tip( $options = '' ) { $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'p', array( 'class' => 'mail-tag-tip', ) ); $formatter->append_preformatted( sprintf( /* translators: %s: mail-tag corresponding to the form-tag */ esc_html( __( 'To use the user input in the email, insert the corresponding mail-tag %s into the email template.', 'contact-form-7' ) ), '<strong data-tag-part="mail-tag"></strong>' ) ); $formatter->print(); } } help-tabs.php 0000777 00000015534 15251254121 0007151 0 ustar 00 <?php class WPCF7_Help_Tabs { private $screen; public function __construct( WP_Screen $screen ) { $this->screen = $screen; } public function set_help_tabs( $screen_type ) { switch ( $screen_type ) { case 'list': $this->screen->add_help_tab( array( 'id' => 'list_overview', 'title' => __( 'Overview', 'contact-form-7' ), 'content' => $this->content( 'list_overview' ), ) ); $this->screen->add_help_tab( array( 'id' => 'list_available_actions', 'title' => __( 'Available Actions', 'contact-form-7' ), 'content' => $this->content( 'list_available_actions' ), ) ); $this->sidebar(); return; case 'edit': $this->screen->add_help_tab( array( 'id' => 'edit_overview', 'title' => __( 'Overview', 'contact-form-7' ), 'content' => $this->content( 'edit_overview' ), ) ); $this->screen->add_help_tab( array( 'id' => 'edit_form_tags', 'title' => __( 'Form-tags', 'contact-form-7' ), 'content' => $this->content( 'edit_form_tags' ), ) ); $this->screen->add_help_tab( array( 'id' => 'edit_mail_tags', 'title' => __( 'Mail-tags', 'contact-form-7' ), 'content' => $this->content( 'edit_mail_tags' ), ) ); $this->sidebar(); return; case 'integration': $this->screen->add_help_tab( array( 'id' => 'integration_overview', 'title' => __( 'Overview', 'contact-form-7' ), 'content' => $this->content( 'integration_overview' ), ) ); $this->sidebar(); return; } } private function content( $name ) { $content = array(); $content['list_overview'] = '<p>' . __( 'On this screen, you can manage contact forms provided by Contact Form 7. You can manage an unlimited number of contact forms. Each contact form has a unique ID and Contact Form 7 shortcode ([contact-form-7 ...]). To insert a contact form into a post or a text widget, insert the shortcode into the target.', 'contact-form-7' ) . '</p>'; $content['list_available_actions'] = '<p>' . __( 'Hovering over a row in the contact forms list will display action links that allow you to manage your contact form. You can perform the following actions:', 'contact-form-7' ) . '</p>'; $content['list_available_actions'] .= '<p>' . __( '<strong>Edit</strong> - Navigates to the editing screen for that contact form. You can also reach that screen by clicking on the contact form title.', 'contact-form-7' ) . '</p>'; $content['list_available_actions'] .= '<p>' . __( '<strong>Duplicate</strong> - Clones that contact form. A cloned contact form inherits all content from the original, but has a different ID.', 'contact-form-7' ) . '</p>'; $content['edit_overview'] = '<p>' . __( 'On this screen, you can edit a contact form. A contact form is comprised of the following components:', 'contact-form-7' ) . '</p>'; $content['edit_overview'] .= '<p>' . __( '<strong>Title</strong> is the title of a contact form. This title is only used for labeling a contact form, and can be edited.', 'contact-form-7' ) . '</p>'; $content['edit_overview'] .= '<p>' . __( '<strong>Form</strong> is a content of HTML form. You can use arbitrary HTML, which is allowed inside a form element. You can also use Contact Form 7’s form-tags here.', 'contact-form-7' ) . '</p>'; $content['edit_overview'] .= '<p>' . __( '<strong>Mail</strong> manages a mail template (headers and message body) that this contact form will send when users submit it. You can use Contact Form 7’s mail-tags here.', 'contact-form-7' ) . '</p>'; $content['edit_overview'] .= '<p>' . __( '<strong>Mail (2)</strong> is an additional mail template that works similar to Mail. Mail (2) is different in that it is sent only when Mail has been sent successfully.', 'contact-form-7' ) . '</p>'; $content['edit_overview'] .= '<p>' . __( 'In <strong>Messages</strong>, you can edit various types of messages used for this contact form. These messages are relatively short messages, like a validation error message you see when you leave a required field blank.', 'contact-form-7' ) . '</p>'; $content['edit_overview'] .= '<p>' . __( '<strong>Additional Settings</strong> provides a place where you can customize the behavior of this contact form by adding code snippets.', 'contact-form-7' ) . '</p>'; $content['edit_form_tags'] = '<p>' . __( 'A form-tag is a short code enclosed in square brackets used in a form content. A form-tag generally represents an input field, and its components can be separated into four parts: type, name, options, and values. Contact Form 7 supports several types of form-tags including text fields, number fields, date fields, checkboxes, radio buttons, menus, file-uploading fields, CAPTCHAs, and quiz fields.', 'contact-form-7' ) . '</p>'; $content['edit_form_tags'] .= '<p>' . __( 'While form-tags have a comparatively complex syntax, you do not need to know the syntax to add form-tags because you can use the straightforward tag generator (<strong>Generate Tag</strong> button on this screen).', 'contact-form-7' ) . '</p>'; $content['edit_mail_tags'] = '<p>' . __( 'A mail-tag is also a short code enclosed in square brackets that you can use in every Mail and Mail (2) field. A mail-tag represents a user input value through an input field of a corresponding form-tag.', 'contact-form-7' ) . '</p>'; $content['edit_mail_tags'] .= '<p>' . __( 'There are also special mail-tags that have specific names, but do not have corresponding form-tags. They are used to represent meta information of form submissions like the submitter’s IP address or the URL of the page.', 'contact-form-7' ) . '</p>'; $content['integration_overview'] = '<p>' . __( 'On this screen, you can manage services that are available through Contact Form 7. Using API will allow you to collaborate with any services that are available.', 'contact-form-7' ) . '</p>'; $content['integration_overview'] .= '<p>' . __( 'You may need to first sign up for an account with the service that you plan to use. When you do so, you would need to authorize Contact Form 7 to access the service with your account.', 'contact-form-7' ) . '</p>'; $content['integration_overview'] .= '<p>' . __( 'Any information you provide will not be shared with service providers without your authorization.', 'contact-form-7' ) . '</p>'; if ( ! empty( $content[$name] ) ) { return $content[$name]; } } public function sidebar() { $content = '<p><strong>' . __( 'For more information:', 'contact-form-7' ) . '</strong></p>'; $content .= '<p>' . wpcf7_link( __( 'https://contactform7.com/docs/', 'contact-form-7' ), __( 'Docs', 'contact-form-7' ) ) . '</p>'; $content .= '<p>' . wpcf7_link( __( 'https://contactform7.com/faq/', 'contact-form-7' ), __( 'FAQ', 'contact-form-7' ) ) . '</p>'; $content .= '<p>' . wpcf7_link( __( 'https://contactform7.com/support/', 'contact-form-7' ), __( 'Support', 'contact-form-7' ) ) . '</p>'; $this->screen->set_help_sidebar( $content ); } } editor.php 0000777 00000033766 15251254121 0006567 0 ustar 00 <?php class WPCF7_Editor { private $contact_form; private $panels = array(); public function __construct( WPCF7_ContactForm $contact_form ) { $this->contact_form = $contact_form; } public function add_panel( $panel_id, $title, $callback ) { if ( wpcf7_is_name( $panel_id ) ) { $this->panels[$panel_id] = array( 'title' => $title, 'callback' => $callback, ); } } public function display() { if ( empty( $this->panels ) ) { return; } $active_panel_id = wpcf7_superglobal_get( 'active-tab' ); if ( ! array_key_exists( $active_panel_id, $this->panels ) ) { $active_panel_id = array_key_first( $this->panels ); } $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'nav', array( 'id' => 'contact-form-editor-tabs', 'role' => 'tablist', 'aria-label' => __( 'Contact form editor tabs', 'contact-form-7' ), 'data-active-tab' => absint( array_search( $active_panel_id, array_keys( $this->panels ), true ) ), ) ); foreach ( $this->panels as $panel_id => $panel ) { $active = $panel_id === $active_panel_id; $formatter->append_start_tag( 'button', array( 'type' => 'button', 'role' => 'tab', 'aria-selected' => $active ? 'true' : 'false', 'aria-controls' => $panel_id, 'id' => sprintf( '%s-tab', $panel_id ), 'tabindex' => $active ? '0' : '-1', ) ); $formatter->append_preformatted( esc_html( $panel['title'] ) ); } $formatter->end_tag( 'nav' ); foreach ( $this->panels as $panel_id => $panel ) { $active = $panel_id === $active_panel_id; $formatter->append_start_tag( 'section', array( 'role' => 'tabpanel', 'aria-labelledby' => sprintf( '%s-tab', $panel_id ), 'id' => $panel_id, 'class' => 'contact-form-editor-panel', 'tabindex' => '0', 'hidden' => ! $active, ) ); if ( is_callable( $panel['callback'] ) ) { $formatter->call_user_func( $panel['callback'], $this->contact_form ); } $formatter->end_tag( 'section' ); } $formatter->print(); } } function wpcf7_editor_panel_form( $post ) { $description = sprintf( /* translators: %s: URL to support page about the form template */ __( 'You can edit the form template here. For details, see <a href="%s">Editing form template</a>.', 'contact-form-7' ), __( 'https://contactform7.com/editing-form-template/', 'contact-form-7' ) ); $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'h2' ); $formatter->append_preformatted( esc_html( __( 'Form', 'contact-form-7' ) ) ); $formatter->end_tag( 'h2' ); $formatter->append_start_tag( 'fieldset' ); $formatter->append_start_tag( 'legend' ); $formatter->append_preformatted( $description ); $formatter->end_tag( 'legend' ); $formatter->call_user_func( static function () { $tag_generator = WPCF7_TagGenerator::get_instance(); $tag_generator->print_buttons(); } ); $formatter->append_start_tag( 'textarea', array( 'id' => 'wpcf7-form', 'name' => 'wpcf7-form', 'cols' => 100, 'rows' => 24, 'class' => 'large-text code', 'data-config-field' => 'form.body', ) ); $formatter->append_preformatted( esc_textarea( $post->prop( 'form' ) ) ); $formatter->end_tag( 'textarea' ); $formatter->print(); } function wpcf7_editor_panel_mail( $post ) { wpcf7_editor_box_mail( $post ); echo '<br class="clear" />'; wpcf7_editor_box_mail( $post, array( 'id' => 'wpcf7-mail-2', 'name' => 'mail_2', 'title' => __( 'Mail (2)', 'contact-form-7' ), 'use' => __( 'Use Mail (2)', 'contact-form-7' ), ) ); } function wpcf7_editor_box_mail( $post, $options = '' ) { $options = wp_parse_args( $options, array( 'id' => 'wpcf7-mail', 'name' => 'mail', 'title' => __( 'Mail', 'contact-form-7' ), 'use' => null, ) ); $id = esc_attr( $options['id'] ); $mail = wp_parse_args( $post->prop( $options['name'] ), array( 'active' => false, 'recipient' => '', 'sender' => '', 'subject' => '', 'body' => '', 'additional_headers' => '', 'attachments' => '', 'use_html' => false, 'exclude_blank' => false, ) ); $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'div', array( 'class' => 'contact-form-editor-box-mail', 'id' => $id, ) ); $formatter->append_start_tag( 'h2' ); $formatter->append_preformatted( esc_html( $options['title'] ) ); $formatter->end_tag( 'h2' ); if ( ! empty( $options['use'] ) ) { $formatter->append_start_tag( 'label', array( 'for' => sprintf( '%s-active', $id ), ) ); $formatter->append_start_tag( 'input', array( 'type' => 'checkbox', 'id' => sprintf( '%s-active', $id ), 'name' => sprintf( '%s[active]', $id ), 'data-config-field' => '', 'data-toggle' => sprintf( '%s-fieldset', $id ), 'value' => '1', 'checked' => $mail['active'], ) ); $formatter->append_whitespace(); $formatter->append_preformatted( esc_html( $options['use'] ) ); $formatter->end_tag( 'label' ); $formatter->append_start_tag( 'p', array( 'class' => 'description', ) ); $formatter->append_preformatted( esc_html( __( 'Mail (2) is an additional mail template often used as an autoresponder.', 'contact-form-7' ) ) ); $formatter->end_tag( 'p' ); } $formatter->append_start_tag( 'fieldset', array( 'id' => sprintf( '%s-fieldset', $id ), ) ); $formatter->append_start_tag( 'legend' ); $description = sprintf( /* translators: %s: URL to support page about the email template */ __( 'You can edit the email template here. For details, see <a href="%s">Setting up mail</a>.', 'contact-form-7' ), __( 'https://contactform7.com/setting-up-mail/', 'contact-form-7' ) ); $formatter->append_preformatted( $description ); $formatter->append_start_tag( 'br' ); $formatter->append_preformatted( esc_html( __( 'In the following fields, you can use these mail-tags:', 'contact-form-7' ) ) ); $formatter->append_start_tag( 'br' ); $formatter->call_user_func( static function () use ( $post, $options ) { $post->suggest_mail_tags( $options['name'] ); } ); $formatter->end_tag( 'legend' ); $formatter->append_start_tag( 'table', array( 'class' => 'form-table', ) ); $formatter->append_start_tag( 'tbody' ); $formatter->append_start_tag( 'tr' ); $formatter->append_start_tag( 'th', array( 'scope' => 'row', ) ); $formatter->append_start_tag( 'label', array( 'for' => sprintf( '%s-recipient', $id ), ) ); $formatter->append_preformatted( esc_html( __( 'To', 'contact-form-7' ) ) ); $formatter->append_start_tag( 'td' ); $formatter->append_start_tag( 'input', array( 'type' => 'text', 'id' => sprintf( '%s-recipient', $id ), 'name' => sprintf( '%s[recipient]', $id ), 'class' => 'large-text code', 'size' => 70, 'value' => $mail['recipient'], 'data-config-field' => sprintf( '%s.recipient', $options['name'] ), ) ); $formatter->end_tag( 'tr' ); $formatter->append_start_tag( 'tr' ); $formatter->append_start_tag( 'th', array( 'scope' => 'row', ) ); $formatter->append_start_tag( 'label', array( 'for' => sprintf( '%s-sender', $id ), ) ); $formatter->append_preformatted( esc_html( __( 'From', 'contact-form-7' ) ) ); $formatter->append_start_tag( 'td' ); $formatter->append_start_tag( 'input', array( 'type' => 'text', 'id' => sprintf( '%s-sender', $id ), 'name' => sprintf( '%s[sender]', $id ), 'class' => 'large-text code', 'size' => 70, 'value' => $mail['sender'], 'data-config-field' => sprintf( '%s.sender', $options['name'] ), ) ); $formatter->end_tag( 'tr' ); $formatter->append_start_tag( 'tr' ); $formatter->append_start_tag( 'th', array( 'scope' => 'row', ) ); $formatter->append_start_tag( 'label', array( 'for' => sprintf( '%s-subject', $id ), ) ); $formatter->append_preformatted( esc_html( __( 'Subject', 'contact-form-7' ) ) ); $formatter->append_start_tag( 'td' ); $formatter->append_start_tag( 'input', array( 'type' => 'text', 'id' => sprintf( '%s-subject', $id ), 'name' => sprintf( '%s[subject]', $id ), 'class' => 'large-text code', 'size' => 70, 'value' => $mail['subject'], 'data-config-field' => sprintf( '%s.subject', $options['name'] ), ) ); $formatter->end_tag( 'tr' ); $formatter->append_start_tag( 'tr' ); $formatter->append_start_tag( 'th', array( 'scope' => 'row', ) ); $formatter->append_start_tag( 'label', array( 'for' => sprintf( '%s-additional-headers', $id ), ) ); $formatter->append_preformatted( esc_html( __( 'Additional headers', 'contact-form-7' ) ) ); $formatter->append_start_tag( 'td' ); $formatter->append_start_tag( 'textarea', array( 'id' => sprintf( '%s-additional-headers', $id ), 'name' => sprintf( '%s[additional_headers]', $id ), 'cols' => 100, 'rows' => 4, 'class' => 'large-text code', 'data-config-field' => sprintf( '%s.additional_headers', $options['name'] ), ) ); $formatter->append_preformatted( esc_textarea( $mail['additional_headers'] ) ); $formatter->end_tag( 'tr' ); $formatter->append_start_tag( 'tr' ); $formatter->append_start_tag( 'th', array( 'scope' => 'row', ) ); $formatter->append_start_tag( 'label', array( 'for' => sprintf( '%s-body', $id ), ) ); $formatter->append_preformatted( esc_html( __( 'Message body', 'contact-form-7' ) ) ); $formatter->append_start_tag( 'td' ); $formatter->append_start_tag( 'textarea', array( 'id' => sprintf( '%s-body', $id ), 'name' => sprintf( '%s[body]', $id ), 'cols' => 100, 'rows' => 18, 'class' => 'large-text code', 'data-config-field' => sprintf( '%s.body', $options['name'] ), ) ); $formatter->append_preformatted( esc_textarea( $mail['body'] ) ); $formatter->end_tag( 'textarea' ); $formatter->append_start_tag( 'p' ); $formatter->append_start_tag( 'label', array( 'for' => sprintf( '%s-exclude-blank', $id ), ) ); $formatter->append_start_tag( 'input', array( 'type' => 'checkbox', 'id' => sprintf( '%s-exclude-blank', $id ), 'name' => sprintf( '%s[exclude_blank]', $id ), 'value' => '1', 'checked' => $mail['exclude_blank'], ) ); $formatter->append_whitespace(); $formatter->append_preformatted( esc_html( __( 'Exclude a line from output if all of its mail-tags are blank', 'contact-form-7' ) ) ); $formatter->append_start_tag( 'p' ); $formatter->append_start_tag( 'label', array( 'for' => sprintf( '%s-use-html', $id ), ) ); $formatter->append_start_tag( 'input', array( 'type' => 'checkbox', 'id' => sprintf( '%s-use-html', $id ), 'name' => sprintf( '%s[use_html]', $id ), 'value' => '1', 'checked' => $mail['use_html'], ) ); $formatter->append_whitespace(); $formatter->append_preformatted( esc_html( __( 'Use HTML content type', 'contact-form-7' ) ) ); $formatter->end_tag( 'tr' ); $formatter->append_start_tag( 'tr' ); $formatter->append_start_tag( 'th', array( 'scope' => 'row', ) ); $formatter->append_start_tag( 'label', array( 'for' => sprintf( '%s-attachments', $id ), ) ); $formatter->append_preformatted( esc_html( __( 'File attachments', 'contact-form-7' ) ) ); $formatter->append_start_tag( 'td' ); $formatter->append_start_tag( 'textarea', array( 'id' => sprintf( '%s-attachments', $id ), 'name' => sprintf( '%s[attachments]', $id ), 'cols' => 100, 'rows' => 4, 'class' => 'large-text code', 'data-config-field' => sprintf( '%s.attachments', $options['name'] ), ) ); $formatter->append_preformatted( esc_textarea( $mail['attachments'] ) ); $formatter->end_tag( 'textarea' ); $formatter->end_tag( 'tr' ); $formatter->print(); } function wpcf7_editor_panel_messages( $post ) { $description = sprintf( /* translators: %s: URL to support page about the messages editor */ __( 'You can edit messages used in various situations here. For details, see <a href="%s">Editing messages</a>.', 'contact-form-7' ), __( 'https://contactform7.com/editing-messages/', 'contact-form-7' ) ); $messages = wpcf7_messages(); if ( isset( $messages['captcha_not_match'] ) and ! wpcf7_use_really_simple_captcha() ) { unset( $messages['captcha_not_match'] ); } $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'h2' ); $formatter->append_preformatted( esc_html( __( 'Messages', 'contact-form-7' ) ) ); $formatter->end_tag( 'h2' ); $formatter->append_start_tag( 'fieldset' ); $formatter->append_start_tag( 'legend' ); $formatter->append_preformatted( $description ); $formatter->end_tag( 'legend' ); foreach ( $messages as $key => $arr ) { $field_id = sprintf( 'wpcf7-message-%s', strtr( $key, '_', '-' ) ); $field_name = sprintf( 'wpcf7-messages[%s]', $key ); $formatter->append_start_tag( 'p', array( 'class' => 'description', ) ); $formatter->append_start_tag( 'label', array( 'for' => $field_id, ) ); $formatter->append_preformatted( esc_html( $arr['description'] ) ); $formatter->append_start_tag( 'br' ); $formatter->append_start_tag( 'input', array( 'type' => 'text', 'id' => $field_id, 'name' => $field_name, 'class' => 'large-text', 'size' => 70, 'value' => $post->message( $key, false ), 'data-config-field' => sprintf( 'messages.%s', $key ), ) ); } $formatter->print(); } function wpcf7_editor_panel_additional_settings( $post ) { $description = sprintf( /* translators: %s: URL to support page about the additional settings editor */ __( 'You can add customization code snippets here. For details, see <a href="%s">Additional settings</a>.', 'contact-form-7' ), __( 'https://contactform7.com/additional-settings/', 'contact-form-7' ) ); $formatter = new WPCF7_HTMLFormatter(); $formatter->append_start_tag( 'h2' ); $formatter->append_preformatted( esc_html( __( 'Additional Settings', 'contact-form-7' ) ) ); $formatter->end_tag( 'h2' ); $formatter->append_start_tag( 'fieldset' ); $formatter->append_start_tag( 'legend' ); $formatter->append_preformatted( $description ); $formatter->end_tag( 'legend' ); $formatter->append_start_tag( 'textarea', array( 'id' => 'wpcf7-additional-settings', 'name' => 'wpcf7-additional-settings', 'cols' => 100, 'rows' => 24, 'class' => 'large-text', 'data-config-field' => 'additional_settings.body', ) ); $formatter->append_preformatted( esc_textarea( $post->prop( 'additional_settings' ) ) ); $formatter->end_tag( 'textarea' ); $formatter->print(); }
| ver. 1.6 |
Github
|
.
| PHP 8.1.34 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка