From: Steve Sutton Date: Fri, 30 Mar 2018 18:11:59 +0000 (-0400) Subject: WIP export for events X-Git-Tag: v1.6.78^2~3^2~2 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/?a=commitdiff_plain;h=00a2ce65747a9aa7e1b00f7fb23998d6dd51b687;p=WP-Plugins%2Fglm-member-db-events.git WIP export for events Start work on the event export. --- diff --git a/classes/data/dataEvents.php b/classes/data/dataEvents.php index 4aebbc4..e02d162 100644 --- a/classes/data/dataEvents.php +++ b/classes/data/dataEvents.php @@ -509,7 +509,7 @@ class GlmDataEvents extends GlmDataAbstract if (isset($r['registration_url']) && strlen(trim($r['registration_url'])) > 0 && strtolower(substr($r['registration_url'],0,4)) != 'http') { $r['registration_url'] = 'http://'.$r['registration_url']; } - + // Get Member Category data for this entry if ($this->postCategories) { $sql = " @@ -530,7 +530,7 @@ class GlmDataEvents extends GlmDataAbstract } if ($this->postAmenities) { - + $sql = " SELECT EC.event AS event_id, C.id, C.name FROM ".GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX. "amenities AS C, @@ -904,10 +904,10 @@ class GlmDataEvents extends GlmDataAbstract return $r; } - + /** * Get Cities List for Events - * + * * Searches for cities with both member and internal data. * May use option to specify a WHERE clause to limit the events * that the cities are drawn from. @@ -920,20 +920,20 @@ class GlmDataEvents extends GlmDataAbstract { $savedFields = $this->fields; - $savedpostAddTimes = $this->postAddTimes; - $savedpostAddLocations = $this->postAddLocations; - $savedpostAddRecurrences = $this->postAddRecurrences; - $savedpostFirstAndLastTimes = $this->postFirstAndLastTimes; - $savedpostCategories = $this->postCategories; - $savedpostAmenities = $this->postAmenities; - + $savedpostAddTimes = $this->postAddTimes; + $savedpostAddLocations = $this->postAddLocations; + $savedpostAddRecurrences = $this->postAddRecurrences; + $savedpostFirstAndLastTimes = $this->postFirstAndLastTimes; + $savedpostCategories = $this->postCategories; + $savedpostAmenities = $this->postAmenities; + $this->postAddTimes = false; $this->postAddLocations = true; $this->postAddRecurrences = false; $this->postFirstAndLastTimes = false; $this->postCategories = false; $this->postAmenities = false; - + $this->fields = array( 'id' => $savedFields['id'], 'name' => $savedFields['name'], @@ -941,12 +941,12 @@ class GlmDataEvents extends GlmDataAbstract 'ref_dest_id' => $savedFields['ref_dest_id'], 'other_ref_dest_id' => $savedFields['other_ref_dest_id'] ); - + $events = $this->getList($where); - + $eventCities = array(); foreach ($events as $event) { - + if (isset($event['member'])) { $eventCities[$event['member']['city_id']] = array( 'id' => $event['member']['city_id'], @@ -957,23 +957,23 @@ class GlmDataEvents extends GlmDataAbstract 'id' => $event['locations']['city']['value'], 'name' => $event['locations']['city']['name'] ); - } - + } + } - - $this->fields = $savedFields; - $this->postAddTimes = $savedpostAddTimes; - $this->postAddLocations = $savedpostAddLocations; - $this->postAddRecurrences = $savedpostAddRecurrences; + + $this->fields = $savedFields; + $this->postAddTimes = $savedpostAddTimes; + $this->postAddLocations = $savedpostAddLocations; + $this->postAddRecurrences = $savedpostAddRecurrences; $this->postFirstAndLastTimes = $savedpostFirstAndLastTimes; - $this->postCategories = $savedpostCategories; - $this->postAmenities = $savedpostAmenities; - + $this->postCategories = $savedpostCategories; + $this->postAmenities = $savedpostAmenities; + return $eventCities; - + } - - + + } diff --git a/models/admin/ajax/eventsListExport.php b/models/admin/ajax/eventsListExport.php new file mode 100644 index 0000000..6c134a2 --- /dev/null +++ b/models/admin/ajax/eventsListExport.php @@ -0,0 +1,303 @@ + + * @license http://www.gaslightmedia.com Gaslightmedia + * @version 0.1 + */ + + +// Load Event Info data abstract +require_once GLM_MEMBERS_EVENTS_PLUGIN_CLASS_PATH.'/data/dataEvents.php'; +require_once GLM_MEMBERS_EVENTS_PLUGIN_CLASS_PATH.'/data/dataCategories.php'; +require_once GLM_MEMBERS_EVENTS_PLUGIN_CLASS_PATH.'/data/dataEventCategories.php'; + +/** + * + * This class exports the currently selected events list + * to a printable HTML file, to a CSV file, or otherwise. + */ +class GlmMembersAdmin_ajax_eventsListExport extends GlmDataEvents +{ + + /** + * WordPress Database Object + * + * @var $wpdb + * @access public + */ + public $wpdb; + /** + * Plugin Configuration Data + * + * @var $config + * @access public + */ + public $config; + + /** + * Constructor + * + * This constructor sets up this model. At this time that only includes + * storing away the WordPress data object. + * + * @return object Class object + * + */ + public function __construct ($wpdb, $config) + { + + // Save WordPress Database object + $this->wpdb = $wpdb; + + // Save plugin configuration object + $this->config = $config; + + parent::__construct(false, false); + + } + + public function checkFlag($t) {return isset($_REQUEST[$t]) && $_REQUEST[$t] == 'on';} + /** + * Perform Model Action + * + * This modelAction takes an AJAX image upload and stores the image in the + * media/images directory of the plugin. + * + * This model action does not return, it simply does it's work then calls die(); + * + * @param $actionData + * + * Echos JSON string as response and does not return + */ + public function modelAction ($actionData = false) + { + + // When processing member info records, also get primary contact data + $this->postProcessPrimaryContact = true; + + $where = ' true '; + $categories = false; + $haveEvents = false; + $list = false; + $success = false; + $filterPending = false; + $filterArchived = false; + $haveFilter = false; + $numbDisplayed = false; + $lastDisplayed = false; + $paging = true; + $prevStart = false; + $nextStart = false; + $start = 1; + $limit = 20; // Set to the number of listings per page + $namesList = false; + + // Check selected fields + $select = array( + 'exportId' => $this->checkFlag('exportId'), + 'exportName' => $this->checkFlag('exportName'), + 'exportMember' => $this->checkFlag('exportMember'), + 'exportStatus' => $this->checkFlag('exportStatus'), + 'exportFeatured' => $this->checkFlag('exportFeatured'), + 'exportCategories' => $this->checkFlag('exportCategories'), + 'exportIntro' => $this->checkFlag('exportIntro'), + 'exportDescr' => $this->checkFlag('exportDescr'), + 'exportFree' => $this->checkFlag('exportFree'), + 'exportCost' => $this->checkFlag('exportCost'), + 'exportNotes' => $this->checkFlag('exportNotes'), + 'exportLocationName' => $this->checkFlag('exportLocationName'), + 'exportAddress' => $this->checkFlag('exportAddress'), + 'exportCity' => $this->checkFlag('exportCity'), + 'exportState' => $this->checkFlag('exportState'), + 'exportZip' => $this->checkFlag('exportZip'), + 'exportCountry' => $this->checkFlag('exportCountry'), + 'exportRegion' => $this->checkFlag('exportRegion'), + 'exportWebUrl' => $this->checkFlag('exportWebUrl'), + 'exportTicketingUrl' => $this->checkFlag('exportTicketingUrl'), + 'exportRegistrationUrl' => $this->checkFlag('exportRegistrationUrl'), + 'exportContactName' => $this->checkFlag('exportContactName'), + 'exportContactPhone' => $this->checkFlag('exportContactPhone'), + 'exportContactEmail' => $this->checkFlag('exportContactEmail'), + 'exportAdminName' => $this->checkFlag('exportAdminName'), + 'exportAdminOrg' => $this->checkFlag('exportAdminOrg'), + 'exportAdminEmail' => $this->checkFlag('exportAdminEmail'), + 'exportAdminPhone' => $this->checkFlag('exportAdminPhone'), + ); + + // Check for Archived filter + if (isset($_REQUEST['filterArchived']) && $_REQUEST['filterArchived'] == 'on') { + $filterArchived = true; + $_SESSION['search']['archived'] = true; + $where .= " AND status = " . $this->config['status_numb']['Archived']; + } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['filterArchived'] ) ) { + unset( $_SESSION['search']['archived'] ); + } + + // Check for Pending filter + if (isset($_REQUEST['filterPending']) && $_REQUEST['filterPending'] == 'on') { + $filterPending = true; + $_SESSION['search']['pending'] = true; + $where .= " AND status = " . $this->config['status_numb']['Pending']; + } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['filterPending'] ) ) { + unset( $_SESSION['search']['pending'] ); + } + + // Check for Featured filter + if (isset($_REQUEST['filterFeatured']) && $_REQUEST['filterFeatured'] == 'on') { + $filterFeatured = true; + $_SESSION['search']['featured'] = true; + $where .= " AND featured = true"; + } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['filterFeatured'] ) ) { + unset( $_SESSION['search']['featured'] ); + } + + // Check if there is a category filter (multi-select) + if (isset($_REQUEST['filterCategories']) && count($_REQUEST['filterCategories']) > 0) { + + $cats = ''; + $catsSep = ''; + + // For each selected category + foreach($_REQUEST['filterCategories'] as $c) { + $cats .= $catsSep.$c; + $catsSep = ','; + $categories[$c]['selected'] = true; + } + $_SESSION['search']['cats'] = $cats; + + $where .= " AND id in ( + SELECT DISTINCT(EC.event) + FROM ".GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX."event_categories EC, + ".GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX."categories C + WHERE ( + EC.category in ($cats) + OR (C.parent in ($cats) AND EC.category = C.id) + ) + )"; + } else if ( isset( $_REQUEST['searched'] ) && !isset( $_REQUEST['filterCategories'] ) ) { + unset( $_SESSION['search']['cats'] ); + } + + // If we have a From date + $dateWhere = ''; + if (isset($_REQUEST['fromDate']) && trim($_REQUEST['fromDate']) != '') { + $fromDate = date('m/d/Y', strtotime($_REQUEST['fromDate'])); + $fromMYSQL = date('Y-m-d', strtotime($fromDate)); + $dateWhere = " end_time >= '$fromMYSQL' "; + $_SESSION['search']['fromDate'] = $fromDate; + } else if ( !isset( $_REQUEST['searched'] ) ) { + $fromDate = date('m/d/Y'); + $fromMYSQL = date('Y-m-d', strtotime($fromDate)); + $dateWhere = " end_time >= '$fromMYSQL' "; + } else if ( isset( $_REQUEST['searched'] ) && trim($_REQUEST['fromDate']) == '' ) { + unset( $_SESSION['search']['fromDate'] ); + } + + // If we have a to Date + if (isset($_REQUEST['toDate']) && trim($_REQUEST['toDate']) != '') { + + $toDate = date('m/d/Y', strtotime($_REQUEST['toDate'])); + $toMYSQL = date('Y-m-d', strtotime($toDate." +1 day")); + + // If we have a from date then we need Parens and AND + if ($dateWhere != '') { + $dateWhere = "( ".$dateWhere." AND start_time <= '$toMYSQL' )"; + + // Otherwise we don't + } else { + $dateWhere = " start_time <= '$toMYSQL' "; + } + $_SESSION['search']['toDate'] = $toDate; + } else if ( isset( $_REQUEST['searched'] ) && trim($_REQUEST['toDate']) == '' ) { + unset( $_SESSION['search']['toDate'] ); + } + + // If we have from and to dates, do search for those inclusive + if ($dateWhere != '') { + $where .= " + AND id in ( + SELECT DISTINCT(event) + FROM ".GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX."times + WHERE $dateWhere + AND active + ) + "; + } + + // Get a current list of events without paging + $orderBy = "(select min(start_time) FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "times WHERE T.id = event),name"; + $this->postCategories = true; + $this->postAddLocations = true; + $list = $this->getList( $where, $orderBy, true ); + + // If we have list entries - even if it's an empty list + $success = true; + $haveEvents = false; + if ($list !== false) { + + $success = true; + + // If we have any entries + $memberCount = count($list); + if ($memberCount > 0) { + $haveEvents = true; + } + } + + // Compile template data + $templateData = array( + 'category_data' => $category_data, + 'select' => $select, + 'haveEvents' => $haveEvents, + 'events' => $list, + 'memberCount' => $memberCount, + 'categories' => $categories, + 'haveFilter' => $haveFilter, + 'filterArchived' => $filterArchived, + 'filterFeatured' => $filterFeatured, + 'filterPending' => $filterPending, + 'numbDisplayed' => $numbDisplayed, + 'lastDisplayed' => $lastDisplayed, + 'paging' => $paging, + 'prevStart' => $prevStart, + 'nextStart' => $nextStart, + 'start' => $start, + 'limit' => $limit, + 'namesList' => $namesList + ); + + $view = 'admin/ajax/eventsListExport.html'; + if ($_REQUEST['type'] == 'csv') { + $view = 'admin/ajax/eventsListExportCsv.html'; + header("Content-Type: text/csv"); + header("Content-Disposition: attachment; filename=file.csv"); + } else { + header("Content-Type: text/html"); + header("Content-Disposition: attachment; filename=file.html"); + } + + // Disable caching + header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1 + header("Pragma: no-cache"); // HTTP 1.0 + header("Expires: 0"); // Proxies + + // Return status, suggested view, and data to controller + return array( + 'status' => $success, + 'menuItemRedirect' => false, + 'modelRedirect' => false, + 'view' => $view, + 'data' => $templateData + ); + + } + +} diff --git a/setup/validActions.php b/setup/validActions.php index 2ff7c24..7d6128a 100644 --- a/setup/validActions.php +++ b/setup/validActions.php @@ -39,6 +39,7 @@ $glmMembersEventsAddOnValidActions = array( 'rssFeed' => GLM_MEMBERS_EVENTS_PLUGIN_SLUG, 'eventsCalMonthAJAX' => GLM_MEMBERS_EVENTS_PLUGIN_SLUG, 'icalFeedImport' => GLM_MEMBERS_EVENTS_PLUGIN_SLUG, + 'eventsListExport' => GLM_MEMBERS_EVENTS_PLUGIN_SLUG, ), 'dashboard' => array( 'events' => GLM_MEMBERS_EVENTS_PLUGIN_SLUG, diff --git a/views/admin/ajax/eventsListExport.html b/views/admin/ajax/eventsListExport.html new file mode 100644 index 0000000..ef8c265 --- /dev/null +++ b/views/admin/ajax/eventsListExport.html @@ -0,0 +1,103 @@ + + + + + + Total found: {$memberCount}   + List of {$terms.term_member_cap} Profiles +
+ + + + + {if $select.exportId}{/if} + {if $select.exportName}{/if} + {if $select.exportMember}{/if} + {if $select.exportStatus}{/if} + {if $select.exportFeatured}{/if} + {if $select.exportIntro}{/if} + {if $select.exportDescr}{/if} + {if $select.exportFree}{/if} + {if $select.exportNotes}{/if} + {if $select.exportLocationName}{/if} + {if $select.exportAddress}{/if} + {if $select.exportCity}{/if} + {if $select.exportState}{/if} + {if $select.exportZip}{/if} + {if $select.exportCountry}{/if} + {if $select.exportRegion}{/if} + {if $select.exportWebUrl}{/if} + {if $select.exportTicketingUrl}{/if} + {if $select.exportRegistrationUrl}{/if} + {if $select.exportContactName}{/if} + {if $select.exportContactPhone}{/if} + {if $select.exportContactEmail}{/if} + {if $select.exportAdminName}{/if} + {if $select.exportAdminOrg}{/if} + {if $select.exportAdminEmail}{/if} + {if $select.exportAdminPhone}{/if} + {if $select.exportCategories} + {if $category_data} + {foreach $category_data as $cat} + + {/foreach} + {/if} + {/if} + + + + {if $haveEvents} + {foreach $events as $event} + + {if $select.exportId}{/if} + {if $select.exportName}{/if} + {if $select.exportMember}{/if} + {if $select.exportStatus}{/if} + {if $select.exportFeatured}{/if} + {if $select.exportIntro}{/if} + {if $select.exportDescr}{/if} + {if $select.exportFree}{/if} + {if $select.exportNotes}{/if} + + {if $select.exportLocationName}{/if} + {if $select.exportAddress}{/if} + {if $select.exportCity}{/if} + {if $select.exportState}{/if} + {if $select.exportZip}{/if} + {if $select.exportCountry}{/if} + {if $select.exportRegion}{/if} + + {if $select.exportWebUrl}{/if} + {if $select.exportTicketingUrl}{/if} + {if $select.exportRegistrationUrl}{/if} + {if $select.exportContactName}{/if} + {if $select.exportContactEmail}{/if} + {if $select.exportContactPhone}{/if} + {if $select.exportAdminName}{/if} + {if $select.exportAdminOrg}{/if} + {if $select.exportAdminEmail}{/if} + {if $select.exportAdminPhone}{/if} + {if $select.exportCategories} + {if $category_data} + {foreach $category_data as $cat} + + {/foreach} + {/if} + {/if} + + + {/foreach} + {else} + + {/if} + +
IDEvent Name{$terms.term_member_cap} NameStatusFeaturedIntroDescriptionFreeNotesLocation NameAddressCityStateZIPCountryRegionWeb URLTicketing URLRegistration URLContact NameContact PhoneContact E-MailAdmin Contact NameAdmin Contact OrganizationAdmin Contact E-MailAdmin Contact Phone{if $cat.parent_name}{$cat.parent_name}:{/if}{$cat.name}
{$event.id}{$event.name}{$event.ref_dest}{$event.status.name}{$event.featured.name}{$event.intro}{$event.descr}{$event.free.name}{$event.notes}{if $event.locations.name}{$event.locations.name}{/if}{if $event.locations.address}{$event.locations.address}{/if}{if $event.locations.city.name}{$event.locations.city.name}{/if}{if $event.locations.state.name}{$event.locations.state.name}{/if}{if $event.locations.zip}{$event.locations.zip}{/if}{if $event.locations.country.name}{$event.locations.country.name}{/if}{if $event.locations.region.name}{$event.locations.region.name}{/if}{$event.url}{$event.ticket_url}{$event.registration_url}{$event.contact_name}{$event.contact_email}{$event.contact_phone}{$event.admin_name}{$event.admin_org}{$event.admin_email}{$event.admin_phone} + {$cat_exists=''} + {foreach $event.categories as $t} + {if $t.id == $cat.id}{$cat_exists='Yes'}{/if} + {/foreach} + {$cat_exists} +
(no {$terms.term_member} profiles listed)
+ + + diff --git a/views/admin/ajax/eventsListExportCsv.html b/views/admin/ajax/eventsListExportCsv.html new file mode 100644 index 0000000..7238fad --- /dev/null +++ b/views/admin/ajax/eventsListExportCsv.html @@ -0,0 +1,61 @@ +{if $haveEvents} + +{if $select.exportId}"ID",{/if} +{if $select.exportName}"Event Name",{/if} +{if $select.exportMember}"{$terms.term_member_cap} Name",{/if} +{if $select.exportStatus}"Status",{/if} +{if $select.exportFeatured}"Featured",{/if} +{if $select.exportIntro}"Intro",{/if} +{if $select.exportDescr}"Description",{/if} +{if $select.exportFree}"Free",{/if} +{if $select.exportNotes}"Notes",{/if} +{if $select.exportLocationName}"Location Name",{/if} +{if $select.exportAddress}"Address",{/if} +{if $select.exportCity}"City",{/if} +{if $select.exportState}"State",{/if} +{if $select.exportZip}"Zip",{/if} +{if $select.exportCountry}"Country",{/if} +{if $select.exportRegion}"Region",{/if} +{if $select.exportWebUrl}"Web URL",{/if} +{if $select.exportTicketingUrl}"Ticketing URL",{/if} +{if $select.exportRegistrationUrl}"Registration URL",{/if} +{if $select.exportContactName}"Contact Name",{/if} +{if $select.exportContactEmail}"Contact E-Mail",{/if} +{if $select.exportContactPhone}"Contact Phone",{/if} +{if $select.exportAdminName}"Admin Contact Name",{/if} +{if $select.exportAdminOrg}"Admin Contact Organization",{/if} +{if $select.exportAdminEmail}"Admin Contact E-Mail",{/if} +{if $select.exportAdminPhone}"Admin Phone",{/if} +{if $select.exportCategories} {if $category_data} {foreach $category_data as $cat} "{if $cat.parent_name}{$cat.parent_name}:{/if}{$cat.name}" {if !$cat@last},{/if} {/foreach} {/if} {/if} + +{foreach $events as $event} +{if $select.exportId}"{$event.id}",{/if} +{if $select.exportName}"{$event.name}",{/if} +{if $select.exportMember}"{$event.ref_dest}",{/if} +{if $select.exportStatus}"{$event.status.name}",{/if} +{if $select.exportFeatured}"{$event.featured.value}",{/if} +{if $select.exportIntro}"{$event.intro}",{/if} +{if $select.exportDescr}"{$event.descr}",{/if} +{if $select.exportFree}"{$event.free}",{/if} +{if $select.exportNotes}"{$event.notes}",{/if} +{if $select.exportLocationName}"{if $event.locations.name}{$event.locations.name}{/if}",{/if} +{if $select.exportAddress}"{if $event.locations.address}{$event.locations.address}{/if}",{/if} +{if $select.exportCity}"{if $event.locations.city.name}{$event.locations.city.name}{/if}",{/if} +{if $select.exportState}"{if $event.locations.state.name}{$event.locations.state.name}{/if}",{/if} +{if $select.exportZip}"{if $event.locations.zip}{$event.locations.zip}{/if}",{/if} +{if $select.exportCountry}"{if $event.locations.country.name}{$event.locations.country.name}{/if}",{/if} +{if $select.exportRegion}"{if $event.locations.region.name}{$event.locations.region.name}{/if}",{/if} +{if $select.exportWebUrl}"{$event.url}",{/if} +{if $select.exportTicketingUrl}"{$event.ticket_url}",{/if} +{if $select.exportRegistrationUrl}"{$event.registration_url}",{/if} +{if $select.exportContactName}"{$event.contact_name}",{/if} +{if $select.exportContactEmail}"{$event.contact_email}",{/if} +{if $select.exportContactPhone}"{$event.contact_phone}",{/if} +{if $select.exportAdminName}"{$event.admin_name}",{/if} +{if $select.exportAdminOrg}"{$event.admin_org}",{/if} +{if $select.exportAdminEmail}"{$event.admin_email}",{/if} +{if $select.exportAdminPhone}"{$event.admin_phone}",{/if} +{if $select.exportCategories} {if $category_data} {foreach $category_data as $cat} {$cat_exists='""'} {foreach $event.categories as $t} {if $t.id == $cat.id}{$cat_exists='"Yes"'}{/if} {/foreach} {$cat_exists} {if !$cat@last},{/if} {/foreach} {/if} {/if} + +{/foreach} +{else}No {$terms.term_member_plur_cap} Selected{/if} diff --git a/views/admin/events/eventExportModal.html b/views/admin/events/eventExportModal.html new file mode 100644 index 0000000..f665d1d --- /dev/null +++ b/views/admin/events/eventExportModal.html @@ -0,0 +1,123 @@ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Show Archived Only:
Show Pending Only:
Show Featured Only:
Categories: + +
Date Range Search: + From Date:
+
+ To Date:
+
+
Name Search: + +
Fields to export: + + + + + + + + + +
Check All / Uncheck All
+ Account ID
+ Event Name
+ {$terms.term_member_cap} Name
+ Status
+ Featured
+ Categories
+ Intro
+ Description
+ Free
+ Cost
+ Notes
+
+ Location Name
+ Address
+ City
+ State
+ ZIP / Postal Code
+ Country
+ Region
+ Web URL
+ Ticketing URL
+ Registration URL
+
+ Contact Name
+ Contact Phone
+ Contact Email
+ Admin Contact Name
+ Admin Contact Organization
+ Admin Contact Email
+ Admin Contact Phone
+ +
+
Export to: + Export to Spreadsheet (CSV)
+ Export for Print +
+ Cancel + +
+
+ + diff --git a/views/admin/events/list.html b/views/admin/events/list.html index 6a8ba1d..bc35a20 100644 --- a/views/admin/events/list.html +++ b/views/admin/events/list.html @@ -6,11 +6,14 @@ {if apply_filters('glm_members_permit_admin_events_index_add_event', true)}

- {if $haveMember} {* This is if we're processing events for a specific member *} - Add A New Event - {else} - Add A New Event - {/if} + {if !$lockedToMember} +
Events Export
+ {/if} + {if $haveMember} {* This is if we're processing events for a specific member *} + Add A New Event + {else} + Add A New Event + {/if} {if $eventDeleted}Event Deleted{/if} {if $eventDeleteError}Event Delete Error{/if}

@@ -47,7 +50,7 @@ Show Archived Only: - Show Pending Only: + Show Pending Only: Show Featured Only: @@ -139,86 +142,101 @@ - + }); + {include file='admin/footer.html'}