diff --git a/classes/lnApp/Table.php b/classes/lnApp/Table.php index 5de5991..3de5ad9 100644 --- a/classes/lnApp/Table.php +++ b/classes/lnApp/Table.php @@ -8,10 +8,35 @@ * @author Deon George * @copyright (c) 2009-2013 Deon George * @license http://dev.leenooks.net/license.html - * @uses Style */ abstract class lnApp_Table { - public static function resolve($d,$key) { + private $data = NULL; + private $columns = array(); // Our columns that we need to display + private $jssort = FALSE; // Use the JS pager and sorter + private $other = ''; // If we are only listing x items, this will be the other summary line + private $other_col = NULL; // If we are only listing x items, this will be the other summary line + private $po = NULL; // If we are paging the results, this is the page we are displaying + private $page = FALSE; // If we should page the results + private $page_rows = 0; // Number of rows per page + private $prepend = array(); // Our datafomrating that we need to use + + public function __toString() { + return (string) $this->render(); + } + + public function columns($cols) { + $this->columns = $cols; + + return $this; + } + + public function data($data) { + $this->data = $data; + + return $this; + } + + private function evaluate($d,$key) { if (is_array($d) AND isset($d[$key])) $x = $d[$key]; @@ -25,26 +50,185 @@ abstract class lnApp_Table { else $x = $d->display($key); + if (isset($this->prepend[$key])) { + foreach ($this->prepend[$key] as $act => $data) { + switch ($act) { + case 'url': $x = HTML::anchor($data.$x,$x); + break; + } + } + } + return $x; } + public static function factory() { + return new Table; + } + + public function jssort($bool) { + $this->jssort = $bool; + + return $this; + } + + public function page_items($num) { + $this->page = TRUE; + $this->page_rows = $num; + + return $this; + } + + public function prepend($cols) { + $this->prepend = $cols; + + return $this; + } + + private function process() { + $result = array(); + + $row = 0; + foreach ($this->data as $o) { + $row++; + $c = 0; + + // If we are HTML paging + if ($this->page) { + if ($row < $this->po->current_first_item()) + continue; + elseif ($row > $this->po->current_last_item()) + break; + } + + // If we are just listing page_rows items and a summary line as a result of exceeding that + if ($this->other_col AND $row>$this->page_rows) { + $this->other += Table::resolve($o,$this->other_col); + + // Otherwise rendering our rows + } else { + foreach ($this->columns as $col => $label) { + $c++; + + $result[$row]['val'][$c] = $this->evaluate($o,$col); + } + } + } + + return $result; + } + + public function render() { + $output = ''; + + // If we need to page the results + if ($this->page) { + $this->po = new Pagination(array( + 'total_items'=>count($this->data), + 'items_per_page'=>$this->page_rows, + )); + + $output .= (string)$this->po; + + } + + $output .= View::factory('table') + ->set('jssort',$this->jssort AND ! $this->page) + ->set('other',$this->other) + ->set('th',$this->columns) + ->set('td',$this->process()); + + // Use the javascript paging + if ($this->jssort AND ! $this->page) { + Script::factory() + ->type('stdin') + ->data(' +$(document).ready(function() { + $.extend($.tablesorter.themes.bootstrap, { + // these classes are added to the table. To see other table classes available, + // look here: http://twitter.github.com/bootstrap/base-css.html#tables + table : "table table-striped", + header : "bootstrap-header", // give the header a gradient background + footerRow : "", + footerCells: "", + icons : "", // add "icon-white" to make them white; this icon class is added to the in the header + sortNone : "bootstrap-icon-unsorted", + sortAsc : "icon-chevron-up", + sortDesc : "icon-chevron-down", + active : "", // applied when column is sorted + hover : "", // use custom css here - bootstrap class may not override it + filterRow : "", // filter row class + even : "", // odd row zebra striping + odd : "" // even row zebra striping + }); + + $("#list-table").tablesorter({ + theme: "bootstrap", + widthFixed : true, + headerTemplate : "{content} {icon}", // Add icon for jui theme; new in v2.7! + widgets: [ "uitheme", "stickyHeaders", "filter" ], + + }).tablesorterPager({ + // target the pager markup - see the HTML block below + container : $(".pager"), + output : "{startRow} - {endRow} / {filteredRows} ({totalRows})", + fixedHeight: true, + removeRows : false, + cssGoto : ".gotoPage" + + }); +}); + '); + + Script::factory() + ->type('file') + ->data('media/vendor/mottie-tablesorter/js/jquery.tablesorter.min.js'); + + Script::factory() + ->type('file') + ->data('media/vendor/mottie-tablesorter/js/jquery.tablesorter.widgets.min.js'); + + Script::factory() + ->type('file') + ->data('media/vendor/mottie-tablesorter/js/jquery.tablesorter.pager.min.js'); + + Style::factory() + ->type('file') + ->data('media/vendor/mottie-tablesorter/css/theme.bootstrap.css'); + Style::factory() + ->type('file') + ->data('media/vendor/mottie-tablesorter/css/jquery.tablesorter.pager.css'); + } + + return $output; + } + +//ZZ public static function display($data,$rows,array $cols,array $option) { - if (! (array)$data) - return ''; + $prepend = $headers = array(); - $pag = NULL; - $view = $output = $button = ''; + foreach ($cols as $k=>$v) { + if (isset($v['label'])) + $headers[$k] = $v['label']; + if (isset($v['url'])) + $prepend[$k] = array('url'=>$v['url']); + } - if (isset($option['type']) AND $option['type']) - switch ($option['type']) { - case 'select': - $view = 'table/select'; + return static::factory() + ->data($data) + ->jssort(TRUE) + ->page_items($rows) + ->columns($headers) + ->prepend($prepend); +/* if (! empty($option['button'])) $button = implode('',$option['button']); else $button = Form::button('Submit','View/Edit',array('class'=>'form_button','type'=>'submit')); +// This JS is failing, any pressing of select all, unselect all, toggle is propaging up and submitting the form + Script::factory() ->type('stdin') ->data(' @@ -153,104 +337,17 @@ $(document).ready(function() { }); }); '); - - $output .= Form::open((isset($option['form']) ? $option['form'] : '')); - - if (! empty($option['hidden'])) - $output .= '
'.implode('',$option['hidden']).'
'; - - break; - - case 'list': - default: - Script::factory() - ->type('stdin') - ->data(' -// Bind our actions -$(document).ready(function() { - // Our mouse over row highlight - $("#list-table tr:not(.head)").hover(function() { - $(this).children().toggleClass("highlight"); - }, - function() { - $(this).children().toggleClass("highlight"); - }); -}); - '); - } - - If (! $view) - $view = 'table/list'; - - if (isset($option['page']) AND $option['page']) { - $pag = new Pagination(array( - 'total_items'=>count($data), - 'items_per_page'=>$rows, - )); - - $output .= (string)$pag; - } - - $other = $i = 0; - $td = $th = array(); - foreach ($cols as $col => $details) { - $th[$col] = isset($details['label']) ? $details['label'] : ''; - $td[$col]['class'] = isset($details['class']) ? $details['class'] : ''; - $td[$col]['url'] = isset($details['url']) ? $details['url'] : ''; - } - - $output .= View::factory($view.'_head') - ->set('th',array_values($th)); - - foreach ($data as $do) { - if ($pag) { - if (++$i < $pag->current_first_item()) - continue; - elseif ($i > $pag->current_last_item()) - break; - } - - if ($pag OR ($i++ < $rows) OR is_null($rows)) { - foreach (array_keys($cols) as $col) - $td[$col]['value'] = Table::resolve($do,$col); - - $output .= View::factory($view.'_body') - ->set('td',$td); - - } elseif (isset($option['show_other']) AND ($col=$option['show_other'])) { - $other += Table::resolve($do,$col); - } - } - - if ($other) - $output .= View::factory($view.'_xtra') - ->set('td',array_values($cols)) - ->set('count',$i-$rows) - ->set('other',$other); - - $output .= View::factory($view.'_foot') - ->set('button',$button); - - if (isset($option['type']) AND $option['type']) - switch ($option['type']) { - case 'select': - $output .= Form::close(); - } - - return $output; - } - - public static function post($key,$i='id') { - if (isset($_POST[$i])) - Session::instance()->set('page_table_view'.$key,$_POST[$i]); +*/ } + // This enables us to page through many selected items + // @todo This is currently not usable, since our JS above needs to be fixed to work with tablesorter public static function page($key) { // We have preference for parameters passed to the action. if (is_null($id = Request::current()->param('id'))) { - + // First save our POST id data into the session, so we dont need it when going to each page if (isset($_POST['id']) AND is_array($_POST['id'])) - Table::post($key,'id'); + Session::instance()->set('page_table_view'.$key,'id'); if ($ids = Session::instance()->get('page_table_view'.$key)) { $pag = new Pagination(array( @@ -260,7 +357,6 @@ $(document).ready(function() { return array($ids[$pag->current_first_item()-1],(string)$pag); } - } // If we get here, then there is no previous data to retrieve. diff --git a/media/theme/focusbusiness/css/pages/error.css b/media/theme/focusbusiness/css/pages/error.css new file mode 100644 index 0000000..d903968 --- /dev/null +++ b/media/theme/focusbusiness/css/pages/error.css @@ -0,0 +1,25 @@ +.error-container { + margin-top: 4em; + margin-bottom: 4em; + text-align: center; +} +.error-container h1 { + margin-bottom: .5em; + font-size: 120px; + line-height: 1em; + font-weight: normal; +} +.error-container h2 { + margin-bottom: .75em; + font-size: 28px; +} +.error-container .error-details { + margin-bottom: 1.5em; + font-size: 16px; +} +.error-container .error-actions a { + margin: 0 .5em; +} +#footer { +display: none; +} diff --git a/media/vendor/mottie-tablesorter/css/jquery.tablesorter.pager.css b/media/vendor/mottie-tablesorter/css/jquery.tablesorter.pager.css new file mode 100644 index 0000000..83c8c3d --- /dev/null +++ b/media/vendor/mottie-tablesorter/css/jquery.tablesorter.pager.css @@ -0,0 +1,40 @@ +/* pager wrapper, div */ +.tablesorter-pager { + font-size: 14px; +} + +/* pager navigation arrows */ +.tablesorter-pager [class^="icon-"] { + vertical-align: middle; + margin-right: 4px; + cursor: pointer; +} + +/* pager output text */ +.tablesorter-pager .pagedisplay { + padding: 0 5px 0 5px; + width: auto; + white-space: nowrap; + text-align: center; +} + +/* pager element reset (needed for bootstrap) */ +.tablesorter-pager select { + margin: 0; + padding: 0; + height: 25px; + font-size: 12px; +} + +/*** css used when "updateArrows" option is true ***/ +/* the pager itself gets a disabled class when the number of rows is less than the size */ +.tablesorter-pager.disabled { + display: none; +} +/* hide or fade out pager arrows when the first or last row is visible */ +.tablesorter-pager .disabled { + /* visibility: hidden */ + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} diff --git a/media/vendor/mottie-tablesorter/css/theme.bootstrap.css b/media/vendor/mottie-tablesorter/css/theme.bootstrap.css new file mode 100644 index 0000000..1a02458 --- /dev/null +++ b/media/vendor/mottie-tablesorter/css/theme.bootstrap.css @@ -0,0 +1,136 @@ +/************* + Bootstrap theme + *************/ +/* jQuery Bootstrap Theme */ +.tablesorter-bootstrap { + width: 100%; +} +.tablesorter-bootstrap .tablesorter-header, +.tablesorter-bootstrap tfoot th, +.tablesorter-bootstrap tfoot td { + font: bold 14px/20px Arial, Sans-serif; + position: relative; + padding: 8px; + margin: 0 0 18px; + list-style: none; + background-color: #FBFBFB; + background-image: -moz-linear-gradient(top, white, #efefef); + background-image: -ms-linear-gradient(top, white, #efefef); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), to(#efefef)); + background-image: -webkit-linear-gradient(top, white, #efefef); + background-image: -o-linear-gradient(top, white, #efefef); + background-image: linear-gradient(to bottom, white, #efefef); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#efefef', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 1px 0 white; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 white; +} + +.tablesorter-bootstrap .tablesorter-header { + cursor: pointer; +} + +.tablesorter-bootstrap .tablesorter-header-inner { + position: relative; + padding: 4px 18px 4px 4px; +} + +/* bootstrap uses for icons */ +.tablesorter-bootstrap .tablesorter-header i { + position: absolute; + right: 2px; + top: 50%; + margin-top: -7px; /* half the icon height; older IE doesn't like this */ + width: 14px; + height: 14px; + background-repeat: no-repeat; + line-height: 14px; + display: inline-block; +} +.tablesorter-bootstrap .bootstrap-icon-unsorted { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNqUUL9Lw2AUTGP8mqGlpBQkNeCSRcckEBcHq1jImMElToKuDvpHFMGhU0BQcHBwLji6CE1B4uB/INQsDi4d2jQ/fPeZxo764OV6915f7lLJ81xot9tCURXqdVEUr7IsO6ffH9Q5BlEUCaLwWxWqTcbYnaIoh0Dw4gAvcWlxq1qt9hqNxg6hUGAP+uIPUrGs0qXLer2+v/pTX6QpxLtkc2U2m53ACb8sSdIDXerSEms2m6+DweAICA4d89KGbduf9MpEVdXQ9/2LVqv1CASHjjn3iq/x1xKFfxQPqGnada1W86bT6SiO42OS3qk3KPStLMvbk8nkfjwen/LLuq6blFymMB0KdUPSGhAcOualjX6/f0bCiC7NaWGPQr0BwaFjzn0gYJqmLAiCA8/zni3LmhuGkQPBoWPOPwQeaPIqD4fDruu6L6Zp5kBw6IudchmdJAkLw3DXcZwnIPjy/FuAAQCiqqWWCAFKcwAAAABJRU5ErkJggg==); +} + +/* since bootstrap (table-striped) uses nth-child(), we just use this to add a zebra stripe color */ +.tablesorter-bootstrap tr.odd td { + background-color: #f9f9f9; +} +.tablesorter-bootstrap tbody > .odd:hover > td, +.tablesorter-bootstrap tbody > .even:hover > td { + background-color: #f5f5f5; +} +.tablesorter-bootstrap tr.even td { + background-color: #fff; +} + +/* processing icon */ +.tablesorter-bootstrap .tablesorter-processing { + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs='); + position: absolute; + z-index: 1000; +} + +/* caption */ +caption { + background: #fff; +} + +/* filter widget */ +.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter { + width: 98%; + height: auto; + margin: 0 auto; + padding: 4px 6px; + background-color: #fff; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter.disabled { + background: #eee; +} +.tablesorter-bootstrap .tablesorter-filter-row td { + background: #eee; + line-height: normal; + text-align: center; + padding: 4px 6px; + vertical-align: middle; + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* hidden filter row */ +.tablesorter-bootstrap .tablesorter-filter-row.hideme td { + padding: 2px; /* change this to modify the thickness of the closed border row */ + margin: 0; + line-height: 0; +} +.tablesorter-bootstrap .tablesorter-filter-row.hideme .tablesorter-filter { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} + +/* pager plugin */ +.tablesorter-bootstrap .tablesorter-pager select { + padding: 4px 6px; +} +.tablesorter-bootstrap .tablesorter-pager .pagedisplay { + border: 0; +} + +.table-striped td { + padding-left: 15px; +} diff --git a/media/vendor/mottie-tablesorter/js/jquery.tablesorter.min.js b/media/vendor/mottie-tablesorter/js/jquery.tablesorter.min.js new file mode 100644 index 0000000..730df63 --- /dev/null +++ b/media/vendor/mottie-tablesorter/js/jquery.tablesorter.min.js @@ -0,0 +1,5 @@ +/*! +* TableSorter 2.9.1 min - Client-side table sorting with ease! +* Copyright (c) 2007 Christian Bach +*/ +!function(f){f.extend({tablesorter:new function(){function d(c){"undefined"!==typeof console&&"undefined"!==typeof console.log?console.log(c):alert(c)}function w(c,b){d(c+" ("+((new Date).getTime()-b.getTime())+"ms)")}function r(c,b,a){if(!b)return"";var e=c.config,d=e.textExtraction,m="",m="simple"===d?e.supportsTextContent?b.textContent:f(b).text():"function"===typeof d?d(b,c,a):"object"===typeof d&&d.hasOwnProperty(a)?d[a](b,c,a):e.supportsTextContent?b.textContent:f(b).text();return f.trim(m)} function j(c){var b=c.config,a=b.$tbodies=b.$table.children("tbody:not(."+b.cssInfoBlock+")"),e,t,m,p,k,n,h="";if(0===a.length)return b.debug?d("*Empty table!* Not building a parser cache"):"";a=a[0].rows;if(a[0]){e=[];t=a[0].cells.length;for(m=0;m':"";x.$headers=f(c).find(x.selectorHeaders).each(function(c){u=f(this);v=x.headers[c];x.headerContent[c]=this.innerHTML;A=x.headerTemplate.replace(/\{content\}/g,this.innerHTML).replace(/\{icon\}/g,B);x.onRenderTemplate&&(z=x.onRenderTemplate.apply(u,[c,A]))&&"string"===typeof z&&(A=z);this.innerHTML='
'+A+"
";x.onRenderHeader&&x.onRenderHeader.apply(u,[c]);this.column=a[this.parentNode.rowIndex+"-"+ this.cellIndex];var b=g.getData(u,v,"sortInitialOrder")||x.sortInitialOrder;this.order=/^d/i.test(b)||1===b?[1,0,2]:[0,1,2];this.count=-1;this.lockedOrder=!1;y=g.getData(u,v,"lockedOrder")||!1;"undefined"!==typeof y&&!1!==y&&(this.order=this.lockedOrder=/^d/i.test(y)||1===y?[1,1,1]:[0,0,0]);u.addClass(x.cssHeader);x.headerList[c]=this;u.parent().addClass(x.cssHeaderRow)});E(c);x.debug&&(w("Built headers:",D),d(x.$headers))}function A(c,b,a){var e=f(c);e.find(c.config.selectorRemove).remove();j(c); s(c);D(e,b,a)}function E(c){var b,a=c.config;a.$headers.each(function(c,d){b="false"===g.getData(d,a.headers[c],"sorter");d.sortDisabled=b;f(d)[b?"addClass":"removeClass"]("sorter-false")})}function y(c){var b,a,e,d=c.config,m=d.sortList,p=[d.cssAsc,d.cssDesc],k=f(c).find("tfoot tr").children().removeClass(p.join(" "));d.$headers.removeClass(p.join(" "));e=m.length;for(b=0;bn&&(l.sortList.push([h,n]),1n&&(l.sortList.push([h,n]),1 thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[]};g.benchmark=w;g.construct=function(c){return this.each(function(){if(!this.tHead|| 0===this.tBodies.length||!0===this.hasInitialized)return this.config&&this.config.debug?d("stopping initialization! No thead, tbody or tablesorter has already been initialized"):"";var b=f(this),a=this,e,t="",m=f.metadata;a.hasInitialized=!1;a.isProcessing=!0;a.config={};e=f.extend(!0,a.config,g.defaults,c);f.data(a,"tablesorter",e);e.debug&&f.data(a,"startoveralltimer",new Date);e.supportsTextContent="x"===f("x")[0].textContent;e.supportsDataObject=1.4<=parseFloat(f.fn.jquery);e.string= {max:1,min:-1,"max+":1,"max-":-1,zero:0,none:0,"null":0,top:!0,bottom:!1};/tablesorter\-/.test(b.attr("class"))||(t=""!==e.theme?" tablesorter-"+e.theme:"");e.$table=b.addClass(e.tableClass+t);e.$tbodies=b.children("tbody:not(."+e.cssInfoBlock+")");z(a);if(a.config.widthFixed&&0===f(a).find("colgroup").length){var p=f(""),k=f(a).width();f(a.tBodies[0]).find("tr:first").children("td").each(function(){p.append(f("").css("width",parseInt(1E3*(f(this).width()/k),10)/10+"%"))});f(a).prepend(p)}j(a); e.delayInit||s(a);I(a);e.supportsDataObject&&"undefined"!==typeof b.data().sortlist?e.sortList=b.data().sortlist:m&&(b.metadata()&&b.metadata().sortlist)&&(e.sortList=b.metadata().sortlist);g.applyWidget(a,!0);0'),a=f.fn.detach?b.detach():b.remove();a=f(c).find("span.tablesorter-savemyplace");b.insertAfter(a);a.remove();c.isProcessing=!1};g.clearTableBody=function(c){f(c)[0].config.$tbodies.empty()};g.restoreHeaders=function(c){var b=c.config;b.$headers.each(function(a){f(this).find(".tablesorter-header-inner").length&&f(this).html(b.headerContent[a])})};g.destroy=function(c,b,a){c=f(c)[0];if(c.hasInitialized){g.refreshWidgets(c, !0,!0);var e=f(c),d=c.config,m=e.find("thead:first"),p=m.find("tr."+d.cssHeaderRow).removeClass(d.cssHeaderRow),k=e.find("tfoot:first > tr").children("th, td");m.find("tr").not(p).remove();e.removeData("tablesorter").unbind("sortReset update updateAll updateRows updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave sortBegin sortEnd ".split(" ").join(".tablesorter "));d.$headers.add(k).removeClass(d.cssHeader+" "+d.cssAsc+" "+d.cssDesc).removeAttr("data-column"); p.find(d.selectorSort).unbind("mousedown.tablesorter mouseup.tablesorter");g.restoreHeaders(c);!1!==b&&e.removeClass(d.tableClass+" tablesorter-"+d.theme);c.hasInitialized=!1;"function"===typeof a&&a(c)}};g.regex=[/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,/^0x[0-9a-f]+$/i];g.sortText=function(c,b,a,e){if(b===a)return 0;var d=c.config,m=d.string[d.empties[e]|| d.emptyTo],f=g.regex;if(""===b&&0!==m)return"boolean"===typeof m?m?-1:1:-m||-1;if(""===a&&0!==m)return"boolean"===typeof m?m?1:-1:m||1;if("function"===typeof d.textSorter)return d.textSorter(b,a,c,e);c=b.replace(f[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");e=a.replace(f[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");b=parseInt(b.match(f[2]),16)||1!==c.length&&b.match(f[1])&&Date.parse(b);if(a=parseInt(a.match(f[2]),16)||b&&a.match(f[1])&&Date.parse(a)||null){if(b< a)return-1;if(b>a)return 1}d=Math.max(c.length,e.length);for(b=0;bf)return 1}return 0};g.sortTextDesc=function(c,b,a,e){if(b===a)return 0;var d=c.config,f=d.string[d.empties[e]||d.emptyTo];return""===b&&0!==f?"boolean"===typeof f?f?-1:1:f||1:""===a&&0!==f?"boolean"===typeof f?f?1:-1:-f||-1:"function"===typeof d.textSorter? d.textSorter(a,b,c,e):g.sortText(c,a,b)};g.getTextValue=function(c,b,a){if(b){var e=c?c.length:0,d=b+a;for(b=0;bf.inArray(p[e].id,m)))j.debug&&d("Refeshing widgets: Removing "+p[e].id),p[e].hasOwnProperty("remove")&&p[e].remove(c,j,j.widgetOptions);!0!==a&&g.applyWidget(c,b)};g.getData=function(c,b,a){var d="";c=f(c);var g,m;if(!c.length)return"";g=f.metadata?c.metadata():!1;m=" "+(c.attr("class")||"");"undefined"!==typeof c.data(a)||"undefined"!==typeof c.data(a.toLowerCase())?d+=c.data(a)||c.data(a.toLowerCase()):g&&"undefined"!==typeof g[a]?d+=g[a]:b&&"undefined"!==typeof b[a]?d+=b[a]:" "!==m&&m.match(" "+ a+"-")&&(d=m.match(RegExp("\\s"+a+"-([\\w-]+)"))[1]||"");return f.trim(d)};g.formatFloat=function(c,b){if("string"!==typeof c||""===c)return c;var a;c=(b&&b.config?!1!==b.config.usNumberFormat:"undefined"!==typeof b?b:1)?c.replace(/,/g,""):c.replace(/[\s|\.]/g,"").replace(/,/g,".");/^\s*\([.\d]+\)/.test(c)&&(c=c.replace(/^\s*\(/,"-").replace(/\)/,""));a=parseFloat(c);return isNaN(a)?f.trim(c):a};g.isDigit=function(c){return isNaN(c)?/^[\-+(]?\d+[)]?$/.test(c.toString().replace(/[,.'"\s]/g,"")):!0}}}); var j=f.tablesorter;f.fn.extend({tablesorter:j.construct});j.addParser({id:"text",is:function(){return!0},format:function(d,w){var r=w.config;d&&(d=f.trim(r.ignoreCase?d.toLocaleLowerCase():d),d=r.sortLocaleCompare?j.replaceAccents(d):d);return d},type:"text"});j.addParser({id:"digit",is:function(d){return j.isDigit(d)},format:function(d,f){return d?j.formatFloat(d.replace(/[^\w,. \-()]/g,""),f):d},type:"numeric"});j.addParser({id:"currency",is:function(d){return/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/.test((d|| "").replace(/[,. ]/g,""))},format:function(d,f){return d?j.formatFloat(d.replace(/[^\w,. \-()]/g,""),f):d},type:"numeric"});j.addParser({id:"ipAddress",is:function(d){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(d)},format:function(d,f){var r,u=d?d.split("."):"",s="",v=u.length;for(r=0;ra.filteredRows,a.startRow=h?1:a.size*a.page+1,a.page=h?0:a.page,a.endRow=Math.min(a.filteredRows,a.totalRows,a.size*(a.page+1)),f=d(a.cssPageDisplay,a.container),c=a.output.replace(/\{(page|filteredRows|filteredPages|totalPages|startRow|endRow|totalRows)\}/gi,function(b){return{"{page}":a.page+1,"{filteredRows}":a.filteredRows,"{filteredPages}":a.filteredPages,"{totalPages}":a.totalPages, "{startRow}":a.startRow,"{endRow}":a.endRow,"{totalRows}":a.totalRows}[b]}),f[0]&&(f["INPUT"===f[0].tagName?"val":"html"](c),d(a.cssGoto,a.container).length))){h="";f=Math.min(a.totalPages,a.filteredPages);for(c=1;c<=f;c++)h+="";d(a.cssGoto,a.container).html(h).val(a.page+1)}v(a);a.initialized&&d(b).trigger("pagerComplete",a)},t=function(b,a){var c,f=d(b.tBodies[0]);if(a.fixedHeight&&(f.find("tr.pagerSavedHeightSpacer").remove(),c=d.data(b,"pagerSavedHeight")))c-=f.height(), 5')},y=function(b,a){var c=d(b.tBodies[0]);c.find("tr.pagerSavedHeightSpacer").remove();d.data(b,"pagerSavedHeight",c.height());t(b,a);d.data(b,"pagerLastSize",a.size)},q=function(b,a){if(!a.ajaxUrl){var c,f=d(b.tBodies).children("tr:not(."+b.config.cssChildRow+")"),h=f.length,e=a.page*a.size, g=e+a.size,k=0;for(c=0;c=e&&k'+(f?f.message+" ("+f.name+")":"No rows found")+"";h=c.ajaxProcessing(b)||[0,[]];b=isNaN(h[0])&&!isNaN(h[1]);c.totalRows=h[b?1:0]||0;b=h[b?0:1]||[];w=b.length;j=h[2];if(0";for(e=0;e"+b[h][e]+"";r+=""}j&&j.length===m&&(g=n.hasClass("hasStickyHeaders"),l=n.find("."+(p.widgetOptions&&p.widgetOptions.stickyHeaders||"tablesorter-stickyheader")), k=n.find("tfoot tr:first").children(),n.find("th."+p.cssHeader).each(function(a){var b=d(this),c;b.find("."+p.cssIcon).length?(c=b.find("."+p.cssIcon).clone(!0),b.find(".tablesorter-header-inner").html(j[a]).append(c),g&&l.length&&(c=l.find("th").eq(a).find("."+p.cssIcon).clone(!0),l.find("th").eq(a).find(".tablesorter-header-inner").html(j[a]).append(c))):(b.find(".tablesorter-header-inner").html(j[a]),l.find("th").eq(a).find(".tablesorter-header-inner").html(j[a]));k.eq(a).html(j[a])}));n.find("thead tr."+ c.cssErrorRow).remove();f?n.find("thead").append(q):d(a.tBodies[0]).html(r);p.showProcessing&&d.tablesorter.isProcessing(a);n.trigger("update");c.totalPages=Math.ceil(c.totalRows/c.size);s(a,c);t(a,c);c.initialized&&n.trigger("pagerChange",c)}c.initialized||(c.initialized=!0,d(a).trigger("pagerInitialized",c))},x=function(b,a,c){c.isDisabled=!1;var f,h,e,g=document.createDocumentFragment(),k=a.length;f=c.page*c.size;var l=f+c.size;if(!(1>k)){c.initialized&&d(b).trigger("pagerChange",c);if(c.removeRows){l> a.length&&(l=a.length);d(b.tBodies[0]).addClass("tablesorter-hidden");for(d.tablesorter.clearTableBody(b);f=c.totalPages&&B(b,c);s(b,c);c.isDisabled||t(b,c);d(b).trigger("applyWidgets")}},C=function(b,a){a.ajax?v(a,!0):(a.isDisabled=!0,d.data(b,"pagerLastPage",a.page),d.data(b,"pagerLastSize",a.size),a.page=0,a.size=a.totalRows,a.totalPages= 1,d("tr.pagerSavedHeightSpacer",b.tBodies[0]).remove(),x(b,b.config.rowsCopy,a));d(a.container).find(a.cssPageSize+","+a.cssGoto).each(function(){d(this).addClass(a.cssDisabled)[0].disabled=!0})},m=function(b,a,c){if(!a.isDisabled){var f=Math.min(a.totalPages,a.filteredPages);0>a.page&&(a.page=0);a.page>f-1&&0!==f&&(a.page=f-1);if(a.ajax){var h,f=a.ajaxUrl?a.ajaxUrl.replace(/\{page([\-+]\d+)?\}/,function(b,c){return a.page+(c?parseInt(c,10):0)}).replace(/\{size\}/g,a.size):"",e=b.config.sortList, g=a.currentFilters||[],k=f.match(/\{\s*sort(?:List)?\s*:\s*(\w*)\s*\}/),l=f.match(/\{\s*filter(?:List)?\s*:\s*(\w*)\s*\}/),j=[];k&&(k=k[1],d.each(e,function(a,b){j.push(k+"["+b[0]+"]="+b[1])}),f=f.replace(/\{\s*sort(?:List)?\s*:\s*(\w*)\s*\}/g,j.length?j.join("&"):k),j=[]);l&&(l=l[1],d.each(g,function(a,b){b&&j.push(l+"["+a+"]="+encodeURIComponent(b))}),f=f.replace(/\{\s*filter(?:List)?\s*:\s*(\w*)\s*\}/g,j.length?j.join("&"):l));"function"===typeof a.customAjaxUrl&&(f=a.customAjaxUrl(b,f));h=f;f= b.config;""!==h&&(f.showProcessing&&d.tablesorter.isProcessing(b,!0),d(document).bind("ajaxError.pager",function(c,e,f,g){f.url===h&&(A(null,b,a,g),d(document).unbind("ajaxError.pager"))}),d.getJSON(h,function(c){A(c,b,a);d(document).unbind("ajaxError.pager")}))}else a.ajax||x(b,b.config.rowsCopy,a);d.data(b,"pagerLastPage",a.page);d.data(b,"pagerUpdateTriggered",!0);a.initialized&&!1!==c&&d(b).trigger("pageMoved",a)}},D=function(b,a,c){c.size=a;d.data(b,"pagerLastPage",c.page);d.data(b,"pagerLastSize", c.size);c.totalPages=Math.ceil(c.totalRows/c.size);m(b,c)},F=function(b,a){a.page=0;m(b,a)},B=function(b,a){a.page=Math.min(a.totalPages,a.filteredPages)-1;m(b,a)},G=function(b,a){a.page++;a.page>=Math.min(a.totalPages,a.filteredPages)-1&&(a.page=Math.min(a.totalPages,a.filteredPages)-1);m(b,a)},H=function(b,a){a.page--;0>=a.page&&(a.page=0);m(b,a)},E=function(b,a,c){var f=d(a.cssPageSize,a.container).removeClass(a.cssDisabled).removeAttr("disabled");d(a.container).find(a.cssGoto).removeClass(a.cssDisabled).removeAttr("disabled"); a.isDisabled=!1;a.page=d.data(b,"pagerLastPage")||a.page||0;a.size=d.data(b,"pagerLastSize")||parseInt(f.find("option[selected]").val(),10)||a.size;f.val(a.size);a.totalPages=Math.ceil(Math.min(a.totalPages,a.filteredPages)/a.size);c&&(d(b).trigger("update"),D(b,a.size,a),z(b,a),t(b,a))};u.appender=function(b,a){var c=b.config.pager;c.ajax||(b.config.rowsCopy=a,c.totalRows=a.length,c.size=d.data(b,"pagerLastSize")||c.size,c.totalPages=Math.ceil(c.totalRows/c.size),x(b,a,c))};u.construct=function(b){return this.each(function(){if(this.config&& this.hasInitialized){var a,c,f,h=this.config,e=h.pager=d.extend({},d.tablesorterPager.defaults,b),g=this,k=g.config,l=d(g),j=d(e.container).addClass("tablesorter-pager").show();h.appender=u.appender;l.unbind("filterStart.pager filterEnd.pager sortEnd.pager disable.pager enable.pager destroy.pager update.pager pageSize.pager").bind("filterStart.pager",function(a,b){d.data(g,"pagerUpdateTriggered",!1);e.currentFilters=b}).bind("filterEnd.pager sortEnd.pager",function(){d.data(g,"pagerUpdateTriggered")? d.data(g,"pagerUpdateTriggered",!1):(m(g,e,!1),s(g,e),t(g,e))}).bind("disable.pager",function(a){a.stopPropagation();C(g,e)}).bind("enable.pager",function(a){a.stopPropagation();E(g,e,!0)}).bind("destroy.pager",function(a){a.stopPropagation();C(g,e);d(e.container).hide();g.config.appender=null;d(g).unbind("destroy.pager sortEnd.pager filterEnd.pager enable.pager disable.pager")}).bind("update.pager",function(a){a.stopPropagation();q(g,e)}).bind("pageSize.pager",function(a,b){a.stopPropagation();e.size= parseInt(b,10)||10;q(g,e);s(g,e)}).bind("pageSet.pager",function(a,b){a.stopPropagation();e.page=(parseInt(b,10)||1)-1;m(g,e);s(g,e)});c=[e.cssFirst,e.cssPrev,e.cssNext,e.cssLast];f=[F,H,G,B];j.find(c.join(",")).unbind("click.pager").bind("click.pager",function(){var a,b=d(this),h=c.length;if(!b.hasClass(e.cssDisabled))for(a=0;a'),c.cssIcon&&u.find("."+c.cssIcon).addClass(e.icons),n.hasClass("hasFilters")&&u.find(".tablesorter-filter-row").addClass(e.filterRow);h.each(u,function(b){k=h(this);l=c.cssIcon?k.find("."+c.cssIcon):k;this.sortDisabled?(k.removeClass(t),l.removeClass(t+" tablesorter-icon "+e.icons)):(j=n.hasClass("hasStickyHeaders")? n.find(s).find("th").eq(b).add(k):k,f=k.hasClass(c.cssAsc)?e.sortAsc:k.hasClass(c.cssDesc)?e.sortDesc:k.hasClass(c.cssHeader)?e.sortNone:"",k[f===e.sortNone?"removeClass":"addClass"](e.active),l.removeClass(t).addClass(f))});c.debug&&g.benchmark("Applying "+r+" theme",a)},remove:function(d,c,b){d=c.$table;var a="object"===typeof b.uitheme?"jui":b.uitheme||"jui";b="object"===typeof b.uitheme?b.uitheme:g.themes[g.themes.hasOwnProperty(a)?a:"jui"];var f=d.children("thead").children(),h=b.sortNone+" "+ b.sortDesc+" "+b.sortAsc;d.removeClass("tablesorter-"+a+" "+b.table).find(c.cssHeader).removeClass(b.header);f.unbind("mouseenter.tsuitheme mouseleave.tsuitheme").removeClass(b.hover+" "+h+" "+b.active).find(".tablesorter-filter-row").removeClass(b.filterRow);f.find(".tablesorter-icon").removeClass(b.icons)}}); +g.addWidget({id:"columns",priority:30,options:{columns:["primary","secondary","tertiary"]},format:function(d,c,b){var a,f,k,l,j,n,r,e,u,s=c.$table,t=c.$tbodies,m=c.sortList,p=m.length,v=c.widgetColumns&& c.widgetColumns.hasOwnProperty("css")?c.widgetColumns.css||v:b&&b.hasOwnProperty("columns")?b.columns||v:v;n=v.length-1;r=v.join(" ");c.debug&&(j=new Date);for(u=0;u=]/g}},format:function(d,c,b){if(c.parsers&&!c.$table.hasClass("hasFilters")){var a,f,k,l,j,n,r,e,u,s,t,m,p,v,y,q,I,z,D=g.formatFloat,J="",B=c.$headers,C=b.filter_cssFilter,w=c.$table.addClass("hasFilters"),G=w.find("tbody"),H=c.parsers.length,K,L,M,E=function(a){var f=h.isArray(a),e=f?a:g.getFilters(d),k=(e||[]).join("");f&&c.$filters.each(function(b,c){h(c).val(a[b]||"")}); b.filter_hideFilters&&w.find(".tablesorter-filter-row").trigger(""===k?"mouseleave":"mouseenter");if(!(J===k&&!1!==a))if(w.trigger("filterStart",[e]),c.showProcessing)setTimeout(function(){N(a,e,k);return!1},30);else return N(a,e,k),!1},N=function(p,l,n){var m,u,t,s,z,x,C,A,F;c.debug&&(C=new Date);for(k=0;k]=?/.test(j))v=isNaN(e)?D(e.replace(b.filter_regex.nondigit,""),d):D(e,d),y=D(j.replace(b.filter_regex.nondigit,"").replace(b.filter_regex.operators,""),d),/>/.test(j)&&(x=/>=/.test(j)?v>=y:v>y),/F&&(x=A,A=F,F=x),x=v>=A&&v<=F||""===A||""===F?!0:!1):/[\?|\*]/.test(j)||/\s+OR\s+/.test(l[a])?x=RegExp(j.replace(/\s+or\s+/gi,"|").replace(/\?/g,"\\S{1}").replace(/\*/g,"\\S*")).test(e):(r=(e+q).indexOf(j),x=!b.filter_startsWith&&0<=r||b.filter_startsWith&&0=== r);s=x?s?!0:!1:!1}m[f].style.display=s?"":"none";m.eq(f)[s?"removeClass":"addClass"]("filtered");if(t.length)t[s?"show":"hide"]()}g.processTbody(d,p,!1)}J=n;w.data("lastSearch",l);c.debug&&g.benchmark("Completed filter widget search",C);w.trigger("applyWidgets");w.trigger("filterEnd")},O=function(a,e){var j,p=[];a=parseInt(a,10);j='";for(k=0;k'+p[k]+"":"";w.find("thead").find("select."+C+'[data-column="'+a+'"]')[e?"html":"append"](j)},P=function(c){for(a=0;a';for(a=0;a";c.$filters=h(q+="").appendTo(w.find("thead").eq(0)).find("td");for(a=0;a").appendTo(c.$filters.eq(a)):(b.filter_formatter&&h.isFunction(b.filter_formatter[a])?((q=b.filter_formatter[a](c.$filters.eq(a),a))&&0===q.length&&(q=c.$filters.eq(a).children("input")), q&&(0===q.parent().length||q.parent().length&&q.parent()[0]!==c.$filters[a])&&c.$filters.eq(a).append(q)):q=h('').appendTo(c.$filters.eq(a)),q&&q.attr("placeholder",p.attr("data-placeholder")||"")),q&&(q.addClass(C).attr("data-column",a),I&&(q.addClass("disabled")[0].disabled=!0))}w.bind("addRows updateCell update updateRows updateComplete appendCache filterReset search ".split(" ").join(".tsfilter "),function(a,b){/(search|filterReset)/.test(a.type)||(a.stopPropagation(),P(!0)); "filterReset"===a.type&&w.find("."+C).val("");b="search"===a.type?b:"updateComplete"===a.type?w.data("lastSearch"):"";E(b);return!1}).find("input."+C).bind("keyup search",function(a,c){if(!("keyup"===a.type&&(32>a.which&&8!==a.which||37<=a.which&&40>=a.which||13!==a.which&&!b.filter_liveSearch)))if("undefined"===typeof c||!1===c)E();else return clearTimeout(M),M=setTimeout(function(){E(c)},b.filter_searchDelay),!1});K=B.map(function(a){return g.getData?"parsed"===g.getData(B.filter('[data-column="'+ a+'"]:last'),c.headers[a],"filter"):h(this).hasClass("filter-parsed")}).get();b.filter_reset&&h(b.filter_reset).length&&h(b.filter_reset).bind("click.tsfilter",function(){w.trigger("filterReset")});if(b.filter_functions)for(z in b.filter_functions)if(b.filter_functions.hasOwnProperty(z)&&"string"===typeof z)if(q=B.filter('[data-column="'+z+'"]:last'),n="",!0===b.filter_functions[z]&&!q.hasClass("filter-false"))O(z);else if("string"===typeof z&&!q.hasClass("filter-false")){for(s in b.filter_functions[z])"string"=== typeof s&&(n+=""===n?'":"",n+='");w.find("thead").find("select."+C+'[data-column="'+z+'"]').append(n)}P(!0);w.find("select."+C).bind("change search",function(a,b){E(b)});b.filter_hideFilters&&w.find(".tablesorter-filter-row").addClass("hideme").bind("mouseenter mouseleave",function(a){var c;t=h(this);clearTimeout(u);u=setTimeout(function(){/enter|over/.test(a.type)?t.removeClass("hideme"):h(document.activeElement).closest("tr")[0]!== t[0]&&(c=w.find("."+b.filter_cssFilter).map(function(){return h(this).val()||""}).get().join(""),""===c&&t.addClass("hideme"))},200)}).find("input, select").bind("focus blur",function(a){m=h(this).closest("tr");clearTimeout(u);u=setTimeout(function(){if(""===w.find("."+b.filter_cssFilter).map(function(){return h(this).val()||""}).get().join(""))m["focus"===a.type?"removeClass":"addClass"]("hideme")},200)});c.showProcessing&&w.bind("filterStart.tsfilter filterEnd.tsfilter",function(a,b){var d=b?w.find("."+ c.cssHeader).filter("[data-column]").filter(function(){return""!==b[h(this).data("column")]}):"";g.isProcessing(w[0],"filterStart"===a.type,b?d:"")});c.debug&&g.benchmark("Applying Filter widget",L);w.trigger("filterInit");E()}},remove:function(d,c,b){var a,f=c.$tbodies;c.$table.removeClass("hasFilters").unbind("addRows updateCell update updateComplete appendCache search filterStart filterEnd ".split(" ").join(".tsfilter ")).find(".tablesorter-filter-row").remove();for(c=0;cc.top&&da.which&&8!==a.which||37<=a.which&&40>=a.which)){t=!0;a=h(this);var d=a.attr("data-column");c.$filters.find("input, select").eq(d).val(a.val()).trigger("search");setTimeout(function(){t=!1}, b.filter_searchDelay)}})}},remove:function(d,c,b){c.$table.removeClass("hasStickyHeaders").unbind("sortEnd.tsSticky pagerComplete.tsSticky").find("."+b.stickyHeaders).remove();b.$sticky&&b.$sticky.remove();h(window).unbind("scroll.tsSticky resize.tsSticky")}}); +g.addWidget({id:"resizable",priority:40,options:{resizable:!0,resizable_addLastColumn:!1},format:function(d,c,b){if(!c.$table.hasClass("hasResizable")){c.$table.addClass("hasResizable");var a,f,k,l,j={},n,r,e,u,s=c.$table,t=0,m=null,p=null, v=20>Math.abs(s.parent().width()-s.width()),y=function(){g.storage&&m&&(j[m.index()]=m.width(),j[p.index()]=p.width(),m.width(j[m.index()]),p.width(j[p.index()]),!1!==b.resizable&&g.storage(d,"tablesorter-resizable",j));t=0;m=p=null;h(window).trigger("resize")};if(j=g.storage&&!1!==b.resizable?g.storage(d,"tablesorter-resizable"):{})for(l in j)!isNaN(l)&&l');b.resizable_addLastColumn||(n=n.slice(0,-1));r=r?r.add(n):n});r.each(function(){a=h(this);l=parseInt(a.css("padding-right"),10)+10;f='
';a.find(".tablesorter-wrapper").append(f)}).bind("mousemove.tsresize",function(a){0!==t&&m&&(e=a.pageX-t,u=m.width(),m.width(u+e),m.width()!==u&&v&&p.width(p.width()-e),t=a.pageX)}).bind("mouseup.tsresize",function(){y()}).find(".tablesorter-resizer,.tablesorter-resizer-grip").bind("mousedown",function(a){m=h(a.target).closest("th");f=c.$headers.filter('[data-column="'+m.attr("data-column")+'"]');1 + ',$th); ?> + + + ',$details['val']); ?> + + + Other + + + + + +
+ Page: + + + + + + + Items per page +
+ diff --git a/views/table/list_body.php b/views/table/list_body.php deleted file mode 100644 index 8da6731..0000000 --- a/views/table/list_body.php +++ /dev/null @@ -1,7 +0,0 @@ - - $details) { ?> - - - - - diff --git a/views/table/list_foot.php b/views/table/list_foot.php deleted file mode 100644 index 000ca4b..0000000 --- a/views/table/list_foot.php +++ /dev/null @@ -1 +0,0 @@ - diff --git a/views/table/list_head.php b/views/table/list_head.php deleted file mode 100644 index 78780b5..0000000 --- a/views/table/list_head.php +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/views/table/list_xtra.php b/views/table/list_xtra.php deleted file mode 100644 index a8c1fa7..0000000 --- a/views/table/list_xtra.php +++ /dev/null @@ -1 +0,0 @@ - diff --git a/views/table/select_body.php b/views/table/select_body.php deleted file mode 100644 index 2d297d0..0000000 --- a/views/table/select_body.php +++ /dev/null @@ -1,8 +0,0 @@ - - - $details) { ?> - - - diff --git a/views/table/select_foot.php b/views/table/select_foot.php deleted file mode 100644 index e717a9d..0000000 --- a/views/table/select_foot.php +++ /dev/null @@ -1,9 +0,0 @@ -
',$th); ?>
Other
- -
- diff --git a/views/table/select_head.php b/views/table/select_head.php deleted file mode 100644 index 8d7d4ac..0000000 --- a/views/table/select_head.php +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/views/table/select_xtra.php b/views/table/select_xtra.php deleted file mode 100644 index a8c1fa7..0000000 --- a/views/table/select_xtra.php +++ /dev/null @@ -1 +0,0 @@ -
 ',$th); ?>
Other