'admin_name' => array (
'field' => 'admin_name',
'type' => 'text',
+ 'required' => true,
'use' => 'a'
),
'admin_email' => array (
'field' => 'admin_email',
'type' => 'text',
+ 'required' => true,
'use' => 'a'
),
'admin_phone' => array (
'field' => 'admin_phone',
'type' => 'text',
+ 'required' => true,
'use' => 'a'
),
$numbEvents = 0;
$option = 'list';
$events = false;
+ $haveEvents = false;
$event = false;
$haveEvent = false;
$this->eventID = false;
$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 != '') {
// 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;
$templateData = array(
'option' => $option,
'events' => $events,
+ 'haveEvents' => $haveEvents,
'event' => $event,
'haveEvent' => $haveEvent,
'eventID' => $this->eventID,
*
*/
-// 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
'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');}
+ );
+
+}
*
*/
-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
*
* 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');
+ }
+);
{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}
<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}
<!-- 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));
<table>
<tr><td> </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%">
<tr>
<th {if $event.fieldRequired.file1_descr}class="glm-required"{/if}> 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>
<tr>
<th {if $event.fieldRequired.file2_descr}class="glm-required"{/if}> 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>
<tr>
<th {if $event.fieldRequired.file3_descr}class="glm-required"{/if}> 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>
<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>
+ Lat <input id="glmLat_{$loc.id}" name="Loc{$loc.id}_lat" type="text" value="{$loc.lat}" class="glm-form-text-input-veryshort">
+ Lon <input id="glmLng_{$loc.id}" name="Loc{$loc.id}_lon" type="text" value="{$loc.lon}" class="glm-form-text-input-veryshort">
+ <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>
+ Lat <input id="glmLat_{ newLocID }" name="lat" type="text" value="{$newLocation.fieldData.lat}" class="glm-form-text-input-veryshort">
+ Lon <input id="glmLng_{ newLocID }" name="lon" type="text" value="{$newLocation.fieldData.lon}" class="glm-form-text-input-veryshort">
+ <span data-id="{ newLocID }" class="button button-secondary latLonRecenter">Update pointer.</span>
+ </p>
</p>
</td>
</tr>
<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>
<!--
<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}
<p>
</div>
<br clear="all">
+
+ <p><b>Total found:</b> {$numbEvents} </p>
+
{if $paging}
{if $prevStart}<input type="Submit" name="pageSelect" value="Previous {$limit} Events" class="button button-secondary glm-button">{/if}
</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 );