optimacms 0.1.53 → 0.1.54

Sign up to get free protection for your applications and to get access to all the features.
Files changed (377) 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 +167 -167
  21. data/app/controllers/optimacms/tinymce_assets_controller.rb +20 -20
  22. data/app/helpers/optimacms/forms_helper.rb +75 -75
  23. data/app/inputs/textarea_tinymce_input.rb +27 -27
  24. data/app/models/concerns/optimacms/meta_content.rb +63 -63
  25. data/app/models/optimacms/language.rb +14 -14
  26. data/app/models/optimacms/layout.rb +53 -53
  27. data/app/models/optimacms/mediafile.rb +17 -17
  28. data/app/models/optimacms/page.rb +171 -171
  29. data/app/models/optimacms/page_translation.rb +10 -10
  30. data/app/models/optimacms/template.rb +390 -390
  31. data/app/models/optimacms/template_type.rb +20 -20
  32. data/app/views/optimacms/admin/common/_js_tinymce.html.haml +49 -49
  33. data/app/views/optimacms/admin/common/_modal_div.html.haml +16 -16
  34. data/app/views/optimacms/admin/dashboard/index.html.haml +18 -18
  35. data/app/views/optimacms/admin/layouts/_form.html.haml +22 -22
  36. data/app/views/optimacms/admin/layouts/edit.html.haml +5 -5
  37. data/app/views/optimacms/admin/layouts/index.html.haml +25 -25
  38. data/app/views/optimacms/admin/layouts/main.html.haml +6 -6
  39. data/app/views/optimacms/admin/layouts/new.html.haml +5 -5
  40. data/app/views/optimacms/admin/pages/_form.html.haml +78 -78
  41. data/app/views/optimacms/admin/pages/_form_folder.html.haml +14 -14
  42. data/app/views/optimacms/admin/pages/_form_old.html.haml +107 -107
  43. data/app/views/optimacms/admin/pages/_meta.html.haml +48 -48
  44. data/app/views/optimacms/admin/pages/edit.html.haml +5 -5
  45. data/app/views/optimacms/admin/pages/editfolder.html.haml +15 -15
  46. data/app/views/optimacms/admin/pages/index.html.haml +58 -58
  47. data/app/views/optimacms/admin/pages/new.html.haml +5 -5
  48. data/app/views/optimacms/admin/pages/newfolder.html.haml +15 -15
  49. data/app/views/optimacms/admin/shared/_breadcrumbs.html.haml +7 -7
  50. data/app/views/optimacms/admin/shared/_flash.html.haml +23 -23
  51. data/app/views/optimacms/admin/shared/_footer.html.haml +5 -5
  52. data/app/views/optimacms/admin/shared/_form_errors.html.haml +11 -11
  53. data/app/views/optimacms/admin/shared/_leftmenu.html.haml +49 -49
  54. data/app/views/optimacms/admin/shared/_top.html.haml +33 -33
  55. data/app/views/optimacms/admin/templates/_form.html.haml +61 -61
  56. data/app/views/optimacms/admin/templates/_js_form_modal.html.haml +43 -43
  57. data/app/views/optimacms/admin/templates/create.js.haml +3 -3
  58. data/app/views/optimacms/admin/templates/edit.html.haml +5 -5
  59. data/app/views/optimacms/admin/templates/editfolder.html.haml +31 -31
  60. data/app/views/optimacms/admin/templates/index.html.haml +48 -48
  61. data/app/views/optimacms/admin/templates/new.html.haml +37 -37
  62. data/app/views/optimacms/admin/templates/newattach.html.haml +32 -32
  63. data/app/views/optimacms/admin/templates/newfolder.html.haml +28 -28
  64. data/app/views/optimacms/elfinder/index.html.erb +54 -54
  65. data/config/initializers/assets.rb +2 -2
  66. data/config/initializers/kaminari.rb +10 -10
  67. data/config/initializers/paperclip.rb +11 -11
  68. data/config/initializers/paperclip_media_type_spoof_detector_override.rb +7 -7
  69. data/config/initializers/simple_form.rb +166 -166
  70. data/config/initializers/simple_form_bootstrap.rb +146 -146
  71. data/config/locales/simple_form.en.yml +3 -3
  72. data/config/locales/simple_form.ru.yml +3 -3
  73. data/config/tinymce.yml +6 -6
  74. data/lib/optimacms/fileutils/fileutils.rb +39 -39
  75. data/lib/optimacms/filters/form_filter.rb +226 -226
  76. data/lib/optimacms/mycontroller.rb +69 -69
  77. data/lib/optimacms/page_services/page_data.rb +97 -97
  78. data/lib/optimacms/page_services/page_process_service.rb +32 -32
  79. data/lib/optimacms/page_services/page_route_service.rb +156 -155
  80. data/lib/optimacms/simple_form_extensions/button_components.rb +33 -33
  81. data/lib/optimacms/version.rb +3 -3
  82. data/spec/dummy/app/assets/stylesheets/application.css.scss +11 -11
  83. data/spec/dummy/app/assets/stylesheets/bootstrap_and_overrides.css.scss +3 -3
  84. data/spec/dummy/app/assets/stylesheets/bootstrap_custom.css.scss +49 -49
  85. data/spec/dummy/app/assets/stylesheets/tpl.css.scss +62 -62
  86. data/spec/dummy/app/controllers/home_controller.rb +6 -6
  87. data/spec/dummy/app/controllers/my_controller.rb +6 -6
  88. data/spec/dummy/app/controllers/news_controller.rb +46 -46
  89. data/spec/dummy/app/models/news.rb +7 -7
  90. data/spec/dummy/app/views/home/index.html.haml +18 -18
  91. data/spec/dummy/app/views/my/hello.html.haml +4 -4
  92. data/spec/dummy/app/views/news/index.html.haml +13 -13
  93. data/spec/dummy/app/views/news/show.html.haml +6 -6
  94. data/spec/dummy/app/views/pages/1.html.erb +16 -16
  95. data/spec/dummy/app/views/pages/about.html.erb +12 -12
  96. data/spec/dummy/app/views/pages/text1.html +1 -1
  97. data/spec/dummy/app/views/services/index.html.haml +9 -9
  98. data/spec/dummy/app/views/services/service.html.haml +2 -2
  99. data/spec/dummy/app/views/temp/_part2.html.haml +1 -0
  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/database.yml +0 -4
  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 +20225 -827
  125. data/spec/dummy/log/test.log +203 -0
  126. data/spec/dummy/tmp/cache/assets/development/sass/0abc660c880b2e10d695d713e519e6a4257cd348/tpl.css.scssc +0 -0
  127. data/spec/dummy/tmp/cache/assets/development/sass/{307fb08091d8c0489104a05b321a9f2b0f1eef38 → 18577b7353d72dbc7e81d46af07240af8557f987}/_hacks.scssc +0 -0
  128. data/spec/dummy/tmp/cache/assets/development/sass/{4dcf8798a5e82c6e1fb349f566278d8a474e98e2 → a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13}/bootstrap_variables.css.scssc +0 -0
  129. data/spec/dummy/tmp/cache/assets/development/sass/a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13/tinymce.css.scssc +0 -0
  130. data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_background-variant.scssc +0 -0
  131. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_buttons.scssc +0 -0
  132. data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_forms.scssc +0 -0
  133. data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_grid-framework.scssc +0 -0
  134. data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_grid.scssc +0 -0
  135. data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_hide-text.scssc +0 -0
  136. data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_list-group.scssc +0 -0
  137. data/spec/dummy/tmp/cache/assets/development/sass/bfa17faa2a4aa370d46a5900b72c48f05b4837d1/_pagination.scssc +0 -0
  138. data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_responsive-visibility.scssc +0 -0
  139. data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_text-emphasis.scssc +0 -0
  140. data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_shared.scssc +0 -0
  141. data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_transition.scssc +0 -0
  142. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_badges.scssc +0 -0
  143. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_button-groups.scssc +0 -0
  144. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_buttons.scssc +0 -0
  145. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_carousel.scssc +0 -0
  146. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_dropdowns.scssc +0 -0
  147. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_forms.scssc +0 -0
  148. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_glyphicons.scssc +0 -0
  149. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_input-groups.scssc +0 -0
  150. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_jumbotron.scssc +0 -0
  151. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_list-group.scssc +0 -0
  152. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_media.scssc +0 -0
  153. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_mixins.scssc +0 -0
  154. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_modals.scssc +0 -0
  155. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_navbar.scssc +0 -0
  156. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_normalize.scssc +0 -0
  157. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_pagination.scssc +0 -0
  158. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_panels.scssc +0 -0
  159. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_popovers.scssc +0 -0
  160. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_print.scssc +0 -0
  161. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_responsive-utilities.scssc +0 -0
  162. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_scaffolding.scssc +0 -0
  163. data/spec/dummy/tmp/cache/assets/development/sass/e541a95436c6e387d69ff457c2fe7f7bd11c2069/_tooltip.scssc +0 -0
  164. data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_variables.scssc +0 -0
  165. data/spec/dummy/tmp/cache/assets/development/sass/fc41a79de5ec40d34c8a83221f3f3da2c64f4153/font-awesome.css.erbc +0 -0
  166. data/spec/dummy/tmp/cache/assets/development/sprockets/{19c3216decf9ae2503797ae0dd16df65 → 002bd8f28c62a795a10ce5716ceffc21} +0 -0
  167. data/spec/dummy/tmp/cache/assets/development/sprockets/053f826d1ea01a2fac355de0755e5c40 +0 -0
  168. data/spec/dummy/tmp/cache/assets/development/sprockets/{a2babeef0007520d369a40d06032ab96 → 05e27d4921b00a0fdddb47a737a64494} +0 -0
  169. data/spec/dummy/tmp/cache/assets/development/sprockets/0a470277dd21c166b9dfb68b03d34d5c +0 -0
  170. data/spec/dummy/tmp/cache/assets/development/sprockets/0b1671e1bffda60e6a95f72b9176d628 +0 -0
  171. data/spec/dummy/tmp/cache/assets/development/sprockets/{3c62e52b2b7812cd045e255b1f85cc7f → 0c01383de62960e3667c7bf3788ecdb6} +0 -0
  172. data/spec/dummy/tmp/cache/assets/development/sprockets/0d2f255829ff9f72d98dead4f35ddf02 +0 -0
  173. data/spec/dummy/tmp/cache/assets/development/sprockets/{9bde9a1775257c7587d7f5254c3fc7a0 → 11f54468370774efca0fe1afb2ebf1d9} +0 -0
  174. data/spec/dummy/tmp/cache/assets/development/sprockets/1c0ef71c34dc1d573e1b4b527116e3cc +0 -0
  175. data/spec/dummy/tmp/cache/assets/development/sprockets/2168c08c151d642aa46ea4bc6283929c +0 -0
  176. data/spec/dummy/tmp/cache/assets/development/sprockets/{78fc4ca638e7834ef879b249ea5599d9 → 2a9369c8d28de014045a120b692e8139} +0 -0
  177. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  178. data/spec/dummy/tmp/cache/assets/development/sprockets/2f7d38a264678a2db4a0d569a3313cb1 +0 -0
  179. data/spec/dummy/tmp/cache/assets/development/sprockets/3240ef40c1dc9d13156bbd790ec2651a +0 -0
  180. data/spec/dummy/tmp/cache/assets/development/sprockets/332dfe4887cbad3adbd20e6609fa4960 +0 -0
  181. data/spec/dummy/tmp/cache/assets/development/sprockets/3347cc312918facec5bbac684ea65715 +0 -0
  182. data/spec/dummy/tmp/cache/assets/development/sprockets/3cd4037d8c32ad8fcdd5e3bbb8dfc35a +0 -0
  183. data/spec/dummy/tmp/cache/assets/development/sprockets/4016d2fd0b776ceb82fcbfbc5d2e26b1 +0 -0
  184. data/spec/dummy/tmp/cache/assets/development/sprockets/43dc3e92cd09deb0fc54dd97b46935e9 +0 -0
  185. data/spec/dummy/tmp/cache/assets/development/sprockets/452d7e35d5a012ae12fa7346fcf2239b +0 -0
  186. data/spec/dummy/tmp/cache/assets/development/sprockets/49c7cb5dd916ffc9e87ce3b989c92062 +0 -0
  187. data/spec/dummy/tmp/cache/assets/development/sprockets/{e2dc6e1d968a103a86d751cea044f02e → 529a74a4530de52f6c3ebbf107ffe9f2} +0 -0
  188. data/spec/dummy/tmp/cache/assets/development/sprockets/55a2847335c39261e1efe764deb18592 +0 -0
  189. data/spec/dummy/tmp/cache/assets/development/sprockets/56c7eb172a7423728c45d0a751d198e3 +0 -0
  190. data/spec/dummy/tmp/cache/assets/development/sprockets/6789fe765d536063c998330523bb12b9 +0 -0
  191. data/spec/dummy/tmp/cache/assets/development/sprockets/678a2e392e656b8132f0420e4ec28ed6 +0 -0
  192. data/spec/dummy/tmp/cache/assets/development/sprockets/6843f0414f73089579ae0f9fddf7b38f +0 -0
  193. data/spec/dummy/tmp/cache/assets/development/sprockets/6c7c58744c14732af9bf574870fdf07e +0 -0
  194. data/spec/dummy/tmp/cache/assets/development/sprockets/6cdbd6f171a27a578bcb07dd5bfa83a2 +0 -0
  195. data/spec/dummy/tmp/cache/assets/development/sprockets/6e431ed1dfb5bbcbd33a5f9e069dd3ab +0 -0
  196. data/spec/dummy/tmp/cache/assets/development/sprockets/6f943f22c610e6417422e4a13e0bcc0d +0 -0
  197. data/spec/dummy/tmp/cache/assets/development/sprockets/73fbaa501dc0b072cf2c27fa7dfe0d91 +0 -0
  198. data/spec/dummy/tmp/cache/assets/development/sprockets/7c886717bced4d59ab89e012b52f40de +0 -0
  199. data/spec/dummy/tmp/cache/assets/development/sprockets/821470da3272c8b99070972d4f4f58ca +0 -0
  200. data/spec/dummy/tmp/cache/assets/development/sprockets/88d843fcb07453d1057fac1e254fde0d +0 -0
  201. data/spec/dummy/tmp/cache/assets/development/sprockets/8956737a82f17db48d50e13f133aeefc +0 -0
  202. data/spec/dummy/tmp/cache/assets/development/sprockets/8ab512c9b33ac90e699b73469d71f061 +0 -0
  203. data/spec/dummy/tmp/cache/assets/development/sprockets/8b5a7992567ebbeb9a882d074778f8c8 +0 -0
  204. data/spec/dummy/tmp/cache/assets/development/sprockets/8d71fe4f0e2910900097bdc07bf2d6af +0 -0
  205. data/spec/dummy/tmp/cache/assets/development/sprockets/8e1785ddbfab42cd2df0416eb3932253 +0 -0
  206. data/spec/dummy/tmp/cache/assets/development/sprockets/{75f70b2a440425dc9bf19f6edb18fea7 → 9024d024c62c2668836b1e1b7b3b78cc} +0 -0
  207. data/spec/dummy/tmp/cache/assets/development/sprockets/928ed298f875a25727ca516f5c03f344 +0 -0
  208. data/spec/dummy/tmp/cache/assets/development/sprockets/97c1e12a09973e0fb97f23a1dc496443 +0 -0
  209. data/spec/dummy/tmp/cache/assets/development/sprockets/991576185140a77411185839fd0533f1 +0 -0
  210. data/spec/dummy/tmp/cache/assets/development/sprockets/99e8d6370ba85ec4a61d953f5ed261af +0 -0
  211. data/spec/dummy/tmp/cache/assets/development/sprockets/9ee80730ab26986d507820ac7a288d5c +0 -0
  212. data/spec/dummy/tmp/cache/assets/development/sprockets/a3faca31eb11ba1a981535f9c8408282 +0 -0
  213. data/spec/dummy/tmp/cache/assets/development/sprockets/{7358083ee9425c6ccf3b5a266ff72f96 → a5c68a2aec806face32c749f380f1e14} +0 -0
  214. data/spec/dummy/tmp/cache/assets/development/sprockets/{57b690fdf7e73e9251032764b979ba91 → a64dbcf0e4afe0985b1abd3e209d17cd} +0 -0
  215. data/spec/dummy/tmp/cache/assets/development/sprockets/a6d357fbe03dae6f590180f6c5e0e148 +0 -0
  216. data/spec/dummy/tmp/cache/assets/development/sprockets/aa58fb159780a7200a1bc4c6844cc5c4 +0 -0
  217. data/spec/dummy/tmp/cache/assets/development/sprockets/{8844c67dfba4a3ba3059a3bf8ecad189 → aaba73a43e02d8c6550bae851f17e7a0} +0 -0
  218. data/spec/dummy/tmp/cache/assets/development/sprockets/{6c9493ae80153276273012bbc4ecb206 → af26c017afcf68f1edd44a4c9bb942e4} +0 -0
  219. data/spec/dummy/tmp/cache/assets/development/sprockets/b3defd466aec80b128284b8d85324630 +0 -0
  220. data/spec/dummy/tmp/cache/assets/development/sprockets/{e06c0172cffbdfb666c87db792da9985 → b48ed8a3de3ca66055ee4fd18b16421f} +0 -0
  221. data/spec/dummy/tmp/cache/assets/development/sprockets/{ebb8a071ed245c66977382b79517e43b → ba9859d0d2b7d4d7d5b03ff3a71ed478} +0 -0
  222. data/spec/dummy/tmp/cache/assets/development/sprockets/bcca522c6302f184f12fe0e8a7d7e71a +0 -0
  223. data/spec/dummy/tmp/cache/assets/development/sprockets/be8a0cd6c3605b9d7c22642609316a9f +0 -0
  224. data/spec/dummy/tmp/cache/assets/development/sprockets/c11c6d97cfc7ef7945fa87f14b44445c +0 -0
  225. data/spec/dummy/tmp/cache/assets/development/sprockets/c13fc73ceafa45876a901b3e775b83ae +0 -0
  226. data/spec/dummy/tmp/cache/assets/development/sprockets/c5f3450b5366b6fbdc4172ce089fba48 +0 -0
  227. data/spec/dummy/tmp/cache/assets/development/sprockets/c982bb1e71844744a60dc9b4afcb2f49 +0 -0
  228. data/spec/dummy/tmp/cache/assets/development/sprockets/cf24c3f1bb8adb1f168758f2bd9775c9 +0 -0
  229. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  230. data/spec/dummy/tmp/cache/assets/development/sprockets/d3e5a199890ba7c706fc62c2b891714d +0 -0
  231. data/spec/dummy/tmp/cache/assets/development/sprockets/{28179a5600e9facaddec3ac2dc33d886 → d584baf83d8a779d945f9668f902fa7c} +0 -0
  232. data/spec/dummy/tmp/cache/assets/development/sprockets/d71b820ce5f8b310e466f517bd3a8e4b +0 -0
  233. data/spec/dummy/tmp/cache/assets/development/sprockets/d8dab59d17daf5a5081153e2ad7d09b4 +0 -0
  234. data/spec/dummy/tmp/cache/assets/development/sprockets/{2a1c584bdc3f87ed1ef4912c73fc5d2c → dd4a8658311b7a2cd8effa6479827559} +0 -0
  235. data/spec/dummy/tmp/cache/assets/development/sprockets/e11970a225a09526aac3f76d7ee91822 +0 -0
  236. data/spec/dummy/tmp/cache/assets/development/sprockets/e3dd086dd858b5bff9cfd60a031c2091 +0 -0
  237. data/spec/dummy/tmp/cache/assets/development/sprockets/{6b368ed72245e6d0b96c006cacf39b71 → e43bcf201d76cdf6e1fe345195c1cd9e} +0 -0
  238. data/spec/dummy/tmp/cache/assets/development/sprockets/e945ca604ee0240455a5652953b3e495 +0 -0
  239. data/spec/dummy/tmp/cache/assets/development/sprockets/ec33505f0e2ed4dd12951ecceffa3695 +0 -0
  240. data/spec/dummy/tmp/cache/assets/development/sprockets/ee287313e28f341f83628dec0a353fa6 +0 -0
  241. data/spec/dummy/tmp/cache/assets/development/sprockets/{69c661f38eadf38f75ca9b2b83d71cb3 → ee9a23832dc2a49ee6ec6d3f1d6a0e1f} +0 -0
  242. data/spec/dummy/tmp/cache/assets/development/sprockets/{2041d52b5e3cd9533720f297abbd76cf → ef2d6862f5fd690c5387cafd88944a9f} +0 -0
  243. data/spec/dummy/tmp/cache/assets/development/sprockets/{e04f19041801d59eea289f5120db2611 → ef8c3824b85ed745cad651aadda4f2b8} +0 -0
  244. data/spec/dummy/tmp/cache/assets/development/sprockets/f557612d05bb9fea499dce8352b3f0ca +0 -0
  245. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  246. data/spec/dummy/tmp/cache/assets/development/sprockets/f7f3056583a2454471a4a5f7200dcefa +0 -0
  247. data/spec/dummy/tmp/cache/assets/development/sprockets/{a639765218e43090e18ae13c24e8498e → f9c51fa87975943d31bc1bfd7cb684c6} +0 -0
  248. data/spec/dummy/tmp/cache/assets/development/sprockets/{e99a872558be4a8f4f39f7173c3f63d1 → ff9ed89418a3f78032b8f8184dd98e80} +0 -0
  249. data/spec/factories/page.rb +25 -25
  250. data/spec/models/page_spec.rb +92 -92
  251. data/spec/spec_helper.rb +89 -89
  252. data/spec/support/factory_girl.rb +15 -15
  253. metadata +1729 -1691
  254. data/spec/dummy/tmp/cache/assets/development/sass/53cc251ec7d503551d5cca5a52cf3e21e13df61c/_button-groups.scssc +0 -0
  255. data/spec/dummy/tmp/cache/assets/development/sass/53cc251ec7d503551d5cca5a52cf3e21e13df61c/_dropdowns.scssc +0 -0
  256. data/spec/dummy/tmp/cache/assets/development/sass/53cc251ec7d503551d5cca5a52cf3e21e13df61c/_forms.scssc +0 -0
  257. data/spec/dummy/tmp/cache/assets/development/sass/53cc251ec7d503551d5cca5a52cf3e21e13df61c/_glyphicons.scssc +0 -0
  258. data/spec/dummy/tmp/cache/assets/development/sass/53cc251ec7d503551d5cca5a52cf3e21e13df61c/_jumbotron.scssc +0 -0
  259. data/spec/dummy/tmp/cache/assets/development/sass/53cc251ec7d503551d5cca5a52cf3e21e13df61c/_popovers.scssc +0 -0
  260. data/spec/dummy/tmp/cache/assets/development/sass/53cc251ec7d503551d5cca5a52cf3e21e13df61c/_tooltip.scssc +0 -0
  261. data/spec/dummy/tmp/cache/assets/development/sass/e78863fbefa25b9b3ada284552103b751a61c1c3/font-awesome.css.erbc +0 -0
  262. data/spec/dummy/tmp/cache/assets/development/sass/edeefea066f37bf37a09beb3312185d2b6063947/_buttons.scssc +0 -0
  263. data/spec/dummy/tmp/cache/assets/development/sass/edeefea066f37bf37a09beb3312185d2b6063947/_pagination.scssc +0 -0
  264. data/spec/dummy/tmp/cache/assets/development/sass/edeefea066f37bf37a09beb3312185d2b6063947/_reset-text.scssc +0 -0
  265. data/spec/dummy/tmp/cache/assets/development/sprockets/083956a039048a556ce587bcddc68d9b +0 -0
  266. data/spec/dummy/tmp/cache/assets/development/sprockets/14501eab19686e8703a1cd6724ca5afe +0 -0
  267. data/spec/dummy/tmp/cache/assets/development/sprockets/220acc341511b293c23333d41e6e54db +0 -0
  268. data/spec/dummy/tmp/cache/assets/development/sprockets/242a1b8332e1c26d756fbf6cd04268ea +0 -0
  269. data/spec/dummy/tmp/cache/assets/development/sprockets/24dd0982daf620a78ee0afa3d00987e1 +0 -0
  270. data/spec/dummy/tmp/cache/assets/development/sprockets/289dee836a0561af7303d09aa8e6c67d +0 -0
  271. data/spec/dummy/tmp/cache/assets/development/sprockets/2ab4520967f1ef89ea8f007d41f6c756 +0 -0
  272. data/spec/dummy/tmp/cache/assets/development/sprockets/367af5c129571df2419e9fa2f2a85e5d +0 -0
  273. data/spec/dummy/tmp/cache/assets/development/sprockets/385dc581e8b4c0fe913212b2e284349b +0 -0
  274. data/spec/dummy/tmp/cache/assets/development/sprockets/5260200a6fc227d631d379c0ca23ee9e +0 -0
  275. data/spec/dummy/tmp/cache/assets/development/sprockets/54d2186a396e20271f8d5d73ceccac51 +0 -0
  276. data/spec/dummy/tmp/cache/assets/development/sprockets/5abc77e42125da6b4045aa4ab7a64163 +0 -0
  277. data/spec/dummy/tmp/cache/assets/development/sprockets/5c99b17b548f29b93256d38e593f3924 +0 -0
  278. data/spec/dummy/tmp/cache/assets/development/sprockets/5c9f95ed8e66a9d6711a3fa673f3e40b +0 -0
  279. data/spec/dummy/tmp/cache/assets/development/sprockets/64ba1d7b1c83408f1bb8927c08d103e9 +0 -0
  280. data/spec/dummy/tmp/cache/assets/development/sprockets/679faf90a1a568dcbca34e55d338e3a9 +0 -0
  281. data/spec/dummy/tmp/cache/assets/development/sprockets/6f57820c1356147d29893740e35fe7c3 +0 -0
  282. data/spec/dummy/tmp/cache/assets/development/sprockets/7013ea120f56d0be829cd8fbb7ab12a9 +0 -0
  283. data/spec/dummy/tmp/cache/assets/development/sprockets/72bda74c930eed262ed981fd089472b1 +0 -0
  284. data/spec/dummy/tmp/cache/assets/development/sprockets/742f7f492c3ce95598375b803a74c31c +0 -0
  285. data/spec/dummy/tmp/cache/assets/development/sprockets/74ed2643128f1fbc5c9dd10058b05d3a +0 -0
  286. data/spec/dummy/tmp/cache/assets/development/sprockets/7b65aad1d0ee1e46c4dd3495d9b0424f +0 -0
  287. data/spec/dummy/tmp/cache/assets/development/sprockets/80f9723094c8148ae3b1d32d6ae0487e +0 -0
  288. data/spec/dummy/tmp/cache/assets/development/sprockets/872602a77b316cc8375ea874c6ec3497 +0 -0
  289. data/spec/dummy/tmp/cache/assets/development/sprockets/8b73e72306b480b73f3700fa7d512498 +0 -0
  290. data/spec/dummy/tmp/cache/assets/development/sprockets/938460055e1a3563f692db69466138d3 +0 -0
  291. data/spec/dummy/tmp/cache/assets/development/sprockets/9fa1eed0d22f02e83b308592343efe03 +0 -0
  292. data/spec/dummy/tmp/cache/assets/development/sprockets/c37d32b432a1f81c43b104bbda4f0268 +0 -0
  293. data/spec/dummy/tmp/cache/assets/development/sprockets/c5ab32c046a8ff832f806b68908d7911 +0 -0
  294. data/spec/dummy/tmp/cache/assets/development/sprockets/c8b29251430ec1d7d6657d02850871ad +0 -0
  295. data/spec/dummy/tmp/cache/assets/development/sprockets/c8bbcfa2a7ffb62d2a4c4e2084a64512 +0 -0
  296. data/spec/dummy/tmp/cache/assets/development/sprockets/cc192aceafb5fa95510ec09becf095a8 +0 -0
  297. data/spec/dummy/tmp/cache/assets/development/sprockets/cda2ecdc4c787899c1b08398adc4e74b +0 -0
  298. data/spec/dummy/tmp/cache/assets/development/sprockets/cdcaedafc6c86932f396f6f58a5eef64 +0 -0
  299. data/spec/dummy/tmp/cache/assets/development/sprockets/d5e681eec31b64d7d37c81e0ef29aadd +0 -0
  300. data/spec/dummy/tmp/cache/assets/development/sprockets/db33b5802058b8e083cb237fe354febe +0 -0
  301. data/spec/dummy/tmp/cache/assets/development/sprockets/e1c7cc1284e73a3f4368f8c2f91ae4b5 +0 -0
  302. data/spec/dummy/tmp/cache/assets/development/sprockets/eff0bd8c351c3d841aca4a3c97a0a416 +0 -0
  303. data/spec/dummy/tmp/cache/assets/development/sprockets/f0bf1b2ced9ebcdae5e38cae6e7cce86 +0 -0
  304. data/spec/dummy/tmp/pids/server.pid +0 -1
  305. /data/db/{migrate_1 → migrate}/20150220161150_add_attachment_photo_to_mediafiles.rb +0 -0
  306. /data/db/{migrate_1 → migrate}/20150503213839_devise_create_optimacms_cms_users.rb +0 -0
  307. /data/db/{migrate_1 → migrate}/20150610222026_change_meta_description_for_pages.rb +0 -0
  308. /data/db/{migrate_1 → migrate}/20150610225422_add_index_name_to_pages.rb +0 -0
  309. /data/spec/dummy/db/{migrate_1 → migrate}/20150504000518_devise_create_users.rb +0 -0
  310. /data/spec/dummy/tmp/cache/assets/development/sass/{2b54d68f44ccef8d8a637182d9e35eaea2024385 → 0abc660c880b2e10d695d713e519e6a4257cd348}/application.css.scssc +0 -0
  311. /data/spec/dummy/tmp/cache/assets/development/sass/{2b54d68f44ccef8d8a637182d9e35eaea2024385 → 0abc660c880b2e10d695d713e519e6a4257cd348}/bootstrap_and_overrides.css.scssc +0 -0
  312. /data/spec/dummy/tmp/cache/assets/development/sass/{2b54d68f44ccef8d8a637182d9e35eaea2024385 → 0abc660c880b2e10d695d713e519e6a4257cd348}/bootstrap_custom.css.scssc +0 -0
  313. /data/spec/dummy/tmp/cache/assets/development/sass/{2b54d68f44ccef8d8a637182d9e35eaea2024385 → 0abc660c880b2e10d695d713e519e6a4257cd348}/bootstrap_variables.css.scssc +0 -0
  314. /data/spec/dummy/tmp/cache/assets/development/sass/{a77c98d86b869607d1c161017fa1c88387d1997e → 255a203cf5ecbb5470dfd267d6d4b923c8f1e5f0}/_css3.scssc +0 -0
  315. /data/spec/dummy/tmp/cache/assets/development/sass/{a77c98d86b869607d1c161017fa1c88387d1997e → 255a203cf5ecbb5470dfd267d6d4b923c8f1e5f0}/_support.scssc +0 -0
  316. /data/spec/dummy/tmp/cache/assets/development/sass/{813e6d87699c3a2c48abd16c7f35b61b434d4808 → 4b8b59c3cee3225b46cdcaa54f7d0474421be9c6}/_bootstrap-sprockets.scssc +0 -0
  317. /data/spec/dummy/tmp/cache/assets/development/sass/{cba79790f566813ecf0ee9ddd5cbf390b682f8ee → 7f871ea7e3a8127767d5a5868622ef2909611f26}/noskin.css.scssc +0 -0
  318. /data/spec/dummy/tmp/cache/assets/development/sass/{4dcf8798a5e82c6e1fb349f566278d8a474e98e2 → a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13}/admin.css.scssc +0 -0
  319. /data/spec/dummy/tmp/cache/assets/development/sass/{4dcf8798a5e82c6e1fb349f566278d8a474e98e2 → a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13}/admin_tpl.css.scssc +0 -0
  320. /data/spec/dummy/tmp/cache/assets/development/sass/{4dcf8798a5e82c6e1fb349f566278d8a474e98e2 → a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13}/bootstrap_and_overrides.css.scssc +0 -0
  321. /data/spec/dummy/tmp/cache/assets/development/sass/{4dcf8798a5e82c6e1fb349f566278d8a474e98e2 → a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13}/bootstrap_custom.css.scssc +0 -0
  322. /data/spec/dummy/tmp/cache/assets/development/sass/{4dcf8798a5e82c6e1fb349f566278d8a474e98e2 → a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13}/colors.css.scssc +0 -0
  323. /data/spec/dummy/tmp/cache/assets/development/sass/{4dcf8798a5e82c6e1fb349f566278d8a474e98e2 → a1b4b92b7663fe8c3e3678ca845c8a0566c3ca13}/tpl.css.scssc +0 -0
  324. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_alerts.scssc +0 -0
  325. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_border-radius.scssc +0 -0
  326. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_center-block.scssc +0 -0
  327. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_clearfix.scssc +0 -0
  328. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_gradients.scssc +0 -0
  329. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_image.scssc +0 -0
  330. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_labels.scssc +0 -0
  331. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_nav-divider.scssc +0 -0
  332. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_nav-vertical-align.scssc +0 -0
  333. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_opacity.scssc +0 -0
  334. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_panels.scssc +0 -0
  335. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_progress-bar.scssc +0 -0
  336. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_reset-filter.scssc +0 -0
  337. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_resize.scssc +0 -0
  338. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_size.scssc +0 -0
  339. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_tab-focus.scssc +0 -0
  340. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_table-row.scssc +0 -0
  341. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_text-overflow.scssc +0 -0
  342. /data/spec/dummy/tmp/cache/assets/development/sass/{edeefea066f37bf37a09beb3312185d2b6063947 → bfa17faa2a4aa370d46a5900b72c48f05b4837d1}/_vendor-prefixes.scssc +0 -0
  343. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_appearance.scssc +0 -0
  344. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_background-clip.scssc +0 -0
  345. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_background-origin.scssc +0 -0
  346. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_background-size.scssc +0 -0
  347. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_border-radius.scssc +0 -0
  348. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_box-shadow.scssc +0 -0
  349. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_box-sizing.scssc +0 -0
  350. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_box.scssc +0 -0
  351. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_columns.scssc +0 -0
  352. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_filter.scssc +0 -0
  353. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_font-face.scssc +0 -0
  354. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_hyphenation.scssc +0 -0
  355. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_images.scssc +0 -0
  356. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_inline-block.scssc +0 -0
  357. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_opacity.scssc +0 -0
  358. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_regions.scssc +0 -0
  359. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_text-shadow.scssc +0 -0
  360. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_transform.scssc +0 -0
  361. /data/spec/dummy/tmp/cache/assets/development/sass/{b35f0e69c4892ac057a21d74a049b3bf7065c46e → e04ca948242d213270bfe676c8b96e7b33226468}/_user-interface.scssc +0 -0
  362. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_alerts.scssc +0 -0
  363. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_breadcrumbs.scssc +0 -0
  364. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_close.scssc +0 -0
  365. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_code.scssc +0 -0
  366. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_component-animations.scssc +0 -0
  367. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_grid.scssc +0 -0
  368. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_labels.scssc +0 -0
  369. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_navs.scssc +0 -0
  370. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_pager.scssc +0 -0
  371. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_progress-bars.scssc +0 -0
  372. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_responsive-embed.scssc +0 -0
  373. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_tables.scssc +0 -0
  374. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_thumbnails.scssc +0 -0
  375. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_type.scssc +0 -0
  376. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_utilities.scssc +0 -0
  377. /data/spec/dummy/tmp/cache/assets/development/sass/{53cc251ec7d503551d5cca5a52cf3e21e13df61c → e541a95436c6e387d69ff457c2fe7f7bd11c2069}/_wells.scssc +0 -0
