camaleon_cms 0.2.1 → 1.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.
- checksums.yaml +4 -4
- data/README.md +266 -0
- data/app/apps/plugins/attack/config/config.json +1 -1
- data/app/apps/plugins/contact_form/config/config.json +1 -1
- data/app/apps/plugins/contact_form/contact_form_html_helper.rb +15 -10
- data/app/apps/plugins/contact_form/front_controller.rb +1 -0
- data/app/apps/plugins/contact_form/views/admin_forms/edit.html.erb +1 -2
- data/app/apps/plugins/contact_form/views/admin_forms/index.html.erb +1 -1
- data/app/apps/plugins/contact_form/views/admin_forms/responses.html.erb +1 -1
- data/app/apps/plugins/contact_form/views/forms_shorcode.html.erb +6 -6
- data/app/apps/plugins/front_cache/config/config.json +1 -1
- data/app/apps/plugins/front_cache/views/admin/settings.html.erb +1 -1
- data/app/apps/plugins/visibility_post/config/config.json +1 -1
- data/app/apps/themes/camaleon_first/assets/css/style-ver.css.scss +59 -32
- data/app/apps/themes/camaleon_first/views/layouts/index.html.erb +2 -2
- data/app/apps/themes/default/assets/css/style.css.scss +3 -0
- data/app/apps/themes/default/views/category.html.erb +1 -1
- data/app/apps/themes/default/views/post_tag.html.erb +1 -1
- data/app/apps/themes/default/views/post_type.html.erb +1 -1
- data/app/apps/themes/default/views/search.html.erb +1 -1
- data/app/apps/themes/new/views/category.html.erb +1 -1
- data/app/apps/themes/new/views/layouts/index.html.erb +2 -2
- data/app/apps/themes/new/views/post_tag.html.erb +1 -1
- data/app/apps/themes/new/views/post_type.html.erb +1 -1
- data/app/apps/themes/new/views/search.html.erb +1 -1
- data/app/assets/{stylesheets/admin/bootstrap/images → images/admin}/glyphicons-halflings.png +0 -0
- data/app/assets/javascripts/admin/actions.js +12 -205
- data/app/assets/javascripts/admin/admin-basic-manifest.js +3 -0
- data/app/assets/javascripts/admin/admin-manifest.js +14 -4
- data/app/assets/javascripts/admin/custom_fields.js +4 -2
- data/app/assets/javascripts/admin/data.js +49 -20
- data/app/assets/javascripts/admin/elfinder/upload_elfinder.js +4 -4
- data/app/assets/javascripts/admin/grid-editor.js +390 -113
- data/app/assets/javascripts/admin/i18n.js +22 -0
- data/app/assets/javascripts/admin/jquery.validate.js +2 -54
- data/app/assets/javascripts/admin/{core.js → libraries.js} +92 -76
- data/app/assets/javascripts/admin/login_manifest.js +0 -3
- data/app/assets/javascripts/admin/lte/app.js +758 -0
- data/app/assets/javascripts/admin/modal.js +76 -22
- data/app/assets/javascripts/admin/nav-menu.js +98 -39
- data/app/assets/javascripts/admin/post.js +28 -29
- data/app/assets/javascripts/admin/tinymce/skins/lightgray/content.min.css.scss +1 -1
- data/app/assets/javascripts/admin/tinymce/tinymce.min.js +11 -11
- data/app/assets/javascripts/admin/translator.js +9 -7
- data/app/assets/javascripts/admin/widgets.js +1 -0
- data/app/assets/stylesheets/admin/admin-basic-manifest.css +15 -0
- data/app/assets/stylesheets/admin/admin-manifest.css +7 -11
- data/app/assets/stylesheets/admin/bootstrap-datepicker.css.scss +472 -0
- data/app/assets/stylesheets/admin/bootstrap-datetimepicker.css.scss +339 -0
- data/app/assets/stylesheets/admin/colorpicker.css.scss +95 -0
- data/app/assets/stylesheets/admin/custom_admin.css.scss +160 -0
- data/app/assets/stylesheets/admin/elfinder-manifest.css +1 -1
- data/app/assets/stylesheets/admin/grid-editor.css.scss +14 -299
- data/app/assets/stylesheets/admin/lte/admin.css.scss +4747 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-black-light.css +176 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-black.css +154 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-blue-light.css +167 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-blue.css +142 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-green-light.css +156 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-green.css +134 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-purple-light.css +156 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-purple.css +134 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-red-light.css +156 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-red.css +134 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-yellow-light.css +156 -0
- data/app/assets/stylesheets/admin/lte/skins/skin-yellow.css +134 -0
- data/app/assets/stylesheets/admin/nav-menu.css.scss +33 -0
- data/app/controllers/admin/appearances/nav_menus_controller.rb +13 -10
- data/app/controllers/admin/appearances/themes_controller.rb +1 -2
- data/app/controllers/admin/appearances_controller.rb +0 -4
- data/app/controllers/admin/categories_controller.rb +9 -15
- data/app/controllers/admin/comments_controller.rb +8 -14
- data/app/controllers/admin/grid_editor_controller.rb +55 -0
- data/app/controllers/admin/installers_controller.rb +1 -1
- data/app/controllers/admin/media_controller.rb +1 -3
- data/app/controllers/admin/plugins_controller.rb +2 -2
- data/app/controllers/admin/post_tags_controller.rb +9 -18
- data/app/controllers/admin/posts/drafts_controller.rb +1 -9
- data/app/controllers/admin/posts_controller.rb +12 -15
- data/app/controllers/admin/sessions_controller.rb +6 -7
- data/app/controllers/admin/settings/custom_fields_controller.rb +4 -9
- data/app/controllers/admin/settings/post_types_controller.rb +6 -16
- data/app/controllers/admin/settings/sites_controller.rb +5 -7
- data/app/controllers/admin/settings_controller.rb +0 -4
- data/app/controllers/admin/user_roles_controller.rb +8 -8
- data/app/controllers/admin/users_controller.rb +8 -9
- data/app/controllers/admin_controller.rb +4 -5
- data/app/controllers/apps/plugins_admin_controller.rb +3 -3
- data/app/controllers/apps/plugins_front_controller.rb +2 -2
- data/app/controllers/apps/themes_admin_controller.rb +2 -2
- data/app/controllers/apps/themes_front_controller.rb +2 -2
- data/app/controllers/camaleon_controller.rb +0 -1
- data/app/controllers/concerns/frontend_concern.rb +1 -2
- data/app/controllers/frontend_controller.rb +25 -9
- data/app/decorators/category_decorator.rb +0 -1
- data/app/decorators/custom_field_decorator.rb +0 -1
- data/app/decorators/custom_fields_concern.rb +9 -3
- data/app/decorators/post_comment_decorator.rb +0 -1
- data/app/decorators/post_decorator.rb +10 -4
- data/app/decorators/post_tag_decorator.rb +0 -1
- data/app/decorators/post_type_decorator.rb +0 -1
- data/app/decorators/site_decorator.rb +35 -11
- data/app/decorators/term_taxonomy_decorator.rb +1 -3
- data/app/decorators/theme_decorator.rb +0 -1
- data/app/decorators/user_decorator.rb +7 -5
- data/app/decorators/widget_decorator.rb +0 -1
- data/app/helpers/admin/application_helper.rb +14 -0
- data/app/helpers/admin/menus_helper.rb +8 -8
- data/app/helpers/camaleon_helper.rb +10 -3
- data/app/helpers/captcha_helper.rb +2 -2
- data/app/helpers/frontend/application_helper.rb +0 -1
- data/app/helpers/frontend/nav_menu_helper.rb +2 -1
- data/app/helpers/frontend/seo_helper.rb +1 -2
- data/app/helpers/frontend/site_helper.rb +4 -4
- data/app/helpers/hooks_helper.rb +2 -5
- data/app/helpers/html_helper.rb +9 -7
- data/app/helpers/plugins_helper.rb +34 -8
- data/app/helpers/session_helper.rb +1 -2
- data/app/helpers/short_code_helper.rb +91 -10
- data/app/helpers/site_helper.rb +17 -8
- data/app/helpers/theme_helper.rb +34 -7
- data/app/helpers/uploader_helper.rb +6 -2
- data/app/mailers/html_mailer.rb +15 -6
- data/app/models/category.rb +2 -1
- data/app/models/concerns/custom_fields_read.rb +14 -3
- data/app/models/concerns/metas.rb +7 -4
- data/app/models/custom_field_group.rb +3 -0
- data/app/models/{concerns/metas_saved.rb → grid_template.rb} +7 -2
- data/app/models/meta.rb +0 -1
- data/app/models/nav_menu.rb +15 -1
- data/app/models/nav_menu_item.rb +10 -0
- data/app/models/post.rb +100 -6
- data/app/models/post_comment.rb +6 -0
- data/app/models/post_default.rb +9 -8
- data/app/models/post_relationship.rb +2 -0
- data/app/models/post_type.rb +36 -24
- data/app/models/site.rb +7 -16
- data/app/models/term_taxonomy.rb +3 -2
- data/app/models/theme.rb +5 -0
- data/app/models/widget/assigned.rb +3 -2
- data/app/views/admin/appearances/nav_menus/_custom_fields.html.erb +6 -0
- data/app/views/admin/appearances/{_external_menu.html.erb → nav_menus/_external_menu.html.erb} +8 -10
- data/app/views/admin/appearances/nav_menus/_menu_form.html.erb +35 -0
- data/app/views/admin/appearances/nav_menus/_menu_list.html.erb +22 -0
- data/app/views/admin/appearances/nav_menus/index.html.erb +110 -0
- data/app/views/admin/appearances/themes/index.html.erb +4 -3
- data/app/views/admin/appearances/widgets/main/_sidebar.html.erb +29 -0
- data/app/views/admin/appearances/widgets/main/form.html.erb +1 -1
- data/app/views/admin/appearances/widgets/main/index.html.erb +19 -41
- data/app/views/admin/categories/edit.html.erb +2 -6
- data/app/views/admin/categories/index.html.erb +7 -11
- data/app/views/admin/comments/form.html.erb +4 -7
- data/app/views/admin/comments/index.html.erb +24 -41
- data/app/views/admin/comments/reply.html.erb +9 -10
- data/app/views/admin/grid_editor/form.html.erb +31 -0
- data/app/views/admin/grid_editor/index.html.erb +29 -0
- data/app/views/admin/media/index.html.erb +3 -15
- data/app/views/admin/plugins/_plugins_list.html.erb +1 -2
- data/app/views/admin/post_tags/edit.html.erb +2 -6
- data/app/views/admin/post_tags/index.html.erb +3 -8
- data/app/views/admin/posts/_sidebar.html.erb +136 -0
- data/app/views/admin/posts/form.html.erb +87 -281
- data/app/views/admin/posts/index.html.erb +89 -104
- data/app/views/admin/sessions/forgot.html.erb +7 -13
- data/app/views/admin/sessions/login.html.erb +21 -11
- data/app/views/admin/sessions/register.html.erb +3 -6
- data/app/views/admin/settings/custom_fields/_meta_data.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/_render.html.erb +6 -14
- data/app/views/admin/settings/custom_fields/fields/audio.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/field_attrs.html.erb +3 -5
- 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/posts.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/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/form.html.erb +11 -9
- data/app/views/admin/settings/custom_fields/get_items.html.erb +3 -6
- data/app/views/admin/settings/custom_fields/index.html.erb +3 -10
- data/app/views/admin/settings/languages.html.erb +2 -10
- data/app/views/admin/settings/post_types/_form.html.erb +1 -1
- data/app/views/admin/settings/post_types/edit.html.erb +2 -6
- data/app/views/admin/settings/post_types/index.html.erb +4 -12
- data/app/views/admin/settings/site.html.erb +143 -149
- data/app/views/admin/settings/sites/form.html.erb +4 -19
- data/app/views/admin/settings/sites/index.html.erb +8 -9
- data/app/views/admin/taxonomy/index.html.erb +1 -1
- data/app/views/admin/user_roles/form.html.erb +2 -3
- data/app/views/admin/user_roles/index.html.erb +2 -8
- data/app/views/admin/users/form.html.erb +14 -9
- data/app/views/admin/users/index.html.erb +3 -8
- data/app/views/admin/users/profile_edit.html.erb +21 -14
- data/app/views/default_theme/custom_fields/audio.html.erb +3 -0
- data/app/views/default_theme/custom_fields/checkbox.html.erb +3 -0
- data/app/views/default_theme/custom_fields/checkboxes.html.erb +3 -0
- data/app/views/default_theme/custom_fields/colorpicker.html.erb +3 -0
- data/app/views/default_theme/custom_fields/date.html.erb +3 -0
- data/app/views/default_theme/custom_fields/editor.html.erb +3 -0
- data/app/views/default_theme/custom_fields/email.html.erb +3 -0
- data/app/views/default_theme/custom_fields/field_attrs.html.erb +3 -0
- data/app/views/default_theme/custom_fields/file.html.erb +3 -0
- data/app/views/default_theme/custom_fields/image.html.erb +3 -0
- data/app/views/default_theme/custom_fields/numeric.html.erb +3 -0
- data/app/views/default_theme/custom_fields/phone.html.erb +3 -0
- data/app/views/default_theme/custom_fields/posts.html.erb +3 -0
- data/app/views/default_theme/custom_fields/radio.html.erb +3 -0
- data/app/views/default_theme/custom_fields/select.html.erb +3 -0
- data/app/views/default_theme/custom_fields/select_eval.html.erb +3 -0
- data/app/views/default_theme/custom_fields/text_area.html.erb +3 -0
- data/app/views/default_theme/custom_fields/text_box.html.erb +3 -0
- data/app/views/default_theme/custom_fields/url.html.erb +3 -0
- data/app/views/default_theme/custom_fields/users.html.erb +3 -0
- data/app/views/default_theme/custom_fields/video.html.erb +3 -0
- data/app/views/default_theme/layouts/index.html.erb +2 -2
- data/app/views/default_theme/{post.html.erb → single.html.erb} +1 -1
- data/app/views/default_theme/{post.rss.builder → single.rss.builder} +0 -0
- data/app/views/layouts/admin.html.erb +35 -133
- data/app/views/layouts/admin/_flash_messages.html.erb +1 -15
- data/app/views/layouts/admin/_footer.html.erb +6 -0
- data/app/views/layouts/admin/_header.html.erb +51 -0
- data/app/views/layouts/admin/_sidebar.html.erb +21 -30
- data/app/views/layouts/admin/installer.html.erb +2 -2
- data/app/views/layouts/login.html.erb +15 -33
- data/config/initializers/active_record_extension.rb +14 -2
- data/config/initializers/assets.rb +21 -7
- data/config/initializers/page_caching.rb +1 -2
- data/config/locales/admin/en.yml +17 -9
- data/config/locales/admin/es.yml +8 -3
- data/config/locales/admin/it.yml +4 -2
- data/config/locales/admin/js.yml +147 -0
- data/config/routes/admin.rb +4 -4
- data/config/routes/frontend.rb +2 -2
- data/config/system.json +1 -0
- data/db/migrate/20150926095310_rename_column_posts.rb +18 -0
- data/lib/camaleon_cms.rb +1 -1
- data/lib/camaleon_cms/engine.rb +17 -2
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/generators/camaleon_cms/gem_plugin_generator.rb +122 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/controllers/plugins/my_plugin/admin_controller.rb +8 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/controllers/plugins/my_plugin/front_controller.rb +8 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/helpers/plugins/my_plugin/main_helper.rb +22 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/models/plugins/my_plugin/my_plugin.rb +12 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/admin/index.html.erb +2 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/front/index.html.erb +2 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/app/views/plugins/my_plugin/layouts/readme.txt +2 -0
- data/lib/generators/camaleon_cms/gem_plugin_template/config/camaleon_plugin.json +21 -0
- data/lib/generators/camaleon_cms/install_generator.rb +1 -2
- data/lib/generators/camaleon_cms/install_template/plugin_routes.rb +1 -10
- data/lib/generators/ctheme_template/app/apps/themes/my_theme/config/config.json +5 -5
- data/lib/generators/ctheme_template/app/apps/themes/my_theme/main_helper.rb +6 -5
- data/lib/generators/ctheme_template/app/apps/themes/my_theme/views/layouts/index.html.erb +2 -2
- data/lib/plugin_routes.rb +40 -2
- metadata +257 -22
- data/app/assets/stylesheets/admin/animate/animate.min.css +0 -6
- data/app/assets/stylesheets/admin/bootstrap/bootstrap-datetimepicker.css.scss +0 -339
- data/app/assets/stylesheets/admin/bootstrap/bootstrap.min.css +0 -5
- data/app/assets/stylesheets/admin/core.scss +0 -349
- data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.eot +0 -0
- data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.svg +0 -1831
- data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.ttf +0 -0
- data/app/assets/stylesheets/admin/fonts/OpenSans-Regular-webfont.woff +0 -0
- data/app/assets/stylesheets/admin/nav-menu.css +0 -54
- data/app/assets/stylesheets/admin/theme-default.scss +0 -8462
- data/app/models/concerns/site_public.rb +0 -23
- data/app/views/admin/appearances/menu.html.erb +0 -199
- data/lib/Gemfile +0 -25
@@ -16,17 +16,27 @@
|
|
16
16
|
//= require ./jquery-ui.min
|
17
17
|
//= require ./underscore
|
18
18
|
//= require ./jquery.validate
|
19
|
-
|
19
|
+
|
20
|
+
//= require jquery_ujs
|
21
|
+
|
20
22
|
//= require ./elfinder/elfinder.full
|
21
23
|
//= require ./elfinder/proxy/elFinderSupportVer1
|
22
24
|
//= require ./elfinder/upload_elfinder
|
23
25
|
|
24
26
|
//= require ./jquery.slugify
|
25
27
|
//= require ./translator
|
26
|
-
//= require ./
|
28
|
+
//= require ./i18n
|
29
|
+
//= require ./custom_fields
|
30
|
+
|
31
|
+
//= require ./libraries
|
32
|
+
//= require ./actions
|
33
|
+
|
27
34
|
|
28
|
-
//= require jquery_ujs
|
29
35
|
//= require ./modal
|
36
|
+
//= require ./grid-editor
|
30
37
|
|
31
38
|
//= require ./tageditor/jquery.caret.min
|
32
|
-
//= require ./tageditor/jquery.tag-editor
|
39
|
+
//= require ./tageditor/jquery.tag-editor
|
40
|
+
|
41
|
+
//= require ./lte/app
|
42
|
+
|
@@ -31,7 +31,7 @@ function build_custom_field(values, multiple, field_key, rand, default_value){
|
|
31
31
|
});
|
32
32
|
$sortable.delegate('.actions .fa-times', "click", function(){
|
33
33
|
var parent = $(this).parents('li');
|
34
|
-
if(confirm(
|
34
|
+
if(confirm(I18n("msg.delete_item"))){
|
35
35
|
parent.remove();
|
36
36
|
}
|
37
37
|
return false;
|
@@ -73,7 +73,9 @@ function custom_field_date($field){
|
|
73
73
|
}else{
|
74
74
|
box.datepicker({
|
75
75
|
language: 'es',
|
76
|
-
format: 'yyyy-mm-dd'
|
76
|
+
format: 'yyyy-mm-dd',
|
77
|
+
autoclose: true,
|
78
|
+
todayBtn: "linked"
|
77
79
|
});
|
78
80
|
}
|
79
81
|
}
|
@@ -13,12 +13,16 @@ var DATA = {
|
|
13
13
|
statusbar: true,
|
14
14
|
paste: true,
|
15
15
|
toolbar_items_size: 'small',
|
16
|
+
content_css: tinymce_assets["custom_css"],
|
17
|
+
convert_urls: false,
|
16
18
|
//forced_root_block: '',
|
19
|
+
extended_valid_elements: 'i[*],div[*],p[*],li[*],a[*],ol[*],ul[*],span[*]',
|
17
20
|
toolbar: "bold italic | alignleft aligncenter alignright alignjustify | fontselect fontsizeselect | bullist numlist | outdent indent | undo redo | link unlink image media | forecolor backcolor | styleselect template",
|
18
21
|
language: CURRENT_LOCALE,
|
19
22
|
relative_urls: false,
|
20
23
|
remove_script_host: false,
|
21
24
|
browser_spellcheck : true,
|
25
|
+
language_url: tinymce_assets["language_url"],
|
22
26
|
file_browser_callback: function(field_name, url, type, win) {
|
23
27
|
$.fn.upload_elfinder({
|
24
28
|
selected: function(res){
|
@@ -48,32 +52,57 @@ var DATA = {
|
|
48
52
|
context: 'insert',
|
49
53
|
onclick: function () { editor.insertContent('<p>-New line-</p>'); }
|
50
54
|
});
|
51
|
-
|
55
|
+
|
56
|
+
// eval all extra setups
|
57
|
+
for(var ff in editor.settings.extra_setups) editor.settings.extra_setups[ff](editor);
|
58
|
+
editor.on('postRender', function(e) {
|
59
|
+
editor.settings.onPostRender(editor);
|
60
|
+
});
|
61
|
+
|
62
|
+
editor.on('init', function(e) {
|
63
|
+
// auto switch on grid editor detected
|
64
|
+
if($.fn.isGridEditorContent($(editor.targetElm).val()))
|
65
|
+
$(editor.targetElm).gridEditor(editor);
|
66
|
+
});
|
67
|
+
|
68
|
+
// grid editor button
|
69
|
+
editor.addButton('grid_editor', {
|
70
|
+
text: 'Grid Editor',
|
71
|
+
icon: false,
|
72
|
+
onclick: function(){
|
73
|
+
if(!confirm("Are you sure to change the editor?")) return false;
|
74
|
+
var area = $(editor.targetElm).gridEditor(editor);
|
75
|
+
}
|
76
|
+
});
|
77
|
+
|
52
78
|
},
|
53
|
-
onPostRender: function(editor){}
|
79
|
+
onPostRender: function(editor){}, //custom callback for post render
|
80
|
+
extra_toolbar: [], //custom callback for
|
81
|
+
extra_setups: [] //custom callback for
|
82
|
+
|
54
83
|
}
|
55
84
|
},
|
56
85
|
tiny_mce3: {
|
57
86
|
advanced:{
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
87
|
+
// General options
|
88
|
+
mode : "textareas",
|
89
|
+
editor_selector : "tinymce_advanced",
|
90
|
+
theme : "advanced",
|
91
|
+
plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
|
63
92
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
93
|
+
// Theme options
|
94
|
+
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
|
95
|
+
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
|
96
|
+
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
|
97
|
+
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
|
98
|
+
theme_advanced_toolbar_location : "top",
|
99
|
+
theme_advanced_toolbar_align : "left",
|
100
|
+
theme_advanced_statusbar_location : "bottom",
|
101
|
+
theme_advanced_resizing : true,
|
73
102
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
}
|
103
|
+
// Skin options
|
104
|
+
skin : "bootstrap",
|
105
|
+
language: CURRENT_LOCALE
|
78
106
|
}
|
107
|
+
}
|
79
108
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
// options:
|
2
2
|
// - title: Title Modal, default: Upload File
|
3
|
-
// - type: image, video, audio, application/pdf,... default: 'all'
|
3
|
+
// - type: image, video, audio, application/pdf or file extensions (jpg, png, ..),... default: 'all'
|
4
4
|
// - multiple: return array files or uniq file, default: true
|
5
5
|
// - mode, menubar icons visibility, default: basic, values: full, basic
|
6
6
|
// - params: in mode basic use options toolbar: default: [], example: ['resize','mkdir']
|
@@ -92,7 +92,7 @@
|
|
92
92
|
var datas = [];
|
93
93
|
for(var i=0; i<selected.length;i++){
|
94
94
|
var file = elfinderInstance.file(selected[i]);
|
95
|
-
if(file.mime && (mime_type == "all" || $.inArray(true, mime_type.split(",").map(function(format){ return file.mime.indexOf(format) > -1 })) >= 0)){
|
95
|
+
if(file.mime && (mime_type == "all" || $.inArray(true, mime_type.split(",").map(function(format){ return file.mime.indexOf(format) > -1 })) >= 0 || $.inArray(file.name.split(".").pop().toLowerCase(), mime_type.split(",")) > -1 )){
|
96
96
|
if(file.size > 0) datas.push(file);
|
97
97
|
}
|
98
98
|
}
|
@@ -202,8 +202,8 @@
|
|
202
202
|
"</div>"+
|
203
203
|
"<div id='panel-info-content' class='row'>"+
|
204
204
|
"<p class='col-md-12'>"+content_elfinder.messages.size+" : <span>"+content_elfinder.formatSize(elemFirst.size)+"</span></p>"+
|
205
|
-
"<p class='col-md-12'>URL : <span><input type='text'
|
206
|
-
(is_image_data(elemFirst) ? "<p class='col-md-12'>"+content_elfinder.messages.thumb+" : <span><input type='text'
|
205
|
+
"<p class='col-md-12'>URL : <span><input type='text' value='"+elemFirst.url.to_url()+"' /></span></p>"+
|
206
|
+
(is_image_data(elemFirst) ? "<p class='col-md-12'>"+content_elfinder.messages.thumb+" : <span><input type='text' value='"+ (elemFirst.tmb != "1" ? elemFirst.tmb.toString().to_url() : elemFirst.url.to_url()) +"' /></span></p>" : "")+
|
207
207
|
"<p class='col-md-12'>"+content_elfinder.messages.dim+" : <span>"+elemFirst.dim+"</span></p>"+
|
208
208
|
"<p class='col-md-12'>"+content_elfinder.messages.modify+" : <span>"+elemFirst.date.replace('-0400','')+"</span></p>"+
|
209
209
|
"</div>";
|
@@ -1,26 +1,24 @@
|
|
1
1
|
jQuery(function(){
|
2
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
|
3
5
|
$.fn.gridEditor_extra_rows = [];
|
6
|
+
$.fn.gridEditor_libraries = [];
|
7
|
+
//********************** editor content options **********************//
|
4
8
|
$.fn.gridEditor_options = {
|
5
|
-
text: {title: "Text", callback:
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
panel.html(modal.find("textarea").val());
|
10
|
-
modal.modal("hide");
|
11
|
-
})
|
12
|
-
modal.find(".modal-footer").prepend(submit);
|
13
|
-
}});
|
14
|
-
}},
|
15
|
-
editor: {title: "Editor", callback: function(panel){ }},
|
16
|
-
slider: {title: "Slider", callback: function(panel){ }},
|
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},
|
17
13
|
};
|
14
|
+
//********************** end editor content options **********************//
|
18
15
|
|
19
16
|
// grid editor plugin
|
20
17
|
var gridEditor_id = 0;
|
21
18
|
$.fn.gridEditor = function(tinyEditor){
|
22
|
-
var tinymce_panel = $(tinyEditor.editorContainer).hide();
|
23
19
|
gridEditor_id ++;
|
20
|
+
var tinymce_panel = $(tinyEditor.editorContainer).hide();
|
21
|
+
var editor_id = "grid_editor_"+gridEditor_id;
|
24
22
|
var textarea = $(this);
|
25
23
|
if(textarea.prev().hasClass("panel_grid_editor")){ textarea.prev().show(); return textarea; }
|
26
24
|
var tpl_rows = "";
|
@@ -33,41 +31,48 @@ jQuery(function(){
|
|
33
31
|
var tpl_options = "";
|
34
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>'; });
|
35
33
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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>");
|
53
57
|
|
54
58
|
// grid editor export
|
55
|
-
function export_content(
|
56
|
-
|
57
|
-
|
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");
|
58
63
|
col.children(".header_box").remove();
|
59
64
|
col.find(".grid_sortable_items").children().each(function(){ //contents
|
60
|
-
|
65
|
+
$(this).removeClass("drg_item btn btn-default ui-draggable ui-draggable-dragging ui-sortable-handle ui-draggable-handle").children(".header_box").remove();
|
61
66
|
});
|
62
67
|
});
|
63
|
-
|
68
|
+
var res = container.html();
|
69
|
+
container.remove();
|
70
|
+
return res;
|
64
71
|
}
|
65
72
|
|
66
|
-
// grid editor parser to recover
|
73
|
+
// grid editor parser to recover from saved content
|
67
74
|
function parse_content(editor){
|
68
|
-
editor.find(".panel_grid_body").children().each(function(){
|
69
|
-
var col = parse_content_column($(this));
|
70
|
-
});
|
75
|
+
editor.find(".panel_grid_body").children("div").each(function(){ var col = parse_content_column($(this)); });
|
71
76
|
return editor;
|
72
77
|
}
|
73
78
|
|
@@ -76,15 +81,15 @@ jQuery(function(){
|
|
76
81
|
// skip_options: boolean to add drodown options
|
77
82
|
function parse_content_column(column, skip_options){
|
78
83
|
var html = '<div class="header_box">'+
|
79
|
-
|
80
|
-
|
84
|
+
'<a><i class="icon-bar"></i>'+column.attr("data-col_title")+'</a>'+
|
85
|
+
'</div>';
|
81
86
|
var options = "<div class='dropdown'>" +
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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>" ;
|
88
93
|
column.addClass("drg_column btn btn-default");
|
89
94
|
if(column.children(".header_box").length == 0) column.prepend(html);
|
90
95
|
if(!skip_options){
|
@@ -102,43 +107,131 @@ jQuery(function(){
|
|
102
107
|
// skip_options: boolean to add drodown options
|
103
108
|
function parse_content_content(content, skip_options){
|
104
109
|
var html = '<div class="header_box">'+
|
105
|
-
|
106
|
-
|
110
|
+
'<a><i class="icon-bar"></i>'+content.attr("data-content_title")+'</a>'+
|
111
|
+
'</div>';
|
107
112
|
var options = "<div class='dropdown'>" +
|
108
113
|
"<a class='dropdown-toggle' data-toggle='dropdown'> <span class='caret'></span></a>" +
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
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>"+
|
114
119
|
"</div>";
|
115
120
|
content.addClass("drg_item btn btn-default");
|
116
121
|
if(content.children(".header_box").length == 0) content.prepend(html);
|
117
122
|
if(!skip_options){
|
118
123
|
content.find('.header_box').append(options);
|
119
124
|
}
|
125
|
+
// save used libraries
|
126
|
+
$.fn.gridEditor_libraries = $.merge($.fn.gridEditor_libraries, $.fn.gridEditor_options[content.attr("data-kind")])
|
120
127
|
content;
|
121
128
|
}
|
122
129
|
|
123
|
-
//
|
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
|
+
}});
|
124
165
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
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);
|
131
230
|
textarea.before(editor);
|
132
|
-
var time_control;
|
133
|
-
$('.panel_grid_body', editor).bind("DOMSubtreeModified",function(){
|
134
|
-
var thiss = $(this);
|
135
|
-
if(time_control) clearTimeout(time_control);
|
136
|
-
time_control = setTimeout(function(){ textarea.val(export_content(thiss.clone()).html()); console.log(textarea.val()); }, 1000);
|
137
|
-
});
|
138
231
|
|
139
232
|
// drag columns
|
140
|
-
jQuery(".drg_column", editor).draggable({
|
141
|
-
connectToSortable:
|
233
|
+
jQuery(".grid_editor_menu .drg_column", editor).draggable({
|
234
|
+
connectToSortable: "#"+editor_id+" .panel_grid_body",
|
142
235
|
cursor: 'move', // sets the cursor apperance
|
143
236
|
revert: 'invalid', // makes the item to return if it isn't placed into droppable
|
144
237
|
revertDuration: -1, // duration while the item returns to its place
|
@@ -147,8 +240,8 @@ jQuery(function(){
|
|
147
240
|
});
|
148
241
|
|
149
242
|
//draggable content elements
|
150
|
-
jQuery(".drg_item", editor).draggable({
|
151
|
-
connectToSortable:
|
243
|
+
jQuery(".grid_editor_menu .drg_item", editor).draggable({
|
244
|
+
connectToSortable: "#"+editor_id+" .grid_sortable_items",
|
152
245
|
cursor: 'move', // sets the cursor apperance
|
153
246
|
revert: 'invalid', // makes the item to return if it isn't placed into droppable
|
154
247
|
revertDuration: -1, // duration while the item returns to its place
|
@@ -164,7 +257,7 @@ jQuery(function(){
|
|
164
257
|
delay: 150,
|
165
258
|
dropOnEmpty: true,
|
166
259
|
items: ".drg_column",
|
167
|
-
connectWith:
|
260
|
+
connectWith: "#"+editor_id+" .panel_grid_body",
|
168
261
|
placeholder: "placeholder",
|
169
262
|
start: function (e, ui) {
|
170
263
|
ui.helper.css({'width': '' , 'height': ''}).addClass('col-md-' + jQuery(ui.helper).attr('data-col'));
|
@@ -178,50 +271,13 @@ jQuery(function(){
|
|
178
271
|
$(this).removeClass("hover-grid");
|
179
272
|
},
|
180
273
|
stop: function (e, ui) {
|
181
|
-
ui.item.
|
274
|
+
ui.item.css({left: "", top: "", position: ""});
|
182
275
|
if(!jQuery(ui.item).hasClass('grid-col-built')) parse_content_column(ui.item)
|
183
276
|
ui.item.addClass('grid-col-built');
|
277
|
+
editor.trigger("auto_save");
|
184
278
|
}
|
185
279
|
});
|
186
280
|
|
187
|
-
// column dropdown options
|
188
|
-
jQuery('.panel_grid_body ', editor).on({
|
189
|
-
click: function (e) {
|
190
|
-
if(confirm("Are you sure to delete this block?")) jQuery(this).closest(".drg_column").fadeDestroy();
|
191
|
-
e.preventDefault();
|
192
|
-
}
|
193
|
-
}, '.grid_col_remove').on({
|
194
|
-
click: function (e) {
|
195
|
-
var widget = jQuery(this).closest(".drg_column");
|
196
|
-
var widget_clone = widget.clone();
|
197
|
-
widget.after(widget_clone);
|
198
|
-
grid_content_manager(widget_clone.find(".grid_sortable_items"));
|
199
|
-
e.preventDefault();
|
200
|
-
}
|
201
|
-
}, '.grid_col_clone');
|
202
|
-
|
203
|
-
// content dropdown options
|
204
|
-
jQuery('.panel_grid_body ', editor).on({
|
205
|
-
click: function (e) {
|
206
|
-
if(confirm("Are you sure to delete this content?")) jQuery(this).closest(".drg_item").fadeDestroy();
|
207
|
-
e.preventDefault();
|
208
|
-
}
|
209
|
-
}, '.drg_item .grid_content_remove').on({
|
210
|
-
click: function (e) {
|
211
|
-
var widget = jQuery(this).closest(".drg_item");
|
212
|
-
var widget_clone = widget.clone();
|
213
|
-
widget.after(widget_clone);
|
214
|
-
e.preventDefault();
|
215
|
-
}
|
216
|
-
}, '.drg_item .grid_content_clone').on({
|
217
|
-
click: function (e) {
|
218
|
-
var panel_content = $(this).closest(".drg_item");
|
219
|
-
var key = panel_content.attr("data-kind");
|
220
|
-
$.fn.gridEditor_options[key]["callback"](panel_content.children(".grid_item_content"));
|
221
|
-
e.preventDefault();
|
222
|
-
}
|
223
|
-
}, '.drg_item .grid_content_edit');
|
224
|
-
|
225
281
|
function grid_content_manager(item) {
|
226
282
|
// Sort the children (content elements)
|
227
283
|
jQuery(item).sortable({
|
@@ -231,7 +287,7 @@ jQuery(function(){
|
|
231
287
|
delay: 150,
|
232
288
|
dropOnEmpty: true,
|
233
289
|
items: ".drg_item",
|
234
|
-
connectWith: '.grid_sortable_items',
|
290
|
+
connectWith: "#"+editor_id+' .grid_sortable_items',
|
235
291
|
placeholder: "placeholder",
|
236
292
|
start: function (e, ui) {
|
237
293
|
ui.helper.css({'width': '' , 'height': ''}).addClass('col-md-12');
|
@@ -244,12 +300,233 @@ jQuery(function(){
|
|
244
300
|
$(this).removeClass("hover-grid");
|
245
301
|
},
|
246
302
|
stop: function (e, ui) {
|
247
|
-
ui.item.addClass('col-md-12').
|
303
|
+
ui.item.addClass('col-md-12').css({left: "", top: "", position: ""});
|
248
304
|
if(!jQuery(ui.item).hasClass('grid-item-built')) parse_content_content(ui.item)
|
249
305
|
ui.item.addClass('grid-item-built');
|
306
|
+
editor.trigger("auto_save");
|
250
307
|
}
|
251
308
|
});
|
252
309
|
}
|
253
310
|
return textarea;
|
254
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
|
+
|
255
532
|
});
|