Initial testing done. Pushing to development.
authorChuck Scott <cscott@gaslightmedia.com>
Tue, 16 Feb 2016 15:17:49 +0000 (10:17 -0500)
committerChuck Scott <cscott@gaslightmedia.com>
Tue, 16 Feb 2016 15:17:49 +0000 (10:17 -0500)
classes/data/dataMemberInfo.php
models/admin/member/memberEdit.php
models/admin/member/memberInfo.php
models/front/members/detail.php
models/front/members/list.php
views/admin/member/memberEdit.html
views/admin/member/memberInfo.html

index 63c1658..c04b98d 100644 (file)
@@ -297,6 +297,7 @@ class GlmDataMemberInfo extends GlmDataAbstract
         */
        public function getActiveInfoSimplified($member) {
 
+echo "******************* CHECK ON THIS getActiveInfoSimplified() *******************";exit;
            // Get the ID for the current info record for this member
            $mInfoID = $this->getActiveInfoForMember($member);
            if (!$mInfoID) {
@@ -311,18 +312,7 @@ class GlmDataMemberInfo extends GlmDataAbstract
             'member' => $f['member'],
             'member_name' => $f['member_name'],
             'member_slug' => $f['member_slug'],
-            'member_pointer' => $f['member_pointer'],
-            'member_addr1' => $f['addr1'],
-            'member_addr2' => $f['addr2'],
-            'member_city' => $f['city'],
-            'member_state' => $f['state'],
-            'member_country' => $f['country'],
-            'member_zip' => $f['zip'],
-            'member_phone' => $f['phone'],
-            'member_toll_free' => $f['toll_free'],
-            'member_email' => $f['email'],
-            'member_url' => $f['url'],
-            'member_logo' => $f['logo']
+            'member_pointer' => $f['member_pointer']
         );
 
         // Save current post processing flag and turn it off
@@ -413,7 +403,103 @@ class GlmDataMemberInfo extends GlmDataAbstract
         return $list;
     }
 
+    /*
+     * Get Member Info List with Member Data
+     *
+     * @param string $where Where clause
+     * @param string $sort Sort field
+     *
+     * @return object Class object
+     *
+     */
+    public function getListWithMemberData($where = '', $sort = '')
+    {
+
+        // Member data
+        require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMembers.php');
+        $Members = new GlmDataMembers($this->wpdb, $this->config);
+
+        // Get list of memberInfo data
+        $list = $this->getList($where, $sort);
+
+        // For each member info record bet base member data
+        while (list($key, $val) = each($list)) {
+
+            $mData = $Members->getEntry($val['member_pointer']);
+
+            $list[$key] = array_merge($val, array(
+                'logo' => $mData['logo'],
+                'addr1' => $mData['addr1'],
+                'addr2' => $mData['addr2'],
+                'city' => $mData['city'],
+                'state' => $mData['state'],
+                'zip' => $mData['zip'],
+                'country' => $mData['country'],
+                'phone' => $mData['phone'],
+                'toll_free' => $mData['toll_free'],
+                'region' => $mData['region'],
+                'url' => $mData['url'],
+                'email' => $mData['email'],
+                'categories' => $mData['categories'],
+                'cc_type' => $mData['cc_type'],
+                'lat' => $mData['lat'],
+                'lon' => $mData['lon']
+            ));
 
-}
+        }
 
