Started building admin assets dashboard
authorChuck Scott <cscott@gaslightmedia.com>
Tue, 6 Mar 2018 22:09:42 +0000 (17:09 -0500)
committerChuck Scott <cscott@gaslightmedia.com>
Tue, 6 Mar 2018 22:11:08 +0000 (17:11 -0500)
Fixed issues with dataFacilities.php data class
Updated index.php to have assets management and terms added to config

classes/data/dataFacilities.php
index.php
models/admin/assets/index.php
views/admin/assets/index.html

index d24433f..982d307 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
  * GLM Member-DB WordPress Add-On Plugin
- * Asset Management - Asst Types
+ * Asset Management - Facilities
  *
  * PHP version 5.3
  *
@@ -13,7 +13,7 @@
  */
 
 /**
- * GlmDataAssetsAssetTypes class
+ * GlmDataAssetsFacilities class
  *
  * PHP version 5
  *
@@ -24,7 +24,7 @@
  *          @release SVN: $Id: dataSettingsTerms.php,v 1.0 2011/01/25 19:31:47 cscott
  *          Exp $
  */
-class GlmDataAssetsAssetTypes extends GlmDataAbstract
+class GlmDataAssetsFacilities extends GlmDataAbstract
 {
 
     /**
@@ -100,7 +100,7 @@ class GlmDataAssetsAssetTypes extends GlmDataAbstract
         /*
          * Table Name
          */
-        $this->table = GLM_MEMBERS_ASSETS_PLUGIN_DB_PREFIX . 'asset_type';
+        $this->table = GLM_MEMBERS_ASSETS_PLUGIN_DB_PREFIX . 'facility';
 
         /*
          * Table Data Fields
index 9a4b661..3354b2e 100644 (file)
--- a/index.php
+++ b/index.php
@@ -143,10 +143,11 @@ if (is_file(GLM_MEMBERS_ASSETS_PLUGIN_DB_SCRIPTS.'/dbVersions.php')) {
 }
 
 // Load Add-On Management Settings data
-/* None - Need to figure out a smooth way to do this.
 $glmMembersAssetsManagementSettings = $wpdb->get_row( "SELECT * FROM ".GLM_MEMBERS_ASSETS_PLUGIN_DB_PREFIX."management WHERE id = 1", ARRAY_A );
 unset($glmMembersAssetsManagementSettings['id']);
-*/
+$glmMembersAssetsManagementTerms = $wpdb->get_row( "SELECT * FROM ".GLM_MEMBERS_ASSETS_PLUGIN_DB_PREFIX."settings_terms WHERE id = 1", ARRAY_A );
+unset($glmMembersAssetsManagementTerms['id']);
+
 
 function glmMembersAssetsRegisterAddOn($addOns) {
 
@@ -158,6 +159,8 @@ function glmMembersAssetsRegisterAddOn($addOns) {
         'slug' => GLM_MEMBERS_ASSETS_PLUGIN_SLUG,
         'actions' => $GLOBALS['glmMembersAssetsAddOnValidActions'],
         'config' => array(
+            'settings' => $GLOBALS['glmMembersAssetsManagementSettings'],
+            'terms' => $GLOBALS['glmMembersAssetsManagementTerms']
         ),
         'shortcodes' => $GLOBALS['glmMembersAssetsShortcodes'],
         'shortcodesDescription' => $GLOBALS['glmMembersAssetsShortcodesDescription']
index 43b6677..6e7c53f 100644 (file)
@@ -14,9 +14,9 @@
  */
 
 // Load Assets data abstract
-// require_once GLM_MEMBERS_ASSETS_PLUGIN_CLASS_PATH.'/data/dataAssets.php';
+require_once GLM_MEMBERS_ASSETS_PLUGIN_CLASS_PATH.'/data/dataFacilities.php';
 
-class GlmMembersAdmin_assets_index // extends GlmDataAssetsIndex
+class GlmMembersAdmin_assets_index extends GlmDataAssetsFacilities
 {
 
     /**
@@ -71,17 +71,25 @@ class GlmMembersAdmin_assets_index // extends GlmDataAssetsIndex
         /*
          * Run constructor for the Assets data class
          */
-        // parent::__construct(false, false, true);
+        parent::__construct(false, false, true);
 
     }
 
     public function modelAction($actionData = false)
     {
         $view = 'index';
+        $haveFacilities = false;
 
+        // Get all facility data with assets items and any future assignments of those assets items
+        $facilities = $this->getList();
+
+        if (is_array($facilities) && count(facilities) > 0) {
+            $haveFacilities = true;
+        }
 
         // Compile template data
         $templateData = array(
+            'haveFacilities' => $haveFacilities
         );
 
         // Return status, any suggested view, and any data to controller
index ae11402..9652e34 100644 (file)
-<h1 class="glm-admin-table-header">Asset Management Dashboard</h1>
+<div class="wrap glm-associate-admin-wrap">
 
-<div>
-    <h3>Pending Actions</h3>
-</div>
 
-<div>
-    <h3>Assets List</h3>
-</div>
+    <style type='text/css'>
+        .assets-admin-content {
+            display: grid;
+            grid-gap: 0 0;
+            grid-template-columns: 1rem 1rem 1rem auto auto auto auto;
+        }
+        .facility-name {
+            font-weight: bold;
+            margin-top: 10px;
+            font-size: 1rem;
+        }
+        .assets-colum-title {
+            font-weight: bold;
+        }
+        
+    </style>
+    
+
+    <h1 class="glm-admin-table-header">{$terms.assets_term_assets_name} Dashboard</h1>
+    <div id="glm-admin-content-container">
+    
+     
+    <div class="glm-admin-table">
+        <div class="glm-admin-table-inner">
+
+            <a href="#add">Add a Facility</a>
+            
+    
+{if $haveFacilities}
+    
+            <div class="assets-admin-content">
+
+    {foreach $facilities as $facility}                
 
+                <div style="grid-column: 1 / span 7;" class="facility-name">(Facility Name)</div>
 
-<div>
-    <h3>Assets Calendar</h3>
+                    <div style="grid-column: 2 / span 6;"><a href="#edit">Edit</a> <a href="#edit">Delete</a></div>
+                    
+                    <div style="grid-column: 2 / span 3;" class="assets-colum-title">Asset Type</div>
+                    <div class="assets-colum-title">Name</div>
+                    <div class="assets-colum-title">Number</div>
+                    <div class="assets-colum-title">Quantity</div>
+    
+      {foreach $facility.assets as $asset}   
+        
+                    <div style="grid-column: 2 / span 3;" >Room</div>
+                    <div>Ballroom</div>
+                    <div>101</div>
+                    <div>1</div>
+                
+                        <div style="grid-column: 3 / span 5;"><a href="#edit">Edit</a> <a href="#edit">Delete</a></div>
+                
+                        <div style="grid-column: 3 / span 2;" class="assets-colum-title">Start</div>
+                        <div class="assets-colum-title">End</div>
+                        <div class="assets-colum-title">Account</div>
+                        <div class="assets-colum-title">Quantity</div>
+    
+        {foreach $asset.assignments as $assignment}                        
+                        <div style="grid-column: 3 / span 2" >1/1/2018 07:00 AM</div>
+                        <div>1/1/2018 05:00 PM</div>
+                        <div>Gaslight Media</div>
+                        <div>1</div>
+    
+                            <div style="grid-column: 4 / span 4;"><a href="#edit">Edit</a> <a href="#edit">Delete</a></div>
+        {/foreach}
+    
+      {/foreach}
+    {/foreach}
+{else}
+        <div>No Facilities Listed</div>
+{/if}
+    
+    
+    
+    
+    
+    
+<!--     
+            <table class="wp-list-table striped glm-admin-table-single">
+                <thead>
+                    <tr>
+                        <th class="glm-file-library-table-left">Original Name</th>
+                        <th class="glm-file-library-table-left">Stored File Name</th>
+                        <th class="glm-file-library-table-left">Title</th>
+                        <th class="glm-file-library-table-left">Last Access</th>
+                    </tr>
+                </thead>
+                <tbody id="AfterNewFiles">
+                    <tr class="glm-NewFileHidden glm-fileLibraryItemHidden" style="background-color: #fff;"><td colspan="4">&nbsp;</td></tr>
+                    <tr class="glm-NewFileHidden glm-fileLibraryItemHidden" style="background-color: #fff;"><th colspan="4" style="color: gray;">&nbsp;&nbsp;&nbsp;&nbsp;Previous Uploads</th></tr>
+                </tbody>            
+    {if $haveFiles}
+        {assign var="i" value="0"}
+        {foreach $files as $f}
+                <tbody id="fileContainer_{$f.id}">
+                    <tr id="filenameLine_{$f.id}" class="glm-file-line glm-edit-form glm-file-{$f.id}{if $i++ is odd by 1} {/if}" data-file="{$f.id}">
+                        <td class="glm-file-library-table-left">
+                            {$f.name}
+                        </td>
+                        <td class="glm-file-library-table-left">
+                            {$f.file_name}
+                        </td>
+                        <td id="fileTitle_{$f.id}" class="glm-file-library-table-left">
+                            {$f.title}
+                        </td>
+                        <td class="glm-file-library-table-left">
+                            {$f.last_access_time.datetime}
+                        </td>
+                    </tr>
+                    <tr id="fileLinks_{$f.id}" class="glm-hidden glm-file-links"">
+                        <td colspan="5" style="padding: .8rem; background-color: #fff;>
+                            <span class="file-edit-link">
+                                <a href="" class="glm-file-library-copy" data-file="{$f.id}" data-link="{$f.link_url}">Copy File URL</a> |
+                            </span>
+                            <span class="file-edit-link">
+                                <a class="glm-edit" href="#" data-file="{$f.id}">Edit File</a> |
+                            </span>
+                            <span>
+                                <a class="file-download-link" data-file="{$f.id}" href="{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=fileLibraryDownload&fileId={$f.id}">Download File</a> |
+                            </span>
+                            <span>
+                                <a class="delete-file" href="#" data-file="{$f.id}">Delete File</a> 
+                            </span>
+                            <span id="FileCopied_{$f.id}" class="glm-notice" style="display: none;">&nbsp;&nbsp;File URL copied to your clipboard.</span>
+                            <span id="FileDeleted_{$f.id}" class="glm-notice" style="display: none;">&nbsp;&nbsp;File Deleted!</span>
+                        </td>
+                    </tr>
+                    <tr class="glm-edit-form glm-edit-form-{$f.id}{if $f@iteration is div by 2} alternate{/if}" style="display:none; background-color: #fff;">
+                        <td colspan="5" style="border: 1px #ccc solid;">
+                            <div class="glm-row" style="margin-bottom: 0px !important; margin-top: .5rem;">
+                                <div class="glm-columns glm-small-6">
+                                    <label>File Title: </label><br>
+                                    <input id="InputTitle_{$f.id}" class="glm-form-text-input-medium" type="text" name="title" value="{$f.title}"><br>
+                                </div>
+                                <div class="glm-columns glm-small-5">
+                                    <label>Description: </label><br> 
+                                    <textarea id="InputDescr_{$f.id}" class="glm-form-text-input-medium" name="descr">{$f.descr}</textarea>
+                                </div>
+                            </div>
+                            <div class="glm-row">
+                                <div class="glm-columns glm-small-7">
+                                    <button class="glm-cancel button button-secondary" data-file="{$f.id}">Cancel</button>
+                                    <button class="glm-update button button-secondary" data-file="{$f.id}">Update</button>
+                                </div>
+                            </div>
+                        </td>
+                    </tr>
+                </tbody>
+        {/foreach}
+    {else}
+                    <tr class="alternate"><td colspan="4">(no files listed)</td></tr>
+    {/if}
+                </tbody>
+          </table>
+           
+ -->           
+       </div>
+   </div>
 </div>
 
+
+
+<script>
+jQuery(document).ready(function($){
+
+
+    // Copy an element to the clipboard
+    function copyToClipboard(text) {
+        var $temp = $("<input>");
+        $("body").append($temp);
+        $temp.val(text).select();
+        document.execCommand("copy");
+        $temp.remove();
+    }
+
+    $('body').on('click', '.glm-file-library-copy', function(e) {
+        e.preventDefault();
+        copyToClipboard($(this).attr('data-link'));
+        var fileId = $(this).attr('data-file');
+        lastFileTouched(fileId);
+        flashNotice($('#FileCopied_' + fileId));
+        return false;
+    });
+    
+    $('.glm-edit').live('click', function(e){
+        e.preventDefault();
+        fileLinksEditSelected();
+        $('.glm-edit-form-' + $(this).data('file')).show();
+        var fileId = $(this).data('file');
+        lastFileTouched(fileId);
+    });
+
+    $('.glm-cancel').live('click', function(e){
+        e.preventDefault();
+        clearFileLinks();
+        $('.glm-edit-form-' + $(this).data('file')).hide();
+        $('.glm-file-' + $(this).data('file')).show();
+    });
+
+    $('.file-download-link').live('click', function(e) {
+        var fileId = $(this).data('file');
+        lastFileTouched(fileId);
+    });
+    
+    // File Line Hover Action
+    var fileEditFlag = false;
+    var fileHoverId = false;    
+    $('.glm-file-line').live( 'mouseenter', function() {
+        if (fileEditFlag) {
+            return;
+        }
+        fileHoverId = $(this).attr('data-file');
+        $('.glm-file-links').addClass('glm-hidden');
+        $('#fileLinks_' + fileHoverId).removeClass('glm-hidden');
+    });
+    function fileLinksEditSelected() {
+        $('#fileLinks_' + fileHoverId).addClass('glm-hidden');
+        fileEditFlag = true;
+    }
+    function clearFileLinks() {
+        fileLinksEditSelected();
+        fileEditFlag = false;
+        fileHoverId = false;
+    }
+    $('.glm-admin-table-inner').mouseleave( function() {
+        $('#fileLinks_' + fileHoverId).addClass('glm-hidden');
+    })
+    
+    // Delete file
+    $('.delete-file').live('click', function(e){
+        
+        e.preventDefault();
+        var fileId = $(this).data('file');
+
+        if (confirm('Are you sure you want to delete this file?')) {
+            $.ajax({
+                context: this,
+                url: '{$ajaxUrl}?action=glm_members_admin_ajax',
+                data: {
+                    glm_action: 'fileLibraryDelete',
+                    fileId: fileId
+                }
+            }).done(function(msg){
+                if (msg == 'File Deleted') {
+                    $('#fileContainer_' + fileId).fadeOut(1000, function() {
+                        $('#fileContainer_' + fileId).remove();
+                    });
+                } else {
+                    alert('Unable to delete: ' + msg);
+                }
+            }).fail(function(msg){
+                alert('Unable to delete this file at this time.');
+            });
+        }
+
+    });
+
+    function flashNotice(notice) {
+        notice.fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
+    }
+    
+    $('.glm-update').live('click', function(e){
+        e.preventDefault();
+        var fileId = $(this).data('file');
+        
+        // Get possible custom field data
+        var fileFormData = $('#glm-file-form-' + fileId).serialize();
+        console.log(fileFormData);
+
+        var fileTitle = $('#InputTitle_' + fileId).val().trim();
+        var fileDescr = $('#InputDescr_' + fileId).val().trim();
+
+        $.ajax({
+            context: this,
+            type: 'POST',
+            url: '{$ajaxUrl}?action=glm_members_admin_ajax',
+            dataType: 'text',
+            data: {
+                glm_action: 'fileLibraryUpdate',
+                fileId: fileId,
+                title: fileTitle,
+                descr: fileDescr
+            }
+        }).done(function(){
+            $('.glm-edit-form-' + $(this).data('file')).hide();
+            $('.glm-file-' + $(this).data('file')).show();
+            $('#fileTitle_' + fileId).text(fileTitle);
+            clearFileLinks();
+        }).fail(function(msg){
+            alert('Unable to update file: ' + msg);            
+        });
+    });
+
+    // highlight last file touched
+    function lastFileTouched(fileId) {
+        $('.glm-file-line').removeClass('last-file-touched');
+        $('#filenameLine_' + fileId).addClass('last-file-touched file-been-touched');
+    }
+
+});
+</script>
+
+            
+{include file='admin/footer.html'}