Last changes before initial deployment
authorChuck Scott <cscott@gaslightmedia.com>
Wed, 4 May 2016 19:19:47 +0000 (15:19 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Wed, 4 May 2016 19:20:00 +0000 (15:20 -0400)
12 files changed:
classes/data/dataEvents.php
models/admin/events/list.php
setup/adminMenus.php
setup/adminTabs.php
setup/permissions.php
views/admin/events/edit.html
views/admin/events/editAdminContact.html
views/admin/events/editFiles.html
views/admin/events/editLocation.html
views/admin/events/editStatus.html
views/admin/events/index.html
views/admin/events/list.html

index cbfa4b6..a75e307 100644 (file)
@@ -418,6 +418,7 @@ class GlmDataEvents extends GlmDataAbstract
             'admin_name' => array (
                 'field' => 'admin_name',
                 'type' => 'text',
+                'required' => true,
                 'use' => 'a'
             ),
 
@@ -432,6 +433,7 @@ class GlmDataEvents extends GlmDataAbstract
             'admin_email' => array (
                 'field' => 'admin_email',
                 'type' => 'text',
+                'required' => true,
                 'use' => 'a'
             ),
 
@@ -439,6 +441,7 @@ class GlmDataEvents extends GlmDataAbstract
             'admin_phone' => array (
                 'field' => 'admin_phone',
                 'type' => 'text',
+                'required' => true,
                 'use' => 'a'
             ),
 
index db351f7..9e33770 100644 (file)
@@ -95,6 +95,7 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
         $numbEvents = 0;
         $option = 'list';
         $events = false;
+        $haveEvents = false;
         $event = false;
         $haveEvent = false;
         $this->eventID = false;
@@ -551,14 +552,6 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
                         $dateWhere = " start_time <= '$toMYSQL' ";
                     }
                 }
