Added filters to include content from add-ons in member listings and detail pages
authorChuck Scott <cscott@gaslightmedia.com>
Thu, 21 Jan 2016 20:15:46 +0000 (15:15 -0500)
committerChuck Scott <cscott@gaslightmedia.com>
Thu, 21 Jan 2016 20:15:46 +0000 (15:15 -0500)
classes/glmPluginSupport.php
controllers/admin.php
glm-member-db.php
models/admin/ajax/imageUpload.php
setup/adminHooks.php
setup/hooksHelp.html [new file with mode: 0644]
views/admin/management/hooks.html
views/front/members/detail.html
views/front/members/list.html

index 9bf0d45..5161382 100644 (file)
@@ -60,7 +60,6 @@ class GlmPluginSupport
                 $dataBlocks = get_option('glmMembersAdminNoticeDataBlocks');
                 $dataBlocks[] = array('data' => $message, 'title' => $title);
                 update_option('glmMembersAdminNoticeDataBlocks', $dataBlocks);
-
                 break;
 
             case 'AdminNotice':
index 7c1f010..f32a4b3 100644 (file)
@@ -843,9 +843,6 @@ class glmMembersAdmin extends GlmPluginSupport
                 glmMembersAdmin::addNotice($x, 'DataBlock', 'Template Parameters');
             }
 
-            $templateVars = '<pre>' . print_r($x, 1) . '</pre>';
-            glmMembersAdmin::addNotice($templateVars, 'Template Parameters', 'Process');
-
         }
 
         // Generate output from model data and view
index 4d6aaca..50fd72a 100644 (file)
@@ -432,7 +432,7 @@ function glmMembersAdminNotices($windowed = true)
     // If windowed for debug, also include HTML header and stylesheet
     if ($windowed) {
 
-           $output .= '
+        $output .= '
             <html>
                 <head>
                     <link rel="stylesheet" href="'.GLM_MEMBERS_PLUGIN_URL.'/css/admin.css">
@@ -541,7 +541,7 @@ function glmMembersStartupNotices() {
     echo '<div class="updated"><h3>'.GLM_MEMBERS_PLUGIN_NAME.' Plugin Warning</h3><p>'.$startupNotices.'</p></div>';
 }
 if ($startupNotices != '') {
-    //add_action('admin_notices','glmMembersStartupNotices');
+    add_action('admin_notices','glmMembersStartupNotices');
 }
 
 /*
@@ -566,7 +566,7 @@ if (is_admin() && $notices) {
  */
 if (!GLM_MEMBERS_PLUGIN_ADMIN_DEBUG) {
     delete_option('glmMembersAdminNoticeAlerts');
-//    delete_option('glmMembersAdminNotices');
+    delete_option('glmMembersAdminNotices');
     delete_option('glmMembersAdminNoticeProcess');
     delete_option('glmMembersAdminNoticeDataBlocks');
 }
index f597847..35c6e25 100644 (file)
@@ -283,4 +283,3 @@ class GlmMembersAdmin_ajax_imageUpload extends GlmDataImages
     }
 
 }
-?>
index 1c00507..8eb9333 100644 (file)
  *  Also note that parameters will be in the context of the main admin controller constructor.
   */
 
+
+// Add content to member detail page
+add_filter('glm-member-db-admin-management-hoooksHelp', function($content) {
+
+        // Read in this plugin/addon hook help file
+        $fname = GLM_MEMBERS_PLUGIN_PATH.'/setup/hooksHelp.html';
+        if (is_file($fname)) {
+            $hooksHelp = file_get_contents($fname);
+            if ($hooksHelp != false) {
+                $content .= $hooksHelp;
+            }
+        }
+        return $content;
+    },
+    10,
+    2
+);
+
 ?>