-?>
\ No newline at end of file
+        return $list;
+    }
+
+    /*
+     * Get Member Info For a Member with Member Data
+     *
+     * @param integer $member Member ID
+     * @param string $where Where clause
+     *
+     * @return object Class object
+     *
+     */
+    public function getActiveInfoForMemberWithMemberData($member, $where = 'true')
+    {
+
+        // Member data
+        require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataMembers.php');
+        $Members = new GlmDataMembers($this->wpdb, $this->config);
+
+        $memberInfoID = $this->getActiveInfoForMember($member, $where);
+
+        $memberInfo = $this->getEntry($memberInfoID);
+
+        if ($memberInfo) {
+
+            $mData = $Members->getEntry($member);
+
+            $memberInfo = array_merge($memberInfo, array(
+                'logo' => $mData['logo'],
+                'addr1' => $mData['addr1'],
+                'addr2' => $mData['addr2'],
+                'city' => $mData['city'],
+                'state' => $mData['state'],
+                'zip' => $mData['zip'],
+                'country' => $mData['country'],
+                'phone' => $mData['phone'],
+                'toll_free' => $mData['toll_free'],
+                'region' => $mData['region'],
+                'url' => $mData['url'],
+                'email' => $mData['email'],
+                'categories' => $mData['categories'],
+                'cc_type' => $mData['cc_type'],
+                'lat' => $mData['lat'],
+                'lon' => $mData['lon']
+            ));
+
+        } else {
+            return false;
+        }
+
+        return $memberInfo;
+    }
+
+
+}
index 76c5699..2dc9d82 100644 (file)
@@ -112,10 +112,11 @@ class GlmMembersAdmin_member_memberEdit extends GlmDataMembers
         $categories = false;
         $this->memberID = false;
         $memberUpdated = false;
+        $memberUpdateError = false;
         $memberData = false;
         $haveMember = false;
+        $memberName = false;
         $addingMember = false;
-        $memberUpdated = false;
 
         /*
          * Get some data we're going to need
@@ -240,6 +241,8 @@ class GlmMembersAdmin_member_memberEdit extends GlmDataMembers
 
                     $memberName = $memberData['fieldData']['name'];
 
+                } else {
+                    $memberUpdateError = true;
                 }
 
                 $haveMember = true;
@@ -254,7 +257,6 @@ class GlmMembersAdmin_member_memberEdit extends GlmDataMembers
 
                     // Update submitted categories
                     $this->updateCategories();
-echo "------------------------------------asd+";
                     $memberData = $this->insertEntry();
 
                     // If update was successful then use editEntry() to setup for the edit again.
@@ -275,6 +277,8 @@ echo "------------------------------------asd+";
 
                         $memberName = $memberData['fieldData']['name'];
 
+                    } else {
+                        $memberUpdateError = true;
                     }
 
                 break;
@@ -311,21 +315,8 @@ echo "------------------------------------asd+";
             'member' => $memberData,
             'memberName' => $memberName,
             'addingMember' => $addingMember,
-            'memberUpdated' => $memberUpdated
-
-/*
-            'addingMember' => $addingMember,
-            'member' => $memberData,
-            'memberName' => $memberName,
-            'haveInfoRecords' => $haveInfoRecords,
-            'memberInfoRecords' => $memberInfoRecords,
-            'noActive' => $noActive,
-            'showArchived' => $showArchived,
-            'haveMemberInfo' => $haveMemberInfo,
             'memberUpdated' => $memberUpdated,
-            'statusTypeNumbers' => $this->config['status_numb'],
-            'statusPending' => $this->config['status_numb']['Pending']
-*/
+            'memberUpdateError' => $memberUpdateError
         );
 
         // Return status, suggested view, and data to controller
index 70037d6..a2524d6 100644 (file)
@@ -199,6 +199,7 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
 
         $this->optionIncludeSelectListData = true;
         $memberUpdated = false;
+        $memberUpdateError = false;
 
         // Check for action option - Should be one of the values in the "switch" statement below
         $option = false;
@@ -289,6 +290,8 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
                     $this->memberInfo = $this->updateEntry($this->memberInfoID, 'id', true, true);
                     if ($this->memberInfo['status']) {
                         $memberUpdated = true;
+                    } else {
+                        $memberUpdateError = true;
                     }
 
                     break;
@@ -436,6 +439,7 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
             'memberInfoID' => $this->memberInfoID,
             'memberInfo' => $this->memberInfo,
             'memberUpdated' => $memberUpdated,
