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,788 @@
1
+
2
+ /**
3
+ * Create a new TR element (and it's TD children) for a row
4
+ * @param {object} oSettings dataTables settings object
5
+ * @param {int} iRow Row to consider
6
+ * @memberof DataTable#oApi
7
+ */
8
+ function _fnCreateTr ( oSettings, iRow )
9
+ {
10
+ var oData = oSettings.aoData[iRow];
11
+ var nTd;
12
+
13
+ if ( oData.nTr === null )
14
+ {
15
+ oData.nTr = document.createElement('tr');
16
+
17
+ /* Use a private property on the node to allow reserve mapping from the node
18
+ * to the aoData array for fast look up
19
+ */
20
+ oData.nTr._DT_RowIndex = iRow;
21
+
22
+ /* Special parameters can be given by the data source to be used on the row */
23
+ if ( oData._aData.DT_RowId )
24
+ {
25
+ oData.nTr.id = oData._aData.DT_RowId;
26
+ }
27
+
28
+ if ( oData._aData.DT_RowClass )
29
+ {
30
+ $(oData.nTr).addClass( oData._aData.DT_RowClass );
31
+ }
32
+
33
+ /* Process each column */
34
+ for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
35
+ {
36
+ var oCol = oSettings.aoColumns[i];
37
+ nTd = document.createElement( oCol.sCellType );
38
+
39
+ /* Render if needed - if bUseRendered is true then we already have the rendered
40
+ * value in the data source - so can just use that
41
+ */
42
+ nTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mDataProp === null)) ?
43
+ _fnRender( oSettings, iRow, i ) :
44
+ _fnGetCellData( oSettings, iRow, i, 'display' );
45
+
46
+ /* Add user defined class */
47
+ if ( oCol.sClass !== null )
48
+ {
49
+ nTd.className = oCol.sClass;
50
+ }
51
+
52
+ if ( oCol.bVisible )
53
+ {
54
+ oData.nTr.appendChild( nTd );
55
+ oData._anHidden[i] = null;
56
+ }
57
+ else
58
+ {
59
+ oData._anHidden[i] = nTd;
60
+ }
61
+
62
+ if ( oCol.fnCreatedCell )
63
+ {
64
+ oCol.fnCreatedCell.call( oSettings.oInstance,
65
+ nTd, _fnGetCellData( oSettings, iRow, i, 'display' ), oData._aData, iRow, i
66
+ );
67
+ }
68
+ }
69
+
70
+ _fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow] );
71
+ }
72
+ }
73
+
74
+
75
+ /**
76
+ * Create the HTML header for the table
77
+ * @param {object} oSettings dataTables settings object
78
+ * @memberof DataTable#oApi
79
+ */
80
+ function _fnBuildHead( oSettings )
81
+ {
82
+ var i, nTh, iLen, j, jLen;
83
+ var iThs = oSettings.nTHead.getElementsByTagName('th').length;
84
+ var iCorrector = 0;
85
+ var jqChildren;
86
+
87
+ /* If there is a header in place - then use it - otherwise it's going to get nuked... */
88
+ if ( iThs !== 0 )
89
+ {
90
+ /* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */
91
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
92
+ {
93
+ nTh = oSettings.aoColumns[i].nTh;
94
+ nTh.setAttribute('role', 'columnheader');
95
+ if ( oSettings.aoColumns[i].bSortable )
96
+ {
97
+ nTh.setAttribute('tabindex', oSettings.iTabIndex);
98
+ nTh.setAttribute('aria-controls', oSettings.sTableId);
99
+ }
100
+
101
+ if ( oSettings.aoColumns[i].sClass !== null )
102
+ {
103
+ $(nTh).addClass( oSettings.aoColumns[i].sClass );
104
+ }
105
+
106
+ /* Set the title of the column if it is user defined (not what was auto detected) */
107
+ if ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )
108
+ {
109
+ nTh.innerHTML = oSettings.aoColumns[i].sTitle;
110
+ }
111
+ }
112
+ }
113
+ else
114
+ {
115
+ /* We don't have a header in the DOM - so we are going to have to create one */
116
+ var nTr = document.createElement( "tr" );
117
+
118
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
119
+ {
120
+ nTh = oSettings.aoColumns[i].nTh;
121
+ nTh.innerHTML = oSettings.aoColumns[i].sTitle;
122
+ nTh.setAttribute('tabindex', '0');
123
+
124
+ if ( oSettings.aoColumns[i].sClass !== null )
125
+ {
126
+ $(nTh).addClass( oSettings.aoColumns[i].sClass );
127
+ }
128
+
129
+ nTr.appendChild( nTh );
130
+ }
131
+ $(oSettings.nTHead).html( '' )[0].appendChild( nTr );
132
+ _fnDetectHeader( oSettings.aoHeader, oSettings.nTHead );
133
+ }
134
+
135
+ /* ARIA role for the rows */
136
+ $(oSettings.nTHead).children('tr').attr('role', 'row');
137
+
138
+ /* Add the extra markup needed by jQuery UI's themes */
139
+ if ( oSettings.bJUI )
140
+ {
141
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
142
+ {
143
+ nTh = oSettings.aoColumns[i].nTh;
144
+
145
+ var nDiv = document.createElement('div');
146
+ nDiv.className = oSettings.oClasses.sSortJUIWrapper;
147
+ $(nTh).contents().appendTo(nDiv);
148
+
149
+ var nSpan = document.createElement('span');
150
+ nSpan.className = oSettings.oClasses.sSortIcon;
151
+ nDiv.appendChild( nSpan );
152
+ nTh.appendChild( nDiv );
153
+ }
154
+ }
155
+
156
+ if ( oSettings.oFeatures.bSort )
157
+ {
158
+ for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
159
+ {
160
+ if ( oSettings.aoColumns[i].bSortable !== false )
161
+ {
162
+ _fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );
163
+ }
164
+ else
165
+ {
166
+ $(oSettings.aoColumns[i].nTh).addClass( oSettings.oClasses.sSortableNone );
167
+ }
168
+ }
169
+ }
170
+
171
+ /* Deal with the footer - add classes if required */
172
+ if ( oSettings.oClasses.sFooterTH !== "" )
173
+ {
174
+ $(oSettings.nTFoot).children('tr').children('th').addClass( oSettings.oClasses.sFooterTH );
175
+ }
176
+
177
+ /* Cache the footer elements */
178
+ if ( oSettings.nTFoot !== null )
179
+ {
180
+ var anCells = _fnGetUniqueThs( oSettings, null, oSettings.aoFooter );
181
+ for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
182
+ {
183
+ if ( anCells[i] )
184
+ {
185
+ oSettings.aoColumns[i].nTf = anCells[i];
186
+ if ( oSettings.aoColumns[i].sClass )
187
+ {
188
+ $(anCells[i]).addClass( oSettings.aoColumns[i].sClass );
189
+ }
190
+ }
191
+ }
192
+ }
193
+ }
194
+
195
+
196
+ /**
197
+ * Draw the header (or footer) element based on the column visibility states. The
198
+ * methodology here is to use the layout array from _fnDetectHeader, modified for
199
+ * the instantaneous column visibility, to construct the new layout. The grid is
200
+ * traversed over cell at a time in a rows x columns grid fashion, although each
201
+ * cell insert can cover multiple elements in the grid - which is tracks using the
202
+ * aApplied array. Cell inserts in the grid will only occur where there isn't
203
+ * already a cell in that position.
204
+ * @param {object} oSettings dataTables settings object
205
+ * @param array {objects} aoSource Layout array from _fnDetectHeader
206
+ * @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,
207
+ * @memberof DataTable#oApi
208
+ */
209
+ function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
210
+ {
211
+ var i, iLen, j, jLen, k, kLen, n, nLocalTr;
212
+ var aoLocal = [];
213
+ var aApplied = [];
214
+ var iColumns = oSettings.aoColumns.length;
215
+ var iRowspan, iColspan;
216
+
217
+ if ( bIncludeHidden === undefined )
218
+ {
219
+ bIncludeHidden = false;
220
+ }
221
+
222
+ /* Make a copy of the master layout array, but without the visible columns in it */
223
+ for ( i=0, iLen=aoSource.length ; i<iLen ; i++ )
224
+ {
225
+ aoLocal[i] = aoSource[i].slice();
226
+ aoLocal[i].nTr = aoSource[i].nTr;
227
+
228
+ /* Remove any columns which are currently hidden */
229
+ for ( j=iColumns-1 ; j>=0 ; j-- )
230
+ {
231
+ if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )
232
+ {
233
+ aoLocal[i].splice( j, 1 );
234
+ }
235
+ }
236
+
237
+ /* Prep the applied array - it needs an element for each row */
238
+ aApplied.push( [] );
239
+ }
240
+
241
+ for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )
242
+ {
243
+ nLocalTr = aoLocal[i].nTr;
244
+
245
+ /* All cells are going to be replaced, so empty out the row */
246
+ if ( nLocalTr )
247
+ {
248
+ while( (n = nLocalTr.firstChild) )
249
+ {
250
+ nLocalTr.removeChild( n );
251
+ }
252
+ }
253
+
254
+ for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )
255
+ {
256
+ iRowspan = 1;
257
+ iColspan = 1;
258
+
259
+ /* Check to see if there is already a cell (row/colspan) covering our target
260
+ * insert point. If there is, then there is nothing to do.
261
+ */
262
+ if ( aApplied[i][j] === undefined )
263
+ {
264
+ nLocalTr.appendChild( aoLocal[i][j].cell );
265
+ aApplied[i][j] = 1;
266
+
267
+ /* Expand the cell to cover as many rows as needed */
268
+ while ( aoLocal[i+iRowspan] !== undefined &&
269
+ aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )
270
+ {
271
+ aApplied[i+iRowspan][j] = 1;
272
+ iRowspan++;
273
+ }
274
+
275
+ /* Expand the cell to cover as many columns as needed */
276
+ while ( aoLocal[i][j+iColspan] !== undefined &&
277
+ aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )
278
+ {
279
+ /* Must update the applied array over the rows for the columns */
280
+ for ( k=0 ; k<iRowspan ; k++ )
281
+ {
282
+ aApplied[i+k][j+iColspan] = 1;
283
+ }
284
+ iColspan++;
285
+ }
286
+
287
+ /* Do the actual expansion in the DOM */
288
+ aoLocal[i][j].cell.rowSpan = iRowspan;
289
+ aoLocal[i][j].cell.colSpan = iColspan;
290
+ }
291
+ }
292
+ }
293
+ }
294
+
295
+
296
+ /**
297
+ * Insert the required TR nodes into the table for display
298
+ * @param {object} oSettings dataTables settings object
299
+ * @memberof DataTable#oApi
300
+ */
301
+ function _fnDraw( oSettings )
302
+ {
303
+ /* Provide a pre-callback function which can be used to cancel the draw is false is returned */
304
+ var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
305
+ if ( $.inArray( false, aPreDraw ) !== -1 )
306
+ {
307
+ _fnProcessingDisplay( oSettings, false );
308
+ return;
309
+ }
310
+
311
+ var i, iLen, n;
312
+ var anRows = [];
313
+ var iRowCount = 0;
314
+ var iStripes = oSettings.asStripeClasses.length;
315
+ var iOpenRows = oSettings.aoOpenRows.length;
316
+
317
+ oSettings.bDrawing = true;
318
+
319
+ /* Check and see if we have an initial draw position from state saving */
320
+ if ( oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1 )
321
+ {
322
+ if ( oSettings.oFeatures.bServerSide )
323
+ {
324
+ oSettings._iDisplayStart = oSettings.iInitDisplayStart;
325
+ }
326
+ else
327
+ {
328
+ oSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?
329
+ 0 : oSettings.iInitDisplayStart;
330
+ }
331
+ oSettings.iInitDisplayStart = -1;
332
+ _fnCalculateEnd( oSettings );
333
+ }
334
+
335
+ /* Server-side processing draw intercept */
336
+ if ( oSettings.bDeferLoading )
337
+ {
338
+ oSettings.bDeferLoading = false;
339
+ oSettings.iDraw++;
340
+ }
341
+ else if ( !oSettings.oFeatures.bServerSide )
342
+ {
343
+ oSettings.iDraw++;
344
+ }
345
+ else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )
346
+ {
347
+ return;
348
+ }
349
+
350
+ if ( oSettings.aiDisplay.length !== 0 )
351
+ {
352
+ var iStart = oSettings._iDisplayStart;
353
+ var iEnd = oSettings._iDisplayEnd;
354
+
355
+ if ( oSettings.oFeatures.bServerSide )
356
+ {
357
+ iStart = 0;
358
+ iEnd = oSettings.aoData.length;
359
+ }
360
+
361
+ for ( var j=iStart ; j<iEnd ; j++ )
362
+ {
363
+ var aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];
364
+ if ( aoData.nTr === null )
365
+ {
366
+ _fnCreateTr( oSettings, oSettings.aiDisplay[j] );
367
+ }
368
+
369
+ var nRow = aoData.nTr;
370
+
371
+ /* Remove the old striping classes and then add the new one */
372
+ if ( iStripes !== 0 )
373
+ {
374
+ var sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];
375
+ if ( aoData._sRowStripe != sStripe )
376
+ {
377
+ $(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );
378
+ aoData._sRowStripe = sStripe;
379
+ }
380
+ }
381
+
382
+ /* Row callback functions - might want to manipule the row */
383
+ _fnCallbackFire( oSettings, 'aoRowCallback', null,
384
+ [nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j] );
385
+
386
+ anRows.push( nRow );
387
+ iRowCount++;
388
+
389
+ /* If there is an open row - and it is attached to this parent - attach it on redraw */
390
+ if ( iOpenRows !== 0 )
391
+ {
392
+ for ( var k=0 ; k<iOpenRows ; k++ )
393
+ {
394
+ if ( nRow == oSettings.aoOpenRows[k].nParent )
395
+ {
396
+ anRows.push( oSettings.aoOpenRows[k].nTr );
397
+ break;
398
+ }
399
+ }
400
+ }
401
+ }
402
+ }
403
+ else
404
+ {
405
+ /* Table is empty - create a row with an empty message in it */
406
+ anRows[ 0 ] = document.createElement( 'tr' );
407
+
408
+ if ( oSettings.asStripeClasses[0] )
409
+ {
410
+ anRows[ 0 ].className = oSettings.asStripeClasses[0];
411
+ }
412
+
413
+ var oLang = oSettings.oLanguage;
414
+ var sZero = oLang.sZeroRecords;
415
+ if ( oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )
416
+ {
417
+ sZero = oLang.sLoadingRecords;
418
+ }
419
+ else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )
420
+ {
421
+ sZero = oLang.sEmptyTable;
422
+ }
423
+
424
+ var nTd = document.createElement( 'td' );
425
+ nTd.setAttribute( 'valign', "top" );
426
+ nTd.colSpan = _fnVisbleColumns( oSettings );
427
+ nTd.className = oSettings.oClasses.sRowEmpty;
428
+ nTd.innerHTML = _fnInfoMacros( oSettings, sZero );
429
+
430
+ anRows[ iRowCount ].appendChild( nTd );
431
+ }
432
+
433
+ /* Header and footer callbacks */
434
+ _fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],
435
+ _fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );
436
+
437
+ _fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
438
+ _fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );
439
+
440
+ /*
441
+ * Need to remove any old row from the display - note we can't just empty the tbody using
442
+ * $().html('') since this will unbind the jQuery event handlers (even although the node
443
+ * still exists!) - equally we can't use innerHTML, since IE throws an exception.
444
+ */
445
+ var
446
+ nAddFrag = document.createDocumentFragment(),
447
+ nRemoveFrag = document.createDocumentFragment(),
448
+ nBodyPar, nTrs;
449
+
450
+ if ( oSettings.nTBody )
451
+ {
452
+ nBodyPar = oSettings.nTBody.parentNode;
453
+ nRemoveFrag.appendChild( oSettings.nTBody );
454
+
455
+ /* When doing infinite scrolling, only remove child rows when sorting, filtering or start
456
+ * up. When not infinite scroll, always do it.
457
+ */
458
+ if ( !oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||
459
+ oSettings.bSorted || oSettings.bFiltered )
460
+ {
461
+ while( (n = oSettings.nTBody.firstChild) )
462
+ {
463
+ oSettings.nTBody.removeChild( n );
464
+ }
465
+ }
466
+
467
+ /* Put the draw table into the dom */
468
+ for ( i=0, iLen=anRows.length ; i<iLen ; i++ )
469
+ {
470
+ nAddFrag.appendChild( anRows[i] );
471
+ }
472
+
473
+ oSettings.nTBody.appendChild( nAddFrag );
474
+ if ( nBodyPar !== null )
475
+ {
476
+ nBodyPar.appendChild( oSettings.nTBody );
477
+ }
478
+ }
479
+
480
+ /* Call all required callback functions for the end of a draw */
481
+ _fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );
482
+
483
+ /* Draw is complete, sorting and filtering must be as well */
484
+ oSettings.bSorted = false;
485
+ oSettings.bFiltered = false;
486
+ oSettings.bDrawing = false;
487
+
488
+ if ( oSettings.oFeatures.bServerSide )
489
+ {
490
+ _fnProcessingDisplay( oSettings, false );
491
+ if ( !oSettings._bInitComplete )
492
+ {
493
+ _fnInitComplete( oSettings );
494
+ }
495
+ }
496
+ }
497
+
498
+
499
+ /**
500
+ * Redraw the table - taking account of the various features which are enabled
501
+ * @param {object} oSettings dataTables settings object
502
+ * @memberof DataTable#oApi
503
+ */
504
+ function _fnReDraw( oSettings )
505
+ {
506
+ if ( oSettings.oFeatures.bSort )
507
+ {
508
+ /* Sorting will refilter and draw for us */
509
+ _fnSort( oSettings, oSettings.oPreviousSearch );
510
+ }
511
+ else if ( oSettings.oFeatures.bFilter )
512
+ {
513
+ /* Filtering will redraw for us */
514
+ _fnFilterComplete( oSettings, oSettings.oPreviousSearch );
515
+ }
516
+ else
517
+ {
518
+ _fnCalculateEnd( oSettings );
519
+ _fnDraw( oSettings );
520
+ }
521
+ }
522
+
523
+
524
+ /**
525
+ * Add the options to the page HTML for the table
526
+ * @param {object} oSettings dataTables settings object
527
+ * @memberof DataTable#oApi
528
+ */
529
+ function _fnAddOptionsHtml ( oSettings )
530
+ {
531
+ /*
532
+ * Create a temporary, empty, div which we can later on replace with what we have generated
533
+ * we do it this way to rendering the 'options' html offline - speed :-)
534
+ */
535
+ var nHolding = $('<div></div>')[0];
536
+ oSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );
537
+
538
+ /*
539
+ * All DataTables are wrapped in a div
540
+ */
541
+ oSettings.nTableWrapper = $('<div id="'+oSettings.sTableId+'_wrapper" class="'+oSettings.oClasses.sWrapper+'" role="grid"></div>')[0];
542
+ oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;
543
+
544
+ /* Track where we want to insert the option */
545
+ var nInsertNode = oSettings.nTableWrapper;
546
+
547
+ /* Loop over the user set positioning and place the elements as needed */
548
+ var aDom = oSettings.sDom.split('');
549
+ var nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;
550
+ for ( var i=0 ; i<aDom.length ; i++ )
551
+ {
552
+ iPushFeature = 0;
553
+ cOption = aDom[i];
554
+
555
+ if ( cOption == '<' )
556
+ {
557
+ /* New container div */
558
+ nNewNode = $('<div></div>')[0];
559
+
560
+ /* Check to see if we should append an id and/or a class name to the container */
561
+ cNext = aDom[i+1];
562
+ if ( cNext == "'" || cNext == '"' )
563
+ {
564
+ sAttr = "";
565
+ j = 2;
566
+ while ( aDom[i+j] != cNext )
567
+ {
568
+ sAttr += aDom[i+j];
569
+ j++;
570
+ }
571
+
572
+ /* Replace jQuery UI constants */
573
+ if ( sAttr == "H" )
574
+ {
575
+ sAttr = oSettings.oClasses.sJUIHeader;
576
+ }
577
+ else if ( sAttr == "F" )
578
+ {
579
+ sAttr = oSettings.oClasses.sJUIFooter;
580
+ }
581
+
582
+ /* The attribute can be in the format of "#id.class", "#id" or "class" This logic
583
+ * breaks the string into parts and applies them as needed
584
+ */
585
+ if ( sAttr.indexOf('.') != -1 )
586
+ {
587
+ var aSplit = sAttr.split('.');
588
+ nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);
589
+ nNewNode.className = aSplit[1];
590
+ }
591
+ else if ( sAttr.charAt(0) == "#" )
592
+ {
593
+ nNewNode.id = sAttr.substr(1, sAttr.length-1);
594
+ }
595
+ else
596
+ {
597
+ nNewNode.className = sAttr;
598
+ }
599
+
600
+ i += j; /* Move along the position array */
601
+ }
602
+
603
+ nInsertNode.appendChild( nNewNode );
604
+ nInsertNode = nNewNode;
605
+ }
606
+ else if ( cOption == '>' )
607
+ {
608
+ /* End container div */
609
+ nInsertNode = nInsertNode.parentNode;
610
+ }
611
+ else if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )
612
+ {
613
+ /* Length */
614
+ nTmp = _fnFeatureHtmlLength( oSettings );
615
+ iPushFeature = 1;
616
+ }
617
+ else if ( cOption == 'f' && oSettings.oFeatures.bFilter )
618
+ {
619
+ /* Filter */
620
+ nTmp = _fnFeatureHtmlFilter( oSettings );
621
+ iPushFeature = 1;
622
+ }
623
+ else if ( cOption == 'r' && oSettings.oFeatures.bProcessing )
624
+ {
625
+ /* pRocessing */
626
+ nTmp = _fnFeatureHtmlProcessing( oSettings );
627
+ iPushFeature = 1;
628
+ }
629
+ else if ( cOption == 't' )
630
+ {
631
+ /* Table */
632
+ nTmp = _fnFeatureHtmlTable( oSettings );
633
+ iPushFeature = 1;
634
+ }
635
+ else if ( cOption == 'i' && oSettings.oFeatures.bInfo )
636
+ {
637
+ /* Info */
638
+ nTmp = _fnFeatureHtmlInfo( oSettings );
639
+ iPushFeature = 1;
640
+ }
641
+ else if ( cOption == 'p' && oSettings.oFeatures.bPaginate )
642
+ {
643
+ /* Pagination */
644
+ nTmp = _fnFeatureHtmlPaginate( oSettings );
645
+ iPushFeature = 1;
646
+ }
647
+ else if ( DataTable.ext.aoFeatures.length !== 0 )
648
+ {
649
+ /* Plug-in features */
650
+ var aoFeatures = DataTable.ext.aoFeatures;
651
+ for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )
652
+ {
653
+ if ( cOption == aoFeatures[k].cFeature )
654
+ {
655
+ nTmp = aoFeatures[k].fnInit( oSettings );
656
+ if ( nTmp )
657
+ {
658
+ iPushFeature = 1;
659
+ }
660
+ break;
661
+ }
662
+ }
663
+ }
664
+
665
+ /* Add to the 2D features array */
666
+ if ( iPushFeature == 1 && nTmp !== null )
667
+ {
668
+ if ( typeof oSettings.aanFeatures[cOption] !== 'object' )
669
+ {
670
+ oSettings.aanFeatures[cOption] = [];
671
+ }
672
+ oSettings.aanFeatures[cOption].push( nTmp );
673
+ nInsertNode.appendChild( nTmp );
674
+ }
675
+ }
676
+
677
+ /* Built our DOM structure - replace the holding div with what we want */
678
+ nHolding.parentNode.replaceChild( oSettings.nTableWrapper, nHolding );
679
+ }
680
+
681
+
682
+ /**
683
+ * Use the DOM source to create up an array of header cells. The idea here is to
684
+ * create a layout grid (array) of rows x columns, which contains a reference
685
+ * to the cell that that point in the grid (regardless of col/rowspan), such that
686
+ * any column / row could be removed and the new grid constructed
687
+ * @param array {object} aLayout Array to store the calculated layout in
688
+ * @param {node} nThead The header/footer element for the table
689
+ * @memberof DataTable#oApi
690
+ */
691
+ function _fnDetectHeader ( aLayout, nThead )
692
+ {
693
+ var nTrs = $(nThead).children('tr');
694
+ var nCell;
695
+ var i, j, k, l, iLen, jLen, iColShifted;
696
+ var fnShiftCol = function ( a, i, j ) {
697
+ while ( a[i][j] ) {
698
+ j++;
699
+ }
700
+ return j;
701
+ };
702
+
703
+ aLayout.splice( 0, aLayout.length );
704
+
705
+ /* We know how many rows there are in the layout - so prep it */
706
+ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
707
+ {
708
+ aLayout.push( [] );
709
+ }
710
+
711
+ /* Calculate a layout array */
712
+ for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
713
+ {
714
+ var iColumn = 0;
715
+
716
+ /* For every cell in the row... */
717
+ for ( j=0, jLen=nTrs[i].childNodes.length ; j<jLen ; j++ )
718
+ {
719
+ nCell = nTrs[i].childNodes[j];
720
+
721
+ if ( nCell.nodeName.toUpperCase() == "TD" ||
722
+ nCell.nodeName.toUpperCase() == "TH" )
723
+ {
724
+ /* Get the col and rowspan attributes from the DOM and sanitise them */
725
+ var iColspan = nCell.getAttribute('colspan') * 1;
726
+ var iRowspan = nCell.getAttribute('rowspan') * 1;
727
+ iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;
728
+ iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;
729
+
730
+ /* There might be colspan cells already in this row, so shift our target
731
+ * accordingly
732
+ */
733
+ iColShifted = fnShiftCol( aLayout, i, iColumn );
734
+
735
+ /* If there is col / rowspan, copy the information into the layout grid */
736
+ for ( l=0 ; l<iColspan ; l++ )
737
+ {
738
+ for ( k=0 ; k<iRowspan ; k++ )
739
+ {
740
+ aLayout[i+k][iColShifted+l] = {
741
+ "cell": nCell,
742
+ "unique": iColspan == 1 ? true : false
743
+ };
744
+ aLayout[i+k].nTr = nTrs[i];
745
+ }
746
+ }
747
+ }
748
+ }
749
+ }
750
+ }
751
+
752
+
753
+ /**
754
+ * Get an array of unique th elements, one for each column
755
+ * @param {object} oSettings dataTables settings object
756
+ * @param {node} nHeader automatically detect the layout from this node - optional
757
+ * @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional
758
+ * @returns array {node} aReturn list of unique ths
759
+ * @memberof DataTable#oApi
760
+ */
761
+ function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
762
+ {
763
+ var aReturn = [];
764
+ if ( !aLayout )
765
+ {
766
+ aLayout = oSettings.aoHeader;
767
+ if ( nHeader )
768
+ {
769
+ aLayout = [];
770
+ _fnDetectHeader( aLayout, nHeader );
771
+ }
772
+ }
773
+
774
+ for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )
775
+ {
776
+ for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )
777
+ {
778
+ if ( aLayout[i][j].unique &&
779
+ (!aReturn[j] || !oSettings.bSortCellsTop) )
780
+ {
781
+ aReturn[j] = aLayout[i][j].cell;
782
+ }
783
+ }
784
+ }
785
+
786
+ return aReturn;
787
+ }
788
+