camaleon_cms 2.4.5.5 → 2.4.5.7

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.

Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/app/apps/themes/default/views/partials/_comments.html.erb +36 -21
  3. data/app/apps/themes/default/views/post.html.erb +1 -1
  4. data/app/assets/javascripts/camaleon_cms/admin/uploader/_media_manager.js.coffee +4 -4
  5. data/app/controllers/camaleon_cms/admin/categories_controller.rb +3 -0
  6. data/app/controllers/camaleon_cms/admin/media_controller.rb +9 -6
  7. data/app/controllers/camaleon_cms/admin/sessions_controller.rb +1 -1
  8. data/app/controllers/camaleon_cms/admin/settings/post_types_controller.rb +2 -0
  9. data/app/controllers/concerns/camaleon_cms/frontend_concern.rb +17 -13
  10. data/app/decorators/camaleon_cms/post_decorator.rb +0 -1
  11. data/app/helpers/camaleon_cms/captcha_helper.rb +1 -1
  12. data/app/helpers/camaleon_cms/frontend/nav_menu_helper.rb +1 -0
  13. data/app/helpers/camaleon_cms/hooks_helper.rb +6 -1
  14. data/app/helpers/camaleon_cms/site_helper.rb +1 -1
  15. data/app/helpers/camaleon_cms/uploader_helper.rb +36 -27
  16. data/app/models/camaleon_cms/custom_fields_relationship.rb +6 -0
  17. data/app/models/camaleon_cms/media.rb +54 -0
  18. data/app/models/camaleon_cms/post.rb +1 -0
  19. data/app/models/camaleon_cms/site.rb +7 -0
  20. data/app/uploaders/camaleon_cms_aws_uploader.rb +21 -23
  21. data/app/uploaders/camaleon_cms_local_uploader.rb +20 -26
  22. data/app/uploaders/camaleon_cms_uploader.rb +17 -45
  23. data/app/views/camaleon_cms/admin/categories/index.html.erb +2 -2
  24. data/app/views/camaleon_cms/admin/media/_render_file_item.html.erb +53 -36
  25. data/app/views/camaleon_cms/admin/media/index.html.erb +1 -1
  26. data/app/views/camaleon_cms/admin/post_tags/index.html.erb +4 -4
  27. data/app/views/camaleon_cms/admin/posts/index.html.erb +1 -0
  28. data/app/views/camaleon_cms/admin/settings/_configuration_settings.html.erb +5 -1
  29. data/app/views/camaleon_cms/admin/settings/post_types/_form.html.erb +1 -1
  30. data/app/views/camaleon_cms/default_theme/partials/_comments.html.erb +45 -28
  31. data/app/views/camaleon_cms/default_theme/single.html.erb +1 -1
  32. data/config/locales/camaleon_cms/admin/es.yml +1 -0
  33. data/config/locales/camaleon_cms/admin/js.yml +54 -3
  34. data/config/locales/camaleon_cms/admin/ru.yml +39 -28
  35. data/db/migrate/20180124132318_create_media.rb +17 -0
  36. data/lib/camaleon_cms/version.rb +1 -1
  37. data/lib/ext/string.rb +8 -0
  38. data/lib/generators/camaleon_cms/gem_plugin_generator.rb +29 -25
  39. data/lib/plugin_routes.rb +27 -0
  40. data/spec/dummy/config/application.rb +1 -0
  41. data/spec/dummy/config/environments/test.rb +2 -0
  42. data/spec/dummy/db/schema.rb +1 -140
  43. data/spec/dummy/db/test.sqlite3 +0 -0
  44. data/spec/dummy/public/favicon.ico +0 -0
  45. data/spec/factories/post_type.rb +17 -0
  46. data/spec/factories/site.rb +8 -0
  47. data/spec/features/{categories_spec.rb → admin/categories_spec.rb} +1 -1
  48. data/spec/features/{comments_spec.rb → admin/comments_spec.rb} +16 -9
  49. data/spec/features/{contact_form_spec.rb → admin/contact_form_spec.rb} +16 -9
  50. data/spec/features/{content_groups_spec.rb → admin/content_groups_spec.rb} +19 -11
  51. data/spec/features/{custom_fields_spec.rb → admin/custom_fields_spec.rb} +1 -1
  52. data/spec/features/{languages_spec.rb → admin/languages_spec.rb} +1 -1
  53. data/spec/features/{media_spec.rb → admin/media_spec.rb} +1 -1
  54. data/spec/features/{menus_spec.rb → admin/menus_spec.rb} +2 -2
  55. data/spec/features/{pages_spec.rb → admin/pages_spec.rb} +1 -1
  56. data/spec/features/{plugins_spec.rb → admin/plugins_spec.rb} +1 -1
  57. data/spec/features/{posts_spec.rb → admin/posts_spec.rb} +4 -3
  58. data/spec/features/admin/session_spec.rb +102 -0
  59. data/spec/features/{settings_spec.rb → admin/settings_spec.rb} +1 -1
  60. data/spec/features/{shortcodes_spec.rb → admin/shortcodes_spec.rb} +1 -1
  61. data/spec/features/{sites_spec.rb → admin/sites_spec.rb} +22 -14
  62. data/spec/features/{tags_spec.rb → admin/tags_spec.rb} +17 -8
  63. data/spec/features/{themes_spec.rb → admin/themes_spec.rb} +1 -1
  64. data/spec/features/{user_roles_spec.rb → admin/user_roles_spec.rb} +25 -19
  65. data/spec/features/{users_spec.rb → admin/users_spec.rb} +2 -2
  66. data/spec/features/{widgets_spec.rb → admin/widgets_spec.rb} +19 -12
  67. data/spec/features/frontend/pages_spec.rb +86 -5
  68. data/spec/features/frontend/post_type_spec.rb +16 -0
  69. data/spec/helpers/email_helper_spec.rb +1 -1
  70. data/spec/helpers/uploader_helper_spec.rb +56 -0
  71. data/spec/mailers/send_mail_spec.rb +3 -3
  72. data/spec/{decorators/camaleon_cms/post_decorator_spec.rb → models/post_spec.rb} +3 -3
  73. data/spec/rails_helper.rb +79 -0
  74. data/spec/spec_helper.rb +25 -56
  75. data/spec/support/common.rb +10 -24
  76. data/spec/support/fixtures/rails.png +0 -0
  77. data/spec/support/fixtures/rails_tmp.png +0 -0
  78. metadata +64 -50
  79. data/app/views/camaleon_cms/admin/media/_files_list.html.erb +0 -2
  80. data/app/views/camaleon_cms/admin/media/_render_folder_item.html.erb +0 -15
  81. data/spec/decorators/post_type_spec.rb +0 -13
  82. data/spec/features/session_spec.rb +0 -74