+            'memberUpdateError' => $memberUpdateError,
             'availableAmenities' => $this->amenities,
             'haveImageGallery' => $this->haveImageGallery,
             'imageGallery' => $this->imageGallery,
index 50de114..a15dfef 100644 (file)
@@ -239,7 +239,13 @@ class GlmMembersFront_members_detail extends GlmDataMemberInfo
 
         }
 
-        // Find the active member info record
+        // Default is we didn't find the member info
+        $memberData = false;
+        $haveMember = false;
+        $haveImageGallery = false;
+        $imageGallery = false;
+
+        // Find the active member info record and get it with main member data
         $where = "
             (
                 SELECT access
@@ -251,40 +257,22 @@ class GlmMembersFront_members_detail extends GlmDataMemberInfo
                  ".$this->config['access_numb']['Full']."
                  )
         ";
-        $memberInfoID = $this->getActiveInfoForMember($id, $where);
+        $memberData = $this->getActiveInfoForMemberWithMemberData($id, $where);
 
-        // Default is we didn't find the member info
-        $memberData = false;
-        $haveMember = false;
-        $haveImageGallery = false;
-        $imageGallery = false;
-
-        // If we did get a member ID
-        if ($memberInfoID) {
-
-            /*
-             *  Get data on the specified member
-             */
-            $memberData = $this->getEntry($memberInfoID);
+        if (GLM_MEMBERS_PLUGIN_FRONT_DEBUG) {
+            glmMembersFront::addNotice($memberData, 'DataBlock', 'Member Info with Member Data');
+        }
 
+        // If we did get member Info
+        if ($memberData) {
 
-            if (GLM_MEMBERS_PLUGIN_FRONT_DEBUG) {
-                glmMembersFront::addNotice($memberData, 'DataBlock', 'Member Data');
-            }
-
-            // If we have member data
             $success = true;
-            if ($memberData !== false) {
-
-                $success = true;
-                $haveMember = true;
-
-            }
+            $haveMember = true;
 
             // Also get any image gallery images
             require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataImages.php');
             $Images = new GlmDataImages($this->wpdb, $this->config);
-            $imageGallery = $Images->getGallery($this->config['ref_type_numb']['MemberInfo'], $memberInfoID);
+            $imageGallery = $Images->getGallery($this->config['ref_type_numb']['MemberInfo'], $memberData['id']);
             $haveImageGallery = ($imageGallery != false);
 
         }
index f42bf87..6b6c71f 100644 (file)
@@ -435,7 +435,7 @@ class GlmMembersFront_members_list extends GlmDataMemberInfo
          */
 
         // Get member list and sort
-        $list = $this->getList($where.$alphaWhere, 'member_name');
+        $list = $this->getListWithMemberData($where.$alphaWhere, 'member_name');
 
         if (GLM_MEMBERS_PLUGIN_FRONT_DEBUG) {
             glmMembersFront::addNotice($list, 'DataBlock', 'Member Data');
index c212a6a..a0a88cf 100644 (file)
   {/if}
     </h2>
 
-  {if $memberUpdated}
-    <h2 class="glm-notice glm-flash-updated">Member Updated</h2>
-  {/if}
-  
   {if apply_filters('glm_members_permit_admin_member_index_edit_member', true)}
     <form id="member-edit-form" action="{$thisURL}?page={$thisPage}" method="post" enctype="multipart/form-data">
         <input type="hidden" name="glm_action" value="memberEdit">
@@ -39,7 +35,8 @@
             <a id="glm-member-general" data-show-table="glm-table-general" class="glm-member-tab nav-tab nav-tab-active">General Settings</a>
             <a id="glm-member-address" data-show-table="glm-table-address" class="glm-member-tab nav-tab">Address and Location</a>
             <a id="glm-member-other" data-show-table="glm-table-other" class="glm-member-tab nav-tab">Other Information</a>
-            <span class="glm-right"><input type="submit" value="{if $memberID && $member}Update member{else}Add new member{/if}"></span>
+            {if $memberUpdated}<span class="glm-notice glm-flash-updated glm-right">Member Updated</span>{/if}
+            {if $memberUpdateError}<span class="glm-error glm-flash-updated glm-right">Member Update Error</span>{/if}
         </h2>
         
         <!-- **** General Settings **** -->
@@ -47,7 +44,7 @@
         <table id="glm-table-general" class="glm-admin-table glm-member-table">
             <tr>
                 <th {if $member.fieldRequired.name}class="glm-required"{/if}>Member Name:</th>
-                <td {if $member.fieldFail.name}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.name}class="glm-form-bad-input glm-form-bad-input-general"{/if}>
                     <input type="text" name="name" value="{$member.fieldData.name}" class="glm-form-text-input">
                     {if $member.fieldFail.name}<p>{$member.fieldFail.name}</p>{/if}
                 </td>
@@ -64,7 +61,7 @@
             
             <tr>
                 <th {if $member.fieldRequired.access}class="glm-required"{/if}>Member Display & Access:</th>
-                <td {if $member.fieldFail.access}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.access}class="glm-form-bad-input glm-form-bad-input-general"{/if}>
                     <select name="access">
         {foreach from=$member.fieldData.access.list item=v}
                         <option value="{$v.value}"{if $v.default} selected="selected"{/if}>{$v.name}</option>
