optimacms 0.1.54 → 0.1.55

Sign up to get free protection for your applications and to get access to all the features.
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 -167
  21. data/app/controllers/optimacms/tinymce_assets_controller.rb +20 -20
  22. data/app/helpers/optimacms/application_helper.rb +20 -3
  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 +82 -69
  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 +156 -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/html1.html +1 -1
  101. data/spec/dummy/app/views/temp/p1.html.haml +6 -6
  102. data/spec/dummy/app/views/temp/t1.html.haml +13 -13
  103. data/spec/dummy/app/views/temp9/t2.html +8 -8
  104. data/spec/dummy/app/views/workers/_breadcrumb_worker.html.haml +11 -11
  105. data/spec/dummy/app/views/workers/_breadcrumb_workers.html.haml +9 -9
  106. data/spec/dummy/app/views/workers/_contacts_our.html.haml +3 -3
  107. data/spec/dummy/app/views/workers/_list_worker.html.haml +46 -46
  108. data/spec/dummy/app/views/workers/_list_workers.html.haml +6 -6
  109. data/spec/dummy/app/views/workers/_share_js.html.haml +22 -22
  110. data/spec/dummy/app/views/workers/_share_worker.html.haml +11 -11
  111. data/spec/dummy/app/views/workers/_show_info.html.haml +53 -53
  112. data/spec/dummy/app/views/workers/_tabs.html.haml +11 -11
  113. data/spec/dummy/app/views/workers/contacts.html.haml +19 -19
  114. data/spec/dummy/app/views/workers/index.html.haml +49 -49
  115. data/spec/dummy/app/views/workers/portfolio.html.haml +20 -20
  116. data/spec/dummy/app/views/workers/services.html.haml +11 -11
  117. data/spec/dummy/app/views/workers/show.html.haml +53 -53
  118. data/spec/dummy/app/views/workers/show_notfound.html.haml +8 -8
  119. data/spec/dummy/app/views/workers/t2.html.haml +1 -1
  120. data/spec/dummy/app/views/workers/work.html.haml +43 -43
  121. data/spec/dummy/config/tinymce.yml +5 -5
  122. data/spec/dummy/db/schema.rb +164 -164
  123. data/spec/dummy/log/development.log +0 -20396
  124. data/spec/factories/page.rb +25 -25
  125. data/spec/models/page_spec.rb +92 -92
  126. data/spec/spec_helper.rb +89 -89
  127. data/spec/support/factory_girl.rb +15 -15
  128. metadata +1431 -1817
  129. data/spec/dummy/app/views/temp/_part2.html.haml +0 -1
  130. data/spec/dummy/log/test.log +0 -203
  131. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/application.css.scssc +0 -0
  132. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/bootstrap_and_overrides.css.scssc +0 -0
  133. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/bootstrap_custom.css.scssc +0 -0
  134. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/bootstrap_variables.css.scssc +0 -0
  135. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/tpl.css.scssc +0 -0
  136. data/spec/dummy/tmp/cache/assets/development/sass/18577b7353d72dbc7e81d46af07240af8557f987/_hacks.scssc +0 -0
  137. data/spec/dummy/tmp/cache/assets/development/sass/255a203cf5ecbb5470dfd267d6d4b923c8f1e5f0/_css3.scssc +0 -0
  138. data/spec/dummy/tmp/cache/assets/development/sass/255a203cf5ecbb5470dfd267d6d4b923c8f1e5f0/_support.scssc +0 -0
  139. data/spec/dummy/tmp/cache/assets/development/sass/4b8b59c3cee3225b46cdcaa54f7d0474421be9c6/_bootstrap-sprockets.scssc +0 -0
  140. data/spec/dummy/tmp/cache/assets/development/sass/7f871ea7e3a8127767d5a5868622ef2909611f26/noskin.css.scssc +0 -0
  141. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/admin.css.scssc +0 -0
  142. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/admin_tpl.css.scssc +0 -0
  143. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/bootstrap_and_overrides.css.scssc +0 -0
  144. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/bootstrap_custom.css.scssc +0 -0
  145. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/bootstrap_variables.css.scssc +0 -0
  146. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/colors.css.scssc +0 -0
  147. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/tinymce.css.scssc +0 -0
  148. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/tpl.css.scssc +0 -0
  149. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_alerts.scssc +0 -0
  150. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_background-variant.scssc +0 -0
  151. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_border-radius.scssc +0 -0
  152. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_buttons.scssc +0 -0
  153. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_center-block.scssc +0 -0
  154. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_clearfix.scssc +0 -0
  155. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_forms.scssc +0 -0
  156. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_gradients.scssc +0 -0
  157. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_grid-framework.scssc +0 -0
  158. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_grid.scssc +0 -0
  159. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_hide-text.scssc +0 -0
  160. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_image.scssc +0 -0
  161. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_labels.scssc +0 -0
  162. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_list-group.scssc +0 -0
  163. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_nav-divider.scssc +0 -0
  164. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_nav-vertical-align.scssc +0 -0
  165. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_opacity.scssc +0 -0
  166. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_pagination.scssc +0 -0
  167. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_panels.scssc +0 -0
  168. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_progress-bar.scssc +0 -0
  169. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_reset-filter.scssc +0 -0
  170. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_resize.scssc +0 -0
  171. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_responsive-visibility.scssc +0 -0
  172. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_size.scssc +0 -0
  173. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_tab-focus.scssc +0 -0
  174. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_table-row.scssc +0 -0
  175. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_text-emphasis.scssc +0 -0
  176. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_text-overflow.scssc +0 -0
  177. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_vendor-prefixes.scssc +0 -0
  178. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_appearance.scssc +0 -0
  179. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_background-clip.scssc +0 -0
  180. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_background-origin.scssc +0 -0
  181. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_background-size.scssc +0 -0
  182. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_border-radius.scssc +0 -0
  183. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_box-shadow.scssc +0 -0
  184. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_box-sizing.scssc +0 -0
  185. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_box.scssc +0 -0
  186. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_columns.scssc +0 -0
  187. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_filter.scssc +0 -0
  188. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_font-face.scssc +0 -0
  189. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_hyphenation.scssc +0 -0
  190. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_images.scssc +0 -0
  191. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_inline-block.scssc +0 -0
  192. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_opacity.scssc +0 -0
  193. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_regions.scssc +0 -0
  194. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_shared.scssc +0 -0
  195. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_text-shadow.scssc +0 -0
  196. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_transform.scssc +0 -0
  197. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_transition.scssc +0 -0
  198. data/spec/dummy/tmp/cache/assets/development/sass/e04ca948242d213270bfe676c8b96e7b33226468/_user-interface.scssc +0 -0
  199. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_alerts.scssc +0 -0
  200. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_badges.scssc +0 -0
  201. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_breadcrumbs.scssc +0 -0
  202. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_button-groups.scssc +0 -0
  203. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_buttons.scssc +0 -0
  204. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_carousel.scssc +0 -0
  205. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_close.scssc +0 -0
  206. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_code.scssc +0 -0
  207. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_component-animations.scssc +0 -0
  208. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_dropdowns.scssc +0 -0
  209. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_forms.scssc +0 -0
  210. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_glyphicons.scssc +0 -0
  211. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_grid.scssc +0 -0
  212. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_input-groups.scssc +0 -0
  213. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_jumbotron.scssc +0 -0
  214. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_labels.scssc +0 -0
  215. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_list-group.scssc +0 -0
  216. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_media.scssc +0 -0
  217. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_mixins.scssc +0 -0
  218. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_modals.scssc +0 -0
  219. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_navbar.scssc +0 -0
  220. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_navs.scssc +0 -0
  221. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_normalize.scssc +0 -0
  222. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_pager.scssc +0 -0
  223. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_pagination.scssc +0 -0
  224. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_panels.scssc +0 -0
  225. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_popovers.scssc +0 -0
  226. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_print.scssc +0 -0
  227. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_progress-bars.scssc +0 -0
  228. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_responsive-embed.scssc +0 -0
  229. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_responsive-utilities.scssc +0 -0
  230. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_scaffolding.scssc +0 -0
  231. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_tables.scssc +0 -0
  232. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_thumbnails.scssc +0 -0
  233. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_tooltip.scssc +0 -0
  234. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_type.scssc +0 -0
  235. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_utilities.scssc +0 -0
  236. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_variables.scssc +0 -0
  237. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_wells.scssc +0 -0
  238. data/spec/dummy/tmp/cache/assets/development/sass/fc41a79de5ec40d34c8a83221f3f3da2c64f4153/font-awesome.css.erbc +0 -0
  239. data/spec/dummy/tmp/cache/assets/development/sprockets/002bd8f28c62a795a10ce5716ceffc21 +0 -0
  240. data/spec/dummy/tmp/cache/assets/development/sprockets/053f826d1ea01a2fac355de0755e5c40 +0 -0
  241. data/spec/dummy/tmp/cache/assets/development/sprockets/05e27d4921b00a0fdddb47a737a64494 +0 -0
  242. data/spec/dummy/tmp/cache/assets/development/sprockets/0a470277dd21c166b9dfb68b03d34d5c +0 -0
  243. data/spec/dummy/tmp/cache/assets/development/sprockets/0b1671e1bffda60e6a95f72b9176d628 +0 -0
  244. data/spec/dummy/tmp/cache/assets/development/sprockets/0c01383de62960e3667c7bf3788ecdb6 +0 -0
  245. data/spec/dummy/tmp/cache/assets/development/sprockets/0d2f255829ff9f72d98dead4f35ddf02 +0 -0
  246. data/spec/dummy/tmp/cache/assets/development/sprockets/11f54468370774efca0fe1afb2ebf1d9 +0 -0
  247. data/spec/dummy/tmp/cache/assets/development/sprockets/1c0ef71c34dc1d573e1b4b527116e3cc +0 -0
  248. data/spec/dummy/tmp/cache/assets/development/sprockets/2168c08c151d642aa46ea4bc6283929c +0 -0
  249. data/spec/dummy/tmp/cache/assets/development/sprockets/2a9369c8d28de014045a120b692e8139 +0 -0
  250. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  251. data/spec/dummy/tmp/cache/assets/development/sprockets/2f7d38a264678a2db4a0d569a3313cb1 +0 -0
  252. data/spec/dummy/tmp/cache/assets/development/sprockets/3240ef40c1dc9d13156bbd790ec2651a +0 -0
  253. data/spec/dummy/tmp/cache/assets/development/sprockets/332dfe4887cbad3adbd20e6609fa4960 +0 -0
  254. data/spec/dummy/tmp/cache/assets/development/sprockets/3347cc312918facec5bbac684ea65715 +0 -0
  255. data/spec/dummy/tmp/cache/assets/development/sprockets/3cd4037d8c32ad8fcdd5e3bbb8dfc35a +0 -0
  256. data/spec/dummy/tmp/cache/assets/development/sprockets/4016d2fd0b776ceb82fcbfbc5d2e26b1 +0 -0
  257. data/spec/dummy/tmp/cache/assets/development/sprockets/43dc3e92cd09deb0fc54dd97b46935e9 +0 -0
  258. data/spec/dummy/tmp/cache/assets/development/sprockets/452d7e35d5a012ae12fa7346fcf2239b +0 -0
  259. data/spec/dummy/tmp/cache/assets/development/sprockets/49c7cb5dd916ffc9e87ce3b989c92062 +0 -0
  260. data/spec/dummy/tmp/cache/assets/development/sprockets/529a74a4530de52f6c3ebbf107ffe9f2 +0 -0
  261. data/spec/dummy/tmp/cache/assets/development/sprockets/55a2847335c39261e1efe764deb18592 +0 -0
  262. data/spec/dummy/tmp/cache/assets/development/sprockets/56c7eb172a7423728c45d0a751d198e3 +0 -0
  263. data/spec/dummy/tmp/cache/assets/development/sprockets/6789fe765d536063c998330523bb12b9 +0 -0
  264. data/spec/dummy/tmp/cache/assets/development/sprockets/678a2e392e656b8132f0420e4ec28ed6 +0 -0
  265. data/spec/dummy/tmp/cache/assets/development/sprockets/6843f0414f73089579ae0f9fddf7b38f +0 -0
  266. data/spec/dummy/tmp/cache/assets/development/sprockets/6c7c58744c14732af9bf574870fdf07e +0 -0
  267. data/spec/dummy/tmp/cache/assets/development/sprockets/6cdbd6f171a27a578bcb07dd5bfa83a2 +0 -0
  268. data/spec/dummy/tmp/cache/assets/development/sprockets/6e431ed1dfb5bbcbd33a5f9e069dd3ab +0 -0
  269. data/spec/dummy/tmp/cache/assets/development/sprockets/6f943f22c610e6417422e4a13e0bcc0d +0 -0
  270. data/spec/dummy/tmp/cache/assets/development/sprockets/73fbaa501dc0b072cf2c27fa7dfe0d91 +0 -0
  271. data/spec/dummy/tmp/cache/assets/development/sprockets/7c886717bced4d59ab89e012b52f40de +0 -0
  272. data/spec/dummy/tmp/cache/assets/development/sprockets/821470da3272c8b99070972d4f4f58ca +0 -0
  273. data/spec/dummy/tmp/cache/assets/development/sprockets/88d843fcb07453d1057fac1e254fde0d +0 -0
  274. data/spec/dummy/tmp/cache/assets/development/sprockets/8956737a82f17db48d50e13f133aeefc +0 -0
  275. data/spec/dummy/tmp/cache/assets/development/sprockets/8ab512c9b33ac90e699b73469d71f061 +0 -0
  276. data/spec/dummy/tmp/cache/assets/development/sprockets/8b5a7992567ebbeb9a882d074778f8c8 +0 -0
  277. data/spec/dummy/tmp/cache/assets/development/sprockets/8d71fe4f0e2910900097bdc07bf2d6af +0 -0
  278. data/spec/dummy/tmp/cache/assets/development/sprockets/8e1785ddbfab42cd2df0416eb3932253 +0 -0
  279. data/spec/dummy/tmp/cache/assets/development/sprockets/9024d024c62c2668836b1e1b7b3b78cc +0 -0
  280. data/spec/dummy/tmp/cache/assets/development/sprockets/928ed298f875a25727ca516f5c03f344 +0 -0
  281. data/spec/dummy/tmp/cache/assets/development/sprockets/97c1e12a09973e0fb97f23a1dc496443 +0 -0
  282. data/spec/dummy/tmp/cache/assets/development/sprockets/991576185140a77411185839fd0533f1 +0 -0
  283. data/spec/dummy/tmp/cache/assets/development/sprockets/99e8d6370ba85ec4a61d953f5ed261af +0 -0
  284. data/spec/dummy/tmp/cache/assets/development/sprockets/9ee80730ab26986d507820ac7a288d5c +0 -0
  285. data/spec/dummy/tmp/cache/assets/development/sprockets/a3faca31eb11ba1a981535f9c8408282 +0 -0
  286. data/spec/dummy/tmp/cache/assets/development/sprockets/a5c68a2aec806face32c749f380f1e14 +0 -0
  287. data/spec/dummy/tmp/cache/assets/development/sprockets/a64dbcf0e4afe0985b1abd3e209d17cd +0 -0
  288. data/spec/dummy/tmp/cache/assets/development/sprockets/a6d357fbe03dae6f590180f6c5e0e148 +0 -0
  289. data/spec/dummy/tmp/cache/assets/development/sprockets/aa58fb159780a7200a1bc4c6844cc5c4 +0 -0
  290. data/spec/dummy/tmp/cache/assets/development/sprockets/aaba73a43e02d8c6550bae851f17e7a0 +0 -0
  291. data/spec/dummy/tmp/cache/assets/development/sprockets/af26c017afcf68f1edd44a4c9bb942e4 +0 -0
  292. data/spec/dummy/tmp/cache/assets/development/sprockets/b3defd466aec80b128284b8d85324630 +0 -0
  293. data/spec/dummy/tmp/cache/assets/development/sprockets/b48ed8a3de3ca66055ee4fd18b16421f +0 -0
  294. data/spec/dummy/tmp/cache/assets/development/sprockets/ba9859d0d2b7d4d7d5b03ff3a71ed478 +0 -0
  295. data/spec/dummy/tmp/cache/assets/development/sprockets/bcca522c6302f184f12fe0e8a7d7e71a +0 -0
  296. data/spec/dummy/tmp/cache/assets/development/sprockets/be8a0cd6c3605b9d7c22642609316a9f +0 -0
  297. data/spec/dummy/tmp/cache/assets/development/sprockets/c11c6d97cfc7ef7945fa87f14b44445c +0 -0
  298. data/spec/dummy/tmp/cache/assets/development/sprockets/c13fc73ceafa45876a901b3e775b83ae +0 -0
  299. data/spec/dummy/tmp/cache/assets/development/sprockets/c5f3450b5366b6fbdc4172ce089fba48 +0 -0
  300. data/spec/dummy/tmp/cache/assets/development/sprockets/c982bb1e71844744a60dc9b4afcb2f49 +0 -0
  301. data/spec/dummy/tmp/cache/assets/development/sprockets/cf24c3f1bb8adb1f168758f2bd9775c9 +0 -0
  302. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  303. data/spec/dummy/tmp/cache/assets/development/sprockets/d3e5a199890ba7c706fc62c2b891714d +0 -0
  304. data/spec/dummy/tmp/cache/assets/development/sprockets/d584baf83d8a779d945f9668f902fa7c +0 -0
  305. data/spec/dummy/tmp/cache/assets/development/sprockets/d71b820ce5f8b310e466f517bd3a8e4b +0 -0
  306. data/spec/dummy/tmp/cache/assets/development/sprockets/d8dab59d17daf5a5081153e2ad7d09b4 +0 -0
  307. data/spec/dummy/tmp/cache/assets/development/sprockets/dd4a8658311b7a2cd8effa6479827559 +0 -0
  308. data/spec/dummy/tmp/cache/assets/development/sprockets/e11970a225a09526aac3f76d7ee91822 +0 -0
  309. data/spec/dummy/tmp/cache/assets/development/sprockets/e3dd086dd858b5bff9cfd60a031c2091 +0 -0
  310. data/spec/dummy/tmp/cache/assets/development/sprockets/e43bcf201d76cdf6e1fe345195c1cd9e +0 -0
  311. data/spec/dummy/tmp/cache/assets/development/sprockets/e945ca604ee0240455a5652953b3e495 +0 -0
  312. data/spec/dummy/tmp/cache/assets/development/sprockets/ec33505f0e2ed4dd12951ecceffa3695 +0 -0
  313. data/spec/dummy/tmp/cache/assets/development/sprockets/ee287313e28f341f83628dec0a353fa6 +0 -0
  314. data/spec/dummy/tmp/cache/assets/development/sprockets/ee9a23832dc2a49ee6ec6d3f1d6a0e1f +0 -0
  315. data/spec/dummy/tmp/cache/assets/development/sprockets/ef2d6862f5fd690c5387cafd88944a9f +0 -0
  316. data/spec/dummy/tmp/cache/assets/development/sprockets/ef8c3824b85ed745cad651aadda4f2b8 +0 -0
  317. data/spec/dummy/tmp/cache/assets/development/sprockets/f557612d05bb9fea499dce8352b3f0ca +0 -0
  318. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  319. data/spec/dummy/tmp/cache/assets/development/sprockets/f7f3056583a2454471a4a5f7200dcefa +0 -0
  320. data/spec/dummy/tmp/cache/assets/development/sprockets/f9c51fa87975943d31bc1bfd7cb684c6 +0 -0
  321. data/spec/dummy/tmp/cache/assets/development/sprockets/ff9ed89418a3f78032b8f8184dd98e80 +0 -0
