Completed social media management fucntions
authorChuck Scott <cscott@gaslightmedia.com>
Mon, 16 May 2016 20:09:51 +0000 (16:09 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Mon, 16 May 2016 20:09:51 +0000 (16:09 -0400)
classes/data/dataSocialUrls.php
classes/data/dataSocials.php
models/admin/management/social.php
views/admin/management/social.html

index 3ccafe0..ead910d 100644 (file)
@@ -136,6 +136,14 @@ class GlmDataSocialUrls extends GlmDataAbstract
                 'use' => 'a'
             ),
 
+            // Social Media Type ID
+            'social' => array(
+                'field' => 'social',
+                'type' => 'integer',
+                'view_only' => true,
+                'use' => 'a'
+            ),
+
             // Reference Type - Insert new record
             'ref_type_insert' => array (
                 'field' => 'ref_type',
@@ -170,24 +178,43 @@ class GlmDataSocialUrls extends GlmDataAbstract
                 'use' => 'ilged'
             ),
 
-
             // The member's URL for a certain medium
             'url' => array (
                 'field' => 'url',
                 'type' => 'text',
-                'default' => true,
                 'use' => 'a'
             ),
-            // The social medium
-            'social' => array (
+
+            // The social media active
+            'social_active' => array (
                 'field' => 'social',
+                'as' => 'social_active',
                 'type' => 'pointer',
                     'p_table' => GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX . 'socials',
                     'p_field' => 'name',
-                    'p_orderby' => 'name',
-                    'p_blank' => true,
-                'use' => 'a'
+                'use' => 'gl'
+            ),
+
+            // The social media name
+            'social_name' => array (
+                'field' => 'social',
+                'as' => 'social_name',
+                'type' => 'pointer',
+                    'p_table' => GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX . 'socials',
+                    'p_field' => 'name',
+                'use' => 'gl'
+            ),
+
+            // The social medium
+            'social_b64icon' => array (
+                'field' => 'social',
+                'as' => 'social_b64icon',
+                'type' => 'pointer',
+                    'p_table' => GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX . 'socials',
+                    'p_field' => 'b64icon',
+                'use' => 'gl'
             )
+
         );
     }
 
index 49276b4..f78a844 100644 (file)
@@ -133,8 +133,7 @@ class GlmDataSocials extends GlmDataAbstract
             // Base 64 Image Icon
             'b64icon' => array (
                 'field' => 'b64icon',
-                'type' => 'integer',
-                'view_only' => true,
+                'type' => 'b64image',
                 'use' => 'a'
             ),
 
index 1c6b07f..494a23f 100644 (file)
@@ -86,23 +86,40 @@ class GlmMembersAdmin_management_social extends GlmDataSocials
         $socialError = false;
         $statusMessage = 'Social Updated';
         $option = false;
+        $socialID = false;
         $debug = true;
 
-        $socialList = $this->getList();
-
+        // Check for specified option
         if (isset($_REQUEST['option'])) {
             $option = trim(filter_var($_REQUEST['option'],FILTER_SANITIZE_STRING));
-        } else {
-            $option = "default";
+        }
+
+        // Check for specified ID
+        if (isset($_REQUEST['id'])) {
+            $socialID = ($_REQUEST['id'] - 0);
         }
 
         switch ($option) {
-            case "submit":
-                $Socials->updateEntry();
+
+            case "addNew";
+                $this->insertEntry();
+// **** NEED TO ADD TO ALL MEMBERS ALSO
                 break;
-            case "social";
-            default:
 
+            case "update":
+                $this->updateEntry($socialID);
+                break;
+
+            case "delete";
+                $this->deleteEntry($socialID, true);
+                // Also delete all uses of this social media type
+                $this->wpdb->query("
+                    DELETE FROM ".GLM_MEMBERS_SOCIAL_PLUGIN_DB_PREFIX . "social_urls
+                     WHERE social = $socialID;
+                ");
+                break;
+
+            default:
                 break;
         }
 
@@ -118,10 +135,8 @@ class GlmMembersAdmin_management_social extends GlmDataSocials
             );
         }
 
