classiccms 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
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
+