camaleon_cms 1.0.8 → 1.0.9
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.
Potentially problematic release.
This version of camaleon_cms might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +15 -1
- data/app/apps/plugins/contact_form/admin_forms_controller.rb +0 -9
- data/app/apps/plugins/contact_form/contact_form_helper.rb +94 -3
- data/app/apps/plugins/contact_form/front_controller.rb +2 -68
- data/app/apps/plugins/front_cache/front_cache_helper.rb +6 -2
- data/app/controllers/admin/appearances/widgets/assign_controller.rb +3 -3
- data/app/controllers/admin/appearances/widgets/sidebar_controller.rb +5 -5
- data/app/controllers/admin/sessions_controller.rb +1 -1
- data/app/controllers/api/api_controller.rb +13 -7
- data/app/controllers/api/v1/category_controller.rb +9 -1
- data/app/controllers/api/v1/contact_form_controller.rb +55 -0
- data/app/controllers/camaleon_controller.rb +10 -3
- data/app/helpers/session_helper.rb +2 -2
- data/app/helpers/theme_helper.rb +12 -0
- data/app/serializers/api/base_serializer.rb +9 -0
- data/app/serializers/api/v1/category_serializer.rb +8 -0
- data/app/views/admin/settings/custom_fields/get_items.html.erb +4 -2
- data/app/views/default_theme/layouts/index.html.erb +1 -1
- data/config/initializers/swagger.rb +18 -0
- data/config/locales/admin/en.yml +12 -2
- data/config/locales/languages.yml +14 -0
- data/config/locales/ru.yml +207 -0
- data/config/routes.rb +5 -0
- data/config/routes/admin.rb +2 -0
- data/lib/camaleon_cms/engine.rb +5 -0
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/generators/camaleon_cms/gem_plugin_generator.rb +23 -23
- data/lib/generators/ctheme_template/app/apps/themes/my_theme/views/layouts/index.html.erb +1 -1
- data/lib/tasks/precompile_overrides.rake +6 -0
- data/public/docs/index.html +70 -0
- data/public/docs/swagger-ui/css/highlight.default.css +135 -0
- data/public/docs/swagger-ui/css/screen.css +1070 -0
- data/public/docs/swagger-ui/images/logo_small.png +0 -0
- data/public/docs/swagger-ui/images/throbber.gif +0 -0
- data/public/docs/swagger-ui/lib/backbone-min.js +38 -0
- data/public/docs/swagger-ui/lib/handlebars-1.0.0.js +2278 -0
- data/public/docs/swagger-ui/lib/highlight.7.3.pack.js +1 -0
- data/public/docs/swagger-ui/lib/jquery-1.8.0.min.js +2 -0
- data/public/docs/swagger-ui/lib/jquery.ba-bbq.min.js +18 -0
- data/public/docs/swagger-ui/lib/jquery.slideto.min.js +1 -0
- data/public/docs/swagger-ui/lib/jquery.wiggle.min.js +8 -0
- data/public/docs/swagger-ui/lib/shred.bundle.js +2765 -0
- data/public/docs/swagger-ui/lib/shred/content.js +193 -0
- data/public/docs/swagger-ui/lib/swagger.js +1253 -0
- data/public/docs/swagger-ui/lib/underscore-min.js +32 -0
- data/public/docs/swagger-ui/swagger-ui.js +2039 -0
- data/public/docs/swagger-ui/swagger-ui.min.js +1 -0
- metadata +56 -11
- data/app/views/admin/settings/shortcodes.html.erb +0 -37
- data/lib/generators/camaleon_cms/gem_theme_generator.rb +0 -122
- data/test/camaleon_cms_test.rb +0 -7
- data/test/integration/navigation_test.rb +0 -10
- data/test/test_helper.rb +0 -19
@@ -103,7 +103,7 @@ module SessionHelper
|
|
103
103
|
def authenticate(redirect_uri = nil)
|
104
104
|
params[:return_to] = redirect_uri
|
105
105
|
unless signin?
|
106
|
-
flash[:error] =
|
106
|
+
flash[:error] = t('admin.login.please_login')
|
107
107
|
cookies[:return_to] = params[:return_to].present? ? params[:return_to] : ((request.get? && params[:controller] != "admin/sessions") ? request.original_url : nil)
|
108
108
|
redirect_to admin_login_path
|
109
109
|
end
|
@@ -120,4 +120,4 @@ module SessionHelper
|
|
120
120
|
def calc_api_current_user
|
121
121
|
current_site.users_include_admins.find(doorkeeper_token.resource_owner_id).decorate if doorkeeper_token rescue nil
|
122
122
|
end
|
123
|
-
end
|
123
|
+
end
|
data/app/helpers/theme_helper.rb
CHANGED
@@ -85,4 +85,16 @@ module ThemeHelper
|
|
85
85
|
f2.split(k).last.split("/").first
|
86
86
|
end
|
87
87
|
end
|
88
|
+
|
89
|
+
# returns file system path to theme asset
|
90
|
+
# theme_name: theme name, if nil, then will use current theme
|
91
|
+
# asset: asset file name, if asset is present return full path to this asset
|
92
|
+
# sample: theme_asset_file_path('images/foo.jpg') => return: /home/camaleon/my-site/app/apps/themes/default/assets/images/foo.jpg
|
93
|
+
def theme_asset_file_path(asset = nil, theme_name = nil)
|
94
|
+
theme_path = current_theme.settings['path']
|
95
|
+
if theme_name && theme = Theme.where(name: theme_name).first
|
96
|
+
theme_path = theme.settings['path']
|
97
|
+
end
|
98
|
+
"#{theme_path}/assets/#{asset}"
|
99
|
+
end
|
88
100
|
end
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
9
9
|
<!-- END META SECTION -->
|
10
10
|
|
11
|
-
<%= stylesheet_link_tag theme_asset_path("css/main") %>
|
11
|
+
<%= stylesheet_link_tag theme_asset_path("css/main.css") %>
|
12
12
|
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
|
13
13
|
<%= javascript_include_tag theme_asset_path("js/main.js") %>
|
14
14
|
<%= raw the_head %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
Swagger::Docs::Config.register_apis(
|
2
|
+
{
|
3
|
+
'1.0' => {
|
4
|
+
:api_extension_type => :json,
|
5
|
+
:api_file_path => "public/",
|
6
|
+
:clean_directory => false,
|
7
|
+
:attributes => {
|
8
|
+
:info => {
|
9
|
+
'title' => 'Camaleon CMS API Docs',
|
10
|
+
'description' => 'This is the api documentation',
|
11
|
+
'contact' => 'owenperedo@gmail.com',
|
12
|
+
'license' => 'AGPLv3',
|
13
|
+
'licenseUrl' => 'http://camaleon.tuzitio.com/license.html/'
|
14
|
+
}
|
15
|
+
}
|
16
|
+
}
|
17
|
+
}
|
18
|
+
)
|
data/config/locales/admin/en.yml
CHANGED
@@ -123,6 +123,7 @@ en:
|
|
123
123
|
subject_email: 'Reset your access'
|
124
124
|
send_mail_succes: 'Send email reset success.'
|
125
125
|
send_mail_error: 'Not found email address.'
|
126
|
+
invalid_caption: 'Invalid captcha'
|
126
127
|
personal_info: 'Personal info'
|
127
128
|
please_login: 'Please login'
|
128
129
|
reset_password: 'reset password'
|
@@ -587,7 +588,16 @@ en:
|
|
587
588
|
error_created: 'Not Created Widget.'
|
588
589
|
error_updated: 'Not Updated Widget.'
|
589
590
|
not_registered_widgets: 'There are no registered widgets'
|
590
|
-
|
591
|
+
assign:
|
592
|
+
updated: "Widget assign updated"
|
593
|
+
error_updated: "Widget assign not updated"
|
594
|
+
sidebar:
|
595
|
+
created: "Sidebar Create."
|
596
|
+
updated: "Sidebar Update."
|
597
|
+
error_created: "No created sidebar."
|
598
|
+
error_updated: "No Update sidebar."
|
599
|
+
error_deleted: "Sidebar deleted."
|
600
|
+
intro:
|
591
601
|
profile: "In this place you can see your profile options."
|
592
602
|
content: "This block contains all content groups of your site. Each content can have different structure configured in settings => Content Groups"
|
593
603
|
#dashboard: "In this section you can see "
|
@@ -605,4 +615,4 @@ en:
|
|
605
615
|
custom_fields: "This section permit you to extend easily your contents, themes,... by custom fields."
|
606
616
|
post_type: "In this module you can manage your content groups without programing anything."
|
607
617
|
languages: "This module permit you to manage all languages for your site. Also you can configure the language for your admin panel."
|
608
|
-
shortcodes: "In this section you can see all available shortcodes to use in your contents."
|
618
|
+
shortcodes: "In this section you can see all available shortcodes to use in your contents."
|
@@ -7,6 +7,7 @@ en:
|
|
7
7
|
de: "Deutsch"
|
8
8
|
pt: "Português"
|
9
9
|
it: "Italian"
|
10
|
+
ru: "Russian"
|
10
11
|
|
11
12
|
es:
|
12
13
|
languages:
|
@@ -17,6 +18,7 @@ es:
|
|
17
18
|
de: "Alemán"
|
18
19
|
pt: "Portugues"
|
19
20
|
it: "Italiano"
|
21
|
+
ru: "Russian"
|
20
22
|
|
21
23
|
it:
|
22
24
|
languages:
|
@@ -27,3 +29,15 @@ it:
|
|
27
29
|
de: "Tedesco"
|
28
30
|
pt: "Portoghese"
|
29
31
|
it: "Italiano"
|
32
|
+
ru: "Russian"
|
33
|
+
|
34
|
+
ru:
|
35
|
+
languages:
|
36
|
+
es: "Испанский"
|
37
|
+
en: "Английский"
|
38
|
+
fr: "Французский"
|
39
|
+
zh: "Китайский"
|
40
|
+
de: "Немецкий"
|
41
|
+
pt: "Португальский"
|
42
|
+
it: "Итальянский"
|
43
|
+
ru: "Русский"
|
@@ -0,0 +1,207 @@
|
|
1
|
+
ru:
|
2
|
+
date:
|
3
|
+
abbr_day_names:
|
4
|
+
- Вс
|
5
|
+
- Пн
|
6
|
+
- Вт
|
7
|
+
- Ср
|
8
|
+
- Чт
|
9
|
+
- Пт
|
10
|
+
- Сб
|
11
|
+
abbr_month_names:
|
12
|
+
-
|
13
|
+
- Янв
|
14
|
+
- Фев
|
15
|
+
- Мар
|
16
|
+
- Апр
|
17
|
+
- Май
|
18
|
+
- Июн
|
19
|
+
- Июл
|
20
|
+
- Авг
|
21
|
+
- Сен
|
22
|
+
- Окт
|
23
|
+
- Ноя
|
24
|
+
- Дек
|
25
|
+
day_names:
|
26
|
+
- Воскресенье
|
27
|
+
- Понедельник
|
28
|
+
- Вторник
|
29
|
+
- Среда
|
30
|
+
- Четверг
|
31
|
+
- Пятница
|
32
|
+
- Суббота
|
33
|
+
formats:
|
34
|
+
default: "%Y-%m-%d"
|
35
|
+
long: "%B %d, %Y"
|
36
|
+
short: "%b %d"
|
37
|
+
month_names:
|
38
|
+
-
|
39
|
+
- Январь
|
40
|
+
- Февраль
|
41
|
+
- Март
|
42
|
+
- Апрель
|
43
|
+
- Май
|
44
|
+
- Июнь
|
45
|
+
- Июль
|
46
|
+
- Август
|
47
|
+
- Сентябрь
|
48
|
+
- Октябрь
|
49
|
+
- Ноябрь
|
50
|
+
- Декабрь
|
51
|
+
order:
|
52
|
+
- :day
|
53
|
+
- :month
|
54
|
+
- :year
|
55
|
+
datetime:
|
56
|
+
distance_in_words:
|
57
|
+
about_x_hours:
|
58
|
+
one: около 1 часа
|
59
|
+
other: около %{count} часов
|
60
|
+
about_x_months:
|
61
|
+
one: около 1 месяца
|
62
|
+
other: около %{count} месяцев
|
63
|
+
about_x_years:
|
64
|
+
one: около 1 года
|
65
|
+
other: около %{count} лет
|
66
|
+
almost_x_years:
|
67
|
+
one: почти 1 год
|
68
|
+
other: почти %{count} лет
|
69
|
+
half_a_minute: полминуты
|
70
|
+
less_than_x_minutes:
|
71
|
+
one: менее минуты
|
72
|
+
other: менее %{count} минут
|
73
|
+
less_than_x_seconds:
|
74
|
+
one: менее 1 секунды
|
75
|
+
other: менее %{count} секунд
|
76
|
+
over_x_years:
|
77
|
+
one: через год
|
78
|
+
other: через %{count} лет
|
79
|
+
x_days:
|
80
|
+
one: 1 день
|
81
|
+
other: "%{count} дней"
|
82
|
+
x_minutes:
|
83
|
+
one: 1 минута
|
84
|
+
other: "%{count} минут"
|
85
|
+
x_months:
|
86
|
+
one: 1 месяц
|
87
|
+
other: "%{count} месяцев"
|
88
|
+
x_seconds:
|
89
|
+
one: 1 секунда
|
90
|
+
other: "%{count} секунд"
|
91
|
+
prompts:
|
92
|
+
day: День
|
93
|
+
hour: Час
|
94
|
+
minute: Минута
|
95
|
+
month: Месяц
|
96
|
+
second: Секунда
|
97
|
+
year: Год
|
98
|
+
errors:
|
99
|
+
format: "%{attribute} %{message}"
|
100
|
+
messages:
|
101
|
+
accepted: должны быть выбраны
|
102
|
+
blank: не может быть пустым
|
103
|
+
present: должно быть пустым
|
104
|
+
confirmation: не совпадает %{attribute}
|
105
|
+
empty: не может быть пустым
|
106
|
+
equal_to: должно быть равно %{count}
|
107
|
+
even: должно быть ещё
|
108
|
+
exclusion: зарезервирован
|
109
|
+
greater_than: должно быть больше %{count}
|
110
|
+
greater_than_or_equal_to: должно быть больше или равно %{count}
|
111
|
+
inclusion: не входит в список
|
112
|
+
invalid: недопустим
|
113
|
+
less_than: должно быть меньше %{count}
|
114
|
+
less_than_or_equal_to: должно быть меньше или равно %{count}
|
115
|
+
not_a_number: это не число
|
116
|
+
not_an_integer: должно быть числом
|
117
|
+
odd: должно быть нечетным
|
118
|
+
record_invalid: 'Возникла ошибка: %{errors}'
|
119
|
+
restrict_dependent_destroy:
|
120
|
+
one: Не могу удалить запись, потому что зависимая %{record} существует
|
121
|
+
many: Не могу удалить записи, потому что зависимые %{record} существуют
|
122
|
+
taken: уже существует
|
123
|
+
too_long:
|
124
|
+
one: слишком длинный (максимум 1 символ)
|
125
|
+
other: слишком длинный (максимум %{count} символов)
|
126
|
+
too_short:
|
127
|
+
one: слишком короткий (минимум 1 символ)
|
128
|
+
other: слишком короткий (минимум %{count} символов)
|
129
|
+
wrong_length:
|
130
|
+
one: неверной длины (должен быть 1 символ)
|
131
|
+
other: неверной длинны (должно быть %{count} символов)
|
132
|
+
other_than: должно отличатся от %{count}
|
133
|
+
template:
|
134
|
+
body: 'Возникли проблемы со следующими полями:'
|
135
|
+
header:
|
136
|
+
one: Ошибка, запрещено сохранение %{model}
|
137
|
+
other: "%{count} ошибок, невозможно сохранить %{model}"
|
138
|
+
helpers:
|
139
|
+
select:
|
140
|
+
prompt: Пожалуйста, выберите
|
141
|
+
submit:
|
142
|
+
create: Создать %{model}
|
143
|
+
submit: Сохранить %{model}
|
144
|
+
update: Обновить %{model}
|
145
|
+
number:
|
146
|
+
currency:
|
147
|
+
format:
|
148
|
+
delimiter: ","
|
149
|
+
format: "%u%n"
|
150
|
+
precision: 2
|
151
|
+
separator: "."
|
152
|
+
significant: false
|
153
|
+
strip_insignificant_zeros: false
|
154
|
+
unit: "₽"
|
155
|
+
format:
|
156
|
+
delimiter: ","
|
157
|
+
precision: 3
|
158
|
+
separator: "."
|
159
|
+
significant: false
|
160
|
+
strip_insignificant_zeros: false
|
161
|
+
human:
|
162
|
+
decimal_units:
|
163
|
+
format: "%n %u"
|
164
|
+
units:
|
165
|
+
billion: Миллиард
|
166
|
+
million: Миллион
|
167
|
+
quadrillion: Квадриллион
|
168
|
+
thousand: Тысяча
|
169
|
+
trillion: Триллион
|
170
|
+
unit: ''
|
171
|
+
format:
|
172
|
+
delimiter: ''
|
173
|
+
precision: 3
|
174
|
+
significant: true
|
175
|
+
strip_insignificant_zeros: true
|
176
|
+
storage_units:
|
177
|
+
format: "%n %u"
|
178
|
+
units:
|
179
|
+
byte:
|
180
|
+
one: Байт
|
181
|
+
other: Байт
|
182
|
+
gb: ГБ
|
183
|
+
kb: КБ
|
184
|
+
mb: МБ
|
185
|
+
tb: ТБ
|
186
|
+
percentage:
|
187
|
+
format:
|
188
|
+
delimiter: ''
|
189
|
+
format: "%n%"
|
190
|
+
precision:
|
191
|
+
format:
|
192
|
+
delimiter: ''
|
193
|
+
support:
|
194
|
+
array:
|
195
|
+
last_word_connector: " и "
|
196
|
+
two_words_connector: " и "
|
197
|
+
words_connector: ", "
|
198
|
+
recaptcha:
|
199
|
+
errors:
|
200
|
+
incorrect-captcha-sol: 'Ой! Его ошибка с reCAPTCHA!'
|
201
|
+
time:
|
202
|
+
am: утра
|
203
|
+
formats:
|
204
|
+
default: "%a, %d %b %Y %H:%M:%S %z"
|
205
|
+
long: "%B %d, %Y %H:%M"
|
206
|
+
short: "%d %b %H:%M"
|
207
|
+
pm: вечера
|
data/config/routes.rb
CHANGED
@@ -8,6 +8,11 @@ Rails.application.routes.draw do
|
|
8
8
|
get 'categories' => 'category#categories'
|
9
9
|
get 'posts' => 'post#index'
|
10
10
|
get 'pages' => 'page#index'
|
11
|
+
|
12
|
+
scope :contact_form do
|
13
|
+
get 'show/:slug' => 'contact_form#contact_form_by_slug'
|
14
|
+
post 'create' => 'contact_form#save_form'
|
15
|
+
end
|
11
16
|
end
|
12
17
|
end
|
13
18
|
|
data/config/routes/admin.rb
CHANGED
@@ -112,6 +112,8 @@ Rails.application.routes.draw do
|
|
112
112
|
match 'elfinder' => 'media#elfinder', via: :all
|
113
113
|
match 'elfinder/iframe' => 'media#iframe', via: :all
|
114
114
|
match 'crop' => 'media#crop', via: :all
|
115
|
+
|
116
|
+
get 'doc' => redirect('/docs/index.html?url=/api-docs.json')
|
115
117
|
end
|
116
118
|
|
117
119
|
eval(PluginRoutes.load("admin"))
|
data/lib/camaleon_cms/engine.rb
CHANGED
@@ -14,6 +14,8 @@ require 'will_paginate'
|
|
14
14
|
require 'will_paginate-bootstrap'
|
15
15
|
require 'doorkeeper'
|
16
16
|
require 'responders'
|
17
|
+
require 'swagger/docs'
|
18
|
+
require 'active_model_serializers'
|
17
19
|
|
18
20
|
$camaleon_engine_dir = File.expand_path("../../../", __FILE__)
|
19
21
|
require File.join($camaleon_engine_dir, "lib", "plugin_routes").to_s
|
@@ -52,6 +54,9 @@ module CamaleonCms
|
|
52
54
|
app.config.eager_load_paths += %W(#{app.config.root}/app/apps/**/)
|
53
55
|
PluginRoutes.all_plugins.each{ |plugin| app.config.paths["db/migrate"] << File.join(plugin["path"], "migrate") if Dir.exist?(File.join(plugin["path"], "migrate")) }
|
54
56
|
|
57
|
+
# Static files
|
58
|
+
app.middleware.use ::ActionDispatch::Static, "#{root}/public"
|
59
|
+
|
55
60
|
# migrations checking
|
56
61
|
unless app.root.to_s.match root.to_s
|
57
62
|
config.paths["db/migrate"].expanded.each do |expanded_path|
|
data/lib/camaleon_cms/version.rb
CHANGED
@@ -55,29 +55,29 @@ module CamaleonCms
|
|
55
55
|
directory(plugin_app, plugin_dir)
|
56
56
|
gsub_file File.join(plugin_dir, "config", "routes.rb"), "end" do
|
57
57
|
"
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
end"
|
58
|
+
scope '(:locale)', locale: /\#{PluginRoutes.all_locales}/, :defaults => { } do
|
59
|
+
# frontend
|
60
|
+
namespace :plugins do
|
61
|
+
namespace '#{get_plugin_name}' do
|
62
|
+
get 'index' => 'front#index'
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
#Admin Panel
|
68
|
+
scope 'admin', as: 'admin' do
|
69
|
+
namespace 'plugins' do
|
70
|
+
namespace '#{get_plugin_name}' do
|
71
|
+
get 'index' => 'admin#index'
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# main routes
|
77
|
+
#scope '#{get_plugin_name}', module: 'plugins/#{get_plugin_name}/', as: '#{get_plugin_name}' do
|
78
|
+
# Here my routes for main routes
|
79
|
+
#end
|
80
|
+
end"
|
81
81
|
end
|
82
82
|
|
83
83
|
append_to_file Rails.root.join("Gemfile") do
|