-/*
-                // If we have a from but not a to date, use from as the to but don't populate the to field
-                } elseif ($fromDate) {
-                    $toDate = date('m/d/Y', strtotime($_REQUEST['fromDate']));
-                    $toMYSQL = date('Y-m-d', strtotime($toDate." +1 day"));
-                    $toDate = false;
-                }
-*/
 
                 // If we have from and to dates, do search for those inclusive
                 if ($dateWhere != '') {
@@ -628,6 +621,9 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
 
                 // since we're doing paging, we have to break out just the events data
                 $events = $eventsResult['list'];
+                if (count($events)>0) {
+                    $haveEvents = true;
+                }
                 unset($eventsResult);
 
                 break;
@@ -674,6 +670,7 @@ class GlmMembersAdmin_events_list extends GlmDataEvents
         $templateData = array(
             'option' => $option,
             'events' => $events,
+            'haveEvents' => $haveEvents,
             'event' => $event,
             'haveEvent' => $haveEvent,
             'eventID' => $this->eventID,
index f15592b..87a1137 100644 (file)
  *
  */
 
-// Add a main menu item
-/*
-add_menu_page(
-    'GLM Events',                                       // Page Title
-    'GLM Events',                                       // Menu Title
-    'glm-members-members',                              // Capability
-    'glm-members-admin-menu-events',                    // Menu Slug
-    function() {$this->controller('events');},          // Called function
-    false,                                              // Icon URL
-    '92'                                                // Menu Position
-);
-
-add_submenu_page(
-    'glm-members-admin-menu-events',                    // Parent slug
-    'Add Event',                                        // Page title
-    'Add Event',                                        // Menu Title
-    'glm_members_members',                              // Capability required
-    'glm-members-admin-menu-events-add',                // Menu slug
-    function() {$this->controller('add');}
-);
- */
-
 add_submenu_page(
     'glm-members-admin-menu-members',                   // Parent slug
     'Events',                                           // Page title
@@ -109,3 +87,17 @@ add_submenu_page(
     'glm-members-admin-menu-events-list',                // Menu slug
     function() {$this->controller('events', 'list');}
 );
+
+// If a contact is logged in (ownEntity isn't false), add Contact Profile menu item
+if ($this->config['loggedInUser']['contactUser']) {
+
+    add_submenu_page(
+        $mainMenuSlug,
+        'Events',
+        'Events',
+        'glm_members_edit_my_entity',
+        'glm-members-admin-menu-events-list',
+        function() {$this->controller('events');}
+    );
+
+}
index 1f32580..3807126 100644 (file)
  *
  */
 
-add_filter('glm-member-db-add-tab-for-member',
-    function($addOnTabs) {
-        $newTabs = array(
-            array(
-                'text' => 'Events',
-                'menu' => 'member',
-                'action' => 'events',
-                'option' => 'list'
-            ),
+// If user can manage all members
+if (current_user_can('glm_members_members')) {
 
-        );
-        $addOnTabs = array_merge($addOnTabs, $newTabs);
-        return $addOnTabs;
-    }
-);
-
-add_filter('glm-member-db-add-tab-for-settings',
-    function($addOnTabs) {
-        $newTabs = array(
-            array(
-                'text' => 'Event Categories',
-                'menu' => 'settings',
-                'action' => 'eventCategories'
-            ),
+    add_filter('glm-member-db-add-tab-for-member',
+        function($addOnTabs) {
+            $newTabs = array(
+                array(
+                    'text' => 'Events',
+                    'menu' => 'member',
+                    'action' => 'events',
+                    'option' => 'list'
+                ),
 
-        );
-        $addOnTabs = array_merge($addOnTabs, $newTabs);
-        return $addOnTabs;
-    }
-);
+            );
+            $addOnTabs = array_merge($addOnTabs, $newTabs);
+            return $addOnTabs;
+        }
+    );
 
+    add_filter('glm-member-db-add-tab-for-settings',
+        function($addOnTabs) {
+            $newTabs = array(
+                array(
+                    'text' => 'Event Categories',
+                    'menu' => 'settings',
+                    'action' => 'eventCategories'
+                ),
 
-add_filter('glm-member-db-add-tab-for-events',
-    function($addOnTabs) {
-        $newTabs = array(
-            array(
-                'text' => 'Event Categories',
-                'menu' => 'events',
-                'action' => 'categories'
-            ),
+            );
+            $addOnTabs = array_merge($addOnTabs, $newTabs);
+            return $addOnTabs;
+        }
+    );
 
-        );
-        $addOnTabs = array_merge($addOnTabs, $newTabs);
-        return $addOnTabs;
-    }
-);
 
-if (apply_filters('glm_members_permit_admin_members_events_tab', true)) {
-    add_filter('glm-member-db-add-tab-for-management',
+    add_filter('glm-member-db-add-tab-for-events',
         function($addOnTabs) {
             $newTabs = array(
                 array(
-                    'text' => 'Events',
-                    'menu' => 'management',
-                    'action' => 'events'
-                )
+                    'text' => 'Event Categories',
+                    'menu' => 'events',
+                    'action' => 'categories'
+                ),
+
             );
             $addOnTabs = array_merge($addOnTabs, $newTabs);
             return $addOnTabs;
         }
     );
-}
 
+    if (apply_filters('glm_members_permit_admin_members_events_tab', true)) {
+        add_filter('glm-member-db-add-tab-for-management',
+            function($addOnTabs) {
+                $newTabs = array(
+                    array(
+                        'text' => 'Events',
+                        'menu' => 'management',
+                        'action' => 'events'
+                    )
+                );
+                $addOnTabs = array_merge($addOnTabs, $newTabs);
+                return $addOnTabs;
+            }
+        );
+    }
+
+}
\ No newline at end of file
index 0600857..ca66d0d 100644 (file)
  *
  * Of course any of these may test more than one capability if that's desired.
  */
+
+// Logged in all members manager user may edit an event for all members
+add_filter('glm_members_permit_admin_members_event',
+    function($permit) {
+        if (!$permit) { return false; }
+        return current_user_can('glm_members_edit_any_member');
+    }
+);
+
+// Logged in member user may edit an event only for their own entity
+add_filter('glm_members_permit_admin_member_event',
+    function($permit) {
+        if (!$permit) { return false; }
+        return current_user_can('glm_members_edit_my_member');
+    }
+);
index 63217b9..2e00c78 100644 (file)
@@ -4,7 +4,8 @@
     {include file='admin/events/header.html'}
 {/if}
 
-{if apply_filters('glm_members_permit_admin_members_packaging_edit_package', true)}
+{if apply_filters('glm_members_permit_admin_member_event', true)}
+
   {if $haveMember}
     <a href="{$thisUrl}?page=glm-members-admin-menu-member&glm_action=events&member={$memberID}" class="button button-secondary glm-button glm-right">Return to Events List</a>
   {else}
@@ -40,9 +41,8 @@
             <a id="glm-event-location" data-show-table="glm-table-location" class="glm-event-tab nav-tab">Location</a>
             <a id="glm-event-recurrence" data-show-table="glm-table-recurrence" class="glm-event-tab nav-tab">Dates</a>
             <a id="glm-event-calendar" data-show-table="glm-table-calendar" class="glm-event-tab nav-tab">Summary Calendar</a>
-            <a id="glm-event-settings" data-show-table="glm-table-settings" class="glm-event-tab nav-tab">Administrative Contact</a>
+            <a id="glm-event-admin" data-show-table="glm-table-settings" class="glm-event-tab nav-tab">Administrative Contact</a>
             <a id="glm-event-files" data-show-table="glm-table-files" class="glm-event-tab nav-tab">Attach Files</a>
-            <input id="updateEvent" class="glm-right button button-primary" type="submit" value="{if $haveEvent}Update Event{else}Save New Event{/if}">
             <div class="glm-right" style="padding-right: 1em;">
                 {if $eventUpdated}<span class="glm-notice glm-flash-updated glm-right">Event Updated</span>{/if}
                 {if $eventUpdateError}<span class="glm-error glm-flash-updated glm-right">Event Update Error</span>{/if}
@@ -80,6 +80,8 @@
         <!-- Admin Contact -->
 
         {include file='admin/events/editAdminContact.html'}
+        
+        <input id="updateEvent" type="submit" value="{if $haveEvent}Update Event{else}Save New Event{/if}">
 
     </form>
 
 
                 initMap(locID);
                 initNewCity();
+                
+                // Listen for changes in the lat/lon inputs
+                $('.latLonRecenter').on('click', function() {
+
+                    locID = $(this).attr('data-id');
+                    
+                    // Get lat and lon from the input fields
+                    var glmLat = $('#glmLat_' + locID).val();
+                    var glmLng = $('#glmLng_' + locID).val();
+                    
+                    location[locID] = new google.maps.LatLng(glmLat, glmLng);
+                    
+                    initMap(locID);
+                    
+                    return false;
+                    
+                });
+
 
             }
             
 
             }
 
-/* Not used anymore ????
-            $('#addRecurrenceButton').click( function() {
-                $('#addRecurrenceDialog').dialog('open');
-            });
-            $('#addRecurrenceCancel').click( function() {
-                $("#addRecurrenceDialog").dialog("close");
-            });
-*/
             /*
              * Category Selection
              */
                     glmLng = this.position.lng();
 
                     // Assign it to the hidden fields for submission
-                    $('#glmLat_' + locID).val(glmLat);
-                    $('#glmLng_' + locID).val(glmLng);
+                    $('#glmLat_' + locID).val(glmLat.toFixed(6));
+                    $('#glmLng_' + locID).val(glmLng.toFixed(6));
 
                     // Also display it to the user
                     $('#mapPosition_' + locID).html('Lat ' + glmLat.toFixed(4) + ', Lon ' + glmLng.toFixed(4));
                         // Assign the new position to the hidden fields for submission
                         glmLat = results[0].geometry.location.lat();
                         glmLng = results[0].geometry.location.lng();
-                        $('#glmLat_' + locID).val(glmLat);
-                        $('#glmLng_' + locID).val(glmLng);
+                        $('#glmLat_' + locID).val(glmLat.toFixed(6));
+                        $('#glmLng_' + locID).val(glmLng.toFixed(6));
 
                         // Also display it to the user
                         $('#mapPosition_' + locID).html('Lat ' + glmLat.toFixed(4) + ', Lon ' + glmLng.toFixed(4));
index f353ade..df0f0f7 100644 (file)
@@ -7,9 +7,10 @@
                 <table>
                     <tr><td>&nbsp;</td><th>Administrative Contact Information</th></tr>
                     <tr>
-                        <th>Admin Contact Name:</th>
-                        <td>
+                        <th {if $event.fieldRequired.admin_name}class="glm-required"{/if}>Admin Contact Name:</th>
+                        <td {if $event.fieldFail.admin_name}class="glm-form-bad-input" data-tabid="glm-event-admin"{/if}>
                             <input type="text" name="admin_name" value="{$event.fieldData.admin_name}" class="glm-form-text-input-medium">
+                            {if $event.fieldFail.admin_name}<p>{$event.fieldFail.admin_name}</p>{/if}<br>
                         </td>
                     </tr>
                     <tr>
                         </td>
                     </tr>
                     <tr>
-                        <th>Admin Contact E-Mail:</th>
-                        <td>
+                        <th {if $event.fieldRequired.admin_email}class="glm-required"{/if}>Admin Contact E-Mail:</th>
+                        <td {if $event.fieldFail.admin_email}class="glm-form-bad-input" data-tabid="glm-event-admin"{/if}>
                             <input type="text" name="admin_email" value="{$event.fieldData.admin_email}" class="glm-form-text-input-medium">
+                            {if $event.fieldFail.admin_email}<p>{$event.fieldFail.admin_name}</p>{/if}<br>
                         </td>
                     </tr>
                     <tr>
-                        <th>Admin Contact Phone:</th>
-                        <td>
+                        <th {if $event.fieldRequired.admin_phone}class="glm-required"{/if}>Admin Contact Phone:</th>
+                        <td {if $event.fieldFail.admin_phone}class="glm-form-bad-input" data-tabid="glm-event-admin"{/if}>
                             <input type="text" name="admin_phone" value="{$event.fieldData.admin_phone}" class="glm-form-text-input-medium">
+                            {if $event.fieldFail.admin_phone}<p>{$event.fieldFail.admin_phone}</p>{/if}<br>
                         </td>
                     </tr>
+                    </tr>
                 </table>
             </td>
             <td width="50%">
index d7a57f6..c3c6393 100644 (file)
@@ -18,7 +18,8 @@
         <tr>
             <th {if $event.fieldRequired.file1_descr}class="glm-required"{/if}>&nbsp;&nbsp;&nbsp;Description:</th>
             <td {if $event.fieldFail.file1_descr}class="glm-form-bad-input" data-tabid="glm-event-files"{/if}>
-                <textarea name="file1_descr" class="glm-form-textarea">{$event.fieldData.file1_descr}</textarea>
+                <input type="text" name="file1_descr" class="glm-form-text-input" value="{$event.fieldData.file1_descr}" maxlength="165">
+                <br>Maximum 165 characters
                 {if $event.fieldFail.file1_descr}<p>{$event.fieldFail.file1_descr}</p>{/if}
             </td>
         </tr>
@@ -38,7 +39,8 @@
         <tr>
             <th {if $event.fieldRequired.file2_descr}class="glm-required"{/if}>&nbsp;&nbsp;&nbsp;Description:</th>
             <td {if $event.fieldFail.file2_descr}class="glm-form-bad-input" data-tabid="glm-event-files"{/if}>
-                <textarea name="file2_descr" class="glm-form-textarea">{$event.fieldData.file2_descr}</textarea>
+                <input type="text" name="file2_descr" class="glm-form-text-input" value="{$event.fieldData.file2_descr}" maxlength="165">
+                <br>Maximum 165 characters
                 {if $event.fieldFail.file2_descr}<p>{$event.fieldFail.file2_descr}</p>{/if}
             </td>
         </tr>
@@ -59,7 +61,8 @@
         <tr>
             <th {if $event.fieldRequired.file3_descr}class="glm-required"{/if}>&nbsp;&nbsp;&nbsp;Description:</th>
             <td {if $event.fieldFail.file3_descr}class="glm-form-bad-input" data-tabid="glm-event-files"{/if}>
-                <textarea name="file3_descr" class="glm-form-textarea">{$event.fieldData.file3_descr}</textarea>
+                <input type="text" name="file3_descr" class="glm-form-text-input" value="{$event.fieldData.file3_descr}" maxlength="165">
+                <br>Maximum 165 characters
                 {if $event.fieldFail.file3_descr}<p>{$event.fieldFail.file3_descr}</p>{/if}
             </td>
         </tr>
index 3ce1110..dab0722 100644 (file)
                             <tr>
                                 <th>Location:</th>
                                 <td>
-                                    <input id="glmLat_{$loc.id}" name="Loc{$loc.id}_lat" type="hidden" value="{$loc.lat}">
-                                    <input id="glmLng_{$loc.id}" name="Loc{$loc.id}_lon" type="hidden" value="{$loc.lon}">
                                         <span class="glm-right">
                                     <!-- Only doing one location per event right now
                                             <a id="deleteLocation_{$loc.id}" data-id="{$loc.id}" class="button button-primary glm-button glm-right delete-location">Delete Location222</a>
                                     <div id="glm-estimate-location_{$loc.id}" class="button button-secondary">Map Location Using Above Address</div>
                                     <p>
                                         <div id="locationMap_{$loc.id}" class="glm-map-edit">(map loads here)</div>
-                                        <span id="mapPosition_{$loc.id}">Lat {$loc.lat}, Lon {$loc.lon}</span>
+                                        <p>                
+                                            <b>Position:</b> 
+                                            &nbsp;Lat <input id="glmLat_{$loc.id}" name="Loc{$loc.id}_lat" type="text" value="{$loc.lat}" class="glm-form-text-input-veryshort">
+                                            &nbsp;Lon <input id="glmLng_{$loc.id}" name="Loc{$loc.id}_lon" type="text" value="{$loc.lon}" class="glm-form-text-input-veryshort">
+                                            &nbsp;&nbsp;<span data-id="{$loc.id}" class="button button-secondary latLonRecenter">Update pointer</span>
+                                        </p>
                                     </p>
                                 </td>
                             </tr>
                         <p>
                             locationMap_{ newLocID }
                             <div id="locationMap_{ newLocID }" class="glm-map-edit">(map loads here)</div>
-                            <span id="mapPosition_{ newLocID }">Lat {$newLocation.fieldData.lat}, Lon {$newLocation.fieldData.lon}</span>
+                            <p>                            
+                                <b>Position:</b> 
+                                &nbsp;Lat <input id="glmLat_{ newLocID }" name="lat" type="text" value="{$newLocation.fieldData.lat}" class="glm-form-text-input-veryshort">
+                                &nbsp;Lon <input id="glmLng_{ newLocID }" name="lon" type="text" value="{$newLocation.fieldData.lon}" class="glm-form-text-input-veryshort">
+                                &nbsp;&nbsp;<span data-id="{ newLocID }" class="button button-secondary latLonRecenter">Update pointer.</span>
+                            </p>
                         </p>
                     </td>
                 </tr>
index 3ce154e..9f7a046 100644 (file)
@@ -14,6 +14,7 @@
             <td>
         {if $haveMember}
                 {$memberData.member_name}
+                <input type="hidden" name="ref_dest_id" value="{$memberData.id}">
         {else}
                 <select id="memberSelect" name="ref_dest">
     {foreach $event.fieldData.ref_dest.list as $v}
         <tr>
             <th {if $event.fieldRequired.intro}class="glm-required"{/if}>Intro Text:</th>
             <td {if $event.fieldFail.intro}class="glm-form-bad-input" data-tabid="glm-event-descr"{/if}>
-                <textarea name="intro" class="glm-form-textarea">{$event.fieldData.intro}</textarea>
+                <input type="text" name="intro" class="glm-form-text-input" value="{$event.fieldData.intro}" maxlength="165">
+                <br>Maximum 165 characters            
                 {if $event.fieldFail.intro}<p>{$event.fieldFail.intro}</p>{/if}
             </td>
         </tr>
                     {/if}
                 </div>
                 {if $event.fieldFail.image}<p>{$event.fieldFail.image}</p>{/if}
+                <p>
+                    Best image size to provide is between 800 and 1000 pixels wide and stored as a JPG or JPEG file. 
+                    Also try to supply images that have a reasonable "aspect ratio" (not too tall, not too wide).
+                    Files provided like this should have a file size of 100 to 250 KB. Images will be automatically
+                    resized for use in the Web site. Images that are too large will be rejected.
+                </p>
             </td>
         </tr>
 <!--
index 929efb4..fc7eb43 100644 (file)
@@ -54,7 +54,7 @@
             <tr class="alternate">
         {/if}
                 <td>
-                    <a href="{$thisUrl}?page=glm-members-admin-menu-events-index&glm_action=list&option=edit&event={$p.id}">{$p.name}</a>
+                    <a href="{$thisUrl}?page=glm-members-admin-menu-events-list&glm_action=list&option=edit&event={$p.id}">{$p.name}</a>
                 </td>
             </tr>
     {/foreach}
index 96ced71..5c879e1 100644 (file)
@@ -50,6 +50,9 @@
             <p>
         </div>
         <br clear="all">
+
+    <p><b>Total found:</b> {$numbEvents}&nbsp;&nbsp;</p>
+
         
     {if $paging}
         {if $prevStart}<input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button">{/if}
@@ -68,7 +71,7 @@
                 </tr>
             </thead>
             <tbody>
-    {if $events}
+    {if $haveEvents}
         {assign var="i" value="0"}
         {foreach $events as $e}
             {if $i++ is odd by 1}
              $( "#glmEventsSearch" ).autocomplete({
                  source: availableTags,
                  html: true,
+                 position: { my : "right top", at: "right bottom" },
                  select: function( event, ui ) {
                      var eventID = ui.item.id;
                      window.location.replace("{$adminUrl}?page=glm-members-admin-menu-events-index&glm_action=list&option=edit&event=" + eventID );