working on new shortcode builder compatible with both wp < 5 and wp5+
authorAnthony Talarico <talarico@gaslightmedia.com>
Fri, 1 Feb 2019 02:03:43 +0000 (21:03 -0500)
committerAnthony Talarico <talarico@gaslightmedia.com>
Fri, 1 Feb 2019 02:03:43 +0000 (21:03 -0500)
css/admin.css
js/shortcodeBuilder.js
views/admin/pages/shortcode.html

index 70c2c83..920afcf 100755 (executable)
@@ -417,7 +417,10 @@ td.glm-nowrap {
     color: #000;
     cursor: pointer;
 }
-
+#shortcode-preview{
+    border: 1px solid lightgrey;
+    height: 30px;
+}
 /* Map Edit */
 .glm-map-edit {
     width:90%;
index fbd32b0..26990dc 100644 (file)
  * need to create a function for setting the editor content because it is duplicated a few times
  */
 
-jQuery(document).ready(function ($) {
-
-    'use strict';
-
-    var shortcodeDropdown, shortcodeCategory, blankStart, memberView, amenityGroups, listBox, detailBox, target, boxTarget, shortcodeString,
-    editor_shortcodes, category_id, groups_id, shortcodeValues = {}, editor_content, debug = false;
-    debug = true;
-    
-
-    $("#showDetail").hide();
-    $("#categoryBox").hide();
-    $("#showCategory").hide();
-    $("#detailBtn").hide();
-    $("[id$=-scDropdown]").hide();
-    $("#packageListAttr").hide();
-    $('#activeCategories').hide();
-    $('#activeGroups').hide();
-    $('#activeRegions').hide();
-    $('#glmRemoveShortCode').hide();
-
-/*
- * Change Main Shortcode
- */
-   // fire events and reset settings when switching between shortcodes
-    $("[id$=shortcodeDropdown]").on("change", function () {
-
-        // reset the dropdowns and checkbox if when switching shortcodes
-        document.getElementById('category-scDropdown').options[0].selected = 'selected';
-        if($('#blank-start-scDropdown').length)
-            document.getElementById('blank-start-scDropdown').options[0].selected = 'selected';
-        if($('#id-scDropdown').length)
-            document.getElementById('id-scDropdown').options[0].selected = 'selected';
-
-        // delete the object properties to reset the object
-        shortcodeString = "";
-
-        for (var prop in shortcodeValues){
-            delete shortcodeValues[prop];
-        }
-
-        // get the shortcode option name and hide / show necessary elements
-        shortcodeDropdown = $(".shortcodeDropdown option:selected").val();
-
-        // many of these are not necessary as much of the shortcode has been stripped
-        if(shortcodeDropdown === "glm-members-list"){
-            $("#showCategory").show();
-            $("#detailBtn").hide();
-            $("#blank-start-scDropdown").show();
-            $("#id-scDropdown").hide();
-            $("#view-scDropdown").show();
-            $("#map-opened-scDropdown").show();
-            $("[id^='packageList']").hide();
-            $("#category-scDropdown").show();
-            $(".scCategories").show();
-            $("#amenitygroup-scDropdown").show();
-            $("#region-search-scDropdown").show();
-            $('#activeCategories').show();
-            $('#activeGroups').show();
-            $('#activeRegions').show();
-        }
-        if(shortcodeDropdown === "glm-members-packaging-list"){
-            $("#blank-start-scDropdown").hide();
-            $("#showCategory").hide();
-            $("#category-scDropdown").hide();
-            $("#detailBtn").hide();
-            $("#id-scDropdown").hide();
-            $("#packageListAttr").children().show();
-            $("[id^='packageList']").show();
-            $("#view-scDropdown").hide();
-            $(".scCategories").hide();
-            $("#amenitygroup-scDropdown").hide();
-            $('#activeCategories').hide();
-            $('#activeGroups').hide();
-        }
-    });
-
-     // shortcode attribute name from dropdowns containing '-scDropdown' in their ID
-     // Then append the values to the shortcode object
-     $("[id$=-scDropdown]").on("change", function () {
-         target = $(this).attr("id").slice(0, -11);
-         var targetVal = $("#" + target + "-scDropdown option:selected").val();
-         if ( target === 'amenitygroup' ) {
-            shortcodeValues['amenity-groups'] = targetVal;
-         } else {
-            shortcodeValues[target] = targetVal;
-         }
-    });
-    // get shortcodes between square brackets
-    var regExp = /\[([^)]+)\]/;
-
-    // function used to get everything out of the visual and text editors
-    function get_tinymce_content(){
-        if (jQuery("#wp-content-wrap").hasClass("tmce-active")){
-
-            tinyMCE.triggerSave();
-
-            if(regExp.exec($('#content').val())){
-                editor_content = regExp.exec($('#content').val());
-                return editor_content[0];
-            } else {
-                return;
-            }
-        } else {
-            // get the shortcode from the editor with [ ] as the delimiter
-                editor_content = regExp.exec($("#content").val());
-            if(regExp.exec($("#content").val())){
-                return editor_content[0];
-            }
-        }
-    }
-
-    // returned shortcode string after the editor content is filtered by the regex
-    editor_shortcodes = get_tinymce_content();
-
-    if(editor_shortcodes){
-        // get the number of instances of shortcodes with the category option
-        var number_of_categories = (editor_shortcodes.match(/(\[glm-members-list .*?])/) || []).length;
-        if ( number_of_categories ) {
-            $('#glmRemoveShortCode').show();
-            $('#generate').hide();
-        }
-    } else {
-        $('#glmRemoveShortCode').hide();
-        $('#generate').show();
-    }
-    var regions_id, regions_id_string, regions_new_ids = new Array(), regions_empty_space, regions_missing;
-    if ( editor_shortcodes) {
-        if ( editor_shortcodes.match( /glm-members-list .*amenity-groups="(.*?)"/ ) !== null ) {
-            amenityGroups = editor_shortcodes.match( /glm-members-list .*amenity-groups="(.*?)"/ )[1];
-            groups_id = amenityGroups.split(',');
-        } else if ( editor_shortcodes.match( /glm-members-list amenity-groups=""/ ) !== null ) {
-            groups_id = editor_shortcodes.match( /glm-members-list amenity-groups=""/ )[1];
-        }
-        if ( editor_shortcodes.match( /glm-members-list .* blank-start="(.*?)"/ ) !== null ) {
-            blankStart = editor_shortcodes.match(/glm-members-list .* blank-start="(.*?)"/)[1];
-        }
-        if ( editor_shortcodes.match( /glm-members-list .* view="(.*?)"/ ) !== null ) {
-            memberView = editor_shortcodes.match(/glm-members-list .* view="(.*?)"/)[1];
-        }
-        if(editor_shortcodes.match(/glm-members-list .*category="(.*?)"/) !== null){
-            category_id = editor_shortcodes.match(/glm-members-list .*category="(.*?)"/)[1];
-            category_id = category_id.split(',');
-        } else if (editor_shortcodes.match(/glm-members-list .*category=""/) !== null){
-            category_id = editor_shortcodes.match(/glm-members-list .*category="(.*?)"/)[1];
-        }
-        if(editor_shortcodes.match(/glm-members-list .*region-search="(.*?)"/) !== null){
-            regions_id = editor_shortcodes.match(/glm-members-list .*region-search="(.*?)"/)[1];
-            regions_id= regions_id.split(',');
-        } else if (editor_shortcodes.match(/glm-members-list .*region-search=""/) !== null){
-            regions_id = editor_shortcodes.match(/glm-members-list .*region-search=""/)[1];
-        }
-        if ( number_of_categories ) {
-            $('#shortcodeDropdown').val( 'glm-members-list' );
-        }
-    }
-
-    // find the category names from the category select
-    var category_names_ids = new Array();
-    var categoryNames = $("#category-scDropdown>option").map(function() {
-        var index = $.inArray($(this).val(), category_id);
-        if(index !== -1 && index !== ""){
-            category_names_ids.push([$(this).text(), $(this).val()]);
-            return $(this).text();
-        }
-    }).get();
-
-    // add the category names to #activeCategories
-    $.each( category_names_ids, function (index, obj) {
-        $('#activeCategories').append('<div data-id="' + obj[1]
-           + '" class="glm-dynSelect-item glm-members-categories">'
-           + obj[0] + " (ID: " + obj[1] + ')' + '<span class="glm-dynSelect-delete catDelete">X</span>'
-           + '<input type="hidden" name="category[' + obj[0] + ']" value="' + obj[0] + '"></div>');
-    });
-
-    // find the group names from the group select
-    var group_names_ids = new Array();
-    var groupNames = $("#amenitygroup-scDropdown>option").map(function() {
-        var index = $.inArray($(this).val(), groups_id);
-        if(index !== -1 && index !== ""){
-            group_names_ids.push([$(this).text(), $(this).val()]);
-            return $(this).text();
-        }
-    }).get();
-
-    // add the group names to #activeGroups
-    $.each( group_names_ids, function (index, obj) {
-        $('#activeGroups').append('<div data-id="' + obj[1]
-           + '" class="glm-group-dynSelect-item glm-members-groups">'
-           + obj[0] + " (ID: " + obj[1] + ')' + '<span class="glm-group-dynSelect-delete groupDelete">X</span>'
-           + '<input type="hidden" name="group[' + obj[0] + ']" value="' + obj[0] + '"></div>');
-    });
-    // Check if the group has already been added
-    var region_names_ids = new Array();
-    var regionNames = $("#region-search-scDropdown>option").map(function() {
-        var index = $.inArray($(this).val(), regions_id);
-        if(index !== -1 && index !== ""){
-            region_names_ids.push([$(this).text(), $(this).val()]);
-            return $(this).text();
-        }
-    }).get();
-
-     // add the group names to #activeGroups
-    $.each( region_names_ids, function (index, obj) {
-        $('#activeRegions').append('<div data-id="' + obj[1]
-           + '" class="glm-regions-dynSelect-item glm-members-regions">'
-           + obj[0] + " (ID: " + obj[1] + ')' + '<span class="glm-dynSelect-delete regionDelete">X</span>'
-           + '<input type="hidden" name="group[' + obj[0] + ']" value="' + obj[0] + '"></div>');
-    });
-    /////////////////////////////////////////////////////////////////////////////////////////////
-   /*
-    * Category Selection  these functions fire whenever the 'select category' dropdown is changed
-    */
-    //////////////////////////////////////////////////////////////////////////////////////////////
-    var content = $("#content"), editor_category_index, ids, id_string, new_ids = new Array(), empty_space, category_missing;
-
-    $('#category-scDropdown').change( function() {
-       editor_shortcodes = get_tinymce_content();
-       
-           if ( editor_shortcodes ) {
-            if ( editor_shortcodes.match( /glm-members-list category="(.*?)"/ ) !== null || editor_shortcodes.match( /glm-members-list .* category="(.*?)"/ )  ){
-                category_missing = false;
-                ids = editor_shortcodes.match( /category="(.*?)"/ )[1];
-
-                if ( ids !== "" ) {
-                    ids = ids.split(',');
-
-                    ids = ids.join(',');
-                   empty_space = false;
-                } else {
-
-                    ids = 'category=""';
-
-                    // this determines if the groups option is blank "" to determine if the jquery replace method works properly
-                    empty_space = true;
-                }
-            } else {
-                category_missing = true;
-                empty_space = false;
-            }
-        }
-
-       // Get the ID, name, and parent of the category
-       var catValue  = $('#category-scDropdown').val();
-       var catName   = $('#category-scDropdown').find(':selected').text();
-       var catParent = $('#category-scDropdown').find(':selected').attr('data-parent');
-
-       // Check if the category has already been added
-       var found = false;
-       $(".glm-members-catgegory").each( function() {
-           var id = $(this).attr('data-id');
-           if (id === catValue) {
-               found = true;
-           }
-       });
-
-       // If not found, Add the category
-       if (!found) {
-           $('#activeCategories').append('<div data-id="' + catValue
-               + '" class="glm-dynSelect-item glm-members-catgegory">'
-               + catName.trim() + ' (ID: ' + catValue + ')' + '<span class="glm-dynSelect-delete catDelete">X</span>'
-               + '<input type="hidden" name="category[' + catValue + ']" value="' + catValue + '"></div>');
-       }
-
-        // reset the id string after each set of iterations
-       id_string = '';
-
-       $.each($(".glm-dynSelect-item"), function () {
-           if($.inArray($(this).data("id"), new_ids) === -1){
-               new_ids.push($(this).data("id"));
-           }
-       });
-
-        // if more than one category id in the array, join together with ',' otherwise set the id string to a single value
-       if ( new_ids.length > 1 ){
-           id_string = new_ids.join(',');
-       } else if ( new_ids.length === 1 ) {
-           id_string = new_ids[0];
-       }
-
-        if ( $("#content").css("display") !== "none" ) {
-            editor_content = content.val();
-            if ( empty_space ) {
-                editor_content = editor_content.replace( ids, 'category="' + id_string + '"' );
-                content.val( editor_content );
-            } else if ( category_missing ) {
-              var shortcodeReg = /(\[glm-members-list [^\]]*)(\])/;
-               editor_content = editor_content.replace( shortcodeReg, '$1 category="' + id_string + '"$2' );
-               content.val( editor_content );
-            } else {
-               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 + '"' );
-                tinyMCE.activeEditor.setContent(editor_content);
-            } else if ( category_missing ) {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                var shortcodeReg = /(\[glm-members-list [^\]]*)(\])/;
-                var catMatch = editor_content.match( shortcodeReg );
-                editor_content = editor_content.replace( shortcodeReg, '$1 category="' + id_string + '"$2' );
-                tinyMCE.activeEditor.setContent(editor_content);
-            } else {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                editor_content = editor_content.replace('category="' + ids, 'category="' + id_string);
-                tinyMCE.activeEditor.setContent(editor_content);
-            }
-        }
-
-       // Reset picklist
-       $('#category-scDropdown').val('Select Category');
-    });
-
-    var group_ids, group_id_string, group_new_ids = new Array(), group_empty_space, group_missing;
-
-    // Amenity Groups
-    // This fires when the groups select is changed
-    $('#amenitygroup-scDropdown').change(function(){
-       editor_shortcodes = get_tinymce_content();
-       if ( editor_shortcodes ) {
-            if ( editor_shortcodes.match( /glm-members-list amenity-groups="(.*?)"/ ) !== null || editor_shortcodes.match( /glm-members-list .* amenity-groups="(.*?)"/ )  ){
-                group_missing = false;
-                groups_id = editor_shortcodes.match( /amenity-groups="(.*?)"/ )[1];
-
-                if ( groups_id !== "" ) {
-                    groups_id = groups_id.split(',');
-
-                    group_ids = groups_id.join(',');
-                    group_empty_space = false;
-                } else {
-
-                    group_ids = 'amenity-groups=""';
-
-                    // this determines if the groups option is blank "" to determine if the jquery replace method works properly
-                    group_empty_space = true;
-                }
-            } else {
-                group_missing = true;
-                group_empty_space = false;
-            }
-        }
-
-        // Get the ID, name
-        var groupValue  = $('#amenitygroup-scDropdown').val();
-        var groupName   = $('#amenitygroup-scDropdown').find(':selected').text();
-
-        // Check if the group has already been added
-        var found = false;
-        $(".glm-members-groups").each( function() {
-            var id = $(this).attr('data-id');
-            if (id === groupValue) {
-                found = true;
-            }
-        });
-
-            // If not found, Add the group
-        if (!found) {
-            $('#activeGroups').append('<div data-id="' + groupValue
-                + '" class="glm-group-dynSelect-item glm-members-groups">'
-                + groupName.trim() + ' (ID: ' + groupValue + ')' + '<span class="glm-group-dynSelect-delete groupDelete">X</span>'
-                + '<input type="hidden" name="group[' + groupValue + ']" value="' + groupValue + '"></div>');
-        }
-
-        // reset the id string after each set of iterations
-        group_id_string = '';
-
-        $.each($(".glm-group-dynSelect-item"), function () {
-            if($.inArray($(this).data("id"), group_new_ids) === -1){
-                group_new_ids.push($(this).data("id"));
-            }
-        });
-
-        // if more than one category id in the array, join together with ',' otherwise set the id string to a single value
-       if ( group_new_ids.length > 1 ){
-           group_id_string = group_new_ids.join(',');
-       } else if ( group_new_ids.length === 1 ) {
-           group_id_string = group_new_ids[0];
-       }
-
-        // replace the current content in either the visual or text editor and replace it with a filtered version of the groups
-        if ( $("#content").css("display") !== "none" ) {
-            editor_content = content.val();
-            if ( group_empty_space ) {
-                editor_content = editor_content.replace( group_ids, 'amenity-groups="' + group_id_string + '"' );
-                content.val( editor_content );
-            } else if ( group_missing ) {
-                var shortcodeReg = /(\[glm-members-list [^\]]*)(\])/;
-                editor_content = editor_content.replace( shortcodeReg, '$1 amenity-groups="' + group_id_string + '"$2' );
-                content.val( editor_content );
-            } else {
-               editor_content = editor_content.replace( 'amenity-groups="' + group_ids, 'amenity-groups="' + group_id_string );
-               content.val( editor_content );
-            }
-        } else if ( tinyMCE.activeEditor !== null ) {
-            if ( group_empty_space ) {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                editor_content = editor_content.replace(group_ids, 'amenity-groups="' + group_id_string + '"' );
-                tinyMCE.activeEditor.setContent(editor_content);
-            } else if ( group_missing ) {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                var shortcodeReg = /(\[glm-members-list [^\]]*)(\])/;
-                var groupMatch = editor_content.match( shortcodeReg );
-                editor_content = editor_content.replace( shortcodeReg, '$1 amenity-groups="' + group_id_string + '"$2' );
-                tinyMCE.activeEditor.setContent(editor_content);
-            } else {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                editor_content = editor_content.replace('amenity-groups="' + group_ids, 'amenity-groups="' + group_id_string);
-                tinyMCE.activeEditor.setContent(editor_content);
-            }
-        }
-
-       // Reset picklist
-       $('#amenitygroup-scDropdown').val('Select Groups');
-    });
-    
+jQuery(function ($) {
+    var shortcode_start = "[glm-members-list ";
     
-    $('#region-search-scDropdown').change(function(){
-       editor_shortcodes = get_tinymce_content();
-       if ( editor_shortcodes ) {
-            if ( editor_shortcodes.match( /glm-members-list region-search="(.*?)"/ ) !== null || editor_shortcodes.match( /glm-members-list .* region-search="(.*?)"/ ) !== null ){
-                regions_missing = false;
-                regions_id = editor_shortcodes.match( /region-search="(.*?)"/ )[1];
-
-                if ( regions_id !== "" ) {
-                    regions_id = regions_id.split(',');
-
-                    regions_id = regions_id.join(',');
-                    regions_empty_space = false;
-                } else {
-
-                    regions_id = 'region-search=""';
-
-                    // this determines if the groups option is blank "" to determine if the jquery replace method works properly
-                    regions_empty_space = true;
-                }
-            } else {
-                regions_missing = true;
-                regions_empty_space = false;
-            }
-        }
-
-        // Get the ID, name
-        var regionsValue  = $('#region-search-scDropdown').val();
-        var regionsName   = $('#region-search-scDropdown').find(':selected').text();
 
-        // Check if the group has already been added
-        var found = false;
-        $(".glm-members-regions").each( function() {
-            var id = $(this).attr('data-id');
-            if (id === regionsValue) {
-                found = true;
-            }
-        });
-
-            // If not found, Add the group
-        if (!found) {
-            $('#activeRegions').append('<div data-id="' + regionsValue
-                + '" class="glm-regions-dynSelect-item glm-members-regions">'
-                + regionsName.trim() + ' (ID: ' + regionsValue + ')' + '<span class="glm-dynSelect-delete regionDelete">X</span>'
-                + '<input type="hidden" name="group[' + regionsValue + ']" value="' + regionsValue + '"></div>');
-        }
-
-        // reset the id string after each set of iterations
-        regions_id_string = '';
-
-        $.each($(".glm-regions-dynSelect-item"), function () {
-            if($.inArray($(this).data("id"), regions_new_ids) === -1){
-                regions_new_ids.push($(this).data("id"));
-            }
-        });
-
-        // if more than one region id in the array, join together with ',' otherwise set the id string to a single value
-       if ( regions_new_ids.length > 1 ){
-           regions_id_string = regions_new_ids.join(',');
-       } else if ( regions_new_ids.length === 1 ) {
-           regions_id_string = regions_new_ids[0];
-       }
-
-        // replace the current content in either the visual or text editor and replace it with a filtered version of the regions
-        if ( $("#content").css("display") !== "none" ) {
-            editor_content = content.val();
-            if ( regions_empty_space ) {
-                editor_content = editor_content.replace( regions_id, 'region-search="' + regions_id_string + '"' );
-                content.val( editor_content );
-            } else if ( regions_missing ) {
-                var shortcodeReg = /(\[glm-members-list [^\]]*)(\])/;
-                editor_content = editor_content.replace( shortcodeReg, '$1 region-search="' + regions_id_string + '"$2' );
-                content.val( editor_content );
-            } else {
-               editor_content = editor_content.replace( 'region-search="' + regions_id, 'region-search="' + regions_id_string );
-               content.val( editor_content );
-            }
-        } else if ( tinyMCE.activeEditor !== null ) {
-            if ( regions_empty_space ) {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                editor_content = editor_content.replace(regions_id, 'region-search="' + regions_id_string + '"' );
-                tinyMCE.activeEditor.setContent(editor_content);
-            } else if ( regions_missing ) {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                var shortcodeReg = /(\[glm-members-list [^\]]*)(\])/;
-                var regionsMatch = editor_content.match( shortcodeReg );
-                editor_content = editor_content.replace( shortcodeReg, '$1 region-search="' + regions_id_string + '"$2' );
-                tinyMCE.activeEditor.setContent(editor_content);
-            } else {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                editor_content = editor_content.replace('region-search="' + regions_id, 'region-search="' + regions_id_string);
-                tinyMCE.activeEditor.setContent(editor_content);
-            }
-        }
-
-       // Reset picklist
-       $('#regions-scDropdown').val('Select Regions');
-    });
-
-    // Blank Start change event
-    // These fire when the blank-start select is changed
-    var blank_start_id, blank_start_missing, blank_start_empty_space;
-    $('#blank-start-scDropdown').change(function(){
-         editor_shortcodes = get_tinymce_content();
-       if ( editor_shortcodes ) {
-            if ( editor_shortcodes.match( /glm-members-list blank-start="(.*?)"/ ) !== null || editor_shortcodes.match( /glm-members-list .* blank-start="(.*?)"/ ) !== null ){
-                blank_start_missing = false;
-                blank_start_id = editor_shortcodes.match( /blank-start="(.*?)"/ )[1];
-
-                if ( blank_start_id !== "" ) {
-                    blank_start_id = blank_start_id.split(',');
-
-                    blank_start_id = blank_start_id.join(',');
-                    blank_start_empty_space = false;
-                } else {
-
-                    blank_start_id = 'blank-start=""';
-
-                    // this determines if the groups option is blank "" to determine if the jquery replace method works properly
-                    blank_start_empty_space = true;
-                }
-            } else {
-                blank_start_missing = true;
-                blank_start_empty_space = false;
-            }
-        }
-        if ( $("#content").css("display") !== "none" ) {
-            editor_content = content.val();
-            if ( blank_start_empty_space ) {
-      
-                editor_content = editor_content.replace( blank_start_id, 'blank-start="' + $(this).val()  + '"' );
-                content.val( editor_content );
-            } else if ( blank_start_missing ) {
-         
-                var shortcodeReg = /(\[glm-members-list [^\]]*)(\])/;
-                var blankMatch = editor_content.match( shortcodeReg );
-              
-                editor_content = editor_content.replace( shortcodeReg, '$1 blank-start="' + $(this).val()  + '"$2' );
-                content.val( editor_content );
-             
-            } else {
-              
-               editor_content = editor_content.replace( 'blank-start="' + blank_start_id, 'blank-start="' + $(this).val() );
-               content.val( editor_content );
-            }
-        } else if ( tinyMCE.activeEditor !== null ) {
-            if ( blank_start_empty_space ) {
-             
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                editor_content = editor_content.replace(blank_start_id, 'blank-start="' + $(this).val()  + '"' );
-                tinyMCE.activeEditor.setContent(editor_content);
-            } else if ( blank_start_missing ) {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                var shortcodeReg = /(\[glm-members-list [^\]]*)(\])/;
-             
-                var blankMatch = editor_content.match( shortcodeReg );
-                editor_content = editor_content.replace( shortcodeReg, '$1 blank-start="' + $(this).val()  + '"$2' );
-                tinyMCE.activeEditor.setContent(editor_content);
-             
-            } else {
-             
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                editor_content = editor_content.replace('blank-start="' + blank_start_id, 'blank-start="' + $(this).val() );
-                tinyMCE.activeEditor.setContent(editor_content);
-            }
-        }
-    });
-
-    // View dropdown
-    // These events fire when the View select is changed
-    var view_id, view_missing, view_empty_space;
-    $('#view-scDropdown').change(function(){
-        editor_shortcodes = get_tinymce_content();
-       if ( editor_shortcodes ) {
-            if ( editor_shortcodes.match( /glm-members-list view="(.*?)"/ ) !== null || editor_shortcodes.match( /glm-members-list .* view="(.*?)"/ ) !== null ){
-                view_missing = false;
-                view_id = editor_shortcodes.match( /view="(.*?)"/ )[1];
-
-                if ( view_id !== "" ) {
-                    view_id = view_id.split(',');
-
-                    view_id = view_id.join(',');
-                    view_empty_space = false;
-                } else {
-
-                    view_id = 'view=""';
-
-                    // this determines if the groups option is blank "" to determine if the jquery replace method works properly
-                    view_empty_space = true;
-                }
-            } else {
-                view_missing = true;
-                view_empty_space = false;
-            }
-        }
-        if ( $("#content").css("display") !== "none" ) {
-            editor_content = content.val();
-            if ( view_empty_space ) {
-                editor_content = editor_content.replace( view_id, 'view="' + $(this).val()  + '"' );
-                content.val( editor_content );
-            } else if ( view_missing ) {
-                var shortcodeReg = /(\[glm-members-list [^\]]*)(\])/;
-                editor_content = editor_content.replace( shortcodeReg, '$1 view="' + $(this).val()  + '"$2' );
-                content.val( editor_content );
-            } else {
-               editor_content = editor_content.replace( 'view="' + view_id, 'view="' + $(this).val() );
-               content.val( editor_content );
-            }
-        } else if ( tinyMCE.activeEditor !== null ) {
-            if ( view_empty_space ) {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                editor_content = editor_content.replace(view_id, 'view="' + $(this).val()  + '"' );
-                tinyMCE.activeEditor.setContent(editor_content);
-            } else if ( view_missing ) {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                var shortcodeReg = /(\[glm-members-list [^\]]*)(\])/;
-                var viewMatch = editor_content.match( shortcodeReg );
-               
-                editor_content = editor_content.replace( shortcodeReg, '$1 view="' + $(this).val()  + '"$2' );
-                tinyMCE.activeEditor.setContent( editor_content );
-            } else {
-                editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-                editor_content = editor_content.replace('view="' + view_id, 'view="' + $(this).val() );
-                tinyMCE.activeEditor.setContent(editor_content);
-            }
-        }
-    });
-
-    function insert_tag( text ) {
-        if ( tinyMCE && tinyMCE.activeEditor ) {
-            tinyMCE.activeEditor.selection.setContent(text);
-        }
-        return false;
-    }
-
-    // generate the shortcode into a string and insert into the content upon clicking
-    var replace_me, replace_with;
-    $("[id$=generate]").on("click", function () {
-        // enforce the selection of a shortcode
-        if ( shortcodeDropdown ) {
-            // set up properties for shortcode lists
-            // start the shortcode string that will be added to the tinymce editor
-            shortcodeString = '[' + shortcodeDropdown;
-
-            // populate the shortcode object with all of the shortcode attributes and their values
-            for (var key in shortcodeValues) {
-                if (shortcodeValues.hasOwnProperty(key)) {
-                    if(key !== "undefined"){
-                        shortcodeString += " " + key + '="' + shortcodeValues[key] +'"';
-                    }
-                }
-            }
-            
-            // add the list of category ids instead of the single value originally inserted
-            if ( shortcodeString.match( /glm-members-list category="(.*?)"/ ) !== null || shortcodeString.match( /glm-members-list .* category="(.*?)"/ )  ) {
-                if(shortcodeString.match( /glm-members-list category="(.*?)"/ ) !== null ){
-                    category_id = shortcodeString.match( /glm-members-list category="(.*?)"/ )[1];
-                } else if( shortcodeString.match( /glm-members-list .* category="(.*?)"/ ) !== null ){
-                    category_id = shortcodeString.match( /glm-members-list .* category="(.*?)"/ )[1];
-                }
-                category_id = category_id.split(',');
-                ids = category_id.join(',');
-                replace_me = 'category="'+ids+'"';
-                replace_with = 'category="'+id_string+'"';
-                shortcodeString = shortcodeString.replace(replace_me, replace_with);
-            } 
-            if( shortcodeString.match( /glm-members-list amenity-groups="(.*?)"/ ) !== null || shortcodeString.match( /glm-members-list .* amenity-groups="(.*?)"/ ) ){
-                if( shortcodeString.match( /glm-members-list amenity-groups="(.*?)"/ ) !== null ){
-                    group_ids = shortcodeString.match( /glm-members-list amenity-groups="(.*?)"/ )[1];  
-                } else if( shortcodeString.match( /glm-members-list .* amenity-groups="(.*?)"/ ) !== null){
-                    group_ids = shortcodeString.match( /glm-members-list .* amenity-groups="(.*?)"/ )[1];  
-                }
-                group_ids = group_ids.split(',');
-                group_ids = group_ids.join(',');
-                replace_me = 'amenity-groups="'+group_ids+'"';
-                replace_with = 'amenity-groups="'+group_id_string+'"';
-                shortcodeString = shortcodeString.replace(replace_me, replace_with);
-            } 
-            if( shortcodeString.match( /glm-members-list region-search="(.*?)"/ ) !== null || shortcodeString.match( /glm-members-list .* region-search="(.*?)"/ ) !== null ){
-                if( shortcodeString.match( /glm-members-list region-search="(.*?)"/ ) !== null ){
-                    regions_id = shortcodeString.match( /glm-members-list region-search="(.*?)"/ )[1];  
-                }else if( shortcodeString.match( /glm-members-list .* region-search="(.*?)"/ ) !== null ){
-                    regions_id = shortcodeString.match( /glm-members-list .* region-search="(.*?)"/ )[1];  
-                }
-                regions_id = regions_id.split(',');
-                regions_id = regions_id.join(',');
-                replace_me = 'region-search="'+regions_id+'"';
-                replace_with = 'region-search="'+regions_id_string+'"';
-                shortcodeString = shortcodeString.replace(replace_me, replace_with);
-            }
-
-            shortcodeString += ']';
-
-            // insert shortcode at current cursor position
-            if ( $("#content").css("display") !== "none" ) {
-                var cursorPos = $('#content').prop( 'selectionStart' );
-                var v = $('#content').val();
-                var textBefore = v.substring(0,  cursorPos );
-                var textAfter  = v.substring( cursorPos, v.length );
-                $('#content').val( textBefore + shortcodeString + textAfter );
-
-            } else if( $("#content").css("display") === "none" ) {
-
-                insert_tag( shortcodeString );
-            }
-        } else {
-            alert("Please Select a Shortcode");
-        }
-        $('#glmRemoveShortCode').show();
-        $('#generate').hide();
-    });
-
-    /**
-     * Deletes the shortcode.
-     */
-    $('#glmRemoveShortCode').on('click', function(){
+    // build substrings that will be constructed with the main shortcode text
+    $("#shortcode-categories").on("change", function(){
+        var categoryID      = $(this).val();
+        var categoryName    = $(this).find("option:selected").text();
         
-        editor_shortcodes = get_tinymce_content();
-        
-        var member_list_shortcodes    = (editor_shortcodes.match(/glm-members-list/g) || []).length;
-        var member_package_shortcodes = (editor_shortcodes.match(/glm-members-packaging-list/g) || []).length;
-        if ( member_list_shortcodes ) {
-            // find the short code and remove it!
-           var shortcodeReg = /(\[glm-members-list .*?])/;
-           if ( $("#content").css("display") !== "none" ) {
-               editor_content = content.val();
-               editor_content = editor_content.replace( shortcodeReg, '' );
-               content.val( editor_content );
-           } else if ( tinyMCE.activeEditor !== null ) {
-               editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-               editor_content = editor_content.replace( shortcodeReg, '' );
-               tinyMCE.activeEditor.setContent(editor_content);
-           }
-          
-            var shortcodeReg = /(\[glm-members-list .*?])/;
-    
-            $('.glm-dynSelect-item').remove();
-            $('.glm-group-dynSelect-item').remove();
-            $('.glm-regions-dynSelect-item').remove();
-            $("#showDetail").hide();
-            $("#categoryBox").hide();
-            $("#showCategory").hide();
-            $("#detailBtn").hide();
-            $("[id$=-scDropdown]").hide();
-            $("#packageListAttr").hide();
-            $('#shortcodeDropdown').val('glm-members-list');
-            window.onload = document.getElementById('shortcodeDropdown').options[0].selected = 'selected';
-            reset_options();
-            $('#shortcodeDropdown').change();
-            $('#shortcodeDropdown').show();
-            $('#activeCategories').hide();
-            $('#activeGroups').hide();
-            $('#activeRegions').hide();
-            ids, groups_id, regions_id, id_string, group_id_string, regions_id_string = '';
-            group_new_ids.length = 0;
-            new_ids.length = 0;
-            regions_new_ids.length = 0;
-        } else if ( member_package_shortcodes ) {
-            // find the short code and remove it!
-            editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-            var shortcodeReg = /(\[glm-members-packaging-list .*?])/;
-            editor_content = editor_content.replace( shortcodeReg, '' );
-            tinyMCE.activeEditor.setContent(editor_content);
-            $("[id$=-scDropdown]").hide();
-        }
-        $('#glmRemoveShortCode').hide();
-        $('#generate').show();
-    });
-
-    // Action to de-select a category and dynamically adjust the shortcode categories in the editor
-    $('.catDelete').live('click', function() {
-       editor_shortcodes = get_tinymce_content();
-
-        if( (editor_shortcodes && editor_shortcodes.match(/glm-members-list category="(.*?)"/) !== null) || ( editor_shortcodes && editor_shortcodes.match(/glm-members-list .* category="(.*?)"/) !== null)){
-            if( editor_shortcodes.match(/glm-members-list category="(.*?)"/) ){
-                category_id = editor_shortcodes.match(/glm-members-list category="(.*?)"/)[1];
-            } else {
-                category_id = editor_shortcodes.match(/glm-members-list .* category="(.*?)"/)[1];
-            }
-      
-            category_id = category_id.split(',');
-            ids = category_id.join(',');
-        }
-
-       $(this).parent().remove();
-
-        // reset the array after each set of iterations
-       new_ids.length = 0;
-
-       $.each($(".glm-dynSelect-item"), function () {
-           if($.inArray($(this).data("id"), new_ids) === -1){
-               new_ids.push($(this).data("id"));
-           }
-       });
-
-       // create a string of id's from the array
-       id_string = new_ids.join(',');
-
-        // get and replace current editor content
-       if($("#content").css("display") !== "none"){
-
-           editor_content = content.val();
-           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('category="' + ids, 'category="' + id_string);
-           tinyMCE.activeEditor.setContent(editor_content);
-       }
+        console.log( categoryName );
     });
-    
-    $('.regionDelete').live('click', function() {
-       editor_shortcodes = get_tinymce_content();
-        if( (editor_shortcodes && editor_shortcodes.match(/glm-members-list region-search="(.*?)"/) !== null) || (editor_shortcodes && editor_shortcodes.match(/glm-members-list .* region-search="(.*?)"/) !== null) ){
-            if(editor_shortcodes.match(/glm-members-list region-search="(.*?)"/) ){
-                regions_id = editor_shortcodes.match(/glm-members-list region-search="(.*?)"/)[1];
-            } else {
-                regions_id = editor_shortcodes.match(/glm-members-list .* region-search="(.*?)"/)[1];
-            }
-            regions_id = regions_id.split(',');
-            regions_id = regions_id.join(',');
-       }
-
-       $(this).parent().remove();
-
-        // reset the array after each set of iterations
-       regions_new_ids.length = 0;
-
-       $.each($(".glm-regions-dynSelect-item"), function () {
-           if($.inArray($(this).data("id"), regions_new_ids) === -1){
-               regions_new_ids.push($(this).data("id"));
-           }
-       });
-
-       // create a string of id's from the array
-       regions_id_string = regions_new_ids.join(',');
-
-        // get and replace current editor content
-       if($("#content").css("display") !== "none"){
-
-           editor_content = content.val();
-           editor_content = editor_content.replace('region-search="' + regions_id, 'region-search="' + regions_id_string );
-           content.val(editor_content);
-
-       } else if(tinyMCE.activeEditor !== null){
-
-           editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-           editor_content = editor_content.replace('region-search="' + regions_id, 'region-search="' + regions_id_string);
-           tinyMCE.activeEditor.setContent(editor_content);
-       }
-    });
-
-    // group delete
-    $('.groupDelete').live('click', function(){
-       editor_shortcodes = get_tinymce_content();
-
-       if(editor_shortcodes && editor_shortcodes.match(/glm-members-list .* amenity-groups="(.*?)"/) !== null){
-            groups_id = editor_shortcodes.match(/glm-members-list .* amenity-groups="(.*?)"/)[1];
-            groups_id = groups_id.split(',');
-            group_ids = groups_id.join(',');
-       } else if(editor_shortcodes && editor_shortcodes.match(/glm-members-list amenity-groups="(.*?)"/) !== null){
-            groups_id = editor_shortcodes.match(/glm-members-list amenity-groups="(.*?)"/)[1];
-            groups_id = groups_id.split(',');
-            group_ids = groups_id.join(',');
-       }
-
-       $(this).parent().remove();
-
-        // reset the array after each set of iterations
-       group_new_ids.length = 0;
-
-       $.each($(".glm-group-dynSelect-item"), function () {
-           if($.inArray($(this).data("id"), group_new_ids) === -1){
-               group_new_ids.push($(this).data("id"));
-           }
-       });
-
-       // create a string of id's from the array
-       group_id_string = group_new_ids.join(',');
-
-        // get and replace current editor content
-       if($("#content").css("display") !== "none"){
-           editor_content = content.val();
-           editor_content = editor_content.replace('amenity-groups="' + group_ids, 'amenity-groups="' + group_id_string );
-           content.val(editor_content);
-       } else if(tinyMCE.activeEditor !== null){
-           editor_content = tinyMCE.get('content').getContent({format: 'raw'});
-           editor_content = editor_content.replace('amenity-groups="' + group_ids, 'amenity-groups="' + group_id_string);
-           tinyMCE.activeEditor.setContent(editor_content);
-       }
-
-    });
-
-    // reset dropdowns and checkboxes to default values on page reload
-    var scd     = document.getElementById('shortcodeDropdown');
-    var catscd  = document.getElementById('category-scDropdown');
-    var blank   = document.getElementById('blank-start-scDropdown');
-    var list    = document.getElementById('type-scList');
-    var members = document.getElementById('member-scDropdown');
-    var view    = document.getElementById('view-scDropdown');
-    var groups  = document.getElementById('amenitygroup-scDropdown');
-    var regions = document.getElementById('region-search-scDropdown');
-
-    if ( editor_shortcodes && number_of_categories) {
-        if ( number_of_categories ) {
-            $('#shortcodeDropdown').val('glm-members-list');
-            $('#shortcodeDropdown').change();
-        } else {
-            $('#shortcodeDropdown').val('glm-members-packaging-list');
-            $('#shortcodeDropdown').change();
-        }
-        $('#shortcodeDropdown').hide();
-        $('#generate').hide();
-    } else {
-        $('#shortcodeDropdown').val('glm-members-list');
-        $('#shortcodeDropdown').change();
-        $('#shortcodeDropdown').hide();
-    }
-    function reset_options(){
-        if ( scd && !editor_shortcodes && !number_of_categories) {
-            window.onload = document.getElementById('shortcodeDropdown').options[0].selected = 'selected';
-        }
-        if ( catscd ) {
-            window.onload = document.getElementById('category-scDropdown').options[0].selected = 'selected';
-        }
-        if ( blank ) {
-            if ( blankStart ) {
-                $('#blank-start-scDropdown').val( blankStart );
-            } else {
-                window.onload = document.getElementById('blank-start-scDropdown').options[0].selected = 'selected';
-            }
-        }
-        if ( list ) {
-            window.onload = document.getElementById('type-scList').options[0].selected = 'selected';
-        }
-        if ( members ) {
-            window.onload = document.getElementById('member-scDropdown').options[0].selected = 'selected';
-        }
-        if ( view ) {
-            if ( memberView ) {
-                $('#view-scDropdown').val( memberView );
-            } else {
-                window.onload = document.getElementById('view-scDropdown').options[0].selected = 'selected';
-            }
-        }
-        if ( groups ) {
-            window.onload = document.getElementById('amenitygroup-scDropdown').options[0].selected = 'selected';
-        }
-         if ( regions ) {
-            window.onload = document.getElementById('region-search-scDropdown').options[0].selected = 'selected';
-        }
-    }
-    reset_options();
 });
