- Retrieving custom fields into searchform.
- Changed searchform layout.
- Added advanced/simple division with a toggler.
- Moved non-common files into a new directory.
- Merged existing changes
'status' => $success,
'menuItemRedirect' => false,
'modelRedirect' => false,
- 'view' => "admin/common/manageDashboard/$view.html",
+ 'view' => "admin/manageDashboard/$view.html",
'data' => $templateData
);
'status' => $success,
'menuItemRedirect' => false,
'modelRedirect' => false,
- 'view' => 'admin/common/manageDashboard/list.html',
+ 'view' => 'admin/manageDashboard/list.html',
'data' => $templateData
);
+++ /dev/null
-<div class="glm-row">
- <b>Categories: </b>
- <select id="filterCategories" name="filterCategories[]" multiple="multiple" size="1">
-{foreach from=$categories item=v}
- <option value="{$v.id}" data-parent="{$v.parent}"{if $v.selected} selected{/if}>
- {if $v.parent_id} {/if}{$v.name}
- </option>
-{/foreach}
- </select>
-</div>
+++ /dev/null
-<div>Checkboxes</div>
-
-<label>
- <input type="checkbox" name="{$component.id}" class="glm-admin-search-field"/>
- <span>{$component.displayName}</span>
-</label>
-
-<script></script>
+++ /dev/null
-<p><b>Total found:</b> {$memberCount} </p>
\ No newline at end of file
+++ /dev/null
-<div class="row date-search-container">
- <div class="date-search-title">Search By Date</div>
- <div class="s12 xl4 col glm-widget-search">
- <input id="{$addon.slug}-fromDate" type="text" class="fromDate date-field" name="{$component.fromDate}" placeholder="From Date">
- </div>
- <div class="s12 xl4 col glm-widget-search">
- <input id="{$addon.slug}-toDate" type="text" class="toDate date-field" name="{$component.toDate}" placeholder="To Date">
- </div>
- <div class="s12 xl4 col glm-widget-search">
- <button id="{$addon.slug}-search-button" style="float: right;margin-top: 13px;" class="btn-small date-search-btn">Search</button>
- </div>
-</div>
-<script>
- jQuery(function($){
- dateSearch({
- resultUrl : '{$component.resultUrl}',
- toDate : '{$component.toDate}',
- fromDate : '{$component.fromDate}',
- searchBtn : '{$addon.slug}-search-button',
- defaultFromDate : '{$component.defaultFromDate}',
- })
- })
-</script>
\ No newline at end of file
+++ /dev/null
-
-<div class="glm-row">
- <b>{$terms.term_member_cap} Types</b>
- <select id="filterMemberTypes" name="filterMemberTypes">
- <option value=""></option>
- {foreach $member_types as $type}
- <option value="{$type.id}"{if $type.id == $mTypeSelected} selected{/if}>{$type.name}</option>
- {/foreach}
- </select>
-</div>
+++ /dev/null
-modal template
\ No newline at end of file
+++ /dev/null
-<div class="row">
- <div class="s12 col input-field glm-widget-search">
- <input id="glm-member-db-text" type="text" class="glm-widget-search-input search-autocomplete">
- <label for="glm-member-db-text">Search</label>
- </div>
-
-</div>
\ No newline at end of file
+++ /dev/null
-
-<div id="glm-manage-member-dashboard">
- {include file='admin/manageDashboard/adminSearch/searchHeader.html'}
- <div id="glm-manage-member-dashboard-searchForm" class="row">
- {foreach $searchFields.components as $component}
-
- {if isset($component.template)}
-
- {if "{$smarty.current_dir}/../components/{$component.template}.html"|is_file}
- {include file="../components/{$component.template}.html"}
- {else}
- Failed loading {$smarty.current_dir}/../components/{$component.template}.html
- {/if}
-
- {/if}
-
- {/foreach}
- </div>
- <div id="glm-admin-member-list" class="row admin-member-list">
- <div id="glm-admin-list-columns">
- <span class="member-record-header" id="member-record-image"></span>
- <span class="member-record-header" id="member-record-name">Name</span>
- <span class="member-record-header" id="member-record-events">Events</span>
- <span class="member-record-header" id="member-record-packages">Packages</span>
- <span class="member-record-header" id="member-record-featured">Featured</span>
-
- </div>
- <div id="glm-admin-search-overlay">
-
- <span>Loading ...</span>
-
- </div>
- </div>
-</div>
-<script>
-
- jQuery(function($){
- window.Glma = {
- adminSearch: function(data){
- $.ajax({
- dataType: "json",
- type : 'POST',
- url: '{$ajaxUrl}',
- data: data,
- complete: $("#glm-admin-search-overlay").fadeOut('slow'),
- success: function(data) {
- console.log(data);
- $("#glm-admin-member-list").append(data.searchData);
- }
- });
- }
- };
-
-
- /*
- * Init Materialize collapsible
- */
- jQuery(function($){
- $('.collapsible').collapsible();
- $('select').formSelect();
- $('.modal').modal();
- })
-
- /*
- * Text Search Autocomplete
- */
- function textSearch(textSearchData){
- // Text Search Component
- jQuery(function($){
- let searchResults = {};
- let imageUrl = `{$glmPluginMediaUrl}/images`
- let data = {
- action : 'glm_members_admin_ajax',
- glm_action : 'glmTextSearch',
- table : textSearchData.table,
- fields : textSearchData.fields,
- where : textSearchData.where
- }
- $('input#'+textSearchData.slug+'-text').autoComplete({
- minChars: 1,
- source: function( request, response ) {
- data.query = request;
- $.ajax({
- dataType: "json",
- type : 'POST',
- url: '{$ajaxUrl}',
- data: data,
- success: function(data) {
- console.log(data.searchData);
- if(data.searchData){
- let searchDropdown = [];
- for(let i = 0;i < data.searchData.length;i++){
- let searchTitle = Object.keys(data.searchData[i])[0];
- let image = (data.searchData[i][searchTitle].image) ? data.searchData[i][searchTitle].image : null;
- let memberID = data.searchData[i][searchTitle].memberID;
- let entityID = data.searchData[i][searchTitle].entityID;
- searchDropdown.push(searchTitle);
- {literal} searchResults[searchTitle] = {image: image, memberID: memberID, entityID: entityID}; {/literal}
- }
- {literal} response(searchDropdown); {/literal}
- }else{
- response(['No Results Found'])
- }
- }
- });
- },
- renderItem: function (item, search){
- search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
- var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi");
- return '<div class="autocomplete-suggestion" data-langname="'+item[0]+'" data-lang="'+item[1]+'" data-val="'+search+'">'+item.replace(re, "<b>$1</b>")+'</div>';
-
- },
- onSelect: function(e, term, item){
- let search = $(item).text();
- console.log(search)
- if(search !== "No Results Found"){
- window.location.replace(textSearchData.resultUrl+searchResults[search].entityID);
- }
- },
- });
- });
- }
-
- /*
- * Date Search Widget
- */
- function dateSearch(dateSearchData){
- jQuery(function($){
-
- var date = new Date();
- var toDate = '', fromDate = (dateSearchData.defaultFromDate) ? '&' + dateSearchData.fromDate + '=' + dateSearchData.defaultFromDate : '';
- $('.fromDate').datepicker({
- format : 'mm/dd/yyyy',
- setDefaultDate : true,
- defaultDate : date,
- autoClose : true,
- onClose : function(){
- fromDate = '&' + dateSearchData.fromDate + '=' + $(this)[0].el.value;
- }
- });
- $('.toDate').datepicker({
- format : 'mm/dd/yyyy',
- autoClose : true,
- onClose: function(){
- toDate = '&' + dateSearchData.toDate + '=' + $(this)[0].el.value;
- }
- });
- console.log( dateSearchData.resultUrl + fromDate + toDate)
- $('#' + dateSearchData.searchBtn).on("click", function(){
- window.location = dateSearchData.resultUrl + fromDate + toDate;
- })
- });
- }
-
- /*
- * List component tooltips
- */
- function listComponent(listComponentData) {
- jQuery(function($){
- $('.tooltipped').tooltip();
- });
- }
-
- let data = {
- action : 'glm_members_admin_ajax',
- glm_action : 'adminSearch',
- form_action : 'list',
- view: "list"
- // table : textSearchData.table,
- // fields : textSearchData.fields,
- // where : textSearchData.where
- }
- window.Glma.adminSearch(data);
-
- $(".glm-admin-search-field").on("change", function(){
- console.log( $(this) );
- window.Glma.adminSearch(data);
- });
- });
-</script>
-
-{include file='admin/footer.html'}
\ No newline at end of file
+++ /dev/null
-<div id="member-results-container">
- {if $haveMembers}
- {foreach $members as $member}
- <div class="member-record" data-id="{$member.id}">
- <span class="member-record-column member-record-logo">logo</span>
- <span class="member-record-column member-record-name">{$member.name}</span>
- <span class="member-record-column member-record-events">0</span>
- <span class="member-record-column member-record-packages">0</span>
- <span class="member-record-column member-record-featured">{$member.featured.name}</span>
- </div>
- {/foreach}
- {else}
- <div id="no-results">No Members</div>
- {/if}
-</div>
\ No newline at end of file
<div id="glm-admin-search-header">
- Search Fields pulled from file
-</div>
\ No newline at end of file
+ <div id="glm-manage-member-dashboard-searchForm" class="row">
+ <form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
+ <input type="hidden" name="glm_action" value="list">
+ <input type="hidden" name="prevStart" value="{$prevStart}">
+ <input type="hidden" name="nextStart" value="{$nextStart}">
+ <input type="hidden" name="limit" value="{$limit}">
+ <input type="hidden" name="savedAlpha" value="{$alphaSelected}">
+ <div id="searchForm-simple">
+ {foreach $searchFields.components as $component}
+
+ {if isset($component.template)}
+
+ {if "{$smarty.current_dir}/../components/{$component.template}.html"|is_file}
+ {include file="../components/{$component.template}.html"}
+ {else}
+ Failed loading {$smarty.current_dir}/../components/{$component.template}.html
+ {/if}
+
+ {/if}
+
+ {/foreach}
+ </div>
+ <div id="advanced-search-toggle" data-toggles="#searchForm-advanced" class="data-toggler">
+ <div id="advanced-search-toggle-button" class="button">Advanced Search</div>
+ </div>
+ <div id="searchForm-advanced" class="hidden">
+ CUSTOM FIELDS:
+ {apply_filters('glm-member-db-custom-filter-search', '', 'glm-member-db' )}
+ </div<>
+ <input type="submit" value="Submit" style="margin-right: 2em;">
+ </form>
+ </div>
+</div>
+<div id="glm-admin-search-subheader">
+ <div id="glm-manage-dashboard-quickSearchForm" class="row">
+
+ <form action="{$thisUrl}?page={$thisPage}" method="post" id="quickSarchForm">
+ <input type="submit" value="Pending Members{if $pendingMembersCount}: {$pendingMembersCount}{/if}"" style="margin-right: 2em;">
+ <input type="submit" value="Bad Map Location Data{if $badMapLocationCount}: {$badMapLocationCount}{/if}"" style="margin-right: 2em;">
+ </form>
+
+ </div>
+</div>
+<script>
+ jQuery(function($){
+ $('.data-toggler').on("click", function() {
+ $($(this).attr("data-toggles")).toggleClass("hidden");
+ });
+ });
+</script>
\ No newline at end of file
--- /dev/null
+<div class="glm-row">
+ <b>Categories: </b>
+ <select id="filterCategories" name="filterCategories[]" multiple="multiple" size="1">
+{foreach from=$categories item=v}
+ <option value="{$v.id}" data-parent="{$v.parent}"{if $v.selected} selected{/if}>
+ {if $v.parent_id} {/if}{$v.name}
+ </option>
+{/foreach}
+ </select>
+</div>
--- /dev/null
+<div>Checkboxes</div>
+
+<label>
+ <input type="checkbox" name="{$component.id}" class="glm-admin-search-field"/>
+ <span>{$component.displayName}</span>
+</label>
+
+<script></script>
--- /dev/null
+<p><b>Total found:</b> {$memberCount} </p>
\ No newline at end of file
--- /dev/null
+<div class="row date-search-container">
+ <div class="date-search-title">Search By Date</div>
+ <div class="s12 xl4 col glm-widget-search">
+ <input id="{$addon.slug}-fromDate" type="text" class="fromDate date-field" name="{$component.fromDate}" placeholder="From Date">
+ </div>
+ <div class="s12 xl4 col glm-widget-search">
+ <input id="{$addon.slug}-toDate" type="text" class="toDate date-field" name="{$component.toDate}" placeholder="To Date">
+ </div>
+ <div class="s12 xl4 col glm-widget-search">
+ <button id="{$addon.slug}-search-button" style="float: right;margin-top: 13px;" class="btn-small date-search-btn">Search</button>
+ </div>
+</div>
+<script>
+ jQuery(function($){
+ dateSearch({
+ resultUrl : '{$component.resultUrl}',
+ toDate : '{$component.toDate}',
+ fromDate : '{$component.fromDate}',
+ searchBtn : '{$addon.slug}-search-button',
+ defaultFromDate : '{$component.defaultFromDate}',
+ })
+ })
+</script>
\ No newline at end of file
--- /dev/null
+
+<div class="glm-row">
+ <b>{$terms.term_member_cap} Types</b>
+ <select id="filterMemberTypes" name="filterMemberTypes">
+ <option value=""></option>
+ {foreach $member_types as $type}
+ <option value="{$type.id}"{if $type.id == $mTypeSelected} selected{/if}>{$type.name}</option>
+ {/foreach}
+ </select>
+</div>
--- /dev/null
+[modal template loaded]
\ No newline at end of file
--- /dev/null
+<div class="row">
+ <div class="s12 col input-field glm-widget-search">
+ <input id="glm-member-db-text" type="text" class="glm-widget-search-input search-autocomplete">
+ <label for="glm-member-db-text">Search</label>
+ </div>
+
+</div>
\ No newline at end of file
--- /dev/null
+
+<div id="glm-manage-member-dashboard">
+ {include file='admin/manageDashboard/adminSearch/searchHeader.html'}
+ <div id="glm-admin-member-list" class="row admin-member-list">
+ <div id="glm-admin-list-columns">
+ <span class="member-record-header" id="member-record-image"></span>
+ <span class="member-record-header" id="member-record-name">Name</span>
+ <span class="member-record-header" id="member-record-events">Events</span>
+ <span class="member-record-header" id="member-record-packages">Packages</span>
+ <span class="member-record-header" id="member-record-featured">Featured</span>
+
+ </div>
+ <div id="glm-admin-search-overlay">
+
+ <span>Loading ...</span>
+
+ </div>
+ </div>
+</div>
+<script>
+
+ jQuery(function($){
+ window.Glma = {
+ adminSearch: function(data){
+ $.ajax({
+ dataType: "json",
+ type : 'POST',
+ url: '{$ajaxUrl}',
+ data: data,
+ complete: $("#glm-admin-search-overlay").fadeOut('slow'),
+ success: function(data) {
+ console.log(data);
+ $("#glm-admin-member-list").append(data.searchData);
+ }
+ });
+ }
+ };
+
+
+ /*
+ * Init Materialize collapsible
+ */
+ jQuery(function($){
+ $('.collapsible').collapsible();
+ $('select').formSelect();
+ $('.modal').modal();
+ })
+
+ /*
+ * Text Search Autocomplete
+ */
+ function textSearch(textSearchData){
+ // Text Search Component
+ jQuery(function($){
+ let searchResults = {};
+ let imageUrl = `{$glmPluginMediaUrl}/images`
+ let data = {
+ action : 'glm_members_admin_ajax',
+ glm_action : 'glmTextSearch',
+ table : textSearchData.table,
+ fields : textSearchData.fields,
+ where : textSearchData.where
+ }
+ $('input#'+textSearchData.slug+'-text').autoComplete({
+ minChars: 1,
+ source: function( request, response ) {
+ data.query = request;
+ $.ajax({
+ dataType: "json",
+ type : 'POST',
+ url: '{$ajaxUrl}',
+ data: data,
+ success: function(data) {
+ console.log(data.searchData);
+ if(data.searchData){
+ let searchDropdown = [];
+ for(let i = 0;i < data.searchData.length;i++){
+ let searchTitle = Object.keys(data.searchData[i])[0];
+ let image = (data.searchData[i][searchTitle].image) ? data.searchData[i][searchTitle].image : null;
+ let memberID = data.searchData[i][searchTitle].memberID;
+ let entityID = data.searchData[i][searchTitle].entityID;
+ searchDropdown.push(searchTitle);
+ {literal} searchResults[searchTitle] = {image: image, memberID: memberID, entityID: entityID}; {/literal}
+ }
+ {literal} response(searchDropdown); {/literal}
+ }else{
+ response(['No Results Found'])
+ }
+ }
+ });
+ },
+ renderItem: function (item, search){
+ search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+ var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi");
+ return '<div class="autocomplete-suggestion" data-langname="'+item[0]+'" data-lang="'+item[1]+'" data-val="'+search+'">'+item.replace(re, "<b>$1</b>")+'</div>';
+
+ },
+ onSelect: function(e, term, item){
+ let search = $(item).text();
+ console.log(search)
+ if(search !== "No Results Found"){
+ window.location.replace(textSearchData.resultUrl+searchResults[search].entityID);
+ }
+ },
+ });
+ });
+ }
+
+ /*
+ * Date Search Widget
+ */
+ function dateSearch(dateSearchData){
+ jQuery(function($){
+
+ var date = new Date();
+ var toDate = '', fromDate = (dateSearchData.defaultFromDate) ? '&' + dateSearchData.fromDate + '=' + dateSearchData.defaultFromDate : '';
+ $('.fromDate').datepicker({
+ format : 'mm/dd/yyyy',
+ setDefaultDate : true,
+ defaultDate : date,
+ autoClose : true,
+ onClose : function(){
+ fromDate = '&' + dateSearchData.fromDate + '=' + $(this)[0].el.value;
+ }
+ });
+ $('.toDate').datepicker({
+ format : 'mm/dd/yyyy',
+ autoClose : true,
+ onClose: function(){
+ toDate = '&' + dateSearchData.toDate + '=' + $(this)[0].el.value;
+ }
+ });
+ console.log( dateSearchData.resultUrl + fromDate + toDate)
+ $('#' + dateSearchData.searchBtn).on("click", function(){
+ window.location = dateSearchData.resultUrl + fromDate + toDate;
+ })
+ });
+ }
+
+ /*
+ * List component tooltips
+ */
+ function listComponent(listComponentData) {
+ jQuery(function($){
+ $('.tooltipped').tooltip();
+ });
+ }
+
+ let data = {
+ action : 'glm_members_admin_ajax',
+ glm_action : 'adminSearch',
+ form_action : 'list',
+ view: "list"
+ // table : textSearchData.table,
+ // fields : textSearchData.fields,
+ // where : textSearchData.where
+ }
+ window.Glma.adminSearch(data);
+
+ $(".glm-admin-search-field").on("change", function(){
+ console.log( $(this) );
+ window.Glma.adminSearch(data);
+ });
+ });
+</script>
+
+{include file='admin/footer.html'}
\ No newline at end of file
--- /dev/null
+<div id="member-results-container">
+ {if $haveMembers}
+ {foreach $members as $member}
+ <div class="member-record" data-id="{$member.id}">
+ <span class="member-record-column member-record-logo">logo</span>
+ <span class="member-record-column member-record-name">{$member.name}</span>
+ <span class="member-record-column member-record-events">0</span>
+ <span class="member-record-column member-record-packages">0</span>
+ <span class="member-record-column member-record-featured">{$member.featured.name}</span>
+ </div>
+ {/foreach}
+ {else}
+ <div id="no-results">No Members</div>
+ {/if}
+</div>
\ No newline at end of file