@@ -75,7 +72,7 @@
             </tr>
             <tr>
                 <th {if $member.fieldRequired.member_type}class="glm-required"{/if}>Member Type:</th>
-                <td {if $member.fieldFail.member_type}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.member_type}class="glm-form-bad-input glm-form-bad-input-general"{/if}>
                     <select name="member_type">
         {foreach from=$member.fieldData.member_type.list item=v}
                         <option value="{$v.value}"{if $v.default} selected="selected"{/if}>{$v.name}</option>
@@ -89,7 +86,7 @@
         {/if}
             <tr>
                 <th {if $member.fieldRequired.notes}class="glm-required"{/if}>Notes:</th>
-                <td {if $member.fieldFail.notes}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.notes}class="glm-form-bad-input glm-form-bad-input-general"{/if}>
                     <textarea name="notes" class="glm-form-textarea">{$member.fieldData.notes}</textarea>
                     {if $member.fieldFail.notes}<p>{$member.fieldFail.notes}</p>{/if}<br>
                     This "Notes" field is not displayed anywhere else. It is strictly for making and keeping
         <table id="glm-table-address" class="glm-admin-table glm-hidden glm-member-table">
             <tr>
                 <th {if $member.fieldRequired.addr1}class="glm-required"{/if}>Address Line 1:</th>
-                <td {if $member.fieldFail.addr1}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.addr1}class="glm-form-bad-input glm-form-bad-input-address"{/if}>
                     <input type="text" id="addr1" name="addr1" value="{$member.fieldData.addr1}" class="glm-form-text-input">
                     {if $member.fieldFail.addr1}<p>{$member.fieldFail.addr1}</p>{/if}
                 </td>
             </tr>
             <tr>
                 <th {if $member.fieldRequired.addr2}class="glm-required"{/if}>Address Line 2:</th>
-                <td {if $member.fieldFail.addr2}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.addr2}class="glm-form-bad-input glm-form-bad-input-address"{/if}>
                     <input id="addr2" type="text" name="addr2" value="{$member.fieldData.addr2}" class="glm-form-text-input">
                     {if $member.fieldFail.addr2}<p>{$member.fieldFail.addr2}</p>{/if}
                 </td>
             </tr>
             <tr>
                 <th {if $member.fieldRequired.state}class="glm-required"{/if}>State:</th>
-                <td {if $member.fieldFail.state}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.state}class="glm-form-bad-input glm-form-bad-input-address"{/if}>
                     <select id="state" name="state">
         {foreach from=$member.fieldData.state.list item=v}
                         <option value="{$v.value}"{if $v.default} selected="selected"{/if}>
             </tr>
             <tr>
                 <th {if $member.fieldRequired.zip}class="glm-required"{/if}>ZIP / Postal Code:</th>