@@ -32,7 +32,7 @@
32
32
  <div class="panel-body">
33
33
  <div class="row" style="margin-bottom: 16px">
34
34
  <div class="col-md-9 media_browser_list" data-next-page="<%= @next_page %>">
35
- <%= render "files_list", files: @files, folders: @tree[:folders] %>
35
+ <%= render "render_file_item", files: @files %>
36
36
  </div>
37
37
 
38
38
  <div class="col-md-3 media_file_info_col">
@@ -36,10 +36,10 @@
36
36
  <td><%= tag.slug %></td>
37
37
  <td><%= tag.count %></td>
38
38
  <td>
39
- <%= link_to raw('<i class="fa fa-eye"></i>'), tag.the_url, target: '_blank', class: "btn btn-info btn-xs", title: "#{t('camaleon_cms.common.visit')}" %>
40
- <%= link_to raw('<i class="fa fa-list"></i>'), cama_admin_post_type_taxonomy_posts_path(@post_type.id, "post_tag", tag.id), class: "btn btn-default btn-xs cama_ajax_request", title: "#{cama_pluralize_text(@post_type.decorate.the_title)}-#{tag.slug.to_s.titleize}" if @post_type.present? %>
41
- <%= link_to raw('<i class="fa fa-pencil"></i>'), {action: :edit, id: tag.id }, class: "btn btn-default btn-xs cama_ajax_request", title: "#{t('camaleon_cms.admin.button.edit')}" %>
42
- <%= link_to raw('<i class="fa fa-times"></i>'), { action: :destroy, id: tag.id }, method: :delete, data: { confirm: t('camaleon_cms.admin.message.delete') }, class: "btn btn-danger btn-xs cama_ajax_request", title: "#{t('camaleon_cms.admin.button.delete')}" unless tag.get_option('not_deleted', false) %>
39
+ <%= link_to raw('<i class="fa fa-eye"></i>'), tag.the_url, target: '_blank', class: "btn btn-info btn-xs btn_view", title: "#{t('camaleon_cms.common.visit')}" %>
40
+ <%= link_to raw('<i class="fa fa-list"></i>'), cama_admin_post_type_taxonomy_posts_path(@post_type.id, "post_tag", tag.id), class: "btn btn-default btn-xs cama_ajax_request btn_posts", title: "#{cama_pluralize_text(@post_type.decorate.the_title)}-#{tag.slug.to_s.titleize}" if @post_type.present? %>
41
+ <%= link_to raw('<i class="fa fa-pencil"></i>'), {action: :edit, id: tag.id }, class: "btn btn-default btn-xs cama_ajax_request btn_edit", title: "#{t('camaleon_cms.admin.button.edit')}" %>
42
+ <%= link_to raw('<i class="fa fa-times"></i>'), { action: :destroy, id: tag.id }, method: :delete, data: { confirm: t('camaleon_cms.admin.message.delete') }, class: "btn btn-danger btn-xs cama_ajax_request btn_del", title: "#{t('camaleon_cms.admin.button.delete')}" unless tag.get_option('not_deleted', false) %>
43
43
  </td>
