ack_rocket_cms 0.7.2.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 (132) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.rspec +1 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +19 -0
  7. data/Gemfile +5 -0
  8. data/Gemfile.lock +244 -0
  9. data/LICENSE.txt +22 -0
  10. data/README.md +74 -0
  11. data/Rakefile +1 -0
  12. data/app/assets/javascripts/head.load.js +707 -0
  13. data/app/assets/javascripts/jquery.placeholder.js +157 -0
  14. data/app/assets/javascripts/rocket_cms.js.coffee +10 -0
  15. data/app/assets/javascripts/rocket_cms/flash.js.coffee +3 -0
  16. data/app/assets/javascripts/rocket_cms/map.js.coffee +22 -0
  17. data/app/assets/stylesheets/rocket_cms.css.sass +6 -0
  18. data/app/assets/stylesheets/rocket_cms/flash.css.sass +66 -0
  19. data/app/assets/stylesheets/rocket_cms/normalize.css.scss +406 -0
  20. data/app/controllers/concerns/no_cache.rb +12 -0
  21. data/app/controllers/concerns/rs_errors.rb +63 -0
  22. data/app/controllers/concerns/rs_menu.rb +45 -0
  23. data/app/controllers/concerns/rs_pages.rb +41 -0
  24. data/app/controllers/contacts_controller.rb +3 -0
  25. data/app/controllers/home_controller.rb +5 -0
  26. data/app/controllers/news_controller.rb +3 -0
  27. data/app/controllers/pages_controller.rb +4 -0
  28. data/app/controllers/search_controller.rb +4 -0
  29. data/app/mailers/contact_mailer.rb +15 -0
  30. data/app/models/concerns/boolean_field.rb +17 -0
  31. data/app/models/concerns/enableable.rb +8 -0
  32. data/app/models/concerns/geocodeable.rb +4 -0
  33. data/app/models/concerns/mappable.rb +95 -0
  34. data/app/models/concerns/seoable.rb +42 -0
  35. data/app/models/concerns/sitemap_data.rb +20 -0
  36. data/app/models/concerns/sort_field.rb +17 -0
  37. data/app/models/concerns/sortable.rb +8 -0
  38. data/app/models/contact_message.rb +11 -0
  39. data/app/models/menu.rb +11 -0
  40. data/app/models/news.rb +10 -0
  41. data/app/models/page.rb +11 -0
  42. data/app/views/blocks/_footer.html.haml +1 -0
  43. data/app/views/contact_mailer/new_message_email.html.haml +16 -0
  44. data/app/views/contacts/index.html.haml +10 -0
  45. data/app/views/contacts/new.html.haml +10 -0
  46. data/app/views/contacts/sent.html.haml +4 -0
  47. data/app/views/errors/_base.html.haml +3 -0
  48. data/app/views/errors/error_403.html.haml +1 -0
  49. data/app/views/errors/error_404.html.haml +1 -0
  50. data/app/views/errors/error_500.html.haml +1 -0
  51. data/app/views/home/index.html.haml +1 -0
  52. data/app/views/layouts/application.html.haml +23 -0
  53. data/app/views/layouts/application.html.slim +24 -0
  54. data/app/views/news/index.html.haml +9 -0
  55. data/app/views/news/show.html.haml +8 -0
  56. data/app/views/pages/show.html.haml +1 -0
  57. data/app/views/rails_admin/main/_check_boxes.html.haml +27 -0
  58. data/app/views/rails_admin/main/_enum_check_boxes.html.haml +5 -0
  59. data/app/views/rails_admin/main/_enum_radio_buttons.html.haml +5 -0
  60. data/app/views/rails_admin/main/_form_raw.html.haml +1 -0
  61. data/app/views/search/index.html.haml +19 -0
  62. data/app/views/shared/_admin_link.html.haml +3 -0
  63. data/app/views/shared/_messages.html.haml +7 -0
  64. data/app/views/shared/_meta.html.haml +6 -0
  65. data/app/views/shared/_obj.html.haml +20 -0
  66. data/app/views/shared/_og.html.haml +4 -0
  67. data/config/locales/en.rocket_admin.yml +6 -0
  68. data/config/locales/en.rs.yml +20 -0
  69. data/config/locales/ru.cancan.yml +4 -0
  70. data/config/locales/ru.devise.yml +65 -0
  71. data/config/locales/ru.kaminari.yml +17 -0
  72. data/config/locales/ru.models.yml +92 -0
  73. data/config/locales/ru.mongoid.yml +450 -0
  74. data/config/locales/ru.rails_admin.yml +148 -0
  75. data/config/locales/ru.rocket_admin.yml +6 -0
  76. data/config/locales/ru.rs.yml +20 -0
  77. data/config/locales/ru.simple_captcha.yml +3 -0
  78. data/config/locales/ru.simple_form.yml +9 -0
  79. data/lib/filename_to_slug.rb +34 -0
  80. data/lib/generators/rocket_cms/ability_generator.rb +15 -0
  81. data/lib/generators/rocket_cms/admin_generator.rb +21 -0
  82. data/lib/generators/rocket_cms/capify_generator.rb +40 -0
  83. data/lib/generators/rocket_cms/layout_generator.rb +15 -0
  84. data/lib/generators/rocket_cms/migration_generator.rb +19 -0
  85. data/lib/generators/rocket_cms/templates/Capfile +17 -0
  86. data/lib/generators/rocket_cms/templates/ability.erb +28 -0
  87. data/lib/generators/rocket_cms/templates/admin.erb +81 -0
  88. data/lib/generators/rocket_cms/templates/deploy.erb +47 -0
  89. data/lib/generators/rocket_cms/templates/dl.erb +30 -0
  90. data/lib/generators/rocket_cms/templates/migration_contact_messages.rb +15 -0
  91. data/lib/generators/rocket_cms/templates/migration_news.rb +21 -0
  92. data/lib/generators/rocket_cms/templates/migration_pages.rb +36 -0
  93. data/lib/generators/rocket_cms/templates/production.erb +8 -0
  94. data/lib/generators/rocket_cms/templates/unicorn.erb +66 -0
  95. data/lib/generators/rocket_cms/utils.rb +22 -0
  96. data/lib/manual_slug.rb +11 -0
  97. data/lib/manual_slug/active_record.rb +32 -0
  98. data/lib/manual_slug/mongoid.rb +36 -0
  99. data/lib/rails_admin/custom_show_in_app.rb +39 -0
  100. data/lib/rocket_cms.rb +88 -0
  101. data/lib/rocket_cms/admin.rb +152 -0
  102. data/lib/rocket_cms/configuration.rb +67 -0
  103. data/lib/rocket_cms/controller.rb +24 -0
  104. data/lib/rocket_cms/controllers/contacts.rb +70 -0
  105. data/lib/rocket_cms/controllers/news.rb +31 -0
  106. data/lib/rocket_cms/controllers/pages.rb +19 -0
  107. data/lib/rocket_cms/controllers/search.rb +45 -0
  108. data/lib/rocket_cms/elastic_search.rb +31 -0
  109. data/lib/rocket_cms/engine.rb +39 -0
  110. data/lib/rocket_cms/migration.rb +31 -0
  111. data/lib/rocket_cms/model.rb +25 -0
  112. data/lib/rocket_cms/models/active_record/contact_message.rb +14 -0
  113. data/lib/rocket_cms/models/active_record/menu.rb +14 -0
  114. data/lib/rocket_cms/models/active_record/news.rb +23 -0
  115. data/lib/rocket_cms/models/active_record/page.rb +17 -0
  116. data/lib/rocket_cms/models/contact_message.rb +27 -0
  117. data/lib/rocket_cms/models/menu.rb +29 -0
  118. data/lib/rocket_cms/models/mongoid/contact_message.rb +20 -0
  119. data/lib/rocket_cms/models/mongoid/menu.rb +12 -0
  120. data/lib/rocket_cms/models/mongoid/news.rb +27 -0
  121. data/lib/rocket_cms/models/mongoid/page.rb +26 -0
  122. data/lib/rocket_cms/models/news.rb +50 -0
  123. data/lib/rocket_cms/models/page.rb +76 -0
  124. data/lib/rocket_cms/patch.rb +58 -0
  125. data/lib/rocket_cms/rails_admin_menu.rb +145 -0
  126. data/lib/rocket_cms/simple_form_patch.rb +12 -0
  127. data/lib/rocket_cms/tasks.rb +13 -0
  128. data/lib/rocket_cms/version.rb +3 -0
  129. data/release.sh +13 -0
  130. data/rocket_cms.gemspec +54 -0
  131. data/template.rb +557 -0
  132. metadata +533 -0
