adminos 1.0.0.pre.rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +14 -0
  3. data/.gitignore +25 -0
  4. data/.gitlab-ci.yml +18 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +120 -0
  7. data/.rubocop_todo.yml +58 -0
  8. data/Gemfile +25 -0
  9. data/Guardfile +70 -0
  10. data/LICENSE.txt +22 -0
  11. data/README.md +88 -0
  12. data/Rakefile +20 -0
  13. data/adminos.gemspec +37 -0
  14. data/adminos.png +0 -0
  15. data/app/assets/images/.keep +0 -0
  16. data/app/assets/images/apple-touch-icon.png +0 -0
  17. data/app/assets/images/favicon-16x16.png +0 -0
  18. data/app/assets/images/favicon-32x32.png +0 -0
  19. data/app/assets/images/favicon.ico +0 -0
  20. data/app/assets/images/safari-pinned-tab.svg +23 -0
  21. data/app/inputs/cropp_input.rb +45 -0
  22. data/bin/bundle +105 -0
  23. data/bin/gem +39 -0
  24. data/bin/rspec +29 -0
  25. data/exe/adminos +5 -0
  26. data/lib/adminos/cli.rb +71 -0
  27. data/lib/adminos/controllers/admin_extension.rb +34 -0
  28. data/lib/adminos/controllers/helpers.rb +24 -0
  29. data/lib/adminos/controllers/resource.rb +169 -0
  30. data/lib/adminos/extensions/globalize_actiontext.rb +28 -0
  31. data/lib/adminos/extensions/globalize_fields.rb +19 -0
  32. data/lib/adminos/extensions/nested_set.rb +27 -0
  33. data/lib/adminos/extensions/string.rb +5 -0
  34. data/lib/adminos/generators/gemfile_merge.rb +85 -0
  35. data/lib/adminos/generators/utilities.rb +87 -0
  36. data/lib/adminos/helpers/admin.rb +190 -0
  37. data/lib/adminos/helpers/bootstrap.rb +64 -0
  38. data/lib/adminos/helpers/models/apply_sortable_order.rb +10 -0
  39. data/lib/adminos/helpers/models/array_attrs.rb +17 -0
  40. data/lib/adminos/helpers/models/cropped.rb +20 -0
  41. data/lib/adminos/helpers/models/dom_id.rb +16 -0
  42. data/lib/adminos/helpers/models/flag_attrs.rb +43 -0
  43. data/lib/adminos/helpers/models/if_blank_set_to_nil_params.rb +19 -0
  44. data/lib/adminos/helpers/models/move_to.rb +17 -0
  45. data/lib/adminos/helpers/models/nested_set/duplication.rb +31 -0
  46. data/lib/adminos/helpers/models/nested_set/materialize_path.rb +50 -0
  47. data/lib/adminos/helpers/models/nested_set/place_to.rb +35 -0
  48. data/lib/adminos/helpers/models/nested_set/safe_destroy.rb +34 -0
  49. data/lib/adminos/helpers/models/recognizable.rb +28 -0
  50. data/lib/adminos/helpers/models/slugged.rb +20 -0
  51. data/lib/adminos/helpers/models/soft_destroy.rb +61 -0
  52. data/lib/adminos/helpers/models/wysiwyg.rb +105 -0
  53. data/lib/adminos/helpers/view.rb +137 -0
  54. data/lib/adminos/operations/check_environment.rb +18 -0
  55. data/lib/adminos/operations/extract_environment.rb +42 -0
  56. data/lib/adminos/operations/load_environment.rb +30 -0
  57. data/lib/adminos/stateful_link/action_any_of.rb +76 -0
  58. data/lib/adminos/stateful_link/helper.rb +31 -0
  59. data/lib/adminos.rb +42 -0
  60. data/lib/adminos_template.rb +15 -0
  61. data/lib/generators/adminos/adminos_generator.rb +164 -0
  62. data/lib/generators/adminos/ci_generator.rb +124 -0
  63. data/lib/generators/adminos/field_generator.rb +105 -0
  64. data/lib/generators/adminos/i18n_generator.rb +76 -0
  65. data/lib/generators/adminos/install_generator.rb +238 -0
  66. data/lib/generators/templates/adminos/adminos.ru.yml +15 -0
  67. data/lib/generators/templates/adminos/fields.slim +21 -0
  68. data/lib/generators/templates/adminos/locales/general_fields.slim +7 -0
  69. data/lib/generators/templates/adminos/locales/locale_fields.slim +10 -0
  70. data/lib/generators/templates/adminos/locales/migration.rb.erb +18 -0
  71. data/lib/generators/templates/adminos/locales/model.rb.erb +6 -0
  72. data/lib/generators/templates/adminos/sidebar.slim +2 -0
  73. data/lib/generators/templates/adminos/sorts/body.slim +3 -0
  74. data/lib/generators/templates/adminos/sorts/headers.slim +3 -0
  75. data/lib/generators/templates/adminos/types/default/controller.rb.erb +18 -0
  76. data/lib/generators/templates/adminos/types/default/migration.rb +5 -0
  77. data/lib/generators/templates/adminos/types/default/model.rb +20 -0
  78. data/lib/generators/templates/adminos/types/default/model_includes.rb +4 -0
  79. data/lib/generators/templates/adminos/types/default/views/index.slim +14 -0
  80. data/lib/generators/templates/adminos/types/section/controller.rb.erb +10 -0
  81. data/lib/generators/templates/adminos/types/section/migration.rb +12 -0
  82. data/lib/generators/templates/adminos/types/section/model.rb +62 -0
  83. data/lib/generators/templates/adminos/types/section/model_includes.rb +7 -0
  84. data/lib/generators/templates/adminos/types/section/views/_object.slim +24 -0
  85. data/lib/generators/templates/adminos/types/section/views/_objects.slim +6 -0
  86. data/lib/generators/templates/adminos/types/section/views/index.slim +7 -0
  87. data/lib/generators/templates/adminos/types/sortable/controller.rb.erb +10 -0
  88. data/lib/generators/templates/adminos/types/sortable/migration.rb +9 -0
  89. data/lib/generators/templates/adminos/types/sortable/model.rb +35 -0
  90. data/lib/generators/templates/adminos/types/sortable/model_includes.rb +6 -0
  91. data/lib/generators/templates/adminos/types/sortable/views/_object.slim +17 -0
  92. data/lib/generators/templates/adminos/types/sortable/views/_objects.slim +6 -0
  93. data/lib/generators/templates/adminos/types/sortable/views/index.slim +7 -0
  94. data/lib/generators/templates/adminos/types/table/controller.rb.erb +19 -0
  95. data/lib/generators/templates/adminos/types/table/views/index.slim +31 -0
  96. data/lib/generators/templates/ci/.gitlab-ci.yml +40 -0
  97. data/lib/generators/templates/ci/audit/Gemfile +3 -0
  98. data/lib/generators/templates/ci/lint/Gemfile +3 -0
  99. data/lib/generators/templates/ci/lint/rubocop.yml +116 -0
  100. data/lib/generators/templates/ci/rakelib/audit.rake +13 -0
  101. data/lib/generators/templates/ci/rakelib/lint.rake +13 -0
  102. data/lib/generators/templates/ci/spec/Gemfile +9 -0
  103. data/lib/generators/templates/field/locales/locale_fields.slim +4 -0
  104. data/lib/generators/templates/field/locales/migration.rb.erb +13 -0
  105. data/lib/generators/templates/field/locales/model.rb.erb +6 -0
  106. data/lib/generators/templates/i18n/Gemfile +1 -0
  107. data/lib/generators/templates/i18n/add_translation_table_to_page.rb +15 -0
  108. data/lib/generators/templates/i18n/auto/app/validators/locale_validator.rb +23 -0
  109. data/lib/generators/templates/i18n/auto/app/views/admin/base/_fields.slim +1 -0
  110. data/lib/generators/templates/i18n/auto/app/views/admin/base/_pills.slim +19 -0
  111. data/lib/generators/templates/i18n/auto/app/views/admin/pages/_general_fields.slim +8 -0
  112. data/lib/generators/templates/i18n/auto/app/views/admin/pages/_locale_fields.slim +13 -0
  113. data/lib/generators/templates/i18n/auto/config/initializers/globalize_fields.rb +1 -0
  114. data/lib/generators/templates/i18n/controller.rb +12 -0
  115. data/lib/generators/templates/i18n/devise/devise.ru.yml +60 -0
  116. data/lib/generators/templates/i18n/devise/views/_links.erb +25 -0
  117. data/lib/generators/templates/i18n/devise/views/confirmations/new.slim +8 -0
  118. data/lib/generators/templates/i18n/devise/views/mailer/confirmation_instructions.slim +4 -0
  119. data/lib/generators/templates/i18n/devise/views/mailer/reset_password_instructions.slim +5 -0
  120. data/lib/generators/templates/i18n/devise/views/mailer/unlock_instructions.slim +4 -0
  121. data/lib/generators/templates/i18n/devise/views/passwords/edit.slim +7 -0
  122. data/lib/generators/templates/i18n/devise/views/passwords/new.slim +5 -0
  123. data/lib/generators/templates/i18n/devise/views/registrations/edit.slim +25 -0
  124. data/lib/generators/templates/i18n/devise/views/registrations/new.slim +7 -0
  125. data/lib/generators/templates/i18n/devise/views/sessions/new.slim +22 -0
  126. data/lib/generators/templates/i18n/devise/views/unlocks/new.slim +11 -0
  127. data/lib/generators/templates/i18n/locales.slim +3 -0
  128. data/lib/generators/templates/i18n/page.rb +5 -0
  129. data/lib/generators/templates/install/.gitignore +11 -0
  130. data/lib/generators/templates/install/Gemfile +57 -0
  131. data/lib/generators/templates/install/Procfile +1 -0
  132. data/lib/generators/templates/install/_sidebar.slim.erb +44 -0
  133. data/lib/generators/templates/install/add_authentications/authentication.rb +7 -0
  134. data/lib/generators/templates/install/add_authentications/authentications_controller.rb +95 -0
  135. data/lib/generators/templates/install/add_authentications/authentications_migration.rb +12 -0
  136. data/lib/generators/templates/install/add_authentications/views/authentications/_form.slim +5 -0
  137. data/lib/generators/templates/install/add_authentications/views/authentications/_modal.slim +7 -0
  138. data/lib/generators/templates/install/add_pages/page.rb +116 -0
  139. data/lib/generators/templates/install/add_pages/pages_controller.rb +6 -0
  140. data/lib/generators/templates/install/add_pages/pages_migration.rb +25 -0
  141. data/lib/generators/templates/install/add_pages/views/pages/show.slim +4 -0
  142. data/lib/generators/templates/install/admin.slim +36 -0
  143. data/lib/generators/templates/install/admin_panel/pages/admin_pages_controller.rb +9 -0
  144. data/lib/generators/templates/install/admin_panel/pages/views/admin_pages/_fields.slim +26 -0
  145. data/lib/generators/templates/install/admin_panel/pages/views/admin_pages/_object.slim +25 -0
  146. data/lib/generators/templates/install/admin_panel/pages/views/admin_pages/_objects.slim +6 -0
  147. data/lib/generators/templates/install/admin_panel/pages/views/admin_pages/index.slim +7 -0
  148. data/lib/generators/templates/install/admin_panel/users/admin_users_controller.rb +29 -0
  149. data/lib/generators/templates/install/admin_panel/users/views/admin_users/_fields.slim +4 -0
  150. data/lib/generators/templates/install/admin_panel/users/views/admin_users/index.slim +33 -0
  151. data/lib/generators/templates/install/admin_panel/versions/admin_versions_controller.rb +29 -0
  152. data/lib/generators/templates/install/admin_panel/versions/views/admin_versions/index.slim +47 -0
  153. data/lib/generators/templates/install/admin_panel/versions/views/admin_versions/show.slim +18 -0
  154. data/lib/generators/templates/install/application.slim.erb +31 -0
  155. data/lib/generators/templates/install/auto/.editorconfig +14 -0
  156. data/lib/generators/templates/install/auto/.env.staging +2 -0
  157. data/lib/generators/templates/install/auto/Capfile +14 -0
  158. data/lib/generators/templates/install/auto/Guardfile +18 -0
  159. data/lib/generators/templates/install/auto/Procfile +1 -0
  160. data/lib/generators/templates/install/auto/Procfile.local +2 -0
  161. data/lib/generators/templates/install/auto/app/assets/javascripts/admin/application.js +3 -0
  162. data/lib/generators/templates/install/auto/app/assets/javascripts/admin/cocoon_fields.js +43 -0
  163. data/lib/generators/templates/install/auto/app/assets/javascripts/application.js +1 -0
  164. data/lib/generators/templates/install/auto/app/assets/stylesheets/admin/application.scss +1 -0
  165. data/lib/generators/templates/install/auto/app/controllers/admin/base_controller.rb +16 -0
  166. data/lib/generators/templates/install/auto/app/controllers/admin/helps_controller.rb +4 -0
  167. data/lib/generators/templates/install/auto/app/controllers/admin/settings_controller.rb +26 -0
  168. data/lib/generators/templates/install/auto/app/controllers/application_controller.rb +50 -0
  169. data/lib/generators/templates/install/auto/app/controllers/index_controller.rb +2 -0
  170. data/lib/generators/templates/install/auto/app/helpers/nested_helper.rb +75 -0
  171. data/lib/generators/templates/install/auto/app/helpers/versions_helper.rb +33 -0
  172. data/lib/generators/templates/install/auto/app/inputs/carrierwave_input.rb +52 -0
  173. data/lib/generators/templates/install/auto/app/inputs/checkbox_input.rb +13 -0
  174. data/lib/generators/templates/install/auto/app/inputs/rich_text_input.rb +9 -0
  175. data/lib/generators/templates/install/auto/app/mailers/notifier.rb +9 -0
  176. data/lib/generators/templates/install/auto/app/models/settings.rb +27 -0
  177. data/lib/generators/templates/install/auto/app/services/export_xlsx.rb +76 -0
  178. data/lib/generators/templates/install/auto/app/views/active_storage/blobs/_blob.html.erb +17 -0
  179. data/lib/generators/templates/install/auto/app/views/admin/base/_form.slim +33 -0
  180. data/lib/generators/templates/install/auto/app/views/admin/base/_object.slim +27 -0
  181. data/lib/generators/templates/install/auto/app/views/admin/base/_objects.slim +19 -0
  182. data/lib/generators/templates/install/auto/app/views/admin/base/drop.js.erb +1 -0
  183. data/lib/generators/templates/install/auto/app/views/admin/base/edit.slim +1 -0
  184. data/lib/generators/templates/install/auto/app/views/admin/base/index.slim +14 -0
  185. data/lib/generators/templates/install/auto/app/views/admin/base/new.slim +1 -0
  186. data/lib/generators/templates/install/auto/app/views/admin/helps/index.slim +29 -0
  187. data/lib/generators/templates/install/auto/app/views/admin/settings/edit.slim +27 -0
  188. data/lib/generators/templates/install/auto/app/views/kaminari/_first_page.slim +10 -0
  189. data/lib/generators/templates/install/auto/app/views/kaminari/_gap.slim +7 -0
  190. data/lib/generators/templates/install/auto/app/views/kaminari/_last_page.slim +10 -0
  191. data/lib/generators/templates/install/auto/app/views/kaminari/_next_page.slim +9 -0
  192. data/lib/generators/templates/install/auto/app/views/kaminari/_page.slim +10 -0
  193. data/lib/generators/templates/install/auto/app/views/kaminari/_paginator.slim +16 -0
  194. data/lib/generators/templates/install/auto/app/views/kaminari/_prev_page.slim +9 -0
  195. data/lib/generators/templates/install/auto/app/views/kaminari/admin/_first_page.slim +10 -0
  196. data/lib/generators/templates/install/auto/app/views/kaminari/admin/_gap.slim +8 -0
  197. data/lib/generators/templates/install/auto/app/views/kaminari/admin/_last_page.slim +10 -0
  198. data/lib/generators/templates/install/auto/app/views/kaminari/admin/_next_page.slim +10 -0
  199. data/lib/generators/templates/install/auto/app/views/kaminari/admin/_page.slim +10 -0
  200. data/lib/generators/templates/install/auto/app/views/kaminari/admin/_paginator.slim +16 -0
  201. data/lib/generators/templates/install/auto/app/views/kaminari/admin/_prev_page.slim +10 -0
  202. data/lib/generators/templates/install/auto/app/views/layouts/admin/base.slim +17 -0
  203. data/lib/generators/templates/install/auto/app/views/shared/admin/_back_button.slim +3 -0
  204. data/lib/generators/templates/install/auto/app/views/shared/admin/_footer.slim +3 -0
  205. data/lib/generators/templates/install/auto/app/views/shared/admin/_search_form.slim +6 -0
  206. data/lib/generators/templates/install/auto/app/views/shared/admin/_topbar.slim +11 -0
  207. data/lib/generators/templates/install/auto/app/views/shared/helpers/_alert_close.slim +1 -0
  208. data/lib/generators/templates/install/auto/app/views/shared/helpers/_contacts_page_link_tag.slim +1 -0
  209. data/lib/generators/templates/install/auto/app/views/shared/helpers/_link_button_to.slim +2 -0
  210. data/lib/generators/templates/install/auto/app/views/shared/helpers/_method_ajax_request_link_to.slim +2 -0
  211. data/lib/generators/templates/install/auto/app/views/shared/helpers/_method_link_to.slim +12 -0
  212. data/lib/generators/templates/install/auto/app/views/shared/helpers/_navigation_menu.html.slim +3 -0
  213. data/lib/generators/templates/install/auto/app/views/shared/helpers/_print_tag.slim +2 -0
  214. data/lib/generators/templates/install/auto/app/views/shared/helpers/_search_tag_for.slim +16 -0
  215. data/lib/generators/templates/install/auto/app/views/shared/helpers/_show_breadcrumbs.slim +7 -0
  216. data/lib/generators/templates/install/auto/app/views/shared/helpers/_show_flash_alert.slim +9 -0
  217. data/lib/generators/templates/install/auto/app/views/shared/helpers/_sortable_column.slim +3 -0
  218. data/lib/generators/templates/install/auto/app/views/shared/helpers/_span_link_to.slim +3 -0
  219. data/lib/generators/templates/install/auto/app/views/shared/helpers/_sub_navigation.slim +14 -0
  220. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_batch_actions_tag.slim +16 -0
  221. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_collection_button_new.slim +5 -0
  222. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_collection_header.slim +4 -0
  223. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_locked_sign.slim +3 -0
  224. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_nav_published_sign.slim +1 -0
  225. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_object_link_children.slim +2 -0
  226. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_object_link_duplication.slim +1 -0
  227. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_object_link_edit.slim +1 -0
  228. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_object_link_new.slim +1 -0
  229. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_page_header.slim +5 -0
  230. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_published_sign.slim +1 -0
  231. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_show_breadcrumbs.slim +6 -0
  232. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_top_menu_item.slim +5 -0
  233. data/lib/generators/templates/install/auto/app/views/shared/helpers/admin/_unpublished_sign.slim +1 -0
  234. data/lib/generators/templates/install/auto/browserslist +3 -0
  235. data/lib/generators/templates/install/auto/config/deploy/shared/database.yml.erb +10 -0
  236. data/lib/generators/templates/install/auto/config/deploy/shared/nginx.conf.erb +28 -0
  237. data/lib/generators/templates/install/auto/config/deploy/shared/unicorn.rb.erb +35 -0
  238. data/lib/generators/templates/install/auto/config/deploy/staging.rb +12 -0
  239. data/lib/generators/templates/install/auto/config/environments/staging.rb +84 -0
  240. data/lib/generators/templates/install/auto/config/initializers/awesome_nested_set.rb +1 -0
  241. data/lib/generators/templates/install/auto/config/initializers/content_security_policy.rb +26 -0
  242. data/lib/generators/templates/install/auto/config/initializers/friendly_id.rb +1 -0
  243. data/lib/generators/templates/install/auto/config/initializers/kaminari_config.rb +15 -0
  244. data/lib/generators/templates/install/auto/config/initializers/simple_form.rb +238 -0
  245. data/lib/generators/templates/install/auto/config/initializers/slim.rb +2 -0
  246. data/lib/generators/templates/install/auto/config/locales/adminos.en.yml +164 -0
  247. data/lib/generators/templates/install/auto/config/locales/adminos.ru.yml +292 -0
  248. data/lib/generators/templates/install/auto/lib/capistrano/substitute_strings.rb +12 -0
  249. data/lib/generators/templates/install/auto/lib/capistrano/tasks/setup_config.cap +39 -0
  250. data/lib/generators/templates/install/auto/lib/capistrano/template.rb +33 -0
  251. data/lib/generators/templates/install/auto/public/404.html +26 -0
  252. data/lib/generators/templates/install/auto/public/500.html +25 -0
  253. data/lib/generators/templates/install/database.yml +19 -0
  254. data/lib/generators/templates/install/deploy.rb.erb +21 -0
  255. data/lib/generators/templates/install/install_devise/ability.rb +49 -0
  256. data/lib/generators/templates/install/install_devise/application.rb +7 -0
  257. data/lib/generators/templates/install/install_devise/prepare_users.rb +1 -0
  258. data/lib/generators/templates/install/install_devise/user.rb +21 -0
  259. data/lib/generators/templates/install/prepare_settings.rb +4 -0
  260. data/lib/generators/templates/install/routes/pages.rb +18 -0
  261. data/lib/generators/templates/install/routes.rb.erb +53 -0
  262. data/lib/generators/templates/install/settings_migration.rb +16 -0
  263. data/lib/generators/templates/install/webpack/custom.js +36 -0
  264. data/lib/generators/templates/install/webpack/environment.js +4 -0
  265. data/lib/generators/templates/install/webpack/javascript/admin/js/index.js +2 -0
  266. data/lib/generators/templates/install/webpack/javascript/admin/styles/admin.scss +2 -0
  267. data/lib/generators/templates/install/webpack/javascript/packs/admin.js +2 -0
  268. data/package-lock.json +3 -0
  269. data/spec/config/database.yml +2 -0
  270. data/spec/db/schema.rb +0 -0
  271. data/spec/lib/adminos/helpers/models/apply_sortable_order.rb +26 -0
  272. data/spec/lib/adminos/helpers/models/array_attrs_spec.rb +38 -0
  273. data/spec/lib/adminos/helpers/models/dom_id_spec.rb +41 -0
  274. data/spec/lib/adminos/helpers/models/flag_attrs_spec.rb +115 -0
  275. data/spec/lib/adminos/helpers/models/if_blank_set_to_nil_params_spec.rb +36 -0
  276. data/spec/lib/adminos/helpers/models/recognizable_spec.rb +40 -0
  277. data/spec/lib/adminos/helpers/models/slugged.rb +40 -0
  278. data/spec/lib/generators/adminos/adminos_generator_spec.rb +106 -0
  279. data/spec/lib/generators/adminos/ci_generator_spec.rb +88 -0
  280. data/spec/lib/generators/adminos/i18n_generator_spec.rb +31 -0
  281. data/spec/lib/generators/adminos/install_generator_rspec.rb +322 -0
  282. data/spec/spec_helper.rb +122 -0
  283. data/spec/support/ammeter.rb +14 -0
  284. data/spec/support/database.rb +29 -0
  285. data/spec/support/generators.rb +99 -0
  286. data/spec/support/post.rb +8 -0
  287. data/spec/support/shared/generator.rb +35 -0
  288. metadata +632 -0
