From cd382aa2375b044ecc6d920de42df3375a757e07 Mon Sep 17 00:00:00 2001 From: biztechc Date: Sat, 12 Dec 2015 05:36:28 +0000 Subject: [PATCH] Add new version and update jquery datatable js --- css/jquery.dataTables.css | 179 ++--- js/jquery.dataTables.js | 1446 +++++++++++++++++++++++-------------- readme.txt | 7 +- wp-jquery-datatable.php | 2 +- 4 files changed, 993 insertions(+), 641 deletions(-) diff --git a/css/jquery.dataTables.css b/css/jquery.dataTables.css index 4e6fbe3..e29a70c 100644 --- a/css/jquery.dataTables.css +++ b/css/jquery.dataTables.css @@ -21,7 +21,7 @@ table.dataTable tfoot th { table.dataTable thead th, table.dataTable thead td { padding: 10px 18px; - border-bottom: 1px solid #111111; + border-bottom: 1px solid #111; } table.dataTable thead th:active, table.dataTable thead td:active { @@ -30,41 +30,49 @@ table.dataTable thead td:active { table.dataTable tfoot th, table.dataTable tfoot td { padding: 10px 18px 6px 18px; - border-top: 1px solid #111111; + border-top: 1px solid #111; } +table.dataTable thead .sorting, table.dataTable thead .sorting_asc, -table.dataTable thead .sorting_desc, -table.dataTable thead .sorting { +table.dataTable thead .sorting_desc { cursor: pointer; *cursor: hand; } +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + background-repeat: no-repeat; + background-position: center right; +} table.dataTable thead .sorting { - background: url("../images/sort_both.png") no-repeat center right; + background-image: url("../images/sort_both.png"); } table.dataTable thead .sorting_asc { - background: url("../images/sort_asc.png") no-repeat center right; + background-image: url("../images/sort_asc.png"); } table.dataTable thead .sorting_desc { - background: url("../images/sort_desc.png") no-repeat center right; + background-image: url("../images/sort_desc.png"); } table.dataTable thead .sorting_asc_disabled { - background: url("../images/sort_asc_disabled.png") no-repeat center right; + background-image: url("../images/sort_asc_disabled.png"); } table.dataTable thead .sorting_desc_disabled { - background: url("../images/sort_desc_disabled.png") no-repeat center right; + background-image: url("../images/sort_desc_disabled.png"); } table.dataTable tbody tr { - background-color: white; + background-color: #ffffff; } table.dataTable tbody tr.selected { - background-color: #b0bed9; + background-color: #B0BED9; } table.dataTable tbody th, table.dataTable tbody td { padding: 8px 10px; } table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { - border-top: 1px solid #dddddd; + border-top: 1px solid #ddd; } table.dataTable.row-border tbody tr:first-child th, table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, @@ -72,12 +80,12 @@ table.dataTable.display tbody tr:first-child td { border-top: none; } table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { - border-top: 1px solid #dddddd; - border-right: 1px solid #dddddd; + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; } table.dataTable.cell-border tbody tr th:first-child, table.dataTable.cell-border tbody tr td:first-child { - border-left: 1px solid #dddddd; + border-left: 1px solid #ddd; } table.dataTable.cell-border tbody tr:first-child th, table.dataTable.cell-border tbody tr:first-child td { @@ -87,35 +95,27 @@ table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { background-color: #f9f9f9; } table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { - background-color: #abb9d3; + background-color: #acbad4; } -table.dataTable.hover tbody tr:hover, -table.dataTable.hover tbody tr.odd:hover, -table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover, -table.dataTable.display tbody tr.odd:hover, -table.dataTable.display tbody tr.even:hover { - background-color: whitesmoke; +table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { + background-color: #f6f6f6; } -table.dataTable.hover tbody tr:hover.selected, -table.dataTable.hover tbody tr.odd:hover.selected, -table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected, -table.dataTable.display tbody tr.odd:hover.selected, -table.dataTable.display tbody tr.even:hover.selected { - background-color: #a9b7d1; +table.dataTable.hover tbody tr:hover.selected, table.dataTable.display tbody tr:hover.selected { + background-color: #aab7d1; } table.dataTable.order-column tbody tr > .sorting_1, table.dataTable.order-column tbody tr > .sorting_2, table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, table.dataTable.display tbody tr > .sorting_2, table.dataTable.display tbody tr > .sorting_3 { - background-color: #f9f9f9; + background-color: #fafafa; } table.dataTable.order-column tbody tr.selected > .sorting_1, table.dataTable.order-column tbody tr.selected > .sorting_2, table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, table.dataTable.display tbody tr.selected > .sorting_2, table.dataTable.display tbody tr.selected > .sorting_3 { - background-color: #acbad4; + background-color: #acbad5; } table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { background-color: #f1f1f1; @@ -127,91 +127,67 @@ table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column. background-color: whitesmoke; } table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { - background-color: #a6b3cd; + background-color: #a6b4cd; } table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { - background-color: #a7b5ce; + background-color: #a8b5cf; } table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { - background-color: #a9b6d0; + background-color: #a9b7d1; } table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { - background-color: #f9f9f9; + background-color: #fafafa; } table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { - background-color: #fbfbfb; + background-color: #fcfcfc; } table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { - background-color: #fdfdfd; + background-color: #fefefe; } table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { - background-color: #acbad4; + background-color: #acbad5; } table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { - background-color: #adbbd6; + background-color: #aebcd6; } table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { background-color: #afbdd8; } -table.dataTable.display tbody tr:hover > .sorting_1, -table.dataTable.display tbody tr.odd:hover > .sorting_1, -table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 { +table.dataTable.display tbody tr:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1 { background-color: #eaeaea; } -table.dataTable.display tbody tr:hover > .sorting_2, -table.dataTable.display tbody tr.odd:hover > .sorting_2, -table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 { - background-color: #ebebeb; +table.dataTable.display tbody tr:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2 { + background-color: #ececec; } -table.dataTable.display tbody tr:hover > .sorting_3, -table.dataTable.display tbody tr.odd:hover > .sorting_3, -table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3, -table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3, -table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 { - background-color: #eeeeee; +table.dataTable.display tbody tr:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3 { + background-color: #efefef; } -table.dataTable.display tbody tr:hover.selected > .sorting_1, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_1, -table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 { - background-color: #a1aec7; +table.dataTable.display tbody tr:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1 { + background-color: #a2aec7; } -table.dataTable.display tbody tr:hover.selected > .sorting_2, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_2, -table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 { - background-color: #a2afc8; +table.dataTable.display tbody tr:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2 { + background-color: #a3b0c9; } -table.dataTable.display tbody tr:hover.selected > .sorting_3, -table.dataTable.display tbody tr.odd:hover.selected > .sorting_3, -table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3, -table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3, -table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 { - background-color: #a4b2cb; +table.dataTable.display tbody tr:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3 { + background-color: #a5b2cb; } table.dataTable.no-footer { - border-bottom: 1px solid #111111; + border-bottom: 1px solid #111; } table.dataTable.nowrap th, table.dataTable.nowrap td { white-space: nowrap; } table.dataTable.compact thead th, table.dataTable.compact thead td { - padding: 5px 9px; + padding: 4px 17px 4px 4px; } table.dataTable.compact tfoot th, table.dataTable.compact tfoot td { - padding: 5px 9px 3px 9px; + padding: 4px; } table.dataTable.compact tbody th, table.dataTable.compact tbody td { - padding: 4px 5px; + padding: 4px; } table.dataTable th.dt-left, table.dataTable td.dt-left { @@ -332,24 +308,25 @@ table.dataTable td { text-decoration: none !important; cursor: pointer; *cursor: hand; - color: #333333 !important; + color: #333 !important; border: 1px solid transparent; + border-radius: 2px; } .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { - color: #333333 !important; - border: 1px solid #cacaca; + color: #333 !important; + border: 1px solid #979797; background-color: white; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, gainsboro)); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, white 0%, gainsboro 100%); + background: -webkit-linear-gradient(top, white 0%, #dcdcdc 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, white 0%, gainsboro 100%); + background: -moz-linear-gradient(top, white 0%, #dcdcdc 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, white 0%, gainsboro 100%); + background: -ms-linear-gradient(top, white 0%, #dcdcdc 100%); /* IE10+ */ - background: -o-linear-gradient(top, white 0%, gainsboro 100%); + background: -o-linear-gradient(top, white 0%, #dcdcdc 100%); /* Opera 11.10+ */ - background: linear-gradient(to bottom, white 0%, gainsboro 100%); + background: linear-gradient(to bottom, white 0%, #dcdcdc 100%); /* W3C */ } .dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { @@ -361,19 +338,19 @@ table.dataTable td { } .dataTables_wrapper .dataTables_paginate .paginate_button:hover { color: white !important; - border: 1px solid #111111; + border: 1px solid #111; background-color: #585858; - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111111)); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111)); /* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #585858 0%, #111111 100%); + background: -webkit-linear-gradient(top, #585858 0%, #111 100%); /* Chrome10+,Safari5.1+ */ - background: -moz-linear-gradient(top, #585858 0%, #111111 100%); + background: -moz-linear-gradient(top, #585858 0%, #111 100%); /* FF3.6+ */ - background: -ms-linear-gradient(top, #585858 0%, #111111 100%); + background: -ms-linear-gradient(top, #585858 0%, #111 100%); /* IE10+ */ - background: -o-linear-gradient(top, #585858 0%, #111111 100%); + background: -o-linear-gradient(top, #585858 0%, #111 100%); /* Opera 11.10+ */ - background: linear-gradient(to bottom, #585858 0%, #111111 100%); + background: linear-gradient(to bottom, #585858 0%, #111 100%); /* W3C */ } .dataTables_wrapper .dataTables_paginate .paginate_button:active { @@ -393,6 +370,9 @@ table.dataTable td { /* W3C */ box-shadow: inset 0 0 3px #111; } +.dataTables_wrapper .dataTables_paginate .ellipsis { + padding: 0 1em; +} .dataTables_wrapper .dataTables_processing { position: absolute; top: 50%; @@ -406,24 +386,18 @@ table.dataTable td { font-size: 1.2em; background-color: white; background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); - /* Chrome,Safari4+ */ background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Chrome10+,Safari5.1+ */ background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* FF3.6+ */ background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* IE10+ */ background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* Opera 11.10+ */ background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); - /* W3C */ } .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate { - color: #333333; + color: #333; } .dataTables_wrapper .dataTables_scroll { clear: both; @@ -432,6 +406,9 @@ table.dataTable td { *margin-top: -1px; -webkit-overflow-scrolling: touch; } +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td { + vertical-align: middle; +} .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing, .dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing { height: 0; @@ -440,7 +417,7 @@ table.dataTable td { padding: 0 !important; } .dataTables_wrapper.no-footer .dataTables_scrollBody { - border-bottom: 1px solid #111111; + border-bottom: 1px solid #111; } .dataTables_wrapper.no-footer div.dataTables_scrollHead table, .dataTables_wrapper.no-footer div.dataTables_scrollBody table { diff --git a/js/jquery.dataTables.js b/js/jquery.dataTables.js index df29612..f0aece9 100644 --- a/js/jquery.dataTables.js +++ b/js/jquery.dataTables.js @@ -1,15 +1,15 @@ -/*! DataTables 1.10.4 - * ©2008-2014 SpryMedia Ltd - datatables.net/license +/*! DataTables 1.10.10 + * ©2008-2015 SpryMedia Ltd - datatables.net/license */ /** * @summary DataTables * @description Paginate, search and order HTML tables - * @version 1.10.4 + * @version 1.10.10 * @file jquery.dataTables.js * @author SpryMedia Ltd (www.sprymedia.co.uk) * @contact www.sprymedia.co.uk/contact - * @copyright Copyright 2008-2014 SpryMedia Ltd. + * @copyright Copyright 2008-2015 SpryMedia Ltd. * * This source file is free software, available under the following license: * MIT license - http://datatables.net/license @@ -22,28 +22,41 @@ */ /*jslint evil: true, undef: true, browser: true */ -/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnScrollBarWidth,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/ - -(/** @lends */function( window, document, undefined ) { +/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/ (function( factory ) { "use strict"; if ( typeof define === 'function' && define.amd ) { - // Define as an AMD module if possible - define( 'datatables', ['jquery'], factory ); + // AMD + define( ['jquery'], function ( $ ) { + return factory( $, window, document ); + } ); } - else if ( typeof exports === 'object' ) { - // Node/CommonJS - factory( require( 'jquery' ) ); - } - else if ( jQuery && !jQuery.fn.dataTable ) { - // Define using browser globals otherwise - // Prevent multiple instantiations if the script is loaded twice - factory( jQuery ); + else if ( typeof exports === 'object' ) { + // CommonJS + module.exports = function (root, $) { + if ( ! root ) { + // CommonJS environments without a window global must pass a + // root. This will give an error otherwise + root = window; + } + + if ( ! $ ) { + $ = typeof window !== 'undefined' ? // jQuery's factory checks for a global window + require('jquery') : + require('jquery')( root ); + } + + return factory( $, root, root.document ); + }; + } + else { + // Browser + factory( jQuery, window, document ); } } -(/** @lends */function( $ ) { +(function( $, window, document, undefined ) { "use strict"; /** @@ -111,9 +124,17 @@ // Escape regular expression special characters var _re_escape_regex = new RegExp( '(\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ].join('|\\') + ')', 'g' ); - // U+2009 is thin space and U+202F is narrow no-break space, both used in many - // standards as thousands separators - var _re_formatted_numeric = /[',$£€¥%\u2009\u202F]/g; + // http://en.wikipedia.org/wiki/Foreign_exchange_market + // - \u20BD - Russian ruble. + // - \u20a9 - South Korean Won + // - \u20BA - Turkish Lira + // - \u20B9 - Indian Rupee + // - R - Brazil (R$) and South Africa + // - fr - Swiss Franc + // - kr - Swedish krona, Norwegian krone and Danish krone + // - \u2009 is thin space and \u202F is narrow no-break space, both used in many + // standards as thousands separators. + var _re_formatted_numeric = /[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi; var _empty = function ( d ) { @@ -142,6 +163,13 @@ var _isNumber = function ( d, decimalPoint, formatted ) { var strType = typeof d === 'string'; + // If empty return immediately so there must be a number if it is a + // formatted string (this stops the string "k", or "kr", etc being detected + // as a formatted number for currency + if ( _empty( d ) ) { + return true; + } + if ( decimalPoint && strType ) { d = _numToDecimal( d, decimalPoint ); } @@ -150,7 +178,7 @@ d = d.replace( _re_formatted_numeric, '' ); } - return _empty( d ) || (!isNaN( parseFloat(d) ) && isFinite( d )); + return !isNaN( parseFloat(d) ) && isFinite( d ); }; @@ -452,6 +480,14 @@ _fnCompatMap( init, 'pageLength', 'iDisplayLength' ); _fnCompatMap( init, 'searching', 'bFilter' ); + // Boolean initialisation of x-scrolling + if ( typeof init.sScrollX === 'boolean' ) { + init.sScrollX = init.sScrollX ? '100%' : ''; + } + if ( typeof init.scrollX === 'boolean' ) { + init.scrollX = init.scrollX ? '100%' : ''; + } + // Column search objects are in an array, so it needs to be converted // element by element var searchCols = init.aoSearchCols; @@ -478,6 +514,12 @@ _fnCompatMap( init, 'orderData', 'aDataSort' ); _fnCompatMap( init, 'orderSequence', 'asSorting' ); _fnCompatMap( init, 'orderDataType', 'sortDataType' ); + + // orderData can be given as an integer + var dataSort = init.aDataSort; + if ( dataSort && ! $.isArray( dataSort ) ) { + init.aDataSort = [ dataSort ]; + } } @@ -488,49 +530,75 @@ */ function _fnBrowserDetect( settings ) { - var browser = settings.oBrowser; + // We don't need to do this every time DataTables is constructed, the values + // calculated are specific to the browser and OS configuration which we + // don't expect to change between initialisations + if ( ! DataTable.__browser ) { + var browser = {}; + DataTable.__browser = browser; - // Scrolling feature / quirks detection - var n = $('
') - .css( { - position: 'absolute', - top: 0, - left: 0, - height: 1, - width: 1, - overflow: 'hidden' - } ) - .append( - $('
') - .css( { - position: 'absolute', - top: 1, - left: 1, - width: 100, - overflow: 'scroll' - } ) - .append( - $('
') - .css( { - width: '100%', - height: 10 - } ) - ) - ) - .appendTo( 'body' ); + // Scrolling feature / quirks detection + var n = $('
') + .css( { + position: 'fixed', + top: 0, + left: 0, + height: 1, + width: 1, + overflow: 'hidden' + } ) + .append( + $('
') + .css( { + position: 'absolute', + top: 1, + left: 1, + width: 100, + overflow: 'scroll' + } ) + .append( + $('
') + .css( { + width: '100%', + height: 10 + } ) + ) + ) + .appendTo( 'body' ); - var test = n.find('.test'); + var outer = n.children(); + var inner = outer.children(); - // IE6/7 will oversize a width 100% element inside a scrolling element, to - // include the width of the scrollbar, while other browsers ensure the inner - // element is contained without forcing scrolling - browser.bScrollOversize = test[0].offsetWidth === 100; + // Numbers below, in order, are: + // inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth + // + // IE6 XP: 100 100 100 83 + // IE7 Vista: 100 100 100 83 + // IE 8+ Windows: 83 83 100 83 + // Evergreen Windows: 83 83 100 83 + // Evergreen Mac with scrollbars: 85 85 100 85 + // Evergreen Mac without scrollbars: 100 100 100 100 - // In rtl text layout, some browsers (most, but not all) will place the - // scrollbar on the left, rather than the right. - browser.bScrollbarLeft = test.offset().left !== 1; + // Get scrollbar width + browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth; - n.remove(); + // IE6/7 will oversize a width 100% element inside a scrolling element, to + // include the width of the scrollbar, while other browsers ensure the inner + // element is contained without forcing scrolling + browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100; + + // In rtl text layout, some browsers (most, but not all) will place the + // scrollbar on the left, rather than the right. + browser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1; + + // IE8- don't provide height and width for getBoundingClientRect + browser.bBounding = n[0].getBoundingClientRect().width ? true : false; + + n.remove(); + } + + $.extend( settings.oBrowser, DataTable.__browser ); + settings.oScroll.iBarWidth = DataTable.__browser.barWidth; } @@ -595,7 +663,7 @@ searchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] ); // Use the default column options function to initialise classes etc - _fnColumnOptions( oSettings, iCol, null ); + _fnColumnOptions( oSettings, iCol, $(nTh).data() ); } @@ -658,7 +726,7 @@ /* iDataSort to be applied (backwards compatibility), but aDataSort will take * priority if defined */ - if ( typeof oOptions.iDataSort === 'number' ) + if ( oOptions.iDataSort !== undefined ) { oCol.aDataSort = [ oOptions.iDataSort ]; } @@ -987,7 +1055,8 @@ /* Create the object for storing information about this new row */ var iRow = oSettings.aoData.length; var oData = $.extend( true, {}, DataTable.models.oRow, { - src: nTr ? 'dom' : 'data' + src: nTr ? 'dom' : 'data', + idx: iRow } ); oData._aData = aDataIn; @@ -996,20 +1065,21 @@ /* Create the cells */ var nTd, sThisType; var columns = oSettings.aoColumns; + + // Invalidate the column types as the new data needs to be revalidated for ( var i=0, iLen=columns.length ; i divBodyEl.clientHeight; + + if ( settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined ) { + settings.scrollBarVis = scrollBarVis; + _fnAdjustColumnSizing( settings ); + return; // adjust column sizing will call this function again + } + else { + settings.scrollBarVis = scrollBarVis; + } + /* * 1. Re-create the table inside the scrolling div */ @@ -3824,13 +3949,6 @@ }, footerSrcEls ); } - // If scroll collapse is enabled, when we put the headers back into the body for sizing, we - // will end up forcing the scrollbar to appear, making our measurements wrong for when we - // then hide it (end of this function), so add the header height to the body scroller. - if ( scroll.bCollapse && scrollY !== "" ) { - divBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+"px"; - } - // Size the table as a whole sanityWidth = table.outerWidth(); if ( scrollX === "" ) { @@ -3845,32 +3963,17 @@ ) { tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth); } - } - else - { - // x scrolling - if ( scrollXInner !== "" ) { - // x scroll inner has been given - use it - tableStyle.width = _fnStringToCss(scrollXInner); - } - else if ( sanityWidth == divBody.width() && divBody.height() < table.height() ) { - // There is y-scrolling - try to take account of the y scroll bar - tableStyle.width = _fnStringToCss( sanityWidth-barWidth ); - if ( table.outerWidth() > sanityWidth-barWidth ) { - // Not possible to take account of it - tableStyle.width = _fnStringToCss( sanityWidth ); - } - } - else { - // When all else fails - tableStyle.width = _fnStringToCss( sanityWidth ); - } - } - // Recalculate the sanity width - now that we've applied the required width, - // before it was a temporary variable. This is required because the column - // width calculation is done before this table DOM is created. - sanityWidth = table.outerWidth(); + // Recalculate the sanity width + sanityWidth = table.outerWidth(); + } + else if ( scrollXInner !== "" ) { + // legacy x scroll inner has been given - use it + tableStyle.width = _fnStringToCss(scrollXInner); + + // Recalculate the sanity width + sanityWidth = table.outerWidth(); + } // Hidden header should have zero height, so remove padding and borders. Then // set the width based on the real headers @@ -3978,18 +4081,6 @@ } } - if ( scrollY && scroll.bCollapse ) { - divBodyStyle.height = _fnStringToCss( scrollY ); - - var iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ? - barWidth : - 0; - - if ( tableEl.offsetHeight < divBodyEl.offsetHeight ) { - divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra ); - } - } - /* Finally set the width's of the header and footer tables */ var iOuterWidth = table.outerWidth(); divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth ); @@ -4078,10 +4169,17 @@ columnCount = columns.length, visibleColumns = _fnGetColumns( oSettings, 'bVisible' ), headerCells = $('th', oSettings.nTHead), - tableWidthAttr = table.getAttribute('width'), + tableWidthAttr = table.getAttribute('width'), // from DOM element tableContainer = table.parentNode, userInputs = false, - i, column, columnIdx, width, outerWidth; + i, column, columnIdx, width, outerWidth, + browser = oSettings.oBrowser, + ie67 = browser.bScrollOversize; + + var styleWidth = table.style.width; + if ( styleWidth && styleWidth.indexOf('%') !== -1 ) { + tableWidthAttr = styleWidth; + } /* Convert any user input sizes into pixel sizes */ for ( i=0 ; i') ); + .removeAttr( 'id' ); + + // Clean up the table body + tmpTable.find('tbody tr').remove(); + var tr = $('').appendTo( tmpTable.find('tbody') ); + + // Clone the table header and footer - we can't use the header / footer + // from the cloned table, since if scrolling is active, the table's + // real header and footer are contained in different table tags + tmpTable.find('thead, tfoot').remove(); + tmpTable + .append( $(oSettings.nTHead).clone() ) + .append( $(oSettings.nTFoot).clone() ); // Remove any assigned widths from the footer (from scrolling) tmpTable.find('tfoot th, tfoot td').css('width', ''); - var tr = tmpTable.find( 'tbody tr' ); - // Apply custom sizing to the cloned header headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] ); @@ -4134,6 +4243,19 @@ headerCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ? _fnStringToCss( column.sWidthOrig ) : ''; + + // For scrollX we need to force the column width otherwise the + // browser will collapse it. If this width is smaller than the + // width the column requires, then it will have no effect + if ( column.sWidthOrig && scrollX ) { + $( headerCells[i] ).append( $('
').css( { + width: column.sWidthOrig, + margin: 0, + padding: 0, + border: 0, + height: 1 + } ) ); + } } // Find the widest cell for each column and put it into the table @@ -4149,8 +4271,24 @@ } } - // Table has been built, attach to the document so we can work with it - tmpTable.appendTo( tableContainer ); + // Table has been built, attach to the document so we can work with it. + // A holding element is used, positioned at the top of the container + // with minimal height, so it has no effect on if the container scrolls + // or not. Otherwise it might trigger scrolling when it actually isn't + // needed + var holder = $('
').css( scrollX || scrollY ? + { + position: 'absolute', + top: 0, + left: 0, + height: 1, + right: 0, + overflow: 'hidden' + } : + {} + ) + .append( tmpTable ) + .appendTo( tableContainer ); // When scrolling (X or Y) we want to set the width of the table as // appropriate. However, when not scrolling leave the table width as it @@ -4160,57 +4298,50 @@ } else if ( scrollX ) { tmpTable.css( 'width', 'auto' ); + tmpTable.removeAttr('width'); - if ( tmpTable.width() < tableContainer.offsetWidth ) { - tmpTable.width( tableContainer.offsetWidth ); + // If there is no width attribute or style, then allow the table to + // collapse + if ( tmpTable.width() < tableContainer.clientWidth && tableWidthAttr ) { + tmpTable.width( tableContainer.clientWidth ); } } else if ( scrollY ) { - tmpTable.width( tableContainer.offsetWidth ); + tmpTable.width( tableContainer.clientWidth ); } else if ( tableWidthAttr ) { tmpTable.width( tableWidthAttr ); } - // Take into account the y scrollbar - _fnScrollingWidthAdjust( oSettings, tmpTable[0] ); - - // Browsers need a bit of a hand when a width is assigned to any columns - // when x-scrolling as they tend to collapse the table to the min-width, - // even if we sent the column widths. So we need to keep track of what - // the table width should be by summing the user given values, and the - // automatic values - if ( scrollX ) - { - var total = 0; - - for ( i=0 ; i max ) { max = s.length; @@ -4386,53 +4505,6 @@ } - /** - * Get the width of a scroll bar in this browser being used - * @returns {int} width in pixels - * @memberof DataTable#oApi - */ - function _fnScrollBarWidth () - { - // On first run a static variable is set, since this is only needed once. - // Subsequent runs will just use the previously calculated value - if ( ! DataTable.__scrollbarWidth ) { - var inner = $('