index 32ca357..cd14151 100644 (file)
@@ -1,39 +1,40 @@
 <div id="shortcode_container" class="{$shortcode_count}" style="overflow: auto">
+    <div id="shortcode-preview"></div>
     <div id="shortcodeBuilder">
-        <select id="shortcodeDropdown" class="shortcodeDropdown">
+        <!-- <select id="shortcodeDropdown" class="shortcodeDropdown">
             <option value=""> Select Shortcode </option>
             <option value = "glm-members-list">Display {$terms.term_member_plur_cap} List by Category</option>
-        </select>
-        <select id="category-scDropdown" name="category-scDropdown[]">
-            <option disabled> Select Category </option>
+        </select> -->
+        <select id="shortcode-categories">
+            <option disabled selected> Select Category </option>
             {foreach $categories as $key => $value}
                 <option value="{$key}">{$value.name}</option>
             {/foreach}
         </select>
-        <select id="blank-start-scDropdown">
-            <option disabled> Hide List Until Searched</option>
+        <select id="shortcode-blankstart">
+            <option disabled selected> Hide List initially</option>
             <option value="False"> No </option>
             <option value="True"> Yes </option>
         </select>
-        <select id="view-scDropdown">
-            <option disabled> View </option>
+        <select id="shortcode-views">
+            <option disabled selected> View </option>
             <option selected="selected" value="list"> List View </option>
             <option value="grid"> Grid View </option>
         </select>
