camaleon_cms 1.0.8 → 1.0.9
Sign up to get free protection for your applications and to get access to all the features.
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
|