\ No newline at end of file
diff --git a/setup/hooksHelp.html b/setup/hooksHelp.html
new file mode 100644 (file)
index 0000000..42d21ab
--- /dev/null
@@ -0,0 +1,673 @@
+<!-- Hooks Help from glm-member-db Plugin -->
+
+        <tr><td colspan="3" class="glm-notice"><p>Main Member DB Plugin</p></td></tr>
+
+        <tr><th colspan="3">Add-On Registration Hooks</td></tr>
+        <tr>
+            <td>glm-member-db-register-addon</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Informs the GLM Meembers DB plugin of an installed add-on plugin. Information
+                on the plugin is provided in an array that's returned from the function 
+                referenced in the add_filer() call.
+                <p>
+                The data compiled from all registered add-on plugins is stored in the $config
+                object for reference throughout this plugin.
+                </p><p>
+                An example from the registration of
+                the Contacts add-on is below.
+                </p>
+                <div class="glm-code">
+function glmMembersRegisterContacts($addOns) {
+    $addOns[GLM_MEMBERS_CONTACTS_PLUGIN_SLUG] =  array(
+            'dir' => GLM_MEMBERS_CONTACTS_PLUGIN_PATH,
+            'name' =>  GLM_MEMBERS_CONTACTS_PLUGIN_NAME,
+            'short_name' => GLM_MEMBERS_CONTACTS_PLUGIN_SHORT_NAME
+    );
+    return $addOns;
+}
+add_filter('glm-member-db-register-addon','glmMembersRegisterContacts', 10, 1);
+                </div>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-add-menu</td>
+            <td>Action</td>
+            <td></td>
+            <td>
+                Hook to add a menu or menus (or sub-menus) to the GLM Member DB menus. Note that
+                you may have only menu items and sub-menu items under a main menu item, or in other 
+                words, only 3 levels of menus.
+                <div class="glm-code">
+// This call will generally be in the constructor of the admin controller in the add-on plugin                
+add_action('glm-member-db-add-menu', array($this, 'glmMembersAddMenusContacts'));
+
+// The following two functions would be located elsewhere of the admin controller class.
+public function glmMembersAddMenusContacts()
+{
+    // Add hooks to WordPress
+    add_action('admin_menu', array($this, 'configureMenus'));
+}
+public function configureMenus ()
+{
+    // A test menu
+    add_submenu_page(
+        'glm-members-admin-menu-members',
+        'Contacts',
+        'Contacts',
+        'glm_members_edit',
+        'glm-members-admin-menu-contacts',
+        array($this, 'glmMembersAdminMenuContacts')
+    );
+}
+                </div>
+                <p>
+                Note that in the example above that the function references are as they as 
+                would be used when contained in a class and being called from another
+                method--such as '_constructor()'. This will likely be the case since the
+                add_action() call will generally be located in the constructor of the 
+                add-on's admin controller and the the function called by that will be
+                a function in the same class.  
+                </p>
+                <p>
+                Current list of standard GLM Member DB menu items.
+                </p>
+                <table class="glm-admin-table" border=1">
+                    <tdead>
+                        <tr ><td>Menu</td><td>level</td><td>Slug</td></tr>
+                    </tdead>
+                    <tbody>
+                        <tr><td>Member DB</td><td>Main Menu</td><td>glm-members-admin-menu-members</td></tr>
+                        <tr><td>Members</td><td>Sub-Menu</td><td>(same as Member DB main menu item)</td></tr>
+                        <tr><td>Members</td><td>Sub-Menu</td><td>glm-members-admin-menu-members</td></tr>
+                        <tr><td>Member List</td><td>Sub-Sub-Menu</td><td>glm-members-admin-menu-members-list</td></tr>
+                        <tr><td>Member</td><td>Sub-Menu</td><td>glm-members-admin-menu-member</td></tr>
+                        <tr><td>Configure</td><td>Sub-Menu</td><td>glm-members-admin-menu-configure</td></tr>
+                        <tr><td>Management</td><td>Sub-Menu</td><td>glm-members-admin-menu-management</td></tr>
+                        <tr><td>Shortcodes</td><td>Sub-Menu</td><td>glm-members-admin-menu-shortcodes</td></tr>
+                    </tbody>
+                </table>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-add-tab-for-{menu_item}</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to add a tab or tabs to the header for pages in a particular page where
+                {menu_item} should be the name of the menu item (page) where 
+                the tab(s) should be added.
+                <p>
+                As shown in the example below, the $addOnTabs array that is passed is an array
+                of tab definition arrays wherein 'text' is the text displayed on the tab and 
+                'action' is the action that is to be performed when the tab is clicked. 
+                </p>
+                <div class="glm-code">
+// This call will generally be in the constructor of the admin controller in the add-on plugin                
+add_filter('glm-member-db-add-tab-for-members', array($this, 'glmMembersAddTabForMembers'));
+
+// The following two functions would be located elsewhere in the admin controller class.
+public function glmMembersAddTabForMembers($addOnTabs)
+{
+    $newTabs = array(
+        array(
+            'text' => 'New Tab',
+            'action' => 'contact'
+        ),
+        array(
+            'text' => 'Another Tab',
+            'action' => 'anotherAction'
+        )
+    );
+    $addOnTabs = array_merge($addOnTabs, $newTabs);
+    return $addOnTabs;
+}
+                </div>
+                <p>
+                The tabs are generated from this array by the related header.html template 
+                for the related menu item.
+                </p>
+                <p>
+                Note that in the example above that the function references are as they as 
+                would be used when contained in a class and being called from another
+                method--such as '_constructor()'. This will likely be the case since the
+                add_filter() call will generally be located in the constructor of the 
+                add-on's admin controller and the the function called by that will be
+                a function in the same class.  
+                </p>
+            </td>
+        </tr>
+        
+        <tr><th colspan="3">User Permission Hooks</td></tr>
+        
+        <tr>
+            <td>glm_members_current_logged_in_user</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook requesting additional information on any currently logged in user.
+                <p>
+                This hook is used to accumulate current user information before a controller
+                is executed. The current user information is stored in $config as 'loggedInUser'
+                so as to be available to all subsequent code. The data is stored as an array 
+                and defaults to having one 'wpUser' sub-array.  
+                </p>
+                <p>
+                The code providing the data should return the supplied data even if it is not
+                contributing any additional user information.  
+                </p>
+                <p>
+                If the code is adding user information (i.e. the Contacts add-on adding information
+                on a "contact" user), it should probably supply the data in a separate sub-array
+                (i.e. 'contactUser'). In any case, it must still return the wpUser sub-array
+                data that was provided by the hook.
+                </p>
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_locked_to_member_id</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook requesting any member ID to which the current user might be restricted.
+                <p>
+                The code providing the data should return the provided value if it has no member ID
+                it wishes to pass back, thus permitting this hook to be chained to more than one 
+                possible source of a member ID to which the user should be restricted. For example,
+                a user might only have permissions to view or edit one member and therefore should
+                not have access to any others.
+                </p>
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_menu_members</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to see the "Members" menu. 
+                <p>
+                This hook passes the hooked code a boolean saying whether the permission has 
+                been withdrawn by previously hooked code. The default is true, so all hooked
+                code must pass true back to the hook for the permission to be granted.  
+                </p>
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_menu_member</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to see the "Member" menu. 
+                <p>
+                This hook passes the hooked code a boolean saying whether the permission has 
+                been withdrawn by previously hooked code. The default is true, so all hooked
+                code must pass true back to the hook for the permission to be granted.  
+                </p>
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_menu_configure</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to see the "Configure" menu. 
+                <p>
+                This hook passes the hooked code a boolean saying whether the permission has 
+                been withdrawn by previously hooked code. The default is true, so all hooked
+                code must pass true back to the hook for the permission to be granted.  
+                </p>
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_menu_management</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to see the "Management" menu. 
+                <p>
+                This hook passes the hooked code a boolean saying whether the permission has 
+                been withdrawn by previously hooked code. The default is true, so all hooked
+                code must pass true back to the hook for the permission to be granted.  
+                </p>
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_menu_menu_shortcodes</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to see the "Shortcodes" menu. 
+                <p>
+                This hook passes the hooked code a boolean saying whether the permission has 
+                been withdrawn by previously hooked code. The default is true, so all hooked
+                code must pass true back to the hook for the permission to be granted.  
+                </p>
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_members_index_add_member</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to add a new member on the 
+                Members index page. 
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_members_index_member_config_warning</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to show the user notices regarding
+                information managed under the "Configure" menu. 
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_member_index_edit_member</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to edit member base data.
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_member_index_add_member_info_version</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to add a new member information 
+                version on the Member index page.
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_member_index_view_member_info_version</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to view member infor versions.
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_member_index_clone_activate_info_version</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to Clone or Activate member 
+                information versions on the Member index page.
+            </td>
+        </tr>
+
+
+        <tr>
+            <td>glm_members_permit_admin_widget_members</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to search members in the Dashboard Widget.
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_widget_warnings</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to see configuration and other members 
+                warnings in the Dashboard Widget.
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_widget_pending_info</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to see a list of pending information
+                records for all members in the Dashboard Widget.
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_member_index_list_inactive_info</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to see a list of inactive member information.
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_member_info_edit</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to edit member information.
+            </td>
+        </tr>
+        <tr>
+            <td>glm_members_permit_admin_profile_index_edit_profile</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+                Hook to test if the logged in user is permitted to edit their own profile.
+            </td>
+        </tr>
+        
+        <tr><th colspan="3">Front-End Output Hooks - Member List Page</td></tr>
+
+        <tr>
+            <td>glm-member-db-front-members-list-pageTop</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-mapTop</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-mapBottom</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-searchFormTop</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-searchFormBottom</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-listHeaderTop</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-listHeaderBottom</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberAbove</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberInfoTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberAddressTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberInfoBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberDetailTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberDetailBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberDescriptionTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberDescriptionBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberDataBelow</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-mapBubbleTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-mapBubbleBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-memberBelow</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-list-pageBottom</td>
+            <td>Filter</td>
+            <td></td>
+            <td>
+            </td>
+        </tr>
+
+        <tr><th colspan="3">Front-End Output Hooks - Member Detail Page</td></tr>
+
+        <tr>
+            <td>glm-member-db-front-members-detail-pageTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-addressTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-addressBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-otherDetailTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-otherDetailBottom</td>
+            <td>Filter</td>
+             <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-linksTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-linksBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-attributesTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-attributesBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-descriptionTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-descriptionBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-galleryTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-galleryBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-pageBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-jqueryScriptTop</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        <tr>
+            <td>glm-member-db-front-members-detail-jqueryScriptBottom</td>
+            <td>Filter</td>
+            <td>$memberID</td>
+            <td>
+            </td>
+        </tr>
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
+        
\ No newline at end of file
index e3b059a..4a09f9b 100644 (file)
 {include file='admin/management/header.html'}
 