-                <td {if $member.fieldFail.zip}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.zip}class="glm-form-bad-input glm-form-bad-input-address"{/if}>
                     <input id="zip" type="text" name="zip" value="{$member.fieldData.zip}" class="glm-form-text-input-short">
                     {if $member.fieldFail.zip}<p>{$member.fieldFail.zip}</p>{/if}
                 </td>
             </tr>
             <tr>
                 <th {if $member.fieldRequired.country}class="glm-required"{/if}>Country:</th>
-                <td {if $member.fieldFail.country}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.country}class="glm-form-bad-input glm-form-bad-input-address"{/if}>
                     <select id="country" name="country">
         {foreach from=$member.fieldData.country.list item=v}
                         <option value="{$v.value}"{if $v.default} selected="selected"{/if}>
             </tr>
             <tr>
                 <th {if $member.fieldRequired.region}class="glm-required"{/if}>Region:</th>
-                <td {if $member.fieldFail.region}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.region}class="glm-form-bad-input glm-form-bad-input-other"{/if}>
                     <select name="region">
         {foreach from=$member.fieldData.region.list item=v}
                         <option value="{$v.value}"{if $v.default} selected="selected"{/if}>{$v.name}</option>
             </tr>
             <tr>
                 <th {if $member.fieldRequired.phone}class="glm-required"{/if}>Phone #:</th>
-                <td {if $member.fieldFail.phone}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.phone}class="glm-form-bad-input glm-form-bad-input-other"{/if}>
                     <input type="text" name="phone" value="{$member.fieldData.phone}" class="glm-form-text-input-short" placeholder="ex: 123-456-7890 ext 123">
                     {if $member.fieldFail.phone}<p>{$member.fieldFail.phone}</p>{/if}
                 </td>
             </tr>
             <tr>
                 <th {if $member.fieldRequired.toll_free}class="glm-required"{/if}>Toll Free #:</th>
-                <td {if $member.fieldFail.toll_free}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.toll_free}class="glm-form-bad-input glm-form-bad-input-other"{/if}>
                     <input type="text" name="toll_free" value="{$member.fieldData.toll_free}" class="glm-form-text-input-short" placeholder="ex: 800-123-4567">
                     {if $member.fieldFail.toll_free}<p>{$member.fieldFail.toll_free}</p>{/if}
                 </td>
             </tr>
             <tr>
                 <th {if $member.fieldRequired.url}class="glm-required"{/if}>Web Address (URL):</th>
-                <td {if $member.fieldFail.url}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.url}class="glm-form-bad-input glm-form-bad-input-other"{/if}>
         {if $member.fieldData.url}
                     <a class="button button-secondary glm-right" href="{$member.fieldData.url}" target="urlTarget">Test Link</a>
         {/if}
             </tr>
             <tr>
                 <th {if $member.fieldRequired.cc_type}class="glm-required"{/if}>Credit Cards Accepted:</th>
-                <td {if $member.fieldFail.cc_type}class="glm-form-bad-input"{/if}>
+                <td {if $member.fieldFail.cc_type}class="glm-form-bad-input glm-form-bad-input-other"{/if}>
         {foreach from=$member.fieldData.cc_type.bitmap item=v}
                     <input type="checkbox" name="cc_type[{$v.value}]" value="{$v.value}"{if $v.default} checked{/if}> {$v.name}<br>
         {/foreach}                    
         </table>
         <p><span class="glm-required">*</span> Required</p>
     {if $addingMember}
-        <input type="submit" value="Add new member">
+        <input id="updateMember" type="submit" value="Add new member">
     {else}
-        <input type="submit" value="Update member">
+        <input id="updateMember" type="submit" value="{if $memberID && $member}Update member{else}Add new member{/if}">
     {/if}
     </form>
   {else}
                 <th>Member Name:</th>
                 <td>{$member.fieldData.name}</td>
             </tr>
