Setup of member only dashboard.
authorSteve Sutton <steve@gaslightmedia.com>
Fri, 26 Aug 2016 16:58:39 +0000 (12:58 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Fri, 26 Aug 2016 16:58:39 +0000 (12:58 -0400)
Adding widget for the member only dashboard.
Apply Filter setup in main template for member dashboard so AddOns can
add their dashboard widgets.

models/admin/dashboard/index.php [new file with mode: 0644]
models/admin/dashboardWidget/index.php
npm-debug.log [deleted file]
setup/adminHooks.php
setup/validActions.php
views/admin/dashboard/index.html [new file with mode: 0644]
views/admin/member/index.html

diff --git a/models/admin/dashboard/index.php b/models/admin/dashboard/index.php
new file mode 100644 (file)
index 0000000..a4e53a8
--- /dev/null
@@ -0,0 +1,119 @@
+<?php
+
+/**
+ * Gaslight Media Members Database
+ * Admin Members Dashboard
+ *
+ * PHP version 5.5
+ *
+ * @category glmWordPressPlugin
+ * @package  glmMembersDatabase
+ * @author   Steve Sutton <steve@gaslightmedia.com>
+ * @license  http://www.gaslightmedia.com Gaslightmedia
+ * @version  0.1
+ */
+
+require_once GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMembers.php';
+
+/**
+ * Dashboard Class Model
+ *
+ * Each Add-On can have one or more dashboards.
+ */
+
+class GlmMembersAdmin_dashboard_index extends GlmDataMembers
+{
+    /**
+     * Word Press Database Object
+     *
+     * @var $wpdb
+     * @access public
+     */
+    public $wpdb;
+    /**
+     * Plugin Configuration Data
+     *
+     * @var $config
+     * @access public
+     */
+    public $config;
+
+    /**
+     * Constructor
+     *
+     * This contructor sets up this model. At this time that only includes
+     * storing away the WordPress data object.
+     *
+     * @return object Class object
+     *
+     */
+    public function __construct ($wpdb, $config)
+    {
+
+        // Save WordPress Database object
+        $this->wpdb = $wpdb;
+
+        // Save plugin configuration object
+        $this->config = $config;
+
+        // Run constructor for members data class
+        parent::__construct(false, false);
+
+    }
+
+    /**
+     * Perform Model Action
+     *
+     * This method does the work for this model and returns any resulting data
+     *
+     * @return array Status and data array
+     *
+     * 'status'
+     *
+     * True if successful and false if there was a fatal failure.
+     *
+     * 'menuItemRedirect'
+     *
+     * If not false, provides a menu item the controller should
+     * execute after this one. Normally if this is used, there would also be a
+     * modelRedirect value supplied as well.
+     *
+     * 'modelRedirect'
+     *
+     * If not false, provides an action the controller should execute after
+     * this one.
+     *
+     * 'view'
+     *
+     * A suggested view name that the controller should use instead of the
+     * default view for this model or false to indicate that the default view
+     * should be used.
+     *
+     * 'data'
+     *
+     * Data that the model is returning for use in merging with the view to
+     * produce output.
+     *
+     */
+    public function modelAction ($actionData = false)
+    {
+
+        $success = true;
+
+        // Compile template data
+        $templateData = array(
+            'sampletext' => 'This is a sample text.'
+        );
+
+        // Return status, suggested view, and data to controller
+        return array(
+            'status'           => $success,
+            'menuItemRedirect' => false,
+            'modelRedirect'    => false,
+            'view'             => 'admin/dashboard/index.html',
+            'data'             => $templateData
+        );
+
+    }
+
+}
index e808756..26dca6b 100644 (file)
@@ -64,7 +64,7 @@ class GlmMembersAdmin_dashboardWidget_index extends GlmDataMembers
      */
     public $config;
 
-    /*
+    /**
      * Constructor
      *
      * This contructor sets up this model. At this time that only includes
@@ -87,7 +87,7 @@ class GlmMembersAdmin_dashboardWidget_index extends GlmDataMembers
 
     }
 
-    /*
+    /**
      * Perform Model Action
      *
      * This method does the work for this model and returns any resulting data
@@ -208,4 +208,4 @@ class GlmMembersAdmin_dashboardWidget_index extends GlmDataMembers
 
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/npm-debug.log b/npm-debug.log
deleted file mode 100644 (file)
index 36fb5ea..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-0 info it worked if it ends with ok
-1 verbose cli [ '/usr/bin/nodejs', '/usr/bin/npm', 'install' ]
-2 info using npm@1.4.21
-3 info using node@v0.10.25
-4 error install Couldn't read dependencies
-5 error package.json ENOENT, open '/home/laury/dev55/explorewesternup.gaslightmedia.com/web/wp-content/plugins/glm-member-db/package.json'
-5 error package.json This is most likely not a problem with npm itself.
-5 error package.json npm can't find a package.json file in your current directory.
-6 error System Linux 3.19.0-42-generic
-7 error command "/usr/bin/nodejs" "/usr/bin/npm" "install"
-8 error cwd /home/laury/dev55/explorewesternup.gaslightmedia.com/web/wp-content/plugins/glm-member-db
-9 error node -v v0.10.25
-10 error npm -v 1.4.21
-11 error path /home/laury/dev55/explorewesternup.gaslightmedia.com/web/wp-content/plugins/glm-member-db/package.json
-12 error code ENOPACKAGEJSON
-13 error errno 34
-14 verbose exit [ 34, true ]
index 2200cb2..65729d8 100644 (file)
@@ -121,6 +121,10 @@ add_action( 'add_meta_boxes', function() {
 //        ));
 //    }
 //}
-
-
-?>
+add_filter(
+    'glm-member-db-dashboard-member-widgets',
+    function ( $content = null ) {
+        $content .= $this->controller( 'dashboard', 'index' );
+        return $content;
+    }
+);
index 1e412c7..e217c23 100644 (file)
 $glmMembersValidActions = array(
     'adminActions' => array(
         'ajax' => array(
-            'imageUpload'           => 'glm-member-db',
-            'newOldMemberIdsCsv'    => 'glm-member-db',
-            'membersListExport'     => 'glm-member-db',
-            'memberClickThrough'    => 'glm-member-db',
-            'memberDetailClick'     => 'glm-member-db',
-            'memberGraphs'          => 'glm-member-db'
+            'imageUpload'        => 'glm-member-db',
+            'newOldMemberIdsCsv' => 'glm-member-db',
+            'membersListExport'  => 'glm-member-db',
+            'memberClickThrough' => 'glm-member-db',
+            'memberDetailClick'  => 'glm-member-db',
+            'memberGraphs'       => 'glm-member-db',
+        ),
+        'dashboard' => array(
+            'index' => 'glm-member-db',
         ),
         'dashboardWidget' => array(
-            'index'                 => 'glm-member-db'
+            'index' => 'glm-member-db',
         ),
         'members' => array(
-            'index'                 => 'glm-member-db',            // member list
-            'list'                  => 'glm-member-db',
-            'reports'               => 'glm-member-db',
-            'other'                 => 'glm-member-db'
+            'index'   => 'glm-member-db',            // member list
+            'list'    => 'glm-member-db',
+            'reports' => 'glm-member-db',
+            'other'   => 'glm-member-db',
         ),
         'member' => array(
-            'index'                 => 'glm-member-db',            // Member Dashboard
-            'memberInfo'            => 'glm-member-db',
-            'memberEdit'            => 'glm-member-db',
-            'locations'             => 'glm-member-db',
+            'index'      => 'glm-member-db',         // Member Dashboard
+            'memberInfo' => 'glm-member-db',
+            'memberEdit' => 'glm-member-db',
+            'locations'  => 'glm-member-db',
         ),
         'settings' => array(
-            'index'                 => 'glm-member-db',            // Member Types
-            'categories'            => 'glm-member-db',
-            'cities'                => 'glm-member-db',
-            'regions'               => 'glm-member-db',
-            'amenities'             => 'glm-member-db'
+            'index'      => 'glm-member-db',         // Member Types
+            'categories' => 'glm-member-db',
+            'cities'     => 'glm-member-db',
+            'regions'    => 'glm-member-db',
+            'amenities'  => 'glm-member-db',
         ),
         'management' => array(
-            'index'       => 'glm-member-db',            // General Options
+            'index'       => 'glm-member-db',        // General Options
             'terms'       => 'glm-member-db',
             'development' => 'glm-member-db',
             'videos'      => 'glm-member-db',
             'theme'       => 'glm-member-db',
             'import'      => 'glm-member-db',
             'addons'      => 'glm-member-db',
-            'hooks'       => 'glm-member-db'
+            'hooks'       => 'glm-member-db',
         ),
         'shortcodes' => array(
-            'index'                 => 'glm-member-db'
+            'index' => 'glm-member-db',
         ),
         'error' => array(
-            'index'                 => 'glm-member-db',
-            'badAction'             => 'glm-member-db',
+            'index'     => 'glm-member-db',
+            'badAction' => 'glm-member-db',
         ),
         'pages' => array(
-            'shortcode'             => 'glm-member-db'
-        )
+            'shortcode' => 'glm-member-db',
+        ),
     ),
     'frontActions' => array(
         'members' => array(
-            'list'                  => 'glm-member-db',
-            'detail'                => 'glm-member-db'
+            'list'   => 'glm-member-db',
+            'detail' => 'glm-member-db',
         ),
         'error' => array(
-            'index'                 => 'glm-member-db',
-            'badAction'             => 'glm-member-db'
-        )
-    )
+            'index'     => 'glm-member-db',
+            'badAction' => 'glm-member-db',
+        ),
+    ),
 );
-
-?>
diff --git a/views/admin/dashboard/index.html b/views/admin/dashboard/index.html
new file mode 100644 (file)
index 0000000..b15118b
--- /dev/null
@@ -0,0 +1,18 @@
+<div id="dashboard-widgets-wrap">
+    <div id="dashboard-widgets" class="metabox-holder">
+        <div id="glm-members-dashboard-widget" class="postbox-container">
+            <div class="meta-box-sortables ui-sortable">
+                <div class="postbox">
+                    <button class="handlediv button-link" type="button" aria-expanded="true">
+                        <span class="screen-reader-text">Toggle panel: Member Profile</span>
+                        <span class="toggle-indicator" aria-hidden="true"></span>
+                    </button>
+                    <h2 class="hndle ui-sortable-handle">
+                        <span>Member Profile</span>
+                    </h2>
+                    <p>{$sampletext}</p>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
index 14a0426..bf1e7fb 100644 (file)
         <tr>
             <td>
                 <table class="glm-admin-table">
-                    <tr>
-                        <th>{$terms.term_member_cap} Slug:</th>
-                        <td class="glm-nowrap">{$member.fieldData.member_slug}</td>
-                    </tr>
-                    <tr><th>Date created:</th><td>{$member.fieldData.created.date}</td></tr>
                     <tr>
                         <th>URL CLick Counts</th>
                         <td><b>Today:</b> {$clickThroughCounts.day}&nbsp;&nbsp;&nbsp;<a data-type="daysClicks" class="dialog-button" href=""><img src="{$assetsUrl}/graph.png"></a></td>
                     </tr>
                 </table>
             </td>
-            <td>      
+            <td>
                 <table class="glm-admin-table">
-                    <tr>
-                        <th>{$terms.term_member_cap} Display & Access:</th>
-                        <td class="glm-nowrap">{$member.fieldData.access.name}</td>
-                    </tr>
-                    <tr>
-                        <th>{$terms.term_member_cap} Type:</th>
-                        <td>{$member.fieldData.member_type.name}</td>
-                    </tr>            
                     <tr>
                         <th>Detail Page View Counts</th>
                         <td><b>Today:</b> {$detailViewCounts.day}&nbsp;&nbsp;&nbsp;<a data-type="daysViews" class="dialog-button" href=""><img src="{$assetsUrl}/graph.png"></a></td>
                 </table>
             </td>
             <td class="glm-right">
-{if apply_filters('glm_members_menu_members', true)}            
+{if apply_filters('glm_members_menu_members', true)}
                 <span class="glm-right"><a href="{$thisUrl}?page={$thisPage}&glm_action=memberEdit&member={$memberID}" class="button button-primary glm-button glm-right">Edit {$terms.term_member_cap} Name and Status</a></span>
 {/if}
             </td>
-        </tr>            
+        </tr>
     </table>
   {else}
         <h3>No {$terms.term_member} information available.</h3>
   {/if}
-    
+
     <script src="{$jsUrl}/PrintArea/jquery.PrintArea.js" type="text/JavaScript" language="javascript"></script>
-    
+
     <!-- URL click through graphs -->
     <div id="daysClicks" class="graph-dialog glm-dialog-box" title="URL Click-Through Counts Graph">
         <div id="urlClicksPrintArea" class="PrintArea" style="padding: 10px;">
 
   <p>&nbsp;</p>
 
-  {if $haveMember}
+{if $widgets = apply_filters('glm-member-db-dashboard-member-widgets', '')}
+    {$widgets}
+{/if}
 
-  {if apply_filters('glm_members_permit_admin_member_index_view_member_info_version', true)}
-    {if apply_filters('glm_members_permit_admin_member_index_add_member_info_version', true)}
-    {/if}   
-    <br clear="all">
-    <p>
-        <h3 class="glm-left">{$terms.term_member_cap} Profile Versions</h3>
-        <span class="glm-right">
-            <p>
-                <input type="checkbox" id="showArchived"{if $showArchived} checked="checked"{/if}> Show archived information&nbsp;&nbsp;
-                <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}" class="button button-primary glm-button glm-right">Add New {$terms.term_member_cap} Information Version</a>
-            </p>
-        </span>
-    </p> 
-
-    <table class="wp-list-table striped glm-admin-table">
-        <thead>
-            <tr>
-                <th>Status</th>
-                <th>Reference Name</th>
-                <th>Created</th>
-                <th>Last Update</th>
-                <th> </th>
-            </tr>
-        </thead>
-        <tbody>
-        
-      {if $haveInfoRecords}
-        {assign var="i" value="0"}
-        {foreach $memberInfoRecords as $m}
-        
-         {if $m.status.value == $statusTypeNumbers.Active || apply_filters('glm_members_permit_admin_member_index_list_inactive_info', true)}
-          {if $i++ is odd by 1} 
-            <tr>
-          {else}
-            <tr class="alternate{if $m.status.name == 'Active'} glm-admin-table-active{/if}">
-          {/if}
-                <td>
-                    <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&memberInfo={$m.id}"{if $m.status.value == $statusPending} class="glm-notice"{/if}>{$m.status.name}</a>
-                </td>
-                <td>{$m.reference_name}</td>
-                <td>{$m.create_time.datetime}</td>
-                <td>{$m.modify_time.datetime}</td>
-                <td>
-                    {if $m.bad_lat_lon}<span class="glm-error">Bad Map Location</span>{/if}
-          {if apply_filters('glm_members_permit_admin_member_index_clone_activate_info_version', true)}       
-                    <a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}&memberInfo={$m.id}&option=clone" class="button button-secondary glm-button-small glm-right">Clone</a>&nbsp;
-                    {if $m.status.name != 'Active'}<a href="{$thisUrl}?page={$thisPage}&glm_action=index&member={$memberID}&activateID={$m.id}" class="button button-secondary glm-button-small glm-right">Activate</a>{/if}
-          {/if}
-                </td>
-            </tr>
-            
-            
-         {/if}
-        {/foreach}
-      {else} <!-- haveInfoRecords -->
-            <tr><td colspan="5"><a href="{$thisUrl}?page={$thisPage}&glm_action=memberInfo&member={$memberID}">Click here to start entering information for this {$terms.term_member}.</a></td></tr>
-      {/if}
-        </tbody>
-    </table>
-   {/if} <!-- apply_filters -->
-  {/if}
+  <p>&nbsp;</p>
 
- {else}        
+ {else}
     <h3 class="glm-error">You do not have any {$terms.term_member_cap} Types setup.</h3>
     <p>You must have at least one {$terms.term_member_cap} Type to add a new {$terms.term_member}.</p>
     <td><a href="{$thisUrl}?page=glm-members-admin-menu-configure&glm_action=memberTypes">Click here to add {$terms.term_member_cap} Types.</a></td>
             $('#showArchived').click( function() {
                 checked = 'false';
                 if ($(this).attr('checked') == 'checked') {
-                    checked = 'true';  
+                    checked = 'true';
                 }
-                window.location.replace("{$thisUrl}?page={$thisPage}&glm_action=index&member={$memberID}&showArchived=" + checked);                
+                window.location.replace("{$thisUrl}?page={$thisPage}&glm_action=index&member={$memberID}&showArchived=" + checked);
             });
 
-            // Flash certain elements for a short time after display      
+            // 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);
 
         });
     </script>
 
-    
+
 {include file='admin/footer.html'}