44
44
  </tr>
45
45
  <% end %>
@@ -5,6 +5,7 @@
5
5
  <h4 class="pull-left">
6
6
  <%= t('camaleon_cms.admin.page_title.list_of', post_type: @post_type.the_title) %>
7
7
  <b>(slug = <%= @post_type.the_slug %>)</b> <%= link_to("<i class='fa fa-eye'></i> #{t("camaleon_cms.common.visit")}".html_safe, @post_type.the_url, class: 'btn btn-xs', target: '_blank') %>
8
+ <%= link_to raw("<i class='fa fa-pencil'></i> #{t('camaleon_cms.admin.post_type.edit_post_type')}"), edit_cama_admin_settings_post_type_path(@post_type.id), class: "btn btn-xs cama_ajax_request" if can? :manage, :settings %>
8
9
  </h4>
9
10
  <%= link_to raw("<i class='fa fa-plus'></i> #{t('camaleon_cms.admin.post_type.add')} #{@post_type.the_title}"), {action: :new}, class: "btn btn-primary pull-right cama_ajax_request" if can? :create_post, @post_type %>
10
11
  </div>
@@ -49,9 +49,13 @@
49
49
  <%= check_box :options, :permit_create_account, {checked: @site.get_option('permit_create_account', false), class: "icheckbox0"}, "true", "" %>
50
50
  </div>
51
51
  <div class="form-group">
52
- <label for=""><%= t('camaleon_cms.admin.settings.security.captcha_user_register') %></label><br>
52
+ <label for=""><%= t('camaleon_cms.admin.settings.security.captcha_user_register', default: 'Enable captcha on user registration?') %></label><br>
53
53
  <%= check_box :options, :security_captcha_user_register, {checked: @site.security_user_register_captcha_enabled?, class: "icheckbox0"}, "true", "" %>
54
54
  </div>
55
+ <div class="form-group">
56
+ <label for=""><%= t('camaleon_cms.admin.settings.enable_captcha_for_comments', default: 'Enable captcha for anonymous comments?') %></label><br>
57
+ <%= check_box :options, :enable_captcha_for_comments, {checked: @site.is_enable_captcha_for_comments?, class: "icheckbox0"}, "true", "" %>
58
+ </div>
55
59
  <div class="form-group">
56
60
  <label for=""><%= t('camaleon_cms.admin.settings.security.need_validate_email') %></label><br>
57
61
  <%= check_box :options, :need_validate_email, {checked: @site.need_validate_email?, class: "icheckbox0"}, "true", "" %>
@@ -24,7 +24,7 @@
24
24
  <div class="form-group">
25
25
  <label><%= t('camaleon_cms.admin.post_type.icon', default: 'Icon') %></label>
26
26
  <%= text_field_tag "meta[icon]", @post_type.get_option("icon", ''), class: 'form-control', placeholder: 'dashboard' %>
27
- <small><%= t('camaleon_cms.admin.post_type.icons_url_desc', default: 'Please enter any icon name from here: ') %> https://fortawesome.github.io/Font-Awesome/icons/</small>
27
+ <small><%= t('camaleon_cms.admin.post_type.icons_url_desc', default: 'Please enter any icon name from here: ') %> https://fontawesome.com/v4.7.0/icons/</small>
28
28
  </div>
