classiccms 0.5.5 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. data/classiccms.gemspec +1 -0
  2. data/lib/classiccms/application.rb +1 -0
  3. data/lib/classiccms/controllers/admin.rb +28 -0
  4. data/lib/classiccms/controllers/cms.rb +14 -11
  5. data/lib/classiccms/helpers.rb +8 -0
  6. data/lib/classiccms/public/admin/bootstrap/css/bootstrap-responsive.css +815 -0
  7. data/lib/classiccms/public/admin/bootstrap/css/bootstrap-responsive.min.css +9 -0
  8. data/lib/classiccms/public/admin/bootstrap/css/bootstrap.css +4983 -0
  9. data/lib/classiccms/public/admin/bootstrap/css/bootstrap.min.css +9 -0
  10. data/lib/classiccms/public/admin/bootstrap/img/glyphicons-halflings-white.png +0 -0
  11. data/lib/classiccms/public/admin/bootstrap/img/glyphicons-halflings.png +0 -0
  12. data/lib/classiccms/public/admin/bootstrap/index.js +14 -0
  13. data/lib/classiccms/public/admin/bootstrap/js/bootstrap.js +1825 -0
  14. data/lib/classiccms/public/admin/bootstrap/js/bootstrap.min.js +6 -0
  15. data/lib/classiccms/public/admin/datatables/css/demo_page.css +107 -0
  16. data/lib/classiccms/public/admin/datatables/css/demo_table.css +556 -0
  17. data/lib/classiccms/public/admin/datatables/css/demo_table_jui.css +526 -0
  18. data/lib/classiccms/public/admin/datatables/css/jquery.dataTables.css +220 -0
  19. data/lib/classiccms/public/admin/datatables/css/jquery.dataTables_themeroller.css +245 -0
  20. data/lib/classiccms/public/admin/datatables/images/Sorting icons.psd +0 -0
  21. data/lib/classiccms/public/admin/datatables/images/back_disabled.png +0 -0
  22. data/lib/classiccms/public/admin/datatables/images/back_enabled.png +0 -0
  23. data/lib/classiccms/public/admin/datatables/images/back_enabled_hover.png +0 -0
  24. data/lib/classiccms/public/admin/datatables/images/favicon.ico +0 -0
  25. data/lib/classiccms/public/admin/datatables/images/forward_disabled.png +0 -0
  26. data/lib/classiccms/public/admin/datatables/images/forward_enabled.png +0 -0
  27. data/lib/classiccms/public/admin/datatables/images/forward_enabled_hover.png +0 -0
  28. data/lib/classiccms/public/admin/datatables/images/sort_asc.png +0 -0
  29. data/lib/classiccms/public/admin/datatables/images/sort_asc_disabled.png +0 -0
  30. data/lib/classiccms/public/admin/datatables/images/sort_both.png +0 -0
  31. data/lib/classiccms/public/admin/datatables/images/sort_desc.png +0 -0
  32. data/lib/classiccms/public/admin/datatables/images/sort_desc_disabled.png +0 -0
  33. data/lib/classiccms/public/admin/datatables/js/jquery.dataTables.js +11863 -0
  34. data/lib/classiccms/public/admin/datatables/js/jquery.dataTables.min.js +154 -0
  35. data/lib/classiccms/public/admin/datatables/js/jquery.js +4 -0
  36. data/lib/classiccms/public/admin/datatables/src/DataTables.js +259 -0
  37. data/lib/classiccms/public/admin/datatables/src/api/api.internal.js +128 -0
  38. data/lib/classiccms/public/admin/datatables/src/api/api.methods.js +1276 -0
  39. data/lib/classiccms/public/admin/datatables/src/api/api.static.js +98 -0
  40. data/lib/classiccms/public/admin/datatables/src/core/core.ajax.js +185 -0
  41. data/lib/classiccms/public/admin/datatables/src/core/core.columns.js +365 -0
  42. data/lib/classiccms/public/admin/datatables/src/core/core.constructor.js +439 -0
  43. data/lib/classiccms/public/admin/datatables/src/core/core.data.js +546 -0
  44. data/lib/classiccms/public/admin/datatables/src/core/core.draw.js +788 -0
  45. data/lib/classiccms/public/admin/datatables/src/core/core.filter.js +405 -0
  46. data/lib/classiccms/public/admin/datatables/src/core/core.info.js +117 -0
  47. data/lib/classiccms/public/admin/datatables/src/core/core.init.js +153 -0
  48. data/lib/classiccms/public/admin/datatables/src/core/core.length.js +122 -0
  49. data/lib/classiccms/public/admin/datatables/src/core/core.page.js +119 -0
  50. data/lib/classiccms/public/admin/datatables/src/core/core.processing.js +44 -0
  51. data/lib/classiccms/public/admin/datatables/src/core/core.scrolling.js +495 -0
  52. data/lib/classiccms/public/admin/datatables/src/core/core.sizing.js +405 -0
  53. data/lib/classiccms/public/admin/datatables/src/core/core.sort.js +460 -0
  54. data/lib/classiccms/public/admin/datatables/src/core/core.state.js +201 -0
  55. data/lib/classiccms/public/admin/datatables/src/core/core.support.js +316 -0
  56. data/lib/classiccms/public/admin/datatables/src/ext/ext.classes.js +112 -0
  57. data/lib/classiccms/public/admin/datatables/src/ext/ext.paging.js +257 -0
  58. data/lib/classiccms/public/admin/datatables/src/ext/ext.sorting.js +86 -0
  59. data/lib/classiccms/public/admin/datatables/src/ext/ext.types.js +88 -0
  60. data/lib/classiccms/public/admin/datatables/src/model/model.column.js +248 -0
  61. data/lib/classiccms/public/admin/datatables/src/model/model.defaults.columns.js +737 -0
  62. data/lib/classiccms/public/admin/datatables/src/model/model.defaults.js +1944 -0
  63. data/lib/classiccms/public/admin/datatables/src/model/model.ext.js +528 -0
  64. data/lib/classiccms/public/admin/datatables/src/model/model.row.js +64 -0
  65. data/lib/classiccms/public/admin/datatables/src/model/model.search.js +40 -0
  66. data/lib/classiccms/public/admin/datatables/src/model/model.settings.js +868 -0
  67. data/lib/classiccms/public/admin/datatables/unit_testing/controller.js +94 -0
  68. data/lib/classiccms/public/admin/datatables/unit_testing/controller.php +100 -0
  69. data/lib/classiccms/public/admin/datatables/unit_testing/index.html +7 -0
  70. data/lib/classiccms/public/admin/datatables/unit_testing/performance/draw.html +482 -0
  71. data/lib/classiccms/public/admin/datatables/unit_testing/performance/large.php +108 -0
  72. data/lib/classiccms/public/admin/datatables/unit_testing/performance/page.html +477 -0
  73. data/lib/classiccms/public/admin/datatables/unit_testing/performance/sort.html +477 -0
  74. data/lib/classiccms/public/admin/datatables/unit_testing/templates/-complex_header.php +469 -0
  75. data/lib/classiccms/public/admin/datatables/unit_testing/templates/2512.php +464 -0
  76. data/lib/classiccms/public/admin/datatables/unit_testing/templates/6776.php +116 -0
  77. data/lib/classiccms/public/admin/datatables/unit_testing/templates/complex_header_2.php +485 -0
  78. data/lib/classiccms/public/admin/datatables/unit_testing/templates/deferred_table.php +132 -0
  79. data/lib/classiccms/public/admin/datatables/unit_testing/templates/dom_data.php +465 -0
  80. data/lib/classiccms/public/admin/datatables/unit_testing/templates/dom_data_th.php +465 -0
  81. data/lib/classiccms/public/admin/datatables/unit_testing/templates/dom_data_two_headers.php +472 -0
  82. data/lib/classiccms/public/admin/datatables/unit_testing/templates/dymanic_table.php +45 -0
  83. data/lib/classiccms/public/admin/datatables/unit_testing/templates/empty_table.php +55 -0
  84. data/lib/classiccms/public/admin/datatables/unit_testing/templates/html_table.php +66 -0
  85. data/lib/classiccms/public/admin/datatables/unit_testing/templates/js_data.php +124 -0
  86. data/lib/classiccms/public/admin/datatables/unit_testing/templates/js_data_mixed_types.php +124 -0
  87. data/lib/classiccms/public/admin/datatables/unit_testing/templates/two_tables.php +227 -0
  88. data/lib/classiccms/public/admin/datatables/unit_testing/tests/1_dom/_zero_config.js +437 -0
  89. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/-complex_header.js +52 -0
  90. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/-iDraw.js +41 -0
  91. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2512.js +17 -0
  92. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2530-2.js +15 -0
  93. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2530.js +29 -0
  94. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2569.js +36 -0
  95. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2600.js +44 -0
  96. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2608.js +54 -0
  97. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2635.js +40 -0
  98. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2746-stable-sort.js +199 -0
  99. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2799.js +14 -0
  100. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2840-restore-table-width.js +19 -0
  101. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/2914-state-save-sort.js +39 -0
  102. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/5396-fnUpdate-arrays.js +103 -0
  103. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/5508-xscroll-zero-content.js +23 -0
  104. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/6776-scrolling-table-grows.js +64 -0
  105. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/_zero_config.js +437 -0
  106. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aaSorting.js +183 -0
  107. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aaSortingFixed.js +60 -0
  108. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.bSearchable.js +67 -0
  109. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.bSortable.js +105 -0
  110. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.bUseRendered.js +145 -0
  111. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.bVisible.js +132 -0
  112. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.bVisible2.js +268 -0
  113. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.fnRender.js +176 -0
  114. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.iDataSort.js +88 -0
  115. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.sClass.js +111 -0
  116. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.sName.js +27 -0
  117. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.sTitle.js +78 -0
  118. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoColumns.sWidth.js +84 -0
  119. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/aoSearchCols.js +112 -0
  120. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/asStripClasses.js +106 -0
  121. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bAutoWidth.js +138 -0
  122. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bFilter.js +40 -0
  123. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bInfiniteScroll.js +130 -0
  124. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bInfo.js +40 -0
  125. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bJQueryUI.js +40 -0
  126. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bLengthChange.js +71 -0
  127. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bPaginate.js +55 -0
  128. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bProcessing.js +99 -0
  129. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bServerSide.js +18 -0
  130. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bSort.js +101 -0
  131. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bSortCellsTop.js +77 -0
  132. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/bSortClasses.js +128 -0
  133. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnCookieCallback.js +97 -0
  134. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnCreatedCell.js +151 -0
  135. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnCreatedRow.js +115 -0
  136. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnDeleteRow.js +30 -0
  137. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnDrawCallback.js +80 -0
  138. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnFilter.js +16 -0
  139. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnFooterCallback.js +227 -0
  140. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnHeaderCallback.js +227 -0
  141. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnInfoCallback.js +115 -0
  142. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnInitComplete.js +94 -0
  143. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnRowCallback.js +105 -0
  144. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnSetColumnVis.js +120 -0
  145. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/fnSetColumnVis2.js +236 -0
  146. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/html-autodetect-sort.js +57 -0
  147. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/iDisplayLength.js +76 -0
  148. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/oLanguage.oPaginate.js +80 -0
  149. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/oLanguage.sInfo.js +109 -0
  150. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/oLanguage.sInfoEmpty.js +75 -0
  151. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/oLanguage.sInfoPostFix.js +73 -0
  152. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/oLanguage.sLengthMenu.js +106 -0
  153. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/oLanguage.sProcessing.js +47 -0
  154. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/oLanguage.sSearch.js +66 -0
  155. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/oLanguage.sUrl.js +59 -0
  156. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/oLanguage.sZeroRecords.js +45 -0
  157. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/oSearch.js +101 -0
  158. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/sAjaxSource.js +18 -0
  159. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/sDom.js +319 -0
  160. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/sPaginationType.js +122 -0
  161. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/sScrollXY.js +63 -0
  162. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/1_dom/th_in_body.js +437 -0
  163. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/6872-default-content-missing-props.js +285 -0
  164. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/8549--string-sorting-nonstrings.js +47 -0
  165. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/_zero_config.js +440 -0
  166. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aaSorting.js +198 -0
  167. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aaSortingFixed.js +64 -0
  168. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoColumns.bSearchable.js +71 -0
  169. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoColumns.bSortable.js +109 -0
  170. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoColumns.bUseRendered.js +148 -0
  171. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoColumns.bVisible.js +110 -0
  172. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoColumns.fnRender.js +156 -0
  173. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoColumns.iDataSort.js +90 -0
  174. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoColumns.sClass.js +115 -0
  175. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoColumns.sName.js +28 -0
  176. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoColumns.sTitle.js +82 -0
  177. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoColumns.sWidth.js +87 -0
  178. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/aoSearchCols.js +119 -0
  179. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/asStripClasses.js +100 -0
  180. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/bAutoWidth.js +142 -0
  181. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/bFilter.js +44 -0
  182. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/bInfo.js +44 -0
  183. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/bLengthChange.js +75 -0
  184. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/bPaginate.js +59 -0
  185. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/bProcessing.js +103 -0
  186. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/bServerSide.js +20 -0
  187. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/bSort.js +99 -0
  188. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/bSortClasses.js +132 -0
  189. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/fnCreatedCell.js +158 -0
  190. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/fnCreatedRow.js +121 -0
  191. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/fnDrawCallback.js +85 -0
  192. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/fnFooterCallback.js +240 -0
  193. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/fnHeaderCallback.js +240 -0
  194. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/fnInitComplete.js +83 -0
  195. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/fnRowCallback.js +112 -0
  196. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/iDisplayLength.js +81 -0
  197. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/js_data_mixed_types.js +392 -0
  198. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/oLanguage.oPaginate.js +84 -0
  199. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/oLanguage.sInfo.js +117 -0
  200. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/oLanguage.sInfoEmpty.js +79 -0
  201. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/oLanguage.sInfoPostFix.js +78 -0
  202. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/oLanguage.sLengthMenu.js +111 -0
  203. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/oLanguage.sProcessing.js +49 -0
  204. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/oLanguage.sSearch.js +70 -0
  205. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/oLanguage.sUrl.js +62 -0
  206. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/oLanguage.sZeroRecords.js +48 -0
  207. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/oSearch.js +108 -0
  208. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/sAjaxSource.js +20 -0
  209. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/sDom.js +262 -0
  210. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/2_js/sPaginationType.js +125 -0
  211. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/_zero_config.js +440 -0
  212. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aaSorting.js +198 -0
  213. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aaSortingFixed.js +67 -0
  214. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoColumns.bSearchable.js +76 -0
  215. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoColumns.bSortable.js +109 -0
  216. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoColumns.bUseRendered.js +148 -0
  217. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoColumns.bVisible.js +124 -0
  218. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoColumns.fnRender.js +156 -0
  219. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoColumns.iDataSort.js +90 -0
  220. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoColumns.sClass.js +115 -0
  221. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoColumns.sName.js +28 -0
  222. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoColumns.sTitle.js +82 -0
  223. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoColumns.sWidth.js +87 -0
  224. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/aoSearchCols.js +119 -0
  225. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/asStripClasses.js +105 -0
  226. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/bAutoWidth.js +142 -0
  227. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/bFilter.js +44 -0
  228. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/bInfo.js +44 -0
  229. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/bLengthChange.js +75 -0
  230. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/bPaginate.js +59 -0
  231. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/bProcessing.js +103 -0
  232. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/bServerSide.js +20 -0
  233. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/bSort.js +99 -0
  234. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/bSortClasses.js +132 -0
  235. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/fnCreatedCell.js +183 -0
  236. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/fnCreatedRow.js +142 -0
  237. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/fnDrawCallback.js +98 -0
  238. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/fnHeaderCallback.js +191 -0
  239. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/fnInitComplete.js +100 -0
  240. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/fnRowCallback.js +112 -0
  241. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/fnServerData.js +64 -0
  242. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/iDisplayLength.js +81 -0
  243. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oLanguage.oPaginate.js +84 -0
  244. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oLanguage.sInfo.js +117 -0
  245. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oLanguage.sInfoEmpty.js +79 -0
  246. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oLanguage.sInfoPostFix.js +78 -0
  247. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oLanguage.sLengthMenu.js +111 -0
  248. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oLanguage.sLoadingRecords.js +65 -0
  249. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oLanguage.sProcessing.js +49 -0
  250. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oLanguage.sSearch.js +70 -0
  251. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oLanguage.sUrl.js +62 -0
  252. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oLanguage.sZeroRecords.js +48 -0
  253. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/oSearch.js +108 -0
  254. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/sAjaxDataProp.js +139 -0
  255. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/sAjaxDataProp2.js +139 -0
  256. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/sAjaxSource.js +22 -0
  257. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/sDom.js +262 -0
  258. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/3_ajax/sPaginationType.js +134 -0
  259. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/-iDraw.js +44 -0
  260. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/2440.js +32 -0
  261. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/2569.js +47 -0
  262. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/2600.js +47 -0
  263. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/_zero_config.js +424 -0
  264. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aaSorting.js +212 -0
  265. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aaSortingFixed.js +67 -0
  266. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aoColumns.bSearchable.js +25 -0
  267. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aoColumns.bSortable.js +112 -0
  268. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aoColumns.bUseRendered.js +43 -0
  269. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aoColumns.bVisible.js +123 -0
  270. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aoColumns.fnRender.js +162 -0
  271. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aoColumns.sClass.js +118 -0
  272. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aoColumns.sName.js +29 -0
  273. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aoColumns.sTitle.js +85 -0
  274. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aoColumns.sWidth.js +90 -0
  275. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/aoSearchCols.js +70 -0
  276. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/asStripClasses.js +109 -0
  277. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/bAutoWidth.js +145 -0
  278. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/bFilter.js +47 -0
  279. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/bInfiniteScroll.js +168 -0
  280. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/bInfo.js +47 -0
  281. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/bLengthChange.js +78 -0
  282. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/bPaginate.js +62 -0
  283. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/bProcessing.js +106 -0
  284. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/bServerSide.js +21 -0
  285. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/bSort.js +102 -0
  286. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/bSortClasses.js +135 -0
  287. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/fnCreatedCell.js +190 -0
  288. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/fnCreatedRow.js +148 -0
  289. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/fnDrawCallback.js +89 -0
  290. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/fnHeaderCallback.js +191 -0
  291. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/fnInitComplete.js +89 -0
  292. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/fnRowCallback.js +118 -0
  293. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/iDeferLoading.js +95 -0
  294. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/iDisplayLength.js +85 -0
  295. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/oLanguage.oPaginate.js +86 -0
  296. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/oLanguage.sInfo.js +124 -0
  297. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/oLanguage.sInfoEmpty.js +82 -0
  298. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/oLanguage.sInfoPostFix.js +82 -0
  299. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/oLanguage.sLengthMenu.js +115 -0
  300. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/oLanguage.sProcessing.js +51 -0
  301. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/oLanguage.sSearch.js +73 -0
  302. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/oLanguage.sUrl.js +64 -0
  303. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/oLanguage.sZeroRecords.js +58 -0
  304. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/oSearch.js +100 -0
  305. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/sAjaxDataProp.js +146 -0
  306. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/sAjaxSource.js +23 -0
  307. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/sDom.js +269 -0
  308. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/4_server-side/sPaginationType.js +138 -0
  309. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/_zero_config.js +847 -0
  310. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/_zero_config_arrays_subobjects.js +961 -0
  311. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/_zero_config_deep.js +1075 -0
  312. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/_zero_config_null_source.js +458 -0
  313. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/_zero_config_objects.js +847 -0
  314. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/_zero_config_objects_subarrays.js +961 -0
  315. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aaSorting.js +296 -0
  316. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aaSortingFixed.js +88 -0
  317. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoColumns.bSearchable.js +83 -0
  318. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoColumns.bSortable.js +116 -0
  319. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoColumns.bUseRendered.js +155 -0
  320. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoColumns.bVisible.js +131 -0
  321. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoColumns.fnRender.js +177 -0
  322. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoColumns.iDataSort.js +90 -0
  323. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoColumns.sClass.js +122 -0
  324. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoColumns.sName.js +28 -0
  325. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoColumns.sTitle.js +89 -0
  326. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoColumns.sWidth.js +87 -0
  327. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/aoSearchCols.js +161 -0
  328. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/asStripClasses.js +133 -0
  329. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/bAutoWidth.js +163 -0
  330. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/bFilter.js +65 -0
  331. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/bInfo.js +65 -0
  332. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/bLengthChange.js +96 -0
  333. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/bPaginate.js +80 -0
  334. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/bProcessing.js +124 -0
  335. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/bServerSide.js +27 -0
  336. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/bSort.js +120 -0
  337. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/bSortClasses.js +153 -0
  338. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/fnDrawCallback.js +126 -0
  339. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/fnHeaderCallback.js +254 -0
  340. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/fnInitComplete.js +135 -0
  341. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/fnRowCallback.js +154 -0
  342. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/fnServerData.js +92 -0
  343. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/iDisplayLength.js +109 -0
  344. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/oLanguage.oPaginate.js +98 -0
  345. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/oLanguage.sInfo.js +166 -0
  346. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/oLanguage.sInfoEmpty.js +100 -0
  347. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/oLanguage.sInfoPostFix.js +106 -0
  348. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/oLanguage.sLengthMenu.js +139 -0
  349. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/oLanguage.sProcessing.js +63 -0
  350. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/oLanguage.sSearch.js +91 -0
  351. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/oLanguage.sUrl.js +76 -0
  352. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/oLanguage.sZeroRecords.js +62 -0
  353. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/oSearch.js +150 -0
  354. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/sAjaxSource.js +29 -0
  355. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/sDom.js +311 -0
  356. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/5_ajax_objects/sPaginationType.js +148 -0
  357. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/_zero_config.js +403 -0
  358. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aaSorting.js +212 -0
  359. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aaSortingFixed.js +70 -0
  360. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoColumns.bSearchable.js +79 -0
  361. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoColumns.bSortable.js +112 -0
  362. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoColumns.bUseRendered.js +151 -0
  363. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoColumns.bVisible.js +127 -0
  364. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoColumns.fnRender.js +190 -0
  365. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoColumns.iDataSort.js +92 -0
  366. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoColumns.sClass.js +118 -0
  367. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoColumns.sName.js +29 -0
  368. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoColumns.sTitle.js +85 -0
  369. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoColumns.sWidth.js +90 -0
  370. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/aoSearchCols.js +125 -0
  371. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/asStripClasses.js +109 -0
  372. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/bAutoWidth.js +145 -0
  373. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/bFilter.js +47 -0
  374. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/bInfo.js +47 -0
  375. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/bLengthChange.js +78 -0
  376. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/bPaginate.js +62 -0
  377. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/bProcessing.js +106 -0
  378. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/bServerSide.js +21 -0
  379. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/bSort.js +102 -0
  380. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/bSortClasses.js +135 -0
  381. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/fnDrawCallback.js +102 -0
  382. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/fnHeaderCallback.js +200 -0
  383. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/fnInitComplete.js +105 -0
  384. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/fnRowCallback.js +118 -0
  385. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/fnServerData.js +68 -0
  386. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/iDisplayLength.js +85 -0
  387. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/oLanguage.oPaginate.js +86 -0
  388. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/oLanguage.sInfo.js +124 -0
  389. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/oLanguage.sInfoEmpty.js +82 -0
  390. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/oLanguage.sInfoPostFix.js +82 -0
  391. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/oLanguage.sLengthMenu.js +115 -0
  392. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/oLanguage.sProcessing.js +51 -0
  393. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/oLanguage.sSearch.js +73 -0
  394. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/oLanguage.sUrl.js +64 -0
  395. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/oLanguage.sZeroRecords.js +50 -0
  396. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/oSearch.js +114 -0
  397. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/sAjaxDataProp.js +140 -0
  398. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/sAjaxDataProp2.js +140 -0
  399. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/sAjaxSource.js +23 -0
  400. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/sDom.js +269 -0
  401. data/lib/classiccms/public/admin/datatables/unit_testing/tests_onhold/6_delayed_rendering/sPaginationType.js +136 -0
  402. data/lib/classiccms/public/admin/datatables/unit_testing/unit_test.js +409 -0
  403. data/lib/classiccms/public/admin/index.js +5 -0
  404. data/lib/classiccms/scaffold/config.ru +2 -1
  405. data/lib/classiccms/version.rb +1 -1
  406. data/lib/classiccms/views/admin/index.haml +51 -0
  407. metadata +418 -2
