From: Anthony Talarico Date: Thu, 9 Mar 2017 21:50:02 +0000 (-0500) Subject: added pagination and alpha key, added some styling for the results limit dropdown X-Git-Tag: v1.0.0^2~31 X-Git-Url: http://cvs2.gaslightmedia.com/gitweb/index.cgi?a=commitdiff_plain;h=a30de1ef06fe202fb3fc9d75b0ce8790f742d16c;p=WP-Plugins%2Fglm-member-db-obits.git added pagination and alpha key, added some styling for the results limit dropdown adding some styling for the search results page --- diff --git a/classes/data/dataObits.php b/classes/data/dataObits.php index cd668bf..c47953f 100644 --- a/classes/data/dataObits.php +++ b/classes/data/dataObits.php @@ -290,5 +290,33 @@ class GlmDataObits extends GlmDataAbstract return $r; } + /* Get Alpha list of first characters in member name + * for those members that have active info. + * + * @param string $where Where clause + * Note the table refernces M and I. + * @param string $selected Optional selected alpha character + * + * @return object Class object + * + */ + public function getAlphaList($where = '', $selected = '') + { + + $sql = " + SELECT DISTINCT LEFT(last_name, 1) AS alpha + FROM ".GLM_MEMBERS_OBITS_PLUGIN_DB_PREFIX. "obits + ORDER BY alpha + ;"; + $alphaData = $this->wpdb->get_results($sql, ARRAY_A); + + // Set selected + foreach ($alphaData as $k=>$v) { + $alphaData[$k]['default'] = ($v['alpha'] == $selected); + } + + return $alphaData; + + } } diff --git a/css/front.css b/css/front.css index f76e523..7caf9f3 100644 --- a/css/front.css +++ b/css/front.css @@ -48,7 +48,7 @@ height: 25px; padding: 2px; } -.search-container label{ +.search-container label:not(.search-results-label){ float: left; margin-right: 5px; } @@ -72,4 +72,33 @@ } .options-wrapper{ display: none; -} \ No newline at end of file +} +.pagination ul li{ + float: left; + list-style: none; +} + +.pagination ul li a { + display: block; + text-align: center; + padding: 3px; + text-decoration: none; +} +.results-limit{ + display: inline-block; + max-width: 75px; + height: 25px; + padding: 2px; + text-align:center; + margin-left: 5px; +} +.search-results-label{ + max-width: 105px; + display: inline; + margin-left: 100px !important; + font-weight: bold; +} +.search-container .results-limit-container { + margin-bottom: 20px; +} + diff --git a/js/front.js b/js/front.js index 3d27be4..a718b44 100644 --- a/js/front.js +++ b/js/front.js @@ -1,10 +1,21 @@ $(document).ready(function(){ $(".expand-collapse").on("click", function(e){ e.preventDefault(); + $('.options-wrapper').slideToggle(500, function () {}); + }); - $('.options-wrapper').slideToggle(500, function () { - - }); - + $('.obits-link').on("click", function(){ + $('#obits-search').submit(); + }); + + $('.alpha-link').on("click", function(){ + console.log("test"); + $('#obits-search').submit(); + console.log("test"); + }); + + $('#results-limit').on('change', function(){ +// $('#obits-search').submit(); }); + }); \ No newline at end of file diff --git a/models/admin/management/obitImport.php b/models/admin/management/obitImport.php index a54e5c6..fed623e 100644 --- a/models/admin/management/obitImport.php +++ b/models/admin/management/obitImport.php @@ -134,7 +134,11 @@ class GlmMembersAdmin_management_obitImport break; case 'importObits': - $article_url = "http://obits.charlevoixlibrary.org/articles/"; + require_once GLM_MEMBERS_PLUGIN_PATH.'/models/admin/ajax/imageUpload.php'; + $ImageUpload = new GlmMembersAdmin_ajax_imageUpload($this->wpdb, $this->config); + + $img_src = "http://obits.charlevoixlibrary.org/articles/"; + if ( isset( $_REQUEST['start'] ) ) { $start = filter_var( $_REQUEST['start'], FILTER_VALIDATE_INT ); @@ -145,31 +149,50 @@ class GlmMembersAdmin_management_obitImport $table = GLM_MEMBERS_OBITS_PLUGIN_DB_PREFIX . 'obits'; $url = get_site_url() . '/wp-admin/admin.php?page=glm-members-admin-menu-management&glm_action=obitImport&option=importObits'; - $limit = 400; + $limit = 200; $sql = "SELECT last, first_mid, b_year, b_yr_range,d_year, d_yr_range,spouse_partner, maiden_other,obit_article,article_a, article_b, article_c, father_name,mother_name,misc_info, courier_date FROM chxctyobit LIMIT $limit OFFSET $start"; $obits = $wpdb->get_results( $sql, ARRAY_A ); $count = 0; - foreach($obits as $column=>$data){ + foreach($obits as $column=>$data ){ $count++; $insert = array(); - foreach($data as $key=>$value){ - if($key === 'last'){ + foreach( $data as $key=>$value ){ + if( $key === 'last'){ $key = 'last_name'; } - if($key === 'd_yr_range' || $key === 'b_yr_range'){ + if( $key === 'd_yr_range' || $key === 'b_yr_range' ){ $value = substr($value, 0, 4); } - if($key === 'courier_date'){ + if( $key === 'courier_date' ){ $key = 'newspaper_date'; } - $insert[$key] = $value; + if( $key === 'obit_article' ){ + if ( !empty($value) ){ + $imageFullUrl = $img_src . $value; + + $fp = fopen( GLM_MEMBERS_PLUGIN_IMAGES_PATH . '/' . $value, 'w+' ); + $ch = curl_init( $imageFullUrl ); + curl_setopt($ch, CURLOPT_TIMEOUT, 50); + curl_setopt($ch, CURLOPT_FILE, $fp); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + $fileData = curl_exec($ch); + $httpCode = curl_getinfo($ch); + curl_close($ch); + fclose($fp); + // Set correct file permissions + $oldUmask = umask(0); + chmod( GLM_MEMBERS_PLUGIN_IMAGES_PATH_PATH . '/' . $value, 0660 ); + umask($oldUmask); + } + } +// $insert[$key] = $value; } // echo '
', print_r($insert), '
'; // $wpdb->insert($table, $insert); } - echo $count; + // echo '
', print_r($insert), '
'; $resultMessage = "
Start: $start
"; diff --git a/models/front/obits/search.php b/models/front/obits/search.php index 0845e16..feedc16 100644 --- a/models/front/obits/search.php +++ b/models/front/obits/search.php @@ -87,6 +87,11 @@ class GlmMembersFront_obits_search extends GlmDataObits public function modelAction($actionData = false) { + $paging = true; + $prevStart = false; + $nextStart = false; + $start = 1; + $this->table = GLM_MEMBERS_OBITS_PLUGIN_DB_PREFIX . 'obits'; $view = 'search'; @@ -98,7 +103,13 @@ class GlmMembersFront_obits_search extends GlmDataObits $birth_death_range = array('birth' => $year_ranges->getObitYearRange(BIRTH_YEAR_START), 'death' => $year_ranges->getObitYearRange(DEATH_YEAR_START)); $logic_dropdown = array('Contains' => 'LIKE' ,'Starts With' => 'LIKE%','Equals' => '=', 'More than' => '>', 'Less than' => '<'); - $form_data = $_REQUEST; + $per_page = isset( $_REQUEST['results-limit']) ? (int)filter_var( $_REQUEST['results-limit'], FILTER_SANITIZE_STRING) : 20; + + $form_data = $_POST; + + if ( isset( $_REQUEST['alpha'] ) ){ + $alpha_key = filter_var( $_REQUEST['alpha'], FILTER_SANITIZE_STRING ); + } if( isset( $_REQUEST['conditions'] ) && $_REQUEST['conditions'][0] == 'any'){ $clause = ' OR '; @@ -108,7 +119,7 @@ class GlmMembersFront_obits_search extends GlmDataObits foreach($form_data as $key=>$value){ if (isset($value) && $value !== ''){ - if( $value !== 'Search' && $key !== 'conditions'){ + if( $value !== 'Search' && $key !== 'conditions' && $key !== 'results-limit'){ if(strpos($key,'-logic') === false && strpos($key,'not-') === false ) { $value = filter_var($value, FILTER_SANITIZE_STRING); $search_fields[$key] = $value; @@ -145,16 +156,79 @@ class GlmMembersFront_obits_search extends GlmDataObits } $search = implode($clause, $search_fields); + +// $sql = "SELECT * FROM $this->table" . +// ( empty($search) ? " ORDER BY last_name ASC LIMIT 100" : " WHERE $search ORDER BY last_name ASC LIMIT 100"); + + if( empty($search) && empty( $alpha_key) ){ + $where = ""; + } else if( !empty( $alpha_key ) ) { + $where = "last_name LIKE '$alpha_key%'"; + } else { + $where = $search; + } + + if (isset($_REQUEST['pageSelect'])) { + + // If request is for Next + if ($_REQUEST['pageSelect'][0] == 'N') { + $newStart = $_REQUEST['nextStart'] - 0; + + // Otherwise it must be Previous + } else { + $newStart = $_REQUEST['prevStart'] - 0; + } + + if ($newStart > 0) { + $start = $newStart; + } + } - $sql = "SELECT * FROM $this->table LIMIT 10" . - (empty($search) ? "" : " WHERE $search"); -// echo '
', print_r($search_fields), '
'; - echo $sql; + $obits = $this->getList($where, 'last_name', $fieldVals = true, $idField = 'id', $start, $per_page); + + // Get paging results + $numbDisplayed = $obits['returned']; + + $lastDisplayed = $obits['last']; + + if ($start == 1) { + $prevStart = false; + } else { + $prevStart = $start - $per_page; + if ($start < 1) { + $start = 1; + } + } + if ($obits['returned'] == $per_page) { + $nextStart = $start + $per_page; + } +// print_r($obits['list']); + + $get_rows = "SELECT COUNT(*) FROM $this->table"; - $obits = $this->wpdb->get_results($sql, 'ARRAY_A'); -// echo '
', print_r($obits), '
'; + $rows = $this->wpdb->get_results($get_rows, 'ARRAY_A'); + + $total_records = $rows[0]['COUNT(*)']; + + $alphaList = false; + $alphaWhere = ''; + if ($this->config['settings']['list_show_search_alpha']) { + + $alphaSelected = false; - if( isset($_REQUEST['searchButton']) ){ + // Check for alpha selected + if ($actionData['request']['alpha'] && strlen($actionData['request']['alpha']) == 1) { + $alphaSelected = strtoupper($actionData['request']['alpha']); + $alphaWhere .= " AND T.member_name LIKE '$alphaSelected%'"; + } + + // Get full list for all other filters, but not filtered by alpha (that would be silly) + $alphaList = $this->getAlphaList(' AND '.$where, $alphaSelected); + + } +// print_r($alphaList); + + if( isset($_REQUEST['searchButton']) || isset( $_REQUEST['pageSelect'] ) || isset($_REQUEST['alpha'] ) ){ $view = 'searchResults'; } @@ -162,9 +236,21 @@ class GlmMembersFront_obits_search extends GlmDataObits $templateData = array( 'birth_death_range' => $birth_death_range, 'sql' => $sql, - 'obits' => $obits, + 'obits' => $obits['list'], 'logic' => $logic_dropdown, - 'clause' => $clause + 'pages' => $pages, + 'per_page' => $per_page, + 'numbDisplayed' => $numbDisplayed, + 'lastDisplayed' => $lastDisplayed, + 'paging' => $paging, + 'prevStart' => $prevStart, + 'nextStart' => $nextStart, + 'start' => $start, + 'limit' => $per_page, + 'total' => $total_records, + 'alphaList' => $alphaList, + 'alpha_key' => $alpha_key + ); // Return status, any suggested view, and any data to controller return array( diff --git a/views/front/obits/search.html b/views/front/obits/search.html index a454b38..c2b913f 100644 --- a/views/front/obits/search.html +++ b/views/front/obits/search.html @@ -1,8 +1,21 @@
\ No newline at end of file +
+ \ No newline at end of file diff --git a/views/front/obits/searchResults.html b/views/front/obits/searchResults.html index 98ed53f..9e7d7a1 100644 --- a/views/front/obits/searchResults.html +++ b/views/front/obits/searchResults.html @@ -1,244 +1,272 @@
-
- - - - - - - - - - - - - - {foreach from=$obits item=i} - - - - - - - - - - - {/foreach} -
Birth Year RangeDeath Year RangeLast NameFirst NameBirth YearDeath YearSpouseMaiden Name
{$i.b_yr_range}{$i.d_yr_range}{$i.last_name}{$i.first_mid}{$i.b_year}{$i.d_year}{$i.spouse_partner}{$i.maiden_other}
-
-
-
- -