-   <h2>Hooks Into GLM Member DB Reference</h2>
+   <h2>Hooks Into GLM Member DB Reference</h2>
     
     <p>
-        Listed below are hooks into the GLM Member DB plugin. These hooks are used by
-        add-ons (child plugins) and by themes to extend and modify behavior and output 
-        content of this plugin and its addons.   
+        Listed below are hooks into the GLM Member DB plugin and Add-Ons. These hooks are used by
+        the main GLM Member DB plugin, GLM Member DB Add-Ons (child plugins), and by themes to 
+        extend and modify behavior and output content of this plugin and its addons, including the
+        content on this page.
     </p>
     
     <table class="glm-admin-table">
-        <tr><th>Hook</th><th>Type</th><th>Description</th></tr>
-                <tr>
-            <th>glm-member-db-register-addon</th>
-            <td>Filter</td>
-            <td>
-                Informs the GLM Meembers DB plugin of an installed add-on plugin. Information
-                on the plugin is provided in an array that's returned from the function 
-                referenced in the add_filer() call.
-                <p>f
-                The data compiled from all registered add-on plugins is stored in the $config
-                object for reference throughout this plugin.
-                </p><p>
-                An example from the registration of
-                the Contacts add-on is below.
-                </p>
-                <div class="glm-code">
-function glmMembersRegisterContacts($addOns) {
-    $addOns[GLM_MEMBERS_CONTACTS_PLUGIN_SLUG] =  array(
-            'dir' => GLM_MEMBERS_CONTACTS_PLUGIN_PATH,
-            'name' =>  GLM_MEMBERS_CONTACTS_PLUGIN_NAME,
-            'short_name' => GLM_MEMBERS_CONTACTS_PLUGIN_SHORT_NAME
-    );
-    return $addOns;
-}
-add_filter('glm-member-db-register-addon','glmMembersRegisterContacts', 10, 1);
-                </div>
-            </td>
-        </tr>
-        <tr>
-            <th>glm-member-db-add-menu</th>
-            <td>Action</td>
-            <td>
-                Hook to add a menu or menus (or sub-menus) to the GLM Member DB menus. Note that
-                you may have only menu items and sub-menu items under a main menu item, or in other 
-                words, only 3 levels of menus.
-                <div class="glm-code">
-// This call will generally be in the constructor of the admin controller in the add-on plugin                
-add_action('glm-member-db-add-menu', array($this, 'glmMembersAddMenusContacts'));
-
-// The following two functions would be located elsewhere of the admin controller class.
-public function glmMembersAddMenusContacts()
-{
-    // Add hooks to WordPress
-    add_action('admin_menu', array($this, 'configureMenus'));
-}
-public function configureMenus ()
-{
-    // A test menu
-    add_submenu_page(
-        'glm-members-admin-menu-members',
-        'Contacts',
-        'Contacts',
-        'glm_members_edit',
-        'glm-members-admin-menu-contacts',
-        array($this, 'glmMembersAdminMenuContacts')
-    );
-}
-                </div>
-                <p>
-                Note that in the example above that the function references are as they as 
-                would be used when contained in a class and being called from another
-                method--such as '_constructor()'. This will likely be the case since the
-                add_action() call will generally be located in the constructor of the 
-                add-on's admin controller and the the function called by that will be
-                a function in the same class.  
-                </p>
-                <p>
-                Current list of standard GLM Member DB menu items.
-                </p>
-                <table class="glm-admin-table" border=1">
-                    <thead>
-                        <tr ><th>Menu</th><th>level</th><th>Slug</th></tr>
-                    </thead>
-                    <tbody>
-                        <tr><th>Member DB</th><td>Main Menu</td><td>glm-members-admin-menu-members</td></tr>
-                        <tr><th>Members</th><td>Sub-Menu</td><td>(same as Member DB main menu item)</td></tr>
-                        <tr><th>Members</th><td>Sub-Menu</td><td>glm-members-admin-menu-members</td></tr>
-                        <tr><th>Member List</th><td>Sub-Sub-Menu</td><td>glm-members-admin-menu-members-list</td></tr>
-                        <tr><th>Member</th><td>Sub-Menu</td><td>glm-members-admin-menu-member</td></tr>
-                        <tr><th>Configure</th><td>Sub-Menu</td><td>glm-members-admin-menu-configure</td></tr>
-                        <tr><th>Management</th><td>Sub-Menu</td><td>glm-members-admin-menu-management</td></tr>
-                        <tr><th>Shortcodes</th><td>Sub-Menu</td><td>glm-members-admin-menu-shortcodes</td></tr>
-                    </tbody>
-                </table>
-            </td>
-        </tr>
-        <tr>
-            <th>glm-member-db-add-tab-for-{literal}{menu_item}{/literal}</th>
-            <td>Filter</td>
-            <td>
-                Hook to add a tab or tabs to the header for pages in a particular page where
-                {literal}{menu_item}{/literal} should be the name of the menu item (page) where 
-                the tab(s) should be added.
-                <p>
-                As shown in the example below, the $addOnTabs array that is passed is an array
-                of tab definition arrays wherein 'text' is the text displayed on the tab and 
-                'action' is the action that is to be performed when the tab is clicked. 
-                </p>
-                <div class="glm-code">
-// This call will generally be in the constructor of the admin controller in the add-on plugin                
-add_filter('glm-member-db-add-tab-for-members', array($this, 'glmMembersAddTabForMembers'));
-
-// The following two functions would be located elsewhere in the admin controller class.
-public function glmMembersAddTabForMembers($addOnTabs)
-{
-    $newTabs = array(
-        array(
-            'text' => 'New Tab',
-            'action' => 'contact'
-        ),
-        array(
-            'text' => 'Another Tab',
-            'action' => 'anotherAction'
-        )
-    );
-    $addOnTabs = array_merge($addOnTabs, $newTabs);
-    return $addOnTabs;
-}
-                </div>
-                <p>
-                The tabs are generated from this array by the related header.html template 
-                for the related menu item.
-                </p>
-                <p>
-                Note that in the example above that the function references are as they as 
-                would be used when contained in a class and being called from another
-                method--such as '_constructor()'. This will likely be the case since the
-                add_filter() call will generally be located in the constructor of the 
-                add-on's admin controller and the the function called by that will be
-                a function in the same class.  
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_current_logged_in_user</th>
-            <td>Filter</td>
-            <td>
-                Hook requesting additional information on any currently logged in user.
-                <p>
-                This hook is used to accumulate current user information before a controller
-                is executed. The current user information is stored in $config as 'loggedInUser'
-                so as to be available to all subsequent code. The data is stored as an array 
-                and defaults to having one 'wpUser' sub-array.  
-                </p>
-                <p>
-                The code providing the data should return the supplied data even if it is not
-                contributing any additional user information.  
-                </p>
-                <p>
-                If the code is adding user information (i.e. the Contacts add-on adding information
-                on a "contact" user), it should probably supply the data in a separate sub-array
-                (i.e. 'contactUser'). In any case, it must still return the wpUser sub-array
-                data that was provided by the hook.
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_locked_to_member_id</th>
-            <td>Filter</td>
-            <td>
-                Hook requesting any member ID to which the current user might be restricted.
-                <p>
-                The code providing the data should return the provided value if it has no member ID
-                it wishes to pass back, thus permitting this hook to be chained to more than one 
-                possible source of a member ID to which the user should be restricted. For example,
-                a user might only have permissions to view or edit one member and therefore should
-                not have access to any others.
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_menu_members</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see the "Members" menu. 
-                <p>
-                This hook passes the hooked code a boolean saying whether the permission has 
-                been withdrawn by previously hooked code. The default is true, so all hooked
-                code must pass true back to the hook for the permission to be granted.  
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_menu_member</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see the "Member" menu. 
-                <p>
-                This hook passes the hooked code a boolean saying whether the permission has 
-                been withdrawn by previously hooked code. The default is true, so all hooked
-                code must pass true back to the hook for the permission to be granted.  
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_menu_configure</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see the "Configure" menu. 
-                <p>
-                This hook passes the hooked code a boolean saying whether the permission has 
-                been withdrawn by previously hooked code. The default is true, so all hooked
-                code must pass true back to the hook for the permission to be granted.  
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_menu_management</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see the "Management" menu. 
-                <p>
-                This hook passes the hooked code a boolean saying whether the permission has 
-                been withdrawn by previously hooked code. The default is true, so all hooked
-                code must pass true back to the hook for the permission to be granted.  
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_menu_menu_shortcodes</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see the "Shortcodes" menu. 
-                <p>
-                This hook passes the hooked code a boolean saying whether the permission has 
-                been withdrawn by previously hooked code. The default is true, so all hooked
-                code must pass true back to the hook for the permission to be granted.  
-                </p>
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_members_index_add_member</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to add a new member on the 
-                Members index page. 
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_members_index_member_config_warning</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to show the user notices regarding
-                information managed under the "Configure" menu. 
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_index_edit_member</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to edit member base data.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_index_add_member_info_version</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to add a new member information 
-                version on the Member index page.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_index_view_member_info_version</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to view member infor versions.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_index_clone_activate_info_version</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to Clone or Activate member 
-                information versions on the Member index page.
-            </td>
-        </tr>
-
-
-        <tr>
-            <th>glm_members_permit_admin_widget_members</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to search members in the Dashboard Widget.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_widget_warnings</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see configuration and other members 
-                warnings in the Dashboard Widget.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_widget_pending_info</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see a list of pending information
-                records for all members in the Dashboard Widget.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_index_list_inactive_info</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see a list of inactive member information.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_info_edit</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to edit member information.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_profile_index_edit_profile</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to edit their own profile.
-            </td>
-        </tr>
-        
-        <tr><th colspan="3" class="glm-notice"><p>Contacts Add-On</p></th></tr>
-        <tr>
-            <th>glm_members_permit_admin_member_contacts_tab</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see the member Contacts tab.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_contacts_add_contact</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to add a new contact.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_contacts_view_contact</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to view a contact.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_contacts_edit_contact</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to edit a contact.
-            </td>
-        </tr>
-
-        
-        <tr><th colspan="3" class="glm-notice"><p>Packaging Add-On</p></th></tr>
-        <tr>
-            <th>glm_members_permit_admin_members_packages_tab</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see multi-member packaging tab.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_members_packaging_add_package</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to add a new multi-member package.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_members_packaging_edit_package</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to edit a multi-member package.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_members_packages_tab</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to see the member packaging tab.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_packaging_add_package</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to add a new Member package.
-            </td>
-        </tr>
-        <tr>
-            <th>glm_members_permit_admin_member_packaging_edit_package</th>
-            <td>Filter</td>
-            <td>
-                Hook to test if the logged in user is permitted to edit a member package.
-            </td>
-        </tr>
-
+        <tr><th>Hook</th><th>Type</th><th>Added Parameters</th><th>Description</th></tr>
+            {apply_filters('glm-member-db-admin-management-hoooksHelp', '')}
     </table>
         
