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,82 +1,84 @@
1
- module Optimacms
2
- module Mycontroller
3
- extend ActiveSupport::Concern
4
-
5
-
6
- included do
7
- helper_method :site_page_path
8
- end
9
-
10
- def my_set_render
11
- @is_optimacms = true
12
-
13
- end
14
-
15
- def is_optimacms
16
- @is_optimacms
17
- end
18
-
19
- def default_render(*args)
20
- if self.controller_name!='pages' && !@optimacms_tpl.nil? && @is_optimacms
21
- render @optimacms_tpl, :layout=>@optimacms_layout and return
22
- #(render :text => "hello", :layout => @optimacms_layout) and return
23
-
24
- # http://stackoverflow.com/questions/21129587/ruby-on-rails-how-to-render-file-as-plain-text-without-any-html
25
- #render :plain will set the content type to text/plain
26
- #render :html will set the content type to text/html
27
- #render :body will not set the content type header.
28
- # render text: "some text". :plain does not work.
29
- end
30
-
31
- super
32
- end
33
-
34
- def optimacms_pagedata
35
- @pagedata
36
- end
37
-
38
- def optimacms_set_pagedata(_pagedata)
39
- @pagedata = _pagedata
40
-
41
- end
42
-
43
- def my_set_render_template(tpl_view, tpl_layout)
44
- @optimacms_tpl = tpl_view
45
- @optimacms_layout = tpl_layout
46
- end
47
-
48
- def my_set_meta(meta)
49
- @optimacms_meta_title = meta[:title]
50
- @optimacms_meta_keywords = meta[:keywords]
51
- @optimacms_meta_description = meta[:description]
52
- end
53
-
54
- def site_page_path(name, p={})
55
- get_page_path(name, p)
56
- end
57
-
58
- def get_page_path(page_name, p={})
59
- # get from cache
60
- @cache_page_urls ||= {}
61
- url = @cache_page_urls.fetch(page_name.to_s, nil)
62
-
63
- if url.nil?
64
- page = Page.find_by_name(page_name)
65
- url = page.url if page
66
- end
67
-
68
- return nil if url.nil?
69
-
70
- # set to cache
71
- @cache_page_urls ||= {}
72
- @cache_page_urls[page_name.to_s] = url
73
-
74
- #
75
- res = PageServices::PageRouteService.make_url url, p
76
-
77
- '/'+res
78
- end
79
-
80
- end
81
- end
82
-
1
+ module Optimacms
2
+ module Mycontroller
3
+ extend ActiveSupport::Concern
4
+
5
+
6
+ included do
7
+ helper_method :site_page_path
8
+ end
9
+
10
+ def my_set_render
11
+ @is_optimacms = true
12
+
13
+ end
14
+
15
+ def is_optimacms
16
+ @is_optimacms
17
+ end
18
+
19
+ def default_render(*args)
20
+ if self.controller_name!='pages' && !@optimacms_tpl.nil? && @is_optimacms
21
+ render @optimacms_tpl, :layout=>@optimacms_layout and return
22
+ #(render :text => "hello", :layout => @optimacms_layout) and return
23
+
24
+ # http://stackoverflow.com/questions/21129587/ruby-on-rails-how-to-render-file-as-plain-text-without-any-html
25
+ #render :plain will set the content type to text/plain
26
+ #render :html will set the content type to text/html
27
+ #render :body will not set the content type header.
28
+ # render text: "some text". :plain does not work.
29
+ end
30
+
31
+ super
32
+ end
33
+
34
+ def optimacms_pagedata
35
+ @pagedata
36
+ end
37
+
38
+ def optimacms_set_pagedata(_pagedata)
39
+ @pagedata = _pagedata
40
+
41
+ end
42
+
43
+ def my_set_render_template(tpl_view, tpl_layout)
44
+ @optimacms_tpl = tpl_view
45
+ @optimacms_layout = tpl_layout
46
+ end
47
+
48
+ def my_set_meta(meta)
49
+ @optimacms_meta_title = meta[:title]
50
+ @optimacms_meta_keywords = meta[:keywords]
51
+ @optimacms_meta_description = meta[:description]
52
+ end
53
+
54
+ def site_page_path(name, p={})
55
+ get_page_path(name, p)
56
+ end
57
+
58
+ def get_page_path(page_name, p={})
59
+ # get from cache
60
+ @cache_page_urls ||= {}
61
+ url = @cache_page_urls.fetch(page_name.to_s, nil)
62
+
63
+ if url.nil?
64
+ page = Page.find_by_name(page_name)
65
+ url = page.url if page
66
+ end
67
+
68
+ return nil if url.nil?
69
+
70
+ # set to cache
71
+ @cache_page_urls ||= {}
72
+ @cache_page_urls[page_name.to_s] = url
73
+
74
+ #
75
+ res = PageServices::PageRouteService.make_url url, p
76
+
77
+ return nil if res.nil?
78
+
79
+ '/'+res
80
+ end
81
+
82
+ end
83
+ end
84
+
@@ -1,97 +1,97 @@
1
- module Optimacms
2
- module PageServices
3
- # data used for processing page
4
- class PageData
5
- attr_accessor :page # page object
6
- #, :params
7
- attr_accessor :url, :url_vars
8
- attr_accessor :lang
9
- attr_accessor :controller, :action
10
- attr_accessor :layout
11
- attr_accessor :template
12
-
13
- #
14
- attr_reader :compiled_view_path
15
-
16
- include PageProcessService
17
-
18
- def controller_class
19
- Object.const_get controller.to_s.camelize+'Controller'
20
- end
21
-
22
- def url_vars
23
- @url_vars || {}
24
- end
25
-
26
- def lang
27
- # TODO: calc lang
28
-
29
- # from url
30
- lang_url = url_vars.fetch(:lang, '')
31
-
32
- return lang_url unless lang_url.blank?
33
-
34
-
35
- I18n.locale
36
- end
37
-
38
- def layout
39
- page.layout
40
- end
41
-
42
- def template
43
- page.template
44
- end
45
-
46
- def meta
47
- page_lang = page.is_translated ? lang : ''
48
- row = page.translations.where(:lang=>page_lang).first
49
-
50
- return nil if row.nil?
51
-
52
- {:title=>row.meta_title, :keywords=>row.meta_keywords, :description=>row.meta_description}
53
- end
54
-
55
- def view_content
56
- return '' if template.basepath.nil?
57
-
58
- f = template.fullpath
59
- return '' if !File.exists? f
60
- File.read(f)
61
- end
62
-
63
- def view_filename
64
- #Rails.root.to_s + '/app/views/'+view_path
65
- page.template.fullpath
66
- end
67
-
68
- def compiled_view_filename
69
- dir_cache+'/'+@compiled_view_basename
70
- end
71
-
72
-
73
- def compiled_view_path
74
- dirname_views+'/'+@compiled_view_basename
75
- end
76
-
77
- def dirname_views
78
- 'optimacms/cache'
79
- end
80
-
81
- def dir_cache
82
- # TODO: get from settings
83
- Rails.root.to_s+'/app/views/'+dirname_views
84
- end
85
-
86
-
87
- def generate_content
88
- @compiled_view_basename = generate_view_name
89
- Optimacms::Fileutils::Fileutils::create_dir_if_not_exists compiled_view_filename
90
-
91
- text = compile_content view_content
92
- save_text_to_compiled_view text
93
- end
94
-
95
- end
96
- end
97
- end
1
+ module Optimacms
2
+ module PageServices
3
+ # data used for processing page
4
+ class PageData
5
+ attr_accessor :page # page object
6
+ #, :params
7
+ attr_accessor :url, :url_vars
8
+ attr_accessor :lang
9
+ attr_accessor :controller, :action
10
+ attr_accessor :layout
11
+ attr_accessor :template
12
+
13
+ #
14
+ attr_reader :compiled_view_path
15
+
16
+ include PageProcessService
17
+
18
+ def controller_class
19
+ Object.const_get controller.to_s.camelize+'Controller'
20
+ end
21
+
22
+ def url_vars
23
+ @url_vars || {}
24
+ end
25
+
26
+ def lang
27
+ # TODO: calc lang
28
+
29
+ # from url
30
+ lang_url = url_vars.fetch(:lang, '')
31
+
32
+ return lang_url unless lang_url.blank?
33
+
34
+
35
+ I18n.locale
36
+ end
37
+
38
+ def layout
39
+ page.layout
40
+ end
41
+
42
+ def template
43
+ page.template
44
+ end
45
+
46
+ def meta
47
+ page_lang = page.is_translated ? lang : ''
48
+ row = page.translations.where(:lang=>page_lang).first
49
+
50
+ return nil if row.nil?
51
+
52
+ {:title=>row.meta_title, :keywords=>row.meta_keywords, :description=>row.meta_description}
53
+ end
54
+
55
+ def view_content
56
+ return '' if template.basepath.nil?
57
+
58
+ f = template.fullpath
59
+ return '' if !File.exists? f
60
+ File.read(f)
61
+ end
62
+
63
+ def view_filename
64
+ #Rails.root.to_s + '/app/views/'+view_path
65
+ page.template.fullpath
66
+ end
67
+
68
+ def compiled_view_filename
69
+ dir_cache+'/'+@compiled_view_basename
70
+ end
71
+
72
+
73
+ def compiled_view_path
74
+ dirname_views+'/'+@compiled_view_basename
75
+ end
76
+
77
+ def dirname_views
78
+ 'optimacms/cache'
79
+ end
80
+
81
+ def dir_cache
82
+ # TODO: get from settings
83
+ Rails.root.to_s+'/app/views/'+dirname_views
84
+ end
85
+
86
+
87
+ def generate_content
88
+ @compiled_view_basename = generate_view_name
89
+ Optimacms::Fileutils::Fileutils::create_dir_if_not_exists compiled_view_filename
90
+
91
+ text = compile_content view_content
92
+ save_text_to_compiled_view text
93
+ end
94
+
95
+ end
96
+ end
97
+ end
@@ -1,32 +1,32 @@
1
- module Optimacms
2
- module PageServices
3
- module PageProcessService
4
-
5
- def compile_content(page_content)
6
- #res.gsub! /\{\{content\}\}/, page_content
7
- res = page_content
8
-
9
- res
10
- end
11
-
12
- def generate_view_name
13
- uid =SecureRandom.uuid.to_s
14
- id = uid.gsub /[^a-z\d]+/,''
15
- f_path = id+'.html.erb'
16
- #Digest::SHA1.hexdigest(Time.now.to_s)
17
- #filename = dir_cache+'/'+f_path
18
- f_path
19
- #'pages/2.html.erb'
20
- end
21
-
22
- def save_text_to_compiled_view(text)
23
- filename = compiled_view_filename
24
- File.open(filename, "w+") do |f|
25
- f.write(text)
26
- end
27
- end
28
-
29
- end
30
- end
31
- end
32
-
1
+ module Optimacms
2
+ module PageServices
3
+ module PageProcessService
4
+
5
+ def compile_content(page_content)
6
+ #res.gsub! /\{\{content\}\}/, page_content
7
+ res = page_content
8
+
9
+ res
10
+ end
11
+
12
+ def generate_view_name
13
+ uid =SecureRandom.uuid.to_s
14
+ id = uid.gsub /[^a-z\d]+/,''
15
+ f_path = id+'.html.erb'
16
+ #Digest::SHA1.hexdigest(Time.now.to_s)
17
+ #filename = dir_cache+'/'+f_path
18
+ f_path
19
+ #'pages/2.html.erb'
20
+ end
21
+
22
+ def save_text_to_compiled_view(text)
23
+ filename = compiled_view_filename
24
+ File.open(filename, "w+") do |f|
25
+ f.write(text)
26
+ end
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+
@@ -1,157 +1,176 @@
1
- module Optimacms
2
- module PageServices
3
- class PageRouteService
4
-
5
- def self.find_page_by_url(url, lang='')
6
- where_base = 'is_folder = 0 AND enabled = 1 AND '
7
- order = 'url_parts_count DESC, url_vars_count ASC'
8
-
9
- if url.blank?
10
- where = where_base + 'url = \'\''
11
- else
12
- #where = where_base + '\'' + url + '\' REGEXP parsed_url'
13
- where = where_base + '\'' + url + '\''+ " REGEXP parsed_url"
14
- end
15
-
16
- # result
17
- pagedata = PageData.new
18
- pagedata.url = url
19
-
20
- # try 1
21
- rows = Page.where(where).order(order).all
22
- pagedata.page = rows[0] if rows.count>0
23
-
24
- # try 2
25
- if pagedata.page.nil? && url.blank?
26
- where = where_base + "url = '#{lang}'"
27
- rows = Page.where(where).order(order).all
28
-
29
- pagedata.page = rows[0] if row.count>0
30
- end
31
-
32
- return pagedata if pagedata.page.nil?
33
-
34
-
35
- # params from url
36
- pagedata.url_vars = get_url_vars(pagedata.url, pagedata.page)
37
-
38
- # controller
39
- if pagedata.page.controller_action.present?
40
- pagedata.controller, pagedata.action = parse_controller_action(pagedata.page.controller_action)
41
- end
42
-
43
-
44
- pagedata
45
- end
46
-
47
- def self.parse_controller_action(s)
48
- m = s.match /^(\w+)#(\w+)$/
49
- if m
50
- [m[1], m[2]]
51
- else
52
- return nil
53
- end
54
- end
55
-
56
-
57
- REGEX_VARIABLE = '[a-z\d\_]+'
58
-
59
- def self.parse_url(url)
60
- if url.blank?
61
- return '^$'
62
- end
63
-
64
- url_parts = url.split '/'
65
- a = []
66
- url_parts.each do |part|
67
- # check for brackets inside brackets
68
- return nil if part =~ /\{[^{}]*[{}][^{}]*\}/
69
-
70
- # check if any single brackets or symbol $ without brackets or bracket without $
71
- return nil if part =~ /(\{[^}]*$|^[^{]*\}|[^{]\$|\{[^\$])/
72
-
73
- p = part
74
-
75
- # variables
76
- #p.gsub! /\{\$[^}]+\}/, '([^/]+)'
77
- p.gsub! /(\:#{REGEX_VARIABLE})([-\.]|$)/, '([^/]+)\2'
78
-
79
-
80
- # escape system symbols
81
- # replace '.'
82
- p.sub! '.', '[.]'
83
-
84
-
85
- a << p
86
- end
87
-
88
- return '^'+url_parts.join('\/')+'$'
89
- end
90
-
91
- def self.count_url_parts(url)
92
- url_parts = url.split '/'
93
- n = url_parts.count
94
-
95
- # if nothing after the last /
96
- n-=1 if url_parts.last == ''
97
-
98
- n
99
- end
100
-
101
- def self.count_url_vars(url)
102
- #m = url.scan /\{\$[^}]+\}/
103
- m = url.scan /\:#{REGEX_VARIABLE}/
104
- m.count
105
- end
106
-
107
- def self.get_url_vars(url, page_row)
108
- return {} if page_row.nil?
109
- return {} if url.blank?
110
-
111
- #parsed_url = page_row.parsed_url.sub '/', '\/'
112
- parsed_url = page_row.parsed_url
113
-
114
- #if (preg_match('/' . $parsed_url . '/', $url, $values_matches)) {
115
- m_params_in_url = url.scan /#{parsed_url}/
116
-
117
- return nil if m_params_in_url.empty?
118
-
119
- values_matches = m_params_in_url[0]
120
-
121
- # search for variables in URL
122
- #keys_matches = page_row.url.scan /\{\$([^}\/]+)\}/
123
- keys_matches = page_row.url.scan /\:(#{REGEX_VARIABLE})/
124
- if !keys_matches.empty?
125
- keys_matches = keys_matches.map{|r| r[0]}
126
- if keys_matches.count == values_matches.count
127
- res = {}
128
- values_matches.each_with_index do |val, key|
129
- res[keys_matches[key].to_sym] = val
130
- end
131
- #url_vars = array_combine($keys_matches, $values_matches);
132
- return res
133
- else
134
- #user_error('Keys and values has different number of elements');
135
- return {}
136
- end
137
-
138
- elsif m_params_in_url.count == 0
139
- # no variables found, and parsed_url has no variables => return empty []
140
- return {}
141
- else
142
- # smth wrong
143
- return {}
144
- end
145
-
146
- end
147
-
148
- def self.make_url(u, p={})
149
- res = u.gsub(/\:#{REGEX_VARIABLE}/) do
150
- |name| (p[name[1..-1].to_sym] || '')
151
- end
152
- res
153
- end
154
- end
155
-
156
- end
1
+ module Optimacms
2
+ module PageServices
3
+ class PageRouteService
4
+
5
+ def self.find_page_by_url(url, lang='')
6
+ where_base = 'is_folder = 0 AND enabled = 1 AND '
7
+ order = 'url_parts_count DESC, url_vars_count ASC'
8
+
9
+ if url.blank?
10
+ where = where_base + 'url = \'\''
11
+ else
12
+ #where = where_base + '\'' + url + '\' REGEXP parsed_url'
13
+ where = where_base + '\'' + url + '\''+ " REGEXP parsed_url"
14
+ end
15
+
16
+ # result
17
+ pagedata = PageData.new
18
+ pagedata.url = url
19
+
20
+ # try 1
21
+ rows = Page.where(where).order(order).all
22
+ pagedata.page = rows[0] if rows.count>0
23
+
24
+ # try 2
25
+ if pagedata.page.nil? && url.blank?
26
+ where = where_base + "url = '#{lang}'"
27
+ rows = Page.where(where).order(order).all
28
+
29
+ pagedata.page = rows[0] if row.count>0
30
+ end
31
+
32
+ return pagedata if pagedata.page.nil?
33
+
34
+
35
+ # params from url
36
+ pagedata.url_vars = get_url_vars(pagedata.url, pagedata.page)
37
+
38
+ # controller
39
+ if pagedata.page.controller_action.present?
40
+ pagedata.controller, pagedata.action = parse_controller_action(pagedata.page.controller_action)
41
+ end
42
+
43
+
44
+ pagedata
45
+ end
46
+
47
+ def self.parse_controller_action(s)
48
+ m = s.match /^(\w+)#(\w+)$/
49
+ if m
50
+ [m[1], m[2]]
51
+ else
52
+ return nil
53
+ end
54
+ end
55
+
56
+
57
+ REGEX_VARIABLE = '[a-z\d\_]+'
58
+
59
+ def self.parse_url(url)
60
+ if url.blank?
61
+ return '^$'
62
+ end
63
+
64
+ url_parts = url.split '/'
65
+ a = []
66
+ url_parts.each do |part|
67
+ # check for brackets inside brackets
68
+ return nil if part =~ /\{[^{}]*[{}][^{}]*\}/
69
+
70
+ # check if any single brackets or symbol $ without brackets or bracket without $
71
+ return nil if part =~ /(\{[^}]*$|^[^{]*\}|[^{]\$|\{[^\$])/
72
+
73
+ p = part
74
+
75
+ # variables
76
+ #p.gsub! /\{\$[^}]+\}/, '([^/]+)'
77
+ p.gsub! /(\:#{REGEX_VARIABLE})([-\.]|$)/, '([^/]+)\2'
78
+
79
+
80
+ # escape system symbols
81
+ # replace '.'
82
+ p.sub! '.', '[.]'
83
+
84
+
85
+ a << p
86
+ end
87
+
88
+ return '^'+url_parts.join('\/')+'$'
89
+ end
90
+
91
+ def self.count_url_parts(url)
92
+ url_parts = url.split '/'
93
+ n = url_parts.count
94
+
95
+ # if nothing after the last /
96
+ n-=1 if url_parts.last == ''
97
+
98
+ n
99
+ end
100
+
101
+ def self.count_url_vars(url)
102
+ #m = url.scan /\{\$[^}]+\}/
103
+ m = url.scan /\:#{REGEX_VARIABLE}/
104
+ m.count
105
+ end
106
+
107
+ def self.get_url_vars(url, page_row)
108
+ return {} if page_row.nil?
109
+ return {} if url.blank?
110
+
111
+ #parsed_url = page_row.parsed_url.sub '/', '\/'
112
+ parsed_url = page_row.parsed_url
113
+
114
+ #if (preg_match('/' . $parsed_url . '/', $url, $values_matches)) {
115
+ m_params_in_url = url.scan /#{parsed_url}/
116
+
117
+ return nil if m_params_in_url.empty?
118
+
119
+ values_matches = m_params_in_url[0]
120
+
121
+ # search for variables in URL
122
+ #keys_matches = page_row.url.scan /\{\$([^}\/]+)\}/
123
+ keys_matches = page_row.url.scan /\:(#{REGEX_VARIABLE})/
124
+ if !keys_matches.empty?
125
+ keys_matches = keys_matches.map{|r| r[0]}
126
+ if keys_matches.count == values_matches.count
127
+ res = {}
128
+ values_matches.each_with_index do |val, key|
129
+ res[keys_matches[key].to_sym] = val
130
+ end
131
+ #url_vars = array_combine($keys_matches, $values_matches);
132
+ return res
133
+ else
134
+ #user_error('Keys and values has different number of elements');
135
+ return {}
136
+ end
137
+
138
+ elsif m_params_in_url.count == 0
139
+ # no variables found, and parsed_url has no variables => return empty []
140
+ return {}
141
+ else
142
+ # smth wrong
143
+ return {}
144
+ end
145
+
146
+ end
147
+
148
+ def self.make_url(u, params_extra={})
149
+ p = params_extra.keys.map{|x| x.to_sym}
150
+
151
+ p_used = []
152
+ res = u.gsub(/\:#{REGEX_VARIABLE}/) do |name|
153
+ p_used << name[1..-1].to_sym
154
+ (params_extra[name[1..-1].to_sym] || '')
155
+ end
156
+
157
+ # add extra params
158
+ p_not_used = p - p_used - [:controller, :action, :only_path, :url]
159
+
160
+ #
161
+ a_extra = []
162
+ p_not_used.each do |name|
163
+ a_extra << "#{name}=#{(params_extra[name] || '')}"
164
+ end
165
+ if a_extra.length>0
166
+ res = res + '?'+a_extra.join('&')
167
+ end
168
+
169
+ #
170
+ #res.gsub! /\?$/, ''
171
+ res
172
+ end
173
+ end
174
+
175
+ end
157
176
  end