-            <tr>
-                <th>Name for URLs:</th>
-                <td>{$member.fieldData.member_slug}</td>
-            </tr>
             <tr>
                 <th>Member Display & Access:</th>
                 <td>{$member.fieldData.access.name}</td>
                 <td>{$member.fieldData.member_type.name}</td>
             </tr>            
             <tr><th>Date created:</th><td>{$member.fieldData.created.date}</td></tr>            
+             <tr>
+                <td>&nbsp;</td>
+                <td> 
+                    <h3>Member Address</h3>
+                    <p>The map below will display the likely location as you enter or edit the address.</p> 
+                </td>
+            </tr>
+            <tr>
+                <th>Address:</th>
+                <td>
+                    {$member.fieldData.addr1}<br>
+                    {if $member.fieldData.addr2 != ''}{$member.fieldData.addr2}<br>{/if}
+                    {$member.fieldData.city.name}, {$member.fieldData.state.name} {$member.fieldData.zip}<br>
+                    {$member.fieldData.country.name}
+                </td>
+            </tr>
+            <tr>
+                <th>Categories</th>
+                <td class="glm-item-container">
+        {if isset($member.fieldData.categories) && $member.fieldData.categories}
+            {foreach from=$member.fieldData.categories item=c}
+                    <div data-id="{$c.id}" class="glm-dynSelect-item glm-members-catgegory"> 
+                        {if $c.parent_name != ''}{$c.parent_name}: {/if}{$c.name} 
+                        <input type="hidden" name="category[{$c.id}]" value="{$c.id}">
+                   </div>                    
+            {/foreach}
+        {/if}                    
+                </td>
+            </tr>
+            <tr><th>Region:</th><td>{$member.fieldData.region.name}</td></tr>
+            <tr><th>Phone #:</th><td>{$member.fieldData.phone}</td></tr>
+            <tr><th>Toll Free #:</th><td>{$member.fieldData.toll_free}</td></tr>
+            <tr><th>Web Address (URL):</th><td><a href="{$member.fieldData.url}" target="urlTarget">{$member.fieldData.url}</a></td></tr>
+            <tr><th>E-Mail Address:</th><td>{$member.fieldData.email}</td></tr>
+            <tr><th>Logo:</th>
+                <td {if $member.fieldFail.logo}class="glm-form-bad-input"{/if}>
+        {if $member.fieldData.logo}
+                    <div class="glm-galleryImage" data-id="logo">
+                        <img src="{$glmPluginMediaURL}/images/small/{$member.fieldData.logo}">
+                    </div>
+                    <div id="glm-galleryImageLarger_logo" class="glm-imageDialog"><img src="{$glmPluginMediaURL}/images/large/{$member.fieldData.logo}"></div>
+        {/if}
+                </td>
+            </tr>
+            <tr>
+                <th>Credit Cards Accepted:</th>
+                <td>
+        {foreach from=$member.fieldData.cc_type.bitmap item=v}
+                    {$v.name}&nbsp;&nbsp;
+        {/foreach}                    
+                </td>
+            </tr>
+            <tr><th>Notes:</th><td>{$member.fieldData.notes}</td></tr>
         </table>
     {else}
         <h3>No member information available.</h3>
             // 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);
 
+            
+            /*
+             * Check for bad input or input changes
+             */
+             
+            // Check for any field errors and if found change related tab to error color.
+            if ($('.glm-form-bad-input-general').length) {
+                $('#glm-member-general').addClass('glm-bad-input-area');
+            }
+            if ($('.glm-form-bad-input-address').length) {
+                $('#glm-member-address').addClass('glm-bad-input-area');
+            }
+            if ($('.glm-form-bad-input-other').length) {
+                $('#glm-member-other').addClass('glm-bad-input-area');
+            }
+            
+            // Check for most input changes
+            $('input, textarea, select').on( 'change', function() {
+                glmPageUpdateRequired();
+            }); 
+
+            /*
+             * Checks for leaving the page
+             */
+            var glmSubmitRequired = false;
+             
+            // Flag submit button when updates are required.
+            function glmPageUpdateRequired() {
+                $('#updateMember').addClass('glm-bad-input-area');
+                glmSubmitRequired = true;
+            }
+            // When submit button is clicked, disable the beforeunload message
+            $('#updateMember').on('click', function() {
+                glmSubmitRequired = false;
+                return true;
+            });
+            
+            // If submit is required and we're laving the page, alert the user
+            $(window).bind('beforeunload', function() {
+                if (glmSubmitRequired) {
+                    return 'Are you sure you want to leave?';
+                }
+                return '';
+            });
+            
+
         });
     </script>
 