-        
-        
 {include file='admin/footer.html'}
-
-
-
-'glm-member-db-add-tab-for-'.$menuItem,
\ No newline at end of file
index 625db67..aacf5fc 100644 (file)
@@ -1,5 +1,7 @@
 {include file='front/members/header.html'}
 
+{apply_filters('glm-member-db-front-members-detail-pageTop', '', $member.id)}
+
 {if $haveMember}
 
         <script src="http://maps.googleapis.com/maps/api/js?sensor=true&key={$settings.google_maps_api_key}"></script>
     {/if}
     
 <!--    <h3>{$terms.term_member_cap} Detail</h3>-->
-    <script>
-    document.write('<a class="button right glm-member-detail-button" href="' + document.referrer + '">Take me back</a>');
-</script>
+    <script> document.write('<a class="button right glm-member-detail-button" href="' + document.referrer + '">Take me back</a>'); </script>
     <div class="row">
         <div class="small-12 columns glm-member-detail-container">
             <div class="row">
                 <div class="small-12 medium-4 glm-member-detail-info columns">
         <!-- Member name, address, and basic information -->                    
-                        <h2>
-                        {$member.member}
-                        </h2>
-                      {if $settings.detail_show_address}
-                          {if $settings.detail_show_street}
-                          {if $member.addr1}<div>{$member.addr1}</div>{/if}
-                          {if $member.addr2}<div>{$member.addr2}</div>{/if}
-                          {/if}
-                          {if $settings.detail_show_citystatezip}
-                          {if $member.city}<span>{$member.city}</span>{if $member.state.name}, {/if}{/if}<span>{if $member.state.name}{$member.state.name}</span>{/if}{if $member.zip} {$member.zip}{/if}
-                          {/if} 
-                                {if $member.country.name && $settings.detail_show_country}<div>{$member.country.name}</div>{/if}
-                      {/if}        
-                        {if $member.phone && $settings.detail_show_phone}<div>Phone: {$member.phone}</div>{/if}
-                        {if $member.toll_free && $settings.detail_show_tollfree}<div><b>Toll Free:</b> {$member.toll_free}</div>{/if}
-                        {if $member.region && $settings.detail_show_region}<div><p><b>Region:</b> {$member.region}</div>{/if}
-                   
-                        <div class="glm-member-list-links"><br>
-                                {if $member.url && $settings.detail_show_url}<a href="{$member.url}"{if $settings.detail_show_url_newtarget} target="_blank"{/if}>Website</a>{/if}
-                                {if $member.email && $settings.detail_show_email}<a href="mailto:{$member.email}">Email</a>{/if}
-                                {if $settings.detail_show_imagegallery && $haveImageGallery}<a href="#glm-member-detail-photo-gallery">Photo Gallery</a>{/if}
-                                {if $settings.detail_show_coupons && $coupons}<a href="#glm-member-detail-coupons">Coupons</a>{/if}
-                                {if $settings.detail_show_packages && $packages}<a href="#glm-member-detail-packages">Packages</a>{/if}
-                        </div>
-                    </div>      
-                    {if $settings.detail_show_map}
-                        {if $member.logo && $settings.detail_show_logo}
-                        <div id="glm-locationMap-container" class="small-12 medium-4 columns">
-                        {else}
-                        <div id="glm-locationMap-container" class="small-12 medium-8 columns">
-                        {/if}
-                            <div id="glm-locationMap" class="glm-map">(map loads here)</div>
-                        </div>
-                    {/if}
-                    {if $member.logo && $settings.detail_show_logo}
-                    <div class="glm-member-detail-image-wrapper small-12 medium-4 columns">
-<!--                            <img class="glm-member-list-image-left" src="http://placehold.it/500x300">-->
-                            <img CLASS="glm-member-list-image-left" src="{$glmPluginMediaURL}/images/{$settings.detail_logo_size}/{$member.logo}">
+                    <h2>
+                    {$member.member}
+                    </h2>
+                  {if $settings.detail_show_address}
+                      {apply_filters('glm-member-db-front-members-detail-addressTop', '', $member.id)}
+                      {if $settings.detail_show_street}
+                      {if $member.addr1}<div>{$member.addr1}</div>{/if}
+                      {if $member.addr2}<div>{$member.addr2}</div>{/if}
+                      {/if}
+                      {if $settings.detail_show_citystatezip}
+                      {if $member.city}<span>{$member.city}</span>{if $member.state.name}, {/if}{/if}<span>{if $member.state.name}{$member.state.name}</span>{/if}{if $member.zip} {$member.zip}{/if}
+                      {/if} 
+                      {if $member.country.name && $settings.detail_show_country}<div>{$member.country.name}</div>{/if}
+                      {apply_filters('glm-member-db-front-members-detail-addressBottom', '', $member.id)}
+                  {/if}        
+                    {apply_filters('glm-member-db-front-members-detail-otherDetailTop', '', $member.id)}
+                    {if $member.phone && $settings.detail_show_phone}<div>Phone: {$member.phone}</div>{/if}
+                    {if $member.toll_free && $settings.detail_show_tollfree}<div><b>Toll Free:</b> {$member.toll_free}</div>{/if}
+                    {if $member.region && $settings.detail_show_region}<div><p><b>Region:</b> {$member.region}</div>{/if}
+                    {apply_filters('glm-member-db-front-members-detail-otherDetailBottom', '', $member.id)}
+                    <div class="glm-member-list-links"><br>
+                            {apply_filters('glm-member-db-front-members-detail-linksTop', '', $member.id)}
+                            {if $member.url && $settings.detail_show_url}<a href="{$member.url}"{if $settings.detail_show_url_newtarget} target="_blank"{/if}>Website</a>{/if}
+                            {if $member.email && $settings.detail_show_email}<a href="mailto:{$member.email}">Email</a>{/if}
+                            {if $settings.detail_show_imagegallery && $haveImageGallery}<a href="#glm-member-detail-photo-gallery">Photo Gallery</a>{/if}
+                            {if $settings.detail_show_coupons && $coupons}<a href="#glm-member-detail-coupons">Coupons</a>{/if}
+                            {if $settings.detail_show_packages && $packages}<a href="#glm-member-detail-packages">Packages</a>{/if}
+                            {apply_filters('glm-member-db-front-members-detail-linksBottom', '', $member.id)}
                     </div>