29
29
  <%= args={html: '', post_type: @post_type}; hooks_run('post_type_settings_form', args); raw(args[:html]) %>
30
30
  <hr/>
@@ -1,31 +1,48 @@
1
- <section class="comment-list">
2
- <% if post.the_comments.count > 0 %>
3
- <div class="row">
1
+ <% if post.the_comments.any? || post.can_commented? %>
2
+ <section class="comment-list">
3
+ <% if post.the_comments.any? %>
4
+ <div class="row">
4
5
  <div class="col-md-12">
5
- <h2 class="page-header"><%= ct('comments', default: 'Comments')%></h2>
6
- <section class="comment-list">
7
- <%= render partial: "partials/#{defined?(style2) ? 'comments_list2' : 'comments_list'}", locals: { comments: post.the_comments, children: "" } %>
8
- </section>
6
+ <h2 class="page-header"><%= ct('comments', default: 'Comments') %></h2>
7
+ <section class="comment-list">
8
+ <%= render partial: "partials/#{defined?(style2) ? 'comments_list2' : 'comments_list'}", locals: {comments: post.the_comments, children: ""} %>
9
+ </section>
9
10
  </div>
10
- </div>
11
- <% end %>
11
+ </div>
12
+ <% end %>
12
13
 
13
- <div class="row comment_form_panel">
14
- <div class="col-md-12 col-sm-12">
15
- <h3><%= ct('comment_new', default: 'New Comment')%></h3>
16
- <% if signin? %>
17
- <%= form_for post, url:{action: :save_comment, post_id: post.id}, html: {method: "post", class: "form-comment"} do |f|%>
18
- <%= render partial: "camaleon_cms/flash_messages", locals:{ flash: (flash[:comment_submit] || {}).with_indifferent_access } %>
19
- <div class="form-group">
20
- <textarea id="textarea_comments" name="post_comment[content]" class="form-control counted" placeholder="<%= ct('comment', default: 'Here your comment')%>"></textarea>
21
- </div>
22
- <div class="form-group text-right">
23
- <button type="submit" class="btn btn-info"><%= ct('comment', default: 'Comment')%></button>
24
- </div>
25
- <% end %>
26
- <% else %>
27
- <div class="panel-login-comment"><%= ct('comment_msg', default: 'You must be logged in to post a comment')%> <a class="link-login-comment" href="<%= cama_admin_path %>"><%= ct('login', default: 'Login')%></a></div>
28
- <% end %>
29
- </div>
30
- </div>
31
- </section>
14
+ <% if post.can_commented? %>
15
+ <div class="row comment_form_panel">
16
+ <div class="col-md-12 col-sm-12">
17
+ <h3><%= ct('comment_new', default: 'New Comment') %></h3>
18
+ <% if signin? || current_site.get_option('permit_anonimos_comment', false) %>
19
+ <%= form_for post, url: {action: :save_comment, post_id: post.id}, html: {method: "post", class: "form-comment", id: 'form-comment'} do |f| %>
20
+ <%= render partial: "camaleon_cms/flash_messages", locals: {flash: (flash[:comment_submit] || {}).with_indifferent_access} %>
21
+ <% unless signin? %>
22
+ <div class="form-group">
23
+ <%= text_field_tag 'post_comment[name]', '', class: 'form-control required', placeholder: t('.anonymous_name', default: 'Name') %>
24
+ </div>
25
+ <div class="form-group">
26
+ <%= email_field_tag 'post_comment[email]', '', class: 'form-control required', placeholder: t('.anonymous_email', default: 'Email') %>
27
+ </div>
28
+ <% if current_site.is_enable_captcha_for_comments? %>
29
+ <%= content_tag :div, raw(cama_captcha_tag), class: 'form-group' %>
30
+ <% end %>
31
+ <% end %>
32
+ <div class="form-group">
33
+ <%= text_area_tag 'post_comment[content]', '', class: 'form-control required counted', placeholder: ct('comment', default: 'Here your comment') %>
34
+ </div>
35
+ <div class="form-group text-right">
36
+ <button type="submit" class="btn btn-info"><%= ct('comment', default: 'Comment') %></button>
37
+ </div>
38
+ <% end %>
39
+ <% else %>
40
+ <div class="panel-login-comment"><%= ct('comment_msg', default: 'You must be logged in to post a comment') %>
41
+ <a class="link-login-comment" href="<%= cama_admin_path %>"><%= ct('login', default: 'Login') %></a>
42
+ </div>
43
+ <% end %>
44
+ </div>
45
+ </div>
46
+ <% end %>
47
+ </section>
48
+ <% end %>
@@ -21,7 +21,7 @@
21
21
  <%= raw @post.the_content %>