@@ -0,0 +1,460 @@
1
+
2
+
3
+ /**
4
+ * Change the order of the table
5
+ * @param {object} oSettings dataTables settings object
6
+ * @param {bool} bApplyClasses optional - should we apply classes or not
7
+ * @memberof DataTable#oApi
8
+ */
9
+ function _fnSort ( oSettings, bApplyClasses )
10
+ {
11
+ var
12
+ i, iLen, j, jLen, k, kLen,
13
+ sDataType, nTh,
14
+ aaSort = [],
15
+ aiOrig = [],
16
+ oSort = DataTable.ext.oSort,
17
+ aoData = oSettings.aoData,
18
+ aoColumns = oSettings.aoColumns,
19
+ oAria = oSettings.oLanguage.oAria;
20
+
21
+ /* No sorting required if server-side or no sorting array */
22
+ if ( !oSettings.oFeatures.bServerSide &&
23
+ (oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) )
24
+ {
25
+ aaSort = ( oSettings.aaSortingFixed !== null ) ?
26
+ oSettings.aaSortingFixed.concat( oSettings.aaSorting ) :
27
+ oSettings.aaSorting.slice();
28
+
29
+ /* If there is a sorting data type, and a fuction belonging to it, then we need to
30
+ * get the data from the developer's function and apply it for this column
31
+ */
32
+ for ( i=0 ; i<aaSort.length ; i++ )
33
+ {
34
+ var iColumn = aaSort[i][0];
35
+ var iVisColumn = _fnColumnIndexToVisible( oSettings, iColumn );
36
+ sDataType = oSettings.aoColumns[ iColumn ].sSortDataType;
37
+ if ( DataTable.ext.afnSortData[sDataType] )
38
+ {
39
+ var aData = DataTable.ext.afnSortData[sDataType].call(
40
+ oSettings.oInstance, oSettings, iColumn, iVisColumn
41
+ );
42
+ if ( aData.length === aoData.length )
43
+ {
44
+ for ( j=0, jLen=aoData.length ; j<jLen ; j++ )
45
+ {
46
+ _fnSetCellData( oSettings, j, iColumn, aData[j] );
47
+ }
48
+ }
49
+ else
50
+ {
51
+ _fnLog( oSettings, 0, "Returned data sort array (col "+iColumn+") is the wrong length" );
52
+ }
53
+ }
54
+ }
55
+
56
+ /* Create a value - key array of the current row positions such that we can use their
57
+ * current position during the sort, if values match, in order to perform stable sorting
58
+ */
59
+ for ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ )
60
+ {
61
+ aiOrig[ oSettings.aiDisplayMaster[i] ] = i;
62
+ }
63
+
64
+ /* Build an internal data array which is specific to the sort, so we can get and prep
65
+ * the data to be sorted only once, rather than needing to do it every time the sorting
66
+ * function runs. This make the sorting function a very simple comparison
67
+ */
68
+ var iSortLen = aaSort.length;
69
+ var fnSortFormat, aDataSort;
70
+ for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
71
+ {
72
+ for ( j=0 ; j<iSortLen ; j++ )
73
+ {
74
+ aDataSort = aoColumns[ aaSort[j][0] ].aDataSort;
75
+
76
+ for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )
77
+ {
78
+ sDataType = aoColumns[ aDataSort[k] ].sType;
79
+ fnSortFormat = oSort[ (sDataType ? sDataType : 'string')+"-pre" ];
80
+
81
+ aoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?
82
+ fnSortFormat( _fnGetCellData( oSettings, i, aDataSort[k], 'sort' ) ) :
83
+ _fnGetCellData( oSettings, i, aDataSort[k], 'sort' );
84
+ }
85
+ }
86
+ }
87
+
88
+ /* Do the sort - here we want multi-column sorting based on a given data source (column)
89
+ * and sorting function (from oSort) in a certain direction. It's reasonably complex to
90
+ * follow on it's own, but this is what we want (example two column sorting):
91
+ * fnLocalSorting = function(a,b){
92
+ * var iTest;
93
+ * iTest = oSort['string-asc']('data11', 'data12');
94
+ * if (iTest !== 0)
95
+ * return iTest;
96
+ * iTest = oSort['numeric-desc']('data21', 'data22');
97
+ * if (iTest !== 0)
98
+ * return iTest;
99
+ * return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
100
+ * }
101
+ * Basically we have a test for each sorting column, if the data in that column is equal,
102
+ * test the next column. If all columns match, then we use a numeric sort on the row
103
+ * positions in the original data array to provide a stable sort.
104
+ */
105
+ oSettings.aiDisplayMaster.sort( function ( a, b ) {
106
+ var k, l, lLen, iTest, aDataSort, sDataType;
107
+ for ( k=0 ; k<iSortLen ; k++ )
108
+ {
109
+ aDataSort = aoColumns[ aaSort[k][0] ].aDataSort;
110
+
111
+ for ( l=0, lLen=aDataSort.length ; l<lLen ; l++ )
112
+ {
113
+ sDataType = aoColumns[ aDataSort[l] ].sType;
114
+
115
+ iTest = oSort[ (sDataType ? sDataType : 'string')+"-"+aaSort[k][1] ](
116
+ aoData[a]._aSortData[ aDataSort[l] ],
117
+ aoData[b]._aSortData[ aDataSort[l] ]
118
+ );
119
+
120
+ if ( iTest !== 0 )
121
+ {
122
+ return iTest;
123
+ }
124
+ }
125
+ }
126
+
127
+ return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
128
+ } );
129
+ }
130
+
131
+ /* Alter the sorting classes to take account of the changes */
132
+ if ( (bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender )
133
+ {
134
+ _fnSortingClasses( oSettings );
135
+ }
136
+
137
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
138
+ {
139
+ var sTitle = aoColumns[i].sTitle.replace( /<.*?>/g, "" );
140
+ nTh = aoColumns[i].nTh;
141
+ nTh.removeAttribute('aria-sort');
142
+ nTh.removeAttribute('aria-label');
143
+
144
+ /* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
145
+ if ( aoColumns[i].bSortable )
146
+ {
147
+ if ( aaSort.length > 0 && aaSort[0][0] == i )
148
+ {
149
+ nTh.setAttribute('aria-sort', aaSort[0][1]=="asc" ? "ascending" : "descending" );
150
+
151
+ var nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ?
152
+ aoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0];
153
+ nTh.setAttribute('aria-label', sTitle+
154
+ (nextSort=="asc" ? oAria.sSortAscending : oAria.sSortDescending) );
155
+ }
156
+ else
157
+ {
158
+ nTh.setAttribute('aria-label', sTitle+
159
+ (aoColumns[i].asSorting[0]=="asc" ? oAria.sSortAscending : oAria.sSortDescending) );
160
+ }
161
+ }
162
+ else
163
+ {
164
+ nTh.setAttribute('aria-label', sTitle);
165
+ }
166
+ }
167
+
168
+ /* Tell the draw function that we have sorted the data */
169
+ oSettings.bSorted = true;
170
+ $(oSettings.oInstance).trigger('sort', oSettings);
171
+
172
+ /* Copy the master data into the draw array and re-draw */
173
+ if ( oSettings.oFeatures.bFilter )
174
+ {
175
+ /* _fnFilter() will redraw the table for us */
176
+ _fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
177
+ }
178
+ else
179
+ {
180
+ oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
181
+ oSettings._iDisplayStart = 0; /* reset display back to page 0 */
182
+ _fnCalculateEnd( oSettings );
183
+ _fnDraw( oSettings );
184
+ }
185
+ }
186
+
187
+
188
+ /**
189
+ * Attach a sort handler (click) to a node
190
+ * @param {object} oSettings dataTables settings object
191
+ * @param {node} nNode node to attach the handler to
192
+ * @param {int} iDataIndex column sorting index
193
+ * @param {function} [fnCallback] callback function
194
+ * @memberof DataTable#oApi
195
+ */
196
+ function _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )
197
+ {
198
+ _fnBindAction( nNode, {}, function (e) {
199
+ /* If the column is not sortable - don't to anything */
200
+ if ( oSettings.aoColumns[iDataIndex].bSortable === false )
201
+ {
202
+ return;
203
+ }
204
+
205
+ /*
206
+ * This is a little bit odd I admit... I declare a temporary function inside the scope of
207
+ * _fnBuildHead and the click handler in order that the code presented here can be used
208
+ * twice - once for when bProcessing is enabled, and another time for when it is
209
+ * disabled, as we need to perform slightly different actions.
210
+ * Basically the issue here is that the Javascript engine in modern browsers don't
211
+ * appear to allow the rendering engine to update the display while it is still excuting
212
+ * it's thread (well - it does but only after long intervals). This means that the
213
+ * 'processing' display doesn't appear for a table sort. To break the js thread up a bit
214
+ * I force an execution break by using setTimeout - but this breaks the expected
215
+ * thread continuation for the end-developer's point of view (their code would execute
216
+ * too early), so we on;y do it when we absolutely have to.
217
+ */
218
+ var fnInnerSorting = function () {
219
+ var iColumn, iNextSort;
220
+
221
+ /* If the shift key is pressed then we are multipe column sorting */
222
+ if ( e.shiftKey )
223
+ {
224
+ /* Are we already doing some kind of sort on this column? */
225
+ var bFound = false;
226
+ for ( var i=0 ; i<oSettings.aaSorting.length ; i++ )
227
+ {
228
+ if ( oSettings.aaSorting[i][0] == iDataIndex )
229
+ {
230
+ bFound = true;
231
+ iColumn = oSettings.aaSorting[i][0];
232
+ iNextSort = oSettings.aaSorting[i][2]+1;
233
+
234
+ if ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )
235
+ {
236
+ /* Reached the end of the sorting options, remove from multi-col sort */
237
+ oSettings.aaSorting.splice( i, 1 );
238
+ }
239
+ else
240
+ {
241
+ /* Move onto next sorting direction */
242
+ oSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];
243
+ oSettings.aaSorting[i][2] = iNextSort;
244
+ }
245
+ break;
246
+ }
247
+ }
248
+
249
+ /* No sort yet - add it in */
250
+ if ( bFound === false )
251
+ {
252
+ oSettings.aaSorting.push( [ iDataIndex,
253
+ oSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );
254
+ }
255
+ }
256
+ else
257
+ {
258
+ /* If no shift key then single column sort */
259
+ if ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )
260
+ {
261
+ iColumn = oSettings.aaSorting[0][0];
262
+ iNextSort = oSettings.aaSorting[0][2]+1;
263
+ if ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )
264
+ {
265
+ iNextSort = 0;
266
+ }
267
+ oSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];
268
+ oSettings.aaSorting[0][2] = iNextSort;
269
+ }
270
+ else
271
+ {
272
+ oSettings.aaSorting.splice( 0, oSettings.aaSorting.length );
273
+ oSettings.aaSorting.push( [ iDataIndex,
274
+ oSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );
275
+ }
276
+ }
277
+
278
+ /* Run the sort */
279
+ _fnSort( oSettings );
280
+ }; /* /fnInnerSorting */
281
+
282
+ if ( !oSettings.oFeatures.bProcessing )
283
+ {
284
+ fnInnerSorting();
285
+ }
286
+ else
287
+ {
288
+ _fnProcessingDisplay( oSettings, true );
289
+ setTimeout( function() {
290
+ fnInnerSorting();
291
+ if ( !oSettings.oFeatures.bServerSide )
292
+ {
293
+ _fnProcessingDisplay( oSettings, false );
294
+ }
295
+ }, 0 );
296
+ }
297
+
298
+ /* Call the user specified callback function - used for async user interaction */
299
+ if ( typeof fnCallback == 'function' )
300
+ {
301
+ fnCallback( oSettings );
302
+ }
303
+ } );
304
+ }
305
+
306
+
307
+ /**
308
+ * Set the sorting classes on the header, Note: it is safe to call this function
309
+ * when bSort and bSortClasses are false
310
+ * @param {object} oSettings dataTables settings object
311
+ * @memberof DataTable#oApi
312
+ */
313
+ function _fnSortingClasses( oSettings )
314
+ {
315
+ var i, iLen, j, jLen, iFound;
316
+ var aaSort, sClass;
317
+ var iColumns = oSettings.aoColumns.length;
318
+ var oClasses = oSettings.oClasses;
319
+
320
+ for ( i=0 ; i<iColumns ; i++ )
321
+ {
322
+ if ( oSettings.aoColumns[i].bSortable )
323
+ {
324
+ $(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +" "+ oClasses.sSortDesc +
325
+ " "+ oSettings.aoColumns[i].sSortingClass );
326
+ }
327
+ }
328
+
329
+ if ( oSettings.aaSortingFixed !== null )
330
+ {
331
+ aaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );
332
+ }
333
+ else
334
+ {
335
+ aaSort = oSettings.aaSorting.slice();
336
+ }
337
+
338
+ /* Apply the required classes to the header */
339
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
340
+ {
341
+ if ( oSettings.aoColumns[i].bSortable )
342
+ {
343
+ sClass = oSettings.aoColumns[i].sSortingClass;
344
+ iFound = -1;
345
+ for ( j=0 ; j<aaSort.length ; j++ )
346
+ {
347
+ if ( aaSort[j][0] == i )
348
+ {
349
+ sClass = ( aaSort[j][1] == "asc" ) ?
350
+ oClasses.sSortAsc : oClasses.sSortDesc;
351
+ iFound = j;
352
+ break;
353
+ }
354
+ }
355
+ $(oSettings.aoColumns[i].nTh).addClass( sClass );
356
+
357
+ if ( oSettings.bJUI )
358
+ {
359
+ /* jQuery UI uses extra markup */
360
+ var jqSpan = $("span."+oClasses.sSortIcon, oSettings.aoColumns[i].nTh);
361
+ jqSpan.removeClass(oClasses.sSortJUIAsc +" "+ oClasses.sSortJUIDesc +" "+
362
+ oClasses.sSortJUI +" "+ oClasses.sSortJUIAscAllowed +" "+ oClasses.sSortJUIDescAllowed );
363
+
364
+ var sSpanClass;
365
+ if ( iFound == -1 )
366
+ {
367
+ sSpanClass = oSettings.aoColumns[i].sSortingClassJUI;
368
+ }
369
+ else if ( aaSort[iFound][1] == "asc" )
370
+ {
371
+ sSpanClass = oClasses.sSortJUIAsc;
372
+ }
373
+ else
374
+ {
375
+ sSpanClass = oClasses.sSortJUIDesc;
376
+ }
377
+
378
+ jqSpan.addClass( sSpanClass );
379
+ }
380
+ }
381
+ else
382
+ {
383
+ /* No sorting on this column, so add the base class. This will have been assigned by
384
+ * _fnAddColumn
385
+ */
386
+ $(oSettings.aoColumns[i].nTh).addClass( oSettings.aoColumns[i].sSortingClass );
387
+ }
388
+ }
389
+
390
+ /*
391
+ * Apply the required classes to the table body
392
+ * Note that this is given as a feature switch since it can significantly slow down a sort
393
+ * on large data sets (adding and removing of classes is always slow at the best of times..)
394
+ * Further to this, note that this code is admitadly fairly ugly. It could be made a lot
395
+ * simpiler using jQuery selectors and add/removeClass, but that is significantly slower
396
+ * (on the order of 5 times slower) - hence the direct DOM manipulation here.
397
+ * Note that for defered drawing we do use jQuery - the reason being that taking the first
398
+ * row found to see if the whole column needs processed can miss classes since the first
399
+ * column might be new.
400
+ */
401
+ sClass = oClasses.sSortColumn;
402
+
403
+ if ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )
404
+ {
405
+ var nTds = _fnGetTdNodes( oSettings );
406
+
407
+ /* Remove the old classes */
408
+ if ( oSettings.oFeatures.bDeferRender )
409
+ {
410
+ $(nTds).removeClass(sClass+'1 '+sClass+'2 '+sClass+'3');
411
+ }
412
+ else if ( nTds.length >= iColumns )
413
+ {
414
+ for ( i=0 ; i<iColumns ; i++ )
415
+ {
416
+ if ( nTds[i].className.indexOf(sClass+"1") != -1 )
417
+ {
418
+ for ( j=0, jLen=(nTds.length/iColumns) ; j<jLen ; j++ )
419
+ {
420
+ nTds[(iColumns*j)+i].className =
421
+ $.trim( nTds[(iColumns*j)+i].className.replace( sClass+"1", "" ) );
422
+ }
423
+ }
424
+ else if ( nTds[i].className.indexOf(sClass+"2") != -1 )
425
+ {
426
+ for ( j=0, jLen=(nTds.length/iColumns) ; j<jLen ; j++ )
427
+ {
428
+ nTds[(iColumns*j)+i].className =
429
+ $.trim( nTds[(iColumns*j)+i].className.replace( sClass+"2", "" ) );
430
+ }
431
+ }
432
+ else if ( nTds[i].className.indexOf(sClass+"3") != -1 )
433
+ {
434
+ for ( j=0, jLen=(nTds.length/iColumns) ; j<jLen ; j++ )
435
+ {
436
+ nTds[(iColumns*j)+i].className =
437
+ $.trim( nTds[(iColumns*j)+i].className.replace( " "+sClass+"3", "" ) );
438
+ }
439
+ }
440
+ }
441
+ }
442
+
443
+ /* Add the new classes to the table */
444
+ var iClass = 1, iTargetCol;
445
+ for ( i=0 ; i<aaSort.length ; i++ )
446
+ {
447
+ iTargetCol = parseInt( aaSort[i][0], 10 );
448
+ for ( j=0, jLen=(nTds.length/iColumns) ; j<jLen ; j++ )
449
+ {
450
+ nTds[(iColumns*j)+iTargetCol].className += " "+sClass+iClass;
451
+ }
452
+
453
+ if ( iClass < 3 )
454
+ {
455
+ iClass++;
456
+ }
457
+ }
458
+ }
459
+ }
460
+
@@ -0,0 +1,201 @@
1
+
2
+
3
+ /**
4
+ * Save the state of a table in a cookie such that the page can be reloaded
5
+ * @param {object} oSettings dataTables settings object
6
+ * @memberof DataTable#oApi
7
+ */
8
+ function _fnSaveState ( oSettings )
9
+ {
10
+ if ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )
11
+ {
12
+ return;
13
+ }
14
+
15
+ /* Store the interesting variables */
16
+ var i, iLen, bInfinite=oSettings.oScroll.bInfinite;
17
+ var oState = {
18
+ "iCreate": new Date().getTime(),
19
+ "iStart": (bInfinite ? 0 : oSettings._iDisplayStart),
20
+ "iEnd": (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),
21
+ "iLength": oSettings._iDisplayLength,
22
+ "aaSorting": $.extend( true, [], oSettings.aaSorting ),
23
+ "oSearch": $.extend( true, {}, oSettings.oPreviousSearch ),
24
+ "aoSearchCols": $.extend( true, [], oSettings.aoPreSearchCols ),
25
+ "abVisCols": []
26
+ };
27
+
28
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
29
+ {
30
+ oState.abVisCols.push( oSettings.aoColumns[i].bVisible );
31
+ }
32
+
33
+ _fnCallbackFire( oSettings, "aoStateSaveParams", 'stateSaveParams', [oSettings, oState] );
34
+
35
+ oSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );
36
+ }
37
+
38
+
39
+ /**
40
+ * Attempt to load a saved table state from a cookie
41
+ * @param {object} oSettings dataTables settings object
42
+ * @param {object} oInit DataTables init object so we can override settings
43
+ * @memberof DataTable#oApi
44
+ */
45
+ function _fnLoadState ( oSettings, oInit )
46
+ {
47
+ if ( !oSettings.oFeatures.bStateSave )
48
+ {
49
+ return;
50
+ }
51
+
52
+ var oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );
53
+ if ( !oData )
54
+ {
55
+ return;
56
+ }
57
+
58
+ /* Allow custom and plug-in manipulation functions to alter the saved data set and
59
+ * cancelling of loading by returning false
60
+ */
61
+ var abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );
62
+ if ( $.inArray( false, abStateLoad ) !== -1 )
63
+ {
64
+ return;
65
+ }
66
+
67
+ /* Store the saved state so it might be accessed at any time */
68
+ oSettings.oLoadedState = $.extend( true, {}, oData );
69
+
70
+ /* Restore key features */
71
+ oSettings._iDisplayStart = oData.iStart;
72
+ oSettings.iInitDisplayStart = oData.iStart;
73
+ oSettings._iDisplayEnd = oData.iEnd;
74
+ oSettings._iDisplayLength = oData.iLength;
75
+ oSettings.aaSorting = oData.aaSorting.slice();
76
+ oSettings.saved_aaSorting = oData.aaSorting.slice();
77
+
78
+ /* Search filtering */
79
+ $.extend( oSettings.oPreviousSearch, oData.oSearch );
80
+ $.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );
81
+
82
+ /* Column visibility state
83
+ * Pass back visibiliy settings to the init handler, but to do not here override
84
+ * the init object that the user might have passed in
85
+ */
86
+ oInit.saved_aoColumns = [];
87
+ for ( var i=0 ; i<oData.abVisCols.length ; i++ )
88
+ {
89
+ oInit.saved_aoColumns[i] = {};
90
+ oInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];
91
+ }
92
+
93
+ _fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );
94
+ }
95
+
96
+
97
+ /**
98
+ * Create a new cookie with a value to store the state of a table
99
+ * @param {string} sName name of the cookie to create
100
+ * @param {string} sValue the value the cookie should take
101
+ * @param {int} iSecs duration of the cookie
102
+ * @param {string} sBaseName sName is made up of the base + file name - this is the base
103
+ * @param {function} fnCallback User definable function to modify the cookie
104
+ * @memberof DataTable#oApi
105
+ */
106
+ function _fnCreateCookie ( sName, sValue, iSecs, sBaseName, fnCallback )
107
+ {
108
+ var date = new Date();
109
+ date.setTime( date.getTime()+(iSecs*1000) );
110
+
111
+ /*
112
+ * Shocking but true - it would appear IE has major issues with having the path not having
113
+ * a trailing slash on it. We need the cookie to be available based on the path, so we
114
+ * have to append the file name to the cookie name. Appalling. Thanks to vex for adding the
115
+ * patch to use at least some of the path
116
+ */
117
+ var aParts = window.location.pathname.split('/');
118
+ var sNameFile = sName + '_' + aParts.pop().replace(/[\/:]/g,"").toLowerCase();
119
+ var sFullCookie, oData;
120
+
121
+ if ( fnCallback !== null )
122
+ {
123
+ oData = (typeof $.parseJSON === 'function') ?
124
+ $.parseJSON( sValue ) : eval( '('+sValue+')' );
125
+ sFullCookie = fnCallback( sNameFile, oData, date.toGMTString(),
126
+ aParts.join('/')+"/" );
127
+ }
128
+ else
129
+ {
130
+ sFullCookie = sNameFile + "=" + encodeURIComponent(sValue) +
131
+ "; expires=" + date.toGMTString() +"; path=" + aParts.join('/')+"/";
132
+ }
133
+
134
+ /* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies
135
+ * belonging to DataTables. This is FAR from bullet proof
136
+ */
137
+ var sOldName="", iOldTime=9999999999999;
138
+ var iLength = _fnReadCookie( sNameFile )!==null ? document.cookie.length :
139
+ sFullCookie.length + document.cookie.length;
140
+
141
+ if ( iLength+10 > 4096 ) /* Magic 10 for padding */
142
+ {
143
+ var aCookies =document.cookie.split(';');
144
+ for ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )
145
+ {
146
+ if ( aCookies[i].indexOf( sBaseName ) != -1 )
147
+ {
148
+ /* It's a DataTables cookie, so eval it and check the time stamp */
149
+ var aSplitCookie = aCookies[i].split('=');
150
+ try { oData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' ); }
151
+ catch( e ) { continue; }
152
+
153
+ if ( oData.iCreate && oData.iCreate < iOldTime )
154
+ {
155
+ sOldName = aSplitCookie[0];
156
+ iOldTime = oData.iCreate;
157
+ }
158
+ }
159
+ }
160
+
161
+ if ( sOldName !== "" )
162
+ {
163
+ document.cookie = sOldName+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path="+
164
+ aParts.join('/') + "/";
165
+ }
166
+ }
167
+
168
+ document.cookie = sFullCookie;
169
+ }
170
+
171
+
172
+ /**
173
+ * Read an old cookie to get a cookie with an old table state
174
+ * @param {string} sName name of the cookie to read
175
+ * @returns {string} contents of the cookie - or null if no cookie with that name found
176
+ * @memberof DataTable#oApi
177
+ */
178
+ function _fnReadCookie ( sName )
179
+ {
180
+ var
181
+ aParts = window.location.pathname.split('/'),
182
+ sNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\/:]/g,"").toLowerCase() + '=',
183
+ sCookieContents = document.cookie.split(';');
184
+
185
+ for( var i=0 ; i<sCookieContents.length ; i++ )
186
+ {
187
+ var c = sCookieContents[i];
188
+
189
+ while (c.charAt(0)==' ')
190
+ {
191
+ c = c.substring(1,c.length);
192
+ }
193
+
194
+ if (c.indexOf(sNameEQ) === 0)
195
+ {
196
+ return decodeURIComponent( c.substring(sNameEQ.length,c.length) );
197
+ }
198
+ }
199
+ return null;
200
+ }
201
+