-                    {/if}
+                </div>
+            {if $settings.detail_show_map}
+                {if $member.logo && $settings.detail_show_logo}
+                <div id="glm-locationMap-container" class="small-12 medium-4 columns">
+                {else}
+                <div id="glm-locationMap-container" class="small-12 medium-8 columns">
+                {/if}
+                    <div id="glm-locationMap" class="glm-map">(map loads here)</div>
+                </div>
+            {/if}
+            {if $member.logo && $settings.detail_show_logo}
+                <div class="glm-member-detail-image-wrapper small-12 medium-4 columns">
+<!--                            <img class="glm-member-list-image-left" src="http://placehold.it/500x300">-->
+                    <img CLASS="glm-member-list-image-left" src="{$glmPluginMediaURL}/images/{$settings.detail_logo_size}/{$member.logo}">
+                </div>
+            {/if}
             </div>
-<!-- Member Description -->                
+            
+            
+            <div>
+                <!-- Laury - Here's a filter for the internal page content links -->
+                {apply_filters('glm-member-db-front-members-detail-internalContentLinks', '', $member.id)}
+            </div>
+
+            
+<!-- Attributes: amenitities, credit cards, etc -->
             <div id="glm-member-detail-descr-row" class="row" data-equalizer data-options="equalize_on_stack:false">