@@ -0,0 +1,11 @@
1
+ if RocketCMS.active_record?
2
+ class Menu < ActiveRecord::Base
3
+ end
4
+ end
5
+
6
+ class Menu
7
+ include RocketCMS::Models::Menu
8
+ RocketCMS.apply_patches self
9
+ rails_admin &RocketCMS.menu_config
10
+ end
11
+
@@ -0,0 +1,10 @@
1
+ if RocketCMS.active_record?
2
+ class News < ActiveRecord::Base
3
+ end
4
+ end
5
+
6
+ class News
7
+ include RocketCMS::Models::News
8
+ RocketCMS.apply_patches self
9
+ rails_admin &RocketCMS.news_config
10
+ end
@@ -0,0 +1,11 @@
1
+ if RocketCMS.active_record?
2
+ class Page < ActiveRecord::Base
3
+ end
4
+ end
5
+
6
+ class Page
7
+ include RocketCMS::Models::Page
8
+ RocketCMS.apply_patches self
9
+ rails_admin &RocketCMS.page_config
10
+ end
11
+
@@ -0,0 +1 @@
1
+ (c) 2014 etc
@@ -0,0 +1,16 @@
1
+
2
+ - excluded_column_names = %w[id c_at u_at created_at updated_at _id _type enabled attachment c_at u_at captcha captcha_key version creator_id creator updater_id updater modifier modifier_id]
3
+
4
+ %h3 Сообщение из формы связи:
5
+
6
+ %table
7
+ %tr
8
+ %th(style='padding: 2px 3px') Поле
9
+ %th(style='padding: 2px 3px') Значение
10
+ - fields = (RocketCMS.mongoid? ? ContactMessage.fields.keys : ContactMessage.columns.map(&:name))
11
+ - fields.reject{|c| excluded_column_names.include?(c) }.each do |c|
12
+ %tr
13
+ %td(style='padding: 2px 3px')
14
+ = ContactMessage.human_attribute_name(c)
15
+ %td(style='padding: 2px 3px')
16
+ = @message.send(c.to_sym)
@@ -0,0 +1,10 @@
1
+ = render 'shared/obj', obj: @seo_page
2
+
3
+ #rocket_cms_contact_form
4
+ = simple_form_for @contact_message, url: contacts_path do |f|
5
+ = f.input :name
6
+ = f.input :email
7
+ = f.input :phone
8
+ = f.input :content
9
+ = f.input :captcha
10
+ = f.submit t('rs.send')
@@ -0,0 +1,10 @@
1
+ = render 'shared/obj', obj: @seo_page
2
+
3
+ #rocket_cms_contact_form
4
+ = simple_form_for @contact_message, url: contacts_path do |f|
5
+ = f.input :name
6
+ = f.input :email
7
+ = f.input :phone
8
+ = f.input :content
9
+ = f.input :captcha
10
+ = f.submit t('rs.send')
@@ -0,0 +1,4 @@
1
+ #rocket_cms_contact_sent
2
+ %h1 Обратная связь
3
+ %h2 Ваше сообщение отправлено
4
+ %div Если оно требует ответа, мы постараемся ответить в ближайшее время
@@ -0,0 +1,3 @@
1
+ #rocket_cms_error{class: "error-#{code}"}
2
+ %h1 Ошибка #{code}
3
+ %p #{text}
@@ -0,0 +1 @@
1
+ = render 'errors/base', code: 403, text: 'Доступ запрещен'
@@ -0,0 +1 @@
1
+ = render 'errors/base', code: 404, text: 'Запрашиваемая страница была удалена, или введён некорректный адрес'
@@ -0,0 +1 @@
1
+ = render 'errors/base', code: 500, text: 'Внутренняя ошибка сервера'
@@ -0,0 +1 @@
1
+ RocketCMS test app
@@ -0,0 +1,23 @@
1
+ %html lang="ru"
2
+ %head
3
+ %meta charset="UTF-8"
4
+ %meta name="viewport" content="width=device-width, maximum-scale=1"
5
+ %title= page_title
6
+ = yield :meta
7
+ = csrf_meta_tags
8
+ = favicon_link_tag '/favicon.ico'
9
+ = stylesheet_link_tag "application", media: "all"
10
+ = javascript_include_tag "application"
11
+ /[if lt IE 9]
12
+ = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"
13
+ %body
14
+ #root
15
+ = render 'shared/messages'
16
+ #sidebar
17
+ = render_navigation &navigation(:main)
18
+ #content
19
+ = yield
20
+ #root_footer
21
+ #footer
22
+ = render 'blocks/footer'
23
+
@@ -0,0 +1,24 @@
1
+ doctype html
2
+ html lang="ru"
3
+ head
4
+ meta charset="UTF-8"
5
+ meta name="viewport" content="width=device-width, maximum-scale=1"
6
+ title= page_title
7
+ = yield :meta
8
+ = csrf_meta_tags
9
+ = favicon_link_tag '/favicon.ico'
10
+ = stylesheet_link_tag "application", media: "all"
11
+ = javascript_include_tag "application"
12
+ /[if lt IE 9]
13
+ = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"
14
+ body
15
+ #root
16
+ = render 'shared/messages'
17
+ #sidebar
18
+ = render_navigation &navigation(:main)
19
+ #content
20
+ = yield
21
+ #root_footer
22
+ #footer
23
+ = render 'blocks/footer'
24
+
@@ -0,0 +1,9 @@
1
+ .rs-news-index
2
+ %h1= t('rs.news')
3
+ - @news.each do |news|
4
+ .rs-news-date= l(news.time.to_date)
5
+ %a.rs-news-title{href: news_path(news)}= news.name
6
+ - if !RocketCMS.configuration.news_image_styles.nil? && news.image?
7
+ .rs-news-image= image_tag news.image.url(:thumb)
8
+ .rs-news-excerpt= news.excerpt
9
+ = paginate @news
@@ -0,0 +1,8 @@
1
+ .rs-news-show
2
+ %h1.rs-news-title= @news.name
3
+ .rs-news-date= l(@news.time.to_date)
4
+ .rs-news-text= @news.excerpt
5
+ - if !RocketCMS.configuration.news_image_styles.nil? && @news.image?
6
+ .rs-news-image= image_tag @news.image.url(:main)
7
+ .rs-news-content
8
+ = render 'shared/obj', obj: @news
@@ -0,0 +1 @@
1
+ = render 'shared/obj', obj: @seo_page
@@ -0,0 +1,27 @@
1
+ - if params[:associations].nil?
2
+ = render 'rails_admin/main/enum_check_boxes', field: field, form: form
3
+ - else
4
+ :ruby
5
+ related_id = params[:associations] && params[:associations][field.name.to_s]
6
+ config = field.associated_model_config
7
+ source_abstract_model = RailsAdmin.config(form.object.class).abstract_model
8
+
9
+ if form.object.new_record? && related_id.present? && related_id != 'new'
10
+ selected = [config.abstract_model.get(related_id)]
11
+ else
12
+ selected = form.object.send(field.name)
13
+ end
14
+ selected_ids = selected.map{|s| s.send(field.associated_primary_key)}
15
+
16
+ current_action = params[:action].in?(['create', 'new']) ? 'create' : 'update'
17
+
18
+ xhr = !field.associated_collection_cache_all
19
+
20
+ collection = if xhr
21
+ selected.map { |o| [o.send(field.associated_object_label_method), o.send(field.associated_primary_key)] }
22
+ else
23
+ i = 0
24
+ controller.list_entries(config, :index, field.associated_collection_scope, false).map { |o| [o.send(field.associated_object_label_method), o.send(field.associated_primary_key)] }.sort_by {|a| [selected_ids.index(a[1]) || selected_ids.size, i+=1] }
25
+ end
26
+
27
+ = form.collection_check_boxes field.method_name, collection, :last, :first, {}, {} { |i| i.label( class: 'checkbox' ) { i.check_box + i.text } }
@@ -0,0 +1,5 @@
1
+ :ruby
2
+ values = form.object.class.send(field.method_name).values.map { |v|
3
+ [t("enumerize.#{form.object.class.name.downcase}.#{field.method_name}.#{v}", default: t("enumerize.defaults.#{field.method_name}.#{v}")), v]
4
+ }
5
+ = form.collection_check_boxes field.method_name, values, :last, :first, {}, {} { |i| i.label( class: 'checkbox' ) { i.check_box + i.text } }
@@ -0,0 +1,5 @@
1
+ :ruby
2
+ values = form.object.class.send(field.method_name).values.map { |v|
3
+ [t("enumerize.#{form.object.class.name.downcase}.#{field.method_name}.#{v}", default: t("enumerize.defaults.#{field.method_name}.#{v}")), v]
4
+ }
5
+ = form.collection_radio_buttons field.method_name, values, :last, :first, {}, {} { |i| i.label(class: 'radio') { i.radio_button + i.text } }
@@ -0,0 +1 @@
1
+ = field.pretty_value
@@ -0,0 +1,19 @@
1
+ .rs-search-results
2
+ %h1 Результаты поиска
3
+ = form_tag search_path, method: :get, class: 'nav_search' do
4
+ = text_field_tag 'query', params[:query], placeholder: "Поиск"
5
+ = submit_tag 'Найти'
6
+ %ol
7
+ - any = false
8
+ - @results.each do |r|
9
+ - any = true
10
+ %li
11
+ .title= link_to (r._highlight.nil? || r._highlight['name'].nil?) ? r.name : r._highlight['name'].join(' ... ').html_safe, url_for(r)
12
+ .text
13
+ = raw (r._highlight.nil? || r._highlight['content'].nil?) ? (r.content.blank? ? '' : SmartExcerpt.truncate(r.content)) : r._highlight['content'].join(' ... ')
14
+ %span.more= link_to '', url_for(r)
15
+
16
+ - unless any
17
+ .rs-search-no-results К сожалению, ничего не найдено
18
+
19
+ = paginate @results if any
@@ -0,0 +1,3 @@
1
+ - if user_signed_in? && respond_to?(:can?) && can?(:access, :rails_admin) && can?(:edit, obj)
2
+ %div.admin_link
3
+ = link_to t('rs.edit'), rails_admin.edit_path(obj.class.model_name.i18n_key.to_s.gsub('/', '~'), obj.id), 'data-no-turbolink' => true
@@ -0,0 +1,7 @@
1
+ - unless flash.empty?
2
+ .flash
3
+ - flash.each do |type, message|
4
+ - next if message.blank?
5
+ %div{class: "message #{type}"}
6
+ %a.close_flash &times;
7
+ = simple_format(message.strip)
@@ -0,0 +1,6 @@
1
+ - unless !obj.respond_to?(:keywords) || obj.keywords.blank?
2
+ %meta{name: "keywords", content: obj.keywords}/
3
+ - unless !obj.respond_to?(:description) || obj.description.blank?
4
+ %meta{name: "description", content: obj.description}/
5
+ - unless !obj.respond_to?(:robots) || obj.robots.blank?
6
+ %meta{name: "robots", content: obj.robots}/
@@ -0,0 +1,20 @@
1
+ - unless obj.nil?
2
+ .text_content
3
+ - if (!defined?(h1) || h1) && !obj.h1.blank?
4
+ %h1= obj.h1
5
+ - if obj.content.blank?
6
+ - unless @seo_page.nil?
7
+ = raw @seo_page.page_content
8
+ = render 'shared/admin_link', obj: @seo_page
9
+ - else
10
+ = raw obj.content
11
+ - if !obj.nil? && (@seo_page.nil? || obj.id != @seo_page.id || obj.class.name != @seo_page.class.name)
12
+ = render 'shared/admin_link', obj: obj
13
+
14
+ - content_for :meta do
15
+ = render 'shared/meta', obj: obj
16
+ = render 'shared/og', title: obj.get_og_title, image: obj.og_image
17
+
18
+ - content_for :title do
19
+ - if obj.title
20
+ %title= obj.title
@@ -0,0 +1,4 @@
1
+ - if defined?(title) && !title.blank?
2
+ %meta{property: 'og:title', content: title}
3
+ - if defined?(image) && !image.blank?
4
+ %meta{property: 'og:image', content: "http://#{request.host_with_port}#{image}"}
@@ -0,0 +1,6 @@
1
+ en:
2
+ admin:
3
+ actions:
4
+ custom_show_in_app:
5
+ title: 'Show in app'
6
+ menu: "Show in app"
@@ -0,0 +1,20 @@
1
+ en:
2
+ rs:
3
+ cms: "CMS"
4
+ menu: "Menu"
5
+ settings: 'Settings'
6
+ news: 'News'
7
+ with_final_slash: "should begin with a slash"
8
+ page_url_regex: "Regular expression to check if page is current"
9
+ final_in_menu: "This link is also displayed in menu"
10
+ no_contact_info: "^Please enter your phone or email so we could contact you."
11
+ map: 'Map'
12
+ sitemap: 'Sitemap'
13
+ sitemap_data: 'Sitemap data'
14
+ edit: Edit
15
+ send: Send
16
+ m:
17
+ enabled: 'added to menu "%{menu}"'
18
+ disabled: 'deleted from menu "%{menu}"'
19
+ error: "Error: %{err}"
20
+ no_id: "No ID"
@@ -0,0 +1,4 @@
1
+ en:
2
+ unauthorized:
3
+ manage:
4
+ all: "У вас нет прав на действие %{action} над %{subject}."
@@ -0,0 +1,65 @@
1
+ ru:
2
+ devise:
3
+ confirmations:
4
+ confirmed: Ваша учётная запись подтверждена. Теперь вы вошли в систему.
5
+ send_instructions: В течение нескольких минут вы получите письмо с инструкциями по подтверждению вашей учётной записи.
6
+ send_paranoid_instructions: Если ваш адрес e-mail есть в нашей базе данных, то в течение нескольких минут вы получите письмо с инструкциями по подтверждению вашей учётной записи.
7
+ failure:
8
+ already_authenticated: Вы уже вошли в систему.
9
+ inactive: Ваша учётная запись ещё не активирована.
10
+ invalid: Неверный адрес e-mail или пароль.
11
+ invalid_token: Неверный ключ аутентификации.
12
+ locked: Ваша учётная запись заблокирована.
13
+ not_found_in_database:
14
+ timeout: Ваш сеанс закончился. Пожалуйста, войдите в систему снова.
15
+ unauthenticated: Вам необходимо войти в систему или зарегистрироваться.
16
+ unconfirmed: Вы должны подтвердить вашу учётную запись.
17
+ mailer:
18
+ confirmation_instructions:
19
+ subject: Инструкции по подтверждению учётной записи
20
+ reset_password_instructions:
21
+ subject: Инструкции по восстановлению пароля
22
+ unlock_instructions:
23
+ subject: Инструкции по разблокировке учётной записи
24
+ omniauth_callbacks:
25
+ failure: Вы не можете войти в систему с учётной записью из %{kind}, т.к. "%{reason}".
26
+ success: Вход в систему выполнен с учётной записью из %{kind}.
27
+ passwords:
28
+ no_token: Доступ к этой странице возможен только по ссылке из письма о восстановлении пароля. Если Вы пришли по такой ссылке, пожалуйста убедитесь что Вы скопировали всю ссылку целиком.
29
+ send_instructions: В течение нескольких минут вы получите письмо с инструкциями по восстановлению вашего пароля.
30
+ send_paranoid_instructions: Если ваш адрес e-mail есть в нашей базе данных, то в течение нескольких минут вы получите письмо с инструкциями по восстановлению вашего пароля.
31
+ updated: Ваш пароль изменён. Теперь вы вошли в систему.
32
+ updated_not_active: Ваш пароль изменен.
33
+ registrations:
34
+ destroyed: До свидания! Ваша учётная запись удалена. Надеемся снова увидеть вас.
35
+ signed_up: Добро пожаловать! Вы успешно зарегистрировались.
36
+ signed_up_but_inactive: Вы успешно зарегистрированы. Однако, вы не можете войти в систему, потому что ваша учетная запись не активирована.
37
+ signed_up_but_locked: Вы успешно зарегистрированы. Однако, вы не можете войти в систему, потому что ваша учетная запись заблокирована.
38
+ signed_up_but_unconfirmed: Письмо со ссылкой для подтверждения было отправлено на ваш e-mail. Пожалуйста, перейдите по ссылке, чтобы подтвердить вашу учетную запись.
39
+ update_needs_confirmation: Вы успешно обновили данные вашей учетной записи, но нам нужно проверить ваш новый адрес e-mail. Пожалуйста, проверьте ваш почтовый ящик и перейдите по ссылке, чтобы закончить процедуру проверки вашего нового адреса e-mail.
40
+ updated: Ваша учётная запись изменена.
41
+ sessions:
42
+ signed_in: Вход в систему выполнен.
43
+ signed_out: Выход из системы выполнен.
44
+ unlocks:
45
+ send_instructions: В течение нескольких минут вы получите письмо с инструкциями по разблокировке вашей учётной записи.
46
+ send_paranoid_instructions: Если ваша учётная запись существует, то в течение нескольких минут вы получите письмо с инструкциями по её разблокировке.
47
+ unlocked: Ваша учётная запись разблокирована. Теперь вы можете войти в систему.
48
+ failure:
49
+ user:
50
+ not_found_in_database: Пользователь не найден в базе
51
+ invalid: Неверный пароль
52
+ unauthenticated: Необходимо авторизоваться
53
+ unconfirmed: 'Необходимо подтвердить адрес электронной почты'
54
+ errors:
55
+ messages:
56
+ already_confirmed: уже подтверждена. Пожалуйста, попробуйте войти в систему
57
+ confirmation_period_expired:
58
+ expired: устарела. Пожалуйста, запросите новую
59
+ not_found: не найдена
60
+ not_locked: не заблокирована
61
+ not_saved:
62
+ few: ! '%{resource}: сохранение не удалось из-за %{count} ошибок'
63
+ many: ! '%{resource}: сохранение не удалось из-за %{count} ошибок'
64
+ one: ! '%{resource}: сохранение не удалось из-за %{count} ошибки'
65
+ other: ! '%{resource}: сохранение не удалось из-за %{count} ошибки'
@@ -0,0 +1,17 @@
1
+ ru:
2
+ views:
3
+ pagination:
4
+ first: "&laquo; Начало"
5
+ last: "Конец &raquo;"
6
+ previous: "&lsaquo; Предыдущая"
7
+ next: "Следующая &rsaquo;"
8
+ truncate: "&hellip;"
9
+ helpers:
10
+ page_entries_info:
11
+ one_page:
12
+ display_entries:
13
+ zero: "%{entry_name} не найдены"
14
+ one: "Показано <b>1</b> %{entry_name}"
15
+ other: "Показаны <b>все %{count}</b> %{entry_name}"
16
+ more_pages:
17
+ display_entries: "Показаны %{entry_name} <b>%{first}&nbsp;-&nbsp;%{last}</b> из <b>%{total}</b>"
@@ -0,0 +1,92 @@
1
+ ru:
2
+ attributes:
3
+ user: Пользователь
4
+ name: Название
5
+ category: Раздел
6
+ file: Файл
7
+ short: Короткое описание
8
+ text: Текст
9
+ desc: Описание
10
+ image: Картинка
11
+ href: Ссылка
12
+ enabled: Включено
13
+ slug: URL код
14
+ text_slug: URL код
15
+ created_at: Создано
16
+ updated_at: Обновлено
17
+ id: ID
18
+ content: Содержимое
19
+ time: Время
20
+ excerpt: Превью
21
+ sort: Сортировка
22
+ link: Ссылка
23
+ url: URL
24
+ address: Адрес
25
+ map_address: Адрес для карты
26
+ map_hint: Подсказка для карты
27
+ coordinates: Координаты из геокодирования
28
+ lat: Широта (вручную)
29
+ lon: Долгота (вручную)
30
+ description: SEO Description
31
+ email: Email
32
+ keywords: SEO Keywords
33
+ modifier_id: Кто правил
34
+ og_title: Og title
35
+ robots: Robots
36
+ title: Title
37
+ version: Version
38
+
39
+ mongoid: &mongoid
40
+ models:
41
+ user: Пользователь
42
+ menu: Меню
43
+ page: Страница
44
+ contact_message: Сообщение
45
+ news: Новость
46
+ attributes:
47
+ user:
48
+ email: E-mail
49
+ old_password: Текущий пароль
50
+ password: Пароль
51
+ password_confirmation: Подтвердите пароль
52
+ remember_me: Запомнить
53
+ c_at: Создан
54
+ current_sign_in_ip: Текущий IP
55
+ last_sign_in_ip: Прошлый IP
56
+ first_name: Имя
57
+ last_name: Фамилия
58
+ phone: Телефон
59
+ page:
60
+ fullpath: URL
61
+ regexp: Подсветка меню
62
+ redirect: Редирект
63
+ image: Картинка
64
+ hidden: Скрытая
65
+ menus: Меню
66
+ sitemap_show: Отображать в карте сайта
67
+ contact_message:
68
+ name: Ваше имя
69
+ email: Ваш е-мейл
70
+ phone: Ваш телефон
71
+ content: Ваше сообщение
72
+ errors:
73
+ models:
74
+ contact_message:
75
+ attributes:
76
+ email:
77
+ invalid_email_address: "^Неверный e-mail"
78
+ activerecord:
79
+ <<: *mongoid
80
+
81
+ activemodel:
82
+ errors:
83
+ messages:
84
+ invalid_email_address: "^Неверный e-mail"
85
+
86
+ admin:
87
+ scopes:
88
+ by_date: "По времени"
89
+ sorted: "Сортированные"
90
+ enabled: "Доступные"
91
+ _all: "Все"
92
+