').css( { - width: '100%', - height: 200, - padding: 0 - } )[0]; - - var outer = $('

') - .css( { - position: 'absolute', - top: 0, - left: 0, - width: 200, - height: 150, - padding: 0, - overflow: 'hidden', - visibility: 'hidden' - } ) - .append( inner ) - .appendTo( 'body' ); - - var w1 = inner.offsetWidth; - outer.css( 'overflow', 'scroll' ); - var w2 = inner.offsetWidth; - - if ( w1 === w2 ) { - w2 = outer[0].clientWidth; - } - - outer.remove(); - - DataTable.__scrollbarWidth = w1 - w2; - } - - return DataTable.__scrollbarWidth; - } - - function _fnSortFlatten ( settings ) { @@ -4452,7 +4524,7 @@ } else { // 2D array - nestedSort.push.apply( nestedSort, a ); + $.merge( nestedSort, a ); } }; @@ -4720,6 +4792,10 @@ // Yes, modify the sort nextSortIdx = next( sorting[sortIdx], true ); + if ( nextSortIdx === null && sorting.length === 1 ) { + nextSortIdx = 0; // can't remove sorting completely + } + if ( nextSortIdx === null ) { sorting.splice( sortIdx, 1 ); } @@ -4954,31 +5030,43 @@ // Restore key features - todo - for 1.11 this needs to be done by // subscribed events - settings._iDisplayStart = state.start; - settings.iInitDisplayStart = state.start; - settings._iDisplayLength = state.length; - settings.aaSorting = []; + if ( state.start !== undefined ) { + settings._iDisplayStart = state.start; + settings.iInitDisplayStart = state.start; + } + if ( state.length !== undefined ) { + settings._iDisplayLength = state.length; + } // Order - $.each( state.order, function ( i, col ) { - settings.aaSorting.push( col[0] >= columns.length ? - [ 0, col[1] ] : - col - ); - } ); + if ( state.order !== undefined ) { + settings.aaSorting = []; + $.each( state.order, function ( i, col ) { + settings.aaSorting.push( col[0] >= columns.length ? + [ 0, col[1] ] : + col + ); + } ); + } // Search - $.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) ); + if ( state.search !== undefined ) { + $.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) ); + } // Columns for ( i=0, ien=state.columns.length ; i').appendTo(this); } oSettings.nTHead = thead[0]; - var tbody = $(this).children('tbody'); + var tbody = $this.children('tbody'); if ( tbody.length === 0 ) { tbody = $('').appendTo(this); } oSettings.nTBody = tbody[0]; - var tfoot = $(this).children('tfoot'); + var tfoot = $this.children('tfoot'); if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") ) { // If we are a scrolling table, and no footer has been given, then we need to create @@ -6472,7 +6572,7 @@ } if ( tfoot.length === 0 || tfoot.children().length === 0 ) { - $(this).addClass( oClasses.sNoFooter ); + $this.addClass( oClasses.sNoFooter ); } else if ( tfoot.length > 0 ) { oSettings.nTFoot = tfoot[0]; @@ -6681,17 +6781,15 @@ */ _Api = function ( context, data ) { - if ( ! this instanceof _Api ) { - throw 'DT API must be constructed as a new object'; - // or should it do the 'new' for the caller? - // return new _Api.apply( this, arguments ); + if ( ! (this instanceof _Api) ) { + return new _Api( context, data ); } var settings = []; var ctxSettings = function ( o ) { var a = _toSettings( o ); if ( a ) { - settings.push.apply( settings, a ); + settings = settings.concat( a ); } }; @@ -6709,7 +6807,7 @@ // Initial data if ( data ) { - this.push.apply( this, data.toArray ? data.toArray() : data ); + $.merge( this, data ); } // selector @@ -6724,25 +6822,27 @@ DataTable.Api = _Api; - _Api.prototype = /** @lends DataTables.Api */{ - /** - * Return a new Api instance, comprised of the data held in the current - * instance, join with the other array(s) and/or value(s). - * - * An alias for `Array.prototype.concat`. - * - * @type method - * @param {*} value1 Arrays and/or values to concatenate. - * @param {*} [...] Additional arrays and/or values to concatenate. - * @returns {DataTables.Api} New API instance, comprising of the combined - * array. - */ + // Don't destroy the existing prototype, just extend it. Required for jQuery 2's + // isPlainObject. + $.extend( _Api.prototype, { + any: function () + { + return this.count() !== 0; + }, + + concat: __arrayProto.concat, context: [], // array of table settings objects + count: function () + { + return this.flatten().length; + }, + + each: function ( fn ) { for ( var i=0, ien=this.length ; i…'); + container.append(''); break; case 'first': @@ -14157,10 +14502,11 @@ break; } - if ( btnDisplay ) { + if ( btnDisplay !== null ) { node = $('', { 'class': classes.sPageButton+' '+btnClass, 'aria-controls': settings.sTableId, + 'aria-label': aria[ button ], 'data-dt-idx': counter, 'tabindex': settings.iTabIndex, 'id': idx === 0 && typeof button === 'string' ? @@ -14183,20 +14529,22 @@ // IE9 throws an 'unknown error' if document.activeElement is used // inside an iframe or frame. Try / catch the error. Not good for // accessibility, but neither are frames. + var activeEl; + try { // Because this approach is destroying and recreating the paging // elements, focus is lost on the select button which is bad for // accessibility. So we want to restore focus once the draw has // completed - var activeEl = $(document.activeElement).data('dt-idx'); - - attach( $(host).empty(), buttons ); - - if ( activeEl !== null ) { - $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); - } + activeEl = $(host).find(document.activeElement).data('dt-idx'); } catch (e) {} + + attach( $(host).empty(), buttons ); + + if ( activeEl ) { + $(host).find( '[data-dt-idx='+activeEl+']' ).focus(); + } } } } ); @@ -14486,11 +14834,14 @@ * * * `number` - Will format numeric data (defined by `columns.data`) for * display, retaining the original unformatted data for sorting and filtering. - * It takes 4 parameters: + * It takes 5 parameters: * * `string` - Thousands grouping separator * * `string` - Decimal point indicator * * `integer` - Number of decimal points to show * * `string` (optional) - Prefix. + * * `string` (optional) - Postfix (/suffix). + * * `text` - Escape HTML to help prevent XSS attacks. It has no optional + * parameters. * * @example * // Column definition using the number renderer @@ -14502,11 +14853,23 @@ * @namespace */ DataTable.render = { - number: function ( thousands, decimal, precision, prefix ) { + number: function ( thousands, decimal, precision, prefix, postfix ) { return { display: function ( d ) { + if ( typeof d !== 'number' && typeof d !== 'string' ) { + return d; + } + var negative = d < 0 ? '-' : ''; - d = Math.abs( parseFloat( d ) ); + var flo = parseFloat( d ); + + // If NaN then there isn't much formatting that we can do - just + // return immediately + if ( isNaN( flo ) ) { + return d; + } + + d = Math.abs( flo ); var intPart = parseInt( d, 10 ); var floatPart = precision ? @@ -14517,7 +14880,18 @@ intPart.toString().replace( /\B(?=(\d{3})+(?!\d))/g, thousands ) + - floatPart; + floatPart + + (postfix||''); + } + }; + }, + + text: function () { + return { + display: function ( d ) { + return typeof d === 'string' ? + d.replace(//g, '>').replace(/"/g, '"') : + d; } }; } @@ -14621,11 +14995,9 @@ _fnCalculateColumnWidths: _fnCalculateColumnWidths, _fnThrottle: _fnThrottle, _fnConvertToWidth: _fnConvertToWidth, - _fnScrollingWidthAdjust: _fnScrollingWidthAdjust, _fnGetWidestNode: _fnGetWidestNode, _fnGetMaxLenString: _fnGetMaxLenString, _fnStringToCss: _fnStringToCss, - _fnScrollBarWidth: _fnScrollBarWidth, _fnSortFlatten: _fnSortFlatten, _fnSort: _fnSort, _fnSortAria: _fnSortAria, @@ -14654,6 +15026,9 @@ // jQuery access $.fn.dataTable = DataTable; + // Provide access to the host jQuery object (circular reference) + DataTable.$ = $; + // Legacy aliases $.fn.dataTableSettings = DataTable.settings; $.fn.dataTableExt = DataTable.ext; @@ -14835,6 +15210,3 @@ return $.fn.dataTable; })); - -}(window, document)); - diff --git a/readme.txt b/readme.txt index a2bf58b..f0fcbc7 100644 --- a/readme.txt +++ b/readme.txt @@ -2,8 +2,8 @@ Contributors: biztechc Tags: WP jQuery DataTable, jQuery, jQuery DataTable, Table Requires at least: 3.6.1 -Tested up to: 4.3 -Stable tag: 1.0.1 +Tested up to: 4.4 +Stable tag: 1.0.2 License: GPLv2 or later Features can be settings to meet your exact needs for your table implementations. like Paging,Ordering,search, etc... @@ -74,4 +74,7 @@ Is this plugin prepared for multisites? Yes. = 1.0.1 = * Solved jquery confliction += 1.0.2 = +* Update new jquerydatatable js + == Upgrade Notice == diff --git a/wp-jquery-datatable.php b/wp-jquery-datatable.php index 23a799c..5e25679 100644 --- a/wp-jquery-datatable.php +++ b/wp-jquery-datatable.php @@ -4,7 +4,7 @@ * Description: Features can be settings to meet your exact needs for your table implementations. like Paging,Ordering,Searching, etc... * Author: biztechc * Author URI: http://www.biztechconsultancy.com - * Version: 1.0.1 + * Version: 1.0.2 */ add_action('admin_menu', 'wp_jdt_create_menu');