+                {apply_filters('glm-member-db-front-members-detail-attributesTop', '', $member.id)}
                 {if ($member.amenities && $settings.detail_show_amenities) || ($member.cc_type && $settings.detail_show_creditcards) || ($member.categories && $settings.detail_show_categories)}
                 <div id="glm-member-detail-amenities-container" class="small-12 medium-4 columns" >
                     <div data-equalizer-watch>
-                    {if $member.amenities && $settings.detail_show_amenities}
-                    <table>
-                        <th><b>Amenities & Services</b></th>
-                        {foreach $member.amenities as $a}
-                        <tr>
-                            <td>
-                                {$a.name}
-                            </td>
-                        </tr>
-                        {/foreach}
-                    </table>
+                    {apply_filters('glm-member-db-front-members-detail-attributesTop', '', $member.id)}
+                {if $member.amenities && $settings.detail_show_amenities}
+                        <table>
+                            <th><b>Amenities & Services</b></th>
+                            {foreach $member.amenities as $a}
+                            <tr>
+                                <td>
+                                    {$a.name}
+                                </td>
+                            </tr>
+                            {/foreach}
+                        </table>
 
-                    {/if}
-                    {if $member.cc_type && $settings.detail_show_creditcards}
-                            <p>           
-                                <b>Credit Cards Accepted:</b>
-                                <ul>
-                        {foreach $member.cc_type.names as $c}
-                                    <li>{$c}</li>
-                        {/foreach}
-                                </ul>        
-                            </p>
-                    {/if}
-                    {if $member.categories && $settings.detail_show_categories}
-                            <p>           
-                                <b>{$terms.term_member_cap} Categories</b>
-                                <ul>
-                        {foreach $member.categories as $c}
-                                    <li>
-                                        {if $c.parent_name}{$c.parent_name}: {/if}{$c.name}
-                                    </li>
-                        {/foreach}
-                                </ul>
-                            </p>
-                    {/if}
+                {/if}
+                {if $member.cc_type && $settings.detail_show_creditcards}
+                        <p>           
+                            <b>Credit Cards Accepted:</b>
+                            <ul>
+                  {foreach $member.cc_type.names as $c}
+                                <li>{$c}</li>
+                  {/foreach}
+                            </ul>        
+                        </p>
+                {/if}
+                {if $member.categories && $settings.detail_show_categories}
+                        <p>           
+                            <b>{$terms.term_member_cap} Categories</b>
+                            <ul>
+                    {foreach $member.categories as $c}
+                                <li>
+                                    {if $c.parent_name}{$c.parent_name}: {/if}{$c.name}
+                                </li>
+                    {/foreach}
+                            </ul>
+                        </p>
+                {/if}
+                    {apply_filters('glm-member-db-front-members-detail-attributesBottom', '', $member.id)}
                     </div>
                 </div>
