optimacms 0.1.55 → 0.1.56

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 (321) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/optimacms/admin.js +4 -4
  3. data/app/assets/stylesheets/optimacms/admin.css.scss +6 -6
  4. data/app/assets/stylesheets/optimacms/admin_tpl.css.scss +15 -15
  5. data/app/assets/stylesheets/optimacms/bootstrap_and_overrides.css.scss +52 -52
  6. data/app/assets/stylesheets/optimacms/bootstrap_custom.css.scss +49 -49
  7. data/app/assets/stylesheets/optimacms/bootstrap_variables.css.scss +860 -860
  8. data/app/assets/stylesheets/optimacms/colors.css.scss +68 -68
  9. data/app/assets/stylesheets/optimacms/skins/noskin.css.scss +95 -95
  10. data/app/assets/stylesheets/optimacms/tinymce.css.scss +54 -54
  11. data/app/assets/stylesheets/optimacms/tpl.css.scss +309 -309
  12. data/app/controllers/optimacms/admin/admin_base_controller.rb +44 -44
  13. data/app/controllers/optimacms/admin/dashboard_controller.rb +6 -6
  14. data/app/controllers/optimacms/admin/layouts_controller.rb +76 -76
  15. data/app/controllers/optimacms/admin/pages_controller.rb +229 -229
  16. data/app/controllers/optimacms/admin/templates_controller.rb +315 -315
  17. data/app/controllers/optimacms/dev_controller.rb +40 -40
  18. data/app/controllers/optimacms/elfinder_controller.rb +39 -39
  19. data/app/controllers/optimacms/page_base_controller.rb +6 -6
  20. data/app/controllers/optimacms/pages_controller.rb +170 -170
  21. data/app/controllers/optimacms/tinymce_assets_controller.rb +20 -20
  22. data/app/helpers/optimacms/application_helper.rb +111 -106
  23. data/app/helpers/optimacms/forms_helper.rb +75 -75
  24. data/app/inputs/textarea_tinymce_input.rb +27 -27
  25. data/app/models/concerns/optimacms/meta_content.rb +63 -63
  26. data/app/models/optimacms/language.rb +14 -14
  27. data/app/models/optimacms/layout.rb +53 -53
  28. data/app/models/optimacms/mediafile.rb +17 -17
  29. data/app/models/optimacms/page.rb +171 -171
  30. data/app/models/optimacms/page_translation.rb +10 -10
  31. data/app/models/optimacms/template.rb +390 -390
  32. data/app/models/optimacms/template_type.rb +20 -20
  33. data/app/views/optimacms/admin/common/_js_tinymce.html.haml +49 -49
  34. data/app/views/optimacms/admin/common/_modal_div.html.haml +16 -16
  35. data/app/views/optimacms/admin/dashboard/index.html.haml +18 -18
  36. data/app/views/optimacms/admin/layouts/_form.html.haml +22 -22
  37. data/app/views/optimacms/admin/layouts/edit.html.haml +5 -5
  38. data/app/views/optimacms/admin/layouts/index.html.haml +25 -25
  39. data/app/views/optimacms/admin/layouts/main.html.haml +6 -6
  40. data/app/views/optimacms/admin/layouts/new.html.haml +5 -5
  41. data/app/views/optimacms/admin/pages/_form.html.haml +78 -78
  42. data/app/views/optimacms/admin/pages/_form_folder.html.haml +14 -14
  43. data/app/views/optimacms/admin/pages/_form_old.html.haml +107 -107
  44. data/app/views/optimacms/admin/pages/_meta.html.haml +48 -48
  45. data/app/views/optimacms/admin/pages/edit.html.haml +5 -5
  46. data/app/views/optimacms/admin/pages/editfolder.html.haml +15 -15
  47. data/app/views/optimacms/admin/pages/index.html.haml +58 -58
  48. data/app/views/optimacms/admin/pages/new.html.haml +5 -5
  49. data/app/views/optimacms/admin/pages/newfolder.html.haml +15 -15
  50. data/app/views/optimacms/admin/shared/_breadcrumbs.html.haml +7 -7
  51. data/app/views/optimacms/admin/shared/_flash.html.haml +23 -23
  52. data/app/views/optimacms/admin/shared/_footer.html.haml +5 -5
  53. data/app/views/optimacms/admin/shared/_form_errors.html.haml +11 -11
  54. data/app/views/optimacms/admin/shared/_leftmenu.html.haml +49 -49
  55. data/app/views/optimacms/admin/shared/_top.html.haml +33 -33
  56. data/app/views/optimacms/admin/templates/_form.html.haml +61 -61
  57. data/app/views/optimacms/admin/templates/_js_form_modal.html.haml +43 -43
  58. data/app/views/optimacms/admin/templates/create.js.haml +3 -3
  59. data/app/views/optimacms/admin/templates/edit.html.haml +5 -5
  60. data/app/views/optimacms/admin/templates/editfolder.html.haml +31 -31
  61. data/app/views/optimacms/admin/templates/index.html.haml +48 -48
  62. data/app/views/optimacms/admin/templates/new.html.haml +37 -37
  63. data/app/views/optimacms/admin/templates/newattach.html.haml +32 -32
  64. data/app/views/optimacms/admin/templates/newfolder.html.haml +28 -28
  65. data/app/views/optimacms/elfinder/index.html.erb +54 -54
  66. data/config/initializers/assets.rb +2 -2
  67. data/config/initializers/kaminari.rb +10 -10
  68. data/config/initializers/paperclip.rb +11 -11
  69. data/config/initializers/paperclip_media_type_spoof_detector_override.rb +7 -7
  70. data/config/initializers/simple_form.rb +166 -166
  71. data/config/initializers/simple_form_bootstrap.rb +146 -146
  72. data/config/locales/simple_form.en.yml +3 -3
  73. data/config/locales/simple_form.ru.yml +3 -3
  74. data/config/tinymce.yml +6 -6
  75. data/lib/optimacms/fileutils/fileutils.rb +39 -39
  76. data/lib/optimacms/filters/form_filter.rb +226 -226
  77. data/lib/optimacms/mycontroller.rb +84 -82
  78. data/lib/optimacms/page_services/page_data.rb +97 -97
  79. data/lib/optimacms/page_services/page_process_service.rb +32 -32
  80. data/lib/optimacms/page_services/page_route_service.rb +175 -156
  81. data/lib/optimacms/simple_form_extensions/button_components.rb +33 -33
  82. data/lib/optimacms/version.rb +3 -3
  83. data/spec/dummy/app/assets/stylesheets/application.css.scss +11 -11
  84. data/spec/dummy/app/assets/stylesheets/bootstrap_and_overrides.css.scss +3 -3
  85. data/spec/dummy/app/assets/stylesheets/bootstrap_custom.css.scss +49 -49
  86. data/spec/dummy/app/assets/stylesheets/tpl.css.scss +62 -62
  87. data/spec/dummy/app/controllers/home_controller.rb +6 -6
  88. data/spec/dummy/app/controllers/my_controller.rb +6 -6
  89. data/spec/dummy/app/controllers/news_controller.rb +46 -46
  90. data/spec/dummy/app/models/news.rb +7 -7
  91. data/spec/dummy/app/views/home/index.html.haml +18 -18
  92. data/spec/dummy/app/views/my/hello.html.haml +4 -4
  93. data/spec/dummy/app/views/news/index.html.haml +13 -13
  94. data/spec/dummy/app/views/news/show.html.haml +6 -6
  95. data/spec/dummy/app/views/pages/1.html.erb +16 -16
  96. data/spec/dummy/app/views/pages/about.html.erb +12 -12
  97. data/spec/dummy/app/views/pages/text1.html +1 -1
  98. data/spec/dummy/app/views/services/index.html.haml +9 -9
  99. data/spec/dummy/app/views/services/service.html.haml +2 -2
  100. data/spec/dummy/app/views/temp/_part2.html.haml +1 -0
  101. data/spec/dummy/app/views/temp/html1.html +1 -1
  102. data/spec/dummy/app/views/temp/p1.html.haml +6 -6
  103. data/spec/dummy/app/views/temp/t1.html.haml +13 -13
  104. data/spec/dummy/app/views/temp9/t2.html +8 -8
  105. data/spec/dummy/app/views/workers/_breadcrumb_worker.html.haml +11 -11
  106. data/spec/dummy/app/views/workers/_breadcrumb_workers.html.haml +9 -9
  107. data/spec/dummy/app/views/workers/_contacts_our.html.haml +3 -3
  108. data/spec/dummy/app/views/workers/_list_worker.html.haml +46 -46
  109. data/spec/dummy/app/views/workers/_list_workers.html.haml +6 -6
  110. data/spec/dummy/app/views/workers/_share_js.html.haml +22 -22
  111. data/spec/dummy/app/views/workers/_share_worker.html.haml +11 -11
  112. data/spec/dummy/app/views/workers/_show_info.html.haml +53 -53
  113. data/spec/dummy/app/views/workers/_tabs.html.haml +11 -11
  114. data/spec/dummy/app/views/workers/contacts.html.haml +19 -19
  115. data/spec/dummy/app/views/workers/index.html.haml +49 -49
  116. data/spec/dummy/app/views/workers/portfolio.html.haml +20 -20
  117. data/spec/dummy/app/views/workers/services.html.haml +11 -11
  118. data/spec/dummy/app/views/workers/show.html.haml +53 -53
  119. data/spec/dummy/app/views/workers/show_notfound.html.haml +8 -8
  120. data/spec/dummy/app/views/workers/t2.html.haml +1 -1
  121. data/spec/dummy/app/views/workers/work.html.haml +43 -43
  122. data/spec/dummy/config/tinymce.yml +5 -5
  123. data/spec/dummy/db/schema.rb +164 -164
  124. data/spec/dummy/log/development.log +20396 -0
  125. data/spec/dummy/log/test.log +203 -0
  126. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/application.css.scssc +0 -0
  127. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/bootstrap_and_overrides.css.scssc +0 -0
  128. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/bootstrap_custom.css.scssc +0 -0
  129. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/bootstrap_variables.css.scssc +0 -0
  130. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/tpl.css.scssc +0 -0
  131. data/spec/dummy/tmp/cache/assets/development/sass/18577b7353d72dbc7e81d46af07240af8557f987/_hacks.scssc +0 -0
  132. data/spec/dummy/tmp/cache/assets/development/sass/255a203cf5ecbb5470dfd267d6d4b923c8f1e5f0/_css3.scssc +0 -0
  133. data/spec/dummy/tmp/cache/assets/development/sass/255a203cf5ecbb5470dfd267d6d4b923c8f1e5f0/_support.scssc +0 -0
  134. data/spec/dummy/tmp/cache/assets/development/sass/4b8b59c3cee3225b46cdcaa54f7d0474421be9c6/_bootstrap-sprockets.scssc +0 -0
  135. data/spec/dummy/tmp/cache/assets/development/sass/7f871ea7e3a8127767d5a5868622ef2909611f26/noskin.css.scssc +0 -0
  136. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/admin.css.scssc +0 -0
  137. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/admin_tpl.css.scssc +0 -0
  138. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/bootstrap_and_overrides.css.scssc +0 -0
  139. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/bootstrap_custom.css.scssc +0 -0
  140. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/bootstrap_variables.css.scssc +0 -0
  141. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/colors.css.scssc +0 -0
  142. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/tinymce.css.scssc +0 -0
  143. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/tpl.css.scssc +0 -0
  144. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_alerts.scssc +0 -0
  145. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_background-variant.scssc +0 -0
  146. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_border-radius.scssc +0 -0
  147. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_buttons.scssc +0 -0
  148. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_center-block.scssc +0 -0
  149. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_clearfix.scssc +0 -0
  150. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_forms.scssc +0 -0
  151. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_gradients.scssc +0 -0
  152. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_grid-framework.scssc +0 -0
  153. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_grid.scssc +0 -0
  154. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_hide-text.scssc +0 -0
  155. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_image.scssc +0 -0
  156. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_labels.scssc +0 -0
  157. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_list-group.scssc +0 -0
  158. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_nav-divider.scssc +0 -0
  159. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_nav-vertical-align.scssc +0 -0
  160. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_opacity.scssc +0 -0
  161. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_pagination.scssc +0 -0
  162. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_panels.scssc +0 -0
  163. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_progress-bar.scssc +0 -0
  164. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_reset-filter.scssc +0 -0
  165. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_resize.scssc +0 -0
  166. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_responsive-visibility.scssc +0 -0
  167. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_size.scssc +0 -0
  168. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_tab-focus.scssc +0 -0
  169. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_table-row.scssc +0 -0
  170. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_text-emphasis.scssc +0 -0
  171. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_text-overflow.scssc +0 -0
  172. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_vendor-prefixes.scssc +0 -0
  173. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_appearance.scssc +0 -0
  174. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_background-clip.scssc +0 -0
  175. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_background-origin.scssc +0 -0
  176. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_background-size.scssc +0 -0
  177. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_border-radius.scssc +0 -0
  178. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_box-shadow.scssc +0 -0
  179. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_box-sizing.scssc +0 -0
  180. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_box.scssc +0 -0
  181. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_columns.scssc +0 -0
  182. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_filter.scssc +0 -0
  183. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_font-face.scssc +0 -0
  184. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_hyphenation.scssc +0 -0
  185. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_images.scssc +0 -0
  186. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_inline-block.scssc +0 -0
  187. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_opacity.scssc +0 -0
  188. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_regions.scssc +0 -0
  189. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_shared.scssc +0 -0
  190. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_text-shadow.scssc +0 -0
  191. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_transform.scssc +0 -0
  192. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_transition.scssc +0 -0
  193. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_user-interface.scssc +0 -0
  194. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_alerts.scssc +0 -0
  195. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_badges.scssc +0 -0
  196. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_breadcrumbs.scssc +0 -0
  197. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_button-groups.scssc +0 -0
  198. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_buttons.scssc +0 -0
  199. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_carousel.scssc +0 -0
  200. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_close.scssc +0 -0
  201. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_code.scssc +0 -0
  202. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_component-animations.scssc +0 -0
  203. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_dropdowns.scssc +0 -0
  204. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_forms.scssc +0 -0
  205. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_glyphicons.scssc +0 -0
  206. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_grid.scssc +0 -0
  207. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_input-groups.scssc +0 -0
  208. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_jumbotron.scssc +0 -0
  209. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_labels.scssc +0 -0
  210. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_list-group.scssc +0 -0
  211. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_media.scssc +0 -0
  212. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_mixins.scssc +0 -0
  213. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_modals.scssc +0 -0
  214. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_navbar.scssc +0 -0
  215. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_navs.scssc +0 -0
  216. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_normalize.scssc +0 -0
  217. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_pager.scssc +0 -0
  218. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_pagination.scssc +0 -0
  219. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_panels.scssc +0 -0
  220. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_popovers.scssc +0 -0
  221. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_print.scssc +0 -0
  222. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_progress-bars.scssc +0 -0
  223. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_responsive-embed.scssc +0 -0
  224. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_responsive-utilities.scssc +0 -0
  225. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_scaffolding.scssc +0 -0
  226. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_tables.scssc +0 -0
  227. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_thumbnails.scssc +0 -0
  228. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_tooltip.scssc +0 -0
  229. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_type.scssc +0 -0
  230. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_utilities.scssc +0 -0
  231. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_variables.scssc +0 -0
  232. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_wells.scssc +0 -0
  233. data/spec/dummy/tmp/cache/assets/development/sass/fc41a79de5ec40d34c8a83221f3f3da2c64f4153/font-awesome.css.erbc +0 -0
  234. data/spec/dummy/tmp/cache/assets/development/sprockets/002bd8f28c62a795a10ce5716ceffc21 +0 -0
  235. data/spec/dummy/tmp/cache/assets/development/sprockets/053f826d1ea01a2fac355de0755e5c40 +0 -0
  236. data/spec/dummy/tmp/cache/assets/development/sprockets/05e27d4921b00a0fdddb47a737a64494 +0 -0
  237. data/spec/dummy/tmp/cache/assets/development/sprockets/0a470277dd21c166b9dfb68b03d34d5c +0 -0
  238. data/spec/dummy/tmp/cache/assets/development/sprockets/0b1671e1bffda60e6a95f72b9176d628 +0 -0
  239. data/spec/dummy/tmp/cache/assets/development/sprockets/0c01383de62960e3667c7bf3788ecdb6 +0 -0
  240. data/spec/dummy/tmp/cache/assets/development/sprockets/0d2f255829ff9f72d98dead4f35ddf02 +0 -0
  241. data/spec/dummy/tmp/cache/assets/development/sprockets/11f54468370774efca0fe1afb2ebf1d9 +0 -0
  242. data/spec/dummy/tmp/cache/assets/development/sprockets/1c0ef71c34dc1d573e1b4b527116e3cc +0 -0
  243. data/spec/dummy/tmp/cache/assets/development/sprockets/2168c08c151d642aa46ea4bc6283929c +0 -0
  244. data/spec/dummy/tmp/cache/assets/development/sprockets/2a9369c8d28de014045a120b692e8139 +0 -0
  245. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  246. data/spec/dummy/tmp/cache/assets/development/sprockets/2f7d38a264678a2db4a0d569a3313cb1 +0 -0
  247. data/spec/dummy/tmp/cache/assets/development/sprockets/3240ef40c1dc9d13156bbd790ec2651a +0 -0
  248. data/spec/dummy/tmp/cache/assets/development/sprockets/332dfe4887cbad3adbd20e6609fa4960 +0 -0
  249. data/spec/dummy/tmp/cache/assets/development/sprockets/3347cc312918facec5bbac684ea65715 +0 -0
  250. data/spec/dummy/tmp/cache/assets/development/sprockets/3cd4037d8c32ad8fcdd5e3bbb8dfc35a +0 -0
  251. data/spec/dummy/tmp/cache/assets/development/sprockets/4016d2fd0b776ceb82fcbfbc5d2e26b1 +0 -0
  252. data/spec/dummy/tmp/cache/assets/development/sprockets/43dc3e92cd09deb0fc54dd97b46935e9 +0 -0
  253. data/spec/dummy/tmp/cache/assets/development/sprockets/452d7e35d5a012ae12fa7346fcf2239b +0 -0
  254. data/spec/dummy/tmp/cache/assets/development/sprockets/49c7cb5dd916ffc9e87ce3b989c92062 +0 -0
  255. data/spec/dummy/tmp/cache/assets/development/sprockets/529a74a4530de52f6c3ebbf107ffe9f2 +0 -0
  256. data/spec/dummy/tmp/cache/assets/development/sprockets/55a2847335c39261e1efe764deb18592 +0 -0
  257. data/spec/dummy/tmp/cache/assets/development/sprockets/56c7eb172a7423728c45d0a751d198e3 +0 -0
  258. data/spec/dummy/tmp/cache/assets/development/sprockets/6789fe765d536063c998330523bb12b9 +0 -0
  259. data/spec/dummy/tmp/cache/assets/development/sprockets/678a2e392e656b8132f0420e4ec28ed6 +0 -0
  260. data/spec/dummy/tmp/cache/assets/development/sprockets/6843f0414f73089579ae0f9fddf7b38f +0 -0
  261. data/spec/dummy/tmp/cache/assets/development/sprockets/6c7c58744c14732af9bf574870fdf07e +0 -0
  262. data/spec/dummy/tmp/cache/assets/development/sprockets/6cdbd6f171a27a578bcb07dd5bfa83a2 +0 -0
  263. data/spec/dummy/tmp/cache/assets/development/sprockets/6e431ed1dfb5bbcbd33a5f9e069dd3ab +0 -0
  264. data/spec/dummy/tmp/cache/assets/development/sprockets/6f943f22c610e6417422e4a13e0bcc0d +0 -0
  265. data/spec/dummy/tmp/cache/assets/development/sprockets/73fbaa501dc0b072cf2c27fa7dfe0d91 +0 -0
  266. data/spec/dummy/tmp/cache/assets/development/sprockets/7c886717bced4d59ab89e012b52f40de +0 -0
  267. data/spec/dummy/tmp/cache/assets/development/sprockets/821470da3272c8b99070972d4f4f58ca +0 -0
  268. data/spec/dummy/tmp/cache/assets/development/sprockets/88d843fcb07453d1057fac1e254fde0d +0 -0
  269. data/spec/dummy/tmp/cache/assets/development/sprockets/8956737a82f17db48d50e13f133aeefc +0 -0
  270. data/spec/dummy/tmp/cache/assets/development/sprockets/8ab512c9b33ac90e699b73469d71f061 +0 -0
  271. data/spec/dummy/tmp/cache/assets/development/sprockets/8b5a7992567ebbeb9a882d074778f8c8 +0 -0
  272. data/spec/dummy/tmp/cache/assets/development/sprockets/8d71fe4f0e2910900097bdc07bf2d6af +0 -0
  273. data/spec/dummy/tmp/cache/assets/development/sprockets/8e1785ddbfab42cd2df0416eb3932253 +0 -0
  274. data/spec/dummy/tmp/cache/assets/development/sprockets/9024d024c62c2668836b1e1b7b3b78cc +0 -0
  275. data/spec/dummy/tmp/cache/assets/development/sprockets/928ed298f875a25727ca516f5c03f344 +0 -0
  276. data/spec/dummy/tmp/cache/assets/development/sprockets/97c1e12a09973e0fb97f23a1dc496443 +0 -0
  277. data/spec/dummy/tmp/cache/assets/development/sprockets/991576185140a77411185839fd0533f1 +0 -0
  278. data/spec/dummy/tmp/cache/assets/development/sprockets/99e8d6370ba85ec4a61d953f5ed261af +0 -0
  279. data/spec/dummy/tmp/cache/assets/development/sprockets/9ee80730ab26986d507820ac7a288d5c +0 -0
  280. data/spec/dummy/tmp/cache/assets/development/sprockets/a3faca31eb11ba1a981535f9c8408282 +0 -0
  281. data/spec/dummy/tmp/cache/assets/development/sprockets/a5c68a2aec806face32c749f380f1e14 +0 -0
  282. data/spec/dummy/tmp/cache/assets/development/sprockets/a64dbcf0e4afe0985b1abd3e209d17cd +0 -0
  283. data/spec/dummy/tmp/cache/assets/development/sprockets/a6d357fbe03dae6f590180f6c5e0e148 +0 -0
  284. data/spec/dummy/tmp/cache/assets/development/sprockets/aa58fb159780a7200a1bc4c6844cc5c4 +0 -0
  285. data/spec/dummy/tmp/cache/assets/development/sprockets/aaba73a43e02d8c6550bae851f17e7a0 +0 -0
  286. data/spec/dummy/tmp/cache/assets/development/sprockets/af26c017afcf68f1edd44a4c9bb942e4 +0 -0
  287. data/spec/dummy/tmp/cache/assets/development/sprockets/b3defd466aec80b128284b8d85324630 +0 -0
  288. data/spec/dummy/tmp/cache/assets/development/sprockets/b48ed8a3de3ca66055ee4fd18b16421f +0 -0
  289. data/spec/dummy/tmp/cache/assets/development/sprockets/ba9859d0d2b7d4d7d5b03ff3a71ed478 +0 -0
  290. data/spec/dummy/tmp/cache/assets/development/sprockets/bcca522c6302f184f12fe0e8a7d7e71a +0 -0
  291. data/spec/dummy/tmp/cache/assets/development/sprockets/be8a0cd6c3605b9d7c22642609316a9f +0 -0
  292. data/spec/dummy/tmp/cache/assets/development/sprockets/c11c6d97cfc7ef7945fa87f14b44445c +0 -0
  293. data/spec/dummy/tmp/cache/assets/development/sprockets/c13fc73ceafa45876a901b3e775b83ae +0 -0
  294. data/spec/dummy/tmp/cache/assets/development/sprockets/c5f3450b5366b6fbdc4172ce089fba48 +0 -0
  295. data/spec/dummy/tmp/cache/assets/development/sprockets/c982bb1e71844744a60dc9b4afcb2f49 +0 -0
  296. data/spec/dummy/tmp/cache/assets/development/sprockets/cf24c3f1bb8adb1f168758f2bd9775c9 +0 -0
  297. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  298. data/spec/dummy/tmp/cache/assets/development/sprockets/d3e5a199890ba7c706fc62c2b891714d +0 -0
  299. data/spec/dummy/tmp/cache/assets/development/sprockets/d584baf83d8a779d945f9668f902fa7c +0 -0
  300. data/spec/dummy/tmp/cache/assets/development/sprockets/d71b820ce5f8b310e466f517bd3a8e4b +0 -0
  301. data/spec/dummy/tmp/cache/assets/development/sprockets/d8dab59d17daf5a5081153e2ad7d09b4 +0 -0
  302. data/spec/dummy/tmp/cache/assets/development/sprockets/dd4a8658311b7a2cd8effa6479827559 +0 -0
  303. data/spec/dummy/tmp/cache/assets/development/sprockets/e11970a225a09526aac3f76d7ee91822 +0 -0
  304. data/spec/dummy/tmp/cache/assets/development/sprockets/e3dd086dd858b5bff9cfd60a031c2091 +0 -0
  305. data/spec/dummy/tmp/cache/assets/development/sprockets/e43bcf201d76cdf6e1fe345195c1cd9e +0 -0
  306. data/spec/dummy/tmp/cache/assets/development/sprockets/e945ca604ee0240455a5652953b3e495 +0 -0
  307. data/spec/dummy/tmp/cache/assets/development/sprockets/ec33505f0e2ed4dd12951ecceffa3695 +0 -0
  308. data/spec/dummy/tmp/cache/assets/development/sprockets/ee287313e28f341f83628dec0a353fa6 +0 -0
  309. data/spec/dummy/tmp/cache/assets/development/sprockets/ee9a23832dc2a49ee6ec6d3f1d6a0e1f +0 -0
  310. data/spec/dummy/tmp/cache/assets/development/sprockets/ef2d6862f5fd690c5387cafd88944a9f +0 -0
  311. data/spec/dummy/tmp/cache/assets/development/sprockets/ef8c3824b85ed745cad651aadda4f2b8 +0 -0
  312. data/spec/dummy/tmp/cache/assets/development/sprockets/f557612d05bb9fea499dce8352b3f0ca +0 -0
  313. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  314. data/spec/dummy/tmp/cache/assets/development/sprockets/f7f3056583a2454471a4a5f7200dcefa +0 -0
  315. data/spec/dummy/tmp/cache/assets/development/sprockets/f9c51fa87975943d31bc1bfd7cb684c6 +0 -0
  316. data/spec/dummy/tmp/cache/assets/development/sprockets/ff9ed89418a3f78032b8f8184dd98e80 +0 -0
  317. data/spec/factories/page.rb +25 -25
  318. data/spec/models/page_spec.rb +92 -92
  319. data/spec/spec_helper.rb +89 -89
  320. data/spec/support/factory_girl.rb +15 -15
  321. metadata +1731 -1345
