camaleon_cms 2.1.1.4 → 2.1.2.0

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 (125) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -3
  3. data/app/apps/plugins/contact_form/contact_form_helper.rb +3 -44
  4. data/app/apps/plugins/contact_form/contact_form_html_helper.rb +1 -1
  5. data/app/apps/plugins/contact_form/views/contact_form/{_submission.html.erb → _email_content.html.erb} +0 -0
  6. data/app/apps/themes/camaleon_first/views/index.html.erb +1 -1
  7. data/app/apps/themes/default/views/category.html.erb +1 -1
  8. data/app/apps/themes/default/views/page.html.erb +1 -1
  9. data/app/apps/themes/default/views/partials/_comments.html.erb +5 -5
  10. data/app/apps/themes/default/views/post.html.erb +1 -1
  11. data/app/apps/themes/default/views/post_tag.html.erb +1 -1
  12. data/app/apps/themes/default/views/post_type.html.erb +1 -1
  13. data/app/apps/themes/default/views/search.html.erb +2 -2
  14. data/app/apps/themes/new/views/category.html.erb +1 -1
  15. data/app/apps/themes/new/views/page.html.erb +1 -1
  16. data/app/apps/themes/new/views/post_tag.html.erb +1 -1
  17. data/app/apps/themes/new/views/post_type.html.erb +1 -1
  18. data/app/apps/themes/new/views/search.html.erb +2 -2
  19. data/app/assets/javascripts/camaleon_cms/admin/_actions.js +1 -1
  20. data/app/assets/javascripts/camaleon_cms/admin/{bootstrap-datepicker.js → _bootstrap-datepicker.js} +0 -0
  21. data/app/assets/javascripts/camaleon_cms/admin/_bootstrap-select.js +7 -0
  22. data/app/assets/javascripts/camaleon_cms/admin/_custom_fields.js +9 -0
  23. data/app/assets/javascripts/camaleon_cms/admin/admin-manifest.js +2 -1
  24. data/app/assets/javascripts/camaleon_cms/admin/jquery.validate.js +3 -1
  25. data/app/assets/javascripts/camaleon_cms/admin/nav_menu.js.coffee +125 -0
  26. data/app/assets/javascripts/camaleon_cms/admin/uploader/_media_manager.js.coffee +53 -23
  27. data/app/assets/javascripts/camaleon_cms/admin/user_profile.js +23 -29
  28. data/app/assets/stylesheets/camaleon_cms/admin/{bootstrap-datepicker.css.scss → _bootstrap-datepicker.css.scss} +0 -0
  29. data/app/assets/stylesheets/camaleon_cms/admin/_bootstrap-select.css +6 -0
  30. data/app/assets/stylesheets/camaleon_cms/admin/admin-manifest.css +2 -3
  31. data/app/assets/stylesheets/camaleon_cms/admin/colorpicker.css.scss +9 -8
  32. data/app/assets/stylesheets/camaleon_cms/admin/uploader/_uploadfile.css.scss +1 -12
  33. data/app/controllers/camaleon_cms/admin/appearances/nav_menus_controller.rb +102 -81
  34. data/app/controllers/camaleon_cms/admin/media_controller.rb +8 -25
  35. data/app/controllers/camaleon_cms/admin_controller.rb +1 -1
  36. data/app/controllers/camaleon_cms/camaleon_controller.rb +24 -0
  37. data/app/controllers/camaleon_cms/frontend_controller.rb +0 -1
  38. data/app/decorators/camaleon_cms/application_decorator.rb +5 -8
  39. data/app/decorators/camaleon_cms/post_decorator.rb +5 -5
  40. data/app/decorators/camaleon_cms/post_type_decorator.rb +2 -5
  41. data/app/decorators/camaleon_cms/site_decorator.rb +12 -0
  42. data/app/decorators/camaleon_cms/term_taxonomy_decorator.rb +1 -1
  43. data/app/helpers/camaleon_cms/admin/application_helper.rb +8 -1
  44. data/app/helpers/camaleon_cms/admin/custom_fields_helper.rb +17 -16
  45. data/app/helpers/camaleon_cms/admin/menus_helper.rb +1 -1
  46. data/app/helpers/camaleon_cms/camaleon_helper.rb +2 -2
  47. data/app/helpers/camaleon_cms/captcha_helper.rb +15 -14
  48. data/app/helpers/camaleon_cms/email_helper.rb +7 -3
  49. data/app/helpers/camaleon_cms/frontend/nav_menu_helper.rb +7 -1
  50. data/app/helpers/camaleon_cms/html_helper.rb +1 -1
  51. data/app/helpers/camaleon_cms/site_helper.rb +6 -15
  52. data/app/helpers/camaleon_cms/uploader_helper.rb +31 -187
  53. data/app/mailers/camaleon_cms/html_mailer.rb +4 -8
  54. data/app/models/camaleon_cms/custom_field_group.rb +1 -0
  55. data/app/models/camaleon_cms/nav_menu.rb +1 -20
  56. data/app/models/camaleon_cms/nav_menu_item.rb +13 -0
  57. data/app/models/camaleon_cms/post.rb +1 -1
  58. data/app/models/camaleon_cms/post_type.rb +8 -7
  59. data/app/models/camaleon_cms/site.rb +22 -2
  60. data/app/models/camaleon_cms/user.rb +2 -1
  61. data/app/models/concerns/camaleon_cms/custom_fields_read.rb +21 -29
  62. data/app/models/concerns/camaleon_cms/metas.rb +4 -3
  63. data/app/uploaders/camaleon_cms_aws_uploader.rb +81 -0
  64. data/app/uploaders/camaleon_cms_local_uploader.rb +84 -0
  65. data/app/uploaders/camaleon_cms_uploader.rb +146 -0
  66. data/app/views/camaleon_cms/admin/appearances/nav_menus/_custom_fields.html.erb +3 -5
  67. data/app/views/camaleon_cms/admin/appearances/nav_menus/_external_menu.html.erb +7 -6
  68. data/app/views/camaleon_cms/admin/appearances/nav_menus/_form.html.erb +13 -0
  69. data/app/views/camaleon_cms/admin/appearances/nav_menus/_left_menu_items.html.erb +77 -0
  70. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_items.html.erb +18 -0
  71. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_items_list.html.erb +12 -0
  72. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_options.html.erb +21 -0
  73. data/app/views/camaleon_cms/admin/appearances/nav_menus/index.html.erb +5 -98
  74. data/app/views/camaleon_cms/admin/media/_files_list.html.erb +2 -7
  75. data/app/views/camaleon_cms/admin/media/_render_file_item.html.erb +28 -26
  76. data/app/views/camaleon_cms/admin/media/_render_folder_item.html.erb +14 -12
  77. data/app/views/camaleon_cms/admin/media/index.html.erb +23 -22
  78. data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +4 -5
  79. data/app/views/camaleon_cms/admin/posts/form.html.erb +1 -0
  80. data/app/views/camaleon_cms/admin/sessions/forgot.html.erb +6 -6
  81. data/app/views/camaleon_cms/admin/sessions/login.html.erb +7 -7
  82. data/app/views/camaleon_cms/admin/sessions/register.html.erb +8 -8
  83. data/app/views/camaleon_cms/admin/settings/_configuration_settings.html.erb +30 -6
  84. data/app/views/camaleon_cms/admin/settings/_email_settings.html.erb +26 -23
  85. data/app/views/camaleon_cms/admin/settings/_file_system_settings.html.erb +25 -20
  86. data/app/views/camaleon_cms/admin/settings/_media_settings.html.erb +10 -0
  87. data/app/views/camaleon_cms/admin/settings/custom_fields/_get_items.html.erb +2 -3
  88. data/app/views/camaleon_cms/admin/settings/custom_fields/_render.html.erb +2 -2
  89. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_audio.html.erb +1 -1
  90. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_colorpicker.html.erb +2 -2
  91. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_date.html.erb +1 -1
  92. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_field_attrs.html.erb +2 -2
  93. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_file.html.erb +1 -1
  94. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_image.html.erb +1 -1
  95. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_video.html.erb +1 -1
  96. data/app/views/camaleon_cms/admin/settings/post_types/_form.html.erb +2 -2
  97. data/app/views/camaleon_cms/admin/settings/post_types/index.html.erb +1 -1
  98. data/app/views/camaleon_cms/admin/settings/site.html.erb +11 -13
  99. data/app/views/camaleon_cms/admin/settings/sites/index.html.erb +5 -3
  100. data/app/views/camaleon_cms/admin/users/form.html.erb +14 -22
  101. data/app/views/camaleon_cms/default_theme/category.html.erb +1 -1
  102. data/app/views/camaleon_cms/default_theme/partials/_comments.html.erb +5 -5
  103. data/app/views/camaleon_cms/default_theme/partials/_search_form.html.erb +1 -1
  104. data/app/views/camaleon_cms/default_theme/partials/_sidebar.html.erb +4 -4
  105. data/app/views/camaleon_cms/default_theme/post_tag.html.erb +1 -1
  106. data/app/views/camaleon_cms/default_theme/post_type.html.erb +1 -1
  107. data/app/views/camaleon_cms/default_theme/search.html.erb +1 -1
  108. data/app/views/camaleon_cms/default_theme/single.html.erb +1 -1
  109. data/config/locales/camaleon_cms/admin/en.yml +1 -1
  110. data/config/locales/camaleon_cms/admin/es.yml +36 -0
  111. data/config/locales/camaleon_cms/common.yml +4 -2
  112. data/config/routes/admin.rb +13 -7
  113. data/config/routes/frontend.rb +9 -7
  114. data/config/system.json +1 -0
  115. data/lib/camaleon_cms/engine.rb +1 -1
  116. data/lib/camaleon_cms/version.rb +1 -1
  117. data/lib/ext/string.rb +12 -0
  118. data/lib/generators/camaleon_cms/gem_plugin_generator.rb +1 -1
  119. data/lib/plugin_routes.rb +1 -1
  120. metadata +17 -24
  121. data/app/assets/javascripts/camaleon_cms/admin/bootstrap-select.js +0 -1022
  122. data/app/assets/javascripts/camaleon_cms/admin/nav-menu.js +0 -177
  123. data/app/assets/stylesheets/camaleon_cms/admin/nav-menu.css.scss +0 -33
  124. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_form.html.erb +0 -36
  125. data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_list.html.erb +0 -22