+<!-- Member Description -->                
                 <div id="glm-member-detail-description-container" class="small-12 medium-8 columns" >
                 {else}
                 <div id="glm-member-detail-description-container" class="small-12 medium-9 medium-centered columns" >
                 {/if}
                     <div data-equalizer-watch>
+                    {apply_filters('glm-member-db-front-members-detail-descriptionTop', '', $member.id)}
                     {if $member.descr && $settings.detail_show_descr}{$member.descr|nl2br}{/if}
                     {if $member.short_descr && $settings.detail_show_short_descr}{$member.short_descr|nl2br}{/if}
+                    {apply_filters('glm-member-db-front-members-detail-descriptionBottom', '', $member.id)}
                     </div>
                 </div>
             </div>
-            
+            {apply_filters('glm-member-db-front-members-detail-descriptionAfter', '', $member.id)}
 <!-- Image Gallery -->
 
-    {if $settings.detail_show_imagegallery && $haveImageGallery}
-    <div id="glm-member-detail-photos" class="row">
-        <a name="glm-member-detail-photo-gallery"></a>
-        <div class="small-12 columns">
-            <b>Photo Gallery</b>
-        </div>
-
-        <div class="small-12 columns">
-            <ul class="clearing-thumbs small-block-grid-2 medium-block-grid-3 large-block-grid-4" data-clearing>
-    {foreach $imageGallery as $i}
-                <li><a href="{$glmPluginMediaURL}/images/large/{$i.file_name}"><img data-caption="{$i.caption}" src="{$glmPluginMediaURL}/images/small/{$i.file_name}"></a></li>
-    {/foreach}
-            </ul>
-        </div>
-    </div>    
-    {/if}
-    {if $settings.detail_show_coupons && $coupons}
-    <div id="glm-member-detail-photos" class="row">
-        <a name="glm-member-detail-coupons"></a>
-    </div>
-    {/if}
-    {if $settings.detail_show_packages && $havePackages && $packages}
-    <div id="glm-member-detail-photos" class="row">
-        <a name="glm-member-detail-packages"></a>
-    </div>
-    {/if}
+        {if $settings.detail_show_imagegallery && $haveImageGallery}
+            <div id="glm-member-detail-photos" class="row">
+                {apply_filters('glm-member-db-front-members-detail-galleryTop', '', $member.id)}
+                <a name="glm-member-detail-photo-gallery"></a>
+                <div class="small-12 columns">
+                    <b>Photo Gallery</b>
+                </div>
+        
+                <div class="small-12 columns">
+                    <ul class="clearing-thumbs small-block-grid-2 medium-block-grid-3 large-block-grid-4" data-clearing>
+        {foreach $imageGallery as $i}
+                        <li><a href="{$glmPluginMediaURL}/images/large/{$i.file_name}"><img data-caption="{$i.caption}" src="{$glmPluginMediaURL}/images/small/{$i.file_name}"></a></li>
+        {/foreach}
+                    </ul>
+                </div>
+                {apply_filters('glm-member-db-front-members-detail-galleryBottom', '', $member.id)}
+            </div>    
+        {/if}
+            {apply_filters('glm-member-db-front-members-detail-pageBottom', '', $member.id)}
         </div>
     </div>