@@ -1,63 +1,63 @@
1
- module Optimacms
2
-
3
- module MetaContent
4
- extend ActiveSupport::Concern
5
-
6
- included do
7
- #has_many :taggings, as: :taggable
8
-
9
- #class_attribute :tag_limit
10
-
11
-
12
- end
13
-
14
-
15
-
16
-
17
- def meta_keywords_content(lang='')
18
- end
19
-
20
- def meta_keywords_content=(v, lang='')
21
- end
22
-
23
-
24
-
25
- # methods defined here are going to extend the class, not the instance of it
26
- module ClassMethods
27
-
28
- def make_meta(langs)
29
- langs.each do |lang|
30
- define_method("meta_keywords_#{lang}") do
31
- #puts "@#{name} was set to #{val}"
32
- #instance_variable_set("@#{name}", val)
33
- x=0
34
- end
35
- end
36
- end
37
-
38
- def method_missing(method_sym, *arguments, &block)
39
- if method_sym.to_s =~ /^meta_(.*)_(.*)$/
40
- t, lang = $1, $2
41
- #find($1.to_sym => arguments.first)
42
- #self.x=0
43
- else
44
- super
45
- end
46
- end
47
-
48
-
49
- # settings
50
-
51
- def dir_meta
52
-
53
- end
54
-
55
- def tag_limit(value)
56
- self.tag_limit_value = value
57
- end
58
-
59
-
60
- end
61
-
62
- end
63
- end
1
+ module Optimacms
2
+
3
+ module MetaContent
4
+ extend ActiveSupport::Concern
5
+
6
+ included do
7
+ #has_many :taggings, as: :taggable
8
+
9
+ #class_attribute :tag_limit
10
+
11
+
12
+ end
13
+
14
+
15
+
16
+
17
+ def meta_keywords_content(lang='')
18
+ end
19
+
20
+ def meta_keywords_content=(v, lang='')
21
+ end
22
+
23
+
24
+
25
+ # methods defined here are going to extend the class, not the instance of it
26
+ module ClassMethods
27
+
28
+ def make_meta(langs)
29
+ langs.each do |lang|
30
+ define_method("meta_keywords_#{lang}") do
31
+ #puts "@#{name} was set to #{val}"
32
+ #instance_variable_set("@#{name}", val)
33
+ x=0
34
+ end
35
+ end
36
+ end
37
+
38
+ def method_missing(method_sym, *arguments, &block)
39
+ if method_sym.to_s =~ /^meta_(.*)_(.*)$/
40
+ t, lang = $1, $2
41
+ #find($1.to_sym => arguments.first)
42
+ #self.x=0
43
+ else
44
+ super
45
+ end
46
+ end
47
+
48
+
49
+ # settings
50
+
51
+ def dir_meta
52
+
53
+ end
54
+
55
+ def tag_limit(value)
56
+ self.tag_limit_value = value
57
+ end
58
+
59
+
60
+ end
61
+
62
+ end
63
+ end
@@ -1,14 +1,14 @@
1
- module Optimacms
2
- class Language < ActiveRecord::Base
3
- self.table_name = 'cms_languages'
4
-
5
-
6
- scope :admin_enabled, -> {order('pos asc')}
7
-
8
- def self.list_with_default
9
- rows = ['']+Language.admin_enabled.all.map(&:lang)
10
-
11
- end
12
-
13
- end
14
- end
1
+ module Optimacms
2
+ class Language < ActiveRecord::Base
3
+ self.table_name = 'cms_languages'
4
+
5
+
6
+ scope :admin_enabled, -> {order('pos asc')}
7
+
8
+ def self.list_with_default
9
+ rows = ['']+Language.admin_enabled.all.map(&:lang)
10
+
11
+ end
12
+
13
+ end
14
+ end
@@ -1,53 +1,53 @@
1
- module Optimacms
2
-
3
- class Layout < ActiveRecord::Base
4
- self.table_name = 'cms_templates'
5
-
6
- has_many :pages
7
-
8
- # scopes
9
- scope :main, -> { where(tpl_type: 'main')}
10
-
11
- # content
12
-
13
- def content(lang='')
14
- filename = content_filename_full(lang)
15
- if !File.exists? filename
16
- return ''
17
- end
18
- File.read(filename)
19
- end
20
-
21
- def content=(v, lang='')
22
- File.open(content_filename_full(lang), "w+") do |f|
23
- f.write(v)
24
- end
25
- end
26
-
27
- def content_filename_full(lang)
28
- Layout.content_filename_dir + content_filename(lang)
29
- end
30
-
31
- def content_filename(lang='')
32
- self.name+content_filename_lang_postfix(lang)+'.'+content_filename_ext
33
- end
34
-
35
-
36
- def self.content_filename_dir
37
- #Rails.root.to_s + '/content/layouts/'
38
- Rails.root.to_s + '/app/views/layouts/'
39
- end
40
-
41
- def content_filename_lang_postfix(lang)
42
- return '' if lang==''
43
- return '.'+lang
44
- end
45
-
46
- def content_filename_ext
47
- return 'html.erb'
48
- end
49
-
50
-
51
- end
52
- end
53
-
1
+ module Optimacms
2
+
3
+ class Layout < ActiveRecord::Base
4
+ self.table_name = 'cms_templates'
5
+
6
+ has_many :pages
7
+
8
+ # scopes
9
+ scope :main, -> { where(tpl_type: 'main')}
10
+
11
+ # content
12
+
13
+ def content(lang='')
14
+ filename = content_filename_full(lang)
15
+ if !File.exists? filename
16
+ return ''
17
+ end
18
+ File.read(filename)
19
+ end
20
+
21
+ def content=(v, lang='')
22
+ File.open(content_filename_full(lang), "w+") do |f|
23
+ f.write(v)
24
+ end
25
+ end
26
+
27
+ def content_filename_full(lang)
28
+ Layout.content_filename_dir + content_filename(lang)
29
+ end
30
+
31
+ def content_filename(lang='')
32
+ self.name+content_filename_lang_postfix(lang)+'.'+content_filename_ext
33
+ end
34
+
35
+
36
+ def self.content_filename_dir
37
+ #Rails.root.to_s + '/content/layouts/'
38
+ Rails.root.to_s + '/app/views/layouts/'
39
+ end
40
+
41
+ def content_filename_lang_postfix(lang)
42
+ return '' if lang==''
43
+ return '.'+lang
44
+ end
45
+
46
+ def content_filename_ext
47
+ return 'html.erb'
48
+ end
49
+
50
+
51
+ end
52
+ end
53
+
@@ -1,17 +1,17 @@
1
- module Optimacms
2
-
3
- class Mediafile < ActiveRecord::Base
4
- self.table_name = 'cms_mediafiles'
5
-
6
- has_attached_file :photo,
7
- :styles => { :large=>'800x600>', :medium => "200x150#", :thumb => "150x112#" },
8
- :default_url => "/icons/:style/noimage.png",
9
- :path => ":rails_root/public/uploads/images/:basename_:style.:extension",
10
- :url => "/uploads/images/:basename_:style.:extension"
11
- # /:class/:attachment
12
- validates_attachment_content_type :photo, :content_type => /\Aimage\/.*\Z/
13
-
14
- end
15
-
16
- end
17
-
1
+ module Optimacms
2
+
3
+ class Mediafile < ActiveRecord::Base
4
+ self.table_name = 'cms_mediafiles'
5
+
6
+ has_attached_file :photo,
7
+ :styles => { :large=>'800x600>', :medium => "200x150#", :thumb => "150x112#" },
8
+ :default_url => "/icons/:style/noimage.png",
9
+ :path => ":rails_root/public/uploads/images/:basename_:style.:extension",
10
+ :url => "/uploads/images/:basename_:style.:extension"
11
+ # /:class/:attachment
12
+ validates_attachment_content_type :photo, :content_type => /\Aimage\/.*\Z/
13
+
14
+ end
15
+
16
+ end
17
+
@@ -1,172 +1,172 @@
1
- module Optimacms
2
- class Page < ActiveRecord::Base
3
- self.table_name = 'cms_pages'
4
-
5
- belongs_to :layout, :foreign_key => 'layout_id', :class_name => 'Template'
6
- belongs_to :template, :foreign_key => 'template_id', :class_name => 'Template'
7
- belongs_to :folder, :foreign_key => 'parent_id', :class_name => 'Page'
8
- has_many :translations, :foreign_key => 'item_id', :class_name => 'PageTranslation', :dependent => :destroy
9
- accepts_nested_attributes_for :translations
10
-
11
- #has_many :page_translations
12
- #accepts_nested_attributes_for :page_translations
13
-
14
- # callbacks
15
- before_save :_before_save
16
-
17
- # modules
18
- include Optimacms::MetaContent
19
- make_meta(Language.all.map(&:lang))
20
-
21
-
22
- #
23
- paginates_per 10
24
-
25
- # search
26
- searchable_by_simple_filter
27
-
28
-
29
-
30
- #### save
31
-
32
- def save
33
- begin
34
- super
35
- rescue => e
36
- #ActiveRecord::RecordInvalid
37
- false
38
- end
39
- end
40
-
41
-
42
- #### folder
43
-
44
- def parent_title
45
- self.folder.title
46
- end
47
-
48
-
49
- ### content
50
-
51
- def content(lang='')
52
- filename = content_filename_full(lang)
53
- return nil if filename.nil?
54
- return '' if !File.exists? filename
55
- File.read(filename)
56
- end
57
-
58
- def content=(v, lang='')
59
- File.open(content_filename_full(lang), "w+") do |f|
60
- f.write(v)
61
- end
62
- end
63
-
64
- def content_page?
65
- self.controller_action.nil? || self.controller_action.blank?
66
- end
67
-
68
-
69
- def content_filename(lang='')
70
- return nil if self.name.nil?
71
- self.name+content_filename_lang_postfix(lang)+'.'+content_filename_ext
72
- end
73
-
74
- def self.content_filename_dir
75
- Rails.root.to_s + '/app/views/pages/'
76
- end
77
-
78
- def content_filename_full(lang)
79
- f = content_filename(lang)
80
- return nil if f.nil?
81
- Page.content_filename_dir + f
82
- end
83
-
84
-
85
- #### search
86
- =begin
87
- def self.search_by_filter(filter)
88
- pg = filter.page
89
- #pg =1 if pg.nil? || pg<=0
90
-
91
- order = filter.order
92
-
93
- if order.empty?
94
- orderby = 'id'
95
- orderdir = 'asc'
96
- else
97
- orderby = order[0][0]
98
- orderdir = order[0][1]
99
- end
100
-
101
- self.where(get_where(filter.data))
102
- .order(" #{orderby} #{orderdir}")
103
- .page(pg)
104
-
105
- end
106
-
107
- def self.get_where(values)
108
- w = '1=1 '
109
- #w << " AND uid like '#{values['uid']}%' " if values['uid'] && !values['uid'].blank?
110
- v = values[:title]
111
- w << " AND title like '%#{v}%' " if v && !v.blank?
112
-
113
- v = values[:parent_id]
114
- w << " AND parent_id = '#{v}' " if !v!=-1
115
-
116
- w
117
- end
118
- =end
119
-
120
- def _before_save
121
-
122
- if self.url_changed?
123
- self.url_parts_count = PageServices::PageRouteService.count_url_parts(self.url)
124
- self.url_vars_count = PageServices::PageRouteService::count_url_vars(self.url)
125
- self.parsed_url = PageServices::PageRouteService::parse_url(self.url)
126
- end
127
- end
128
-
129
-
130
-
131
- ##### translations
132
- =begin
133
- def translations_by_lang
134
- return @translations_by_lang unless @translations_by_lang.nil?
135
-
136
- @translations_by_lang = {}
137
- Language.list_with_default.each{|lang| @translations_by_lang[lang] = nil}
138
- self.translations.all.each { |r| @translations_by_lang[r.lang] = r }
139
-
140
- @translations_by_lang
141
- end
142
- =end
143
-
144
- def build_translations
145
- langs = Language.list_with_default
146
- langs_missing = langs - self.translations.all.map{|r| r.lang}
147
-
148
- langs_missing.each do |lang|
149
- self.translations.new(:lang=>lang)
150
- end
151
-
152
- end
153
-
154
- ##### meta
155
-
156
-
157
-
158
-
159
- private
160
-
161
- def content_filename_lang_postfix(lang)
162
- return '' if lang==''
163
- return '.'+lang
164
- end
165
-
166
- def content_filename_ext
167
- return 'html'
168
- end
169
-
170
-
171
- end
1
+ module Optimacms
2
+ class Page < ActiveRecord::Base
3
+ self.table_name = 'cms_pages'
4
+
5
+ belongs_to :layout, :foreign_key => 'layout_id', :class_name => 'Template'
6
+ belongs_to :template, :foreign_key => 'template_id', :class_name => 'Template'
7
+ belongs_to :folder, :foreign_key => 'parent_id', :class_name => 'Page'
8
+ has_many :translations, :foreign_key => 'item_id', :class_name => 'PageTranslation', :dependent => :destroy
9
+ accepts_nested_attributes_for :translations
10
+
11
+ #has_many :page_translations
12
+ #accepts_nested_attributes_for :page_translations
13
+
14
+ # callbacks
15
+ before_save :_before_save
16
+
17
+ # modules
18
+ include Optimacms::MetaContent
19
+ make_meta(Language.all.map(&:lang))
20
+
21
+
22
+ #
23
+ paginates_per 10
24
+
25
+ # search
26
+ searchable_by_simple_filter
27
+
28
+
29
+
30
+ #### save
31
+
32
+ def save
33
+ begin
34
+ super
35
+ rescue => e
36
+ #ActiveRecord::RecordInvalid
37
+ false
38
+ end
39
+ end
40
+
41
+
42
+ #### folder
43
+
44
+ def parent_title
45
+ self.folder.title
46
+ end
47
+
48
+
49
+ ### content
50
+
51
+ def content(lang='')
52
+ filename = content_filename_full(lang)
53
+ return nil if filename.nil?
54
+ return '' if !File.exists? filename
55
+ File.read(filename)
56
+ end
57
+
58
+ def content=(v, lang='')
59
+ File.open(content_filename_full(lang), "w+") do |f|
60
+ f.write(v)
61
+ end
62
+ end
63
+
64
+ def content_page?
65
+ self.controller_action.nil? || self.controller_action.blank?
66
+ end
67
+
68
+
69
+ def content_filename(lang='')
70
+ return nil if self.name.nil?
71
+ self.name+content_filename_lang_postfix(lang)+'.'+content_filename_ext
72
+ end
73
+
74
+ def self.content_filename_dir
75
+ Rails.root.to_s + '/app/views/pages/'
76
+ end
77
+
78
+ def content_filename_full(lang)
79
+ f = content_filename(lang)
80
+ return nil if f.nil?
81
+ Page.content_filename_dir + f
82
+ end
83
+
84
+
85
+ #### search
86
+ =begin
87
+ def self.search_by_filter(filter)
88
+ pg = filter.page
89
+ #pg =1 if pg.nil? || pg<=0
90
+
91
+ order = filter.order
92
+
93
+ if order.empty?
94
+ orderby = 'id'
95
+ orderdir = 'asc'
96
+ else
97
+ orderby = order[0][0]
98
+ orderdir = order[0][1]
99
+ end
100
+
101
+ self.where(get_where(filter.data))
102
+ .order(" #{orderby} #{orderdir}")
103
+ .page(pg)
104
+
105
+ end
106
+
107
+ def self.get_where(values)
108
+ w = '1=1 '
109
+ #w << " AND uid like '#{values['uid']}%' " if values['uid'] && !values['uid'].blank?
110
+ v = values[:title]
111
+ w << " AND title like '%#{v}%' " if v && !v.blank?
112
+
113
+ v = values[:parent_id]
114
+ w << " AND parent_id = '#{v}' " if !v!=-1
115
+
116
+ w
117
+ end
118
+ =end
119
+
120
+ def _before_save
121
+
122
+ if self.url_changed?
123
+ self.url_parts_count = PageServices::PageRouteService.count_url_parts(self.url)
124
+ self.url_vars_count = PageServices::PageRouteService::count_url_vars(self.url)
125
+ self.parsed_url = PageServices::PageRouteService::parse_url(self.url)
126
+ end
127
+ end
128
+
129
+
130
+
131
+ ##### translations
132
+ =begin
133
+ def translations_by_lang
134
+ return @translations_by_lang unless @translations_by_lang.nil?
135
+
136
+ @translations_by_lang = {}
137
+ Language.list_with_default.each{|lang| @translations_by_lang[lang] = nil}
138
+ self.translations.all.each { |r| @translations_by_lang[r.lang] = r }
139
+
140
+ @translations_by_lang
141
+ end
142
+ =end
143
+
144
+ def build_translations
145
+ langs = Language.list_with_default
146
+ langs_missing = langs - self.translations.all.map{|r| r.lang}
147
+
148
+ langs_missing.each do |lang|
149
+ self.translations.new(:lang=>lang)
150
+ end
151
+
152
+ end
153
+
154
+ ##### meta
155
+
156
+
157
+
158
+
159
+ private
160
+
161
+ def content_filename_lang_postfix(lang)
162
+ return '' if lang==''
163
+ return '.'+lang
164
+ end
165
+
166
+ def content_filename_ext
167
+ return 'html'
168
+ end
169
+
170
+
171
+ end
172
172
  end