public function outputJavascript() { ?> <script type="text/javascript" language="JavaScript"> var shortCodeDocUrls = { '': 'http://cfdbplugin.com/?page_id=89', '[cfdb-html]': 'http://cfdbplugin.com/?page_id=284', '[cfdb-table]': 'http://cfdbplugin.com/?page_id=93', '[cfdb-datatable]': 'http://cfdbplugin.com/?page_id=91', '[cfdb-value]': 'http://cfdbplugin.com/?page_id=98', '[cfdb-count]': 'http://cfdbplugin.com/?page_id=278', '[cfdb-json]': 'http://cfdbplugin.com/?page_id=96', '[cfdb-export-link]': 'http://cfdbplugin.com/?page_id=419' }; function showHideOptionDivs() { var shortcode = jQuery('#shortcode_ctrl').val(); jQuery('#doc_url_tag').attr('href', shortCodeDocUrls[shortcode]); jQuery('#doc_url_tag').html(shortcode + " <?php echo htmlspecialchars(__('Documentation', 'contact-form-7-to-database-extension')); ?> "); switch (shortcode) { case "[cfdb-html]": jQuery('#show_hide_div').show(); jQuery('#limitorder_div').show(); jQuery('#html_format_div').hide(); jQuery('#dt_options_div').hide(); jQuery('#editcolumns_div').hide(); jQuery('#json_div').hide(); jQuery('#value_div').hide(); jQuery('#template_div').show(); jQuery('#url_link_div').hide(); jQuery('#headers_div').hide(); break; case "[cfdb-table]": jQuery('#show_hide_div').show(); jQuery('#limitorder_div').show(); jQuery('#html_format_div').show(); jQuery('#dt_options_div').hide(); jQuery('#editcolumns_div').hide(); jQuery('#json_div').hide(); jQuery('#value_div').hide(); jQuery('#template_div').hide(); jQuery('#url_link_div').hide(); jQuery('#headers_div').show(); break; case "[cfdb-datatable]": jQuery('#show_hide_div').show(); jQuery('#limitorder_div').show(); jQuery('#html_format_div').show(); <?php if (!$this->plugin->isEditorActive()) { ?> jQuery('#edit_mode_cntl').attr('disabled', 'disabled'); <?php } ?> jQuery('#dt_options_div').show(); jQuery('#editcolumns_div').show(); jQuery('#json_div').hide(); jQuery('#value_div').hide(); jQuery('#template_div').hide(); jQuery('#url_link_div').hide(); jQuery('#headers_div').show(); break; case "[cfdb-value]": jQuery('#show_hide_div').show(); jQuery('#limitorder_div').show(); jQuery('#html_format_div').hide(); jQuery('#dt_options_div').hide(); jQuery('#editcolumns_div').hide(); jQuery('#json_div').hide(); jQuery('#value_div').show(); jQuery('#template_div').hide(); jQuery('#url_link_div').hide(); jQuery('#headers_div').hide(); break; case "[cfdb-count]": jQuery('#show_hide_div').hide(); jQuery('#limitorder_div').hide(); jQuery('#html_format_div').hide(); jQuery('#dt_options_div').hide(); jQuery('#editcolumns_div').hide(); jQuery('#json_div').hide(); jQuery('#value_div').hide(); jQuery('#template_div').hide(); jQuery('#url_link_div').hide(); jQuery('#headers_div').hide(); break; case "[cfdb-json]": jQuery('#show_hide_div').show(); jQuery('#limitorder_div').show(); jQuery('#html_format_div').hide(); jQuery('#dt_options_div').hide(); jQuery('#editcolumns_div').hide(); jQuery('#json_div').show(); jQuery('#value_div').hide(); jQuery('#template_div').hide(); jQuery('#url_link_div').hide(); jQuery('#headers_div').show(); break; case "[cfdb-export-link]": jQuery('#show_hide_div').show(); jQuery('#limitorder_div').show(); jQuery('#html_format_div').hide(); jQuery('#dt_options_div').hide(); jQuery('#editcolumns_div').hide(); jQuery('#json_div').hide(); jQuery('#value_div').hide(); jQuery('#template_div').hide(); jQuery('#url_link_div').show(); jQuery('#headers_div').show(); break; default: jQuery('#show_hide_div').show(); jQuery('#limitorder_div').show(); jQuery('#html_format_div').hide(); jQuery('#dt_options_div').hide(); jQuery('#editcolumns_div').hide(); jQuery('#json_div').hide(); jQuery('#value_div').hide(); jQuery('#template_div').hide(); jQuery('#url_link_div').hide(); jQuery('#headers_div').hide(); break; } var exportSelected = jQuery('#export_cntl').val(); jQuery('#label_export_link').show(); jQuery('#label_gld_function').hide(); jQuery('#userpass_span_msg').show(); jQuery('#gld_userpass_span_msg').hide(); if (exportSelected) { if (exportSelected == 'RSS') { jQuery('#itemtitle_span').show(); jQuery('#csvdelim_span').hide(); } else { jQuery('#itemtitle_span').hide(); jQuery('#headers_div').show(); if (exportSelected == "GLD") { jQuery('#userpass_span_msg').hide(); jQuery('#gld_userpass_span_msg').show(); jQuery('#label_export_link').hide(); jQuery('#label_gld_function').show(); } if (exportSelected == "JSON") { jQuery('#json_div').show(); } else { jQuery('#json_div').hide(); } if (['CSVUTF8BOM', 'CSVUTF8', 'CSVSJIS'].indexOf(exportSelected) > -1) { jQuery('#csvdelim_span').show(); } else { jQuery('#csvdelim_span').hide(); } } } else { jQuery('#itemtitle_span').hide(); jQuery('#csvdelim_span').hide(); jQuery('#userpass_span_msg').show(); jQuery('#gld_userpass_span_msg').hide(); jQuery('#label_gld_script').hide(); } } function getValue(attr, value, errors) { if (value) { if (errors && value.indexOf('"') > -1) { errors.push('<?php echo htmlspecialchars(__('Error: "', 'contact-form-7-to-database-extension')); ?> ' + attr + '<?php echo htmlspecialchars(__('" should not contain double-quotes (")', 'contact-form-7-to-database-extension')); ?> '); value = value.replace('"', "'"); } return attr + '="' + value + '"'; } return ''; } function pushNameValue(attr, value, array, errors) { if (value) { if (errors && value.indexOf('"') > -1) { errors.push('<?php echo htmlspecialchars(__('Error: "', 'contact-form-7-to-database-extension')); ?> ' + attr + '<?php echo htmlspecialchars(__('" should not contain double-quotes (")', 'contact-form-7-to-database-extension')); ?> '); value = value.replace('"', "'"); } array.push(attr); array.push(value); return true; } return false; } function getValueUrl(attr, value) { if (value) { return attr + '=' + encodeURIComponent(value) } return ''; } function join(arr, delim) { if (delim == null) { delim = ' '; } var tmp = []; for (idx = 0; idx < arr.length; idx++) { if (arr[idx] != '') { tmp.push(arr[idx]); } } return tmp.join(delim); } function chopLastChar(text) { return text ? text.substr(0, text.length - 1) : text; } function createShortCodeAndExportLink() { var scElements = []; var scUrlElements = []; var scValidationErrors = []; var exportUrlElements = []; var exportValidationErrors = []; var googleScriptElements = []; var googleScriptValidationErrors = []; var shortcode = jQuery('#shortcode_ctrl').val(); if (shortcode == '') { jQuery('#shortcode_result_text').html(''); } scElements.push(chopLastChar(shortcode)); var pushErrorMessagesToAll = function (errMsg) { scValidationErrors.push(errMsg); exportValidationErrors.push(errMsg); googleScriptValidationErrors.push(errMsg); }; var formName = jQuery('#form_name_cntl').val(); var errMsg; if (!formName || Array.isArray(formName) && !formName.length) { errMsg = '<?php echo htmlspecialchars(__('Error: no form is chosen', 'contact-form-7-to-database-extension')); ?> '; jQuery('#form_validations_text').html(errMsg); pushErrorMessagesToAll(errMsg); } else { jQuery('#form_validations_text').html(''); scElements.push('form="' + formName + '"'); scUrlElements.push('form=' + encodeURIComponent(formName)); exportUrlElements.push('form=' + encodeURIComponent(formName)); googleScriptElements.push('<?php echo $this->siteUrl; ?> '); googleScriptElements.push(formName); googleScriptElements.push('<?php echo is_user_logged_in() ? wp_get_current_user()->user_login : '******'; ?> '); googleScriptElements.push('<password>'); } var pushValueToAll = function (name, val) { scElements.push(getValue(name, val, scValidationErrors)); scUrlElements.push(getValueUrl(name, val)); exportUrlElements.push(getValueUrl(name, val)); pushNameValue(name, val, googleScriptElements, googleScriptValidationErrors); }; var val; if (shortcode != '[cfdb-count]') { val = jQuery('#show_cntl').val(); pushValueToAll('show', val); val = jQuery('#hide_cntl').val(); pushValueToAll('hide', val); } val = jQuery('#role_cntl').val(); pushValueToAll('role', val); val = jQuery('#permissionmsg_cntl').val(); pushValueToAll('permissionmsg', val); val = jQuery('#trans_cntl').val(); pushValueToAll('trans', val); var handleFilterSearch = function (filterName, filter, searchName, search) { if (filter) { pushValueToAll(filterName, filter); if (search) { var errMsg = '<?php echo htmlspecialchars(__('Warning: "search" field ignored because FIELD is used (use one but not both)', 'contact-form-7-to-database-extension')); ?> '.replace('FIELD', filterName); pushErrorMessagesToAll(errMsg); } } else { pushValueToAll(searchName, search); } }; var filter = jQuery('#filter_cntl').val(); var search = jQuery('#search_cntl').val(); handleFilterSearch('filter', filter, 'search', search); var tfilter = jQuery('#tfilter_cntl').val(); var tsearch = jQuery('#tsearch_cntl').val(); handleFilterSearch('tfilter', tfilter, 'tsearch', tsearch); if (shortcode != '[cfdb-count]') { var handleLimit = function (limitName, limitRows, limitStart) { if (limitStart && !limitRows) { errMsg = '<?php echo htmlspecialchars(__('Error: "FIELD": if you provide a value for "Start Row" then you must also provide a value for "Num Rows"', 'contact-form-7-to-database-extension')); ?> '.replace('FIELD', limitName); pushErrorMessagesToAll(errMsg); } if (limitRows) { if (!/^\d+$/.test(limitRows)) { errMsg = '<?php echo htmlspecialchars(__('Error: "FIELD": "Num Rows" must be a positive integer', 'contact-form-7-to-database-extension')); ?> '.replace('FIELD', limitName); pushErrorMessagesToAll(errMsg); } else { var limitOption = ''; var limitOptionUrl = limitName + '='; if (limitStart) { if (!/^\d+$/.test(limitStart)) { errMsg = '<?php echo htmlspecialchars(__('Error: "FIELD": "Start Row" must be a positive integer', 'contact-form-7-to-database-extension')); ?> '.replace('FIELD', limitName); pushErrorMessagesToAll(errMsg); } else { limitOption += limitStart + ","; limitOptionUrl += encodeURIComponent(limitStart + ","); } } limitOption += limitRows; limitOptionUrl += limitRows; scElements.push(limitName + '="' + limitOption + '"'); scUrlElements.push(limitOptionUrl); exportUrlElements.push(limitOptionUrl); pushNameValue(limitName, limitOption, googleScriptElements, googleScriptValidationErrors); } } }; var limitRows = jQuery('#limit_rows_cntl').val(); var limitStart = jQuery('#limit_start_cntl').val(); handleLimit('limit', limitRows, limitStart); var tlimitRows = jQuery('#tlimit_rows_cntl').val(); var tlimitStart = jQuery('#tlimit_start_cntl').val(); handleLimit('tlimit', tlimitRows, tlimitStart); val = jQuery('#random_cntl').val(); scElements.push(getValue('random', val, scValidationErrors)); scUrlElements.push(getValueUrl('random', val)); pushNameValue("random", val, googleScriptElements, googleScriptValidationErrors); if (jQuery('#unbuffered_cntl').is(':checked')) { scElements.push('unbuffered="true"'); scUrlElements.push(getValueUrl('unbuffered', 'true')); exportUrlElements.push('unbuffered=true'); pushNameValue("unbuffered", "true", googleScriptElements, googleScriptValidationErrors); } var handleOrderBy = function (name, val) { if (val) { var orderByElem = getValue(name, val, scValidationErrors); var orderByElemUrl = getValueUrl(name, val); var orderByDir = jQuery('#' + name + 'dir_cntl').val(); if (orderByDir) { orderBy += ' ' + orderByDir; orderByElem = chopLastChar(orderByElem) + ' ' + orderByDir + '"'; orderByElemUrl = orderByElemUrl + encodeURIComponent(' ' + orderByDir); } scElements.push(orderByElem); scUrlElements.push(orderByElemUrl); exportUrlElements.push(orderByElemUrl); pushNameValue(name, orderBy, googleScriptElements, googleScriptValidationErrors); } }; var orderBy = jQuery('#orderby_cntl').val(); handleOrderBy('orderby', orderBy); var torderBy = jQuery('#torderby_cntl').val(); handleOrderBy('torderby', torderBy); } var scText; switch (shortcode) { case '[cfdb-html]': val = jQuery('#filelinks_cntl').val(); scElements.push(getValue('filelinks', val, scValidationErrors)); scUrlElements.push(getValueUrl('filelinks', val)); val = jQuery('#wpautop_cntl').val(); scElements.push(getValue('wpautop', val, scValidationErrors)); scUrlElements.push(getValueUrl('wpautop', val)); val = jQuery('#stripbr_cntl').val(); scElements.push(getValue('stripbr', val, scValidationErrors)); scUrlElements.push(getValueUrl('stripbr', val)); var template = jQuery('#content_cntl').val(); var content = template; var contentBefore = jQuery('#before_cntl').val(); var contentAfter = jQuery('#after_cntl').val(); if (contentBefore) { content = "<?php echo CFDBShortCodeContentParser::BEFORE_START_DELIMITER; ?> " + contentBefore + "<?php echo CFDBShortCodeContentParser::BEFORE_END_DELIMITER; ?> " + content; } if (contentAfter) { content += "<?php echo CFDBShortCodeContentParser::AFTER_START_DELIMITER; ?> " + contentAfter + "<?php echo CFDBShortCodeContentParser::AFTER_END_DELIMITER; ?> "; } scUrlElements.push('content=' + encodeURIComponent(content)); scUrlElements.push('enc=HTMLTemplate'); scText = join(scElements) + ']' + // Escape html tags for display on page content.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') + '[/cfdb-html]'; if (template == "") { scValidationErrors.push('<?php echo htmlspecialchars(__('Error: [cfdb-html] has empty Template. It will not output anything. ', 'contact-form-7-to-database-extension')); echo htmlspecialchars(__('(Shortcode Specific option)', 'contact-form-7-to-database-extension')); ?> '); jQuery('#content_cntl').addClass('validation'); // highlight template area } else { jQuery('#content_cntl').removeClass('validation'); // remove highlight template area } break; case '[cfdb-table]': if (!jQuery('#header_cntl').is(':checked')) { scElements.push('header="false"'); scUrlElements.push(getValueUrl('header', 'false')); pushNameValue("header", "false", googleScriptElements, googleScriptValidationErrors); } val = jQuery('#headers_cntl').val(); scElements.push(getValue('headers', val, scValidationErrors)); scUrlElements.push(getValueUrl('headers', val)); val = jQuery('#id_cntl').val(); scElements.push(getValue('id', val, scValidationErrors)); scUrlElements.push(getValueUrl('id', val)); val = jQuery('#class_cntl').val(); scElements.push(getValue('class', val, scValidationErrors)); scUrlElements.push(getValueUrl('class', val)); val = jQuery('#style_cntl').val(); scElements.push(getValue('style', val, scValidationErrors)); scUrlElements.push(getValueUrl('style', val)); var contentBefore = jQuery('#before_cntl').val(); var contentAfter = jQuery('#after_cntl').val(); var content = ''; if (contentBefore) { content = "<?php echo CFDBShortCodeContentParser::BEFORE_START_DELIMITER; ?> " + contentBefore + "<?php echo CFDBShortCodeContentParser::BEFORE_END_DELIMITER; ?> " + content; } if (contentAfter) { content += "<?php echo CFDBShortCodeContentParser::AFTER_START_DELIMITER; ?> " + contentAfter + "<?php echo CFDBShortCodeContentParser::AFTER_END_DELIMITER; ?> "; } scUrlElements.push('content=' + encodeURIComponent(content)); scUrlElements.push('enc=HTML'); scText = join(scElements) + ']'; if (content) { // Escape html tags for display on page scText += content.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') + '[/cfdb-table]'; } break; case '[cfdb-datatable]': if (!jQuery('#header_cntl').is(':checked')) { scElements.push('header="false"'); scUrlElements.push(getValueUrl('header', 'false')); } val = jQuery('#headers_cntl').val(); scElements.push(getValue('headers', val, scValidationErrors)); scUrlElements.push(getValueUrl('headers', val)); var hadHeaders = val != ''; val = jQuery('#id_cntl').val(); scElements.push(getValue('id', val, scValidationErrors)); scUrlElements.push(getValueUrl('id', val)); val = jQuery('#class_cntl').val(); scElements.push(getValue('class', val, scValidationErrors)); scUrlElements.push(getValueUrl('class', val)); val = jQuery('#style_cntl').val(); scElements.push(getValue('style', val, scValidationErrors)); scUrlElements.push(getValueUrl('style', val)); val = jQuery('#edit_mode_cntl').val(); scElements.push(getValue('edit', val, scValidationErrors)); scUrlElements.push(getValueUrl('edit', val)); if (hadHeaders && val == 'true') { scValidationErrors.push('<?php echo htmlspecialchars(__('Error: "edit=true" will not work properly when setting "headers" ', 'contact-form-7-to-database-extension')); ?> '); } val = jQuery('#dt_options_cntl').val(); scElements.push(getValue('dt_options', val, scValidationErrors)); scUrlElements.push(getValueUrl('dt_options', val)); val = jQuery('#editcolumns_cntl').val(); scElements.push(getValue('editcolumns', val, scValidationErrors)); scUrlElements.push(getValueUrl('editcolumns', val)); var contentBefore = jQuery('#before_cntl').val(); var contentAfter = jQuery('#after_cntl').val(); var content = ''; if (contentBefore) { content = "<?php echo CFDBShortCodeContentParser::BEFORE_START_DELIMITER; ?> " + contentBefore + "<?php echo CFDBShortCodeContentParser::BEFORE_END_DELIMITER; ?> " + content; } if (contentAfter) { content += "<?php echo CFDBShortCodeContentParser::AFTER_START_DELIMITER; ?> " + contentAfter + "<?php echo CFDBShortCodeContentParser::AFTER_END_DELIMITER; ?> "; } scUrlElements.push('content=' + encodeURIComponent(content)); scUrlElements.push('enc=DT'); scText = join(scElements) + ']'; if (content) { // Escape html tags for display on page scText += content.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') + '[/cfdb-datatable]'; } break; case '[cfdb-value]': val = jQuery('#function_cntl').val(); scElements.push(getValue('function', val, scValidationErrors)); scUrlElements.push(getValueUrl('function', val)); val = jQuery('#delimiter_cntl').val(); scElements.push(getValue('delimiter', val, scValidationErrors)); scUrlElements.push(getValueUrl('delimiter', val)); var contentBefore = jQuery('#before_cntl').val(); var contentAfter = jQuery('#after_cntl').val(); var content = ''; if (contentBefore) { content = "<?php echo CFDBShortCodeContentParser::BEFORE_START_DELIMITER; ?> " + contentBefore + "<?php echo CFDBShortCodeContentParser::BEFORE_END_DELIMITER; ?> " + content; } if (contentAfter) { content += "<?php echo CFDBShortCodeContentParser::AFTER_START_DELIMITER; ?> " + contentAfter + "<?php echo CFDBShortCodeContentParser::AFTER_END_DELIMITER; ?> "; } scUrlElements.push('content=' + encodeURIComponent(content)); scUrlElements.push('enc=VALUE'); scText = join(scElements) + ']'; if (content) { // Escape html tags for display on page scText += content.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') + '[/cfdb-value]'; } break; case '[cfdb-count]': var contentBefore = jQuery('#before_cntl').val(); var contentAfter = jQuery('#after_cntl').val(); var content = ''; if (contentBefore) { content = "<?php echo CFDBShortCodeContentParser::BEFORE_START_DELIMITER; ?> " + contentBefore + "<?php echo CFDBShortCodeContentParser::BEFORE_END_DELIMITER; ?> " + content; } if (contentAfter) { content += "<?php echo CFDBShortCodeContentParser::AFTER_START_DELIMITER; ?> " + contentAfter + "<?php echo CFDBShortCodeContentParser::AFTER_END_DELIMITER; ?> "; } scUrlElements.push('content=' + encodeURIComponent(content)); scUrlElements.push('enc=COUNT'); scText = join(scElements) + ']'; // hopLastChar(scElements.join(' ')) + ']'; if (content) { // Escape html tags for display on page scText += content.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') + '[/cfdb-count]'; } break; case '[cfdb-json]': if (!jQuery('#header_cntl').is(':checked')) { scElements.push('header="false"'); scUrlElements.push(getValueUrl('header', 'false')); pushNameValue("header", "false", googleScriptElements, googleScriptValidationErrors); } val = jQuery('#headers_cntl').val(); scElements.push(getValue('headers', val, scValidationErrors)); scUrlElements.push(getValueUrl('headers', val)); val = jQuery('#var_cntl').val(); scElements.push(getValue('var', val, scValidationErrors)); scUrlElements.push(getValueUrl('var', val)); val = jQuery('#format_cntl').val(); scElements.push(getValue('format', val, scValidationErrors)); scUrlElements.push(getValueUrl('format', val)); var contentBefore = jQuery('#before_cntl').val(); var contentAfter = jQuery('#after_cntl').val(); var content = ''; if (contentBefore) { content = "<?php echo CFDBShortCodeContentParser::BEFORE_START_DELIMITER; ?> " + contentBefore + "<?php echo CFDBShortCodeContentParser::BEFORE_END_DELIMITER; ?> " + content; } if (contentAfter) { content += "<?php echo CFDBShortCodeContentParser::AFTER_START_DELIMITER; ?> " + contentAfter + "<?php echo CFDBShortCodeContentParser::AFTER_END_DELIMITER; ?> "; } scUrlElements.push('content=' + encodeURIComponent(content)); scUrlElements.push('enc=JSON'); scText = join(scElements) + ']'; if (content) { // Escape html tags for display on page scText += content.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') + '[/cfdb-json]'; } break; case '[cfdb-export-link]': enc = jQuery('#enc_cntl').val(); scElements.push(getValue('enc', enc, scValidationErrors)); scUrlElements.push(getValueUrl('enc', enc)); if (['CSVUTF8BOM', 'CSVUTF8', 'CSVSJIS'].indexOf(enc) > -1) { delim = jQuery('#export_link_csv_delim').val(); if (delim != ',') { scElements.push(getValue('delimiter', delim, scValidationErrors)); scUrlElements.push(getValueUrl('delimiter', delim)); } } scElements.push(getValue('urlonly', jQuery('#urlonly_cntl').val(), scValidationErrors)); scElements.push(getValue('linktext', jQuery('#linktext_cntl').val(), scValidationErrors)); if (!jQuery('#header_cntl').is(':checked')) { scElements.push('header="false"'); scUrlElements.push(getValueUrl('header', 'false')); } val = jQuery('#headers_cntl').val(); scElements.push(getValue('headers', val, scValidationErrors)); scUrlElements.push(getValueUrl('headers', val)); scText = join(scElements) + ']'; break; default: scText = shortcode; break; } var urlBase = '<?php echo $this->plugin->getAdminUrlPrefix('admin-ajax.php'); ?> action=cfdb-export&'; if (shortcode) { // Output short code text var scUrl = urlBase + join(scUrlElements, '&'); jQuery('#shortcode_result_text').html('<a target="_cfdb_sc_results" href="' + scUrl + '">' + scText + '</a>'); // Output short code errors jQuery('#shortcode_validations_text').html(scValidationErrors.join('<br/>')); } else { // Don't report errors jQuery('#shortcode_validations_text').html(''); } // Export link or Google Spreadsheet function call var exportSelection = jQuery('#export_cntl').val(); if (exportSelection) { if (exportSelection != 'GLD') { exportUrlElements.push(getValueUrl('enc', exportSelection)); } if (exportSelection == 'RSS') { exportUrlElements.push(getValueUrl('itemtitle', jQuery('#add_itemtitle').val())); } else { if (!jQuery('#header_cntl').is(':checked')) { exportUrlElements.push(getValueUrl('header', 'false')); pushNameValue("header", "false", googleScriptElements, googleScriptValidationErrors); } val = jQuery('#headers_cntl').val(); exportUrlElements.push(getValueUrl('headers', val, scValidationErrors)); pushNameValue("headers", val, googleScriptElements, googleScriptValidationErrors); exportUrlElements.push(getValueUrl('format', jQuery('#format_cntl').val(), scValidationErrors)); } if (['CSVUTF8BOM', 'CSVUTF8', 'CSVSJIS'].indexOf(exportSelection) > -1) { delim = jQuery('#csv_delim').val(); if (delim != '') { exportUrlElements.push(getValueUrl("delimiter", delim)); } } var user = jQuery("#gld_user").val(); var pass = jQuery("#gld_pass").val(); var obfuscate = jQuery('#obfuscate_cntl').is(':checked') if (user || pass) { if (obfuscate) { var key = 'kx82XcPjq8q8S!xafx%$&7p6'; exportUrlElements.push("l=" + encodeURI(printHex(des(key, user + "/" + pass, 1)))); } else { exportUrlElements.push("username="******"password="******"<?php echo htmlspecialchars(__('Warning: the function includes your WP login information. Avoid sharing it.', 'contact-form-7-to-database-extension')); ?> "); } // Output var exportUrl = urlBase + join(exportUrlElements, '&'); if (exportSelection == 'GLD') { if (!user || !pass) { exportValidationErrors.push("<?php echo htmlspecialchars(__('Error: WP User and Password are required for the Google Spreadsheet to pull data from your WordPress site.', 'contact-form-7-to-database-extension')); ?> "); } if (exportUrl.length > 255) { exportValidationErrors.push("<?php echo htmlspecialchars(__('Because the generated URL would be too long, you must use this alternative function and add its script to your Google Spreadsheet', 'contact-form-7-to-database-extension')); ?> "); jQuery('#label_gld_script').show(); jQuery('#label_gld_function').hide(); jQuery('#export_result_text').html(formName ? ("=cfdbdata(\"" + googleScriptElements.join("\", \"") + "\")") : ""); } else { jQuery('#export_result_text').html(formName ? ("<a target='_cfdb_exp_results' href='" + exportUrl + "'>=IMPORTDATA(\"" + exportUrl + "\")</a>") : ""); } } else { jQuery('#export_result_text').html(formName ? ('<a target="_cfdb_exp_results" href="' + exportUrl + '">' + exportUrl + '</a>') : ''); } // Output export errors jQuery('#export_validations_text').html(exportValidationErrors.join('<br/>')); } else { jQuery('#export_result_text').html(''); // Don't report errors jQuery('#export_validations_text').html(''); } } var getFormFieldsUrlBase = '<?php echo $this->plugin->getFormFieldsAjaxUrlBase(); ?> '; function getFormFields() { jQuery('[id^=add]').attr('disabled', 'disabled'); jQuery('[id^=btn]').attr('disabled', 'disabled'); var formName = jQuery('#form_name_cntl').val(); var url = getFormFieldsUrlBase + encodeURIComponent(formName); jQuery.ajax({ dataType: "json", url: url, async: false, success: function (json) { var optionsHtml = '<option value=""></option>'; jQuery(json).each(function () { optionsHtml += '<option value="' + this + '">' + this + '</option>'; }); optionsHtml += '<option value="$_POST(param)">$_POST(param)</option>'; optionsHtml += '<option value="$_GET(param)">$_GET(param)</option>'; optionsHtml += '<option value="$_COOKIE(param)">$_COOKIE(param)</option>'; jQuery('[id^=add]').html(optionsHtml).removeAttr('disabled'); jQuery('[id^=btn]').removeAttr('disabled'); } }); } function validateSubmitTime() { var url = "<?php echo $this->plugin->getValidateSubmitTimeAjaxUrlBase(); ?> " + jQuery('#filter_val').val(); jQuery.get(url, function (data) { alert(data); }); } function showValidateSubmitTimeHelp(show) { if (show) { jQuery('#span_validate_submit_time').show(); } else { jQuery('#span_validate_submit_time').hide(); } } function addFieldToShow() { var value = jQuery('#show_cntl').val(); if (value) { value += ','; } jQuery('#show_cntl').val(value + jQuery('#add_show').val()); createShortCodeAndExportLink(); } function addFieldToHide() { var value = jQuery('#hide_cntl').val(); if (value) { value += ','; } jQuery('#hide_cntl').val(value + jQuery('#add_hide').val()); createShortCodeAndExportLink(); } function addFieldToOrderBy(field) { var value = jQuery('#' + field + '_cntl').val(); if (value) { value += ','; } jQuery('#' + field + '_cntl').val(value + jQuery('#add_' + field).val()); createShortCodeAndExportLink(); } function addFieldToFilter(field) { var value = jQuery('#' + field + '_cntl').val(); if (value) { value += jQuery('#' + field + '_bool').val(); } value += jQuery('#add_' + field).val() + jQuery('#' + field + '_op').val() + jQuery('#' + field + '_val').val(); jQuery('#' + field + '_cntl').val(value); createShortCodeAndExportLink(); } function addToTrans() { var value = jQuery('#trans_cntl').val(); if (value) { value += "&&"; } var field = jQuery('#add_trans').val(); if (field) { value += field; value += "=" } value += jQuery('#trans_val').val(); jQuery('#trans_cntl').val(value); createShortCodeAndExportLink(); } function addFieldToHeaders() { var col = jQuery('#add_headers').val(); var disp = jQuery('#headers_val').val(); if (!col || !disp) { return; } var value = jQuery('#headers_cntl').val(); if (value) { value += ','; } value += col + '=' + disp; jQuery('#headers_cntl').val(value); createShortCodeAndExportLink(); } function addFieldToContent() { jQuery('#content_cntl').val(jQuery('#content_cntl').val() + '${' + jQuery('#add_content').val() + '}'); } function reset() { // Form jQuery('#form_name_cntl').val(<?php echo json_encode($this->requestParams['postedForm']); ?> ); getFormFields(); // Export File jQuery('#export_cntl').val(<?php echo json_encode($this->requestParams['postedEnc']); ?> ); jQuery('#add_itemtitle').val(<?php echo json_encode($this->requestParams['postedItemtitle']); ?> ); jQuery('#csv_delim').val(<?php echo json_encode(""); ?> ); // Short Code jQuery('#shortcode_ctrl').val(<?php echo json_encode($this->requestParams['postedSC']); ?> ); jQuery('#show_cntl').val(<?php echo json_encode($this->requestParams['postedShow']); ?> ); jQuery('#hide_cntl').val(<?php echo json_encode($this->requestParams['postedHide']); ?> ); jQuery('#role_cntl').val(<?php echo json_encode($this->requestParams['postedRole']); ?> ); jQuery('#permissionmsg_cntl').val(<?php echo json_encode($this->requestParams['postedPermissionmsg']); ?> ); jQuery('#trans_cntl').val(<?php echo json_encode($this->requestParams['postedTrans']); ?> ); jQuery('#search_cntl').val(<?php echo json_encode($this->requestParams['postedSearch']); ?> ); jQuery('#filter_cntl').val(<?php echo json_encode($this->requestParams['postedFilter']); ?> ); jQuery('#tsearch_cntl').val(<?php echo json_encode($this->requestParams['postedTSearch']); ?> ); jQuery('#tfilter_cntl').val(<?php echo json_encode($this->requestParams['postedTFilter']); ?> ); jQuery('#limit_rows_cntl').val(<?php echo json_encode($this->requestParams['postedLimitNumRows']); ?> ); jQuery('#limit_start_cntl').val(<?php echo json_encode($this->requestParams['postedLimitStart']); ?> ); jQuery('#random_cntl').val(<?php echo json_encode($this->requestParams['postedRandom']); ?> ); jQuery('#unbuffered_cntl').attr("checked", false); jQuery('#orderby_cntl').val(<?php echo json_encode($this->requestParams['postedOrderby']); ?> ); jQuery('#torderby_cntl').val(<?php echo json_encode($this->requestParams['postedTOrderby']); ?> ); jQuery('#header_cntl').prop("checked", <?php echo $this->requestParams['$postedHeader'] == 'false' ? 'false' : 'true'; ?> ); // default = true jQuery('#headers_cntl').val(<?php echo json_encode($this->requestParams['postedHeaders']); ?> ); jQuery('#id_cntl').val(<?php echo json_encode($this->requestParams['postedId']); ?> ); jQuery('#class_cntl').val(<?php echo json_encode($this->requestParams['postedClass']); ?> ); jQuery('#style_cntl').val(<?php echo json_encode($this->requestParams['postedStyle']); ?> ); jQuery('#edit_mode_cntl').val(<?php echo json_encode($this->requestParams['postedEdit']); ?> ); jQuery('#dt_options_cntl').val(<?php echo json_encode($this->requestParams['postedDtOptions']); ?> ); jQuery('#editcolumns_cntl').val(<?php echo json_encode($this->requestParams['postedEditcolumns']); ?> ); jQuery('#var_cntl').val(<?php echo json_encode($this->requestParams['postedVar']); ?> ); jQuery('#format_cntl').val(<?php echo json_encode($this->requestParams['postedFormat']); ?> ); jQuery('#function_cntl').val(<?php echo json_encode($this->requestParams['postedFunction']); ?> ); jQuery('#delimiter_cntl').val(<?php echo json_encode($this->requestParams['postedDelimiter']); ?> ); jQuery('#filelinks_cntl').val(<?php echo json_encode($this->requestParams['postedFilelinks']); ?> ); jQuery('#wpautop_cntl').val(<?php echo json_encode($this->requestParams['postedWpautop']); ?> ); jQuery('#stripbr_cntl').val(<?php echo json_encode($this->requestParams['postedStripbr']); ?> ); jQuery('#content_cntl').val(<?php echo json_encode($this->requestParams['postedContent']); ?> ); jQuery('#before_cntl').val(<?php echo json_encode($this->requestParams['postedContentBefore']); ?> ); jQuery('#after_cntl').val(<?php echo json_encode($this->requestParams['postedContentAfter']); ?> ); jQuery('#enc_cntl').val(<?php echo json_encode($this->requestParams['postedEnc']); ?> ); jQuery('#urlonly_cntl').val(<?php echo json_encode($this->requestParams['postedUrlonly']); ?> ); jQuery('#linktext_cntl').val(<?php echo json_encode($this->requestParams['postedLinktext']); ?> ); showValidateSubmitTimeHelp(false); showHideOptionDivs(); createShortCodeAndExportLink(); } jQuery.ajaxSetup({ cache: false }); jQuery(document).ready(function () { reset(); showHideOptionDivs(); createShortCodeAndExportLink(); jQuery('#shortcode_ctrl').change(showHideOptionDivs); jQuery('#shortcode_ctrl').change(createShortCodeAndExportLink); jQuery('select[id$="cntl"]').change(createShortCodeAndExportLink); jQuery('input[id$="cntl"]').keyup(createShortCodeAndExportLink); jQuery('textarea[id$="cntl"]').keyup(createShortCodeAndExportLink); jQuery('#form_name_cntl').change(getFormFields); jQuery('#btn_show').click(addFieldToShow); jQuery('#btn_hide').click(addFieldToHide); jQuery('#btn_orderby').click(function () { addFieldToOrderBy('orderby'); }); jQuery('#btn_torderby').click(function () { addFieldToOrderBy('torderby'); }); jQuery('#btn_filter').click(function () { addFieldToFilter('filter'); }); jQuery('#btn_tfilter').click(function () { addFieldToFilter('tfilter'); }); jQuery('#btn_trans').click(addToTrans); jQuery('#header_cntl').click(createShortCodeAndExportLink); jQuery('#unbuffered_cntl').click(createShortCodeAndExportLink); jQuery('#edit_mode_cntl').click(createShortCodeAndExportLink); jQuery('#btn_headers').click(addFieldToHeaders); jQuery('#btn_content').click(function () { addFieldToContent(); createShortCodeAndExportLink(); }); jQuery('#btn_editcolumns').click(function () { addFieldToOrderBy('editcolumns'); }); var showHideExportLinkDelimiter = function () { var enc = jQuery('#enc_cntl').val(); if (['CSVUTF8BOM', 'CSVUTF8', 'CSVSJIS'].indexOf(enc) > -1) { jQuery('#export_link_csvdelim_span').show(); } else { jQuery('#export_link_csvdelim_span').hide(); } }; jQuery('#enc_cntl').change(function () { showHideExportLinkDelimiter(); createShortCodeAndExportLink(); }); showHideExportLinkDelimiter(); jQuery('#urlonly_cntl').click(createShortCodeAndExportLink); jQuery('#reset_button').click(reset); jQuery('#btn_validate_submit_time').click(validateSubmitTime); jQuery('#add_filter').change(function () { showValidateSubmitTimeHelp(jQuery('#add_filter').val() == "submit_time"); }); jQuery('#export_cntl').change(function () { showHideOptionDivs(); createShortCodeAndExportLink(); }); jQuery('#add_itemtitle').change(createShortCodeAndExportLink); jQuery('#csv_delim').keyup(createShortCodeAndExportLink); jQuery('#export_link_csv_delim').keyup(createShortCodeAndExportLink); jQuery('#gld_user').change(createShortCodeAndExportLink); jQuery('#gld_user').keyup(createShortCodeAndExportLink); jQuery('#gld_pass').change(createShortCodeAndExportLink); jQuery('#gld_pass').keyup(createShortCodeAndExportLink); jQuery('#obfuscate_cntl').click(createShortCodeAndExportLink); jQuery('#form_name_cntl').change(createShortCodeAndExportLink); }); </script> <?php }
/** * @param $plugin CF7DBPlugin * @return void */ function display(&$plugin) { if ($plugin == null) { $plugin = new CF7DBPlugin(); } $forms = $plugin->getForms(); $importUrl = $plugin->getAdminUrlPrefix('admin-ajax.php') . 'action=cfdb-importcsv'; $renameUrl = $plugin->getAdminUrlPrefix('admin-ajax.php') . 'action=cfdb-renameform'; $clenaupUrl = $plugin->getAdminUrlPrefix('admin-ajax.php') . 'action=cfdb-cleanup'; ?> <h2><?php echo htmlspecialchars(__('Import CSV File into Form', 'contact-form-7-to-database-extension')); ?> </h2> <form enctype="multipart/form-data" action="<?php echo $importUrl; ?> " method="post"> <table> <tbody> <tr> <td><label for="file"><?php echo htmlspecialchars(__('File', 'contact-form-7-to-database-extension')); ?> </label></td> <td><input type="file" name="file" id="file" size="50"></td> </tr> <tr> <td><input type="radio" name="into" id="new" value="new" checked> <?php echo htmlspecialchars(__('New Form', 'contact-form-7-to-database-extension')); ?> </td> <td><input type="text" name="newformname" id="newformname" size="50"/></td> </tr> <tr> <td><input type="radio" name="into" id="existing" value="into"> <?php echo htmlspecialchars(__('Existing Form', 'contact-form-7-to-database-extension')); ?> </td> <td> <select name="form" id="form"> <option value=""></option> <?php foreach ($forms as $formName) { echo "<option value=\"{$formName}\">{$formName}</option>"; } ?> </select> </td> </tr> </tbody> </table> <input type="submit" name="<?php echo htmlspecialchars(__('Import', 'contact-form-7-to-database-extension')); ?> " id="importsubmit" value="import"> </form> <script type="text/javascript"> jQuery('#file').change(function () { var val = jQuery(this).val(); val = val.substring(val.lastIndexOf('/') + 1); val = val.substring(val.lastIndexOf('\\') + 1); val = val.replace(/\.([^\.])*$/, ""); jQuery('#newformname').val(val); }); </script> <form enctype="multipart/form-data" action="<?php echo $renameUrl; ?> " method="post"> <h2><?php echo htmlspecialchars(__('Rename Form', 'contact-form-7-to-database-extension')); ?> </h2> <select name="form" id="form"> <option value=""></option> <?php foreach ($forms as $formName) { echo "<option value=\"{$formName}\">{$formName}</option>"; } ?> </select> <td><input type="text" name="newformname" id="renameformname" size="10"/></td> <input type="submit" name="rename" id="renamesubmit" value="<?php echo htmlspecialchars(__('Rename', 'contact-form-7-to-database-extension')); ?> "> </form> <h2><?php echo htmlspecialchars(__('Backup Form to CSV File', 'contact-form-7-to-database-extension')); ?> </h2> <ul> <li><?php echo htmlspecialchars(__('Backup a form into a CSV file that can be re-imported without loss of data.', 'contact-form-7-to-database-extension')); ?> </li> <li><?php echo htmlspecialchars(__('Limitation: this will not export file uploads.', 'contact-form-7-to-database-extension')); ?> </li> <li><?php echo htmlspecialchars(__('Limitation: extremely large numbers of records in your form may cause the export operation on your server to run out of memory, thereby not giving you all the rows.', 'contact-form-7-to-database-extension')); ?> </li> </ul> <form method="get" action="<?php echo $plugin->getPluginDirUrl(); ?> export.php"> <input type="hidden" name="enc" value="CSV"/> <input type="hidden" name="bak" value="true"/> <select name="form"> <option value=""></option> <?php foreach ($forms as $formName) { echo "<option value=\"{$formName}\">{$formName}</option>"; } ?> </select> <input type="submit" name="<?php echo htmlspecialchars(__('Export', 'contact-form-7-to-database-extension')); ?> " value="export"> </form> <h2><?php echo htmlspecialchars(__('Data Cleanup', 'contact-form-7-to-database-extension')); ?> </h2> <?php echo htmlspecialchars(__('Clean up data that can cause incorrect behavior', 'contact-form-7-to-database-extension')); ?> <form name="cleanup" action="<?php echo $clenaupUrl; ?> " method="post"> <input type="submit" name="cleanup" id="cleanupsubmit" value="<?php echo htmlspecialchars(__('Clean up data', 'contact-form-7-to-database-extension')); ?> "> </form> <?php }