Added optional template selection for package list output to use in member pages.
authorChuck Scott <cscott@gaslightmedia.com>
Thu, 21 Jan 2016 20:17:02 +0000 (15:17 -0500)
committerChuck Scott <cscott@gaslightmedia.com>
Thu, 21 Jan 2016 20:17:02 +0000 (15:17 -0500)
models/front/packaging/list.php
setup/frontHooks.php
setup/shortcodes.php
views/front/packaging/listForMemberDetail.html [new file with mode: 0644]
views/front/packaging/listForMemberListing.html [new file with mode: 0644]
views/front/packaging/packagesLinkForMemberDetail.html [new file with mode: 0644]

index 654f27e..3802d0c 100644 (file)
@@ -186,18 +186,10 @@ class GlmMembersFront_packaging_list extends GlmDataPackages
             $status = true;
         }
 
-        // Member sort function
-        function packageMemberCmp($a, $b) {
-            if ($a['member_name'] == $b['member_name']) {
-                return 0;
-            }
-            return ($a['member_name'] < $b['member_name']) ? -1 : 1;
-        }
-
         /*
          * Sort by Member
          */
-        if ($actionData['request']['order'] == 'member') {
+        if (false && $havePackages && $actionData['request']['order'] == 'member') {
 
             // Create empty array that will take all the data by member
             $members = array();
@@ -225,11 +217,32 @@ class GlmMembersFront_packaging_list extends GlmDataPackages
 
             // Sort by member name
             reset($members);
-            uasort($members, 'packageMemberCmp');
+            uasort($members, function($a, $b) {
+                if ($a['member_name'] == $b['member_name']) {
+                    return 0;
+                }
+                return ($a['member_name'] < $b['member_name']) ? -1 : 1;
+            });
 
             $byMember = true;
         }
 
+        // Check for alternate template requests
+        switch($actionData['request']['template']) {
+            case 'member-list':
+                $view = 'listForMemberListing.html';
+                break;
+            case 'packages-link':
+                $view = 'packagesLinkForMemberDetail.html';
+                break;
+            case 'member-detail':
+                $view = 'listForMemberDetail.html';
+                break;
+            default:
+                $view = 'list.html';
+                break;
+        }
+
         // Compile template data
         $templateData = array(
             'siteBaseUrl' => GLM_MEMBERS_SITE_BASE_URL,
@@ -244,7 +257,7 @@ class GlmMembersFront_packaging_list extends GlmDataPackages
             'status' => $status,
             'menuItemRedirect' => false,
             'modelRedirect' => false,
-            'view' => 'front/packaging/list.html',
+            'view' => 'front/packaging/'.$view,
             'data' => $templateData,
             'settings' => $settings
         );
index 6a61ce9..599881a 100644 (file)
@@ -33,7 +33,7 @@ add_filter('rewrite_rules_array', function($rules) {
     return $newrules + $rules;
 });
 
-// Add packageslug query var
+// Add package slug query var
 add_filter('query_vars', function($vars) {
     array_push($vars, 'packageslug');
     return $vars;
@@ -48,16 +48,38 @@ add_filter('init', function() {
     }
 });
 
-// Add content to member detail page - Get it from the existing package detail shortcode
 if (isset($this->config['addOns']['glm-member-db'])) {
+
+    // Add content to member listing page - Get it from the existing package listing shortcode
+    add_filter('glm-member-db-front-members-list-memberDataBelow', function($content, $id) {
+            $packageData = do_shortcode('[glm-members-packaging-list member='.$id.' template="member-list" order="title"]');
+            $content .= $packageData;
+            return $content;
+        },
+        10,
+        2
+    );
+
+    // Add internal page content links to member detail page
+    add_filter('glm-member-db-front-members-detail-internalContentLinks', function($content, $id) {
+            $packageData = do_shortcode('[glm-members-packaging-list member='.$id.', template="packages-link" order="title"]');
+            $content .= $packageData;
+            return $content;
+        },
+        10,
+        2
+    );
+
+    // Add content to member detail page - Get it from the existing package listing shortcode
     add_filter('glm-member-db-front-members-detail-descriptionBottom', function($content, $id) {
-            $packageData = do_shortcode('[glm-members-packaging-detail id="'.$id.'"]');
+            $packageData = do_shortcode('[glm-members-packaging-list member='.$id.', template="member-detail" order="title"]');
             $content .= $packageData;
             return $content;
         },
         10,
         2
     );
+
 }
 
 ?>
\ No newline at end of file
index 4d7ae5b..74d2870 100644 (file)
@@ -71,7 +71,8 @@ $glmMembersPackagingShortcodes = array(
         'attributes' => array(
             'type' => 'all',                            // 'all', 'member', 'multi-member'
             'order' => 'member',                        // 'member', 'title', 'start-date', 'end-date', 'exp-date'
-            'member' => false                           // ID of member for member specific list
+            'member' => false,                          // ID of member for member specific list
+            'template' => false                         // Template type (member-list, member-detail, default is normal)
         )
     ),
     'glm-members-packaging-detail' => array(
@@ -147,6 +148,23 @@ $glmMembersPackagingShortcodesDescription = '
             </p>
         </td>
     </tr>
+    <tr>
+        <td>&nbsp;</td>
+        <th>template="{template type}"</th>
+        <td>
+            <p>
+            Used to ask the packaging list shortcode to use an alternate template.
+            This option is used when calling the shortcode with the do_shortcode() function to include via a filter
+            in the member listing or detail page.
+            <p>
+                <table width="100%">
+                    <tr><th colspan=3">Template Types</th></tr>
+                    <tr><td>member-list</td><td>Used when producing output for inclusion in a member listing page.</td></tr>
+                    <tr><td>member-detail</td><td>Used when producing output for inclusion in a member detail page</td></tr>
+                </table>
+            </p>
+        </td>
+    </tr>
     <tr>
         <th>[glm-members-packaging-detail]</th>
         <td>&nbsp;</td>
diff --git a/views/front/packaging/listForMemberDetail.html b/views/front/packaging/listForMemberDetail.html
new file mode 100644 (file)
index 0000000..7450dd0
--- /dev/null
@@ -0,0 +1,28 @@
+{if $havePackages}
+<h1>Packages</h1>
+
+<div>
+    {foreach $packages as $p}
+        <!-- Container for each package -->
+        <div class="package">
+
+            <!-- Container for package information -->
+            <div class="package-info">
+                
+              {if $p.image}
+               <div class="glm-member-img-wrap">
+                <img src="{$glmPluginMediaURL}/images/medium/{$p.image}">
+               </div> 
+              {/if}
+                <h3 class="package-title"><a href="{$siteBaseUrl}{$settings.canonical_package_page}/{$p.package_slug}/">{$p.title}</a></h3>
+                {$p.short_descr}
+                <div class="details">
+                    <div><span class="title">Expires: </span><span class="data">{$p.expire_date.date}</span></div>
+                    <div><span class="title">Pricing: </span><span class="data">{$p.pricing}</span></div>
+                </div>
+            </div>
+        
+        </div>
+    {/foreach} <!-- /package -->
+</div>
+{/if}
diff --git a/views/front/packaging/listForMemberListing.html b/views/front/packaging/listForMemberListing.html
new file mode 100644 (file)
index 0000000..ff59c55
--- /dev/null
@@ -0,0 +1,28 @@
+{if $havePackages}
+<h2>Packages</h2>
+
+<div>
+    {foreach $packages as $p}
+        <!-- Container for each package -->
+        <div class="package">
+
+            <!-- Container for package information -->
+            <div class="package-info">
+                
+              {if $p.image}
+               <div class="glm-member-img-wrap">
+                <img src="{$glmPluginMediaURL}/images/medium/{$p.image}">
+               </div> 
+              {/if}
+                <h3 class="package-title"><a href="{$siteBaseUrl}{$settings.canonical_package_page}/{$p.package_slug}/">{$p.title}</a></h3>
+                {$p.short_descr}
+                <div class="details">
+                    <div><span class="title">Expires: </span><span class="data">{$p.expire_date.date}</span></div>
+                    <div><span class="title">Pricing: </span><span class="data">{$p.pricing}</span></div>
+                </div>
+            </div>
+        
+        </div>
+    {/foreach} <!-- /package -->
+</div>
+{/if}
diff --git a/views/front/packaging/packagesLinkForMemberDetail.html b/views/front/packaging/packagesLinkForMemberDetail.html
new file mode 100644 (file)
index 0000000..16a699d
--- /dev/null
@@ -0,0 +1,5 @@
+{if $havePackages}
+<div>
+    <a name="Package Stuff">Internal Page Link to Packages</a>
+</div>
+{/if}