-    </div>
+</div>
     
     <script type="text/javascript">
         jQuery(document).ready(function($) {
 
+            {apply_filters('glm-member-db-front-members-detail-jqueryScriptTop', '', $member.id)}
+            
     {if $settings.detail_show_map}
             /*
              * Google Maps
                });
                
     {/if} {*detail_show_directions*}   
-           
+
+            {apply_filters('glm-member-db-front-members-detail-jqueryScriptBottom', '', $member.id)}
+
         });
     </script>
   
index 51fa518..838665f 100644 (file)
@@ -1,15 +1,21 @@
 {include file='front/members/header.html'}
 
+        {apply_filters('glm-member-db-front-members-list-pageTop', '')}
+        
         <script src="http://maps.googleapis.com/maps/api/js?sensor=true&key={$settings.google_maps_api_key}"></script>
 
 {if $settings.list_show_map}
+        {apply_filters('glm-member-db-front-members-list-mapTop', '')}
         <div id="glm-locationMap" class="glm-map">(map loads here)</div>
+        {apply_filters('glm-member-db-front-members-list-mapBottom', '')}
 {/if}
 
 {if $settings.list_show_search}
+        
         <form action="{$thisURL}?glm_action=list" method="post" enctype="multipart/form-data">
             <div class="row">           
                 <div class="small-12 columns glm-member-entry-container">
+                    {apply_filters('glm-member-db-front-members-list-searchFormTop', '')}
                     <div class="row">
                         <div class="small-12 columns">
                             <h3><br>Search for a {$terms.term_member_cap}</h3>
 
             {/if}    
                     <div class="row"><div class="small-12 columns"><input type="submit" value="Search"></div></div>
+                    {apply_filters('glm-member-db-front-members-list-searchFormBottom', '')}
                 </div>
             </div>
         </form>
 {/if} {*list_show_search*}
 
+        {apply_filters('glm-member-db-front-members-list-listHeaderTop', '')}
 {if $settings.list_show_list}    
         <h3>List of {$terms.term_member_plur_cap}</h3>
   {if $haveMembers}
       {/foreach}
         </div>
     {/if}
+        {apply_filters('glm-member-db-front-members-list-listHeaderBottom', '')}
              
     <!-- Member information displayed in list -->
     
     {foreach $members as $m}
         
+        {apply_filters('glm-member-db-front-members-list-memberAbove', '', $m.id)}
         <div class="row">
             <div class="small-12 columns glm-member-list-container">
+                {apply_filters('glm-member-db-front-members-list-memberTop', '', $m.id)}
                 <div class="row">
-                <!-- Member Logo - Medium and up-->  
+                <!-- Member Logo - Medium and up-->
                 {if $m.logo && $settings.list_show_logo}
                     <div class="glm-member-list-image-wrapper small-12 medium-4 columns">
                         <div class="glm-member-list-image-border">
                     <div class="glm-member-list-image-wrapper small-12 medium-4 columns"><br></div>
                     <div class="small-12 medium-4 glm-member-list-active-info columns">    
                 {/if}
-<!-- Member name, address, and basic information -->                    
-                        <h2>
-              {if $settings.list_show_detail_link}
-                            <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member}</a>
+<!-- Member name, address, and basic information -->
+                    {apply_filters('glm-member-db-front-members-list-memberInfoTop', '', $m.id)}                                        
+                    <h2>
+          {if $settings.list_show_detail_link}
+                        <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/">{$m.member}</a>
 
-              {else}
-                            {$m.member}
-              {/if}
-                        </h2>
+          {else}
+                        {$m.member}
+          {/if}
+                    </h2>
               {if $settings.list_show_address}
+                    {apply_filters('glm-member-db-front-members-list-memberAddressTop', '', $m.id)} 
                   {if $settings.list_show_street}
                   {if $m.addr1 && $settings.list_show_address}<div>{$m.addr1}</div>{/if}
                   {if $m.addr2 && $settings.list_show_addr2}<div>{$m.addr2}</div>{/if}
                   {if $settings.list_show_citystatezip}
                   {if $m.city}<span>{$m.city}</span>{if $m.state.name}, {/if}{/if}<span>{if $m.state.name}{$m.state.name}</span>{/if}{if $m.zip} {$m.zip}{/if}
                   {/if} 
-                        {if $m.country.name && $settings.list_show_country}<div>{$m.country.name}</div>{/if}
+                  {if $m.country.name && $settings.list_show_country}<div>{$m.country.name}</div>{/if}
+                  {apply_filters('glm-member-db-front-members-list-memberAddressBottom', '', $m.id)}
               {/if}        
-                        {if $m.phone && $settings.list_show_phone}<div>Phone: {$m.phone}</div>{/if}
-                        {if $m.toll_free && $settings.list_show_tollfree}<div><b>Toll Free:</b> {$m.toll_free}</div>{/if}
-                        {if $m.region && $settings.list_show_region}<div><p><b>Region:</b> {$m.region}</div>{/if}
-                    
+                    {apply_filters('glm-member-db-front-members-list-memberDetailTop', '', $m.id)}    
+                    {if $m.phone && $settings.list_show_phone}<div>Phone: {$m.phone}</div>{/if}
+                    {if $m.toll_free && $settings.list_show_tollfree}<div><b>Toll Free:</b> {$m.toll_free}</div>{/if}
+                    {if $m.region && $settings.list_show_region}<div><p><b>Region:</b> {$m.region}</div>{/if}
+                
                     <div class="glm-member-list-links"><br>
-                                {if $m.url && $settings.list_show_url}<a href="{$m.url}"{if $settings.list_show_url_newtarget} target="_blank"{/if}>Website</a>{/if}
-                                {if $m.email && $settings.list_show_email}<a href="mailto:{$m.email}">Email</a>{/if}
-                        </div>
-                         </div>
+                        {if $m.url && $settings.list_show_url}<a href="{$m.url}"{if $settings.list_show_url_newtarget} target="_blank"{/if}>Website</a>{/if}
+                        {if $m.email && $settings.list_show_email}<a href="mailto:{$m.email}">Email</a>{/if}
+                    </div>
+                    {apply_filters('glm-member-db-front-members-list-memberDetailBottom', '', $m.id)}
+                </div>
                 <div class="glm-member-list-description small-12 medium-4 left columns">
-                        
-                {if $m.short_descr && $settings.list_show_short_descr}
-                    {$m.short_descr|nl2br}
-                {elseif $m.descr && $settings.list_show_description}
-                    {$m.descr|nl2br}
-                {/if}
-                        
+                {apply_filters('glm-member-db-front-members-list-memberDescriptionTop', '', $m.id)}                        
+            {if $m.short_descr && $settings.list_show_short_descr}
+                {$m.short_descr|nl2br}
+            {elseif $m.descr && $settings.list_show_description}
+                {$m.descr|nl2br}
+            {/if}
+                {apply_filters('glm-member-db-front-members-list-memberDescriptionBottom', '', $m.id)}
                 {if $m.categories && $settings.list_show_categories}
                         <p>
                             <b>{$terms.term_member_cap} Categories</b>
                         </p>
                 {/if}
                     </div>
-                        
                     </div>
+                    <!-- Laury - This is the one that should go underneath all the address and description area -->
+                    {apply_filters('glm-member-db-front-members-list-memberDataBelow', '', $m.id)}
+                    
+                    {apply_filters('glm-member-db-front-members-list-memberBottom', '', $m.id)}
                  </div>
+                 {apply_filters('glm-member-db-front-members-list-memberBelow', '', $m.id)}
 <!-- Member Description -->   
         </div>
         
-        
         <!-- Member information displayed in map bubbles -->
         <div id="map_info_{$m.id}" class="glm-hidden">
+            {apply_filters('glm-member-db-front-members-list-mapBubbleTop', '', $m.id)}
             {if $m.logo && $settings.list_map_show_logo}<div class="glm-member-list-image"><img src="{$glmPluginMediaURL}/images/{$settings.list_map_logo_size}/{$m.logo}"></div>{/if}
             <div class="glm-map-member-name">
               {if $settings.list_map_show_detaillink}
                 </div>
         {/if}
             </div>
+            {apply_filters('glm-member-db-front-members-list-mapBubbleBottom', '', $m.id)}
         </div> <!-- End of information displayed in map bubbles -->
                 
     {/foreach} {*$members*}
-
+        {apply_filters('glm-member-db-front-members-list-pageBottom', '')}
 {else}
         <div>(no {$terms.term_member_plur} listed)</div>
 {/if}