@@ -1,390 +1,390 @@
1
- module Optimacms
2
- class Template < ActiveRecord::Base
3
- self.table_name = 'cms_templates'
4
-
5
- EXTENSION_DEFAULT = 'html'
6
- EXTENSIONS = {'blank'=>'', 'html'=>'html', 'erb'=>'html.erb', 'haml'=>'html.haml'}
7
-
8
-
9
- belongs_to :type, :foreign_key => 'type_id', :class_name => 'TemplateType'
10
-
11
- before_validation :_before_validation
12
- before_create :_before_create
13
- before_update :_before_update
14
- before_destroy :_before_destroy
15
-
16
- # tree
17
- has_ancestry
18
-
19
- #
20
- #validate :check_unique_path, unless: :is_folder?
21
- validates_uniqueness_of :basepath, :scope => :is_folder
22
-
23
- #validate :check_parent_folder_exists, unless: :is_folder?
24
-
25
- #
26
- paginates_per 10
27
-
28
-
29
- # scopes
30
- scope :folders, -> { where(is_folder: true) }
31
- scope :layouts, -> { where(is_folder: false, type_id: TemplateType::TYPE_LAYOUT) }
32
-
33
-
34
- # search
35
- scope :of_parent, lambda { |parent_id| where_parent(parent_id) }
36
-
37
- searchable_by_simple_filter
38
-
39
-
40
-
41
-
42
-
43
- ###
44
- def to_s
45
- "#{title} (#{basepath})"
46
- end
47
-
48
-
49
- ### settings
50
-
51
- def self.base_dir
52
- Rails.root.to_s + '/app/views/'
53
- end
54
-
55
-
56
-
57
-
58
-
59
- ### properties
60
-
61
- def parent_title
62
- self.parent.title
63
- end
64
-
65
-
66
- def has_code?
67
- ['haml', 'erb', 'blank'].include?(self.tpl_format)
68
- end
69
-
70
- def is_folder?
71
- self.is_folder
72
- end
73
-
74
- def is_layout?
75
- return self.type_id==TemplateType::TYPE_LAYOUT
76
- end
77
-
78
- def is_type_page?
79
- return self.type_id==TemplateType::TYPE_PAGE
80
- end
81
-
82
- def is_type_partial?
83
- return self.type_id==TemplateType::TYPE_PARTIAL
84
- end
85
-
86
-
87
-
88
- ##### search
89
-
90
- def self.where_parent(parent_id)
91
- if parent_id==0
92
- roots
93
- elsif parent_id>0
94
- children_of(parent_id.to_s)
95
- end
96
- end
97
-
98
-
99
-
100
- #### operations
101
-
102
- def attach
103
- # check if file exists
104
- if !content_file_exists?
105
- errors.add(:attach, "file not found")
106
- return false
107
- end
108
-
109
- save
110
- end
111
-
112
-
113
-
114
- #### path
115
-
116
- def path(lang='')
117
- return nil if self.basename.nil?
118
- self.basedirpath + filename_base + Template.filename_lang_postfix(lang) + Template.filename_ext_with_dot(self.tpl_format)
119
- end
120
-
121
- def fullpath(lang='')
122
- f = self.path(lang)
123
- return nil if f.nil?
124
- Template.base_dir + f
125
- end
126
-
127
- def content_file_exists?(lang='')
128
- postfixes = EXTENSIONS.map{|k,v| '.'+v}
129
-
130
- found = false
131
- postfixes.each do |p|
132
- if File.exists?(self.fullpath(lang))
133
- found = true
134
- break
135
- end
136
- end
137
- found
138
- end
139
-
140
-
141
- ### validations
142
-
143
- def check_parent_folder_exists
144
- if self.parent_id.nil? && !self.basedirpath.blank?
145
- errors.add(:basedirpath, "folder not exists. create it first")
146
- end
147
- end
148
-
149
-
150
-
151
-
152
- ##### folder
153
-
154
- def folder_path
155
- return nil if self.basepath.nil?
156
- self.basepath+'/'
157
- end
158
-
159
- def folder_fullpath
160
- f = self.folder_path
161
- return nil if f.nil?
162
- Template.base_dir + f
163
- end
164
-
165
-
166
-
167
- ### content
168
-
169
- def content(lang='')
170
- filename = fullpath(lang)
171
- return nil if filename.nil?
172
- return '' if !File.exists? filename
173
- File.read(filename)
174
- end
175
-
176
- def content=(v, lang='')
177
- File.open(self.fullpath(lang), "w+") do |f|
178
- f.write(v)
179
- end
180
- end
181
-
182
-
183
- ### helpers for path
184
-
185
- # base filename depending on type
186
- # for page = name
187
- # for partial = _name
188
- def filename_base
189
- return '_'+self.basename if self.is_type_partial?
190
-
191
- self.basename
192
- end
193
-
194
-
195
- def self.filename_lang_postfix(lang)
196
- return '' if lang==''
197
- return '.'+lang
198
- end
199
-
200
- def self.filename_ext(format)
201
- EXTENSIONS[format]
202
- end
203
-
204
- def self.filename_ext_with_dot(format)
205
- ext = filename_ext(format)
206
- ext = '.'+ext unless ext.blank?
207
- ext
208
- end
209
-
210
-
211
- ### operations with path
212
-
213
- def set_basepath
214
- if self.parent.nil?
215
- self.basepath = self.basename
216
- self.basedirpath ||= ''
217
- else
218
- self.basepath = self.parent.basepath+'/'+self.basename
219
- self.basedirpath ||= self.parent.basepath+'/'
220
- end
221
-
222
- end
223
-
224
-
225
- def fix_basedirpath
226
- self.basedirpath ||= ''
227
- if !self.basedirpath.blank? && self.basedirpath[-1] !='/'
228
- self.basedirpath << '/'
229
- end
230
- end
231
-
232
- def set_basedirpath_from_parent
233
- v = ''
234
- if self.parent_id.nil?
235
- v = ''
236
- else
237
- v = self.parent.basepath+'/' if self.parent_id >0
238
- end
239
-
240
- self.basedirpath = v
241
- #v
242
- end
243
-
244
- def set_parent_from_basedirpath
245
- v = self.basedirpath
246
-
247
- # set parent_id from dir
248
- d = v.chop
249
- r = Template.where(is_folder: true, basepath: d).first
250
- if r
251
- self.parent_id = r.id
252
- else
253
- self.parent_id = nil
254
- end
255
- end
256
-
257
-
258
-
259
- #### callbacks
260
-
261
- def _before_validation
262
- fix_basedirpath
263
-
264
- # parent, basedirpath
265
- if self.parent_id.nil? && !self.basedirpath.blank?
266
- set_parent_from_basedirpath
267
- elsif self.basedirpath.nil? && !self.parent_id.nil?
268
- set_basedirpath_from_parent
269
- end
270
-
271
- set_basepath
272
- end
273
-
274
-
275
- def _before_create
276
- if self.is_folder
277
- # create dir on disk
278
- Fileutils::Fileutils.create_dir_if_not_exists self.folder_fullpath
279
- else
280
- # add folders if needed
281
- if self.parent_id.nil? && !self.basedirpath.blank?
282
- self.parent = Template.create_folders_tree(self.basedirpath)
283
- end
284
-
285
- end
286
-
287
- end
288
-
289
- def _before_update
290
- if self.is_folder
291
- oldpath = self.folder_fullpath
292
-
293
- self.set_basepath
294
-
295
- # rename dir on disk
296
- if self.basename_changed?
297
- raise "cannot change folder path"
298
-
299
- require 'fileutils'
300
- newpath = self.folder_fullpath
301
-
302
- if Dir.exists?(newpath)
303
- errors.add(:basename, 'Folder already exists')
304
- return false
305
- end
306
-
307
- FileUtils.mv oldpath, newpath
308
-
309
- # TODO: change paths for child templates
310
-
311
- end
312
-
313
- else
314
- # file
315
-
316
- # TODO: rename file
317
- #self.make_basepath
318
-
319
- end
320
-
321
- end
322
-
323
- def _before_destroy
324
- if self.is_folder
325
-
326
- # cannot delete not empty dir
327
- if !self.folder_empty?
328
- return false
329
- end
330
-
331
- # delete dir
332
- folder_delete
333
-
334
- else
335
- # file
336
-
337
-
338
- end
339
-
340
-
341
- true
342
- end
343
-
344
-
345
- # create folders if necessary - NOT WORKING
346
- def self.create_folders_tree(dirpath)
347
- a = dirpath.split /\//
348
-
349
- d = ''
350
- parent_current = nil
351
- prev_d = d
352
- a.each do |s|
353
- d = d + (d=='' ? '' : '/') +s
354
- r = Template.where(is_folder: true, basepath: d).first
355
- if r
356
- parent_current = r
357
- next
358
- end
359
- # create missing folder
360
- path_new = File.basename(d)
361
- basedirpath_new = prev_d
362
- r = Template.create(is_folder: true, basename: path_new, basedirpath: basedirpath_new, title: path_new, parent: parent_current)
363
- parent_current = r
364
-
365
- prev_d = d
366
- end
367
-
368
- parent_current
369
-
370
- end
371
-
372
-
373
- #### folders
374
-
375
- def folder_delete
376
- dirpath = self.folder_fullpath
377
- FileUtils.remove_dir(dirpath) if Dir.exists? dirpath
378
- end
379
-
380
- def folder_empty?
381
- dirpath = self.folder_fullpath
382
- if !Dir.exists? dirpath
383
- return true
384
- end
385
-
386
- return Dir.entries(dirpath).size == 2
387
- end
388
-
389
- end
390
- end
1
+ module Optimacms
2
+ class Template < ActiveRecord::Base
3
+ self.table_name = 'cms_templates'
4
+
5
+ EXTENSION_DEFAULT = 'html'
6
+ EXTENSIONS = {'blank'=>'', 'html'=>'html', 'erb'=>'html.erb', 'haml'=>'html.haml'}
7
+
8
+
9
+ belongs_to :type, :foreign_key => 'type_id', :class_name => 'TemplateType'
10
+
11
+ before_validation :_before_validation
12
+ before_create :_before_create
13
+ before_update :_before_update
14
+ before_destroy :_before_destroy
15
+
16
+ # tree
17
+ has_ancestry
18
+
19
+ #
20
+ #validate :check_unique_path, unless: :is_folder?
21
+ validates_uniqueness_of :basepath, :scope => :is_folder
22
+
23
+ #validate :check_parent_folder_exists, unless: :is_folder?
24
+
25
+ #
26
+ paginates_per 10
27
+
28
+
29
+ # scopes
30
+ scope :folders, -> { where(is_folder: true) }
31
+ scope :layouts, -> { where(is_folder: false, type_id: TemplateType::TYPE_LAYOUT) }
32
+
33
+
34
+ # search
35
+ scope :of_parent, lambda { |parent_id| where_parent(parent_id) }
36
+
37
+ searchable_by_simple_filter
38
+
39
+
40
+
41
+
42
+
43
+ ###
44
+ def to_s
45
+ "#{title} (#{basepath})"
46
+ end
47
+
48
+
49
+ ### settings
50
+
51
+ def self.base_dir
52
+ Rails.root.to_s + '/app/views/'
53
+ end
54
+
55
+
56
+
57
+
58
+
59
+ ### properties
60
+
61
+ def parent_title
62
+ self.parent.title
63
+ end
64
+
65
+
66
+ def has_code?
67
+ ['haml', 'erb', 'blank'].include?(self.tpl_format)
68
+ end
69
+
70
+ def is_folder?
71
+ self.is_folder
72
+ end
73
+
74
+ def is_layout?
75
+ return self.type_id==TemplateType::TYPE_LAYOUT
76
+ end
77
+
78
+ def is_type_page?
79
+ return self.type_id==TemplateType::TYPE_PAGE
80
+ end
81
+
82
+ def is_type_partial?
83
+ return self.type_id==TemplateType::TYPE_PARTIAL
84
+ end
85
+
86
+
87
+
88
+ ##### search
89
+
90
+ def self.where_parent(parent_id)
91
+ if parent_id==0
92
+ roots
93
+ elsif parent_id>0
94
+ children_of(parent_id.to_s)
95
+ end
96
+ end
97
+
98
+
99
+
100
+ #### operations
101
+
102
+ def attach
103
+ # check if file exists
104
+ if !content_file_exists?
105
+ errors.add(:attach, "file not found")
106
+ return false
107
+ end
108
+
109
+ save
110
+ end
111
+
112
+
113
+
114
+ #### path
115
+
116
+ def path(lang='')
117
+ return nil if self.basename.nil?
118
+ self.basedirpath + filename_base + Template.filename_lang_postfix(lang) + Template.filename_ext_with_dot(self.tpl_format)
119
+ end
120
+
121
+ def fullpath(lang='')
122
+ f = self.path(lang)
123
+ return nil if f.nil?
124
+ Template.base_dir + f
125
+ end
126
+
127
+ def content_file_exists?(lang='')
128
+ postfixes = EXTENSIONS.map{|k,v| '.'+v}
129
+
130
+ found = false
131
+ postfixes.each do |p|
132
+ if File.exists?(self.fullpath(lang))
133
+ found = true
134
+ break
135
+ end
136
+ end
137
+ found
138
+ end
139
+
140
+
141
+ ### validations
142
+
143
+ def check_parent_folder_exists
144
+ if self.parent_id.nil? && !self.basedirpath.blank?
145
+ errors.add(:basedirpath, "folder not exists. create it first")
146
+ end
147
+ end
148
+
149
+
150
+
151
+
152
+ ##### folder
153
+
154
+ def folder_path
155
+ return nil if self.basepath.nil?
156
+ self.basepath+'/'
157
+ end
158
+
159
+ def folder_fullpath
160
+ f = self.folder_path
161
+ return nil if f.nil?
162
+ Template.base_dir + f
163
+ end
164
+
165
+
166
+
167
+ ### content
168
+
169
+ def content(lang='')
170
+ filename = fullpath(lang)
171
+ return nil if filename.nil?
172
+ return '' if !File.exists? filename
173
+ File.read(filename)
174
+ end
175
+
176
+ def content=(v, lang='')
177
+ File.open(self.fullpath(lang), "w+") do |f|
178
+ f.write(v)
179
+ end
180
+ end
181
+
182
+
183
+ ### helpers for path
184
+
185
+ # base filename depending on type
186
+ # for page = name
187
+ # for partial = _name
188
+ def filename_base
189
+ return '_'+self.basename if self.is_type_partial?
190
+
191
+ self.basename
192
+ end
193
+
194
+
195
+ def self.filename_lang_postfix(lang)
196
+ return '' if lang==''
197
+ return '.'+lang
198
+ end
199
+
200
+ def self.filename_ext(format)
201
+ EXTENSIONS[format]
202
+ end
203
+
204
+ def self.filename_ext_with_dot(format)
205
+ ext = filename_ext(format)
206
+ ext = '.'+ext unless ext.blank?
207
+ ext
208
+ end
209
+
210
+
211
+ ### operations with path
212
+
213
+ def set_basepath
214
+ if self.parent.nil?
215
+ self.basepath = self.basename
216
+ self.basedirpath ||= ''
217
+ else
218
+ self.basepath = self.parent.basepath+'/'+self.basename
219
+ self.basedirpath ||= self.parent.basepath+'/'
220
+ end
221
+
222
+ end
223
+
224
+
225
+ def fix_basedirpath
226
+ self.basedirpath ||= ''
227
+ if !self.basedirpath.blank? && self.basedirpath[-1] !='/'
228
+ self.basedirpath << '/'
229
+ end
230
+ end
231
+
232
+ def set_basedirpath_from_parent
233
+ v = ''
234
+ if self.parent_id.nil?
235
+ v = ''
236
+ else
237
+ v = self.parent.basepath+'/' if self.parent_id >0
238
+ end
239
+
240
+ self.basedirpath = v
241
+ #v
242
+ end
243
+
244
+ def set_parent_from_basedirpath
245
+ v = self.basedirpath
246
+
247
+ # set parent_id from dir
248
+ d = v.chop
249
+ r = Template.where(is_folder: true, basepath: d).first
250
+ if r
251
+ self.parent_id = r.id
252
+ else
253
+ self.parent_id = nil
254
+ end
255
+ end
256
+
257
+
258
+
259
+ #### callbacks
260
+
261
+ def _before_validation
262
+ fix_basedirpath
263
+
264
+ # parent, basedirpath
265
+ if self.parent_id.nil? && !self.basedirpath.blank?
266
+ set_parent_from_basedirpath
267
+ elsif self.basedirpath.nil? && !self.parent_id.nil?
268
+ set_basedirpath_from_parent
269
+ end
270
+
271
+ set_basepath
272
+ end
273
+
274
+
275
+ def _before_create
276
+ if self.is_folder
277
+ # create dir on disk
278
+ Fileutils::Fileutils.create_dir_if_not_exists self.folder_fullpath
279
+ else
280
+ # add folders if needed
281
+ if self.parent_id.nil? && !self.basedirpath.blank?
282
+ self.parent = Template.create_folders_tree(self.basedirpath)
283
+ end
284
+
285
+ end
286
+
287
+ end
288
+
289
+ def _before_update
290
+ if self.is_folder
291
+ oldpath = self.folder_fullpath
292
+
293
+ self.set_basepath
294
+
295
+ # rename dir on disk
296
+ if self.basename_changed?
297
+ raise "cannot change folder path"
298
+
299
+ require 'fileutils'
300
+ newpath = self.folder_fullpath
301
+
302
+ if Dir.exists?(newpath)
303
+ errors.add(:basename, 'Folder already exists')
304
+ return false
305
+ end
306
+
307
+ FileUtils.mv oldpath, newpath
308
+
309
+ # TODO: change paths for child templates
310
+
311
+ end
312
+
313
+ else
314
+ # file
315
+
316
+ # TODO: rename file
317
+ #self.make_basepath
318
+
319
+ end
320
+
321
+ end
322
+
323
+ def _before_destroy
324
+ if self.is_folder
325
+
326
+ # cannot delete not empty dir
327
+ if !self.folder_empty?
328
+ return false
329
+ end
330
+
331
+ # delete dir
332
+ folder_delete
333
+
334
+ else
335
+ # file
336
+
337
+
338
+ end
339
+
340
+
341
+ true
342
+ end
343
+
344
+
345
+ # create folders if necessary - NOT WORKING
346
+ def self.create_folders_tree(dirpath)
347
+ a = dirpath.split /\//
348
+
349
+ d = ''
350
+ parent_current = nil
351
+ prev_d = d
352
+ a.each do |s|
353
+ d = d + (d=='' ? '' : '/') +s
354
+ r = Template.where(is_folder: true, basepath: d).first
355
+ if r
356
+ parent_current = r
357
+ next
358
+ end
359
+ # create missing folder
360
+ path_new = File.basename(d)
361
+ basedirpath_new = prev_d
362
+ r = Template.create(is_folder: true, basename: path_new, basedirpath: basedirpath_new, title: path_new, parent: parent_current)
363
+ parent_current = r
364
+
365
+ prev_d = d
366
+ end
367
+
368
+ parent_current
369
+
370
+ end
371
+
372
+
373
+ #### folders
374
+
375
+ def folder_delete
376
+ dirpath = self.folder_fullpath
377
+ FileUtils.remove_dir(dirpath) if Dir.exists? dirpath
378
+ end
379
+
380
+ def folder_empty?
381
+ dirpath = self.folder_fullpath
382
+ if !Dir.exists? dirpath
383
+ return true
384
+ end
385
+
386
+ return Dir.entries(dirpath).size == 2
387
+ end
388
+
389
+ end
390
+ end