index b656934..0cae9e1 100644 (file)
@@ -1,7 +1,5 @@
 {include file='admin/member/header.html'}
 
-    {if $memberUpdated}<h2 class="glm-notice glm-flash-updated">Member Profile Updated</h2>{/if}
-    
     <!--[if lt IE 9]>
       <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
     <![endif]-->
@@ -92,7 +90,8 @@
     <h2 class="nav-tab-wrapper" style="margin-bottom: 1em;">
         <a id="glm-member-info-general" data-show-table="glm-table-general" class="glm-member-info-tab nav-tab nav-tab-active">General Information</a>
         <a id="glm-member-info-gallery" data-show-table="glm-table-gallery" class="glm-member-info-tab nav-tab">Image Gallery</a>
-        <span class="glm-right"><input id="updateMemberProfile" type="submit" value="{if $memberInfoID && $memberInfo}Update member profile{else}Add new member profile{/if}"></span>
+        {if $memberUpdated}<span class="glm-notice glm-flash-updated glm-right">Member Profile Updated</span>{/if}
+        {if $memberUpdateError}<span class="glm-error glm-flash-updated glm-right">Member Profile Update Error</span>{/if}
     </h2>
             
         <table id="glm-table-general" class="glm-admin-table glm-member-info-table">
             </tr>
         </table>
         <p><span class="glm-required">*</span> Required</p>
-        <input type="submit" value="{if $memberInfoID && $memberInfo}Update member profile{else}Add new member profile{/if}">
+        <input id="updateMemberProfile" type="submit" value="{if $memberInfoID && $memberInfo}Update member profile{else}Add new member profile{/if}">
 
     </form>
     
             </tr>
             <tr><th>Description:</th><td>{$memberInfo.fieldData.descr|escape:quotes}</td></tr>
             <tr><th>Short Description:</th><td>{$memberInfo.fieldData.short_descr}</td></tr>
-            <tr>
-                <td>&nbsp;</td>
-                <td> 
-                    <h3>Member Address</h3>
-                    <p>The map below will display the likely location as you enter or edit the address.</p> 
-                </td>
-            </tr>
-            <tr>
-                <th>Address:</th>
-                <td>
-                    {$memberInfo.fieldData.addr1}<br>
-                    {if $memberInfo.fieldData.addr2 != ''}{$memberInfo.fieldData.addr2}<br>{/if}
-                    {$memberInfo.fieldData.city.name}, {$memberInfo.fieldData.state.name} {$memberInfo.fieldData.zip}<br>
-                    {$memberInfo.fieldData.country.name}
-                </td>
-            </tr>
-            <tr>
-                {if $memberInfo.fieldRequired.lat}<th class="emRequiredInputField">{else}<th>{/if}Location:</th>
-                <td>
-                    <input id="glmLat" name="lat" type="hidden" value="{$memberInfo.fieldData.lat}">
-                    <input id="glmLng" name="lon" type="hidden" value="{$memberInfo.fieldData.lon}">
-                    <div id="locationMap" class="glm-map-edit">(map loads here)</div>     
-                    Selected Position: <span id="mapPosition">Lat {$memberInfo.fieldData.lat}, Lon {$memberInfo.fieldData.lon}</span>
-                </td>
-            </tr>
             <tr>
                 <td>&nbsp;</td>
                 <td>
                     <h3>Other Information</h3>
                 </td>
             </tr>