@@ -0,0 +1,292 @@
1
+ ru:
2
+ "true": Да
3
+ "false": Нет
4
+
5
+ time:
6
+ formats:
7
+ admin: '%e %B %Y, %H:%M'
8
+ announcement: '%e %B %Y'
9
+ announcement_index_page: '%d.%m.%Y'
10
+ announcement_slug: '%Y-%m-%d %H:%M'
11
+ event: '%d %B'
12
+ event_day: '%d'
13
+ event_year: '%d %B %Y'
14
+ event_full: '%d %B %Y, %A'
15
+ feedback_request: '%e %B %Y %H:%M'
16
+ feedback_request_admin_email_subject: '%e %B %Y %H:%M'
17
+ feedback_request_manageable: '%e %B %Y %H:%M'
18
+ primary: '%d.%m.%Y'
19
+ short: '%e %B %Y'
20
+
21
+ number:
22
+ currency:
23
+ format:
24
+ format: "%n %u"
25
+ unit: "руб."
26
+ separator: ","
27
+ delimiter: " "
28
+ precision: 2
29
+ significant: false
30
+ strip_insignificant_zeros: false
31
+
32
+ errors:
33
+ messages:
34
+ invalid: "Имеет неверное значение"
35
+ empty: "Не может быть пустым"
36
+ blank: "Не может быть пустым"
37
+ extension_white_list_error: Неверный формат файла
38
+
39
+ attributes:
40
+ name: Название
41
+ published: Опубликована
42
+ nav_name: Название для навигации
43
+ nav_published: Показывать в навигации
44
+ slug: URL
45
+ body: Текст
46
+ lead: Краткое описание
47
+ published_at: Дата публикации
48
+ created_at: Дата
49
+ meta_title: Title
50
+ meta_description: Description
51
+ parent: Родитель
52
+
53
+ activerecord:
54
+ errors:
55
+ messages:
56
+ inclusion: "Имеет непредусмотренное значение"
57
+ exclusion: "Имеет зарезервированное значение"
58
+ invalid: "Имеет неверное значение"
59
+ confirmation: "не совпадает с подтверждением"
60
+ accepted: "Нужно подтвердить"
61
+ empty: "Не может быть пустым"
62
+ blank: "Не может быть пустым"
63
+ too_much_nesting: Итоговая вложенность не может превышать %{count} уровней.
64
+ too_long:
65
+ one: "Слишком большой длины (не может быть больше чем %{count} символ)"
66
+ few: "Слишком большой длины (не может быть больше чем %{count} символа)"
67
+ many: "Слишком большой длины (не может быть больше чем %{count} символов)"
68
+ other: "Слишком большой длины (не может быть больше чем %{count} символа)"
69
+ too_short:
70
+ one: "Недостаточной длины (не может быть меньше %{count} символа)"
71
+ few: "Недостаточной длины (не может быть меньше %{count} символов)"
72
+ many: "Недостаточной длины (не может быть меньше %{count} символов)"
73
+ other: "Недостаточной длины (не может быть меньше %{count} символа)"
74
+ wrong_length:
75
+ one: "Неверной длины (может быть длиной ровно %{count} символ)"
76
+ few: "Неверной длины (может быть длиной ровно %{count} символа)"
77
+ many: "Неверной длины (может быть длиной ровно %{count} символов)"
78
+ other: "Неверной длины (может быть длиной ровно %{count} символа)"
79
+ taken: "Уже существует"
80
+ wrong_host: "Email должен принадлежать домену %{host} и должен сущестовать на сервере."
81
+ models:
82
+ page: Страница
83
+ user: Пользователь
84
+ settings: Настройки
85
+ attributes:
86
+ settings:
87
+ company_name: Название компании
88
+ contact_email: Контактный e-mail
89
+ email: E-mail для уведомлений
90
+ email_header_from: E-mail для FROM
91
+ index_meta_description: Description
92
+ index_meta_title: Title
93
+ per_page: Количество на странице
94
+ seo_google_analytics: Код Google Analytics
95
+ seo_yandex_metrika: Код Яндекс.Метрики
96
+ pr_email: E-mail PR-директора
97
+ test_emails: E-mail для тестовых писем
98
+ page:
99
+ behavior: Тип страницы
100
+ user:
101
+ email: E-mail
102
+ password: Пароль
103
+ roles: Роли
104
+ admin: Админ
105
+ paper_trail/version:
106
+ item: Объект
107
+ item_type: Тип
108
+ event: Событие
109
+ whodunnit: Юзер
110
+
111
+ social:
112
+ log_in: Войти через социальные сети
113
+ already_bound: Этот профиль социальной сети уже был привязан
114
+ bind_success: Вы успешно привязали профиль %{provider} к своей текущей учетной записи
115
+ login_success: Вы успешно вошли с помощью профиля %{provider}
116
+ email_bind_success: Профиль %{provider} был привязан к вашему основному аккаунту
117
+ signup_success: Вы вошли с помощью профиля социальной сети %{provider}
118
+
119
+ flash:
120
+ actions:
121
+ create:
122
+ notice: Объект успешно создан
123
+ alert: Заполните, пожалуйста, форму без ошибок
124
+ update:
125
+ notice: Объект успешно обновлен
126
+ alert: Заполните, пожалуйста, форму без ошибок
127
+ destroy:
128
+ notice: Объект успешно удален
129
+ alert: Объект не может быть удален
130
+ batch_action:
131
+ none: Выберите хотя бы один объект
132
+ notice: Операция завершена успешно
133
+ access_denied: Доступ запрещен
134
+
135
+ simple_form:
136
+ hints:
137
+ defaults:
138
+ slug: Сформируется автоматически, если не задан. Допустимы латинские символы, цифры и дефис.
139
+ required:
140
+ text: 'Обязательно'
141
+
142
+ views:
143
+ pagination:
144
+ first: Первая страница
145
+ last: Последняя страница
146
+ next: Следующая страница
147
+ previous: Предыдущая страница
148
+ truncate: '...'
149
+ admin:
150
+ first: Первая страница
151
+ last: Последняя страница
152
+ next: "»"
153
+ previous: "«"
154
+ truncate: '...'
155
+
156
+ labels:
157
+ application:
158
+ admin: Панель управления
159
+ admin:
160
+ add: Добавить
161
+ add_child: Добавить подраздел
162
+ back: Назад
163
+ cancel: Отменить
164
+ destroy: Удалить
165
+ edit: Редактировать
166
+ show: Просмотр изменений
167
+ go_to_root: Перейти на сайт
168
+ info: Справка
169
+ other: Другое
170
+ search: Поиск
171
+ legend:
172
+ common: Основное
173
+ seo: SEO
174
+ logout: Выйти
175
+ nav_published: В навигации
176
+ published: Опубликована
177
+ locked: Закреплена
178
+ server_restart: Перезагрузить сервер
179
+ unpublished: Не опубликована
180
+ batch_actions:
181
+ destroy: Удалить
182
+ set_nav_published_off: Убрать из навигации
183
+ set_nav_published_on: Опубликовать в навигации
184
+ set_published_off: Снять с публикации
185
+ set_published_on: Опубликовать
186
+
187
+ confirmations:
188
+ destroy:
189
+ one: Вы уверены что хотите удалить?
190
+ many: Вы уверены что хотите удалить эти объекты?
191
+
192
+ layouts:
193
+ application:
194
+ header: Главная
195
+ title: Molinos.Ru
196
+ admin:
197
+ header: &layouts_admin_header Панель управления
198
+ title: &layouts_admin_title Панель управления
199
+
200
+ admin:
201
+ actions:
202
+ create: Создание
203
+ update: Обновление
204
+ destroy: Удаление
205
+ helps:
206
+ actions:
207
+ index:
208
+ header: Панель управления
209
+ title: *layouts_admin_title
210
+ legend:
211
+ edit: Редактирование
212
+ delete: Удаление
213
+ move: Сортировка
214
+ published: Видимость на сайте
215
+ nav_published: Видимость в навигации
216
+ users:
217
+ actions:
218
+ index:
219
+ header: Пользователи
220
+ title: Пользователи
221
+ labels:
222
+ actions:
223
+ create: Добавить пользователя
224
+ edit: Сохранить пользователя
225
+ new: Добавить пользователя
226
+ update: Сохранить пользователя
227
+ form:
228
+ login: Войти
229
+ registration: Зарегистрироваться
230
+ forgot_password: Восстановить пароль
231
+ confirm: Я не получил инструкций о подтверждении аккаунта
232
+ oauth: Войти с помощью
233
+ remember_me: Запомнить меня
234
+ password: Пароль
235
+ password_confirmation: Подтверждение пароля
236
+ new_password: Новый пароль
237
+ new_password_confirmation: Подтверждение нового пароля
238
+ buttons:
239
+ password_reset: Выслать инструкции
240
+ password_edit: Изменить пароль
241
+ register: Зарегистрироваться
242
+ paper_trail/versions:
243
+ actions:
244
+ index:
245
+ header: Действия
246
+ title: Действия
247
+ labels:
248
+ actions:
249
+ show: Просмотр изменений
250
+ settings:
251
+ actions:
252
+ index:
253
+ header: Настройки
254
+ sets:
255
+ counters: Счётчики
256
+ index: Главная страница
257
+ contact_information: Контактная информация
258
+ labels:
259
+ actions:
260
+ create: Настройки
261
+ edit: Сохранить настройки
262
+ update: Сохранить настройки
263
+ contact_email: E-mail
264
+ pages:
265
+ actions:
266
+ index:
267
+ header: Страницы
268
+ title: Страницы
269
+ alerts:
270
+ category:
271
+ Страница является категорией и не может быть отредактирована
272
+ в визуальном редакторе.
273
+ behavior_not_default:
274
+ Страница типа «%{behavior}» не может быть отредактирована
275
+ в визуальном редакторе.
276
+ labels:
277
+ actions:
278
+ create: Добавить страницу
279
+ create_stay_in_place: Применить
280
+ edit: Сохранить страницу
281
+ edit_stay_in_place: Применить
282
+ new: Добавить страницу
283
+ newrak_stay_in_place: Применить
284
+ update: Сохранить страницу
285
+ update_stay_in_place: Применить
286
+
287
+ pages:
288
+ behaviors:
289
+ pages: Типовая страница
290
+
291
+ unauthorized:
292
+ default: Необходимо войти или зарегистрироваться.
@@ -0,0 +1,12 @@
1
+ # we often want to refer to variables which
2
+ # are defined in subsequent stage files. This
3
+ # let's us use the {{var}} to represent fetch(:var)
4
+ # in strings which are only evaluated at runtime.
5
+
6
+ def sub_strings(input_string)
7
+ output_string = input_string
8
+ input_string.scan(/{{(\w*)}}/).each do |var|
9
+ output_string.gsub!("{{#{var[0]}}}", fetch(var[0].to_sym))
10
+ end
11
+ output_string
12
+ end
@@ -0,0 +1,39 @@
1
+ namespace :deploy do
2
+ task :setup_config do
3
+ on roles(:app) do
4
+ # make the config dir
5
+ execute :mkdir, "-p #{shared_path}/config"
6
+ full_app_name = fetch(:full_app_name)
7
+
8
+ # config files to be uploaded to shared/config, see the
9
+ # definition of smart_template for details of operation.
10
+ # Essentially looks for #{filename}.erb in deploy/#{full_app_name}/
11
+ # and if it isn't there, falls back to deploy/#{shared}. Generally
12
+ # everything should be in deploy/shared with params which differ
13
+ # set in the stage files
14
+
15
+ begin
16
+ config_files = fetch(:config_files)
17
+ config_files.each do |file|
18
+ smart_template file
19
+ end
20
+
21
+ # which of the above files should be marked as executable
22
+ executable_files = fetch(:executable_config_files)
23
+
24
+ #executable_files.each do |file|
25
+ # execute :chmod, "+x #{shared_path}/config/#{file}"
26
+ #end
27
+
28
+ # symlink stuff which should be... symlinked
29
+ symlinks = fetch(:symlinks)
30
+
31
+ symlinks.each do |symlink|
32
+ sudo "ln -nfs #{shared_path}/config/#{symlink[:source]} #{sub_strings(symlink[:link])}"
33
+ end
34
+ rescue Exception => e
35
+ log "ERROR: #{e.to_s}"
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,33 @@
1
+ # will first try and copy the file:
2
+ # config/deploy/#{full_app_name}/#{from}.erb
3
+ # to:
4
+ # shared/config/to
5
+ # if the original source path doesn exist then it will
6
+ # search in:
7
+ # config/deploy/shared/#{from}.erb
8
+ # this allows files which are common to all enviros to
9
+ # come from a single source while allowing specific
10
+ # ones to be over-ridden
11
+ # if the target file name is the same as the source then
12
+ # the second parameter can be left out
13
+ def smart_template(from, to = nil)
14
+ to ||= from
15
+ full_to_path = "#{shared_path}/#{to}"
16
+ from = from.split('/')[-1]
17
+ if (from_erb_path = template_file(from))
18
+ from_erb = StringIO.new(ERB.new(File.read(from_erb_path)).result(binding))
19
+ upload! from_erb, full_to_path
20
+ info "copying: #{from_erb} to: #{full_to_path}"
21
+ else
22
+ error "error #{from} not found"
23
+ end
24
+ end
25
+
26
+ def template_file(name)
27
+ if File.exist?((file = "config/deploy/#{fetch(:full_app_name)}/#{name}.erb"))
28
+ return file
29
+ elsif File.exist?((file = "config/deploy/shared/#{name}.erb"))
30
+ return file
31
+ end
32
+ return nil
33
+ end
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ru">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Страница не найдена</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <link href="/favicon.ico" rel="shortcut icon">
8
+ <style>
9
+ * {margin: 0; padding: 0}
10
+ html, body, div, span, h1, h2, p, a, i, em, b, strong, img {display: block}
11
+ body {width: 100%; color: #000; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 0.625em; line-height: 1; background-color: #fff}
12
+ h1 {color: #000; margin: 0 0 0.6em 0; font: normal 250%/1.1 Tahoma, Arial, Helvetica, sans-serif}
13
+ a {color: #009fe3; text-decoration: underline}
14
+ a:hover, a:active {color: #f7a900}
15
+ p {margin: 0 0 1em; font-size: 160%; line-height: 1.2}
16
+ div {padding: 4% 5%}
17
+ </style>
18
+ </head>
19
+ <body>
20
+ <div>
21
+ <h1>Страница не найдена</h1>
22
+ <p>Неправильно набран адрес, или такой страницы не&nbsp;существует.</p>
23
+ <p><a href="/">Главная страница</a></p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ru">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Внутренняя ошибка сервера</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <link href="/favicon.ico" rel="shortcut icon">
8
+ <style>
9
+ * {margin: 0; padding: 0}
10
+ html, body, div, span, h1, h2, p, a, i, em, b, strong, img {display: block}
11
+ body {width: 100%; color: #000; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 0.625em; line-height: 1; background-color: #fff}
12
+ h1 {color: #000; margin: 0 0 0.5em 0; font: normal 250%/1.1 Tahoma, Arial, Helvetica, sans-serif}
13
+ a {color: #009fe3; text-decoration: underline}
14
+ a:hover, a:active {color: #f7a900}
15
+ p {margin: 0 0 1em; font-size: 160%; line-height: 1.2}
16
+ div {padding: 4% 5%}
17
+ </style>
18
+ </head>
19
+ <body>
20
+ <div>
21
+ <h1>Внутренняя ошибка сервера</h1>
22
+ <p>Что-то пошло не так. Попробуйте зайти позже.</p>
23
+ </div>
24
+ </body>
25
+ </html>
@@ -0,0 +1,19 @@
1
+ staging:
2
+ adapter: postgresql
3
+ database: <%= application_name %>_staging
4
+
5
+ production:
6
+ adapter: postgresql
7
+ database: <%= ENV['PGDATABASE'] %>
8
+ username: <%= ENV['PGUSER'] %>
9
+ password: <%= ENV['PGPASSWORD'] %>
10
+ host: <%= ENV['PGHOST'] %>
11
+
12
+ development:
13
+ adapter: postgresql
14
+ database: <%= application_name %>_development
15
+
16
+ test:
17
+ adapter: postgresql
18
+ database: <%= application_name %>_test
19
+ min_messages: warning
@@ -0,0 +1,21 @@
1
+ set :application, :<%= application_name %>
2
+ set :repo_url, "git@gitlab.molinos.ru:studio/#{application}.git"
3
+
4
+ # Default value for :linked_files is []
5
+ set :linked_files, fetch(:linked_files, []).push('config/database.yml', '.env', 'config/master.key')
6
+ # Default value for linked_dirs is []
7
+ set :linked_dirs, fetch(:linked_dirs, []).push(
8
+ 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'storage'
9
+ )
10
+
11
+ set :rvm_ruby_version, Pathname(__dir__).join('../.ruby-version').read.chomp
12
+
13
+ set :db_local_clean, true
14
+ set :assets_dir, %w[public/system]
15
+
16
+ after 'deploy:publishing', 'deploy:restart'
17
+ namespace :deploy do
18
+ task :restart do
19
+ invoke 'unicorn:restart'
20
+ end
21
+ end
@@ -0,0 +1,49 @@
1
+ class Ability
2
+ include CanCan::Ability
3
+
4
+ attr_reader :user
5
+
6
+ def initialize(user)
7
+ @user = user
8
+
9
+ if user.is?(:admin)
10
+ can :manage, :all
11
+ end
12
+
13
+ # if user.is?(:admin)
14
+ # can :manage, :all
15
+ # elsif user.is?(:hr)
16
+ # hr_abilities
17
+ # elsif user.is? :member
18
+ # user_abilities
19
+ # elsif user.is? :manager
20
+ # manager_abilities
21
+ # end
22
+ end
23
+
24
+ # def hr_abilities
25
+ # can :manage, [Page, Response, Vacancy, Department,
26
+ # Settings, Status, Comment, Post, Event,
27
+ # City, Office, EventRegistration]
28
+ # can :manage, User do |user|
29
+ # %i[member manager].include?(user.role_symbols.last)
30
+ # end
31
+ # end
32
+ #
33
+ # def user_abilities
34
+ # can :manage, Comment
35
+ # can %i[read edit update], Response do |response|
36
+ # @user.department_ids.include?(response.vacancy.department_id)
37
+ # end
38
+ # end
39
+ #
40
+ # def manager_abilities
41
+ # user_abilities
42
+ #
43
+ # can :new, Vacancy
44
+ #
45
+ # can %i[read edit update create], Vacancy do |vacancy|
46
+ # @user.department_ids.include?(vacancy.department_id)
47
+ # end
48
+ # end
49
+ end
@@ -0,0 +1,7 @@
1
+ config.to_prepare do
2
+ Devise::SessionsController.layout 'admin'
3
+ Devise::RegistrationsController.layout proc { |controller| user_signed_in? ? 'application' : 'admin' }
4
+ Devise::ConfirmationsController.layout 'admin'
5
+ Devise::UnlocksController.layout 'admin'
6
+ Devise::PasswordsController.layout 'admin'
7
+ end
@@ -0,0 +1 @@
1
+ User.create email: 'studio@molinos.ru', password: 'changeme', roles: [:admin]
@@ -0,0 +1,21 @@
1
+ require 'role_model'
2
+
3
+ class User < ApplicationRecord
4
+ include RoleModel
5
+
6
+ devise :database_authenticatable, :registerable, :recoverable,
7
+ :rememberable, :validatable, :omniauthable
8
+
9
+ # has_many :authentications, dependent: :destroy
10
+
11
+ roles :admin
12
+ scoped_search on: :email
13
+
14
+ def reasonable_name
15
+ email
16
+ end
17
+
18
+ def translated_roles
19
+ role_symbols.map { |s| self.class.human_attribute_name(s) }.join ', '
20
+ end
21
+ end
@@ -0,0 +1,4 @@
1
+
2
+
3
+ Settings.reset_column_information
4
+ Settings.first_or_initialize.update_attributes email: 'studio@molinos.ru', email_header_from: 'studio@molinos.ru', company_name: 'Molinos'
@@ -0,0 +1,18 @@
1
+
2
+ begin
3
+ Page.for_routes.group_by(&:behavior).each do |behavior, pages|
4
+ pages.each do |page|
5
+ case behavior
6
+ when nil
7
+ else
8
+ resource( "#{page.class.name.underscore}_#{page.id}",
9
+ path: page.absolute_path,
10
+ controller: behavior,
11
+ only: :show,
12
+ page_id: page.id )
13
+ end
14
+ end
15
+ end
16
+ rescue
17
+ nil
18
+ end
@@ -0,0 +1,53 @@
1
+ <%= application_name.camelize %>::Application.routes.draw do
2
+ devise_for :users, skip: [:session, :password, :registration, :confirmation],
3
+ controllers: { omniauth_callbacks: 'authentications' }
4
+
5
+ namespace :admin do
6
+ resources :helps, only: :index
7
+ resource :settings, only: [:edit, :update]
8
+
9
+ resources :users, except: :show do
10
+ collection { post :batch_action }
11
+ end
12
+
13
+ resources :versions, only: [:index, :show] do
14
+ collection { post :batch_action }
15
+ end
16
+
17
+ resources :pages, except: :show do
18
+ collection { post :batch_action }
19
+ member { put :drop }
20
+ member { post :duplication }
21
+ end
22
+
23
+ root to: 'pages#index', as: :root
24
+ end
25
+
26
+ devise_for :users, skip: :omniauth_callbacks
27
+ devise_scope :user do
28
+ get 'authentications/new', to: 'authentications#new'
29
+ post 'authentications/link', to: 'authentications#link'
30
+ end
31
+
32
+ resources :templates, only: [:index, :show]
33
+
34
+ root to: 'index#index'
35
+
36
+ begin
37
+ Page.for_routes.group_by(&:behavior).each do |behavior, pages|
38
+ pages.each do |page|
39
+ case behavior
40
+ when nil
41
+ else
42
+ resource( "#{page.class.name.underscore}_#{page.id}",
43
+ path: page.absolute_path,
44
+ controller: behavior,
45
+ only: :show,
46
+ page_id: page.id )
47
+ end
48
+ end
49
+ end
50
+ rescue
51
+ nil
52
+ end
53
+ end
@@ -0,0 +1,16 @@
1
+ class CreateSettings < ActiveRecord::Migration<%= migration_version %>
2
+ def change
3
+ create_table :settings do |t|
4
+ t.string :copyright
5
+ t.string :email
6
+ t.string :company_name
7
+ t.string :contact_email
8
+ t.string :email_header_from
9
+ t.text :index_meta_description
10
+ t.string :index_meta_title
11
+ t.integer :per_page, default: 10
12
+ t.text :seo_google_analytics
13
+ t.text :seo_yandex_metrika
14
+ end
15
+ end
16
+ end