22
22
  </div>
23
23
  </article>
24
- <%= render partial: 'partials/comments', locals: {post: @post} if @post.can_commented? %>
24
+ <%= render partial: 'partials/comments', locals: {post: @post} %>
25
25
  </div>
26
26
  <div class="col-md-3 single-sidebar">
27
27
  <%= render partial: 'partials/sidebar', locals: {post: @post} %>
@@ -348,6 +348,7 @@ es:
348
348
  filesystem_cdn: "CDN url"
349
349
  filesystem_s3_cloudfront: 'Cloudfront URL'
350
350
  custom_fields_show_shortcodes: 'Mostrar códigos abreviados de los campos personalizados?'
351
+ enable_captcha_for_comments: '¿Activar captcha en los comentarios públicos?'
351
352
  security:
352
353
  captcha_user_register: "¿Activar captcha en el registro de usuarios?"
353
354
  need_validate_email: "¿Es necesario validar el email?"
@@ -332,13 +332,64 @@ de:
332
332
  replace_image: 'Bild ersetzen'
333
333
  save_new_image: 'Neues Bild speichern'
334
334
 
335
+ ru:
336
+ camaleon_cms:
337
+ admin:
338
+ js:
339
+ msg:
340
+ approved: 'Утверждено'
341
+ draft: 'Черновик сохранен'
342
+ updated_success: 'Успішно оновлено'
343
+ edit_menu: 'Разместите каждый элемент в порядке, который вы предпочитаете. Нажмите на значок карандаша, чтобы отредактировать элемент и нажмите значок в форме х, чтобы удалить элемент.'
344
+ delete_item: 'Удалить этот элемент?'
345
+ remove_items_submenu: 'Удалить элемент и его подменю?'
346
+ you_must_upload_image: 'Необходимо загрузить изображение'
347
+ you_must_upload_video: 'Необходимо загрузить видео'
348
+ no_response_fields: 'Нет ответа'
349
+ you_must_upload_json_file: 'Необходимо загрузить файл в формате json'
350
+ no_templates_defined: 'Шаблон не выбран'
351
+ avatar_updated: 'Аватар обновлен'
352
+ form_error: 'Ошибка формы'
353
+ option_title: 'Название опции'
354
+ permalink: 'Постоянная ссылка'
355
+ recover: 'Восстановление...'
356
+ type_contents: 'Тип контента'
357
+ confirm_del: "Вы уверены, что хотите удалить этот элемент?"
358
+ media_title: 'Медиа загрузка'
359
+ pending: 'Ожидание'
360
+ preview: 'Предпросмотр'
361
+ spam: 'Спам'
362
+ view_page: 'Посмотреть страницу'
363
+ view_draft: 'Посмотреть черновик'
364
+ processing: 'Обработка...'
365
+ upload_image: 'Загрузить'
366
+
367
+ button:
368
+ edit: "Редактировать"
369
+ accept: "Принять"
370
+ cancel: "Отменить"
371
+ delete: "Удалить"
372
+ clone: "Копировать"
373
+ add_tag: 'Добавить тэг'
374
+ close: 'Закрыть'
375
+ settings: 'Настройки'
376
+ save: "Сохранить"
377
+ submit: "Сохранить"
378
+ name: "Имя"
379
+ size: "Размер"
380
+ insert: "Вставить"
381
+ url: "URL"
382
+ root: "корень"
383
+ replace_image: 'Изменить изображение'
384
+ save_new_image: 'Сохранить новое изображение'
385
+
335
386
  uk:
336
387
  camaleon_cms:
337
388
  admin:
338
389
  js:
339
390
  msg:
340
391
  approved: 'Затверджено'
341
- draft: 'Ескіз збережена'
392
+ draft: 'Ескіз збережено'
342
393
  updated_success: 'Успішно оновлено'
