camaleon_cms_rails6 2.5.0

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 (719) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +202 -0
  3. data/Rakefile +32 -0
  4. data/app/apps/plugins/attack/admin_controller.rb +17 -0
  5. data/app/apps/plugins/attack/attack_helper.rb +94 -0
  6. data/app/apps/plugins/attack/config/config.json +31 -0
  7. data/app/apps/plugins/attack/config/custom_models.rb +8 -0
  8. data/app/apps/plugins/attack/config/locales/readme.txt +1 -0
  9. data/app/apps/plugins/attack/config/locales/translation.yml +129 -0
  10. data/app/apps/plugins/attack/config/routes_admin.txt +2 -0
  11. data/app/apps/plugins/attack/models/attack.rb +3 -0
  12. data/app/apps/plugins/attack/views/admin/settings.html.erb +49 -0
  13. data/app/apps/plugins/authoring_post/authoring_post_helper.rb +51 -0
  14. data/app/apps/plugins/authoring_post/config/config.json +24 -0
  15. data/app/apps/plugins/front_cache/admin_controller.rb +29 -0
  16. data/app/apps/plugins/front_cache/config/config.json +21 -0
  17. data/app/apps/plugins/front_cache/config/initializer.rb +7 -0
  18. data/app/apps/plugins/front_cache/config/locales/readme.txt +1 -0
  19. data/app/apps/plugins/front_cache/config/locales/translation.yml +149 -0
  20. data/app/apps/plugins/front_cache/config/routes_admin.txt +3 -0
  21. data/app/apps/plugins/front_cache/front_cache_helper.rb +137 -0
  22. data/app/apps/plugins/front_cache/views/admin/settings.html.erb +81 -0
  23. data/app/apps/plugins/visibility_post/assets/js/form.js +30 -0
  24. data/app/apps/plugins/visibility_post/config/config.json +24 -0
  25. data/app/apps/plugins/visibility_post/visibility_post_helper.rb +124 -0
  26. data/app/apps/themes/camaleon_first/assets/css/magnific-ver.css +394 -0
  27. data/app/apps/themes/camaleon_first/assets/css/main.css +16 -0
  28. data/app/apps/themes/camaleon_first/assets/css/style-ver.css.scss +251 -0
  29. data/app/apps/themes/camaleon_first/assets/css/wpbase.css +1 -0
  30. data/app/apps/themes/camaleon_first/assets/images/empe.jpg +0 -0
  31. data/app/apps/themes/camaleon_first/assets/images/image.png +0 -0
  32. data/app/apps/themes/camaleon_first/assets/images/loader.gif +0 -0
  33. data/app/apps/themes/camaleon_first/assets/images/zoom.png +0 -0
  34. data/app/apps/themes/camaleon_first/assets/js/hover.zoom.js +67 -0
  35. data/app/apps/themes/camaleon_first/assets/js/magnific.min.js +3 -0
  36. data/app/apps/themes/camaleon_first/assets/js/main-ver.js +46 -0
  37. data/app/apps/themes/camaleon_first/assets/js/main.js +18 -0
  38. data/app/apps/themes/camaleon_first/assets/js/modernizr.custom.js +4 -0
  39. data/app/apps/themes/camaleon_first/config/config.json +14 -0
  40. data/app/apps/themes/camaleon_first/main_helper.rb +33 -0
  41. data/app/apps/themes/camaleon_first/views/index.html.erb +28 -0
  42. data/app/apps/themes/camaleon_first/views/layouts/camaleon_cms/mailer.html.erb +22 -0
  43. data/app/apps/themes/camaleon_first/views/layouts/index.html.erb +84 -0
  44. data/app/apps/themes/camaleon_first/views/mailer.html.erb +4 -0
  45. data/app/apps/themes/camaleon_first/views/partials/readme.txt +1 -0
  46. data/app/apps/themes/camaleon_first/views/template_sample_page.html.erb +6 -0
  47. data/app/apps/themes/default/assets/css/main.css +13 -0
  48. data/app/apps/themes/default/assets/css/style.css.scss +3398 -0
  49. data/app/apps/themes/default/assets/css/styles.css.scss +175 -0
  50. data/app/apps/themes/default/assets/genericons/COPYING.txt +9 -0
  51. data/app/apps/themes/default/assets/genericons/Genericons-Regular.otf +0 -0
  52. data/app/apps/themes/default/assets/genericons/LICENSE.txt +339 -0
  53. data/app/apps/themes/default/assets/genericons/README.txt +123 -0
  54. data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.eot +0 -0
  55. data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.svg +135 -0
  56. data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.ttf +0 -0
  57. data/app/apps/themes/default/assets/genericons/font/genericons-regular-webfont.woff +0 -0
  58. data/app/apps/themes/default/assets/genericons/genericons.css +197 -0
  59. data/app/apps/themes/default/assets/images/circle.png +0 -0
  60. data/app/apps/themes/default/assets/images/dotted-line-2x.png +0 -0
  61. data/app/apps/themes/default/assets/images/dotted-line-light-2x.png +0 -0
  62. data/app/apps/themes/default/assets/images/dotted-line-light.png +0 -0
  63. data/app/apps/themes/default/assets/images/dotted-line.png +0 -0
  64. data/app/apps/themes/default/assets/images/headers/circle-thumbnail.png +0 -0
  65. data/app/apps/themes/default/assets/images/headers/circle.png +0 -0
  66. data/app/apps/themes/default/assets/images/headers/diamond-thumbnail.png +0 -0
  67. data/app/apps/themes/default/assets/images/headers/diamond.png +0 -0
  68. data/app/apps/themes/default/assets/images/headers/star-thumbnail.png +0 -0
  69. data/app/apps/themes/default/assets/images/headers/star.png +0 -0
  70. data/app/apps/themes/default/assets/images/image.png +0 -0
  71. data/app/apps/themes/default/assets/images/search-icon-2x.png +0 -0
  72. data/app/apps/themes/default/assets/images/search-icon.png +0 -0
  73. data/app/apps/themes/default/assets/js/main.js +13 -0
  74. data/app/apps/themes/default/config/config.json +19 -0
  75. data/app/apps/themes/default/default_helper.rb +28 -0
  76. data/app/apps/themes/default/views/admin/settings.html.erb +0 -0
  77. data/app/apps/themes/default/views/category.html.erb +16 -0
  78. data/app/apps/themes/default/views/index.html.erb +35 -0
  79. data/app/apps/themes/default/views/layouts/index.html.erb +84 -0
  80. data/app/apps/themes/default/views/page.html.erb +14 -0
  81. data/app/apps/themes/default/views/partials/_breadcrumb.html.erb +10 -0
  82. data/app/apps/themes/default/views/partials/_categories_list.html.erb +23 -0
  83. data/app/apps/themes/default/views/partials/_comments.html.erb +40 -0
  84. data/app/apps/themes/default/views/partials/_comments_list.html.erb +20 -0
  85. data/app/apps/themes/default/views/partials/_flash_messages.html.erb +26 -0
  86. data/app/apps/themes/default/views/partials/_forms.html.erb +19 -0
  87. data/app/apps/themes/default/views/partials/_post_list_item.html.erb +34 -0
  88. data/app/apps/themes/default/views/partials/_search_form.html.erb +8 -0
  89. data/app/apps/themes/default/views/partials/_sidebar.html.erb +50 -0
  90. data/app/apps/themes/default/views/post.html.erb +14 -0
  91. data/app/apps/themes/default/views/post_tag.html.erb +14 -0
  92. data/app/apps/themes/default/views/post_type.html.erb +33 -0
  93. data/app/apps/themes/default/views/search.html.erb +17 -0
  94. data/app/apps/themes/new/assets/css/main.css +14 -0
  95. data/app/apps/themes/new/assets/css/styles.css.scss +175 -0
  96. data/app/apps/themes/new/assets/images/image.png +0 -0
  97. data/app/apps/themes/new/assets/js/main.js +14 -0
  98. data/app/apps/themes/new/config/config.json +26 -0
  99. data/app/apps/themes/new/custom_helper.rb +31 -0
  100. data/app/apps/themes/new/image.png +0 -0
  101. data/app/apps/themes/new/views/admin/settings.html.erb +1 -0
  102. data/app/apps/themes/new/views/category.html.erb +33 -0
  103. data/app/apps/themes/new/views/index.html.erb +71 -0
  104. data/app/apps/themes/new/views/layouts/_footer.html.erb +17 -0
  105. data/app/apps/themes/new/views/layouts/_header.html.erb +38 -0
  106. data/app/apps/themes/new/views/layouts/index.html.erb +32 -0
  107. data/app/apps/themes/new/views/page.html.erb +16 -0
  108. data/app/apps/themes/new/views/post.html.erb +20 -0
  109. data/app/apps/themes/new/views/post_tag.html.erb +22 -0
  110. data/app/apps/themes/new/views/post_type.html.erb +33 -0
  111. data/app/apps/themes/new/views/search.html.erb +18 -0
  112. data/app/assets/config/camaleon-cms.js +7 -0
  113. data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.eot +0 -0
  114. data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.svg +288 -0
  115. data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.ttf +0 -0
  116. data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.woff +0 -0
  117. data/app/assets/fonts/camaleon_cms/glyphicons-halflings-regular.woff2 +0 -0
  118. data/app/assets/images/camaleon.png +0 -0
  119. data/app/assets/images/camaleon_cms/admin/admin_spinner.gif +0 -0
  120. data/app/assets/images/camaleon_cms/admin/glyphicons-halflings.png +0 -0
  121. data/app/assets/images/camaleon_cms/admin/intro/menus.png +0 -0
  122. data/app/assets/images/camaleon_cms/admin/no_image.jpg +0 -0
  123. data/app/assets/images/camaleon_cms/bg-tree.jpeg +0 -0
  124. data/app/assets/images/camaleon_cms/camaleon-dark.png +0 -0
  125. data/app/assets/images/camaleon_cms/camaleon.png +0 -0
  126. data/app/assets/images/camaleon_cms/category-icon.png +0 -0
  127. data/app/assets/images/camaleon_cms/favicon.ico +0 -0
  128. data/app/assets/images/camaleon_cms/image-not-found.png +0 -0
  129. data/app/assets/images/camaleon_cms/language/de.png +0 -0
  130. data/app/assets/images/camaleon_cms/language/en.png +0 -0
  131. data/app/assets/images/camaleon_cms/language/es.png +0 -0
  132. data/app/assets/images/camaleon_cms/language/fr.png +0 -0
  133. data/app/assets/images/camaleon_cms/language/it.png +0 -0
  134. data/app/assets/images/camaleon_cms/language/nl.png +0 -0
  135. data/app/assets/images/camaleon_cms/language/pl.png +0 -0
  136. data/app/assets/images/camaleon_cms/language/pt-BR.png +0 -0
  137. data/app/assets/images/camaleon_cms/language/pt.png +0 -0
  138. data/app/assets/images/camaleon_cms/language/ru.png +0 -0
  139. data/app/assets/images/camaleon_cms/language/uk.png +0 -0
  140. data/app/assets/images/camaleon_cms/language/zh-CN.png +0 -0
  141. data/app/assets/images/camaleon_cms/loader.gif +0 -0
  142. data/app/assets/images/camaleon_cms/users/no-image.jpg +0 -0
  143. data/app/assets/javascripts/camaleon_cms/admin/_actions.js +91 -0
  144. data/app/assets/javascripts/camaleon_cms/admin/_bootstrap-datepicker.js +2558 -0
  145. data/app/assets/javascripts/camaleon_cms/admin/_bootstrap-select.js +7 -0
  146. data/app/assets/javascripts/camaleon_cms/admin/_custom_fields.js +273 -0
  147. data/app/assets/javascripts/camaleon_cms/admin/_data.js +69 -0
  148. data/app/assets/javascripts/camaleon_cms/admin/_i18n.js +32 -0
  149. data/app/assets/javascripts/camaleon_cms/admin/_jquery-ui.min.js +10 -0
  150. data/app/assets/javascripts/camaleon_cms/admin/_jquery.slugify.js +67 -0
  151. data/app/assets/javascripts/camaleon_cms/admin/_jquery.tagsinput.min.js +1 -0
  152. data/app/assets/javascripts/camaleon_cms/admin/_libraries.js +136 -0
  153. data/app/assets/javascripts/camaleon_cms/admin/_modal.js +156 -0
  154. data/app/assets/javascripts/camaleon_cms/admin/_post.js +317 -0
  155. data/app/assets/javascripts/camaleon_cms/admin/_posttype.js.coffee +27 -0
  156. data/app/assets/javascripts/camaleon_cms/admin/_translator.js +123 -0
  157. data/app/assets/javascripts/camaleon_cms/admin/_underscore.js +1536 -0
  158. data/app/assets/javascripts/camaleon_cms/admin/_user_profile.js +28 -0
  159. data/app/assets/javascripts/camaleon_cms/admin/admin-basic-manifest.js +3 -0
  160. data/app/assets/javascripts/camaleon_cms/admin/admin-manifest.js +55 -0
  161. data/app/assets/javascripts/camaleon_cms/admin/bootstrap-colorpicker.js +540 -0
  162. data/app/assets/javascripts/camaleon_cms/admin/custom_fields_form.js +94 -0
  163. data/app/assets/javascripts/camaleon_cms/admin/introjs/_intro.min.js +1317 -0
  164. data/app/assets/javascripts/camaleon_cms/admin/jquery-sieve.js +6 -0
  165. data/app/assets/javascripts/camaleon_cms/admin/jquery.nestable.js +485 -0
  166. data/app/assets/javascripts/camaleon_cms/admin/jquery.validate.js +123 -0
  167. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/de.js +20 -0
  168. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/es.js +27 -0
  169. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/fr.js +49 -0
  170. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/it.js +23 -0
  171. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/nl.js +33 -0
  172. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/pt-BR.js +74 -0
  173. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/ru.js +19 -0
  174. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/uk.js +23 -0
  175. data/app/assets/javascripts/camaleon_cms/admin/jquery_validate/zh-CN.js +23 -0
  176. data/app/assets/javascripts/camaleon_cms/admin/lte/app.js +758 -0
  177. data/app/assets/javascripts/camaleon_cms/admin/momentjs/_moment.js +3606 -0
  178. data/app/assets/javascripts/camaleon_cms/admin/momentjs/ar.js +136 -0
  179. data/app/assets/javascripts/camaleon_cms/admin/momentjs/ca.js +79 -0
  180. data/app/assets/javascripts/camaleon_cms/admin/momentjs/de.js +76 -0
  181. data/app/assets/javascripts/camaleon_cms/admin/momentjs/es.js +79 -0
  182. data/app/assets/javascripts/camaleon_cms/admin/momentjs/fr.js +62 -0
  183. data/app/assets/javascripts/camaleon_cms/admin/momentjs/it.js +70 -0
  184. data/app/assets/javascripts/camaleon_cms/admin/momentjs/ja.js +65 -0
  185. data/app/assets/javascripts/camaleon_cms/admin/momentjs/nl.js +71 -0
  186. data/app/assets/javascripts/camaleon_cms/admin/momentjs/pl.js +105 -0
  187. data/app/assets/javascripts/camaleon_cms/admin/momentjs/pt-BR.js +60 -0
  188. data/app/assets/javascripts/camaleon_cms/admin/momentjs/pt.js +64 -0
  189. data/app/assets/javascripts/camaleon_cms/admin/momentjs/ru.js +166 -0
  190. data/app/assets/javascripts/camaleon_cms/admin/momentjs/uk.js +151 -0
  191. data/app/assets/javascripts/camaleon_cms/admin/momentjs/zh-CN.js +127 -0
  192. data/app/assets/javascripts/camaleon_cms/admin/nav_menu.js.coffee +139 -0
  193. data/app/assets/javascripts/camaleon_cms/admin/tageditor/_jquery.caret.min.js +2 -0
  194. data/app/assets/javascripts/camaleon_cms/admin/tageditor/_jquery.tag-editor.js +352 -0
  195. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/de.js +219 -0
  196. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/en.js +179 -0
  197. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/es.js +177 -0
  198. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/fr.js +219 -0
  199. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/it.js +219 -0
  200. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/nl.js +219 -0
  201. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/pt-BR.js +219 -0
  202. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/readme.md +3 -0
  203. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/ru.js +219 -0
  204. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/uk.js +219 -0
  205. data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/zh-CN.js +228 -0
  206. data/app/assets/javascripts/camaleon_cms/admin/tinymce/plugins/filemanager/plugin.min.js +30 -0
  207. data/app/assets/javascripts/camaleon_cms/admin/uploader/_cropper.min.js +3003 -0
  208. data/app/assets/javascripts/camaleon_cms/admin/uploader/_jquery.form.js +1277 -0
  209. data/app/assets/javascripts/camaleon_cms/admin/uploader/_jquery.uploadfile.min.js +8 -0
  210. data/app/assets/javascripts/camaleon_cms/admin/uploader/_media_manager.js.coffee +455 -0
  211. data/app/assets/javascripts/camaleon_cms/admin/uploader/uploader_manifest.js +5 -0
  212. data/app/assets/javascripts/camaleon_cms/bootstrap.min.js +7 -0
  213. data/app/assets/stylesheets/camaleon_cms/admin/_bootstrap-datepicker.css.scss +373 -0
  214. data/app/assets/stylesheets/camaleon_cms/admin/_bootstrap-select.css +7 -0
  215. data/app/assets/stylesheets/camaleon_cms/admin/_custom_admin.css.scss +359 -0
  216. data/app/assets/stylesheets/camaleon_cms/admin/_jquery.tagsinput.css +72 -0
  217. data/app/assets/stylesheets/camaleon_cms/admin/admin-basic-manifest.css +16 -0
  218. data/app/assets/stylesheets/camaleon_cms/admin/admin-manifest.css +28 -0
  219. data/app/assets/stylesheets/camaleon_cms/admin/colorpicker.css.scss +96 -0
  220. data/app/assets/stylesheets/camaleon_cms/admin/img/bg.png +0 -0
  221. data/app/assets/stylesheets/camaleon_cms/admin/img/colorpicker/alpha.png +0 -0
  222. data/app/assets/stylesheets/camaleon_cms/admin/img/colorpicker/hue.png +0 -0
  223. data/app/assets/stylesheets/camaleon_cms/admin/img/colorpicker/saturation.png +0 -0
  224. data/app/assets/stylesheets/camaleon_cms/admin/img/girls-1.jpg +0 -0
  225. data/app/assets/stylesheets/camaleon_cms/admin/img/jquery/resize-icon.png +0 -0
  226. data/app/assets/stylesheets/camaleon_cms/admin/img/loading.gif +1 -0
  227. data/app/assets/stylesheets/camaleon_cms/admin/img/logo-small.png +0 -0
  228. data/app/assets/stylesheets/camaleon_cms/admin/img/logo.png +0 -0
  229. data/app/assets/stylesheets/camaleon_cms/admin/img/no_image.jpg +0 -0
  230. data/app/assets/stylesheets/camaleon_cms/admin/img/rormeleon-white.png +0 -0
  231. data/app/assets/stylesheets/camaleon_cms/admin/img/thumb_no_found.jpg +0 -0
  232. data/app/assets/stylesheets/camaleon_cms/admin/introjs/_introjs.min.css +1 -0
  233. data/app/assets/stylesheets/camaleon_cms/admin/jquery/_jquery-ui.scss +1226 -0
  234. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  235. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  236. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  237. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  238. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  239. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  240. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  241. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  242. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_222222_256x240.png +0 -0
  243. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
  244. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_454545_256x240.png +0 -0
  245. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_888888_256x240.png +0 -0
  246. data/app/assets/stylesheets/camaleon_cms/admin/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
  247. data/app/assets/stylesheets/camaleon_cms/admin/lte/_admin.css.scss +4561 -0
  248. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-black-light.css +176 -0
  249. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-black.css +154 -0
  250. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-blue-light.css +167 -0
  251. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-blue.css +142 -0
  252. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-green-light.css +156 -0
  253. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-green.css +134 -0
  254. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-purple-light.css +156 -0
  255. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-purple.css +135 -0
  256. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-red-light.css +156 -0
  257. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-red.css +134 -0
  258. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-yellow-light.css +156 -0
  259. data/app/assets/stylesheets/camaleon_cms/admin/lte/skins/skin-yellow.css +134 -0
  260. data/app/assets/stylesheets/camaleon_cms/admin/nestable/jquery.nestable.css +103 -0
  261. data/app/assets/stylesheets/camaleon_cms/admin/tageditor/_jquery.tag-editor.css.scss +49 -0
  262. data/app/assets/stylesheets/camaleon_cms/admin/uploader/_cropper.min.css +9 -0
  263. data/app/assets/stylesheets/camaleon_cms/admin/uploader/_uploadfile.css.scss +256 -0
  264. data/app/assets/stylesheets/camaleon_cms/admin/uploader/uploader_manifest.css +4 -0
  265. data/app/assets/stylesheets/camaleon_cms/admin/widgets.css.scss +26 -0
  266. data/app/assets/stylesheets/camaleon_cms/bootstrap.min.css.scss +6799 -0
  267. data/app/controllers/camaleon_cms/admin/appearances/nav_menus_controller.rb +129 -0
  268. data/app/controllers/camaleon_cms/admin/appearances/themes_controller.rb +29 -0
  269. data/app/controllers/camaleon_cms/admin/appearances/widgets/assign_controller.rb +41 -0
  270. data/app/controllers/camaleon_cms/admin/appearances/widgets/main_controller.rb +55 -0
  271. data/app/controllers/camaleon_cms/admin/appearances/widgets/sidebar_controller.rb +56 -0
  272. data/app/controllers/camaleon_cms/admin/categories_controller.rb +80 -0
  273. data/app/controllers/camaleon_cms/admin/comments_controller.rb +90 -0
  274. data/app/controllers/camaleon_cms/admin/installers_controller.rb +32 -0
  275. data/app/controllers/camaleon_cms/admin/media_controller.rb +109 -0
  276. data/app/controllers/camaleon_cms/admin/plugins_controller.rb +46 -0
  277. data/app/controllers/camaleon_cms/admin/post_tags_controller.rb +81 -0
  278. data/app/controllers/camaleon_cms/admin/posts/drafts_controller.rb +58 -0
  279. data/app/controllers/camaleon_cms/admin/posts_controller.rb +212 -0
  280. data/app/controllers/camaleon_cms/admin/sessions_controller.rb +172 -0
  281. data/app/controllers/camaleon_cms/admin/settings/custom_fields_controller.rb +108 -0
  282. data/app/controllers/camaleon_cms/admin/settings/post_types_controller.rb +63 -0
  283. data/app/controllers/camaleon_cms/admin/settings/sites_controller.rb +87 -0
  284. data/app/controllers/camaleon_cms/admin/settings_controller.rb +86 -0
  285. data/app/controllers/camaleon_cms/admin/user_roles_controller.rb +74 -0
  286. data/app/controllers/camaleon_cms/admin/users_controller.rb +124 -0
  287. data/app/controllers/camaleon_cms/admin_controller.rb +82 -0
  288. data/app/controllers/camaleon_cms/apps/plugins_admin_controller.rb +19 -0
  289. data/app/controllers/camaleon_cms/apps/plugins_front_controller.rb +19 -0
  290. data/app/controllers/camaleon_cms/apps/themes_admin_controller.rb +12 -0
  291. data/app/controllers/camaleon_cms/apps/themes_front_controller.rb +12 -0
  292. data/app/controllers/camaleon_cms/camaleon_controller.rb +139 -0
  293. data/app/controllers/camaleon_cms/frontend_controller.rb +277 -0
  294. data/app/controllers/concerns/camaleon_cms/frontend_concern.rb +66 -0
  295. data/app/decorators/camaleon_cms/application_decorator.rb +54 -0
  296. data/app/decorators/camaleon_cms/category_decorator.rb +58 -0
  297. data/app/decorators/camaleon_cms/custom_field_decorator.rb +11 -0
  298. data/app/decorators/camaleon_cms/custom_fields_concern.rb +81 -0
  299. data/app/decorators/camaleon_cms/metas_decorator_methods.rb +11 -0
  300. data/app/decorators/camaleon_cms/nav_menu_item_decorator.rb +4 -0
  301. data/app/decorators/camaleon_cms/plugin_decorator.rb +3 -0
  302. data/app/decorators/camaleon_cms/post_comment_decorator.rb +39 -0
  303. data/app/decorators/camaleon_cms/post_decorator.rb +251 -0
  304. data/app/decorators/camaleon_cms/post_tag_decorator.rb +45 -0
  305. data/app/decorators/camaleon_cms/post_type_decorator.rb +87 -0
  306. data/app/decorators/camaleon_cms/site_decorator.rb +200 -0
  307. data/app/decorators/camaleon_cms/term_taxonomy_decorator.rb +93 -0
  308. data/app/decorators/camaleon_cms/theme_decorator.rb +18 -0
  309. data/app/decorators/camaleon_cms/user_decorator.rb +73 -0
  310. data/app/decorators/camaleon_cms/user_role_decorator.rb +12 -0
  311. data/app/decorators/camaleon_cms/widget_decorator.rb +4 -0
  312. data/app/helpers/camaleon_cms/admin/application_helper.rb +36 -0
  313. data/app/helpers/camaleon_cms/admin/breadcrumb_helper.rb +15 -0
  314. data/app/helpers/camaleon_cms/admin/category_helper.rb +24 -0
  315. data/app/helpers/camaleon_cms/admin/custom_fields_helper.rb +354 -0
  316. data/app/helpers/camaleon_cms/admin/menus_helper.rb +182 -0
  317. data/app/helpers/camaleon_cms/admin/post_type_helper.rb +67 -0
  318. data/app/helpers/camaleon_cms/camaleon_helper.rb +88 -0
  319. data/app/helpers/camaleon_cms/captcha_helper.rb +93 -0
  320. data/app/helpers/camaleon_cms/comment_helper.rb +48 -0
  321. data/app/helpers/camaleon_cms/content_helper.rb +29 -0
  322. data/app/helpers/camaleon_cms/email_helper.rb +56 -0
  323. data/app/helpers/camaleon_cms/frontend/application_helper.rb +36 -0
  324. data/app/helpers/camaleon_cms/frontend/content_select_helper.rb +161 -0
  325. data/app/helpers/camaleon_cms/frontend/nav_menu_helper.rb +237 -0
  326. data/app/helpers/camaleon_cms/frontend/seo_helper.rb +86 -0
  327. data/app/helpers/camaleon_cms/frontend/site_helper.rb +70 -0
  328. data/app/helpers/camaleon_cms/hooks_helper.rb +57 -0
  329. data/app/helpers/camaleon_cms/html_helper.rb +134 -0
  330. data/app/helpers/camaleon_cms/plugins_helper.rb +173 -0
  331. data/app/helpers/camaleon_cms/session_helper.rb +161 -0
  332. data/app/helpers/camaleon_cms/short_code_helper.rb +283 -0
  333. data/app/helpers/camaleon_cms/site_helper.rb +103 -0
  334. data/app/helpers/camaleon_cms/theme_helper.rb +95 -0
  335. data/app/helpers/camaleon_cms/uploader_helper.rb +329 -0
  336. data/app/helpers/camaleon_cms/user_roles_helper.rb +13 -0
  337. data/app/mailers/camaleon_cms/html_mailer.rb +87 -0
  338. data/app/models/camaleon_cms/ability.rb +109 -0
  339. data/app/models/camaleon_cms/category.rb +52 -0
  340. data/app/models/camaleon_cms/custom_field.rb +35 -0
  341. data/app/models/camaleon_cms/custom_field_group.rb +136 -0
  342. data/app/models/camaleon_cms/custom_fields_relationship.rb +27 -0
  343. data/app/models/camaleon_cms/media.rb +54 -0
  344. data/app/models/camaleon_cms/meta.rb +4 -0
  345. data/app/models/camaleon_cms/nav_menu.rb +29 -0
  346. data/app/models/camaleon_cms/nav_menu_item.rb +64 -0
  347. data/app/models/camaleon_cms/plugin.rb +76 -0
  348. data/app/models/camaleon_cms/post.rb +265 -0
  349. data/app/models/camaleon_cms/post_comment.rb +44 -0
  350. data/app/models/camaleon_cms/post_default.rb +78 -0
  351. data/app/models/camaleon_cms/post_relationship.rb +20 -0
  352. data/app/models/camaleon_cms/post_tag.rb +7 -0
  353. data/app/models/camaleon_cms/post_type.rb +189 -0
  354. data/app/models/camaleon_cms/site.rb +242 -0
  355. data/app/models/camaleon_cms/term_relationship.rb +18 -0
  356. data/app/models/camaleon_cms/term_taxonomy.rb +61 -0
  357. data/app/models/camaleon_cms/theme.rb +31 -0
  358. data/app/models/camaleon_cms/user.rb +18 -0
  359. data/app/models/camaleon_cms/user_role.rb +138 -0
  360. data/app/models/camaleon_cms/widget.rb +5 -0
  361. data/app/models/camaleon_cms/widget/assigned.rb +27 -0
  362. data/app/models/camaleon_cms/widget/main.rb +44 -0
  363. data/app/models/camaleon_cms/widget/sidebar.rb +20 -0
  364. data/app/models/concerns/camaleon_cms/categories_tags_for_posts.rb +132 -0
  365. data/app/models/concerns/camaleon_cms/custom_fields_read.rb +310 -0
  366. data/app/models/concerns/camaleon_cms/metas.rb +138 -0
  367. data/app/models/concerns/camaleon_cms/site_default_settings.rb +87 -0
  368. data/app/models/concerns/camaleon_cms/user_methods.rb +133 -0
  369. data/app/models/plugins.rb +5 -0
  370. data/app/models/themes.rb +5 -0
  371. data/app/uploaders/camaleon_cms_aws_uploader.rb +132 -0
  372. data/app/uploaders/camaleon_cms_local_uploader.rb +108 -0
  373. data/app/uploaders/camaleon_cms_uploader.rb +164 -0
  374. data/app/views/camaleon_cms/404.html.erb +4 -0
  375. data/app/views/camaleon_cms/500.html.erb +4 -0
  376. data/app/views/camaleon_cms/_flash_messages.html.erb +39 -0
  377. data/app/views/camaleon_cms/admin/appearances/nav_menus/_custom_fields.html.erb +6 -0
  378. data/app/views/camaleon_cms/admin/appearances/nav_menus/_custom_menus.html.erb +42 -0
  379. data/app/views/camaleon_cms/admin/appearances/nav_menus/_external_menu.html.erb +23 -0
  380. data/app/views/camaleon_cms/admin/appearances/nav_menus/_form.html.erb +13 -0
  381. data/app/views/camaleon_cms/admin/appearances/nav_menus/_left_menu_items.html.erb +77 -0
  382. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_items.html.erb +19 -0
  383. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_items_list.html.erb +12 -0
  384. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_options.html.erb +21 -0
  385. data/app/views/camaleon_cms/admin/appearances/nav_menus/index.html.erb +14 -0
  386. data/app/views/camaleon_cms/admin/appearances/themes/index.html.erb +70 -0
  387. data/app/views/camaleon_cms/admin/appearances/themes/preview.html.erb +1 -0
  388. data/app/views/camaleon_cms/admin/appearances/themes/theme_load_data.html.erb +40 -0
  389. data/app/views/camaleon_cms/admin/appearances/widgets/assign/_form.html.erb +35 -0
  390. data/app/views/camaleon_cms/admin/appearances/widgets/main/_sidebar.html.erb +29 -0
  391. data/app/views/camaleon_cms/admin/appearances/widgets/main/form.html.erb +27 -0
  392. data/app/views/camaleon_cms/admin/appearances/widgets/main/index.html.erb +41 -0
  393. data/app/views/camaleon_cms/admin/appearances/widgets/sidebar/form.html.erb +23 -0
  394. data/app/views/camaleon_cms/admin/categories/_form.html.erb +34 -0
  395. data/app/views/camaleon_cms/admin/categories/edit.html.erb +14 -0
  396. data/app/views/camaleon_cms/admin/categories/index.html.erb +68 -0
  397. data/app/views/camaleon_cms/admin/comments/form.html.erb +12 -0
  398. data/app/views/camaleon_cms/admin/comments/form_answer.html.erb +12 -0
  399. data/app/views/camaleon_cms/admin/comments/index.html.erb +21 -0
  400. data/app/views/camaleon_cms/admin/comments/list.html.erb +36 -0
  401. data/app/views/camaleon_cms/admin/dashboard.html.erb +25 -0
  402. data/app/views/camaleon_cms/admin/installers/form.html.erb +19 -0
  403. data/app/views/camaleon_cms/admin/installers/welcome.html.erb +8 -0
  404. data/app/views/camaleon_cms/admin/media/_render_file_item.html.erb +57 -0
  405. data/app/views/camaleon_cms/admin/media/index.html.erb +70 -0
  406. data/app/views/camaleon_cms/admin/plugins/_plugins_list.html.erb +43 -0
  407. data/app/views/camaleon_cms/admin/plugins/index.html.erb +43 -0
  408. data/app/views/camaleon_cms/admin/post_tags/_form.html.erb +26 -0
  409. data/app/views/camaleon_cms/admin/post_tags/edit.html.erb +14 -0
  410. data/app/views/camaleon_cms/admin/post_tags/index.html.erb +59 -0
  411. data/app/views/camaleon_cms/admin/posts/_filter_posts.html.erb +5 -0
  412. data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +156 -0
  413. data/app/views/camaleon_cms/admin/posts/form.html.erb +96 -0
  414. data/app/views/camaleon_cms/admin/posts/index.html.erb +112 -0
  415. data/app/views/camaleon_cms/admin/posts/show.html.erb +20 -0
  416. data/app/views/camaleon_cms/admin/search.html.erb +73 -0
  417. data/app/views/camaleon_cms/admin/sessions/forgot.html.erb +44 -0
  418. data/app/views/camaleon_cms/admin/sessions/login.html.erb +47 -0
  419. data/app/views/camaleon_cms/admin/sessions/register.html.erb +63 -0
  420. data/app/views/camaleon_cms/admin/settings/_configuration_settings.html.erb +75 -0
  421. data/app/views/camaleon_cms/admin/settings/_email_settings.html.erb +58 -0
  422. data/app/views/camaleon_cms/admin/settings/_file_system_settings.html.erb +32 -0
  423. data/app/views/camaleon_cms/admin/settings/_media_settings.html.erb +14 -0
  424. data/app/views/camaleon_cms/admin/settings/_seo_settings.html.erb +22 -0
  425. data/app/views/camaleon_cms/admin/settings/custom_fields/_get_items.html.erb +185 -0
  426. data/app/views/camaleon_cms/admin/settings/custom_fields/_meta_data.html.erb +93 -0
  427. data/app/views/camaleon_cms/admin/settings/custom_fields/_render.html.erb +50 -0
  428. data/app/views/camaleon_cms/admin/settings/custom_fields/_render_category_simple.html.erb +25 -0
  429. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_audio.html.erb +4 -0
  430. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_categories.html.erb +11 -0
  431. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_checkbox.html.erb +8 -0
  432. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_checkboxes.html.erb +5 -0
  433. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_colorpicker.html.erb +7 -0
  434. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_date.html.erb +6 -0
  435. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_editor.html.erb +3 -0
  436. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_email.html.erb +3 -0
  437. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_field_attrs.html.erb +8 -0
  438. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_file.html.erb +4 -0
  439. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_image.html.erb +16 -0
  440. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_numeric.html.erb +4 -0
  441. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_phone.html.erb +3 -0
  442. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_post_types.html.erb +8 -0
  443. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_posts.html.erb +14 -0
  444. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_private_file.html.erb +4 -0
  445. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_radio.html.erb +5 -0
  446. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_select.html.erb +7 -0
  447. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_select_eval.html.erb +3 -0
  448. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_text_area.html.erb +3 -0
  449. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_text_box.html.erb +3 -0
  450. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_url.html.erb +3 -0
  451. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_users.html.erb +8 -0
  452. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_video.html.erb +4 -0
  453. data/app/views/camaleon_cms/admin/settings/custom_fields/form.html.erb +167 -0
  454. data/app/views/camaleon_cms/admin/settings/custom_fields/index.html.erb +111 -0
  455. data/app/views/camaleon_cms/admin/settings/languages.html.erb +60 -0
  456. data/app/views/camaleon_cms/admin/settings/post_types/_form.html.erb +171 -0
  457. data/app/views/camaleon_cms/admin/settings/post_types/edit.html.erb +14 -0
  458. data/app/views/camaleon_cms/admin/settings/post_types/index.html.erb +55 -0
  459. data/app/views/camaleon_cms/admin/settings/shortcodes.html.erb +37 -0
  460. data/app/views/camaleon_cms/admin/settings/site.html.erb +98 -0
  461. data/app/views/camaleon_cms/admin/settings/sites/form.html.erb +35 -0
  462. data/app/views/camaleon_cms/admin/settings/sites/index.html.erb +60 -0
  463. data/app/views/camaleon_cms/admin/settings/theme.html.erb +20 -0
  464. data/app/views/camaleon_cms/admin/user_roles/form.html.erb +156 -0
  465. data/app/views/camaleon_cms/admin/user_roles/index.html.erb +57 -0
  466. data/app/views/camaleon_cms/admin/users/form.html.erb +161 -0
  467. data/app/views/camaleon_cms/admin/users/index.html.erb +63 -0
  468. data/app/views/camaleon_cms/admin/users/profile.html.erb +1 -0
  469. data/app/views/camaleon_cms/admin/users/profile/_activity.html.erb +180 -0
  470. data/app/views/camaleon_cms/admin/users/profile/_settings.html.erb +15 -0
  471. data/app/views/camaleon_cms/default_theme/category.html.erb +26 -0
  472. data/app/views/camaleon_cms/default_theme/category.json.jbuilder +15 -0
  473. data/app/views/camaleon_cms/default_theme/category.rss.builder +23 -0
  474. data/app/views/camaleon_cms/default_theme/custom_fields/audio.html.erb +3 -0
  475. data/app/views/camaleon_cms/default_theme/custom_fields/checkbox.html.erb +3 -0
  476. data/app/views/camaleon_cms/default_theme/custom_fields/checkboxes.html.erb +3 -0
  477. data/app/views/camaleon_cms/default_theme/custom_fields/colorpicker.html.erb +3 -0
  478. data/app/views/camaleon_cms/default_theme/custom_fields/date.html.erb +3 -0
  479. data/app/views/camaleon_cms/default_theme/custom_fields/editor.html.erb +3 -0
  480. data/app/views/camaleon_cms/default_theme/custom_fields/email.html.erb +3 -0
  481. data/app/views/camaleon_cms/default_theme/custom_fields/field_attrs.html.erb +3 -0
  482. data/app/views/camaleon_cms/default_theme/custom_fields/file.html.erb +3 -0
  483. data/app/views/camaleon_cms/default_theme/custom_fields/image.html.erb +3 -0
  484. data/app/views/camaleon_cms/default_theme/custom_fields/numeric.html.erb +3 -0
  485. data/app/views/camaleon_cms/default_theme/custom_fields/phone.html.erb +3 -0
  486. data/app/views/camaleon_cms/default_theme/custom_fields/posts.html.erb +3 -0
  487. data/app/views/camaleon_cms/default_theme/custom_fields/radio.html.erb +3 -0
  488. data/app/views/camaleon_cms/default_theme/custom_fields/select.html.erb +3 -0
  489. data/app/views/camaleon_cms/default_theme/custom_fields/select_eval.html.erb +3 -0
  490. data/app/views/camaleon_cms/default_theme/custom_fields/text_area.html.erb +3 -0
  491. data/app/views/camaleon_cms/default_theme/custom_fields/text_box.html.erb +3 -0
  492. data/app/views/camaleon_cms/default_theme/custom_fields/url.html.erb +3 -0
  493. data/app/views/camaleon_cms/default_theme/custom_fields/users.html.erb +3 -0
  494. data/app/views/camaleon_cms/default_theme/custom_fields/video.html.erb +3 -0
  495. data/app/views/camaleon_cms/default_theme/index.html.erb +70 -0
  496. data/app/views/camaleon_cms/default_theme/index.json.jbuilder +14 -0
  497. data/app/views/camaleon_cms/default_theme/partials/_breadcrumb.html.erb +10 -0
  498. data/app/views/camaleon_cms/default_theme/partials/_cama_category_entry.json.jbuilder +6 -0
  499. data/app/views/camaleon_cms/default_theme/partials/_cama_comments_entry.json.jbuilder +6 -0
  500. data/app/views/camaleon_cms/default_theme/partials/_cama_post_entry.json.jbuilder +6 -0
  501. data/app/views/camaleon_cms/default_theme/partials/_cama_post_type_entry.json.jbuilder +6 -0
  502. data/app/views/camaleon_cms/default_theme/partials/_cama_posts_entries.json.jbuilder +8 -0
  503. data/app/views/camaleon_cms/default_theme/partials/_cama_tag_entry.json.jbuilder +5 -0
  504. data/app/views/camaleon_cms/default_theme/partials/_cama_user_entry.json.jbuilder +5 -0
  505. data/app/views/camaleon_cms/default_theme/partials/_categories_list.html.erb +23 -0
  506. data/app/views/camaleon_cms/default_theme/partials/_comments.html.erb +48 -0
  507. data/app/views/camaleon_cms/default_theme/partials/_comments_list.html.erb +21 -0
  508. data/app/views/camaleon_cms/default_theme/partials/_comments_list2.html.erb +24 -0
  509. data/app/views/camaleon_cms/default_theme/partials/_flash_messages.html.erb +26 -0
  510. data/app/views/camaleon_cms/default_theme/partials/_forms.html.erb +19 -0
  511. data/app/views/camaleon_cms/default_theme/partials/_post_list_item.html.erb +13 -0
  512. data/app/views/camaleon_cms/default_theme/partials/_render_custom_field.html.erb +55 -0
  513. data/app/views/camaleon_cms/default_theme/partials/_search_form.html.erb +8 -0
  514. data/app/views/camaleon_cms/default_theme/partials/_sidebar.html.erb +66 -0
  515. data/app/views/camaleon_cms/default_theme/post_tag.html.erb +18 -0
  516. data/app/views/camaleon_cms/default_theme/post_tag.json.jbuilder +10 -0
  517. data/app/views/camaleon_cms/default_theme/post_tag.rss.builder +22 -0
  518. data/app/views/camaleon_cms/default_theme/post_type.html.erb +25 -0
  519. data/app/views/camaleon_cms/default_theme/post_type.json.jbuilder +13 -0
  520. data/app/views/camaleon_cms/default_theme/post_type.rss.builder +22 -0
  521. data/app/views/camaleon_cms/default_theme/profile.html.erb +18 -0
  522. data/app/views/camaleon_cms/default_theme/profile.json.jbuilder +4 -0
  523. data/app/views/camaleon_cms/default_theme/robots.text.erb +1 -0
  524. data/app/views/camaleon_cms/default_theme/rss.rss.builder +21 -0
  525. data/app/views/camaleon_cms/default_theme/search.html.erb +13 -0
  526. data/app/views/camaleon_cms/default_theme/search.json.jbuilder +1 -0
  527. data/app/views/camaleon_cms/default_theme/single.html.erb +32 -0
  528. data/app/views/camaleon_cms/default_theme/single.json.jbuilder +21 -0
  529. data/app/views/camaleon_cms/default_theme/single.rss.builder +12 -0
  530. data/app/views/camaleon_cms/default_theme/sitemap.html.erb +23 -0
  531. data/app/views/camaleon_cms/default_theme/sitemap.xml.builder +60 -0
  532. data/app/views/camaleon_cms/html_mailer/confirm_email.html.erb +3 -0
  533. data/app/views/camaleon_cms/html_mailer/mailer.html.erb +4 -0
  534. data/app/views/camaleon_cms/html_mailer/password_reset.html.erb +3 -0
  535. data/app/views/camaleon_cms/shortcode_templates/widget.html.erb +11 -0
  536. data/app/views/layouts/camaleon_cms/admin.html.erb +54 -0
  537. data/app/views/layouts/camaleon_cms/admin/_ajax.html.erb +8 -0
  538. data/app/views/layouts/camaleon_cms/admin/_flash_messages.html.erb +43 -0
  539. data/app/views/layouts/camaleon_cms/admin/_footer.html.erb +13 -0
  540. data/app/views/layouts/camaleon_cms/admin/_form_error.html.erb +10 -0
  541. data/app/views/layouts/camaleon_cms/admin/_header.html.erb +51 -0
  542. data/app/views/layouts/camaleon_cms/admin/_sidebar.html.erb +19 -0
  543. data/app/views/layouts/camaleon_cms/admin/installer.html.erb +35 -0
  544. data/app/views/layouts/camaleon_cms/application.html.erb +15 -0
  545. data/app/views/layouts/camaleon_cms/login.html.erb +22 -0
  546. data/app/views/layouts/camaleon_cms/mailer.html.erb +22 -0
  547. data/config/initializers/action_view.rb +56 -0
  548. data/config/initializers/active_record_extension.rb +104 -0
  549. data/config/initializers/assets.rb +27 -0
  550. data/config/initializers/custom_initializers.rb +10 -0
  551. data/config/initializers/mobu.rb +24 -0
  552. data/config/initializers/model_alias.rb +18 -0
  553. data/config/initializers/sass.rb +52 -0
  554. data/config/locales/ar.yml +275 -0
  555. data/config/locales/camaleon_cms/admin/ar.yml +683 -0
  556. data/config/locales/camaleon_cms/admin/de.yml +682 -0
  557. data/config/locales/camaleon_cms/admin/en.yml +682 -0
  558. data/config/locales/camaleon_cms/admin/es.yml +654 -0
  559. data/config/locales/camaleon_cms/admin/fr.yml +663 -0
  560. data/config/locales/camaleon_cms/admin/it.yml +633 -0
  561. data/config/locales/camaleon_cms/admin/js.yml +435 -0
  562. data/config/locales/camaleon_cms/admin/nl.yml +659 -0
  563. data/config/locales/camaleon_cms/admin/pt-BR.yml +643 -0
  564. data/config/locales/camaleon_cms/admin/pt.yml +641 -0
  565. data/config/locales/camaleon_cms/admin/ru.yml +670 -0
  566. data/config/locales/camaleon_cms/admin/uk.yml +670 -0
  567. data/config/locales/camaleon_cms/admin/zh-CH.yml +703 -0
  568. data/config/locales/camaleon_cms/common.yml +784 -0
  569. data/config/locales/camaleon_cms/languages.yml +167 -0
  570. data/config/locales/camaleon_cms/routes.yml +71 -0
  571. data/config/locales/de.yml +210 -0
  572. data/config/locales/en.yml +207 -0
  573. data/config/locales/es.yml +198 -0
  574. data/config/locales/fr.yml +207 -0
  575. data/config/locales/it.yml +205 -0
  576. data/config/locales/nl.yml +209 -0
  577. data/config/locales/pl.yml +237 -0
  578. data/config/locales/pt-BR.yml +203 -0
  579. data/config/locales/pt.yml +201 -0
  580. data/config/locales/ru.yml +207 -0
  581. data/config/locales/uk.yml +257 -0
  582. data/config/locales/zh-CH.yml +194 -0
  583. data/config/routes.rb +11 -0
  584. data/config/routes/admin.rb +148 -0
  585. data/config/routes/frontend.rb +96 -0
  586. data/config/system.json +19 -0
  587. data/db/migrate/20150611161134_post_table_into_utf8.rb +124 -0
  588. data/db/migrate/20150926095310_rename_column_posts.rb +18 -0
  589. data/db/migrate/20151212095328_add_confirm_token_to_users.rb +7 -0
  590. data/db/migrate/20160504155652_add_feature_to_posts.rb +5 -0
  591. data/db/migrate/20160504155653_move_first_name_of_users.rb +9 -0
  592. data/db/migrate/20160606135421_improve_menus_structure.rb +7 -0
  593. data/db/migrate/20160609121449_add_group_to_custom_field_values.rb +5 -0
  594. data/db/migrate/20161206211917_install_migrated_seo_plugin.rb +8 -0
  595. data/db/migrate/20161215202255_drop_user_relationship_table.rb +5 -0
  596. data/db/migrate/20180124132318_create_media.rb +17 -0
  597. data/db/migrate/20180704211100_adjust_field_length.rb +10 -0
  598. data/lib/camaleon_cms.rb +5 -0
  599. data/lib/camaleon_cms/engine.rb +84 -0
  600. data/lib/camaleon_cms/version.rb +3 -0
  601. data/lib/captcha/bumpyroad.ttf +0 -0
  602. data/lib/captcha/captcha_0.jpg +0 -0
  603. data/lib/captcha/captcha_1.jpg +0 -0
  604. data/lib/captcha/captcha_10.jpg +0 -0
  605. data/lib/captcha/captcha_11.jpg +0 -0
  606. data/lib/captcha/captcha_2.jpg +0 -0
  607. data/lib/captcha/captcha_3.jpg +0 -0
  608. data/lib/captcha/captcha_4.jpg +0 -0
  609. data/lib/captcha/captcha_5.jpg +0 -0
  610. data/lib/captcha/captcha_6.jpg +0 -0
  611. data/lib/captcha/captcha_7.jpg +0 -0
  612. data/lib/captcha/captcha_8.jpg +0 -0
  613. data/lib/captcha/captcha_9.jpg +0 -0
  614. data/lib/ext/array.rb +59 -0
  615. data/lib/ext/hash.rb +41 -0
  616. data/lib/ext/string.rb +162 -0
  617. data/lib/ext/translator.rb +84 -0
  618. data/lib/generators/camaleon_cms/gem_plugin_generator.rb +140 -0
  619. data/lib/generators/camaleon_cms/gem_plugin_template/app/controllers/plugins/my_plugin/admin_controller.rb +18 -0
  620. data/lib/generators/camaleon_cms/gem_plugin_template/app/controllers/plugins/my_plugin/front_controller.rb +8 -0
  621. data/lib/generators/camaleon_cms/gem_plugin_template/app/helpers/plugins/my_plugin/main_helper.rb +29 -0
  622. data/lib/generators/camaleon_cms/gem_plugin_template/app/models/plugins/my_plugin/my_plugin.rb +6 -0
  623. data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/admin/index.html.erb +9 -0
  624. data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/admin/settings.html.erb +21 -0
  625. data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/front/index.html.erb +2 -0
  626. data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/layouts/readme.txt +2 -0
  627. data/lib/generators/camaleon_cms/gem_plugin_template/config/camaleon_plugin.json +14 -0
  628. data/lib/generators/camaleon_cms/gem_plugin_template/config/initializers/custom_models.rb +5 -0
  629. data/lib/generators/camaleon_cms/install_generator.rb +43 -0
  630. data/lib/generators/camaleon_cms/install_template/apps/themes/readme.txt +0 -0
  631. data/lib/generators/camaleon_cms/install_template/plugin_routes.rb +22 -0
  632. data/lib/generators/camaleon_cms/install_template/system.json +11 -0
  633. data/lib/generators/camaleon_cms/theme_generator.rb +66 -0
  634. data/lib/generators/camaleon_cms/theme_template/assets/css/main.css +13 -0
  635. data/lib/generators/camaleon_cms/theme_template/assets/images/image.png +0 -0
  636. data/lib/generators/camaleon_cms/theme_template/assets/js/main.js +14 -0
  637. data/lib/generators/camaleon_cms/theme_template/config/config.json +14 -0
  638. data/lib/generators/camaleon_cms/theme_template/main_helper.rb +27 -0
  639. data/lib/generators/camaleon_cms/theme_template/views/admin/settings.html.erb +2 -0
  640. data/lib/generators/camaleon_cms/theme_template/views/index.html.erb +1 -0
  641. data/lib/generators/camaleon_cms/theme_template/views/layouts/index.html.erb +69 -0
  642. data/lib/generators/camaleon_cms/theme_template/views/partials/readme.txt +1 -0
  643. data/lib/plugin_routes.rb +439 -0
  644. data/lib/tasks/camaleon_cms/camaleon_tasks.rake +30 -0
  645. data/lib/tasks/camaleon_cms/rspec_test.rake +20 -0
  646. data/spec/dummy/README.rdoc +28 -0
  647. data/spec/dummy/Rakefile +6 -0
  648. data/spec/dummy/app/assets/config/manifest.js +8 -0
  649. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  650. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  651. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  652. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  653. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  654. data/spec/dummy/bin/bundle +3 -0
  655. data/spec/dummy/bin/rails +4 -0
  656. data/spec/dummy/bin/rake +4 -0
  657. data/spec/dummy/bin/setup +36 -0
  658. data/spec/dummy/bin/update +31 -0
  659. data/spec/dummy/bin/yarn +11 -0
  660. data/spec/dummy/config.ru +4 -0
  661. data/spec/dummy/config/application.rb +27 -0
  662. data/spec/dummy/config/boot.rb +5 -0
  663. data/spec/dummy/config/database.yml +25 -0
  664. data/spec/dummy/config/environment.rb +5 -0
  665. data/spec/dummy/config/environments/development.rb +41 -0
  666. data/spec/dummy/config/environments/production.rb +79 -0
  667. data/spec/dummy/config/environments/test.rb +44 -0
  668. data/spec/dummy/config/initializers/assets.rb +11 -0
  669. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  670. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  671. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  672. data/spec/dummy/config/initializers/inflections.rb +16 -0
  673. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  674. data/spec/dummy/config/initializers/session_store.rb +3 -0
  675. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  676. data/spec/dummy/config/locales/en.yml +23 -0
  677. data/spec/dummy/config/routes.rb +4 -0
  678. data/spec/dummy/config/secrets.yml +22 -0
  679. data/spec/dummy/db/schema.rb +186 -0
  680. data/spec/factories/post.rb +44 -0
  681. data/spec/factories/post_type.rb +9 -0
  682. data/spec/factories/site.rb +18 -0
  683. data/spec/factories/user.rb +19 -0
  684. data/spec/features/admin/categories_spec.rb +25 -0
  685. data/spec/features/admin/comments_spec.rb +52 -0
  686. data/spec/features/admin/contact_form_spec.rb +60 -0
  687. data/spec/features/admin/content_groups_spec.rb +53 -0
  688. data/spec/features/admin/custom_fields_spec.rb +49 -0
  689. data/spec/features/admin/languages_spec.rb +37 -0
  690. data/spec/features/admin/media_spec.rb +50 -0
  691. data/spec/features/admin/menus_spec.rb +50 -0
  692. data/spec/features/admin/pages_spec.rb +35 -0
  693. data/spec/features/admin/plugins_spec.rb +29 -0
  694. data/spec/features/admin/posts_spec.rb +37 -0
  695. data/spec/features/admin/session_spec.rb +102 -0
  696. data/spec/features/admin/settings_spec.rb +17 -0
  697. data/spec/features/admin/shortcodes_spec.rb +11 -0
  698. data/spec/features/admin/sites_spec.rb +53 -0
  699. data/spec/features/admin/tags_spec.rb +34 -0
  700. data/spec/features/admin/themes_spec.rb +18 -0
  701. data/spec/features/admin/user_roles_spec.rb +66 -0
  702. data/spec/features/admin/users_spec.rb +81 -0
  703. data/spec/features/admin/widgets_spec.rb +59 -0
  704. data/spec/features/frontend/pages_spec.rb +136 -0
  705. data/spec/features/frontend/post_type_spec.rb +16 -0
  706. data/spec/helpers/email_helper_spec.rb +16 -0
  707. data/spec/helpers/short_code_helper_spec.rb +64 -0
  708. data/spec/helpers/uploader_helper_spec.rb +56 -0
  709. data/spec/mailers/send_mail_spec.rb +37 -0
  710. data/spec/models/post_spec.rb +50 -0
  711. data/spec/models/user_spec.rb +12 -0
  712. data/spec/rails_helper.rb +50 -0
  713. data/spec/routing/post_type_routes_spec.rb +12 -0
  714. data/spec/spec_helper.rb +167 -0
  715. data/spec/support/capybara_normalize_whitespace_patch.rb +17 -0
  716. data/spec/support/common.rb +119 -0
  717. data/spec/support/fixtures/rails.png +0 -0
  718. data/spec/support/wait_for_ajax.rb +30 -0
  719. metadata +1213 -0
