From 5fdb01b6830df45bf5e16db7f233dbc9fd3ea861 Mon Sep 17 00:00:00 2001 From: Anthony Talarico Date: Fri, 17 Jun 2016 13:12:54 -0400 Subject: [PATCH] fixing create pages bug where multiple pages got stuck if they had the same id --- js/shortcodeBuilder.js | 18 +++-- models/admin/management/index.php | 129 +++++++++++++++--------------- views/admin/management/index.html | 12 +-- 3 files changed, 84 insertions(+), 75 deletions(-) diff --git a/js/shortcodeBuilder.js b/js/shortcodeBuilder.js index 219d3882..46b38ae9 100644 --- a/js/shortcodeBuilder.js +++ b/js/shortcodeBuilder.js @@ -113,7 +113,8 @@ jQuery(document).ready(function ($) { $("#showDetail").dialog().dialog("option", "width", 422); }); - var regExp = /\[([^)]+)\]/; +// var regExp = /\[([^)]+)\]/; + var regExp = /glm_members_list_/g; function get_tinymce_content(){ if (jQuery("#wp-content-wrap").hasClass("tmce-active")){ @@ -142,9 +143,12 @@ jQuery(document).ready(function ($) { editor_shortcodes = get_tinymce_content(); if(editor_shortcodes){ + var number_of_categories = (editor_shortcodes.match(/category="(.*?)"/g) || []).length; + } console.debug(number_of_categories); + console.debug(editor_shortcodes); if(editor_shortcodes){ if(editor_shortcodes.match(/category="(.*?)"/) !== null){ @@ -261,17 +265,17 @@ jQuery(document).ready(function ($) { editor_content = editor_content.replace(ids, 'category="' + id_string + '"'); content.val(editor_content); } else { - editor_content = editor_content.replace(ids, id_string); + editor_content = editor_content.replace('category="' + ids, 'category="' + id_string); content.val(editor_content); } } else if(tinyMCE.activeEditor !== null){ if(empty_space){ editor_content = tinyMCE.get('content').getContent({format: 'raw'}); - editor_content = editor_content.replace(ids, 'category="' + id_string + '"'); + editor_content = editor_content.replace(ids, 'category="' + id_string + '"' ); tinyMCE.activeEditor.setContent(editor_content); } else { editor_content = tinyMCE.get('content').getContent({format: 'raw'}); - editor_content = editor_content.replace(ids, id_string); + editor_content = editor_content.replace('category="' + ids, 'category="' + id_string); tinyMCE.activeEditor.setContent(editor_content); } } @@ -338,7 +342,7 @@ jQuery(document).ready(function ($) { } } // start the shortcode string that will be added to the tinymce editor - shortcodeString = '
[' + shortcodeDropdown; + shortcodeString = '
[' + shortcodeDropdown; // populate the shortcode object for (var key in shortcodeValues) { @@ -409,13 +413,13 @@ jQuery(document).ready(function ($) { if($("#content").css("display") !== "none"){ editor_content = content.val(); - editor_content = editor_content.replace(ids, id_string); + editor_content = editor_content.replace('category="' + ids, 'category="' + id_string ); content.val(editor_content); } else if(tinyMCE.activeEditor !== null){ editor_content = tinyMCE.get('content').getContent({format: 'raw'}); - editor_content = editor_content.replace(ids, id_string); + editor_content = editor_content.replace('category="' + ids, 'category="' + id_string); tinyMCE.activeEditor.setContent(editor_content); } diff --git a/models/admin/management/index.php b/models/admin/management/index.php index 8cfb535b..9835501d 100644 --- a/models/admin/management/index.php +++ b/models/admin/management/index.php @@ -25,6 +25,7 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral { public $prefixSlugs = array(); public $requiredPages = array(); +// s /** * WordPress Database Object * @@ -62,17 +63,20 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral parent::__construct(false, false); } - public function updateRequiredPages(){ + public function updateRequiredPages(){ $this->requiredPages = array(); +// $this->reqPageTitlesStatic = array(); foreach ($this->config['addOns'] as $a) { if (isset($a['requiredPages'])) { foreach($a['requiredPages'] as $pageName => $pageData) { +// $this->reqPageTitlesStatic[] = strtolower(str_replace(" ","-",$pageName)); $pageID = get_option(GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['underscored_title']); $this->prefixSlugs[] = GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['underscored_title']; $this->requiredPages[$a['underscored_name']][$pageName]['id'] = $pageID; $page = get_post($pageID); $this->requiredPages[$a['underscored_name']][$pageName]['slug'] = $page->post_name; $this->requiredPages[$a['underscored_name']][$pageName]['title'] = $page->post_title; + $this->requiredPages[$a['underscored_name']][$pageName]['static_name'] = strtolower(str_replace(" ","-",$pageName)); } } } @@ -117,8 +121,8 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral $settingsUpdated = false; $settingsUpdateError = false; $requiredPagesUpdateError = false; - $idError = false; - $titleError = false; + $id_error = false; + $title_error = false; // General settings are always stored in a record with ID=1. $id = 1; @@ -137,73 +141,75 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral // Check for submission option $option = ''; - if (isset($_REQUEST['option']) && $_REQUEST['option'] == 'submit') { + if ( isset( $_REQUEST[ 'option' ] ) && $_REQUEST[ 'option' ] == 'submit' ) { $option = $_REQUEST['option']; } $this->updateRequiredPages(); - switch($option) { + switch( $option ) { // Update General Settings and redisplay the form case 'submit': - - // get all of the IDs from the form - $requiredPagesIDs = array_intersect_key($_REQUEST, array_flip(preg_grep('/^glm_members_database_id/', array_keys($_REQUEST)))); + foreach ( $this->config[ 'addOns' ] as $a ) { + if ( isset( $a[ 'requiredPages' ] ) ) { + foreach( $a[ 'requiredPages'] as $pageName => $pageData ) { + + $current_page_id_value = get_option( GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData[ 'underscored_title' ] ); - foreach($requiredPagesIDs as $id){ - $page = get_post($id); - $pageTitle = $page->post_title; - $pageSlug= $page->post_name; - $slug = 'glm_members_database_option_' . $pageSlug; - $postValueTitle = filter_var($_POST[$slug], FILTER_SANITIZE_STRING); - if($pageTitle != $postValueTitle && !empty($postValueTitle)){ - $args = array ( - 'ID' => $id, - 'post_title' => $postValueTitle - ); - wp_update_post($args); - } else if($pageTitle == $postValueTitle) { - - } else if(empty($postValueTitle)){ - $settingsUpdateError = true; - $settingsUpdated = false; - $titleError = true; - } - } + $page_title_field_name = 'glm_members_database_title_' . $this->requiredPages[ $a[ 'underscored_name'] ][ $pageName ][ 'static_name' ]; + $page_id_field_name = 'glm_members_database_id_' . $this->requiredPages[ $a[ 'underscored_name' ] ][ $pageName ][ 'static_name' ]; + + $page_option_slug = GLM_MEMBERS_PLUGIN_OPTION_PREFIX.$pageData['underscored_title']; - foreach($this->prefixSlugs as $slug){ - $id = get_option($slug); - $pageTitle = $page->post_title; - $page = get_post($id); - $pageSlug = $page->post_name; - $titleSlug = 'glm_members_database_option_' . $pageSlug; - $pageSlug = 'glm_members_database_id_' . $pageSlug; - $formID = filter_var($_POST[$pageSlug], FILTER_SANITIZE_STRING); - $formTitle = filter_var($_POST[$titleSlug], FILTER_SANITIZE_STRING); - if($id != $formID && get_post_status($formID) != false && is_numeric($formID)){ - update_option($slug, $formID); - } else if($id == $formID && is_numeric($formID)) { - update_option($slug, $id); - } else { - $settingsUpdateError = true; - $settingsUpdated = false; - $idError = true; - } + $current_page_title_value = $this->requiredPages[ $a[ 'underscored_name' ] ][ $pageName][ 'title' ]; + + if( isset( $_POST[ $page_title_field_name ] ) && ! empty( $_POST[ $page_title_field_name ] ) ){ + $new_page_title_value = filter_var($_POST[$page_title_field_name], FILTER_SANITIZE_STRING); + } else { + $title_error = true; + } + + if( isset( $_POST[ $page_id_field_name ] ) && !empty( $_POST[ $page_id_field_name ] ) && is_numeric( $_POST[ $page_id_field_name ] ) ){ + $new_page_id_value = filter_var( $_POST[ $page_id_field_name ], FILTER_SANITIZE_STRING ); + } else { + $id_error = true; + } + + if( $current_page_title_value !== $new_page_title_value ){ + $args = array ( + 'ID' => $current_page_id_value, + 'post_title' => $new_page_title_value, + ); + wp_update_post( $args ); + } + + // ensure the new page id exists and the field is not empty + if($current_page_id_value !== $new_page_id_value && get_post_status( $new_page_id_value ) ){ + update_option( $page_option_slug, $new_page_id_value ); + } else { + + } + } + } } - + $this->updateRequiredPages(); - + // Required Pages $requiredPagesUpdateError = false; - if (isset($_REQUEST[GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_LIST_ID]) ){ - $membersListIdOption = $requiredPages['glm-member-db']['members_list']['']; - $newMembersListId = $_REQUEST[$membersListIdOption]; + if ( isset( $_REQUEST[ GLM_MEMBERS_PLUGIN_OPTION_MEMBERS_LIST_ID ] ) ){ + $membersListIdOption = $requiredPages[ 'glm-member-db' ][ 'members_list' ]['']; + $newMembersListId = $_REQUEST[ $membersListIdOption ]; + } else { + } + echo $_REQUEST[ 'glm_members_database_option_member-detail' ]; + echo $newMembersListId; $results = $this->wpdb->get_results( "SELECT ID FROM ".$this->wpdb->posts." WHERE ID = ".$newMembersListId); - if (get_option($membersListIdOption) == $newMembersListId) { + if ( get_option( $membersListIdOption) == $newMembersListId ) { $requiredPagesUpdateError = false; - } else if (is_numeric($newMembersListId)) { - if ($results) { + } else if ( is_numeric( $newMembersListId ) ) { + if ( $results ) { $requiredPagesUpdateError = false; } else { $requiredPagesUpdateError .= "\n Page ID $newMembersListId does not exist. "; @@ -214,7 +220,7 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral // Update all general setttings $generalSettings = $this->updateEntry(1); - if ($generalSettings['status']) { + if ( $generalSettings[ 'status' ]) { $settingsUpdated = true; } else { $settingsUpdateError = true; @@ -226,19 +232,18 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral default: // Try to get the first (should be only) entry for general settings. - $generalSettings = $this->editEntry($id); + $generalSettings = $this->editEntry( $id ); if ($generalSettings === false) { - if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) { + if ( GLM_MEMBERS_PLUGIN_ADMIN_DEBUG ) { glmMembersAdmin::addNotice("  /modesl/admin/settings/index.php: Unable to load General Settings.", 'Alert'); } - } break; } - if($settingsUpdateError){ + if( $settingsUpdateError ){ $settingsUpdated = false; } // Compile template data @@ -249,8 +254,8 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral 'settingsUpdated' => $settingsUpdated, 'settingsUpdateError' => $settingsUpdateError, 'requiredPages' => $this->requiredPages, - 'idError' => $idError, - 'titleError' => $titleError, + 'id_error' => $id_error, + 'title_error' => $title_error, 'requiredPagesUpdateError' => $requiredPagesUpdateError ); @@ -262,9 +267,7 @@ class GlmMembersAdmin_management_index extends GlmDataSettingsGeneral 'view' => 'admin/management/index.html', 'data' => $templateData ); - } - } ?> \ No newline at end of file diff --git a/views/admin/management/index.html b/views/admin/management/index.html index 8edcb0cb..cd6ef0ae 100644 --- a/views/admin/management/index.html +++ b/views/admin/management/index.html @@ -49,10 +49,11 @@ - {if $idError}Page ID should be numerical and should not be empty{/if} - {if $titleError}Page Title should not be blank{/if} - {foreach from=$requiredPages key=addon item=requiredPage} + {if $id_error}'Page ID' input should be numerical, not empty and the page must exist{/if} + {if $title_error}'Page Name' should not be blank{/if} + {foreach from=$requiredPages key=addon item=requiredPage name=count} + {foreach from=$requiredPage key=requiredPageName item=requiredPageData} @@ -61,13 +62,13 @@ @@ -79,6 +80,7 @@

Plugin: {$addon}

{$requiredPageName}
Page Name - +
Page ID - +
+ {/foreach} {/foreach} -- 2.17.1