-//        if (GLM_MEMBERS_PLUGIN_ADMIN_DEBUG_VERBOSE) {
-//            glmMembersAdmin::addNotice($memberTypes, 'DataBlock', 'Member Types Data');
-//        }
-        // Refresh the URL list before sending it to the front
+        // Get a list of all social media types
+        $socialList = $this->getList();
 
         // Compile template data
         $templateData = array(
index 5b5baa7..3669e03 100644 (file)
 
     <h2>{if $socialUpdated}<span class="glm-notice glm-flash-updated glm-right">{$statusMessage}</span>{/if}</h2>
 
+    <!-- Add Social Media Button and Dialog Box -->
+    <div id="newSocialButton" class="button button-primary glm-right">Add a Social Media Type</div>    
+    <div id="newSocialDialog" class="glm-dialog-box" title="Enter New Social Media Type">
+        <form action="{$thisUrl}?page={$thisPage}" method="post" enctype="multipart/form-data">
+            <input type="hidden" name="glm_action" value="social">
+            <input type="hidden" name="option" value="addNew">
+            
+            <table class="glm-admin-table">
+                <tr>
+                    <th class="glm-required">Name:</th>
+                    <td>
+                        <input type="text" name="name" class="glm-form-text-input">
+                    </td>
+                </tr>
+                <tr>
+                    <th>Active:</th>
+                    <td><input type="checkbox" name="active>"></td>
+                <tr>
+                    <th class="glm-required">Base URL:</th>
+                    <td>
+                        <input type="text" name="baseurl" class="glm-form-text-input">
+                    </td>
+                </tr>
+                <tr>
+                    <th class="glm-required">Icon</th>
+                    <td><input type="file" name="b64icon"></td>
+                </tr>
+            </table>
+            <p><span class="glm-required">*</span> Required</p>
+            <input type="submit" value="Add new Social Media type">
+        </form>
+    </div>
+
+    <!--  Delete Social Media Dialog Box -->
+    <div id="deleteSocialDialog" class="glm-dialog-box" title="Delete Social Media Type">
+        <center>
+            <p>Are you sure you want to delete this social media type?</p>
+            <p><div id="deleteSocialConfirm" class="button button-secondary">Yes, delete this social media type</div></p>
+            <p><div id="deleteSocialCancel" class="button button-secondary">Cancel</div></p>
+        </center>
+    </div>
+                    
+    <!-- Edit Social Media Type Dialog Box -->
+    <div id="editSocialDialog" class="glm-dialog-box" title="Edit Social Media Type">
+        <form action="{$thisUrl}?page={$thisPage}" method="post" enctype="multipart/form-data">
+            <input type="hidden" name="glm_action" value="social">
+            <input type="hidden" name="option" value="update">
+            <input id="editSocialID" type="hidden" name="id" value="">
+            <table class="glm-admin-table">
+                <tr>
+                    <th class="glm-required">Name:</th>
+                    <td>
+                        <input id="editSocialName" type="text" name="name" class="glm-form-text-input">
+                    </td>
+                </tr>
+                <tr>
+                    <th>Active:</th>
+                    <td>
+                        <input id="editSocialActive" type="checkbox" name="active">
+                    </td>
+                </tr>
+                <tr>
+                    <th class="glm-required">Base URL:</th>
+                    <td>
+                        <input id="editSocialUrl" type="text" name="baseurl" class="glm-form-text-input">
+                    </td>
+                </tr>
+                <tr>
+                    <th class="glm-required">Icon</th>
+                    <td><input type="file" name="b64icon"></td>
+                </tr>
+            </table>
+            <p><span class="glm-required">*</span> Required</p>
+            <input type="submit" value="Update this social media type">
+        </form>
+    </div>
+
     <h3>Social Media Types</h3>
     
     <div id="glm-admin-content-container">
 
-            <table class="glm-admin-table">
-                <tr><th>Active</th><th>Name</th><th>Image</th></tr>
+            <table class="wp-list-table striped glm-admin-table">
+                <tr>
+                    <th>Name</th>
+                    <th>Active</th>
+                    <th>Image</th>
+                    <th>Base URL</th>
+                    <th>&nbsp;</th>
+                </tr>
         {foreach $socials as $s}
                 <tr>
+                    <td class="glm-member-db-social-management-name">
+                        <a class="editSocial" data-socialID="{$s.id}" data-socialActive="{$s.active.value}">{$s.name}</a>
+                    </td>
                     <td class="glm-member-db-social-management-checkbox">
                         {$s.active.name}
                     </td>
                     <td>
-                        <div id="glm-member-db-admin-social-{$socialItem.name|lower}" title="{$socialItem.name}" class="glm-member-db-social-icon" style="background: url('{$assetsUrl}/social-few-full-sprite.jpg') repeat scroll {$socialItem.xpos}px {$socialItem.ypos}px;height:33px;width:33px;display:block;">
-                        </div>
+            {if $s.b64icon}                    
+                        <img alt="Embedded Image" src="data:image/png;base64,{$s.b64icon}">
+            {else}
+                        (no image)
+            {/if}
                     </td>
-                    <td class="glm-member-db-social-management-name">
-                        {$socialItem.name}
+                    <td id="editSocialUrl_{$s.id}">
+                        {$s.baseurl}
                     </td>
                     <td>
-                        <div class="glm-galleryImage" data-id="logo">
-                            <img src="{$glmPluginMediaUrl}/images/small/{$member.fieldData.logo}">
-                        </div>
-                        <div id="glm-galleryImageLarger_logo" class="glm-imageDialog">
-                            <div id="glm-member-db-admin-social-{$socialItem.name|lower}" title="{$socialItem.name}" class="glm-member-db-social-icon" style="background: url('{$assetsUrl}/social-few-full-sprite.jpg') repeat scroll {$socialItem.xpos}px {$socialItem.ypos}px;height:33px;width:33px;display:block;">
-                            </div>  
-                        </div>
+                        <div class="deleteSocialButton button button-secondary glm-button-small" data-socialID="{$s.id}">Delete</div>
                     </td>
-
-                    <td class="glm-admin-image-edit-table">
-                        <div class="glm-galleryImage" data-id="logo">
-                            <div id="glm-member-db-admin-social-{$socialItem.name|lower}" title="{$socialItem.name}" class="glm-member-db-social-icon" style="background: url('{$assetsUrl}/social-few-full-sprite.jpg') repeat scroll {$socialItem.xpos}px {$socialItem.ypos}px;height:33px;width:33px;display:block;">
-                            </div> 
-                        </div>
-                    </td>
-                    <td colspan="2"><b>New image:</b> <input type="file" name="logo_new"></td>
-                    <td><div id="glm-galleryImageLarger_logo" class="glm-imageDialog"></div></td>
                 </tr>
         {/foreach}
             </table>
-            <input type="submit" class="button glm-button submit" value="submit" name='submit'>
         </form>
     </div>
     
 
-    <script type="text/javascript">
-        jQuery(document).ready(function($) {
-            // Flash certain elements for a short time after display      
-            $(".glm-flash-updated").fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
+<script type="text/javascript">
+    jQuery(document).ready(function($) {
+        
+        
+        $("#newSocialDialog").dialog({
+            autoOpen: false,
+            minWidth: 400,
+        });
+        $("#editSocialDialog").dialog({
+            autoOpen: false,
+            minWidth: 400,
+        });
+        $("#deleteSocialDialog").dialog({
+            autoOpen: false,
+            minWidth: 400,
+        });
+
+        $('#newSocialButton').click( function() {
+            $("#newSocialDialog").dialog("open");
+        });
+        $('.editSocial').click( function() {
+            var socialID = $(this).attr('data-socialID');
+            var socialName = $(this).text();
+            var socialActive = $(this).attr('data-socialActive');
+            var socialUrl = $('#editSocialUrl_' + socialID).html();
+            $('#editSocialID').val(socialID);
+            $('#editSocialName').val(socialName.trim());
+            $('#editSocialUrl').val(socialUrl.trim());
+            $("#editSocialDialog").dialog("open");
+            if (socialActive == 1) {
+                $("#editSocialActive").attr('checked', true);
+            } else {
+                $("#editSocialActive").attr('checked', false);
+            }
+            
+        });
+        $('#editSocialCancel').click( function() {
+            $("#editSocialDialog").dialog("close");
+        });
+        $('#newSocialCancel').click( function() {
+            $("#newSocialDialog").dialog("close");
+        });
+
+        var id = false;
+        $('.deleteSocialButton').click( function() {
+            id = $(this).attr('data-socialID');
+            $("#deleteSocialDialog").dialog("open");
         });
+        $('#deleteSocialConfirm').click( function() {
+            $("#deleteSocialDialog").dialog("close");
+            window.location.href = "{$thisUrl}?page={$thisPage}&glm_action=social&option=delete&id=" + id;
+        });
+        $('#deleteSocialCancel').click( function() {
+            $("#deleteSocialDialog").dialog("close");
+        });
+
+        
+        
+        
+        // Flash certain elements for a short time after display      
+        $(".glm-flash-updated").fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
+    });
 </script>
 {include file='admin/footer.html'}