@@ -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,157 @@
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, 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
157
157
  end
@@ -1,33 +1,33 @@
1
- module Optimacms
2
- module SimpleFormExtensions
3
- module ButtonComponents
4
- def submit_cancel(*args, &block)
5
- template.content_tag :div, :class => "form-group" do
6
- template.content_tag :div, :class => "col-sm-offset-1 col-sm-6" do
7
- options = args.extract_options!
8
-
9
- # class
10
- options[:class] = [options[:class], 'btn', 'btn-primary', 'btn-lg'].compact
11
-
12
- #
13
- args << options
14
-
15
-
16
- # with cancel link
17
- if cancel = options.delete(:cancel)
18
- submit(*args, &block) + '&nbsp;&nbsp;'.html_safe + template.link_to(I18n.t('simple_form.buttons.cancel'), cancel)
19
- else
20
- submit(*args, &block)
21
- end
22
-
23
- end
24
- end
25
- end
26
-
27
- end
28
-
29
- SimpleForm::FormBuilder.send :include, ButtonComponents
30
- end
31
- end
32
-
33
-
1
+ module Optimacms
2
+ module SimpleFormExtensions
3
+ module ButtonComponents
4
+ def submit_cancel(*args, &block)
5
+ template.content_tag :div, :class => "form-group" do
6
+ template.content_tag :div, :class => "col-sm-offset-1 col-sm-6" do
7
+ options = args.extract_options!
8
+
9
+ # class
10
+ options[:class] = [options[:class], 'btn', 'btn-primary', 'btn-lg'].compact
11
+
12
+ #
13
+ args << options
14
+
15
+
16
+ # with cancel link
17
+ if cancel = options.delete(:cancel)
18
+ submit(*args, &block) + '&nbsp;&nbsp;'.html_safe + template.link_to(I18n.t('simple_form.buttons.cancel'), cancel)
19
+ else
20
+ submit(*args, &block)
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ SimpleForm::FormBuilder.send :include, ButtonComponents
30
+ end
31
+ end
32
+
33
+
@@ -1,3 +1,3 @@
1
- module Optimacms
2
- VERSION = "0.1.54"
3
- end
1
+ module Optimacms
2
+ VERSION = "0.1.55"
3
+ end
@@ -1,11 +1,11 @@
1
- @import "compass/css3";
2
-
3
- @import "font-awesome";
4
-
5
- @import "bootstrap_variables";
6
- @import "bootstrap-sprockets";
7
- @import "bootstrap_custom";
8
- @import "bootstrap_and_overrides";
9
-
10
-
11
-
1
+ @import "compass/css3";
2
+
3
+ @import "font-awesome";
4
+
5
+ @import "bootstrap_variables";
6
+ @import "bootstrap-sprockets";
7
+ @import "bootstrap_custom";
8
+ @import "bootstrap_and_overrides";
9
+
10
+
11
+
@@ -1,3 +1,3 @@
1
- body { padding-top: 0px; }
2
-
3
-
1
+ body { padding-top: 0px; }
2
+
3
+