alchemy_cms 2.6.3 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.simplecov +14 -0
- data/.travis.yml +1 -1
- data/Gemfile +7 -6
- data/README.md +15 -5
- data/alchemy_cms.gemspec +3 -2
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +9 -17
- data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +70 -0
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +80 -0
- data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +43 -19
- data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +3 -1
- data/app/assets/javascripts/alchemy/alchemy.js +4 -2
- data/app/assets/javascripts/alchemy/alchemy.onload.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.spinner.js.coffee +14 -0
- data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee.erb +96 -0
- data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +22 -0
- data/app/assets/javascripts/alchemy/alchemy.windows.js.coffee +28 -17
- data/app/assets/stylesheets/alchemy/base.scss +6 -0
- data/app/assets/stylesheets/alchemy/elements.scss +2 -28
- data/app/assets/stylesheets/alchemy/errors.scss +1 -1
- data/app/assets/stylesheets/alchemy/menubar.css.scss +2 -0
- data/app/assets/stylesheets/alchemy/sitemap.scss +21 -34
- data/app/assets/stylesheets/alchemy/tables.scss +13 -3
- data/app/controllers/alchemy/admin/attachments_controller.rb +10 -5
- data/app/controllers/alchemy/admin/base_controller.rb +19 -0
- data/app/controllers/alchemy/admin/contents_controller.rb +1 -4
- data/app/controllers/alchemy/admin/dashboard_controller.rb +2 -1
- data/app/controllers/alchemy/admin/elements_controller.rb +1 -1
- data/app/controllers/alchemy/admin/essence_files_controller.rb +1 -1
- data/app/controllers/alchemy/admin/essence_pictures_controller.rb +70 -56
- data/app/controllers/alchemy/admin/pages_controller.rb +37 -114
- data/app/controllers/alchemy/admin/pictures_controller.rb +5 -12
- data/app/controllers/alchemy/admin/resources_controller.rb +3 -1
- data/app/controllers/alchemy/admin/trash_controller.rb +1 -1
- data/app/controllers/alchemy/attachments_controller.rb +1 -1
- data/app/controllers/alchemy/base_controller.rb +3 -15
- data/app/controllers/alchemy/messages_controller.rb +4 -10
- data/app/controllers/alchemy/pages_controller.rb +6 -6
- data/app/controllers/alchemy/passwords_controller.rb +1 -1
- data/app/controllers/alchemy/user_sessions_controller.rb +1 -1
- data/app/helpers/alchemy/admin/base_helper.rb +49 -230
- data/app/helpers/alchemy/admin/contents_helper.rb +5 -1
- data/app/helpers/alchemy/admin/elements_helper.rb +19 -47
- data/app/helpers/alchemy/admin/essences_helper.rb +59 -17
- data/app/helpers/alchemy/admin/navigation_helper.rb +204 -0
- data/app/helpers/alchemy/admin/pages_helper.rb +22 -79
- data/app/helpers/alchemy/admin/pictures_helper.rb +1 -1
- data/app/helpers/alchemy/admin/tags_helper.rb +42 -0
- data/app/helpers/alchemy/base_helper.rb +0 -11
- data/app/helpers/alchemy/elements_helper.rb +48 -25
- data/app/helpers/alchemy/essences_helper.rb +0 -20
- data/app/helpers/alchemy/pages_helper.rb +18 -14
- data/app/helpers/alchemy/url_helper.rb +1 -0
- data/app/mailers/alchemy/messages.rb +4 -6
- data/app/models/alchemy/attachment.rb +3 -0
- data/app/models/alchemy/cell.rb +33 -35
- data/app/models/alchemy/content.rb +20 -111
- data/app/models/alchemy/content/factory.rb +188 -0
- data/app/models/alchemy/element.rb +51 -200
- data/app/models/alchemy/element/definitions.rb +52 -0
- data/app/models/alchemy/element/presenters.rb +87 -0
- data/app/models/alchemy/essence_date.rb +1 -1
- data/app/models/alchemy/essence_file.rb +6 -7
- data/app/models/alchemy/essence_picture.rb +19 -4
- data/app/models/alchemy/message.rb +18 -14
- data/app/models/alchemy/page.rb +120 -214
- data/app/models/alchemy/page/elements.rb +145 -36
- data/app/models/alchemy/page/natures.rb +90 -0
- data/app/models/alchemy/page/scopes.rb +93 -0
- data/app/models/alchemy/page/users.rb +25 -0
- data/app/models/alchemy/picture.rb +15 -0
- data/app/models/alchemy/site.rb +15 -1
- data/app/models/alchemy/site/layout.rb +38 -0
- data/app/models/alchemy/user.rb +13 -3
- data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +7 -7
- data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +8 -8
- data/app/views/alchemy/admin/attachments/_tag_list.html.erb +1 -16
- data/app/views/alchemy/admin/attachments/destroy.js.erb +1 -4
- data/app/views/alchemy/admin/contents/create.js.erb +1 -1
- data/app/views/alchemy/admin/dashboard/index.html.erb +14 -13
- data/app/views/alchemy/admin/elements/_element_head.html.erb +7 -7
- data/app/views/alchemy/admin/elements/_refresh_editor.js.erb +10 -0
- data/app/views/alchemy/admin/elements/create.js.erb +44 -44
- data/app/views/alchemy/admin/elements/fold.js.erb +22 -26
- data/app/views/alchemy/admin/elements/trash.js.erb +1 -1
- data/app/views/alchemy/admin/elements/update.js.erb +22 -25
- data/app/views/alchemy/admin/essence_files/assign.js.erb +8 -3
- data/app/views/alchemy/admin/essence_pictures/crop.html.erb +14 -12
- data/app/views/alchemy/admin/essence_pictures/edit.html.erb +22 -39
- data/app/views/alchemy/admin/pages/_page.html.erb +73 -80
- data/app/views/alchemy/admin/pages/destroy.js.erb +2 -2
- data/app/views/alchemy/admin/pages/edit.html.erb +21 -18
- data/app/views/alchemy/admin/pages/fold.js.erb +1 -0
- data/app/views/alchemy/admin/pages/info.html.erb +32 -0
- data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +11 -13
- data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +20 -20
- data/app/views/alchemy/admin/partials/_sub_navigation.html.erb +8 -0
- data/app/views/alchemy/admin/partials/_toolbar_button.html.erb +25 -0
- data/app/views/alchemy/admin/partials/_upload_form.html.erb +15 -15
- data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +39 -39
- data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +10 -10
- data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -16
- data/app/views/alchemy/admin/resources/destroy.js.erb +1 -1
- data/app/views/alchemy/base/500.html.erb +1 -1
- data/app/views/alchemy/base/permission_denied.js.erb +1 -1
- data/app/views/alchemy/base/redirect.js.erb +1 -1
- data/app/views/alchemy/essences/_essence_link_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +1 -1
- data/app/views/alchemy/essences/{_essence_picture_tools.html.erb → shared/_essence_picture_tools.html.erb} +5 -5
- data/app/views/alchemy/essences/{_linkable_essence_tools.html.erb → shared/_linkable_essence_tools.html.erb} +0 -0
- data/app/views/alchemy/messages/contact_form_mail.de.text.erb +12 -0
- data/app/views/alchemy/messages/contact_form_mail.en.text.erb +12 -0
- data/app/views/alchemy/notifications/reset_password_instructions.de.text.erb +1 -1
- data/app/views/alchemy/notifications/reset_password_instructions.en.text.erb +2 -2
- data/app/views/alchemy/pages/sitemap.xml.erb +3 -5
- data/app/views/alchemy/user_sessions/leave.html.erb +1 -1
- data/app/views/layouts/alchemy/admin.html.erb +4 -2
- data/app/views/layouts/alchemy/sitemap.xml.erb +1 -1
- data/bin/alchemy +7 -13
- data/config/alchemy/config.yml +1 -0
- data/config/authorization_rules.rb +2 -3
- data/config/initializers/dragonfly.rb +2 -0
- data/config/locales/alchemy.de.yml +8 -9
- data/config/locales/alchemy.en.yml +7 -4
- data/config/routes.rb +3 -0
- data/db/migrate/{20130214233001_alchemy_two_point_five.rb → 20130827094554_alchemy_two_point_six.rb} +29 -6
- data/lib/alchemy/auth/engine.rb +9 -0
- data/lib/alchemy/capistrano.rb +37 -12
- data/lib/alchemy/config.rb +48 -35
- data/lib/alchemy/engine.rb +35 -6
- data/lib/alchemy/essence.rb +25 -29
- data/lib/alchemy/ferret/search.rb +86 -0
- data/lib/alchemy/{scoped_pagination_url_helper.rb → kaminari/scoped_pagination_url_helper.rb} +0 -0
- data/lib/alchemy/logger.rb +3 -4
- data/lib/alchemy/page_layout.rb +124 -55
- data/lib/alchemy/resource.rb +0 -10
- data/lib/alchemy/resources_helper.rb +0 -5
- data/lib/alchemy/seeder.rb +1 -32
- data/lib/alchemy/shell.rb +6 -1
- data/lib/alchemy/tinymce.rb +41 -32
- data/lib/alchemy/upgrader.rb +3 -1
- data/lib/alchemy/upgrader/two_point_five.rb +15 -8
- data/lib/alchemy/upgrader/two_point_one.rb +10 -10
- data/lib/alchemy/upgrader/two_point_two.rb +96 -51
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +5 -46
- data/lib/rails/generators/alchemy/deploy_script/templates/deploy.rb.tt +1 -1
- data/lib/rails/generators/alchemy/devise/devise_generator.rb +9 -4
- data/lib/rails/generators/alchemy/essence/essence_generator.rb +7 -6
- data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +1 -1
- data/lib/rails/generators/alchemy/scaffold/files/_standard.html.erb +1 -0
- data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +1 -0
- data/lib/rails/generators/alchemy/site_layouts/site_layouts_generator.rb +23 -0
- data/lib/rails/generators/alchemy/site_layouts/templates/layout.html.erb +1 -0
- data/lib/rails/generators/alchemy/site_layouts/templates/layout.html.haml +1 -0
- data/lib/rails/generators/alchemy/site_layouts/templates/layout.html.slim +1 -0
- data/lib/rails/templates/alchemy.rb +2 -2
- data/lib/tasks/alchemy/db.rake +3 -1
- data/lib/tasks/alchemy/tidy.rake +82 -0
- data/lib/tasks/alchemy/upgrade.rake +2 -1
- data/spec/controllers/admin/attachments_controller_spec.rb +124 -0
- data/spec/controllers/admin/base_controller_spec.rb +35 -0
- data/spec/controllers/admin/clipboard_controller_spec.rb +1 -1
- data/spec/controllers/admin/contents_controller_spec.rb +17 -26
- data/spec/controllers/admin/dashboard_controller_spec.rb +121 -0
- data/spec/controllers/admin/elements_controller_spec.rb +1 -1
- data/spec/controllers/admin/essence_files_controller_spec.rb +67 -0
- data/spec/controllers/admin/essence_pictures_controller_spec.rb +161 -0
- data/spec/controllers/admin/languages_controller_spec.rb +1 -1
- data/spec/controllers/admin/layoutpages_controller_spec.rb +28 -0
- data/spec/controllers/admin/pages_controller_spec.rb +164 -118
- data/spec/controllers/admin/pictures_controller_spec.rb +89 -0
- data/spec/controllers/admin/trash_controller_spec.rb +21 -31
- data/spec/controllers/admin/users_controller_spec.rb +114 -85
- data/spec/controllers/attachments_controller_spec.rb +6 -2
- data/spec/controllers/base_controller_spec.rb +22 -0
- data/spec/controllers/elements_controller_spec.rb +1 -1
- data/spec/controllers/messages_controller_spec.rb +200 -0
- data/spec/controllers/pictures_controller_spec.rb +1 -1
- data/spec/controllers/user_sessions_controller_spec.rb +7 -6
- data/spec/controllers/users_controller_spec.rb +2 -2
- data/spec/dummy/config/alchemy/cells.yml +2 -0
- data/spec/dummy/config/application.rb +19 -8
- data/spec/dummy/db/migrate/{20130214233001_alchemy_two_point_five.rb → 20130827094554_alchemy_two_point_six.rb} +29 -6
- data/spec/dummy/db/schema.rb +1 -1
- data/spec/fast_specs.rb +15 -0
- data/spec/helpers/admin/base_helper_spec.rb +53 -34
- data/spec/helpers/admin/contents_helper_spec.rb +15 -7
- data/spec/helpers/admin/elements_helper_spec.rb +79 -34
- data/spec/helpers/admin/essences_helper_spec.rb +45 -31
- data/spec/helpers/admin/navigation_helper_spec.rb +204 -0
- data/spec/helpers/admin/pages_helper_spec.rb +25 -15
- data/spec/helpers/admin/tags_helper_spec.rb +62 -2
- data/spec/helpers/elements_helper_spec.rb +202 -138
- data/spec/helpers/pages_helper_spec.rb +48 -0
- data/spec/helpers/url_helper_spec.rb +7 -0
- data/spec/libraries/config_spec.rb +110 -3
- data/spec/libraries/essence_spec.rb +29 -9
- data/spec/libraries/page_layout_spec.rb +134 -0
- data/spec/libraries/resource_spec.rb +3 -16
- data/spec/libraries/resources_helper_spec.rb +4 -8
- data/spec/libraries/shell_spec.rb +1 -0
- data/spec/libraries/tinymce_spec.rb +61 -0
- data/spec/mailers/messages_spec.rb +23 -0
- data/spec/models/attachment_spec.rb +45 -0
- data/spec/models/cell_spec.rb +62 -9
- data/spec/models/content_spec.rb +110 -28
- data/spec/models/element_spec.rb +275 -253
- data/spec/models/essence_date_spec.rb +25 -0
- data/spec/models/essence_file_spec.rb +23 -0
- data/spec/models/essence_html_spec.rb +13 -0
- data/spec/models/essence_picture_spec.rb +16 -0
- data/spec/models/essence_text_spec.rb +29 -0
- data/spec/models/language_spec.rb +34 -0
- data/spec/models/message_spec.rb +43 -0
- data/spec/models/page_spec.rb +726 -567
- data/spec/models/picture_spec.rb +98 -0
- data/spec/models/site_spec.rb +60 -2
- data/spec/models/tag_spec.rb +31 -0
- data/spec/models/user_spec.rb +4 -4
- data/spec/spec_helper.rb +49 -58
- data/spec/support/alchemy/controller_helpers.rb +35 -0
- data/spec/support/alchemy/{specs_helpers.rb → integration_helpers.rb} +4 -8
- data/spec/{factories.rb → support/factories.rb} +11 -1
- data/vendor/assets/javascripts/jquery_plugins/jquery.ui.nestedSortable.js +2 -8
- metadata +166 -106
- data/Guardfile +0 -16
- data/app/assets/javascripts/alchemy/alchemy.dirty.js +0 -93
- data/app/assets/javascripts/alchemy/alchemy.dragndrop.js +0 -122
- data/app/models/alchemy/tree_node.rb +0 -4
- data/app/views/alchemy/admin/pages/_page_infos.html.erb +0 -3
- data/app/views/alchemy/admin/partials/_sub_navigation_tab.html.erb +0 -8
- data/app/views/alchemy/messages/contact_form_mail.text.erb +0 -12
- data/config/initializers/kaminari_config.rb +0 -9
- data/db/migrate/20130221200514_migrate_attachments_to_dragonfly.rb +0 -21
- data/db/migrate/20130312205327_change_alchemy_users_role_to_roles.rb +0 -11
- data/lib/alchemy/auth_engine.rb +0 -7
- data/lib/alchemy/authentication_helpers.rb +0 -9
- data/lib/alchemy/ferret_search.rb +0 -84
- data/lib/extensions/array.rb +0 -25
- data/lib/extensions/hash.rb +0 -34
- data/spec/dummy/db/migrate/20130221200514_migrate_attachments_to_dragonfly.rb +0 -21
- data/spec/dummy/db/migrate/20130312205327_change_alchemy_users_role_to_roles.rb +0 -11
- data/spec/models/page_layout_spec.rb +0 -60
|
@@ -11,8 +11,10 @@ Alchemy.GUI =
|
|
|
11
11
|
Alchemy.overlayObserver(scope)
|
|
12
12
|
Alchemy.Hotkeys(scope)
|
|
13
13
|
Alchemy.ListFilter(scope)
|
|
14
|
+
Alchemy.Spinner.watch(scope)
|
|
14
15
|
|
|
15
16
|
initElement: ($el) ->
|
|
16
17
|
Alchemy.ElementDirtyObserver($el)
|
|
17
18
|
Alchemy.GUI.init($el)
|
|
18
|
-
Alchemy.ImageLoader($el)
|
|
19
|
+
Alchemy.ImageLoader($el)
|
|
20
|
+
Alchemy.Spinner.watch($el)
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
//= require alchemy/alchemy.dirty
|
|
25
25
|
//= require alchemy/alchemy.dragndrop
|
|
26
26
|
//= require alchemy/alchemy.element_editors
|
|
27
|
+
//= require alchemy/alchemy.elements_window
|
|
27
28
|
//= require alchemy/alchemy.growler
|
|
28
29
|
//= require alchemy/alchemy.gui
|
|
29
30
|
//= require alchemy/alchemy.hotkeys
|
|
@@ -35,10 +36,11 @@
|
|
|
35
36
|
//= require alchemy/alchemy.page_sorter
|
|
36
37
|
//= require alchemy/alchemy.uploader
|
|
37
38
|
//= require alchemy/alchemy.file_progress
|
|
39
|
+
//= require alchemy/alchemy.preview_window
|
|
38
40
|
//= require alchemy/alchemy.sitemap
|
|
39
41
|
//= require alchemy/alchemy.spinner
|
|
40
42
|
//= require alchemy/alchemy.swf_upload
|
|
43
|
+
//= require alchemy/alchemy.tinymce
|
|
44
|
+
//= require alchemy/alchemy.translations
|
|
41
45
|
//= require alchemy/alchemy.windows
|
|
42
|
-
//= require alchemy/alchemy.preview_window
|
|
43
|
-
//= require alchemy/alchemy.elements_window
|
|
44
46
|
//= require alchemy/alchemy.custom
|
|
@@ -25,7 +25,7 @@ $ ->
|
|
|
25
25
|
$('select#change_locale').on 'change', (e) ->
|
|
26
26
|
url = Alchemy.current_url
|
|
27
27
|
delimiter = if url.match(/\?/) then '&' else '?'
|
|
28
|
-
window.location = url
|
|
28
|
+
window.location.href = "#{url}#{delimiter}locale=#{$(this).val()}"
|
|
29
29
|
|
|
30
30
|
# Attaches the image loader on all images
|
|
31
31
|
Alchemy.ImageLoader('#main_content')
|
|
@@ -10,6 +10,14 @@ Alchemy.Spinner =
|
|
|
10
10
|
speed: 1.25
|
|
11
11
|
hwaccel: true
|
|
12
12
|
|
|
13
|
+
tiny: (opts) ->
|
|
14
|
+
defaults = $.extend({}, Alchemy.Spinner.DEFAULTS,
|
|
15
|
+
length: 2
|
|
16
|
+
width: 1
|
|
17
|
+
radius: 1
|
|
18
|
+
)
|
|
19
|
+
new Spinner($.extend(defaults, opts))
|
|
20
|
+
|
|
13
21
|
small: (opts) ->
|
|
14
22
|
defaults = $.extend({}, Alchemy.Spinner.DEFAULTS,
|
|
15
23
|
length: 2
|
|
@@ -33,3 +41,9 @@ Alchemy.Spinner =
|
|
|
33
41
|
radius: 8
|
|
34
42
|
)
|
|
35
43
|
new Spinner($.extend(defaults, opts))
|
|
44
|
+
|
|
45
|
+
watch: (scope) ->
|
|
46
|
+
$('a.spinner', scope).click ->
|
|
47
|
+
spinner = Alchemy.Spinner.tiny()
|
|
48
|
+
spinner.spin(this)
|
|
49
|
+
$(this).css('background': 'none').off('click')
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Alchemy Tinymce wrapper
|
|
2
|
+
#
|
|
3
|
+
window.Alchemy.Tinymce =
|
|
4
|
+
|
|
5
|
+
# Holds the default Alchemy TinyMCE configuration
|
|
6
|
+
#
|
|
7
|
+
defaults:
|
|
8
|
+
plugins: "<%= Alchemy::Tinymce.plugins.join(',') %>"
|
|
9
|
+
<% Alchemy::Tinymce.init.each do |k, v| %>
|
|
10
|
+
<%= k %>: <%= v.to_json %>
|
|
11
|
+
<% end %>
|
|
12
|
+
<% if Alchemy::Tinymce.setup %>
|
|
13
|
+
setup: <%= Alchemy::Tinymce.setup %>
|
|
14
|
+
<% end %>
|
|
15
|
+
|
|
16
|
+
# Holds custom tinymce configurations
|
|
17
|
+
#
|
|
18
|
+
# The key has to be a unique selector in the format of: "element_name_content_name"
|
|
19
|
+
#
|
|
20
|
+
# The value has to be a valid tinymce configuration object.
|
|
21
|
+
#
|
|
22
|
+
customConfigs: {}
|
|
23
|
+
|
|
24
|
+
# Returns default config for tinymce editors.
|
|
25
|
+
#
|
|
26
|
+
getDefaultConfig: ->
|
|
27
|
+
config = @defaults
|
|
28
|
+
config.language = Alchemy.locale
|
|
29
|
+
config.mode = "specific_textareas"
|
|
30
|
+
config.editor_selector = "default_tinymce"
|
|
31
|
+
config.init_instance_callback = (inst) ->
|
|
32
|
+
$this = $("##{inst.editorId}")
|
|
33
|
+
parent = $this.parents('.element_editor')
|
|
34
|
+
parent.find('.spinner').remove()
|
|
35
|
+
inst.onChange.add ->
|
|
36
|
+
Alchemy.setElementDirty(parent)
|
|
37
|
+
return config
|
|
38
|
+
|
|
39
|
+
# Returns configuration for given custom tinymce editor selector.
|
|
40
|
+
#
|
|
41
|
+
# It uses the +.getDefaultConfig+ and merges the custom parts.
|
|
42
|
+
#
|
|
43
|
+
getCustomConfig: (editor) ->
|
|
44
|
+
if editor_config = @customConfigs[editor]
|
|
45
|
+
config = $.extend({}, @getDefaultConfig(), editor_config)
|
|
46
|
+
config.mode = 'specific_textareas'
|
|
47
|
+
config.editor_selector = new RegExp("custom_tinymce #{editor}")
|
|
48
|
+
return config
|
|
49
|
+
|
|
50
|
+
# Initializes all default TinyMCE instances
|
|
51
|
+
#
|
|
52
|
+
init: ->
|
|
53
|
+
spinner = Alchemy.Spinner.small()
|
|
54
|
+
$('.tinymce_container').prepend spinner.spin().el
|
|
55
|
+
tinymce.init @getDefaultConfig()
|
|
56
|
+
|
|
57
|
+
# Initializes all tinymce editors with custom configuration.
|
|
58
|
+
#
|
|
59
|
+
# @param editors [Array]
|
|
60
|
+
# - Editor selectors that should be initialized. The selector has to be in format of:
|
|
61
|
+
# "element_name_content_name"
|
|
62
|
+
#
|
|
63
|
+
initCustomEditors: (editors) ->
|
|
64
|
+
return if not editors
|
|
65
|
+
for editor in editors
|
|
66
|
+
if custom_editor_config = @getCustomConfig(editor)
|
|
67
|
+
tinymce.init custom_editor_config
|
|
68
|
+
|
|
69
|
+
# Adds a TinyMCE editor to given dom elements.
|
|
70
|
+
#
|
|
71
|
+
# Checks if element has custom tinymce config and uses this to init editor.
|
|
72
|
+
# Otherwise it uses the default config.
|
|
73
|
+
#
|
|
74
|
+
addEditor: (elements) ->
|
|
75
|
+
self = Alchemy.Tinymce
|
|
76
|
+
$(elements).each ->
|
|
77
|
+
if custom_editor = this.classList[1]
|
|
78
|
+
config = self.getCustomConfig(custom_editor)
|
|
79
|
+
else
|
|
80
|
+
config = self.getDefaultConfig()
|
|
81
|
+
tinymce.init(config)
|
|
82
|
+
tinymce.execCommand('mceAddControl', true, this.id)
|
|
83
|
+
|
|
84
|
+
# Removes the TinyMCE editor from given dom elements.
|
|
85
|
+
#
|
|
86
|
+
removeEditor: (elements) ->
|
|
87
|
+
$(elements).each ->
|
|
88
|
+
tinymce.get(this.id).remove()
|
|
89
|
+
|
|
90
|
+
# Populate custom tinymce configurations
|
|
91
|
+
<% Alchemy::Tinymce.custom_config_contents.each do |content| %>
|
|
92
|
+
Alchemy.Tinymce.customConfigs["<%= content['element'] %>_<%= content['name'] %>"] =
|
|
93
|
+
<% content.fetch('settings', {}).fetch('tinymce', {}).each do |k, v| %>
|
|
94
|
+
<%= k %>: <%= v.to_json %>
|
|
95
|
+
<% end %>
|
|
96
|
+
<% end %>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
window.Alchemy = {} if typeof(window.Alchemy) is 'undefined'
|
|
2
|
+
|
|
3
|
+
$.extend Alchemy,
|
|
4
|
+
|
|
5
|
+
# Holds translations
|
|
6
|
+
#
|
|
7
|
+
translations:
|
|
8
|
+
page_dirty_notice:
|
|
9
|
+
en: "You have unsaved changes on this page. They will be lost if you continue."
|
|
10
|
+
de: "Sie haben ungesicherte Änderungen auf der Seite. Diese gehen verloren, wenn Sie fortfahren."
|
|
11
|
+
element_dirty_notice:
|
|
12
|
+
en: "This element has unsaved changes. Do you really want to fold it?"
|
|
13
|
+
de: "Dieses Element hat nicht gespeicherte Änderungen. Möchten Sie es wirklich einklappen?"
|
|
14
|
+
warning:
|
|
15
|
+
en: 'Warning!'
|
|
16
|
+
de: 'Achtung!'
|
|
17
|
+
ok:
|
|
18
|
+
en: 'Ok'
|
|
19
|
+
de: 'Ok'
|
|
20
|
+
cancel:
|
|
21
|
+
en: 'Cancel'
|
|
22
|
+
de: 'Abbrechen'
|
|
@@ -28,16 +28,24 @@ $.extend Alchemy,
|
|
|
28
28
|
# Display a error message for dialogs
|
|
29
29
|
# Used by Alchemy.openWindow if errors happen
|
|
30
30
|
AjaxErrorHandler: ($dialog, status, textStatus, errorThrown) ->
|
|
31
|
+
error_type = "warning"
|
|
31
32
|
$div = $('<div class="with_padding" />')
|
|
32
|
-
$errorDiv = $("<div id=\"errorExplanation\" class=\"ajax_status_code_#{status}\" />")
|
|
33
33
|
$dialog.html $div
|
|
34
|
+
switch status
|
|
35
|
+
when 0
|
|
36
|
+
error_header = "The server does not respond."
|
|
37
|
+
error_body = "Please check server and try again."
|
|
38
|
+
when 403
|
|
39
|
+
error_header = "You are not authorized!"
|
|
40
|
+
error_body = "Please close this window."
|
|
41
|
+
else
|
|
42
|
+
error_header = "#{errorThrown} (#{status})"
|
|
43
|
+
error_body = "Please check log and try again."
|
|
44
|
+
error_type = "error"
|
|
45
|
+
$errorDiv = $("<div id=\"errorExplanation\" class=\"ajax_status_code #{error_type}\" />")
|
|
46
|
+
$errorDiv.append "<h2>#{error_header}</h2>"
|
|
47
|
+
$errorDiv.append "<p>#{error_body}</p>"
|
|
34
48
|
$div.append $errorDiv
|
|
35
|
-
if status is 0
|
|
36
|
-
$errorDiv.append "<h2>The server does not respond.</h2>"
|
|
37
|
-
$errorDiv.append "<p>Please check server and try again.</p>"
|
|
38
|
-
else
|
|
39
|
-
$errorDiv.append "<h2>" + errorThrown + " (" + status + ")</h2>"
|
|
40
|
-
$errorDiv.append "<p>Please check log and try again.</p>"
|
|
41
49
|
|
|
42
50
|
# Opens a confirm window
|
|
43
51
|
#
|
|
@@ -167,16 +175,19 @@ $.extend Alchemy,
|
|
|
167
175
|
url: url
|
|
168
176
|
success: (data, textStatus, XMLHttpRequest) ->
|
|
169
177
|
widget = $dialog.dialog("widget")
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
if XMLHttpRequest.getResponseHeader('Content-Type').match(/javascript/)
|
|
179
|
+
$dialog.empty()
|
|
180
|
+
else
|
|
181
|
+
$dialog.html(data)
|
|
182
|
+
$dialog.css(overflow: (if options.overflow then "visible" else "auto"))
|
|
183
|
+
widget.css(overflow: (if options.overflow then "visible" else "hidden"))
|
|
184
|
+
if options.width is "auto"
|
|
185
|
+
widget.css left: (($(window).width() / 2) - ($dialog.width() / 2))
|
|
186
|
+
if options.height is "auto"
|
|
187
|
+
widget.css top: ($(window).height() - $dialog.dialog("widget").height()) / 2
|
|
188
|
+
Alchemy.GUI.init Alchemy.CurrentWindow
|
|
189
|
+
if options.image_loader
|
|
190
|
+
Alchemy.ImageLoader Alchemy.CurrentWindow, {color: options.image_loader_color}
|
|
180
191
|
error: (XMLHttpRequest, textStatus, errorThrown) ->
|
|
181
192
|
Alchemy.AjaxErrorHandler $dialog, XMLHttpRequest.status, textStatus, errorThrown
|
|
182
193
|
complete: (jqXHR, textStatus) ->
|
|
@@ -534,19 +534,6 @@ div.essence_file_tools a.edit_file {
|
|
|
534
534
|
background: image-url('alchemy/icons.png') -160px -167px;
|
|
535
535
|
}
|
|
536
536
|
|
|
537
|
-
td.content_editor_essence_type {
|
|
538
|
-
width: 90px;
|
|
539
|
-
height: 20px;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
table.content_editor_table {
|
|
543
|
-
margin-bottom: 8px;
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
.content_editor_table .thin_border {
|
|
547
|
-
width: 210px;
|
|
548
|
-
}
|
|
549
|
-
|
|
550
537
|
a.new_content_link {
|
|
551
538
|
float: none;
|
|
552
539
|
margin-bottom: 12px !important;
|
|
@@ -563,12 +550,6 @@ div.tinymce_container {
|
|
|
563
550
|
}
|
|
564
551
|
}
|
|
565
552
|
|
|
566
|
-
div.content_text_editor.text_short {
|
|
567
|
-
margin-top: 0;
|
|
568
|
-
margin-bottom: 0;
|
|
569
|
-
display: inline;
|
|
570
|
-
}
|
|
571
|
-
|
|
572
553
|
input.long,
|
|
573
554
|
input.text_long {
|
|
574
555
|
width: 363px;
|
|
@@ -580,13 +561,6 @@ select.long {
|
|
|
580
561
|
padding: 0;
|
|
581
562
|
}
|
|
582
563
|
|
|
583
|
-
div.content_text_editor input.text_short {
|
|
584
|
-
border-width: 1px;
|
|
585
|
-
width: 50px;
|
|
586
|
-
margin-right: 4px;
|
|
587
|
-
padding: 2px;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
564
|
#alchemy .ui-dialog-content div.content_editor input.auto_resize {
|
|
591
565
|
width: 100%;
|
|
592
566
|
}
|
|
@@ -595,7 +569,7 @@ div.content_editor {
|
|
|
595
569
|
margin-bottom: 8px;
|
|
596
570
|
position: relative;
|
|
597
571
|
|
|
598
|
-
|
|
572
|
+
.thin_border, input[type="text"] {
|
|
599
573
|
width: 100%;
|
|
600
574
|
}
|
|
601
575
|
|
|
@@ -619,7 +593,7 @@ div.content_editor {
|
|
|
619
593
|
margin-right: 4px;
|
|
620
594
|
vertical-align: top;
|
|
621
595
|
|
|
622
|
-
.thin_border {
|
|
596
|
+
.thin_border, input[type="text"] {
|
|
623
597
|
width: 170px;
|
|
624
598
|
}
|
|
625
599
|
}
|
|
@@ -48,7 +48,7 @@ div#sort_panel {
|
|
|
48
48
|
.redirect_url {
|
|
49
49
|
position: absolute;
|
|
50
50
|
top: 4px;
|
|
51
|
-
right:
|
|
51
|
+
right: 199px;
|
|
52
52
|
text-align: right;
|
|
53
53
|
background-color: #fff0c4;
|
|
54
54
|
line-height: 22px;
|
|
@@ -108,13 +108,13 @@ div.sitemap_left_images {
|
|
|
108
108
|
div.sitemap_right_tools {
|
|
109
109
|
height: 22px;
|
|
110
110
|
background-color: $light-gray;
|
|
111
|
-
padding-left:
|
|
111
|
+
padding-left: 8px;
|
|
112
112
|
float: right;
|
|
113
|
-
width:
|
|
113
|
+
width: 120px;
|
|
114
114
|
|
|
115
115
|
a {
|
|
116
116
|
float: left;
|
|
117
|
-
width:
|
|
117
|
+
width: 24px;
|
|
118
118
|
height: 21px;
|
|
119
119
|
text-align: center;
|
|
120
120
|
|
|
@@ -134,8 +134,7 @@ div.sitemap_right_tools {
|
|
|
134
134
|
.sitemap_sitetools {
|
|
135
135
|
padding: 0;
|
|
136
136
|
float: left;
|
|
137
|
-
width:
|
|
138
|
-
margin-left: 8px;
|
|
137
|
+
width: 72px;
|
|
139
138
|
}
|
|
140
139
|
|
|
141
140
|
div#page_selector_container div.sitemap_right_tools {
|
|
@@ -217,7 +216,7 @@ div.page_infos {
|
|
|
217
216
|
float: right;
|
|
218
217
|
height: 20px;
|
|
219
218
|
padding: 1px;
|
|
220
|
-
width:
|
|
219
|
+
width: 68px;
|
|
221
220
|
}
|
|
222
221
|
|
|
223
222
|
#sub_navigation span.page_status_and_name span.page_status {
|
|
@@ -234,14 +233,13 @@ span.page_status {
|
|
|
234
233
|
background-image: image-url('alchemy/icons.png');
|
|
235
234
|
background-repeat: no-repeat;
|
|
236
235
|
float: left;
|
|
237
|
-
margin: 2px 2px 0 4px;
|
|
238
236
|
|
|
239
237
|
&.restricted {
|
|
240
238
|
background-position: -258px -39px;
|
|
241
239
|
}
|
|
242
240
|
|
|
243
241
|
&.not_restricted {
|
|
244
|
-
background-position: -
|
|
242
|
+
background-position: -288px -39px;
|
|
245
243
|
@include opacity(0.3);
|
|
246
244
|
}
|
|
247
245
|
|
|
@@ -264,47 +262,36 @@ span.page_status {
|
|
|
264
262
|
}
|
|
265
263
|
}
|
|
266
264
|
|
|
265
|
+
#sitemap .page_status {
|
|
266
|
+
margin: 2px 2px 0 4px;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.alchemy_overlay .page_status {
|
|
270
|
+
margin: 4px 4px 0 0;
|
|
271
|
+
}
|
|
272
|
+
|
|
267
273
|
.site_status {
|
|
268
274
|
float: left;
|
|
269
275
|
width: 16px;
|
|
270
276
|
height: 16px;
|
|
271
277
|
background: image-url('alchemy/icons.png') no-repeat 0 -40px;
|
|
272
278
|
position: relative;
|
|
273
|
-
|
|
279
|
+
|
|
280
|
+
a {
|
|
281
|
+
display: block;
|
|
282
|
+
height: 100%;
|
|
283
|
+
cursor: help;
|
|
284
|
+
}
|
|
274
285
|
}
|
|
275
286
|
|
|
276
287
|
.locked .site_status {
|
|
277
288
|
background-position: -32px -40px;
|
|
278
289
|
}
|
|
279
290
|
|
|
280
|
-
.tooltip {
|
|
281
|
-
@extend %tooltip;
|
|
282
|
-
right: auto;
|
|
283
|
-
left: -12px;
|
|
284
|
-
top: 24px;
|
|
285
|
-
min-width: 240px;
|
|
286
|
-
|
|
287
|
-
&:before {
|
|
288
|
-
right: auto;
|
|
289
|
-
left: 12px;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
p, h3 {
|
|
293
|
-
font-size: 11px;
|
|
294
|
-
margin: 0;
|
|
295
|
-
padding: 0;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
h3 { margin-top: 0.5em }
|
|
299
|
-
}
|
|
300
|
-
|
|
301
291
|
#sitemap.sorting {
|
|
302
292
|
.site_status { cursor: move }
|
|
303
|
-
.tooltip { display: none }
|
|
304
293
|
}
|
|
305
294
|
|
|
306
|
-
.site_status:hover .tooltip { display: block }
|
|
307
|
-
|
|
308
295
|
#sub_navigation span.page_status_and_name span.site_status {
|
|
309
296
|
float: none;
|
|
310
297
|
@include inline-block;
|