-            <tr>
-                <th>Categories</th>
-                <td class="glm-item-container">
-        {if isset($memberInfo.fieldData.categories) && $memberInfo.fieldData.categories}
-            {foreach from=$memberInfo.fieldData.categories item=c}
-                    <div data-id="{$c.id}" class="glm-dynSelect-item glm-members-catgegory"> 
-                        {if $c.parent_name != ''}{$c.parent_name}: {/if}{$c.name} 
-                        <input type="hidden" name="category[{$c.id}]" value="{$c.id}">
-                   </div>                    
-            {/foreach}
-        {/if}                    
-                </td>
-            </tr>
             <tr>
                 <th>Amenities</th>
                 <td class="glm-item-container">
         {/if}                    
                 </td>
             </tr>
-            <tr><th>Region:</th><td>{$memberInfo.fieldData.region.name}</td></tr>
-            <tr><th>Phone #:</th><td>{$memberInfo.fieldData.phone}</td></tr>
-            <tr><th>Toll Free #:</th><td>{$memberInfo.fieldData.toll_free}</td></tr>
-            <tr><th>Web Address (URL):</th><td><a href="{$memberInfo.fieldData.url}" target="urlTarget">{$memberInfo.fieldData.url}</a></td></tr>
-            <tr><th>E-Mail Address:</th><td>{$memberInfo.fieldData.email}</td></tr>
-            <tr><th>Logo:</th>
-                <td {if $memberInfo.fieldFail.logo}class="glm-form-bad-input"{/if}>
-        {if $memberInfo.fieldData.logo}
-                    <div class="glm-galleryImage" data-id="logo">
-                        <img src="{$glmPluginMediaURL}/images/small/{$memberInfo.fieldData.logo}">
-                    </div>
-                    <div id="glm-galleryImageLarger_logo" class="glm-imageDialog"><img src="{$glmPluginMediaURL}/images/large/{$memberInfo.fieldData.logo}"></div>
-        {/if}
-                </td>
-            </tr>
-            <tr>
-                <th>Credit Cards Accepted:</th>
-                <td>
-        {foreach from=$memberInfo.fieldData.cc_type.bitmap item=v}
-                    {$v.name}&nbsp;&nbsp;
-        {/foreach}                    
-                </td>
-            </tr>
             <tr><th>Notes:</th><td>{$memberInfo.fieldData.notes}</td></tr>
             <tr>
                 <th>Image Gallery</th>
             // Action to de-select an Amenity
             $('.amenityDelete').live('click', function() {
                 $(this).parent().remove();
+                // Also set unload warning 
+                glmPageUpdateRequired();
             });
 
     {if $memberInfoID && $memberInfo}            
             // Delete Member Info dialog
             $("#deleteMemberInfoDialog").dialog({
                 autoOpen: false,
-                minWidth: 400,
+                minWidth: 4,
                 dialogClass: "glm-dialog-no-close"
             });
             $('#deleteMemberInfoButton').click( function() {
             
             // Check for most input changes
             $('input, textarea, select').on( 'change', function() {
-                updateRequired();
+                glmPageUpdateRequired();
             }); 
-            
+
+            /*
+             * Checks for leaving the page
+             */
+            var glmSubmitRequired = false;
+             
             // Flag submit button when updates are required.
-            function updateRequired() {
+            function glmPageUpdateRequired() {
                 $('#updateMemberProfile').addClass('glm-bad-input-area');
+                glmSubmitRequired = true;
             }
+            // When submit button is clicked, disable the beforeunload message
+            $('#updateMemberProfile').on('click', function() {
+                glmSubmitRequired = false;
+                return true;
+            });
             
+            // If submit is required and we're laving the page, alert the user
+            $(window).bind('beforeunload', function() {
+                if (glmSubmitRequired) {
+                    return 'Are you sure you want to leave?';
+                }
+                return '';
+            });
+            
+
         });
     </script>