@@ -0,0 +1,123 @@
1
+ /*! jQuery Validation Plugin - v1.15.0 - 2/24/2016
2
+ * http://jqueryvalidation.org/
3
+ * Copyright (c) 2016 Jörn Zaefferer; Licensed MIT */
4
+ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.settings.submitHandler?(c.submitButton&&(d=a("<input type='hidden'/>").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),e=c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),void 0!==e?e:!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){if(this.length){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(b,c){i[c]=f[c],delete f[c],"required"===c&&a(j).removeAttr("aria-required")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr("aria-required","true")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){var c=a(b).val();return null!==c&&!!a.trim(""+c)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||-1!==a.inArray(c.keyCode,d)||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date ( ISO ).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable]",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler),a(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required","true")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=h&&g.check(e)))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)a[b]&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0]),d in c||!b.objectLength(a(this).rules())?!1:(c[d]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type;return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=b.hasAttribute("contenteditable")?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);if("function"==typeof f.normalizer){if(i=f.normalizer.call(b,i),"string"!=typeof i)throw new TypeError("The normalizer should return a string value.");delete f.normalizer}for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),"dependency-mismatch"===c&&1===g){h=!0;continue}if(h=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",j),j instanceof TypeError&&(j.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]},defaultMessage:function(b,c){var d=this.findDefined(this.customMessage(b.name,c.method),this.customDataMessage(b,c.method),!this.settings.ignoreTitle&&b.title||void 0,a.validator.messages[c.method],"<strong>Warning: No message defined for "+b.name+"</strong>"),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(d,e){b[d]=a.isFunction(e)&&"normalizer"!==d?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.| |_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e=a(c).attr("type"),f="Step attribute on input type "+e+" is not supported.",g=["text","number","range"],h=new RegExp("\\b"+e+"\\b"),i=e&&!h.test(g.join());if(i)throw new Error(f);return this.optional(c)||b%d===0},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)})});
5
+
6
+ //***************customization*****************/
7
+ // jquery custom validations and default values
8
+ jQuery(function(){
9
+ // file formats
10
+ $.file_formats = {
11
+ jpg: "image",
12
+ gif: "image",
13
+ png: "image",
14
+ bmp: "image",
15
+ jpeg: "image",
16
+
17
+ mp3: "audio",
18
+ ogg: "audio",
19
+ mid: "audio",
20
+ mod: "audio",
21
+ wav: "audio",
22
+
23
+ mp4: "video",
24
+ wmv: "video",
25
+ avi: "video",
26
+ swf: "video",
27
+ mov: "video",
28
+ mpeg: "video",
29
+ mjpg: "video",
30
+
31
+ pdf: 'document',
32
+ xls: 'document',
33
+ xlsx: 'document',
34
+ doc: 'document',
35
+ docx: 'document',
36
+ ppt: 'document',
37
+ pptx: 'document',
38
+ html: 'document',
39
+ htm: 'document',
40
+ txt: 'document',
41
+
42
+ zip: 'compress',
43
+ "7z": 'compress',
44
+ rar: 'compress',
45
+ tar: 'compress',
46
+ bz2: 'compress',
47
+ gz: 'compress',
48
+ rar2: 'compress'
49
+ }
50
+
51
+ // return the video id of a video url
52
+ // http://lasnv.net/foro/839/Javascript_parsear_URL_de_YouTube
53
+ $.cama_youtube_key = function(url){
54
+ var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
55
+ var match = url.match(regExp);
56
+ var b = false;
57
+ if (match&&match[7].length==11){
58
+ b=match[7];
59
+ }
60
+ return b;
61
+ }
62
+
63
+ // verify the url for youtube, vimeo...
64
+ // return youtube | metcafe|dailymotion|vimeo
65
+ $.cama_check_video_url = function (url) {
66
+ var regYoutube = new RegExp(/^.*((youtu.be\/)|(v\/)|(\/u\/w\/)|(embed\/)|(watch?))??v?=?([^#&?]*).*/);
67
+ var regVimeo = new RegExp(/^.*(vimeo.com\/)((channels\/[A-z]+\/)|(groups\/[A-z]+\/videos\/))?([0-9]+)/);
68
+ var regDailymotion = new RegExp(/^.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/);
69
+ var regMetacafe = new RegExp(/^.*(metacafe.com)(\/watch\/)(d+)(.*)/i);
70
+ if (regYoutube.test(url)) {
71
+ return 'youtube';
72
+ } else if (regMetacafe.test(url)) {
73
+ return 'metacafe';
74
+ } else if (regDailymotion.test(url)) {
75
+ return 'dailymotion';
76
+ } else if (regVimeo.test(url)) {
77
+ return 'vimeo';
78
+ } else {
79
+ return false;
80
+ }
81
+ }
82
+
83
+ // helper validate only letters latin
84
+ var regex = /^[a-z\sÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏàáâãäåæçèéêëìíîïÐÑÒÓÔÕÖØÙÚÛÜÝÞßðñòóôõöøùúûüýþÿ]+$/i;
85
+ jQuery.validator.addMethod("lettersonly", function (value, element) {
86
+ return this.optional(element) || regex.test(value);
87
+ }, "Only alphabetical characters");
88
+
89
+ /************ Custom jquery validation as defaults ***************/
90
+ jQuery.validator.setDefaults({
91
+ focusInvalid: true,
92
+ ignore: ".translated-item",
93
+ errorPlacement: function (a, b) {
94
+ if (!a.text()) return;
95
+ if (b.parent().hasClass('trans_tab_item')) $("a[href='#" + b.parent().attr('id') + "']").trigger('click'); // tabs
96
+ if (b.attr("data-error-place") && $(b.attr("data-error-place")).length) $(b.attr("data-error-place")).html(a);
97
+ else if(b.hasClass('data-error-place-parent')) b.parent().parent().append(a);
98
+ else if(b.hasClass('data-error-place-parent2')) b.parent().parent().parent().append(a);
99
+ else b.parent().append(a);
100
+ },
101
+ highlight: function(element, errorClass){ //fix for error fields in hidden tab
102
+ var tab = "";
103
+ if(!$(element).is(":visible") && (tab = $(element).closest(".tab-pane")).length && tab.attr("id")){
104
+ tab.closest(".tabs, .nav-tabs").find(" > ul a[href='#"+tab.attr("id")+"']").click();
105
+ }
106
+ }
107
+ });
108
+
109
+ // validate file extension defined in data-formats
110
+ // data-formats: (default '') image | audio | video (support also external youtube metacafe, dailymotion, vimeo) | or file extension like: jpg|png
111
+ $.validator.addMethod("file_format", function (value, element) {
112
+ var formats = $(element).attr("data-formats");
113
+ var ext = value.split(".").pop().toLowerCase();
114
+ if (formats && value)
115
+ return ($.inArray("video", formats.split(",")) >= 0 && $.cama_check_video_url(value)) || $.inArray($.file_formats[ext], formats.split(",")) >= 0 || $.inArray(ext, formats.split(",")) >= 0
116
+
117
+ return true;
118
+ }, "File format not accepted.");
119
+ jQuery.validator.addClassRules({
120
+ file_format: {file_format: true}
121
+ });
122
+ $('form.cama_form_validate').validate();
123
+ });
@@ -0,0 +1,20 @@
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: DE (German, Deutsch)
4
+ */
5
+ $.extend( $.validator.messages, {
6
+ required: "Dieses Feld ist ein Pflichtfeld.",
7
+ maxlength: $.validator.format( "Geben Sie bitte maximal {0} Zeichen ein." ),
8
+ minlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),
9
+ rangelength: $.validator.format( "Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein." ),
10
+ email: "Geben Sie bitte eine gültige E-Mail Adresse ein.",
11
+ url: "Geben Sie bitte eine gültige URL ein.",
12
+ date: "Bitte geben Sie ein gültiges Datum ein.",
13
+ number: "Geben Sie bitte eine Nummer ein.",
14
+ digits: "Geben Sie bitte nur Ziffern ein.",
15
+ equalTo: "Bitte denselben Wert wiederholen.",
16
+ range: $.validator.format( "Geben Sie bitte einen Wert zwischen {0} und {1} ein." ),
17
+ max: $.validator.format( "Geben Sie bitte einen Wert kleiner oder gleich {0} ein." ),
18
+ min: $.validator.format( "Geben Sie bitte einen Wert größer oder gleich {0} ein." ),
19
+ creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein."
20
+ } );
@@ -0,0 +1,27 @@
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: ES (Spanish; Español)
4
+ */
5
+ $.extend($.validator.messages, {
6
+ required: "Este campo es obligatorio.",
7
+ remote: "Por favor, rellena este campo.",
8
+ email: "Por favor, escribe una dirección de correo válida.",
9
+ url: "Por favor, escribe una URL válida.",
10
+ date: "Por favor, escribe una fecha válida.",
11
+ dateISO: "Por favor, escribe una fecha (ISO) válida.",
12
+ number: "Por favor, escribe un número válido.",
13
+ digits: "Por favor, escribe sólo dígitos.",
14
+ creditcard: "Por favor, escribe un número de tarjeta válido.",
15
+ equalTo: "Por favor, escribe el mismo valor de nuevo.",
16
+ extension: "Por favor, escribe un valor con una extensión aceptada.",
17
+ maxlength: $.validator.format("Por favor, no escribas más de {0} caracteres."),
18
+ minlength: $.validator.format("Por favor, no escribas menos de {0} caracteres."),
19
+ rangelength: $.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."),
20
+ range: $.validator.format("Por favor, escribe un valor entre {0} y {1}."),
21
+ max: $.validator.format("Por favor, escribe un valor menor o igual a {0}."),
22
+ min: $.validator.format("Por favor, escribe un valor mayor o igual a {0}."),
23
+ nifES: "Por favor, escribe un NIF válido.",
24
+ nieES: "Por favor, escribe un NIE válido.",
25
+ cifES: "Por favor, escribe un CIF válido.",
26
+ file_format: "Formato de archivo no permitido."
27
+ });
@@ -0,0 +1,49 @@
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: FR (French; français)
4
+ */
5
+ $.extend( $.validator.messages, {
6
+ required: "Ce champ est obligatoire.",
7
+ remote: "Veuillez corriger ce champ.",
8
+ email: "Veuillez fournir une adresse électronique valide.",
9
+ url: "Veuillez fournir une adresse URL valide.",
10
+ date: "Veuillez fournir une date valide.",
11
+ dateISO: "Veuillez fournir une date valide (ISO).",
12
+ number: "Veuillez fournir un numéro valide.",
13
+ digits: "Veuillez fournir seulement des chiffres.",
14
+ creditcard: "Veuillez fournir un numéro de carte de crédit valide.",
15
+ equalTo: "Veuillez fournir encore la même valeur.",
16
+ extension: "Veuillez fournir une valeur avec une extension valide.",
17
+ maxlength: $.validator.format( "Veuillez fournir au plus {0} caractères." ),
18
+ minlength: $.validator.format( "Veuillez fournir au moins {0} caractères." ),
19
+ rangelength: $.validator.format( "Veuillez fournir une valeur qui contient entre {0} et {1} caractères." ),
20
+ range: $.validator.format( "Veuillez fournir une valeur entre {0} et {1}." ),
21
+ max: $.validator.format( "Veuillez fournir une valeur inférieure ou égale à {0}." ),
22
+ min: $.validator.format( "Veuillez fournir une valeur supérieure ou égale à {0}." ),
23
+ maxWords: $.validator.format( "Veuillez fournir au plus {0} mots." ),
24
+ minWords: $.validator.format( "Veuillez fournir au moins {0} mots." ),
25
+ rangeWords: $.validator.format( "Veuillez fournir entre {0} et {1} mots." ),
26
+ letterswithbasicpunc: "Veuillez fournir seulement des lettres et des signes de ponctuation.",
27
+ alphanumeric: "Veuillez fournir seulement des lettres, nombres, espaces et soulignages.",
28
+ lettersonly: "Veuillez fournir seulement des lettres.",
29
+ nowhitespace: "Veuillez ne pas inscrire d'espaces blancs.",
30
+ ziprange: "Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.",
31
+ integer: "Veuillez fournir un nombre non décimal qui est positif ou négatif.",
32
+ vinUS: "Veuillez fournir un numéro d'identification du véhicule (VIN).",
33
+ dateITA: "Veuillez fournir une date valide.",
34
+ time: "Veuillez fournir une heure valide entre 00:00 et 23:59.",
35
+ phoneUS: "Veuillez fournir un numéro de téléphone valide.",
36
+ phoneUK: "Veuillez fournir un numéro de téléphone valide.",
37
+ mobileUK: "Veuillez fournir un numéro de téléphone mobile valide.",
38
+ strippedminlength: $.validator.format( "Veuillez fournir au moins {0} caractères." ),
39
+ email2: "Veuillez fournir une adresse électronique valide.",
40
+ url2: "Veuillez fournir une adresse URL valide.",
41
+ creditcardtypes: "Veuillez fournir un numéro de carte de crédit valide.",
42
+ ipv4: "Veuillez fournir une adresse IP v4 valide.",
43
+ ipv6: "Veuillez fournir une adresse IP v6 valide.",
44
+ require_from_group: "Veuillez fournir au moins {0} de ces champs.",
45
+ nifES: "Veuillez fournir un numéro NIF valide.",
46
+ nieES: "Veuillez fournir un numéro NIE valide.",
47
+ cifES: "Veuillez fournir un numéro CIF valide.",
48
+ postalCodeCA: "Veuillez fournir un code postal valide."
49
+ } );
@@ -0,0 +1,23 @@
1
+ $.extend($.validator.messages, {
2
+ required: "Questo campo è obbligatorio.",
3
+ remote: "Si prega di compilare questo campo.",
4
+ email: "Inserire un indirizzo email valido.",
5
+ url: "Inserire una URL valida.",
6
+ date: "Inserire una data valida.",
7
+ dateISO: "Inserire una data (ISO) valida.",
8
+ number: "Inserire un numero valido.",
9
+ digits: "Inserisci solo cifre.",
10
+ creditcard: "Inserire una tessera valida.",
11
+ equalTo: "Inserisci di nuovo lo stesso valore.",
12
+ extension: "Inserisci un valore con un'estensione valida.",
13
+ maxlength: $.validator.format("Non scrivere più di {0} caratteri."),
14
+ minlength: $.validator.format("Non scrivere meno di {0} caratteri."),
15
+ rangelength: $.validator.format("Inserisci un valore compreso tra {0} e {1} caratteri."),
16
+ range: $.validator.format("Inserisci un valore tra {0} e {1}."),
17
+ max: $.validator.format("Inserisci un valore minore o uguale a {0}."),
18
+ min: $.validator.format("Inserisci un valore maggiore o uguale a {0}."),
19
+ nifES: "Inserisci un NIF valido.",
20
+ nieES: "Inserisci un NIE valido.",
21
+ cifES: "Inserisci un CIF valido.",
22
+ file_format: "Formato archivio non permesso."
23
+ });
@@ -0,0 +1,33 @@
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: NL (Dutch; Nederlands, Vlaams)
4
+ */
5
+ $.extend( $.validator.messages, {
6
+ required: "Dit is een verplicht veld.",
7
+ remote: "Controleer dit veld.",
8
+ email: "Vul hier een geldig e-mailadres in.",
9
+ url: "Vul hier een geldige URL in.",
10
+ date: "Vul hier een geldige datum in.",
11
+ dateISO: "Vul hier een geldige datum in (ISO-formaat).",
12
+ number: "Vul hier een geldig getal in.",
13
+ digits: "Vul hier alleen getallen in.",
14
+ creditcard: "Vul hier een geldig creditcardnummer in.",
15
+ equalTo: "Vul hier dezelfde waarde in.",
16
+ extension: "Vul hier een waarde in met een geldige extensie.",
17
+ maxlength: $.validator.format( "Vul hier maximaal {0} tekens in." ),
18
+ minlength: $.validator.format( "Vul hier minimaal {0} tekens in." ),
19
+ rangelength: $.validator.format( "Vul hier een waarde in van minimaal {0} en maximaal {1} tekens." ),
20
+ range: $.validator.format( "Vul hier een waarde in van minimaal {0} en maximaal {1}." ),
21
+ max: $.validator.format( "Vul hier een waarde in kleiner dan of gelijk aan {0}." ),
22
+ min: $.validator.format( "Vul hier een waarde in groter dan of gelijk aan {0}." ),
23
+
24
+ // For validations in additional-methods.js
25
+ iban: "Vul hier een geldig IBAN in.",
26
+ dateNL: "Vul hier een geldige datum in.",
27
+ phoneNL: "Vul hier een geldig Nederlands telefoonnummer in.",
28
+ mobileNL: "Vul hier een geldig Nederlands mobiel telefoonnummer in.",
29
+ postalcodeNL: "Vul hier een geldige postcode in.",
30
+ bankaccountNL: "Vul hier een geldig bankrekeningnummer in.",
31
+ giroaccountNL: "Vul hier een geldig gironummer in.",
32
+ bankorgiroaccountNL: "Vul hier een geldig bank- of gironummer in."
33
+ } );
@@ -0,0 +1,74 @@
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: PT (Portuguese; português)
4
+ * Region: BR (Brazil)
5
+ */
6
+ $.extend( $.validator.messages, {
7
+ //Core
8
+ required: "Este campo &eacute; requerido.",
9
+ remote: "Por favor, corrija este campo.",
10
+ email: "Por favor, forne&ccedil;a um endere&ccedil;o de email v&aacute;lido.",
11
+ url: "Por favor, forne&ccedil;a uma URL v&aacute;lida.",
12
+ date: "Por favor, forne&ccedil;a uma data v&aacute;lida.",
13
+ dateISO: "Por favor, forne&ccedil;a uma data v&aacute;lida (ISO).",
14
+ number: "Por favor, forne&ccedil;a um n&uacute;mero v&aacute;lido.",
15
+ digits: "Por favor, forne&ccedil;a somente d&iacute;gitos.",
16
+ creditcard: "Por favor, forne&ccedil;a um cart&atilde;o de cr&eacute;dito v&aacute;lido.",
17
+ equalTo: "Por favor, forne&ccedil;a o mesmo valor novamente.",
18
+ maxlength: $.validator.format( "Por favor, forne&ccedil;a n&atilde;o mais que {0} caracteres." ),
19
+ minlength: $.validator.format( "Por favor, forne&ccedil;a ao menos {0} caracteres." ),
20
+ rangelength: $.validator.format( "Por favor, forne&ccedil;a um valor entre {0} e {1} caracteres de comprimento." ),
21
+ range: $.validator.format( "Por favor, forne&ccedil;a um valor entre {0} e {1}." ),
22
+ max: $.validator.format( "Por favor, forne&ccedil;a um valor menor ou igual a {0}." ),
23
+ min: $.validator.format( "Por favor, forne&ccedil;a um valor maior ou igual a {0}." ),
24
+
25
+ // Metodos Adicionais
26
+ maxWords: $.validator.format( "Por favor, forne&ccedil;a com {0} palavras ou menos." ),
27
+ minWords: $.validator.format( "Por favor, forne&ccedil;a pelo menos {0} palavras." ),
28
+ rangeWords: $.validator.format( "Por favor, forne&ccedil;a entre {0} e {1} palavras." ),
29
+ accept: "Por favor, forne&ccedil;a um tipo v&aacute;lido.",
30
+ alphanumeric: "Por favor, forne&ccedil;a somente com letras, n&uacute;meros e sublinhados.",
31
+ bankaccountNL: "Por favor, forne&ccedil;a com um n&uacute;mero de conta banc&aacute;ria v&aacute;lida.",
32
+ bankorgiroaccountNL: "Por favor, forne&ccedil;a um banco v&aacute;lido ou n&uacute;mero de conta.",
33
+ bic: "Por favor, forne&ccedil;a um c&oacute;digo BIC v&aacute;lido.",
34
+ cifES: "Por favor, forne&ccedil;a um c&oacute;digo CIF v&aacute;lido.",
35
+ creditcardtypes: "Por favor, forne&ccedil;a um n&uacute;mero de cart&atilde;o de cr&eacute;dito v&aacute;lido.",
36
+ currency: "Por favor, forne&ccedil;a uma moeda v&aacute;lida.",
37
+ dateFA: "Por favor, forne&ccedil;a uma data correta.",
38
+ dateITA: "Por favor, forne&ccedil;a uma data correta.",
39
+ dateNL: "Por favor, forne&ccedil;a uma data correta.",
40
+ extension: "Por favor, forne&ccedil;a um valor com uma extens&atilde;o v&aacute;lida.",
41
+ giroaccountNL: "Por favor, forne&ccedil;a um n&uacute;mero de conta corrente v&aacute;lido.",
42
+ iban: "Por favor, forne&ccedil;a um c&oacute;digo IBAN v&aacute;lido.",
43
+ integer: "Por favor, forne&ccedil;a um n&uacute;mero n&atilde;o decimal.",
44
+ ipv4: "Por favor, forne&ccedil;a um IPv4 v&aacute;lido.",
45
+ ipv6: "Por favor, forne&ccedil;a um IPv6 v&aacute;lido.",
46
+ lettersonly: "Por favor, forne&ccedil;a apenas com letras.",
47
+ letterswithbasicpunc: "Por favor, forne&ccedil;a apenas letras ou pontua&ccedil;ões.",
48
+ mobileNL: "Por favor, fornece&ccedil;a um n&uacute;mero v&aacute;lido de telefone.",
49
+ mobileUK: "Por favor, fornece&ccedil;a um n&uacute;mero v&aacute;lido de telefone.",
50
+ nieES: "Por favor, forne&ccedil;a um NIE v&aacute;lido.",
51
+ nifES: "Por favor, forne&ccedil;a um NIF v&aacute;lido.",
52
+ nowhitespace: "Por favor, n&atilde;o utilize espa&ccedil;os em branco.",
53
+ pattern: "O formato fornenecido &eacute; inv&aacute;lido.",
54
+ phoneNL: "Por favor, fornece&ccedil;a um n&uacute;mero de telefone v&aacute;lido.",
55
+ phoneUK: "Por favor, fornece&ccedil;a um n&uacute;mero de telefone v&aacute;lido.",
56
+ phoneUS: "Por favor, fornece&ccedil;a um n&uacute;mero de telefone v&aacute;lido.",
57
+ phonesUK: "Por favor, fornece&ccedil;a um n&uacute;mero de telefone v&aacute;lido.",
58
+ postalCodeCA: "Por favor, fornece&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.",
59
+ postalcodeIT: "Por favor, fornece&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.",
60
+ postalcodeNL: "Por favor, fornece&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.",
61
+ postcodeUK: "Por favor, fornece&ccedil;a um n&uacute;mero de c&oacute;digo postal v&aacute;lido.",
62
+ postalcodeBR: "Por favor, forne&ccedil;a um CEP v&aacute;lido.",
63
+ require_from_group: $.validator.format( "Por favor, forne&ccedil;a pelo menos {0} destes campos." ),
64
+ skip_or_fill_minimum: $.validator.format( "Por favor, optar entre ignorar esses campos ou preencher pelo menos {0} deles." ),
65
+ stateUS: "Por favor, forne&ccedil;a um estado v&aacute;lido.",
66
+ strippedminlength: $.validator.format( "Por favor, forne&ccedil;a pelo menos {0} caracteres." ),
67
+ time: "Por favor, forne&ccedil;a um hor&aacute;rio v&aacute;lido, no intervado de 00:00 e 23:59.",
68
+ time12h: "Por favor, forne&ccedil;a um hor&aacute;rio v&aacute;lido, no intervado de 01:00 e 12:59 am/pm.",
69
+ url2: "Por favor, fornece&ccedil;a uma URL v&aacute;lida.",
70
+ vinUS: "O n&uacute;mero de identifica&ccedil;&atilde;o de ve&iacute;culo informada (VIN) &eacute; inv&aacute;lido.",
71
+ zipcodeUS: "Por favor, fornece&ccedil;a um c&oacute;digo postal americano v&aacute;lido.",
72
+ ziprange: "O c&oacute;digo postal deve estar entre 902xx-xxxx e 905xx-xxxx",
73
+ cpfBR: "Por favor, forne&ccedil;a um CPF v&aacute;lido."
74
+ } );
@@ -0,0 +1,19 @@
1
+ $.extend( $.validator.messages, {
2
+ required: "Это поле необходимо заполнить.",
3
+ remote: "Пожалуйста, введите правильное значение.",
4
+ email: "Пожалуйста, введите корректный адрес электронной почты.",
5
+ url: "Пожалуйста, введите корректный URL.",
6
+ date: "Пожалуйста, введите корректную дату.",
7
+ dateISO: "Пожалуйста, введите корректную дату в формате ISO.",
8
+ number: "Пожалуйста, введите число.",
9
+ digits: "Пожалуйста, вводите только цифры.",
10
+ creditcard: "Пожалуйста, введите правильный номер кредитной карты.",
11
+ equalTo: "Пожалуйста, введите такое же значение ещё раз.",
12
+ extension: "Пожалуйста, выберите файл с правильным расширением.",
13
+ maxlength: $.validator.format( "Пожалуйста, введите не больше {0} символов." ),
14
+ minlength: $.validator.format( "Пожалуйста, введите не меньше {0} символов." ),
15
+ rangelength: $.validator.format( "Пожалуйста, введите значение длиной от {0} до {1} символов." ),
16
+ range: $.validator.format( "Пожалуйста, введите число от {0} до {1}." ),
17
+ max: $.validator.format( "Пожалуйста, введите число, меньшее или равное {0}." ),
18
+ min: $.validator.format( "Пожалуйста, введите число, большее или равное {0}." )
19
+ } );
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: UK (Ukrainian; українська мова)
4
+ */
5
+ $.extend( $.validator.messages, {
6
+ required: "Це поле необхідно заповнити.",
7
+ remote: "Будь ласка, введіть правильне значення.",
8
+ email: "Будь ласка, введіть коректну адресу електронної пошти.",
9
+ url: "Будь ласка, введіть коректний URL.",
10
+ date: "Будь ласка, введіть коректну дату.",
11
+ dateISO: "Будь ласка, введіть коректну дату у форматі ISO.",
12
+ number: "Будь ласка, введіть число.",
13
+ digits: "Вводите потрібно лише цифри.",
14
+ creditcard: "Будь ласка, введіть правильний номер кредитної карти.",
15
+ equalTo: "Будь ласка, введіть таке ж значення ще раз.",
16
+ extension: "Будь ласка, виберіть файл з правильним розширенням.",
17
+ maxlength: $.validator.format( "Будь ласка, введіть не більше {0} символів." ),
18
+ minlength: $.validator.format( "Будь ласка, введіть не менше {0} символів." ),
19
+ rangelength: $.validator.format( "Будь ласка, введіть значення довжиною від {0} до {1} символів." ),
20
+ range: $.validator.format( "Будь ласка, введіть число від {0} до {1}." ),
21
+ max: $.validator.format( "Будь ласка, введіть число, менше або рівно {0}." ),
22
+ min: $.validator.format( "Будь ласка, введіть число, більше або рівно {0}." )
23
+ } );
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Translated default messages for the jQuery validation plugin.
3
+ * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語)
4
+ */
5
+ $.extend($.validator.messages, {
6
+ required: "这是必填字段",
7
+ remote: "请修正此字段",
8
+ email: "请输入有效的电子邮件地址",
9
+ url: "请输入有效的网址",
10
+ date: "请输入有效的日期",
11
+ dateISO: "请输入有效的日期 (YYYY-MM-DD)",
12
+ number: "请输入有效的数字",
13
+ digits: "只能输入数字",
14
+ creditcard: "请输入有效的信用卡号码",
15
+ equalTo: "你的输入不相同",
16
+ extension: "请输入有效的后缀",
17
+ maxlength: $.validator.format("最多可以输入 {0} 个字符"),
18
+ minlength: $.validator.format("最少要输入 {0} 个字符"),
19
+ rangelength: $.validator.format("请输入长度在 {0} 到 {1} 之间的字符串"),
20
+ range: $.validator.format("请输入范围在 {0} 到 {1} 之间的数值"),
21
+ max: $.validator.format("请输入不大于 {0} 的数值"),
22
+ min: $.validator.format("请输入不小于 {0} 的数值")
23
+ });
@@ -0,0 +1,758 @@
1
+ /*! AdminLTE app.js
2
+ * ================
3
+ * Main JS application file for AdminLTE v2. This file
4
+ * should be included in all pages. It controls some layout
5
+ * options and implements exclusive AdminLTE plugins.
6
+ *
7
+ * @Author Almsaeed Studio
8
+ * @Support <http://www.almsaeedstudio.com>
9
+ * @Email <support@almsaeedstudio.com>
10
+ * @version 2.3.1
11
+ * @license MIT <http://opensource.org/licenses/MIT>
12
+ */
13
+
14
+ //Make sure jQuery has been loaded before app.js
15
+ if (typeof jQuery === "undefined") {
16
+ throw new Error("AdminLTE requires jQuery");
17
+ }
18
+
19
+ /* AdminLTE
20
+ *
21
+ * @type Object
22
+ * @description $.AdminLTE is the main object for the template's app.
23
+ * It's used for implementing functions and options related
24
+ * to the template. Keeping everything wrapped in an object
25
+ * prevents conflict with other plugins and is a better
26
+ * way to organize our code.
27
+ */
28
+ $.AdminLTE = {};
29
+
30
+ /* --------------------
31
+ * - AdminLTE Options -
32
+ * --------------------
33
+ * Modify these options to suit your implementation
34
+ */
35
+ $.AdminLTE.options = {
36
+ //Add slimscroll to navbar menus
37
+ //This requires you to load the slimscroll plugin
38
+ //in every page before app.js
39
+ navbarMenuSlimscroll: true,
40
+ navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
41
+ navbarMenuHeight: "200px", //The height of the inner menu
42
+ //General animation speed for JS animated elements such as box collapse/expand and
43
+ //sidebar treeview slide up/down. This options accepts an integer as milliseconds,
44
+ //'fast', 'normal', or 'slow'
45
+ animationSpeed: 500,
46
+ //Sidebar push menu toggle button selector
47
+ sidebarToggleSelector: "[data-toggle='offcanvas']",
48
+ //Activate sidebar push menu
49
+ sidebarPushMenu: true,
50
+ //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
51
+ sidebarSlimScroll: false,
52
+ //Enable sidebar expand on hover effect for sidebar mini
53
+ //This option is forced to true if both the fixed layout and sidebar mini
54
+ //are used together
55
+ sidebarExpandOnHover: false,
56
+ //BoxRefresh Plugin
57
+ enableBoxRefresh: false,
58
+ //Bootstrap.js tooltip
59
+ enableBSToppltip: false,
60
+ BSTooltipSelector: "[data-toggle='tooltip']",
61
+ //Enable Fast Click. Fastclick.js creates a more
62
+ //native touch experience with touch devices. If you
63
+ //choose to enable the plugin, make sure you load the script
64
+ //before AdminLTE's app.js
65
+ enableFastclick: true,
66
+ //Control Sidebar Options
67
+ enableControlSidebar: true,
68
+ controlSidebarOptions: {
69
+ //Which button should trigger the open/close event
70
+ toggleBtnSelector: "[data-toggle='control-sidebar']",
71
+ //The sidebar selector
72
+ selector: ".control-sidebar",
73
+ //Enable slide over content
74
+ slide: true
75
+ },
76
+ //Box Widget Plugin. Enable this plugin
77
+ //to allow boxes to be collapsed and/or removed
78
+ enableBoxWidget: true,
79
+ //Box Widget plugin options
80
+ boxWidgetOptions: {
81
+ boxWidgetIcons: {
82
+ //Collapse icon
83
+ collapse: 'fa-minus',
84
+ //Open icon
85
+ open: 'fa-plus',
86
+ //Remove icon
87
+ remove: 'fa-times'
88
+ },
89
+ boxWidgetSelectors: {
90
+ //Remove button selector
91
+ remove: '[data-widget="remove"]',
92
+ //Collapse button selector
93
+ collapse: '[data-widget="collapse"]'
94
+ }
95
+ },
96
+ //Direct Chat plugin options
97
+ directChat: {
98
+ //Enable direct chat by default
99
+ enable: false,
100
+ //The button to open and close the chat contacts pane
101
+ contactToggleSelector: '[data-widget="chat-pane-toggle"]'
102
+ },
103
+ //Define the set of colors to use globally around the website
104
+ colors: {
105
+ lightBlue: "#3c8dbc",
106
+ red: "#f56954",
107
+ green: "#00a65a",
108
+ aqua: "#00c0ef",
109
+ yellow: "#f39c12",
110
+ blue: "#0073b7",
111
+ navy: "#001F3F",
112
+ teal: "#39CCCC",
113
+ olive: "#3D9970",
114
+ lime: "#01FF70",
115
+ orange: "#FF851B",
116
+ fuchsia: "#F012BE",
117
+ purple: "#8E24AA",
118
+ maroon: "#D81B60",
119
+ black: "#222222",
120
+ gray: "#d2d6de"
121
+ },
122
+ //The standard screen sizes that bootstrap uses.
123
+ //If you change these in the variables.less file, change
124
+ //them here too.
125
+ screenSizes: {
126
+ xs: 480,
127
+ sm: 768,
128
+ md: 992,
129
+ lg: 1200
130
+ }
131
+ };
132
+
133
+ /* ------------------
134
+ * - Implementation -
135
+ * ------------------
136
+ * The next block of code implements AdminLTE's
137
+ * functions and plugins as specified by the
138
+ * options above.
139
+ */
140
+ $(function () {
141
+ "use strict";
142
+
143
+ //Fix for IE page transitions
144
+ $("body").removeClass("hold-transition");
145
+
146
+ //Extend options if external options exist
147
+ if (typeof AdminLTEOptions !== "undefined") {
148
+ $.extend(true,
149
+ $.AdminLTE.options,
150
+ AdminLTEOptions);
151
+ }
152
+
153
+ //Easy access to options
154
+ var o = $.AdminLTE.options;
155
+
156
+ //Set up the object
157
+ _init();
158
+
159
+ //Activate the layout maker
160
+ $.AdminLTE.layout.activate();
161
+
162
+ //Enable sidebar tree view controls
163
+ $.AdminLTE.tree('.sidebar');
164
+
165
+ //Enable control sidebar
166
+ if (o.enableControlSidebar) {
167
+ $.AdminLTE.controlSidebar.activate();
168
+ }
169
+
170
+ //Add slimscroll to navbar dropdown
171
+ if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {
172
+ $(".navbar .menu").slimscroll({
173
+ height: o.navbarMenuHeight,
174
+ alwaysVisible: false,
175
+ size: o.navbarMenuSlimscrollWidth
176
+ }).css("width", "100%");
177
+ }
178
+
179
+ //Activate sidebar push menu
180
+ if (o.sidebarPushMenu) {
181
+ $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector);
182
+ }
183
+
184
+ //Activate Bootstrap tooltip
185
+ if (o.enableBSToppltip) {
186
+ $('body').tooltip({
187
+ selector: o.BSTooltipSelector
188
+ });
189
+ }
190
+
191
+ //Activate box widget
192
+ if (o.enableBoxWidget) {
193
+ $.AdminLTE.boxWidget.activate();
194
+ }
195
+
196
+ //Activate fast click
197
+ if (o.enableFastclick && typeof FastClick != 'undefined') {
198
+ FastClick.attach(document.body);
199
+ }
200
+
201
+ //Activate direct chat widget
202
+ if (o.directChat.enable) {
203
+ $(document).on('click', o.directChat.contactToggleSelector, function () {
204
+ var box = $(this).parents('.direct-chat').first();
205
+ box.toggleClass('direct-chat-contacts-open');
206
+ });
207
+ }
208
+
209
+ /*
210
+ * INITIALIZE BUTTON TOGGLE
211
+ * ------------------------
212
+ */
213
+ $('.btn-group[data-toggle="btn-toggle"]').each(function () {
214
+ var group = $(this);
215
+ $(this).find(".btn").on('click', function (e) {
216
+ group.find(".btn.active").removeClass("active");
217
+ $(this).addClass("active");
218
+ e.preventDefault();
219
+ });
220
+
221
+ });
222
+ });
223
+
224
+ /* ----------------------------------
225
+ * - Initialize the AdminLTE Object -
226
+ * ----------------------------------
227
+ * All AdminLTE functions are implemented below.
228
+ */
229
+ function _init() {
230
+ 'use strict';
231
+ /* Layout
232
+ * ======
233
+ * Fixes the layout height in case min-height fails.
234
+ *
235
+ * @type Object
236
+ * @usage $.AdminLTE.layout.activate()
237
+ * $.AdminLTE.layout.fix()
238
+ * $.AdminLTE.layout.fixSidebar()
239
+ */
240
+ $.AdminLTE.layout = {
241
+ activate: function () {
242
+ var _this = this;
243
+ _this.fix();
244
+ _this.fixSidebar();
245
+ $(window, ".wrapper").resize(function () {
246
+ _this.fix();
247
+ _this.fixSidebar();
248
+ });
249
+ },
250
+ fix: function () {
251
+ //Get window height and the wrapper height
252
+ var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight();
253
+ var window_height = $(window).height();
254
+ var sidebar_height = $(".sidebar").height();
255
+ //Set the min-height of the content and sidebar based on the
256
+ //the height of the document.
257
+ if ($("body").hasClass("fixed")) {
258
+ $(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight());
259
+ } else {
260
+ var postSetWidth;
261
+ if (window_height >= sidebar_height) {
262
+ $(".content-wrapper, .right-side").css('min-height', window_height - neg);
263
+ postSetWidth = window_height - neg;
264
+ } else {
265
+ $(".content-wrapper, .right-side").css('min-height', sidebar_height);
266
+ postSetWidth = sidebar_height;
267
+ }
268
+
269
+ //Fix for the control sidebar height
270
+ var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector);
271
+ if (typeof controlSidebar !== "undefined") {
272
+ if (controlSidebar.height() > postSetWidth)
273
+ $(".content-wrapper, .right-side").css('min-height', controlSidebar.height());
274
+ }
275
+
276
+ }
277
+ },
278
+ fixSidebar: function () {
279
+ //Make sure the body tag has the .fixed class
280
+ if (!$("body").hasClass("fixed")) {
281
+ if (typeof $.fn.slimScroll != 'undefined') {
282
+ $(".sidebar").slimScroll({destroy: true}).height("auto");
283
+ }
284
+ return;
285
+ } else if (typeof $.fn.slimScroll == 'undefined' && window.console) {
286
+ window.console.error("Error: the fixed layout requires the slimscroll plugin!");
287
+ }
288
+ //Enable slimscroll for fixed layout
289
+ if ($.AdminLTE.options.sidebarSlimScroll) {
290
+ if (typeof $.fn.slimScroll != 'undefined') {
291
+ //Destroy if it exists
292
+ $(".sidebar").slimScroll({destroy: true}).height("auto");
293
+ //Add slimscroll
294
+ $(".sidebar").slimscroll({
295
+ height: ($(window).height() - $(".main-header").height()) + "px",
296
+ color: "rgba(0,0,0,0.2)",
297
+ size: "3px"
298
+ });
299
+ }
300
+ }
301
+ }
302
+ };
303
+
304
+ /* PushMenu()
305
+ * ==========
306
+ * Adds the push menu functionality to the sidebar.
307
+ *
308
+ * @type Function
309
+ * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']")
310
+ */
311
+ $.AdminLTE.pushMenu = {
312
+ activate: function (toggleBtn) {
313
+ //Get the screen sizes
314
+ var screenSizes = $.AdminLTE.options.screenSizes;
315
+
316
+ //Enable sidebar toggle
317
+ $(document).on('click', toggleBtn, function (e) {
318
+ e.preventDefault();
319
+
320
+ //Enable sidebar push menu
321
+ if ($(window).width() > (screenSizes.sm - 1)) {
322
+ if ($("body").hasClass('sidebar-collapse')) {
323
+ $("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu');
324
+ } else {
325
+ $("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu');
326
+ }
327
+ }
328
+ //Handle sidebar push menu for small screens
329
+ else {
330
+ if ($("body").hasClass('sidebar-open')) {
331
+ $("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu');
332
+ } else {
333
+ $("body").addClass('sidebar-open').trigger('expanded.pushMenu');
334
+ }
335
+ }
336
+ });
337
+
338
+ $(".content-wrapper").click(function () {
339
+ //Enable hide menu when clicking on the content-wrapper on small screens
340
+ if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) {
341
+ $("body").removeClass('sidebar-open');
342
+ }
343
+ });
344
+
345
+ //Enable expand on hover for sidebar mini
346
+ if ($.AdminLTE.options.sidebarExpandOnHover
347
+ || ($('body').hasClass('fixed')
348
+ && $('body').hasClass('sidebar-mini'))) {
349
+ this.expandOnHover();
350
+ }
351
+ },
352
+ expandOnHover: function () {
353
+ var _this = this;
354
+ var screenWidth = $.AdminLTE.options.screenSizes.sm - 1;
355
+ //Expand sidebar on hover
356
+ $('.main-sidebar').hover(function () {
357
+ if ($('body').hasClass('sidebar-mini')
358
+ && $("body").hasClass('sidebar-collapse')
359
+ && $(window).width() > screenWidth) {
360
+ _this.expand();
361
+ }
362
+ }, function () {
363
+ if ($('body').hasClass('sidebar-mini')
364
+ && $('body').hasClass('sidebar-expanded-on-hover')
365
+ && $(window).width() > screenWidth) {
366
+ _this.collapse();
367
+ }
368
+ });
369
+ },
370
+ expand: function () {
371
+ $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover');
372
+ },
373
+ collapse: function () {
374
+ if ($('body').hasClass('sidebar-expanded-on-hover')) {
375
+ $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse');
376
+ }
377
+ }
378
+ };
379
+
380
+ /* Tree()
381
+ * ======
382
+ * Converts the sidebar into a multilevel
383
+ * tree view menu.
384
+ *
385
+ * @type Function
386
+ * @Usage: $.AdminLTE.tree('.sidebar')
387
+ */
388
+ $.AdminLTE.tree = function (menu) {
389
+ var _this = this;
390
+ var animationSpeed = $.AdminLTE.options.animationSpeed;
391
+ $(document).on('click', menu + ' li a', function (e) {
392
+ //Get the clicked link and the next element
393
+ var $this = $(this);
394
+ var checkElement = $this.next();
395
+
396
+ //Check if the next element is a menu and is visible
397
+ if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible'))) {
398
+ //Close the menu
399
+ checkElement.slideUp(animationSpeed, function () {
400
+ checkElement.removeClass('menu-open');
401
+ //Fix the layout in case the sidebar stretches over the height of the window
402
+ //_this.layout.fix();
403
+ });
404
+ checkElement.parent("li").removeClass("active");
405
+ }
406
+ //If the menu is not visible
407
+ else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {
408
+ //Get the parent menu
409
+ var parent = $this.parents('ul').first();
410
+ //Close all open menus within the parent
411
+ var ul = parent.find('ul:visible').slideUp(animationSpeed);
412
+ //Remove the menu-open class from the parent
413
+ ul.removeClass('menu-open');
414
+ //Get the parent li
415
+ var parent_li = $this.parent("li");
416
+
417
+ //Open the target menu and add the menu-open class
418
+ checkElement.slideDown(animationSpeed, function () {
419
+ //Add the class active to the parent li
420
+ checkElement.addClass('menu-open');
421
+ parent.find('li.active').removeClass('active');
422
+ parent_li.addClass('active');
423
+ //Fix the layout in case the sidebar stretches over the height of the window
424
+ _this.layout.fix();
425
+ });
426
+ }
427
+ //if this isn't a link, prevent the page from being redirected
428
+ if (checkElement.is('.treeview-menu')) {
429
+ e.preventDefault();
430
+ }
431
+ });
432
+ };
433
+
434
+ /* ControlSidebar
435
+ * ==============
436
+ * Adds functionality to the right sidebar
437
+ *
438
+ * @type Object
439
+ * @usage $.AdminLTE.controlSidebar.activate(options)
440
+ */
441
+ $.AdminLTE.controlSidebar = {
442
+ //instantiate the object
443
+ activate: function () {
444
+ //Get the object
445
+ var _this = this;
446
+ //Update options
447
+ var o = $.AdminLTE.options.controlSidebarOptions;
448
+ //Get the sidebar
449
+ var sidebar = $(o.selector);
450
+ //The toggle button
451
+ var btn = $(o.toggleBtnSelector);
452
+
453
+ //Listen to the click event
454
+ btn.on('click', function (e) {
455
+ e.preventDefault();
456
+ //If the sidebar is not open
457
+ if (!sidebar.hasClass('control-sidebar-open')
458
+ && !$('body').hasClass('control-sidebar-open')) {
459
+ //Open the sidebar
460
+ _this.open(sidebar, o.slide);
461
+ } else {
462
+ _this.close(sidebar, o.slide);
463
+ }
464
+ });
465
+
466
+ //If the body has a boxed layout, fix the sidebar bg position
467
+ var bg = $(".control-sidebar-bg");
468
+ _this._fix(bg);
469
+
470
+ //If the body has a fixed layout, make the control sidebar fixed
471
+ if ($('body').hasClass('fixed')) {
472
+ _this._fixForFixed(sidebar);
473
+ } else {
474
+ //If the content height is less than the sidebar's height, force max height
475
+ if ($('.content-wrapper, .right-side').height() < sidebar.height()) {
476
+ _this._fixForContent(sidebar);
477
+ }
478
+ }
479
+ },
480
+ //Open the control sidebar
481
+ open: function (sidebar, slide) {
482
+ //Slide over content
483
+ if (slide) {
484
+ sidebar.addClass('control-sidebar-open');
485
+ } else {
486
+ //Push the content by adding the open class to the body instead
487
+ //of the sidebar itself
488
+ $('body').addClass('control-sidebar-open');
489
+ }
490
+ },
491
+ //Close the control sidebar
492
+ close: function (sidebar, slide) {
493
+ if (slide) {
494
+ sidebar.removeClass('control-sidebar-open');
495
+ } else {
496
+ $('body').removeClass('control-sidebar-open');
497
+ }
498
+ },
499
+ _fix: function (sidebar) {
500
+ var _this = this;
501
+ if ($("body").hasClass('layout-boxed')) {
502
+ sidebar.css('position', 'absolute');
503
+ sidebar.height($(".wrapper").height());
504
+ $(window).resize(function () {
505
+ _this._fix(sidebar);
506
+ });
507
+ } else {
508
+ sidebar.css({
509
+ 'position': 'fixed',
510
+ 'height': 'auto'
511
+ });
512
+ }
513
+ },
514
+ _fixForFixed: function (sidebar) {
515
+ sidebar.css({
516
+ 'position': 'fixed',
517
+ 'max-height': '100%',
518
+ 'overflow': 'auto',
519
+ 'padding-bottom': '50px'
520
+ });
521
+ },
522
+ _fixForContent: function (sidebar) {
523
+ $(".content-wrapper, .right-side").css('min-height', sidebar.height());
524
+ }
525
+ };
526
+
527
+ /* BoxWidget
528
+ * =========
529
+ * BoxWidget is a plugin to handle collapsing and
530
+ * removing boxes from the screen.
531
+ *
532
+ * @type Object
533
+ * @usage $.AdminLTE.boxWidget.activate()
534
+ * Set all your options in the main $.AdminLTE.options object
535
+ */
536
+ $.AdminLTE.boxWidget = {
537
+ selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,
538
+ icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,
539
+ animationSpeed: $.AdminLTE.options.animationSpeed,
540
+ activate: function (_box) {
541
+ var _this = this;
542
+ if (!_box) {
543
+ _box = document; // activate all boxes per default
544
+ }
545
+ //Listen for collapse event triggers
546
+ $(_box).on('click', _this.selectors.collapse, function (e) {
547
+ e.preventDefault();
548
+ _this.collapse($(this));
549
+ });
550
+
551
+ //Listen for remove event triggers
552
+ $(_box).on('click', _this.selectors.remove, function (e) {
553
+ e.preventDefault();
554
+ _this.remove($(this));
555
+ });
556
+ },
557
+ collapse: function (element) {
558
+ var _this = this;
559
+ //Find the box parent
560
+ var box = element.parents(".box").first();
561
+ //Find the body and the footer
562
+ var box_content = box.find("> .box-body, > .box-footer, > form >.box-body, > form > .box-footer");
563
+ if (!box.hasClass("collapsed-box")) {
564
+ //Convert minus into plus
565
+ element.children(":first")
566
+ .removeClass(_this.icons.collapse)
567
+ .addClass(_this.icons.open);
568
+ //Hide the content
569
+ box_content.slideUp(_this.animationSpeed, function () {
570
+ box.addClass("collapsed-box");
571
+ });
572
+ } else {
573
+ //Convert plus into minus
574
+ element.children(":first")
575
+ .removeClass(_this.icons.open)
576
+ .addClass(_this.icons.collapse);
577
+ //Show the content
578
+ box_content.slideDown(_this.animationSpeed, function () {
579
+ box.removeClass("collapsed-box");
580
+ });
581
+ }
582
+ },
583
+ remove: function (element) {
584
+ //Find the box parent
585
+ var box = element.parents(".box").first();
586
+ box.slideUp(this.animationSpeed);
587
+ }
588
+ };
589
+ }
590
+
591
+ /* ------------------
592
+ * - Custom Plugins -
593
+ * ------------------
594
+ * All custom plugins are defined below.
595
+ */
596
+
597
+ /*
598
+ * BOX REFRESH BUTTON
599
+ * ------------------
600
+ * This is a custom plugin to use with the component BOX. It allows you to add
601
+ * a refresh button to the box. It converts the box's state to a loading state.
602
+ *
603
+ * @type plugin
604
+ * @usage $("#box-widget").boxRefresh( options );
605
+ */
606
+ (function ($) {
607
+
608
+ "use strict";
609
+
610
+ $.fn.boxRefresh = function (options) {
611
+
612
+ // Render options
613
+ var settings = $.extend({
614
+ //Refresh button selector
615
+ trigger: ".refresh-btn",
616
+ //File source to be loaded (e.g: ajax/src.php)
617
+ source: "",
618
+ //Callbacks
619
+ onLoadStart: function (box) {
620
+ return box;
621
+ }, //Right after the button has been clicked
622
+ onLoadDone: function (box) {
623
+ return box;
624
+ } //When the source has been loaded
625
+
626
+ }, options);
627
+
628
+ //The overlay
629
+ var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');
630
+
631
+ return this.each(function () {
632
+ //if a source is specified
633
+ if (settings.source === "") {
634
+ if (window.console) {
635
+ window.console.log("Please specify a source first - boxRefresh()");
636
+ }
637
+ return;
638
+ }
639
+ //the box
640
+ var box = $(this);
641
+ //the button
642
+ var rBtn = box.find(settings.trigger).first();
643
+
644
+ //On trigger click
645
+ rBtn.on('click', function (e) {
646
+ e.preventDefault();
647
+ //Add loading overlay
648
+ start(box);
649
+
650
+ //Perform ajax call
651
+ box.find(".box-body").load(settings.source, function () {
652
+ done(box);
653
+ });
654
+ });
655
+ });
656
+
657
+ function start(box) {
658
+ //Add overlay and loading img
659
+ box.append(overlay);
660
+
661
+ settings.onLoadStart.call(box);
662
+ }
663
+
664
+ function done(box) {
665
+ //Remove overlay and loading img
666
+ box.find(overlay).remove();
667
+
668
+ settings.onLoadDone.call(box);
669
+ }
670
+
671
+ };
672
+
673
+ })(jQuery);
674
+
675
+ /*
676
+ * EXPLICIT BOX CONTROLS
677
+ * -----------------------
678
+ * This is a custom plugin to use with the component BOX. It allows you to activate
679
+ * a box inserted in the DOM after the app.js was loaded, toggle and remove box.
680
+ *
681
+ * @type plugin
682
+ * @usage $("#box-widget").activateBox();
683
+ * @usage $("#box-widget").toggleBox();
684
+ * @usage $("#box-widget").removeBox();
685
+ */
686
+ (function ($) {
687
+
688
+ 'use strict';
689
+
690
+ $.fn.activateBox = function () {
691
+ $.AdminLTE.boxWidget.activate(this);
692
+ };
693
+
694
+ $.fn.toggleBox = function(){
695
+ var button = $($.AdminLTE.boxWidget.selectors.collapse, this);
696
+ $.AdminLTE.boxWidget.collapse(button);
697
+ };
698
+
699
+ $.fn.removeBox = function(){
700
+ var button = $($.AdminLTE.boxWidget.selectors.remove, this);
701
+ $.AdminLTE.boxWidget.remove(button);
702
+ };
703
+
704
+ })(jQuery);
705
+
706
+ /*
707
+ * TODO LIST CUSTOM PLUGIN
708
+ * -----------------------
709
+ * This plugin depends on iCheck plugin for checkbox and radio inputs
710
+ *
711
+ * @type plugin
712
+ * @usage $("#todo-widget").todolist( options );
713
+ */
714
+ (function ($) {
715
+
716
+ 'use strict';
717
+
718
+ $.fn.todolist = function (options) {
719
+ // Render options
720
+ var settings = $.extend({
721
+ //When the user checks the input
722
+ onCheck: function (ele) {
723
+ return ele;
724
+ },
725
+ //When the user unchecks the input
726
+ onUncheck: function (ele) {
727
+ return ele;
728
+ }
729
+ }, options);
730
+
731
+ return this.each(function () {
732
+
733
+ if (typeof $.fn.iCheck != 'undefined') {
734
+ $('input', this).on('ifChecked', function () {
735
+ var ele = $(this).parents("li").first();
736
+ ele.toggleClass("done");
737
+ settings.onCheck.call(ele);
738
+ });
739
+
740
+ $('input', this).on('ifUnchecked', function () {
741
+ var ele = $(this).parents("li").first();
742
+ ele.toggleClass("done");
743
+ settings.onUncheck.call(ele);
744
+ });
745
+ } else {
746
+ $('input', this).on('change', function () {
747
+ var ele = $(this).parents("li").first();
748
+ ele.toggleClass("done");
749
+ if ($('input', ele).is(":checked")) {
750
+ settings.onCheck.call(ele);
751
+ } else {
752
+ settings.onUncheck.call(ele);
753
+ }
754
+ });
755
+ }
756
+ });
757
+ };
758
+ }(jQuery));