343
394
  edit_menu: 'Розмістіть кожен елемент у порядку, якому ви віддаєте перевагу. Натисніть на значок олівця, щоб відредагувати елемент і натисніть значок у формі х, щоб видалити елемент.'
344
395
  delete_item: 'Дійсно хочете видалити цей елемент?'
@@ -353,10 +404,10 @@ uk:
353
404
  option_title: 'Назва опції'
354
405
  permalink: 'Постійне посилання'
355
406
  recover: 'Відновлення...'
356
- type_contents: 'Тиа вмісту'
407
+ type_contents: 'Тип вмісту'
357
408
  confirm_del: "Ви впевнені, що чочете видалити цей елемент?"
358
409
  media_title: 'Медіа-завантажувач'
359
- pending: 'Очікує '
410
+ pending: 'Очікує'
360
411
  preview: 'Перегляд'
361
412
  spam: 'Спам'
362
413
  view_page: 'Переглянути сторінку'
@@ -1,5 +1,6 @@
1
1
  ru:
2
2
  camaleon_cms:
3
+ see_intro: "Посмотреть подсказки"
3
4
  welcome_message: "Добро пожаловать в Camaleon CMS"
4
5
  page_not_exist: "<h1>ой...</h1><h5>Страница, которую вы ищете, не существует.</h5>"
5
6
  page_error_500: "<h1>ой...</h1><h5>Ошибка 500 Внутренняя ошибка сервера. Пожалуйста, свяжитесь с администратором.</h5>"
@@ -13,6 +14,7 @@ ru:
13
14
  add_new_field: 'Добавить новое поле'
14
15
  add_option: 'Добавить опцию'
15
16
  add_menu: 'Добавить в меню'
17
+ add_new_group: 'Добавить новую группу'
16
18
  add_widget: 'Добавить виджет'
17
19
  accept: 'Принять'
18
20
  add_folder: 'Добавить папку'
@@ -49,9 +51,9 @@ ru:
49
51
  select_file: 'Выберите файл'
50
52
  select_none: 'Выбрать ничего'
51
53
  sign_up: 'Зарегистрироваться'
52
- submit: 'Отправить'
54
+ submit: 'Сохранить'
53
55
  settings: 'Настройки'
54
- sortable: 'Сортируемый'
56
+ sortable: 'Сортировка'
55
57
  update: 'Обновить'
56
58
  update_menu: 'Обновить меню'
57
59
  upload_audio: 'Загрузить Аудио'
@@ -59,7 +61,8 @@ ru:
59
61
  upload_image: 'Загрузить изображение'
60
62
  upload_icon: 'Загрузить Иконку'
61
63
  upload_video: 'Загрузить видео'
62
- view_draft: 'Посмотреть эскиз'
64
+ drag_drop: 'Перетянуть файлы'
65
+ view_draft: 'Посмотреть черновик'
63
66
  view_page: 'Просмотр страницы'
64
67
  yes: 'Да'
65
68
  out_yes: 'Да'
@@ -113,6 +116,14 @@ ru:
113
116
  field_attrs: 'Атрибуты полей'
114
117
  website: 'Вебсайт'
115
118
  multiple_choice: 'Radio Button'
119
+ image_dimension: 'Размеры изображения'
120
+ image_dimension_descr: 'Обрезать изображение по указанному размеру (ширина
121
+ и высота), выборка: 400x300 <br> Возможные значения: 400x300 | 400x |
122
+ x300 |? 400x? 500 | 1400x (? => Max, empty => auto)'
123
+ image_versions: 'Варианты изображений'
124
+ image_versions_descr: 'Создание дополнительных нескольких версий загруженного
125
+ изображения, например: 300x300, 505x350 ==> Создаст два дополнительных
126
+ изображения с этими параметрами'
116
127
 
117
128
 
118
129
  login:
@@ -386,8 +397,8 @@ ru:
386
397
  appearance: 'Внешний вид'
387
398
  comments: 'Комментарии'
388
399
  content: 'Содержание'
389
- contents: 'Содержании'
390
- content_groups: 'Группы содержании'
400
+ contents: 'Содержание'
401
+ content_groups: 'Группы содержания'
391
402
  custom_fields: 'Пользовательские поля'
392
403
  dashboard: 'Панель управления'
393
404
  general_site: 'Главный сайт'