@@ -1,177 +0,0 @@
1
- //function do_add_item_menu(type, link, text, parent_id, extra_html)
2
- function do_add_item_menu(data){
3
- data = $.extend({extra_html: '', parent_id: 0, id: false},data);
4
- var text = $.trim(data.text);
5
- var type = data.type;
6
- var link = data.link ? data.link.toString() : "";
7
- var parent_id = data.parent_id;
8
- var extra_html = data.extra_html;
9
- var item_id = data.item_id;
10
- var id = data.id ? data.id : $("#nestable .dd-item").length + 1;
11
-
12
- var link_data = '';
13
-
14
- if (type == "post" || type == "category"){
15
- link_data = '<a class="text-edit" title="'+I18n("button.edit")+'" target="_blank" href="'+data.url_edit+'" rel="1"><i class="fa fa-edit"></i></a>'
16
- }else if(type == "external"){
17
- link_data = '<a class="text-edit" title="'+I18n("button.edit")+'" href="'+data.url_content+'" onclick="do_edit_menu(this); return false;" rel="1"><i class="fa fa-edit"></i></a>'
18
- }else{
19
-
20
- }
21
- // custom fields icon
22
- if(main_menus_panel.attr("data-fields_support") == "true") link_data += '<a class="text-edit" title="'+I18n("button.settings")+'" href="'+data.url_content+'" onclick="do_settings_menu(this); return false;" rel="1"><i class="fa fa-cog"></i></a>';
23
-
24
- var item = $('<li class="dd-item dd3-item" data-type="'+type+'" data-id="'+id+'" data-item_id="'+item_id+'" data-parent="'+(parent_id ? parent_id : "")+'"><div class="dd-handle dd3-handle"></div> <div class="dd3-content"><span>'+text + "</span> " + extra_html +' <span class="label">'+type+'</span> '+ link_data +' <a href="#" onclick="do_delete_menu(this); return false;" class="text-danger" title="'+I18n("button.delete")+'"><i class="fa fa-times-circle"></i></a> </div></li>');
25
- item.attr("data-fields", data.fields).attr("data-label", text).attr("data-link", link);
26
- if(parent_id > 0)
27
- {
28
- var parent = $("#nestable").find("*[data-id='"+parent_id+"']");
29
- if(!parent.children(".dd-list").size())
30
- parent.append("<ol class='dd-list'></ol>");
31
- parent.children(".dd-list").append(item);
32
- }else
33
- $("#nestable", main_menus_panel).children(".dd-list").append(item);
34
-
35
- $('a.text-danger, a.text-edit', item).tooltip();
36
- return id;
37
- }
38
-
39
- function manage_add_links_to_menu(){
40
- main_menus_panel.find(".add_links_to_menu").click(function(){
41
- var $parent = $(this).parents(".panel");
42
- $parent.find(":checkbox").filter(":checked").each(function()
43
- {
44
- var data = $(this).parents(".class_type").data();
45
- var data_l = $(this).parents(".class_slug").data();
46
-
47
- $(this).removeAttr("checked");
48
- // do_add_item_menu(data.type, $(this).val(), $(this).parent().text());
49
- do_add_item_menu({type: data.type, link: $(this).val(), url_edit: data_l.post_link_edit, text: $(this).parent().text()});
50
- });
51
-
52
- return false;
53
- });
54
- }
55
-
56
- function manage_external_links(){
57
- main_menus_panel.find("form.form-custom-link").submit(function(){
58
- var f = $(this);
59
- if(!f.valid()) return false;
60
- do_add_item_menu({type: 'external', link: f.find("#external_url").val(), text: f.find("#external_label").val(), url_content: RENDER_FORM});
61
- f[0].reset();
62
- setTimeout(function(){
63
- f.find("input:last").focus();
64
- f.find(".has-error").removeClass("has-error").end().find("label.error").remove();
65
- }, 100);
66
- return false;
67
- });
68
-
69
- // custom menus
70
- main_menus_panel.find(".add_links_custom_to_menu").click(function(){
71
- var $parent = $(this).parents(".panel");
72
- $parent.find(":checkbox").filter(":checked").each(function()
73
- {
74
- var data = $(this).parents(".class_type").data();
75
- var data_l = $(this).parents(".class_slug").data();
76
- do_add_item_menu({type: 'external', link: $(this).val(), text: $(this).parent().text(), url_content: RENDER_FORM});
77
- $(this).removeAttr("checked");
78
- });
79
- return false;
80
- });
81
- }
82
-
83
- function do_delete_menu(link){
84
- var msg = $(link).closest("li.dd-item").children("ol").size()? I18n("msg.remove_items_submenu") : I18n("msg.delete_item");
85
- if (confirm(msg)) {
86
- $(link).closest("li.dd-item").remove();
87
- } else {
88
- false;
89
- }
90
- }
91
-
92
- // edit form for custom links
93
- function do_edit_menu(link){
94
- var li = $(link).closest("li");
95
- open_modal({title: "Edit Menu", url: RENDER_FORM.replace('-9999', li.attr('data-item_id')), mode: "ajax", callback: function(modal){
96
- modal.find(".panel-footer").html("<button type='submit' class='btn btn-primary'>Update</button>");
97
- var form = modal.find("form");
98
- form.find("#external_label").val(li.data("label"));
99
- form.find("#external_url").val(li.data("link"));
100
- init_form_validations(form);
101
- form.submit(function(){
102
- li.data("label", form.find("#external_label").val());
103
- li.data("link", form.find("#external_url").val());
104
- li.children(".dd3-content").children("span:first").html(form.find("#external_label").val());
105
- modal.modal("hide");
106
- return false;
107
- });
108
- }});
109
- return;
110
- }
111
-
112
- // edit form for custom fields
113
- function do_settings_menu(link){
114
- var li = $(link).closest("li");
115
- open_modal({id: 'menu_item_'+li.attr('data-id'), title: "Configuration Menu", url: RENDER_FORM.replace('-9999', li.attr('data-item_id'))+"&custom_fields=true", mode: "ajax", callback: function(modal){
116
- modal.attr('data-skip_destroy', true);
117
- var form = modal.find("form");
118
- form.submit(function(){
119
- if(!form.valid()) return false;
120
- form.find(".translate-item").trigger("change_in");
121
- li.attr("data-fields", JSON.stringify(form.serializeObject().field_options));
122
- modal.modal("hide");
123
- return false;
124
- });
125
- }});
126
- return;
127
- }
128
-
129
- // render the menu with saved items
130
- function render_menu(items){
131
- $.each(items, function (i, item) {
132
- var r_id = do_add_item_menu({
133
- item_id: item.id,
134
- type: item.type,
135
- link: item.link,
136
- url_edit: item.url_edit,
137
- text: item.label,
138
- parent_id: item.parent,
139
- url_content: RENDER_FORM,
140
- fields: item.fields
141
- });
142
- });
143
- $('#nestable', main_menus_panel).nestable({maxDepth: 20}).on('change', function (a) {
144
- null
145
- });
146
-
147
- manage_external_links(main_menus_panel);
148
- manage_add_links_to_menu();
149
-
150
- main_menus_panel.find(".disabled *").unbind().click(function (event) {
151
- return false;
152
- });
153
-
154
- $("#menu_items .tabs .nav").each(function () {
155
- if ($(this).children("li").size() == 1) {
156
- $(this).children("li").remove();
157
- }
158
- });
159
-
160
- // change menu selector
161
- $("#menu_items #menu").change(function(){ $(this).closest('form').submit(); });
162
-
163
- // save menu items (main form)
164
- $("#menu_form").submit(function () {
165
- var menu_data = $('#nestable').nestable("serialize").length == 0 ? [] : $('#nestable').nestable("serialize");
166
- showLoading();
167
- $.post($(this).attr("action"), $.extend({menu_data: menu_data}, $(this).serializeObject()), function (res) {
168
- if (res.new) {
169
- location.href = res.redirect;
170
- } else {
171
- hideLoading();
172
- main_menus_panel.flash_message(I18n("msg.updated_success"), "success");
173
- }
174
- });
175
- return false;
176
- });
177
- }
@@ -1,33 +0,0 @@
1
- #menu_content{
2
- #menu_form{
3
- .panel-heading{
4
- overflow: hidden;
5
- label{
6
- width: auto; float:left;
7
- margin: 7px 2px 0 0;
8
- }
9
- input.menu-input-title{
10
- width: 32%; float:left; margin-left: 8px;
11
- margin-right: 8px;
12
- }
13
- input.menu-input-slug{
14
- width: 26%; float:left; margin-left: 8px;
15
- }
16
- }
17
- .panel-body{
18
- min-height: 250px;
19
- #nestable{
20
- .label{
21
- color: #333;
22
- }
23
- }
24
- }
25
- }
26
- #menu_items{
27
- .tab-pane{
28
- max-height: 300px;
29
- overflow: auto;
30
- }
31
- }
32
-
33
- }
@@ -1,36 +0,0 @@
1
- <div class="col-md-7">
2
- <%= form_for @nav_menu, as: "nav_menu", url: {action: :save}, html: {method: "post", id: "menu_form"} do |f| %>
3
- <%= f.hidden_field :id %>
4
- <!-- START PANEL WITH CONTROL CLASSES -->
5
- <div class="panel panel-info">
6
- <div class="panel-heading">
7
- <div class="row">
8
- <div class="col-md-12">
9
- <label><%= t('camaleon_cms.admin.menus.name_menu') %>:</label>
10
- <%= f.text_field :name, class: 'form-control menu-input-title' %>
11
- <label>Slug:</label>
12
- <%= f.text_field :slug, class: 'form-control menu-input-slug slug', 'data-parent' => 'nav_menu_name' %>
13
- <% if @nav_menu.new_record? %>
14
- <button class="btn btn-primary pull-right" type=""><%= @nav_menu.new_record? ? t('camaleon_cms.admin.button.create_menu') : t('camaleon_cms.admin.button.update_menu') %></button>
15
- <% end %>
16
- </div>
17
- </div>
18
- </div>
19
- <% unless @nav_menu.new_record? %>
20
- <div class="panel-body">
21
- <div class="callout callout-info"><%= t('camaleon_cms.admin.message.add_menus') %></div>
22
- <div class="dd" id="nestable">
23
- <ol class="dd-list"></ol>
24
- </div>
25
- </div>
26
- <div class="panel-footer">
27
- <%= content_tag(:div, (raw @nav_menu.description), class: "callout callout-info") if @nav_menu.description.present? %>
28
- <%= link_to raw("<i class='fa fa-times'></i> #{t('camaleon_cms.admin.button.delete')}"), {action: :menu, id: @nav_menu.id}, method: :delete, data: {confirm: t('camaleon_cms.admin.message.delete')}, class: "btn btn-danger btn-sm pull-left", title: "Delete" unless @nav_menu.new_record? %>
29
- <button class="btn btn-primary btn-sm pull-right" type=""><%= @nav_menu.new_record? ? t('camaleon_cms.admin.button.create_menu') : t('camaleon_cms.admin.button.update_menu') %></button>
30
- </div>
31
- <% end %>
32
-
33
- </div>
34
- <!-- END PANEL WITH CONTROL CLASSES -->
35
- <% end %>
36
- </div>
@@ -1,22 +0,0 @@
1
- <div class="manage-menus panel panel-primary">
2
- <div class="panel-body">
3
- <form action="<%= cama_admin_appearances_nav_menus_menu_path %>" method="get" class="">
4
- <div class="form-group">
5
- <label class="selected-menu" for="menu"><%= t('camaleon_cms.admin.menus.select_edit') %></label>
6
- </div>
7
- <div class="input-group input-group-sm">
8
- <select id="menu" class="select form-control" name="id">
9
- <option value=""><%= t('camaleon_cms.admin.menus.select') %></option>
10
- <% @nav_menus.each do |menu| %>
11
- <option value="<%= menu.id %>" <%= 'selected' if !@nav_menu.new_record? && @nav_menu.id == menu.id %> ><%= menu.name %></option>
12
- <% end %>
13
- </select>
14
- <span class="input-group-btn">
15
- <button class="btn btn-primary btn-flat" type="submit"><%= t('camaleon_cms.admin.menus.select') %></button>
16
- <a class="btn btn-default" href="<%= cama_admin_appearances_nav_menus_menu_path({new: 1}) %>"> <%= t('camaleon_cms.admin.menus.create_new') %></a>
17
- </span>
18
- </div>
19
- </form>
20
- </div>
21
-
22
- </div>