rocket_cms 0.30.0 → 0.31.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +7 -2
- data/app/views/{blocks → components}/_counters.html +0 -0
- data/app/views/{blocks → components}/_footer.slim +0 -0
- data/app/views/{blocks → components}/_header.slim +0 -0
- data/app/views/layouts/application.slim +3 -9
- data/app/views/news/index.slim +5 -2
- data/app/views/news/show.slim +5 -3
- data/config/locales/ru.kaminari.yml +8 -2
- data/lib/generators/rocket_cms/layout_generator.rb +5 -3
- data/lib/generators/rocket_cms/templates/.browserlistrc +1 -0
- data/lib/generators/rocket_cms/templates/ability.erb +6 -2
- data/lib/generators/rocket_cms/templates/admin.erb +1 -1
- data/lib/generators/rocket_cms/templates/migration_news.rb +5 -1
- data/lib/generators/rocket_cms/templates/package.json +3 -0
- data/lib/generators/rocket_cms/templates/webpack.config.js +1 -1
- data/lib/generators/rocket_cms/templates/webpack/application.es6 +8 -17
- data/lib/generators/rocket_cms/templates/webpack/components/footer/index.sass +2 -0
- data/lib/generators/rocket_cms/templates/webpack/components/header/index.sass +1 -0
- data/lib/generators/rocket_cms/templates/webpack/{blocks → components}/index.es6 +1 -1
- data/lib/generators/rocket_cms/templates/webpack/pages/home/index.es6 +1 -1
- data/lib/generators/rocket_cms/webpack_generator.rb +5 -7
- data/lib/rocket_cms.rb +7 -1
- data/lib/rocket_cms/admin.rb +7 -3
- data/lib/rocket_cms/controller.rb +1 -1
- data/lib/rocket_cms/engine.rb +0 -12
- data/lib/rocket_cms/migration.rb +6 -1
- data/lib/rocket_cms/models/active_record/news.rb +6 -2
- data/lib/rocket_cms/models/active_record/seo.rb +5 -1
- data/lib/rocket_cms/models/mongoid/news.rb +7 -3
- data/lib/rocket_cms/models/mongoid/seo.rb +9 -2
- data/lib/rocket_cms/models/news.rb +2 -1
- data/lib/rocket_cms/models/seo.rb +3 -1
- data/lib/rocket_cms/version.rb +1 -1
- data/template.rb +185 -40
- metadata +8 -12
- data/config/locales/ru.devise.yml +0 -65
- data/lib/filename_to_slug.rb +0 -32
- data/lib/generators/rocket_cms/templates/webpack/blocks/footer/index.sass +0 -2
- data/lib/generators/rocket_cms/templates/webpack/blocks/header/index.sass +0 -1
- data/lib/generators/rocket_cms/templates/webpack/errors/errors.pug +0 -7
- data/lib/generators/rocket_cms/templates/webpack/errors/index.es6 +0 -30
- data/lib/generators/rocket_cms/templates/webpack/errors/index.sass +0 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6f4ecf3595ded8061376b41de02f02ea0bf0f57cd134894cfa6d53b24ed2da7
|
4
|
+
data.tar.gz: 20ef8b7ac32fa60fdeb1e9e4e87e63f8d85de1d891302d4b09a7381310998cc1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 708da4b98596577733e91e2e87ca255e8bc0a3b3bd5087e5e1238f4156eedd1318e90be53b51f78a3fbd01bb561fa2c29ab3943809882027556bed411eb86497
|
7
|
+
data.tar.gz: 705c53d6285f644329d506cd65fa24e65bebcfa932b105db772a8eb004e671d7b04cc5cbbd19f23db1c8bbcab4d84f420664986c09b2e563079d06e533cbc1ab
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -70,14 +70,19 @@ If not, uninstall rails and install again
|
|
70
70
|
|
71
71
|
Then, for mongoid:
|
72
72
|
|
73
|
-
rails new my_app -T -O -m https://gitlab.com/rocket-science/rocket_cms/raw/master/template.rb --skip-spring
|
73
|
+
rails new my_app -T -O -m https://gitlab.com/rocket-science/rocket_cms/raw/master/template.rb --skip-spring --skip-javascript
|
74
74
|
|
75
75
|
for ActiveRecord:
|
76
76
|
|
77
|
-
rails new my_app -T --database=postgresql -m https://gitlab.com/rocket-science/rocket_cms/raw/master/template.rb --skip-spring
|
77
|
+
rails new my_app -T --database=postgresql -m https://gitlab.com/rocket-science/rocket_cms/raw/master/template.rb --skip-spring --skip-javascript
|
78
78
|
|
79
79
|
generator creates a new RVM gemset, so after cd'ing to app dir, you should run `bundle install` again if you use rvm.
|
80
80
|
|
81
|
+
Development mode template:
|
82
|
+
|
83
|
+
rails new my_app -T --database=postgresql -m /data/rocket_cms/template.rb --skip-spring --skip-javascript
|
84
|
+
|
85
|
+
|
81
86
|
### Localization
|
82
87
|
|
83
88
|
All models included in the gem support localization via either [hstore_translate](https://github.com/Leadformance/hstore_translate) or built-in Mongoid localize: true option.
|
File without changes
|
File without changes
|
File without changes
|
@@ -5,7 +5,6 @@ html lang="ru"
|
|
5
5
|
meta name="viewport" content="width=device-width, maximum-scale=1, minimal-ui"
|
6
6
|
-# meta property="fb:app_id" content=Rails.application.secrets.fb_app_id
|
7
7
|
-# meta property="vk:app_id" content=Rails.application.secrets.vk_app_id
|
8
|
-
meta name="turbolinks-cache-control" content="no-cache"
|
9
8
|
|
10
9
|
title= page_title
|
11
10
|
= yield :meta
|
@@ -18,7 +17,7 @@ html lang="ru"
|
|
18
17
|
= javascript_include_tag *webpack_asset_paths('application', extension: 'js')
|
19
18
|
|
20
19
|
body.no-js class=body_class
|
21
|
-
= render '
|
20
|
+
= render 'components/header'
|
22
21
|
script.no-js-script
|
23
22
|
| document.body.classList.remove('no-js');
|
24
23
|
|
@@ -26,14 +25,9 @@ html lang="ru"
|
|
26
25
|
= render 'shared/messages'
|
27
26
|
= yield
|
28
27
|
|
29
|
-
= render '
|
30
|
-
|
31
|
-
.no-js-error.alert.alert-error
|
32
|
-
| К сожалению, в вашем браузере отключен JavaScript
|
33
|
-
span Включите его, чтобы зайти на сайт
|
34
|
-
a class="btn-transparent" target="_blank" href="https://yandex.ru/support/common/browsers-settings/browsers-java-js-settings.xml" Включить JavaScript
|
28
|
+
= render 'components/footer'
|
35
29
|
|
36
30
|
#fb-root data-turbolinks-permanent=""
|
37
31
|
#vk_api_transport data-turbolinks-permanent=""
|
38
32
|
|
39
|
-
= render '
|
33
|
+
= render 'components/counters'
|
data/app/views/news/index.slim
CHANGED
@@ -4,7 +4,10 @@
|
|
4
4
|
.rs-news-date= l(news.time.to_date)
|
5
5
|
a.rs-news-title href=news_path(news)
|
6
6
|
= news.name
|
7
|
-
- if !RocketCMS.config.news_image_styles.nil?
|
8
|
-
|
7
|
+
- if !RocketCMS.config.news_image_styles.nil?
|
8
|
+
- if RocketCMS.paperclip? && news.image?
|
9
|
+
.rs-news-image= image_tag news.image.url(:thumb)
|
10
|
+
- elsif RocketCMS.shrine? && !news.image.nil?
|
11
|
+
.rs-news-image= image_tag news.image(:thumb).url
|
9
12
|
.rs-news-excerpt= news.excerpt
|
10
13
|
= paginate @news
|
data/app/views/news/show.slim
CHANGED
@@ -4,8 +4,10 @@
|
|
4
4
|
= l(@news.time.to_date)
|
5
5
|
.rs-news-text
|
6
6
|
= @news.excerpt
|
7
|
-
- if !RocketCMS.config.news_image_styles.nil?
|
8
|
-
.
|
9
|
-
= image_tag @news.image.url(:main)
|
7
|
+
- if !RocketCMS.config.news_image_styles.nil?
|
8
|
+
- if RocketCMS.paperclip? && @news.image?
|
9
|
+
.rs-news-image= image_tag @news.image.url(:main)
|
10
|
+
- elsif RocketCMS.shrine? && !news.image.nil?
|
11
|
+
.rs-news-image= image_tag @news.image(:main).url
|
10
12
|
.rs-news-content
|
11
13
|
= render 'shared/obj', obj: @news
|
@@ -8,10 +8,16 @@ ru:
|
|
8
8
|
truncate: "…"
|
9
9
|
helpers:
|
10
10
|
page_entries_info:
|
11
|
+
entry:
|
12
|
+
one: "запись"
|
13
|
+
few: "записи"
|
14
|
+
many: "записей"
|
15
|
+
other: "записей"
|
11
16
|
one_page:
|
12
17
|
display_entries:
|
13
|
-
|
14
|
-
|
18
|
+
one: "Показана <b>1</b> %{entry_name}"
|
19
|
+
few: "Показано <b>1</b> %{entry_name}"
|
20
|
+
many: "Показаны <b>все %{count}</b> %{entry_name}"
|
15
21
|
other: "Показаны <b>все %{count}</b> %{entry_name}"
|
16
22
|
more_pages:
|
17
23
|
display_entries: "Показаны %{entry_name} <b>%{first} - %{last}</b> из <b>%{total}</b>"
|
@@ -9,9 +9,11 @@ module RocketCms
|
|
9
9
|
desc 'RocketCMS Layout generator'
|
10
10
|
def layout
|
11
11
|
template('app/views/layouts/application.slim', 'app/views/layouts/application.slim')
|
12
|
-
template('app/views/
|
13
|
-
template('app/views/
|
14
|
-
template('app/views/
|
12
|
+
template('app/views/components/_header.slim', 'app/views/components/_header.slim')
|
13
|
+
template('app/views/components/_footer.slim', 'app/views/components/_footer.slim')
|
14
|
+
template('app/views/components/_counters.html', 'app/views/components/_counters.html')
|
15
|
+
template('app/views/home/index.slim', 'app/views/home/index.slim')
|
16
|
+
template('app/views/pages/show.slim', 'app/views/pages/show.slim')
|
15
17
|
end
|
16
18
|
end
|
17
19
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
defaults
|
@@ -7,12 +7,16 @@ class Ability
|
|
7
7
|
can :manage, :all
|
8
8
|
cannot :destroy, Menu
|
9
9
|
cannot :update, Menu
|
10
|
+
if RocketCMS.active_record?
|
11
|
+
cannot :destroy, PaperTrail::Version
|
12
|
+
cannot :update, PaperTrail::Version
|
13
|
+
end
|
10
14
|
admin_ui
|
11
15
|
end
|
12
16
|
end
|
13
17
|
|
14
18
|
def admin_ui
|
15
|
-
can :access, :rails_admin
|
16
|
-
can :
|
19
|
+
can :access, :rails_admin
|
20
|
+
can :read, :dashboard
|
17
21
|
end
|
18
22
|
end
|
@@ -14,7 +14,7 @@ RailsAdmin.config do |config|
|
|
14
14
|
config.current_user_method(&:current_user)
|
15
15
|
|
16
16
|
## == Cancan ==
|
17
|
-
config.authorize_with :
|
17
|
+
config.authorize_with :cancancan
|
18
18
|
<% if RocketCMS.mongoid? %>
|
19
19
|
## == MongoidAudit
|
20
20
|
# config.audit_with :mongoid_audit, 'HistoryTracker'
|
@@ -15,7 +15,11 @@ class RocketCmsCreateNews < ActiveRecord::Migration[5.0]
|
|
15
15
|
end
|
16
16
|
|
17
17
|
t.string :slug, null: false
|
18
|
-
|
18
|
+
if RocketCMS.shrine?
|
19
|
+
t.jsonb :image_data
|
20
|
+
elsif RocketCMS.paperclip?
|
21
|
+
t.attachment :image
|
22
|
+
end
|
19
23
|
t.timestamps
|
20
24
|
end
|
21
25
|
|
@@ -5,6 +5,9 @@
|
|
5
5
|
"private": true,
|
6
6
|
"repository": "git@rscz.ru:rocket-science/<%= app_name.downcase %>.git",
|
7
7
|
"dependencies": {
|
8
|
+
"@rails/actioncable": "^6.0.0",
|
9
|
+
"@rails/ujs": "^6.0.0",
|
10
|
+
"turbolinks": "^5.2.0",
|
8
11
|
"@babel/core": "^7.0.0",
|
9
12
|
"@babel/plugin-proposal-class-properties": "^7.0.0",
|
10
13
|
"@babel/plugin-proposal-function-bind": "^7.0.0",
|
@@ -8,7 +8,7 @@ var autoprefixer = require('autoprefixer');
|
|
8
8
|
var CompressionPlugin = require("compression-webpack-plugin");
|
9
9
|
|
10
10
|
var host = process.env.HOST || 'localhost'
|
11
|
-
var devServerPort =
|
11
|
+
var devServerPort = <%= port %>;
|
12
12
|
|
13
13
|
var production = process.env.NODE_ENV === 'production';
|
14
14
|
|
@@ -1,30 +1,21 @@
|
|
1
1
|
import './fonts';
|
2
2
|
import './layout';
|
3
3
|
|
4
|
-
import Errors from 'errors';
|
5
|
-
import 'flash';
|
6
|
-
|
7
|
-
var errors = new Errors()
|
8
|
-
document.addEventListener("DOMContentLoaded", function(event) {
|
9
|
-
errors.checkCookie();
|
10
|
-
});
|
11
|
-
|
12
4
|
import Turbolinks from "turbolinks";
|
13
5
|
Turbolinks.start()
|
14
6
|
|
15
|
-
import Rails from 'rails
|
7
|
+
import Rails from '@rails/ujs';
|
16
8
|
Rails.start();
|
17
9
|
|
18
|
-
import
|
19
|
-
|
20
|
-
import "./blocks";
|
10
|
+
import "./components";
|
21
11
|
import "./pages";
|
22
12
|
|
23
|
-
import "analytics"
|
13
|
+
//import "analytics"
|
24
14
|
//import goal from "analytics"
|
25
15
|
|
26
|
-
|
27
|
-
|
28
|
-
axios.defaults.headers.common['X-
|
29
|
-
|
16
|
+
//import axios from 'axios';
|
17
|
+
//document.addEventListener("turbolinks:load", function() {
|
18
|
+
//axios.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content');
|
19
|
+
//axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
|
20
|
+
//});
|
30
21
|
|
@@ -0,0 +1 @@
|
|
1
|
+
.header
|
@@ -1 +1 @@
|
|
1
|
-
// import page-specific
|
1
|
+
// import page-specific components here
|
@@ -12,15 +12,13 @@ module RocketCms
|
|
12
12
|
desc 'RocketCMS webpack generator'
|
13
13
|
def install
|
14
14
|
copy_file ".babelrc", ".babelrc"
|
15
|
+
copy_file ".browserlistrc", ".browserlistrc"
|
16
|
+
copy_file "postcss.config.js", "postcss.config.js"
|
15
17
|
|
16
18
|
copy_file "webpack/common/mixins.sass", "webpack/common/mixins.sass"
|
17
19
|
copy_file "webpack/common/variables.sass", "webpack/common/variables.sass"
|
18
20
|
copy_file "webpack/common/index.sass", "webpack/common/index.sass"
|
19
21
|
|
20
|
-
copy_file "webpack/errors/errors.pug", "webpack/errors/errors.pug"
|
21
|
-
copy_file "webpack/errors/index.es6", "webpack/errors/index.es6"
|
22
|
-
copy_file "webpack/errors/index.sass", "webpack/errors/index.sass"
|
23
|
-
|
24
22
|
copy_file "webpack/flash/index.es6", "webpack/flash/index.es6"
|
25
23
|
copy_file "webpack/flash/index.sass", "webpack/flash/index.sass"
|
26
24
|
|
@@ -32,9 +30,9 @@ module RocketCms
|
|
32
30
|
copy_file "webpack/layout/main.sass", "webpack/layout/main.sass"
|
33
31
|
copy_file "webpack/layout/typography.sass", "webpack/layout/typography.sass"
|
34
32
|
|
35
|
-
copy_file "webpack/
|
36
|
-
copy_file "webpack/
|
37
|
-
copy_file "webpack/
|
33
|
+
copy_file "webpack/components/index.es6", "webpack/components/index.es6"
|
34
|
+
copy_file "webpack/components/header/index.sass", "webpack/components/header/index.sass"
|
35
|
+
copy_file "webpack/components/footer/index.sass", "webpack/components/footer/index.sass"
|
38
36
|
|
39
37
|
copy_file "webpack/pages/index.es6", "webpack/pages/index.es6"
|
40
38
|
copy_file "webpack/pages/home/index.es6", "webpack/pages/home/index.es6"
|
data/lib/rocket_cms.rb
CHANGED
@@ -6,7 +6,6 @@ end
|
|
6
6
|
require 'rocket_cms/version'
|
7
7
|
require 'validates_email_format_of'
|
8
8
|
require 'smart_excerpt'
|
9
|
-
require 'filename_to_slug'
|
10
9
|
|
11
10
|
require 'kaminari'
|
12
11
|
require 'addressable/uri'
|
@@ -42,6 +41,13 @@ module RocketCMS
|
|
42
41
|
"#{model_namespace}::#{name}".constantize
|
43
42
|
end
|
44
43
|
|
44
|
+
def shrine?
|
45
|
+
defined?(::Shrine)
|
46
|
+
end
|
47
|
+
def paperclip?
|
48
|
+
!shrine? && defined(::Paperclip)
|
49
|
+
end
|
50
|
+
|
45
51
|
def url_helper
|
46
52
|
@@url_helper ||= RocketCMS::UrlHelper.new
|
47
53
|
end
|
data/lib/rocket_cms/admin.rb
CHANGED
@@ -37,7 +37,11 @@ module RocketCMS
|
|
37
37
|
field :robots, :string
|
38
38
|
|
39
39
|
field :og_title, :string
|
40
|
-
|
40
|
+
if RocketCMS.shrine?
|
41
|
+
field :og_image, :paperclip
|
42
|
+
elsif RocketCMS.paperclip?
|
43
|
+
field :og_image, :paperclip
|
44
|
+
end
|
41
45
|
end
|
42
46
|
end
|
43
47
|
|
@@ -60,7 +64,7 @@ module RocketCMS
|
|
60
64
|
end
|
61
65
|
edit do
|
62
66
|
field :name
|
63
|
-
field :content, :
|
67
|
+
field :content, :ckeditor
|
64
68
|
RocketCMS.apply_patches self
|
65
69
|
group :menu do
|
66
70
|
label I18n.t('rs.menu')
|
@@ -143,7 +147,7 @@ module RocketCMS
|
|
143
147
|
end
|
144
148
|
|
145
149
|
edit do
|
146
|
-
field :content, :
|
150
|
+
field :content, :ckeditor
|
147
151
|
RocketCMS.apply_patches self
|
148
152
|
group :seo, &RocketCMS.seo_config
|
149
153
|
end
|
data/lib/rocket_cms/engine.rb
CHANGED
@@ -4,18 +4,6 @@ module RocketCMS
|
|
4
4
|
require File.expand_path('../tasks', __FILE__)
|
5
5
|
end
|
6
6
|
|
7
|
-
initializer 'rocket_cms.paperclip' do
|
8
|
-
require 'paperclip/style'
|
9
|
-
module ::Paperclip
|
10
|
-
class Style
|
11
|
-
alias_method :processor_options_without_auto_orient, :processor_options
|
12
|
-
def processor_options
|
13
|
-
processor_options_without_auto_orient.merge(auto_orient: false)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
7
|
config.after_initialize do
|
20
8
|
# trigger autoload so models are registered in Mongoid::Elasticearch
|
21
9
|
RocketCMS.config.search_models.map(&:constantize)
|
data/lib/rocket_cms/migration.rb
CHANGED
@@ -4,8 +4,12 @@ module RocketCMS
|
|
4
4
|
module News
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
included do
|
7
|
-
|
8
|
-
|
7
|
+
if !RocketCMS.config.news_image_styles.nil?
|
8
|
+
if RocketCMS.shrine?
|
9
|
+
include NewsUploader.attachment(:image)
|
10
|
+
elsif RocketCMS.paperclip?
|
11
|
+
has_attached_file :image, styles: RocketCMS.config.news_image_styles
|
12
|
+
end
|
9
13
|
end
|
10
14
|
|
11
15
|
has_paper_trail if respond_to?(:has_paper_trail)
|
@@ -4,7 +4,11 @@ module RocketCMS
|
|
4
4
|
module Seo
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
included do
|
7
|
-
|
7
|
+
if RocketCMS.shrine?
|
8
|
+
include OgImageUploader.attachment(:og_image)
|
9
|
+
elsif RocketCMS.paperclip?
|
10
|
+
has_attached_file :og_image, styles: {thumb: "800x600>"}
|
11
|
+
end
|
8
12
|
if RocketCMS.config.localize
|
9
13
|
translates :h1, :title, :keywords, :description, :og_title
|
10
14
|
end
|
@@ -3,13 +3,17 @@ module RocketCMS
|
|
3
3
|
module Mongoid
|
4
4
|
module News
|
5
5
|
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
|
6
|
+
if !RocketCMS.config.news_image_styles.nil?
|
7
|
+
if RocketCMS.shrine?
|
8
|
+
include ImageUploader::Attachment(:image)
|
9
|
+
elsif RocketCMS.paperclip?
|
10
|
+
include ::Mongoid::Paperclip
|
11
|
+
end
|
8
12
|
end
|
9
13
|
included do
|
10
14
|
field :time, type: Time
|
11
15
|
index({enabled: 1, time: 1})
|
12
|
-
|
16
|
+
if RocketCMS.paperclip? && RocketCMS.config.news_image_styles.nil?
|
13
17
|
has_mongoid_attached_file :image, styles: RocketCMS.config.news_image_styles
|
14
18
|
end
|
15
19
|
field :name, type: String, localize: RocketCMS.config.localize
|
@@ -3,7 +3,11 @@ module RocketCMS
|
|
3
3
|
module Mongoid
|
4
4
|
module Seo
|
5
5
|
extend ActiveSupport::Concern
|
6
|
-
|
6
|
+
if RocketCMS.shrine?
|
7
|
+
include ImageUploader::Attachment(:og_image)
|
8
|
+
elsif RocketCMS.paperclip?
|
9
|
+
include ::Mongoid::Paperclip
|
10
|
+
end
|
7
11
|
included do
|
8
12
|
field :name, type: String, localize: RocketCMS.config.localize
|
9
13
|
field :h1, type: String, localize: RocketCMS.config.localize
|
@@ -14,7 +18,10 @@ module RocketCMS
|
|
14
18
|
field :robots, type: String, localize: RocketCMS.config.localize
|
15
19
|
|
16
20
|
field :og_title, type: String, localize: RocketCMS.config.localize
|
17
|
-
|
21
|
+
|
22
|
+
if RocketCMS.paperclip?
|
23
|
+
has_mongoid_attached_file :og_image, styles: {thumb: "800x600>"}
|
24
|
+
end
|
18
25
|
end
|
19
26
|
end
|
20
27
|
end
|
@@ -13,7 +13,8 @@ module RocketCMS
|
|
13
13
|
end
|
14
14
|
|
15
15
|
included do
|
16
|
-
|
16
|
+
|
17
|
+
if RocketCMS.paperclip? && !RocketCMS.config.news_image_styles.nil?
|
17
18
|
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/, if: :image?
|
18
19
|
end
|
19
20
|
|
@@ -9,7 +9,9 @@ module RocketCMS
|
|
9
9
|
|
10
10
|
included do
|
11
11
|
RocketCMS.apply_patches self
|
12
|
-
|
12
|
+
if RocketCMS.paperclip?
|
13
|
+
validates_attachment_content_type :og_image, content_type: /\Aimage\/.*\Z/, if: :og_image?
|
14
|
+
end
|
13
15
|
end
|
14
16
|
end
|
15
17
|
end
|
data/lib/rocket_cms/version.rb
CHANGED
data/template.rb
CHANGED
@@ -3,10 +3,10 @@ version = rails_spec.version.to_s
|
|
3
3
|
|
4
4
|
mongoid = options[:skip_active_record]
|
5
5
|
yarn = !options[:skip_yarn]
|
6
|
-
|
6
|
+
is_dev = options[:template].index("http").nil?
|
7
7
|
spring = !options[:skip_spring]
|
8
8
|
|
9
|
-
if Gem::Version.new(version) < Gem::Version.new('
|
9
|
+
if Gem::Version.new(version) < Gem::Version.new('6.0.0')
|
10
10
|
puts "You are using an old version of Rails (#{version})"
|
11
11
|
puts "Please update"
|
12
12
|
puts "Stopping"
|
@@ -24,25 +24,27 @@ git_source(:github) do |repo_name|
|
|
24
24
|
"https://github.com/#{repo_name}.git"
|
25
25
|
end
|
26
26
|
'}
|
27
|
-
gem 'rails', '
|
27
|
+
gem 'rails', '6.0.1'
|
28
|
+
gem 'rails-i18n'
|
28
29
|
#{if mongoid then "gem 'mongoid', '~> 6.1.0'" else "gem 'pg', '>= 0.18', '< 2.0'" end}
|
29
30
|
gem 'turbolinks' #required for redirects even if using via webpack
|
30
31
|
|
31
|
-
gem 'sass'
|
32
32
|
|
33
33
|
#{
|
34
34
|
"#{if mongoid then "gem 'rocket_cms_mongoid', path: '/data/rocket_cms'" else "gem 'rocket_cms_activerecord', path: '/data/rocket_cms'" end}
|
35
|
-
gem 'rocket_cms', path: '/data/rocket_cms'"
|
36
|
-
#{"#{if mongoid then "gem 'rocket_cms_mongoid'" else "gem 'rocket_cms_activerecord'" end}" if
|
35
|
+
gem 'rocket_cms', path: '/data/rocket_cms'" if is_dev}
|
36
|
+
#{"#{if mongoid then "gem 'rocket_cms_mongoid'" else "gem 'rocket_cms_activerecord'" end}" if !is_dev}
|
37
37
|
|
38
|
-
gem '
|
39
|
-
|
38
|
+
gem 'glebtv-ckeditor'
|
39
|
+
|
40
|
+
# wait for https://github.com/sferik/rails_admin/pull/3207
|
41
|
+
gem 'rails_admin', github: "sferik/rails_admin"
|
40
42
|
|
41
43
|
gem 'slim'
|
42
|
-
gem 'haml'
|
43
44
|
|
44
|
-
gem 'sass
|
45
|
-
gem '
|
45
|
+
#gem 'sass'
|
46
|
+
#gem 'sass-rails'
|
47
|
+
gem 'rs-webpack-rails'
|
46
48
|
|
47
49
|
gem 'devise'
|
48
50
|
gem 'devise-i18n'
|
@@ -54,9 +56,13 @@ gem 'puma'
|
|
54
56
|
|
55
57
|
gem 'sentry-raven'
|
56
58
|
|
57
|
-
gem '
|
59
|
+
gem 'shrine'
|
60
|
+
#{"gem 'shrine-mongoid'" if mongoid}
|
61
|
+
gem 'image_processing'
|
62
|
+
|
63
|
+
#gem 'uglifier'
|
58
64
|
|
59
|
-
gem 'rs_russian'
|
65
|
+
#gem 'rs_russian'
|
60
66
|
#gem 'enumerize'
|
61
67
|
#gem 'active_model_serializers'
|
62
68
|
|
@@ -65,6 +71,7 @@ gem 'tzinfo-data' if Gem.win_platform?
|
|
65
71
|
gem 'wdm', '>= 0.1.0' if Gem.win_platform?
|
66
72
|
|
67
73
|
gem 'bootsnap', require: false
|
74
|
+
gem 'irb'
|
68
75
|
|
69
76
|
group :development do
|
70
77
|
#gem 'binding_of_caller'
|
@@ -163,7 +170,7 @@ puma
|
|
163
170
|
|
164
171
|
"
|
165
172
|
|
166
|
-
#create_file '.ruby-version', "2.5
|
173
|
+
#create_file '.ruby-version', "2.6.5\n"
|
167
174
|
#create_file '.ruby-gemset', "#{app_name}\n"
|
168
175
|
|
169
176
|
run 'bundle install --without production'
|
@@ -233,10 +240,11 @@ gsub_file 'app/models/user.rb', '# field :locked_at', 'field :locked_at'
|
|
233
240
|
end
|
234
241
|
|
235
242
|
if mongoid
|
236
|
-
generate "ckeditor:install", "--orm=mongoid", "--backend=
|
243
|
+
generate "ckeditor:install", "--orm=mongoid", "--backend=shrine"
|
237
244
|
else
|
238
|
-
generate "ckeditor:install", "--orm-active_record", "--backend=
|
245
|
+
generate "ckeditor:install", "--orm-active_record", "--backend=shrine"
|
239
246
|
end
|
247
|
+
remove_file 'config/initializers/ckeditor_shrine.rb'
|
240
248
|
|
241
249
|
unless mongoid
|
242
250
|
generate "rocket_cms:migration"
|
@@ -279,14 +287,6 @@ end
|
|
279
287
|
|
280
288
|
create_file 'config/locales/ru.yml' do <<-TEXT
|
281
289
|
ru:
|
282
|
-
attributes:
|
283
|
-
is_default: По умолчанию
|
284
|
-
mongoid:
|
285
|
-
models:
|
286
|
-
item: Товар
|
287
|
-
attributes:
|
288
|
-
item:
|
289
|
-
price: Цена
|
290
290
|
TEXT
|
291
291
|
end
|
292
292
|
|
@@ -301,36 +301,166 @@ User.create!(email: 'admin@#{app_name.dasherize.downcase}.ru', password: admin_p
|
|
301
301
|
|
302
302
|
Page.destroy_all
|
303
303
|
Menu.destroy_all
|
304
|
+
News.destroy_all
|
305
|
+
|
304
306
|
h = Menu.create(name: 'Главное', text_slug: 'main').id
|
305
|
-
|
306
|
-
Page.create!(name: 'Прайс лист', fullpath: '/price', menu_ids: [h])
|
307
|
-
Page.create!(name: 'Галерея', fullpath: '/galleries', menu_ids: [h])
|
308
|
-
c = Page.create!(name: 'О компании', fullpath: '/company', menu_ids: [h], content: 'О Компании')
|
307
|
+
Page.create!(name: 'О компании', fullpath: '/company', menu_ids: [h], content: 'О Компании')
|
309
308
|
Page.create!(name: 'Новости', fullpath: '/news', menu_ids: [h])
|
310
309
|
Page.create!(name: 'Контакты', fullpath: '/contacts', menu_ids: [h], content: 'Текст стр контакты')
|
311
310
|
|
311
|
+
3.times do |i|
|
312
|
+
News.create!(name: "test " + i.to_s, content: "test", time: i.days.ago)
|
313
|
+
end
|
314
|
+
|
312
315
|
TEXT
|
313
316
|
end
|
314
317
|
|
315
|
-
create_file '
|
316
|
-
|
318
|
+
create_file 'app/uploaders/news_uploader.rb' do <<-TEXT
|
319
|
+
class NewsUploader < Shrine
|
320
|
+
plugin :determine_mime_type
|
321
|
+
plugin :validation_helpers
|
322
|
+
plugin :derivatives
|
323
|
+
|
324
|
+
Attacher.validate do
|
325
|
+
validate_mime_type_inclusion %w[image/jpeg image/gif image/png]
|
326
|
+
validate_max_size 2.megabytes
|
327
|
+
end
|
328
|
+
|
329
|
+
Attacher.derivatives do |original|
|
330
|
+
magick = ImageProcessing::MiniMagick.source(original)
|
331
|
+
|
332
|
+
{
|
333
|
+
main: magick.resize_to_limit!(800, 800),
|
334
|
+
thumb: magick.resize_to_limit!(300, 300)
|
335
|
+
}
|
336
|
+
end
|
337
|
+
end
|
338
|
+
TEXT
|
339
|
+
end
|
317
340
|
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
341
|
+
create_file 'app/uploaders/og_image_uploader.rb' do <<-TEXT
|
342
|
+
class OgImageUploader < Shrine
|
343
|
+
plugin :determine_mime_type
|
344
|
+
plugin :validation_helpers
|
345
|
+
|
346
|
+
Attacher.validate do
|
347
|
+
validate_mime_type_inclusion %w[image/jpeg image/gif image/png]
|
348
|
+
validate_max_size 2.megabytes
|
349
|
+
end
|
350
|
+
end
|
351
|
+
TEXT
|
352
|
+
end
|
353
|
+
|
354
|
+
create_file 'extra/shrine/plugins/custom_pretty_location.rb' do <<-TEXT
|
355
|
+
require 'shrine/plugins/pretty_location'
|
356
|
+
class Shrine
|
357
|
+
module Plugins
|
358
|
+
module CustomPrettyLocation
|
359
|
+
include Shrine::Plugins::PrettyLocation
|
360
|
+
|
361
|
+
module InstanceMethods
|
362
|
+
include Shrine::Plugins::PrettyLocation::InstanceMethods
|
363
|
+
|
364
|
+
def record_identifier(record)
|
365
|
+
id = record.public_send(opts[:custom_pretty_location][:identifier])
|
366
|
+
case id
|
367
|
+
when Integer
|
368
|
+
str_id = "%09d".freeze % id
|
369
|
+
str_id.scan(/\d{3}/).join("/".freeze)
|
370
|
+
when String
|
371
|
+
id.scan(/.{3}/).first(3).join("/".freeze)
|
372
|
+
else
|
373
|
+
# NOTE: 'raise' cannot be used. It fails on save.
|
374
|
+
nil
|
375
|
+
end
|
326
376
|
end
|
327
377
|
end
|
378
|
+
|
328
379
|
end
|
380
|
+
register_plugin(:custom_pretty_location, CustomPrettyLocation)
|
329
381
|
end
|
330
382
|
end
|
331
383
|
TEXT
|
332
384
|
end
|
333
385
|
|
386
|
+
remove_file 'app/assets/config/manifest.js'
|
387
|
+
create_file 'app/assets/config/manifest.js' do <<-TEXT
|
388
|
+
//= link_tree ../images
|
389
|
+
//= link_directory ../stylesheets .css
|
390
|
+
//= link ckcontent.css
|
391
|
+
//= link ckeditor/application.css
|
392
|
+
//= link ckeditor/application.js
|
393
|
+
TEXT
|
394
|
+
end
|
395
|
+
|
396
|
+
remove_file 'config/initializers/assets.rb'
|
397
|
+
create_file 'config/initializers/assets.rb' do <<-TEXT
|
398
|
+
# Be sure to restart your server when you modify this file.
|
399
|
+
|
400
|
+
# Version of your assets, change this if you want to expire all your assets.
|
401
|
+
Rails.application.config.assets.version = '1.0'
|
402
|
+
|
403
|
+
# Add additional assets to the asset load path.
|
404
|
+
# Rails.application.config.assets.paths << Emoji.images_path
|
405
|
+
# Add Yarn node_modules folder to the asset load path.
|
406
|
+
#Rails.application.config.assets.paths << Rails.root.join('node_modules')
|
407
|
+
|
408
|
+
# Precompile additional assets.
|
409
|
+
# application.js, application.css, and all non-JS/CSS in the app/assets
|
410
|
+
# folder are already added.
|
411
|
+
# Rails.application.config.assets.precompile += %w( admin.js admin.css )
|
412
|
+
|
413
|
+
TEXT
|
414
|
+
end
|
415
|
+
|
416
|
+
create_file 'config/initializers/shrine.rb' do <<-TEXT
|
417
|
+
require "shrine"
|
418
|
+
require "shrine/storage/file_system"
|
419
|
+
|
420
|
+
Shrine.logger = Rails.logger
|
421
|
+
|
422
|
+
# Choose your favorite image processor
|
423
|
+
require 'image_processing/mini_magick'
|
424
|
+
SHRINE_PICTURE_PROCESSOR = ImageProcessing::MiniMagick
|
425
|
+
|
426
|
+
Shrine.storages = {
|
427
|
+
# temporary
|
428
|
+
cache: Shrine::Storage::FileSystem.new(
|
429
|
+
"public",
|
430
|
+
prefix: "uploads/cache"
|
431
|
+
),
|
432
|
+
# permanent
|
433
|
+
store: Shrine::Storage::FileSystem.new(
|
434
|
+
"public",
|
435
|
+
prefix: "uploads"
|
436
|
+
),
|
437
|
+
}
|
438
|
+
|
439
|
+
Shrine.plugin :upload_options, cache: { move: true }, store: { move: true }
|
440
|
+
|
441
|
+
Shrine.plugin :custom_pretty_location, class_underscore: :true
|
442
|
+
|
443
|
+
Shrine.plugin :determine_mime_type
|
444
|
+
#{"Shrine.plugin :mongoid" if mongoid}
|
445
|
+
Shrine.plugin :instrumentation
|
446
|
+
|
447
|
+
Shrine.plugin :activerecord # loads Active Record integration
|
448
|
+
Shrine.plugin :cached_attachment_data # enables retaining cached file across form redisplays
|
449
|
+
Shrine.plugin :restore_cached_data # extracts metadata for assigned cached files
|
450
|
+
|
451
|
+
Shrine.plugin :validation_helpers
|
452
|
+
Shrine.plugin :derivatives
|
453
|
+
|
454
|
+
require 'ckeditor/backend/shrine'
|
455
|
+
TEXT
|
456
|
+
end
|
457
|
+
|
458
|
+
|
459
|
+
create_file 'config/initializers/rack.rb' do <<-TEXT
|
460
|
+
Rack::Utils.multipart_part_limit = 0
|
461
|
+
TEXT
|
462
|
+
end
|
463
|
+
|
334
464
|
create_file 'app/assets/stylesheets/rails_admin/custom/theming.sass' do <<-TEXT
|
335
465
|
TEXT
|
336
466
|
end
|
@@ -431,6 +561,9 @@ Bundler.require(*Rails.groups)
|
|
431
561
|
|
432
562
|
module #{app_name.camelize}
|
433
563
|
class Application < Rails::Application
|
564
|
+
# Initialize configuration defaults for originally generated Rails version.
|
565
|
+
config.load_defaults 6.0
|
566
|
+
|
434
567
|
config.generators do |g|
|
435
568
|
g.test_framework :rspec
|
436
569
|
g.view_specs false
|
@@ -472,11 +605,17 @@ create_file 'app/assets/javascripts/application.js' do <<-TEXT
|
|
472
605
|
TEXT
|
473
606
|
end
|
474
607
|
|
475
|
-
remove_file 'app/assets/
|
476
|
-
create_file 'app/assets/
|
608
|
+
remove_file 'app/assets/stylesheets/application.css'
|
609
|
+
create_file 'app/assets/stylesheets/application.css' do <<-TEXT
|
477
610
|
TEXT
|
478
611
|
end
|
479
612
|
|
613
|
+
create_file 'app/assets/stylesheets/ckcontent.css' do <<-TEXT
|
614
|
+
div.red {
|
615
|
+
color: red;
|
616
|
+
}
|
617
|
+
TEXT
|
618
|
+
end
|
480
619
|
|
481
620
|
if mongoid
|
482
621
|
FileUtils.cp(Pathname.new(destination_root).join('config', 'mongoid.yml').to_s, Pathname.new(destination_root).join('config', 'mongoid.yml.example').to_s)
|
@@ -745,3 +884,9 @@ end
|
|
745
884
|
|
746
885
|
git add: "."
|
747
886
|
git commit: %Q{ -m 'Initial commit' }
|
887
|
+
|
888
|
+
unless mongoid
|
889
|
+
rake "db:migrate"
|
890
|
+
end
|
891
|
+
|
892
|
+
rake 'db:seed'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rocket_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.31.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- glebtv
|
@@ -228,9 +228,9 @@ files:
|
|
228
228
|
- app/models/news.rb
|
229
229
|
- app/models/page.rb
|
230
230
|
- app/models/seo.rb
|
231
|
-
- app/views/
|
232
|
-
- app/views/
|
233
|
-
- app/views/
|
231
|
+
- app/views/components/_counters.html
|
232
|
+
- app/views/components/_footer.slim
|
233
|
+
- app/views/components/_header.slim
|
234
234
|
- app/views/contact_mailer/new_message_email.html.slim
|
235
235
|
- app/views/contacts/new.slim
|
236
236
|
- app/views/contacts/sent.slim
|
@@ -257,7 +257,6 @@ files:
|
|
257
257
|
- config/locales/en.rocket_admin.yml
|
258
258
|
- config/locales/en.rs.yml
|
259
259
|
- config/locales/ru.cancan.yml
|
260
|
-
- config/locales/ru.devise.yml
|
261
260
|
- config/locales/ru.kaminari.yml
|
262
261
|
- config/locales/ru.models.yml
|
263
262
|
- config/locales/ru.rails_admin.yml
|
@@ -265,13 +264,13 @@ files:
|
|
265
264
|
- config/locales/ru.rs.yml
|
266
265
|
- config/locales/ru.simple_captcha.yml
|
267
266
|
- config/locales/ru.simple_form.yml
|
268
|
-
- lib/filename_to_slug.rb
|
269
267
|
- lib/generators/rocket_cms/ability_generator.rb
|
270
268
|
- lib/generators/rocket_cms/admin_generator.rb
|
271
269
|
- lib/generators/rocket_cms/capify_generator.rb
|
272
270
|
- lib/generators/rocket_cms/layout_generator.rb
|
273
271
|
- lib/generators/rocket_cms/migration_generator.rb
|
274
272
|
- lib/generators/rocket_cms/templates/.babelrc
|
273
|
+
- lib/generators/rocket_cms/templates/.browserlistrc
|
275
274
|
- lib/generators/rocket_cms/templates/Capfile
|
276
275
|
- lib/generators/rocket_cms/templates/ability.erb
|
277
276
|
- lib/generators/rocket_cms/templates/admin.erb
|
@@ -288,15 +287,12 @@ files:
|
|
288
287
|
- lib/generators/rocket_cms/templates/webpack.config.js
|
289
288
|
- lib/generators/rocket_cms/templates/webpack/analytics.es6
|
290
289
|
- lib/generators/rocket_cms/templates/webpack/application.es6
|
291
|
-
- lib/generators/rocket_cms/templates/webpack/blocks/footer/index.sass
|
292
|
-
- lib/generators/rocket_cms/templates/webpack/blocks/header/index.sass
|
293
|
-
- lib/generators/rocket_cms/templates/webpack/blocks/index.es6
|
294
290
|
- lib/generators/rocket_cms/templates/webpack/common/index.sass
|
295
291
|
- lib/generators/rocket_cms/templates/webpack/common/mixins.sass
|
296
292
|
- lib/generators/rocket_cms/templates/webpack/common/variables.sass
|
297
|
-
- lib/generators/rocket_cms/templates/webpack/
|
298
|
-
- lib/generators/rocket_cms/templates/webpack/
|
299
|
-
- lib/generators/rocket_cms/templates/webpack/
|
293
|
+
- lib/generators/rocket_cms/templates/webpack/components/footer/index.sass
|
294
|
+
- lib/generators/rocket_cms/templates/webpack/components/header/index.sass
|
295
|
+
- lib/generators/rocket_cms/templates/webpack/components/index.es6
|
300
296
|
- lib/generators/rocket_cms/templates/webpack/flash/index.es6
|
301
297
|
- lib/generators/rocket_cms/templates/webpack/flash/index.sass
|
302
298
|
- lib/generators/rocket_cms/templates/webpack/fonts/index.sass
|
@@ -1,65 +0,0 @@
|
|
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} ошибки'
|
data/lib/filename_to_slug.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'stringex'
|
2
|
-
require 'digest/md5'
|
3
|
-
|
4
|
-
class String
|
5
|
-
def filename_to_slug
|
6
|
-
s = self.to_url
|
7
|
-
if s.blank?
|
8
|
-
return Digest::MD5.hexdigest(self)
|
9
|
-
end
|
10
|
-
s
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
module FilenameToSlug
|
15
|
-
extend ActiveSupport::Concern
|
16
|
-
included do
|
17
|
-
before_post_process :filename_to_slug
|
18
|
-
end
|
19
|
-
|
20
|
-
def filename_to_slug
|
21
|
-
if self.class.attachment_definitions
|
22
|
-
self.class.attachment_definitions.each do |k,v|
|
23
|
-
if self.send(k).file?
|
24
|
-
full_file_name = self.send("#{k}_file_name")
|
25
|
-
extension = File.extname(full_file_name)[1..-1]
|
26
|
-
file_name = full_file_name[0..full_file_name.size-extension.size-1]
|
27
|
-
self.send("#{k}").instance_write(:file_name, "#{file_name.filename_to_slug}.#{extension.filename_to_slug}")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
header.header
|
@@ -1,30 +0,0 @@
|
|
1
|
-
import './index.sass';
|
2
|
-
import Cookies from 'js-cookie';
|
3
|
-
import template from './errors.pug';
|
4
|
-
|
5
|
-
const COOKIE_ERROR = {
|
6
|
-
title: 'В вашем броузере отключены Cookies',
|
7
|
-
link: 'https://yandex.ru/support/common/browsers-settings/browsers-cookies.xml',
|
8
|
-
anchor: 'Включите их',
|
9
|
-
message: 'чтобы зайти на сайт'
|
10
|
-
}
|
11
|
-
|
12
|
-
class Errors {
|
13
|
-
show(error) {
|
14
|
-
$('body').prepend(template(error));
|
15
|
-
}
|
16
|
-
|
17
|
-
checkCookie() {
|
18
|
-
$(".no-js-error").remove()
|
19
|
-
$(".no-js-script").remove()
|
20
|
-
if (!Cookies.get('cookies_on')) {
|
21
|
-
this.show(COOKIE_ERROR);
|
22
|
-
console.error('cookies not supported');
|
23
|
-
} else {
|
24
|
-
//console.info('cookies supported');
|
25
|
-
}
|
26
|
-
}
|
27
|
-
}
|
28
|
-
|
29
|
-
export default Errors;
|
30
|
-
|
@@ -1,49 +0,0 @@
|
|
1
|
-
.errors
|
2
|
-
position: fixed
|
3
|
-
top: 0
|
4
|
-
left: 0
|
5
|
-
right: 0
|
6
|
-
bottom: 0
|
7
|
-
background: #b70f25 no-repeat 100% 100% / cover
|
8
|
-
color: #fff
|
9
|
-
z-index: 2000
|
10
|
-
.logo-ta
|
11
|
-
top: 55px
|
12
|
-
|
13
|
-
.errors-inner
|
14
|
-
display: table-cell
|
15
|
-
text-align: center
|
16
|
-
vertical-align: middle
|
17
|
-
width: 100vw
|
18
|
-
height: 100vh
|
19
|
-
a
|
20
|
-
color: #fff
|
21
|
-
h3
|
22
|
-
max-width: 720px
|
23
|
-
margin: 0 auto 20px
|
24
|
-
font-size: 44px
|
25
|
-
font-weight: 700
|
26
|
-
span
|
27
|
-
display: block
|
28
|
-
font-size: 34px
|
29
|
-
font-weight: 400
|
30
|
-
margin-bottom: 45px
|
31
|
-
margin-top: 20px
|
32
|
-
|
33
|
-
.btn-transparent
|
34
|
-
height: 66px
|
35
|
-
padding: 22px 25px
|
36
|
-
text-transform: uppercase
|
37
|
-
font-size: 17px
|
38
|
-
text-transform: none
|
39
|
-
&:hover
|
40
|
-
border-color: #fff
|
41
|
-
background: #fff
|
42
|
-
color: #ff0026
|
43
|
-
|
44
|
-
.no-js-error
|
45
|
-
display: none
|
46
|
-
|
47
|
-
body.no-js
|
48
|
-
.no-js-error
|
49
|
-
display: block
|