@@ -416,14 +427,14 @@ ru:
416
427
  error: 'Сайт не найден'
417
428
  created: 'Сайт был создан.'
418
429
  updated: 'Сайт был обновлен.'
419
- deleted: 'Правильно удален'
430
+ deleted: 'Удален'
420
431
  enter_key_domain: 'Введите ключевое слово или домен'
421
432
  enter_key_domain_empty: 'Введите ключевое слово (site2) или домен (my_domain.com). Ключевое слово будет вашим поддоменом.'
422
433
  signin:
423
434
  message:
424
435
  enter_username_password: 'Вы должны ввести имя пользователя и / или пароль'
425
436
  combination_username_password_invalid: 'Сочетание имени пользователя / пароля недействительно.'
426
- success_user: 'Удачно пользователь'
437
+ success_user: 'Добро пожаловать!'
427
438
  table:
428
439
  actions: 'Действия'
429
440
  attribute: 'Атрибут'
@@ -440,7 +451,7 @@ ru:
440
451
  description: 'Описание'
441
452
  dimensions: 'Размеры'
442
453
  display_objects: 'Показать объекты'
443
- draft: 'Эскиз'
454
+ draft: 'Черновик'
444
455
  email: 'Эл. почта'
445
456
  e_mail: 'Эл. почта'
446
457
  email_address: 'Адрес электронной почты'
@@ -468,14 +479,14 @@ ru:
468
479
  linkedin: 'Linkedin'
469
480
  login: 'Вход'
470
481
  logo: 'Логотип'
471
- manage_category: 'Управление Категорией'
472
- manage_content: 'Управление Контентента'
473
- manage_picture: 'Управление Изображения'
482
+ manage_category: 'Управление категориями'
483
+ manage_content: 'Включить описание'
484
+ manage_picture: 'Управление изображениями'
474
485
  manage_seo: 'Управление SEO?'
475
- manage_summary: 'Управление Описания'
476
- manage_tags: 'Управление Тэгами'
477
- manage_template: 'Управление Шаблоном'
478
- manage_layout: 'Управление Макетом'
486
+ manage_summary: 'Включить краткое описание'
487
+ manage_tags: 'Управление тэгами'
488
+ manage_template: 'Управление шаблоном'
489
+ manage_layout: 'Управление макетом'
479
490
  modified: 'Изменен'
480
491
  multiple_field_int: 'Несколько полей?'
481
492
  required_field_int: 'Обязательное поле?'
@@ -501,12 +512,12 @@ ru:
501
512
  qty: 'Количество'
502
513
  quick_info: 'Краткая информация'
503
514
  registration: 'Регистрация'
504
- repeat_new: 'Повторить новый'
515
+ repeat_new: 'Повторить'
505
516
  role: 'Роль'
506
517
  slogan: 'Слоган'
507
- slug: 'Slug'
518
+ slug: 'Символьный код'
508
519
  short_code: 'Краткий код'
509
- site_name: 'Название Сайта'
520
+ site_name: 'Название сайта'
510
521
  size: 'Размер'
511
522
  social: 'Социальня сеть'
512
523
  skype: 'Skype'
@@ -524,8 +535,8 @@ ru:
524
535
  visibility: 'Видимость'
525
536
  page_404: 'Страница 404'
526
537
  youtube: 'Youtube'
527
- more_actions: 'Больше действии'
528
- more_actions_info: 'Больше действии...'
538
+ more_actions: 'Больше действий'
539
+ more_actions_info: 'Больше действий...'
529
540
  shorcodes: "Shortcodes"
530
541
  themes:
531
542
  footer_copyright: 'Footer Copyright'
@@ -564,7 +575,7 @@ ru:
564
575
  others_permissions: 'Другие разрешения'
565
576
  profile: 'Профиль'
566
577
  slogan: 'Слоган'
567
- type_contents: 'Тип Контента'
578
+ type_contents: 'Тип контента'
568
579
  user_roles: 'Роли пользователей'
569
580
  roles_values:
570
581
  comments: 'Комментарии'
@@ -601,7 +612,7 @@ ru:
601
612
  manage_categories: 'Разрешение на создание, редактирование и удаление категории'
602
613
  manage_tags: 'Разрешение на создание, редактирование и удаление тегов постов'
603
614
  validate:
