camaleon_cms 1.0.4 → 1.0.5
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/app/assets/javascripts/admin/actions.js +14 -3
- data/app/assets/javascripts/admin/admin-manifest.js +1 -4
- data/app/assets/javascripts/admin/custom_fields.js +2 -2
- data/app/assets/javascripts/admin/data.js +68 -102
- data/app/assets/javascripts/admin/libraries.js +46 -87
- data/app/assets/javascripts/admin/modal.js +15 -3
- data/app/assets/javascripts/admin/post.js +2 -2
- data/app/assets/stylesheets/admin/admin-manifest.css +1 -2
- data/app/assets/stylesheets/admin/custom_admin.css.scss +3 -1
- data/app/controllers/admin/sessions_controller.rb +21 -14
- data/app/controllers/admin/users_controller.rb +7 -4
- data/app/controllers/api/api_controller.rb +28 -0
- data/app/controllers/api/v1/category_controller.rb +7 -0
- data/app/controllers/api/v1/page_controller.rb +8 -0
- data/app/controllers/api/v1/post_controller.rb +8 -0
- data/app/controllers/concerns/frontend_concern.rb +1 -17
- data/app/decorators/category_decorator.rb +1 -1
- data/app/helpers/camaleon_helper.rb +15 -0
- data/app/helpers/html_helper.rb +1 -0
- data/app/helpers/session_helper.rb +18 -3
- data/app/models/site.rb +17 -11
- data/app/views/admin/posts/_sidebar.html.erb +9 -7
- data/app/views/admin/posts/form.html.erb +4 -1
- data/app/views/admin/sessions/register.html.erb +8 -6
- data/app/views/admin/settings/custom_fields/_render.html.erb +3 -2
- data/app/views/admin/settings/custom_fields/fields/audio.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/checkbox.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/checkboxes.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/colorpicker.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/date.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/editor.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/email.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/field_attrs.html.erb +2 -2
- data/app/views/admin/settings/custom_fields/fields/file.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/image.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/numeric.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/phone.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/posts.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/radio.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/select.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/text_area.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/text_box.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/url.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/users.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/video.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/index.html.erb +54 -8
- data/app/views/admin/settings/site.html.erb +170 -151
- data/app/views/admin/users/form.html.erb +19 -23
- data/app/views/default_theme/sitemap.html.erb +19 -0
- data/app/views/default_theme/sitemap.xml.builder +48 -0
- data/app/views/layouts/admin.html.erb +3 -13
- data/app/views/layouts/admin/_footer.html.erb +10 -3
- data/app/views/layouts/admin/_header.html.erb +1 -1
- data/config/initializers/doorkeeper.rb +128 -0
- data/config/initializers/rufus_cron.rb +3 -3
- data/config/initializers/sass.rb +0 -62
- data/config/locales/admin/en.yml +3 -2
- data/config/locales/admin/es.yml +2 -0
- data/config/locales/admin/js.yml +9 -38
- data/config/locales/doorkeeper.en.yml +123 -0
- data/config/routes.rb +12 -0
- data/config/routes/admin.rb +0 -3
- data/db/migrate/20150930115030_doorkeeper_configuration.rb +45 -0
- data/lib/camaleon_cms/engine.rb +2 -0
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/generators/camaleon_cms/gem_plugin_template/app/models/plugins/my_plugin/my_plugin.rb +1 -6
- data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/models/my_plugin.rb +0 -5
- data/lib/generators/ctheme_template/app/apps/themes/my_theme/assets/js/main.js +1 -1
- data/lib/plugin_routes.rb +12 -8
- metadata +38 -46
- data/app/assets/javascripts/admin/grid-editor.js +0 -532
- data/app/assets/javascripts/audio/alert.mp3 +0 -0
- data/app/assets/javascripts/audio/fail.mp3 +0 -0
- data/app/assets/javascripts/jquery-1.11.3.min.js +0 -5
- data/app/assets/stylesheets/admin/grid-editor.css.scss +0 -15
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/css/style.css +0 -84
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/editor_plugin.js +0 -1
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/editor_plugin_src.js +0 -90
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/img/youtube.png +0 -0
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/index.html +0 -86
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/js/scripts.js +0 -1
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/js/scripts_src.js +0 -81
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/en.js +0 -3
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/en_dlg.js +0 -12
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/es.js +0 -3
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/es_dlg.js +0 -12
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/bootstrap.css +0 -2228
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/content.css +0 -189
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/dialog.css +0 -295
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/butt2.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/button-bg.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/buttons.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/down_arrow.gif +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/fade-butt.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/icons.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/items.gif +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/menu-arrow.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/menu-check.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/progress.gif +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/tabs.gif +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/toolbarbg.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/ui.css +0 -1163
- data/app/controllers/admin/grid_editor_controller.rb +0 -55
- data/app/views/admin/grid_editor/form.html.erb +0 -31
- data/app/views/admin/grid_editor/index.html.erb +0 -29
- data/config/sitemap.rb +0 -56
- data/lib/generators/camaleon_cms/gem_theme_template/app/controllers/plugins/my_plugin/admin_controller.rb +0 -8
- data/lib/generators/camaleon_cms/gem_theme_template/app/controllers/plugins/my_plugin/front_controller.rb +0 -8
- data/lib/generators/camaleon_cms/gem_theme_template/app/helpers/plugins/my_plugin/main_helper.rb +0 -22
- data/lib/generators/camaleon_cms/gem_theme_template/app/models/plugins/my_plugin/my_plugin.rb +0 -12
- data/lib/generators/camaleon_cms/gem_theme_template/app/views/plugins/my_plugin/admin/index.html.erb +0 -2
- data/lib/generators/camaleon_cms/gem_theme_template/app/views/plugins/my_plugin/front/index.html.erb +0 -2
- data/lib/generators/camaleon_cms/gem_theme_template/app/views/plugins/my_plugin/layouts/readme.txt +0 -2
- data/lib/generators/camaleon_cms/gem_theme_template/config/camaleon_plugin.json +0 -21
@@ -1,532 +0,0 @@
|
|
1
|
-
jQuery(function(){
|
2
|
-
$.fn.fadeDestroy = function(speed){ $(this).fadeOut(speed, function(){ $(this).remove(); }) }
|
3
|
-
$.fn.isGridEditorContent = function(str){ return str.match(/^\<p\>\[load_libraries/); } // verify is text is a content for grid editor
|
4
|
-
$.fn.skipGridEditorLibraries = function(str){ return str.replace(/^\<p\>\[load_libraries(.*)\]\<\/p\>/, ""); } // remove libraries shortcode text from grid editor
|
5
|
-
$.fn.gridEditor_extra_rows = [];
|
6
|
-
$.fn.gridEditor_libraries = [];
|
7
|
-
//********************** editor content options **********************//
|
8
|
-
$.fn.gridEditor_options = {
|
9
|
-
text: {title: "Text", libraries: [], callback: grid_text_builder},
|
10
|
-
editor: {title: "Editor", libraries: [], callback: grid_editor_builder},
|
11
|
-
tab: {title: "Tabs", callback: grid_tab_builder},
|
12
|
-
slider: {title: "Slider", callback: grid_slider_builder},
|
13
|
-
};
|
14
|
-
//********************** end editor content options **********************//
|
15
|
-
|
16
|
-
// grid editor plugin
|
17
|
-
var gridEditor_id = 0;
|
18
|
-
$.fn.gridEditor = function(tinyEditor){
|
19
|
-
gridEditor_id ++;
|
20
|
-
var tinymce_panel = $(tinyEditor.editorContainer).hide();
|
21
|
-
var editor_id = "grid_editor_"+gridEditor_id;
|
22
|
-
var textarea = $(this);
|
23
|
-
if(textarea.prev().hasClass("panel_grid_editor")){ textarea.prev().show(); return textarea; }
|
24
|
-
var tpl_rows = "";
|
25
|
-
$.each({6: 50, 4: 33, 3: 25, 2: 16, 8: 66, 9: 75, 12: 100}, function(k, val){ tpl_rows += '<div class="" data-col="'+k+'" data-col_title="'+val+'%"><div class="grid_sortable_items"></div></div>'; });
|
26
|
-
|
27
|
-
// break line
|
28
|
-
tpl_rows += '<div class="clearfix" data-col_title="Break Line" data-col="12"></div>' + $.fn.gridEditor_extra_rows.join("");
|
29
|
-
|
30
|
-
// tpl options
|
31
|
-
var tpl_options = "";
|
32
|
-
$.each($.fn.gridEditor_options, function(key, item){ tpl_options += '<div class="" data-kind="'+key+'" data-content_title="'+item["title"]+'"><div class="grid_item_content"></div></div>'; });
|
33
|
-
|
34
|
-
// template grid editor
|
35
|
-
var editor = $("<div class='panel_grid_editor' id='"+editor_id+"'>"+
|
36
|
-
"<div class='grid_editor_menu'>"+
|
37
|
-
"<ul class='nav nav-tabs'>"+
|
38
|
-
"<li class='active'><a href='#grid_columns_"+gridEditor_id+"' role='tab' data-toggle='tab'>"+I18n("grid_editor.blocks")+"</a></li>"+
|
39
|
-
"<li class=''><a href='#grid_contents_"+gridEditor_id+"' role='tab' data-toggle='tab'>"+I18n("grid_editor.contents")+"</a></li>"+
|
40
|
-
"<li class=''><a class='btn btn-default clear'>"+I18n("grid_editor.clear")+"</a></li>"+
|
41
|
-
'<li>' +
|
42
|
-
'<a class = "btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">'+I18n("grid_editor.templates")+' <span class="caret"></span> </a>'+
|
43
|
-
'<ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> ' +
|
44
|
-
'<li><a class="list_templates" title="Grid Templates" href = "'+root_url+'/admin/grid_editor" >'+I18n("grid_editor.list")+'</a></li >'+
|
45
|
-
'<li><a class="new_template" title="New Template" href = "'+root_url+'/admin/grid_editor/new" >'+I18n("grid_editor.save_tpl")+'</a></li >'+
|
46
|
-
'</ul> ' +
|
47
|
-
'</li>'+
|
48
|
-
"<li class=''><a href='#' class='toggle_panel_grid'>"+I18n("grid_editor.text_editor")+"</a></li>"+
|
49
|
-
"</ul>"+
|
50
|
-
"<div class='tab-content'>"+
|
51
|
-
"<div role='tabpanel' class='tab-pane active' id='grid_columns_"+gridEditor_id+"'> "+tpl_rows+" </div>"+
|
52
|
-
"<div role='tabpanel' class='tab-pane' id='grid_contents_"+gridEditor_id+"'>"+tpl_options+"</div>"+
|
53
|
-
"</div>"+
|
54
|
-
"</div>"+
|
55
|
-
"<div class='panel_grid_body row'></div>"+
|
56
|
-
"</div>");
|
57
|
-
|
58
|
-
// grid editor export
|
59
|
-
function export_content(editor){
|
60
|
-
var container = $('.panel_grid_body', editor).clone();
|
61
|
-
container.children().each(function(){
|
62
|
-
var col = $(this).removeClass("drg_column btn btn-default ui-draggable ui-draggable-handle ui-draggable-dragging ui-sortable-handle");
|
63
|
-
col.children(".header_box").remove();
|
64
|
-
col.find(".grid_sortable_items").children().each(function(){ //contents
|
65
|
-
$(this).removeClass("drg_item btn btn-default ui-draggable ui-draggable-dragging ui-sortable-handle ui-draggable-handle").children(".header_box").remove();
|
66
|
-
});
|
67
|
-
});
|
68
|
-
var res = container.html();
|
69
|
-
container.remove();
|
70
|
-
return res;
|
71
|
-
}
|
72
|
-
|
73
|
-
// grid editor parser to recover from saved content
|
74
|
-
function parse_content(editor){
|
75
|
-
editor.find(".panel_grid_body").children("div").each(function(){ var col = parse_content_column($(this)); });
|
76
|
-
return editor;
|
77
|
-
}
|
78
|
-
|
79
|
-
// parse column editor
|
80
|
-
// column: content element
|
81
|
-
// skip_options: boolean to add drodown options
|
82
|
-
function parse_content_column(column, skip_options){
|
83
|
-
var html = '<div class="header_box">'+
|
84
|
-
'<a><i class="icon-bar"></i>'+column.attr("data-col_title")+'</a>'+
|
85
|
-
'</div>';
|
86
|
-
var options = "<div class='dropdown'>" +
|
87
|
-
"<a class='dropdown-toggle' data-toggle='dropdown'> <span class='caret'></span></a>" +
|
88
|
-
"<ul class='dropdown-menu auto_with' role='menu'>"+
|
89
|
-
"<li><a class='grid_col_remove' title='Remove' href='#'><i class='fa fa-trash-o'></i> "+I18n("button.delete")+"</a></li>"+
|
90
|
-
"<li><a class='grid_col_clone' title='Clone' href='#'><i class='fa fa-copy'></i> "+I18n("button.clone")+"</a></li>"+
|
91
|
-
"</ul>"+
|
92
|
-
"</div>" ;
|
93
|
-
column.addClass("drg_column btn btn-default");
|
94
|
-
if(column.children(".header_box").length == 0) column.prepend(html);
|
95
|
-
if(!skip_options){
|
96
|
-
column.find('.header_box').append(options);
|
97
|
-
grid_content_manager(column.find(".grid_sortable_items"));
|
98
|
-
column.find(".grid_sortable_items").children().each(function(){ //contents
|
99
|
-
parse_content_content($(this));
|
100
|
-
});
|
101
|
-
}
|
102
|
-
column;
|
103
|
-
}
|
104
|
-
|
105
|
-
// parse column editor
|
106
|
-
// content: content element
|
107
|
-
// skip_options: boolean to add drodown options
|
108
|
-
function parse_content_content(content, skip_options){
|
109
|
-
var html = '<div class="header_box">'+
|
110
|
-
'<a><i class="icon-bar"></i>'+content.attr("data-content_title")+'</a>'+
|
111
|
-
'</div>';
|
112
|
-
var options = "<div class='dropdown'>" +
|
113
|
-
"<a class='dropdown-toggle' data-toggle='dropdown'> <span class='caret'></span></a>" +
|
114
|
-
"<ul class='dropdown-menu auto_with' role='menu'>"+
|
115
|
-
"<li><a class='grid_content_remove' title='Remove' href='#'><i class='fa fa-trash-o'></i> "+I18n("button.delete")+"</a></li>"+
|
116
|
-
"<li><a class='grid_content_clone' title='Clone' href='#'><i class='fa fa-copy'></i> "+I18n("button.clone")+"</a></li>"+
|
117
|
-
"<li><a class='grid_content_edit' title='Edit' href='#'><i class='fa fa-pencil'></i> "+I18n("button.edit")+"</a></li>"+
|
118
|
-
"</ul>"+
|
119
|
-
"</div>";
|
120
|
-
content.addClass("drg_item btn btn-default");
|
121
|
-
if(content.children(".header_box").length == 0) content.prepend(html);
|
122
|
-
if(!skip_options){
|
123
|
-
content.find('.header_box').append(options);
|
124
|
-
}
|
125
|
-
// save used libraries
|
126
|
-
$.fn.gridEditor_libraries = $.merge($.fn.gridEditor_libraries, $.fn.gridEditor_options[content.attr("data-kind")])
|
127
|
-
content;
|
128
|
-
}
|
129
|
-
|
130
|
-
// add editor menu actions
|
131
|
-
function do_editor_menus(editor){
|
132
|
-
// toggle editor menus
|
133
|
-
editor.find(".grid_editor_menu .toggle_panel_grid").click(function(){
|
134
|
-
if(!confirm(I18n("grid_editor.toggle_editor"))) return false;
|
135
|
-
editor.hide();
|
136
|
-
if(editor.data("tiny_backup")) tinyEditor.setContent(editor.data("tiny_backup"));
|
137
|
-
tinymce_panel.show();
|
138
|
-
return false;
|
139
|
-
});
|
140
|
-
editor.find(".grid_editor_menu .clear").click(function(){
|
141
|
-
if(!confirm(I18n("grid_editor.clear_editor"))) return false;
|
142
|
-
editor.find(".panel_grid_body").html("");
|
143
|
-
editor.trigger("auto_save");
|
144
|
-
return false;
|
145
|
-
})
|
146
|
-
editor.find(".grid_editor_menu .list_templates").ajax_modal({callback: function(modal){
|
147
|
-
modal.on("click", ".import_item", function(){
|
148
|
-
if(!confirm($(this).attr("data-message"))) return;
|
149
|
-
modal.modal("hide");
|
150
|
-
showLoading();
|
151
|
-
$.get($(this).attr("href"), function(res){
|
152
|
-
//editor.children(".panel_grid_body").html(res);
|
153
|
-
editor.children(".panel_grid_body").html($.fn.skipGridEditorLibraries(res));
|
154
|
-
parse_content(editor); // recover saved content
|
155
|
-
editor.trigger("auto_save");
|
156
|
-
hideLoading();
|
157
|
-
});
|
158
|
-
return false;
|
159
|
-
});
|
160
|
-
}});
|
161
|
-
|
162
|
-
editor.find(".grid_editor_menu .new_template").ajax_modal({callback: function(modal){
|
163
|
-
modal.find("textarea").val(export_content(editor));
|
164
|
-
}});
|
165
|
-
|
166
|
-
editor.find("#grid_columns_"+gridEditor_id).children().each(function(){ parse_content_column($(this), true) });
|
167
|
-
editor.find("#grid_contents_"+gridEditor_id).children().each(function(){ parse_content_content($(this), true) });
|
168
|
-
|
169
|
-
// if saved content is a grid_editor content, then rebuilt or recover this content
|
170
|
-
if($.fn.isGridEditorContent(textarea.val())){
|
171
|
-
editor.children(".panel_grid_body").html($.fn.skipGridEditorLibraries(textarea.val()));
|
172
|
-
parse_content(editor); // recover saved content
|
173
|
-
}else{
|
174
|
-
editor.data("tiny_backup", tinyEditor.getContent())
|
175
|
-
}
|
176
|
-
|
177
|
-
// trigger auto save changes
|
178
|
-
editor.bind("auto_save", function(){
|
179
|
-
var txt = "<p>[load_libraries data='"+$.fn.gridEditor_libraries.join(",")+"']</p>"+export_content($(this));
|
180
|
-
tinyEditor.setContent(txt);
|
181
|
-
textarea.val(txt).trigger("change_in");
|
182
|
-
});
|
183
|
-
|
184
|
-
// content dropdown options
|
185
|
-
jQuery('.panel_grid_body ', editor).on("click", '.drg_item .grid_content_remove', function (e) {
|
186
|
-
if(confirm(I18n("grid_editor.del_block"))) {
|
187
|
-
jQuery(this).closest(".drg_item").fadeDestroy();
|
188
|
-
editor.trigger("auto_save");
|
189
|
-
}
|
190
|
-
e.preventDefault();
|
191
|
-
}).on("click", '.drg_item .grid_content_clone', function (e) {
|
192
|
-
var widget = jQuery(this).closest(".drg_item");
|
193
|
-
var widget_clone = widget.clone();
|
194
|
-
widget.after(widget_clone);
|
195
|
-
editor.trigger("auto_save");
|
196
|
-
e.preventDefault();
|
197
|
-
}).on("click", '.drg_item .grid_content_edit', function (e) {
|
198
|
-
var panel_content = $(this).closest(".drg_item");
|
199
|
-
var key = panel_content.attr("data-kind");
|
200
|
-
$.fn.gridEditor_options[key]["callback"](panel_content.children(".grid_item_content"), editor);
|
201
|
-
e.preventDefault();
|
202
|
-
});
|
203
|
-
|
204
|
-
// column dropdown options
|
205
|
-
jQuery('.panel_grid_body ', editor).on("click", '.grid_col_remove', function (e) {
|
206
|
-
if(confirm(I18n("grid_editor.del_block"))){
|
207
|
-
jQuery(this).closest(".drg_column").fadeDestroy();
|
208
|
-
editor.trigger("auto_save");
|
209
|
-
}
|
210
|
-
e.preventDefault();
|
211
|
-
}).on("click", '.grid_col_clone', function (e) {
|
212
|
-
var widget = jQuery(this).closest(".drg_column");
|
213
|
-
var widget_clone = widget.clone();
|
214
|
-
widget.after(widget_clone);
|
215
|
-
grid_content_manager(widget_clone.find(".grid_sortable_items"));
|
216
|
-
editor.trigger("auto_save");
|
217
|
-
e.preventDefault();
|
218
|
-
});
|
219
|
-
|
220
|
-
//// autosave changes
|
221
|
-
//var time_control;
|
222
|
-
//$('.panel_grid_body', editor).bind("DOMSubtreeModified",function(){
|
223
|
-
// var thiss = $(this);
|
224
|
-
// if(time_control) clearTimeout(time_control);
|
225
|
-
// time_control = setTimeout(function(){ editor.trigger("auto_save"); }, 5000);
|
226
|
-
//});
|
227
|
-
}
|
228
|
-
|
229
|
-
do_editor_menus(editor);
|
230
|
-
textarea.before(editor);
|
231
|
-
|
232
|
-
// drag columns
|
233
|
-
jQuery(".grid_editor_menu .drg_column", editor).draggable({
|
234
|
-
connectToSortable: "#"+editor_id+" .panel_grid_body",
|
235
|
-
cursor: 'move', // sets the cursor apperance
|
236
|
-
revert: 'invalid', // makes the item to return if it isn't placed into droppable
|
237
|
-
revertDuration: -1, // duration while the item returns to its place
|
238
|
-
opacity: 1, // opacity while the element is dragged
|
239
|
-
helper: "clone"
|
240
|
-
});
|
241
|
-
|
242
|
-
//draggable content elements
|
243
|
-
jQuery(".grid_editor_menu .drg_item", editor).draggable({
|
244
|
-
connectToSortable: "#"+editor_id+" .grid_sortable_items",
|
245
|
-
cursor: 'move', // sets the cursor apperance
|
246
|
-
revert: 'invalid', // makes the item to return if it isn't placed into droppable
|
247
|
-
revertDuration: -1, // duration while the item returns to its place
|
248
|
-
opacity: 1, // opacity while the element is dragged
|
249
|
-
helper: "clone"
|
250
|
-
});
|
251
|
-
|
252
|
-
// Sort the parents
|
253
|
-
jQuery(".panel_grid_body", editor).sortable({
|
254
|
-
tolerance: "pointer",
|
255
|
-
cursor: "move",
|
256
|
-
revert: false,
|
257
|
-
delay: 150,
|
258
|
-
dropOnEmpty: true,
|
259
|
-
items: ".drg_column",
|
260
|
-
connectWith: "#"+editor_id+" .panel_grid_body",
|
261
|
-
placeholder: "placeholder",
|
262
|
-
start: function (e, ui) {
|
263
|
-
ui.helper.css({'width': '' , 'height': ''}).addClass('col-md-' + jQuery(ui.helper).attr('data-col'));
|
264
|
-
ui.placeholder.attr('class', jQuery(ui.helper).attr("class")).html(ui.helper.html()).fadeTo("fast", 0.4);
|
265
|
-
},
|
266
|
-
over: function (e, ui) {
|
267
|
-
ui.placeholder.attr('class', jQuery(ui.helper).attr("class"));
|
268
|
-
$(this).addClass("hover-grid");
|
269
|
-
},
|
270
|
-
out: function (e, ui) {
|
271
|
-
$(this).removeClass("hover-grid");
|
272
|
-
},
|
273
|
-
stop: function (e, ui) {
|
274
|
-
ui.item.css({left: "", top: "", position: ""});
|
275
|
-
if(!jQuery(ui.item).hasClass('grid-col-built')) parse_content_column(ui.item)
|
276
|
-
ui.item.addClass('grid-col-built');
|
277
|
-
editor.trigger("auto_save");
|
278
|
-
}
|
279
|
-
});
|
280
|
-
|
281
|
-
function grid_content_manager(item) {
|
282
|
-
// Sort the children (content elements)
|
283
|
-
jQuery(item).sortable({
|
284
|
-
tolerance: "pointer",
|
285
|
-
cursor: "move",
|
286
|
-
revert: false,
|
287
|
-
delay: 150,
|
288
|
-
dropOnEmpty: true,
|
289
|
-
items: ".drg_item",
|
290
|
-
connectWith: "#"+editor_id+' .grid_sortable_items',
|
291
|
-
placeholder: "placeholder",
|
292
|
-
start: function (e, ui) {
|
293
|
-
ui.helper.css({'width': '' , 'height': ''}).addClass('col-md-12');
|
294
|
-
ui.placeholder.attr('class', jQuery(ui.helper).attr("class")).html(ui.helper.html()).fadeTo("fast", 0.4);
|
295
|
-
},
|
296
|
-
over: function (e, ui) {
|
297
|
-
$(this).addClass("hover-grid");
|
298
|
-
},
|
299
|
-
out: function (e, ui) {
|
300
|
-
$(this).removeClass("hover-grid");
|
301
|
-
},
|
302
|
-
stop: function (e, ui) {
|
303
|
-
ui.item.addClass('col-md-12').css({left: "", top: "", position: ""});
|
304
|
-
if(!jQuery(ui.item).hasClass('grid-item-built')) parse_content_content(ui.item)
|
305
|
-
ui.item.addClass('grid-item-built');
|
306
|
-
editor.trigger("auto_save");
|
307
|
-
}
|
308
|
-
});
|
309
|
-
}
|
310
|
-
return textarea;
|
311
|
-
}
|
312
|
-
|
313
|
-
// grid content tab builder
|
314
|
-
function grid_tab_builder(panel, editor){
|
315
|
-
var id_tab = "tabs_" + gridEditor_id + Math.floor((Math.random() * 100000) + 1);
|
316
|
-
var tpl_tabs = '<ul class="nav nav-tabs" role="tablist">'+
|
317
|
-
'<li role="presentation" class="active"><a href="" role="tab" data-toggle="tab">Sample1</a></li>'+
|
318
|
-
'</ul>'+
|
319
|
-
'<div class="tab-content">'+
|
320
|
-
'<div role="tabpanel" class="tab-pane active" id="">Lorem Ipsum</div>'+
|
321
|
-
'</div>';
|
322
|
-
if(panel.html()) tpl_tabs = panel.html();
|
323
|
-
function tab_builder(modal){
|
324
|
-
modal.find(".nav-tabs li").not(".tb_built").addClass("tb_built").find("a").each(function(){
|
325
|
-
var settings = "<i class='fa fa-trash-o grid_tab_del'></i>"+
|
326
|
-
"<i class='fa fa-pencil grid_tab_edit'></i>";
|
327
|
-
$(this).append(settings);
|
328
|
-
});
|
329
|
-
var k = id_tab+'_item';
|
330
|
-
modal.find(".nav-tabs li").each(function(index, item){
|
331
|
-
var k_i = k+"-"+index;
|
332
|
-
$(this).children("a").attr("href", "#"+k_i);
|
333
|
-
modal.find(".tab-pane").eq(index).attr("id", k_i);
|
334
|
-
});
|
335
|
-
}
|
336
|
-
open_modal({title: "Enter Slider Items", modal_settings: { keyboard: false, backdrop: "static" }, show_footer: true, content: tpl_tabs, callback: function(modal){
|
337
|
-
var p_title = modal.find(".nav-tabs");
|
338
|
-
var p_content = modal.find(".tab-content");
|
339
|
-
p_title.append("<a href='#' class='grid_tab_add pull-right' title='Add Tabs'><i class='fa fa-plus-circle'></i> "+I18n("button.add")+"</a>")
|
340
|
-
.on("click", ".grid_tab_add", function(e){
|
341
|
-
p_title.append('<li role="presentation"><a href="" role="tab" data-toggle="tab">Sample</a></li>');
|
342
|
-
p_content.append('<div role="tabpanel" class="tab-pane" id="">Lorem Ipsum</div>');
|
343
|
-
tab_builder(modal);
|
344
|
-
e.preventDefault();
|
345
|
-
}).on("click", ".grid_tab_edit", function(e){
|
346
|
-
var title = $(this).closest("a");
|
347
|
-
var content = $($(this).closest("a").attr("href"));
|
348
|
-
var tpl = '<div class="form-group">'+
|
349
|
-
'<label>Title</label><br>'+
|
350
|
-
"<input type='text' class='form-control required'/>"+
|
351
|
-
"</div>"+
|
352
|
-
'<div class="form-group">'+
|
353
|
-
'<label>Content</label><br>'+
|
354
|
-
"<textarea rows='10' class='form-control'></textarea>"+
|
355
|
-
"</div>"
|
356
|
-
open_modal({title: "Enter Your Tab Content", modal_settings: { keyboard: false, backdrop: "static" }, show_footer: true, content: tpl, callback: function(modal){
|
357
|
-
var submit = $('<button type="button" class="btn btn-primary">Save</button>').click(function(){
|
358
|
-
title.html(title.find("i")).prepend(modal.find("input").val());
|
359
|
-
modal.find("input").val();
|
360
|
-
var area = modal.find("textarea");
|
361
|
-
content.html(area.tinymce().getContent());
|
362
|
-
modal.modal("hide");
|
363
|
-
});
|
364
|
-
modal.find("input").val(title.text());
|
365
|
-
modal.find("textarea").val(content.html());
|
366
|
-
setTimeout(function(){ modal.find("textarea").tinymce($.extend({} ,DATA.tiny_mce.advanced, {height: 120})); }, 500);
|
367
|
-
modal.find(".modal-footer").prepend(submit);
|
368
|
-
}});
|
369
|
-
|
370
|
-
e.preventDefault();
|
371
|
-
}).on("click", ".grid_tab_del", function(e){
|
372
|
-
if(confirm("are you sure?")){
|
373
|
-
$($(this).closest("a").attr("href")).remove();
|
374
|
-
$(this).closest("li").fadeDestroy();
|
375
|
-
}
|
376
|
-
e.preventDefault();
|
377
|
-
}).sortable({items: "> li"});
|
378
|
-
tab_builder(modal);
|
379
|
-
|
380
|
-
// save contents of tab
|
381
|
-
var submit = $('<button type="button" class="btn btn-primary">Save</button>').click(function(){
|
382
|
-
modal.find(".modal-body").find(".tb_built").removeClass("tb_built ui-sortable-handle").end().find(".nav-tabs").find(".fa, .grid_tab_add").remove();
|
383
|
-
panel.html(modal.find(".modal-body").html());
|
384
|
-
modal.modal("hide");
|
385
|
-
editor.trigger("auto_save");
|
386
|
-
});
|
387
|
-
modal.find("textarea").val(panel.html());
|
388
|
-
modal.find(".modal-footer").prepend(submit);
|
389
|
-
}});
|
390
|
-
}
|
391
|
-
|
392
|
-
// grid content tab builder
|
393
|
-
function grid_slider_builder1(panel, editor){
|
394
|
-
var tpl_slider = '<div class="carousel slide" data-ride="carousel"> ' +
|
395
|
-
'<ol class="carousel-indicators"></ol>' +
|
396
|
-
'<div class="carousel-inner"></div>'+
|
397
|
-
'<a class="left carousel-control" href="#'+id_slider+'" role="button" data-slide="prev"><span class="glyphicon glyphicon-chevron-left"></span></a>'+
|
398
|
-
'<a class="right carousel-control" href="#'+id_slider+'" role="button" data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>'+
|
399
|
-
'</div>';
|
400
|
-
if(panel.html()) tpl_slider = panel.html();
|
401
|
-
tpl_slider = $(tpl_slider);
|
402
|
-
var form_slider = $('<form></form>').on("click", ".add_item", function(e){
|
403
|
-
add_item();
|
404
|
-
e.preventDefault();
|
405
|
-
}).on("click", ".item_del", function(){
|
406
|
-
if(confirm("are you sure?")) $(this).closest(".well").fadeDestroy();
|
407
|
-
e.preventDefault();
|
408
|
-
});
|
409
|
-
|
410
|
-
function add_item(descr, url){
|
411
|
-
var settings = "<div class='slider_actions text-center'><a href='#' class='item_del'><i class='fa fa-trash-o'></i></a></div>";
|
412
|
-
var tpl = $('<div class="well">'+settings+'<div class="form-group"><label>Background: </label><br><input name="url_file"></div></div> <div class="form-group"><label>Description: </label><br><textarea class="descr"></textarea></div>');
|
413
|
-
tpl.find("input").val(url);
|
414
|
-
tpl.find("textarea").val(descr);
|
415
|
-
form_slider.append(tpl);
|
416
|
-
}
|
417
|
-
tpl_slider.find(".carousel-inner").children().each(function(){ add_item($(this)); })
|
418
|
-
if(form_slider.children("well").length == 0) form_slider.find(".add_item").click();
|
419
|
-
open_modal({title: "Enter Slider Items", modal_settings: { keyboard: false, backdrop: "static" }, show_footer: true, content: form_slider, callback: function(modal){
|
420
|
-
|
421
|
-
var submit = $('<button type="button" class="btn btn-primary">Save</button>').click(function(){
|
422
|
-
modal.find(".grid_slider_settings, .slider_actions").remove();
|
423
|
-
panel.html(modal.find(".modal-body").html());
|
424
|
-
modal.modal("hide");
|
425
|
-
editor.trigger("auto_save");
|
426
|
-
});
|
427
|
-
modal.find(".modal-footer").prepend(submit);
|
428
|
-
}});
|
429
|
-
}
|
430
|
-
|
431
|
-
// manage sliders of the grid editor
|
432
|
-
// permit to add, edit
|
433
|
-
function grid_slider_builder(panel, editor){
|
434
|
-
var id_slider = "slider_" + gridEditor_id + Math.floor((Math.random() * 100000) + 1);
|
435
|
-
var tpl_slider = '<div class="carousel slide" data-ride="carousel"> ' +
|
436
|
-
'<ol class="carousel-indicators"></ol>' +
|
437
|
-
'<div class="carousel-inner"></div>'+
|
438
|
-
'<a class="left carousel-control" href="#'+id_slider+'" role="button" data-slide="prev"><span class="glyphicon glyphicon-chevron-left"></span></a>'+
|
439
|
-
'<a class="right carousel-control" href="#'+id_slider+'" role="button" data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>'+
|
440
|
-
'</div>';
|
441
|
-
if(panel.html()) tpl_slider = panel.html();
|
442
|
-
open_modal({title: "Enter Slider Items", modal_settings: { keyboard: false, backdrop: "static" }, show_footer: true, content: tpl_slider, callback: function(modal){
|
443
|
-
var slide = modal.find(".carousel").attr("id", id_slider);
|
444
|
-
slide.find(".carousel-control").attr("href", "#"+id_slider).end().find(".carousel-indicators li").attr("data-target", "#"+id_slider);
|
445
|
-
slide.before("<div class='grid_slider_settings'><a href='#' class='grid_slider_add' title='Add Slider'><i class='fa fa-plus-circle'></i> "+I18n("button.add")+"</a></div>");
|
446
|
-
modal.on("click", ".grid_slider_add", function(e){
|
447
|
-
modal.find(".carousel-inner").append('<div class="item active" style="max-width: 100%;"><img src="http://www.diario-de-un-escalador.com/wp-content/uploads/Escalada20.jpg"><div class="carousel-caption">Caption here</div></div>');
|
448
|
-
slider_builder(modal);
|
449
|
-
e.preventDefault();
|
450
|
-
}).on("click", ".grid_slide_edit", edit_slide).on("click", ".grid_slide_del", function(e){
|
451
|
-
if(confirm("are you sure?")){
|
452
|
-
$(this).closest(".item").remove();
|
453
|
-
slider_builder(modal);
|
454
|
-
}
|
455
|
-
e.preventDefault();
|
456
|
-
});
|
457
|
-
slider_builder(modal);
|
458
|
-
if(modal.find(".carousel-inner .item").length == 0) modal.find(".grid_slider_add").click();
|
459
|
-
// save contents of tab
|
460
|
-
var submit = $('<button type="button" class="btn btn-primary">Save</button>').click(function(){
|
461
|
-
modal.find(".grid_slider_settings, .slider_actions").remove();
|
462
|
-
panel.html(modal.find(".modal-body").html());
|
463
|
-
modal.modal("hide");
|
464
|
-
editor.trigger("auto_save");
|
465
|
-
});
|
466
|
-
modal.find(".modal-footer").prepend(submit);
|
467
|
-
}});
|
468
|
-
|
469
|
-
// manage slide editor form
|
470
|
-
function edit_slide(e){
|
471
|
-
var content = $(this).closest(".item").find(".carousel-caption");
|
472
|
-
var image = $(this).closest(".item").children("img");
|
473
|
-
var tpl = '<div class="form-group"><label>Background: </label><br><input type="hidden" class="form-control" name="url_file"></div><div class="form-group"><label>Description: </label><br><textarea class="descr"></textarea></div>';
|
474
|
-
open_modal({title: "Enter Your Slider Content", modal_settings: { keyboard: false, backdrop: "static" }, show_footer: true, content: tpl, callback: function(modal){
|
475
|
-
var submit = $('<button type="button" class="btn btn-primary">Save</button>').click(function(){
|
476
|
-
content.html(modal.find("textarea").tinymce().getContent());
|
477
|
-
image.attr("src", modal.find("input").val());
|
478
|
-
modal.modal("hide");
|
479
|
-
});
|
480
|
-
modal.find("textarea").val(content.html());
|
481
|
-
modal.find("input").val(image.attr("src")).input_upload();
|
482
|
-
setTimeout(function(){ modal.find("textarea").tinymce($.extend({} ,DATA.tiny_mce.advanced, {height: 120})); }, 500);
|
483
|
-
modal.find(".modal-footer").prepend(submit);
|
484
|
-
}});
|
485
|
-
|
486
|
-
e.preventDefault();
|
487
|
-
}
|
488
|
-
|
489
|
-
// slider options and update indicators
|
490
|
-
function slider_builder(modal){
|
491
|
-
var slide = modal.find(".carousel");
|
492
|
-
var indi = modal.find(".carousel-indicators").html("");
|
493
|
-
var settings = "<div class='slider_actions text-center'><a href='#' class='grid_slide_del'><i class='fa fa-trash-o'></i></a> <a href='#' class='grid_slide_edit'><i class='fa fa-pencil'></i></a></div>";
|
494
|
-
modal.find(".carousel-inner").children().each(function(index, item){
|
495
|
-
indi.append('<li data-target="#'+id_slider+'" data-slide-to="'+index+'"></li>');
|
496
|
-
if($(this).find(".slider_actions").length == 0) $(this).append(settings);
|
497
|
-
});
|
498
|
-
var act = modal.find(".carousel-inner .item.active:last").index();
|
499
|
-
modal.find(".carousel-indicators li").removeClass("active").eq(act).addClass("active");
|
500
|
-
modal.find(".carousel-inner .item").removeClass("active").eq(act).addClass("active");
|
501
|
-
}
|
502
|
-
}
|
503
|
-
|
504
|
-
// grid content editor builder
|
505
|
-
function grid_editor_builder(panel, editor){
|
506
|
-
open_modal({title: "Enter Your Content", modal_settings: { keyboard: false, backdrop: "static" }, show_footer: true, content: "<textarea rows='10' class='form-control'></textarea>", callback: function(modal){
|
507
|
-
var submit = $('<button type="button" class="btn btn-primary">Save</button>').click(function(){
|
508
|
-
var area = modal.find("textarea");
|
509
|
-
panel.html(area.tinymce().getContent());
|
510
|
-
modal.modal("hide");
|
511
|
-
editor.trigger("auto_save");
|
512
|
-
});
|
513
|
-
modal.find("textarea").val(panel.html());
|
514
|
-
setTimeout(function(){ modal.find("textarea").tinymce($.extend({} ,DATA.tiny_mce.advanced, {height: 120})); }, 500);
|
515
|
-
modal.find(".modal-footer").prepend(submit);
|
516
|
-
}});
|
517
|
-
}
|
518
|
-
|
519
|
-
// grid content text builder
|
520
|
-
function grid_text_builder(panel, editor){
|
521
|
-
open_modal({title: "Enter Your Text", modal_settings: { keyboard: false, backdrop: "static" }, show_footer: true, content: "<textarea rows='10' class='form-control'></textarea>", callback: function(modal){
|
522
|
-
var submit = $('<button type="button" class="btn btn-primary">Save</button>').click(function(){
|
523
|
-
panel.html(modal.find("textarea").val());
|
524
|
-
modal.modal("hide");
|
525
|
-
editor.trigger("auto_save");
|
526
|
-
});
|
527
|
-
modal.find("textarea").val(panel.html());
|
528
|
-
modal.find(".modal-footer").prepend(submit);
|
529
|
-
}});
|
530
|
-
}
|
531
|
-
|
532
|
-
});
|