-        <select id="amenitygroup-scDropdown" name="amenitygroup-scDropdown[]">
-            <option disabled> Select Groups </option>
+        <select id="shortcode-groups">
+            <option disabled selected> Select Groups </option>
             {foreach $amenGroups as $group}
                 <option value="{$group.id}">&nbsp{$group.name}</option>
             {/foreach}
         </select>
-        <select id="region-search-scDropdown" name="regions-scDropdown[]">
-            <option disabled> Select Region </option>
+        <select id="shortcode-regions">
+            <option disabled selected> Select Region </option>
             {foreach $regions as $region}
                 <option value="{$region.id}">&nbsp{$region.name}</option>
             {/foreach}
         </select>
-        <button id="generate" class="right button" type="button"> Insert Shortcode </button>
-        <button id="glmRemoveShortCode" class="right button" type="button"> Delete Shortcode </button>
+        <button id="copyToClipboard" class="right button" type="button"> Copy To Clipboard </button>
+
     </div>
     <div id="activeCategories" class="glm-dynSelect-box scCategories" style="height: auto; overflow: auto;"><div id="categoryTitle">Categories</div></div>
     <div id="activeGroups" class="glm-group-dynSelect-box scGroups" style="height: auto; overflow: auto;"><div id="groupsTitle">Amenity Groups</div></div>