604
- required: 'Это поле обязательно к заполнению.'
615
+ required: 'Это поле обязательно для заполнения.'
605
616
  remote: 'Пожалуйста, исправьте это поле.'
606
617
  email: 'Пожалуйста, введите правильный адрес электронной почты.'
607
618
  url: 'Пожалуйста введите правильный URL.'
@@ -640,10 +651,10 @@ ru:
640
651
  error_deleted: "Боковая панель удалена."
641
652
  intro:
642
653
  profile: "Здесь вы можете увидеть настройки вашего профиля."
643
- content: "Этот блок содержит все группы контента вашего сайта. Каждый контент может иметь различную структуру, которых можно настроить в Настройки => Группа контентов"
654
+ content: "Этот блок содержит все группы контента вашего сайта. Каждый контент может иметь различную структуру, их можно настроить в Настройки => Группа контентов"
644
655
  #dashboard: "In this section you can see "
645
656
  media: "В этом разделе, вы можете управлять доступными медиа файлами"
646
- comments: "В этом разделе вы можете управлять всеми комментариями ваших контентов"
657
+ comments: "В этом разделе вы можете управлять всеми комментариями вашего контента"
647
658
  appearance: "Управлять всей информацией, связанной с Public Interface"
648
659
  themes: "В этом разделе вы можете выбрать нужную тему (Public Interface)"
649
660
  widgets: "Этот модуль позволяет вам управлять вашими виджетами и вставлять код на любой контент."
@@ -653,7 +664,7 @@ ru:
653
664
  settings: "В этом разделе вы можете найти все конфигурации сайта"
654
665
  gral_site: "В этом разделе вы можете настроить все параметры вашего сайта и текущую тему"
655
666
  sites: "Этот модуль позволяет вам управлять под сайтами (Видимио только для главного сайта). Проверте /config/system.json чтобы настроить параметры."
656
- custom_fields: "Этот раздел позволяет вам расширять ваши контент и темы, добавляя новые поля."
657
- post_type: "Этот модуль позволяет вам управлять вашими группами контентов без программирования."
658
- languages: "Этот модуль позволяет вам управлять всеми языками для вашего сайта. Также вы можете настроить язык для вашего админ-панели."
659
- shortcodes: "В этом разделе вы можете увидеть все доступные shortcodes для использования в ваших контентах."
667
+ custom_fields: "Этот раздел позволяет вам расширять ваш контент и темы, добавляя новые поля."
668
+ post_type: "Этот модуль позволяет вам управлять вашими группами контента без программирования."
669
+ languages: "Этот модуль позволяет вам управлять всеми языками для вашего сайта. Также вы можете настроить язык для вашей админ-панели."
670
+ shortcodes: "В этом разделе вы можете увидеть все доступные shortcodes для использования в вашем контенте."
@@ -0,0 +1,17 @@
1
+ class CreateMedia < CamaManager.migration_class
2
+ def change
3
+ create_table "#{PluginRoutes.static_system_info["db_prefix"]}media" do |t|
4
+ t.references :site, index: true
5
+ t.string :name, index: true
6
+ t.boolean :is_folder, index: true, default: false
7
+ t.string :folder_path, index: true
8
+ t.string :file_size
9
+ t.string :dimension, default: ''
10
+ t.string :file_type
11
+ t.string :url
12
+ t.string :thumb
13
+ t.boolean :is_public, default: true
14
+ t.timestamps
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module CamaleonCms
2
- VERSION = '2.4.5.5'
2
+ VERSION = '2.4.5.7'
3
3
  end
@@ -93,6 +93,14 @@ class String
93
93
  self.gsub(/(\/){2,}/, "/")
94
94
  end
95
95
 
96
+ # fix file media keys: avoid duplicated slashes and force to start with slash
97
+ def cama_fix_media_key
98
+ res = self.gsub('../', '/').gsub('./', '/').gsub(/(\/){2,}/, "/")
99
+ res = "/#{res}" unless res.start_with?('/')
100
+ res = res.slice(0...-1) if res.end_with?('/') && res.length > 1
101
+ res
102
+ end
103
+
96
104
  def cama_fix_filename
97
105
  # Sanitize the filename, to prevent hacking
98
106
  # https://github.com/carrierwaveuploader/carrierwave/blob/6a1445e0daef29a5d4f799a016359b62d82dbc24/lib/carrierwave/sanitized_file.rb#L322