alchemy_cms 4.3.2 → 4.4.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/.github/workflows/ci.yml +92 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +59 -2
- data/Gemfile +6 -5
- data/README.md +7 -6
- data/alchemy_cms.gemspec +4 -2
- data/app/assets/config/alchemy_manifest.js +15 -0
- data/app/assets/javascripts/alchemy/admin.js +1 -0
- data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +1 -13
- data/app/assets/javascripts/alchemy/alchemy.i18n.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +84 -87
- data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +0 -4
- data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +1 -1
- data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee +2 -2
- data/app/assets/javascripts/alchemy/page_select.js +41 -0
- data/app/assets/javascripts/alchemy/templates/index.js +1 -0
- data/app/assets/javascripts/alchemy/templates/page.hbs +9 -0
- data/app/assets/stylesheets/alchemy/_mixins.scss +11 -1
- data/app/assets/stylesheets/alchemy/admin.scss +3 -0
- data/app/assets/stylesheets/alchemy/elements.scss +1 -0
- data/app/assets/stylesheets/alchemy/forms.scss +6 -5
- data/app/assets/stylesheets/alchemy/labels.scss +6 -0
- data/app/assets/stylesheets/alchemy/nodes.scss +154 -0
- data/app/assets/stylesheets/alchemy/page-select.scss +30 -0
- data/app/assets/stylesheets/alchemy/selects.scss +39 -22
- data/app/assets/stylesheets/alchemy/sitemap.scss +0 -33
- data/app/assets/stylesheets/alchemy/tags.scss +0 -3
- data/app/controllers/alchemy/admin/base_controller.rb +1 -0
- data/app/controllers/alchemy/admin/elements_controller.rb +24 -11
- data/app/controllers/alchemy/admin/languages_controller.rb +5 -0
- data/app/controllers/alchemy/admin/nodes_controller.rb +43 -0
- data/app/controllers/alchemy/admin/pages_controller.rb +1 -21
- data/app/controllers/alchemy/admin/resources_controller.rb +1 -1
- data/app/controllers/alchemy/admin/tags_controller.rb +1 -2
- data/app/controllers/alchemy/api/contents_controller.rb +17 -2
- data/app/controllers/alchemy/api/elements_controller.rb +26 -1
- data/app/controllers/alchemy/api/pages_controller.rb +78 -7
- data/app/controllers/alchemy/messages_controller.rb +23 -8
- data/app/helpers/alchemy/admin/contents_helper.rb +1 -1
- data/app/helpers/alchemy/admin/elements_helper.rb +6 -0
- data/app/helpers/alchemy/admin/essences_helper.rb +23 -4
- data/app/helpers/alchemy/elements_block_helper.rb +11 -3
- data/app/helpers/alchemy/elements_helper.rb +3 -3
- data/app/helpers/alchemy/essences_helper.rb +36 -9
- data/app/helpers/alchemy/pages_helper.rb +29 -0
- data/app/models/alchemy/content.rb +1 -1
- data/app/models/alchemy/element.rb +20 -8
- data/app/models/alchemy/element/element_contents.rb +6 -4
- data/app/models/alchemy/element/presenters.rb +2 -2
- data/app/models/alchemy/essence_page.rb +29 -0
- data/app/models/alchemy/essence_picture.rb +8 -3
- data/app/models/alchemy/language.rb +10 -2
- data/app/models/alchemy/node.rb +48 -0
- data/app/models/alchemy/page.rb +74 -3
- data/app/models/alchemy/page/page_elements.rb +12 -4
- data/app/models/alchemy/page/page_natures.rb +6 -0
- data/app/models/alchemy/page/page_scopes.rb +1 -1
- data/app/models/alchemy/picture.rb +5 -1
- data/app/models/concerns/alchemy/content_touching.rb +1 -1
- data/app/serializers/alchemy/element_serializer.rb +7 -1
- data/app/serializers/alchemy/page_serializer.rb +0 -4
- data/app/views/alchemy/_menubar.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_element.html.erb +18 -2
- data/app/views/alchemy/admin/leave.html.erb +1 -1
- data/app/views/alchemy/admin/nodes/_form.html.erb +39 -0
- data/app/views/alchemy/admin/nodes/_node.html.erb +87 -0
- data/app/views/alchemy/admin/nodes/edit.html.erb +1 -0
- data/app/views/alchemy/admin/nodes/index.html.erb +58 -0
- data/app/views/alchemy/admin/nodes/new.html.erb +1 -0
- data/app/views/alchemy/admin/pages/_anchor_link.html.erb +22 -0
- data/app/views/alchemy/admin/pages/_form.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_internal_link.html.erb +7 -11
- data/app/views/alchemy/admin/pages/_menu_fields.html.erb +33 -0
- data/app/views/alchemy/admin/pages/_sitemap.html.erb +0 -7
- data/app/views/alchemy/admin/pages/link.html.erb +4 -0
- data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +7 -3
- data/app/views/alchemy/admin/partials/_routes.html.erb +3 -3
- data/app/views/alchemy/essences/_essence_boolean_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_date_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_file_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_html_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_link_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_page_editor.html.erb +23 -0
- data/app/views/alchemy/essences/_essence_page_view.html.erb +5 -0
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +2 -0
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_richtext_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_select_editor.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_select_view.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +3 -0
- data/app/views/alchemy/essences/_essence_text_view.html.erb +1 -0
- data/config/alchemy/modules.yml +13 -4
- data/config/initializers/assets.rb +1 -13
- data/config/locales/alchemy.en.yml +27 -9
- data/config/routes.rb +11 -3
- data/db/migrate/20191016073858_create_alchemy_essence_pages.rb +8 -0
- data/db/migrate/20191029212236_create_alchemy_nodes.rb +24 -0
- data/lib/alchemy/admin/locale.rb +1 -1
- data/lib/alchemy/auth_accessors.rb +8 -2
- data/lib/alchemy/cache_digests/template_tracker.rb +8 -5
- data/lib/alchemy/elements_finder.rb +17 -14
- data/lib/alchemy/engine.rb +4 -0
- data/lib/alchemy/essence.rb +40 -2
- data/lib/alchemy/permissions.rb +2 -0
- data/lib/alchemy/tasks/tidy.rb +1 -1
- data/lib/alchemy/test_support/essence_shared_examples.rb +25 -8
- data/lib/alchemy/test_support/factories/essence_page_factory.rb +10 -0
- data/lib/alchemy/test_support/factories/essence_picture_factory.rb +5 -0
- data/lib/alchemy/test_support/factories/node_factory.rb +21 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/rails/generators/alchemy/elements/elements_generator.rb +0 -1
- data/lib/rails/generators/alchemy/elements/templates/view.html.erb +3 -3
- data/lib/rails/generators/alchemy/elements/templates/view.html.haml +3 -3
- data/lib/rails/generators/alchemy/elements/templates/view.html.slim +3 -3
- data/lib/rails/generators/alchemy/install/files/{_article_view.html.erb → _article.html.erb} +2 -2
- data/lib/rails/generators/alchemy/install/files/application.html.erb +13 -10
- data/lib/rails/generators/alchemy/install/install_generator.rb +2 -11
- data/lib/rails/generators/alchemy/menus/menus_generator.rb +24 -0
- data/lib/rails/generators/alchemy/menus/templates/node.html.erb +19 -0
- data/lib/rails/generators/alchemy/menus/templates/node.html.haml +16 -0
- data/lib/rails/generators/alchemy/menus/templates/node.html.slim +16 -0
- data/lib/rails/generators/alchemy/menus/templates/wrapper.html.erb +8 -0
- data/lib/rails/generators/alchemy/menus/templates/wrapper.html.haml +6 -0
- data/lib/rails/generators/alchemy/menus/templates/wrapper.html.slim +6 -0
- data/lib/rails/generators/alchemy/views/views_generator.rb +1 -1
- data/lib/tasks/alchemy/convert.rake +60 -0
- metadata +79 -20
- data/.rspec +0 -1
- data/.travis.yml +0 -28
- data/app/models/alchemy/page/page_users.rb +0 -60
- data/app/views/alchemy/admin/elements/list.html.erb +0 -16
- data/app/views/alchemy/admin/pages/_page_for_links.html.erb +0 -53
- data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +0 -9
- data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +0 -8
- data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +0 -8
- data/lib/rails/generators/alchemy/install/files/_article_editor.html.erb +0 -5
- data/lib/rails/generators/alchemy/install/files/alchemy.de.yml +0 -31
- data/lib/rails/generators/alchemy/install/files/alchemy.es.yml +0 -31
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<li>
|
|
2
|
+
<%= content_tag :div, class: [
|
|
3
|
+
'sitemap_node',
|
|
4
|
+
node.external? ? 'external' : 'internal',
|
|
5
|
+
"sitemap_node-level_#{node.depth}"
|
|
6
|
+
] do %>
|
|
7
|
+
<span class="nodes_tree-left_images">
|
|
8
|
+
<% if node.children.any? %>
|
|
9
|
+
<a class="node_folder" data-node-id="<%= node.id %>">
|
|
10
|
+
<% if node.folded? %>
|
|
11
|
+
<i class="far fa-plus-square fa-fw"></i>
|
|
12
|
+
<% else %>
|
|
13
|
+
<i class="far fa-minus-square fa-fw"></i>
|
|
14
|
+
<% end %>
|
|
15
|
+
</a>
|
|
16
|
+
<% else %>
|
|
17
|
+
|
|
18
|
+
<% end %>
|
|
19
|
+
</span>
|
|
20
|
+
<span class="nodes_tree-right_tools">
|
|
21
|
+
<% if can?(:edit, node) %>
|
|
22
|
+
<%= link_to_dialog(
|
|
23
|
+
render_icon(:edit),
|
|
24
|
+
alchemy.edit_admin_node_path(node),
|
|
25
|
+
{
|
|
26
|
+
title: node.root? ? Alchemy.t(:edit_menu) : Alchemy.t(:edit_node),
|
|
27
|
+
size: node.root? ? '450x120' : '450x360'
|
|
28
|
+
},
|
|
29
|
+
title: node.root? ? Alchemy.t(:edit_menu) : Alchemy.t(:edit_node)
|
|
30
|
+
) %>
|
|
31
|
+
<% end %>
|
|
32
|
+
<% if can?(:destroy, node) %>
|
|
33
|
+
<%= link_to_confirm_dialog(
|
|
34
|
+
render_icon(:minus),
|
|
35
|
+
node.root? ? Alchemy.t(:confirm_to_delete_menu) : Alchemy.t(:confirm_to_delete_node),
|
|
36
|
+
url_for(
|
|
37
|
+
controller: 'nodes',
|
|
38
|
+
action: 'destroy',
|
|
39
|
+
id: node.id
|
|
40
|
+
),
|
|
41
|
+
{
|
|
42
|
+
title: node.root? ? Alchemy.t(:delete_menu) : Alchemy.t(:delete_node)
|
|
43
|
+
}
|
|
44
|
+
) %>
|
|
45
|
+
<% end %>
|
|
46
|
+
<% if can?(:create, Alchemy::Node) %>
|
|
47
|
+
<%= link_to_dialog(
|
|
48
|
+
render_icon(:plus),
|
|
49
|
+
alchemy.new_admin_node_path(parent_id: node.id),
|
|
50
|
+
{
|
|
51
|
+
title: Alchemy.t(:create_node),
|
|
52
|
+
size: '450x360',
|
|
53
|
+
overflow: true
|
|
54
|
+
},
|
|
55
|
+
title: Alchemy.t(:create_node)
|
|
56
|
+
) %>
|
|
57
|
+
<% end %>
|
|
58
|
+
</span>
|
|
59
|
+
<div class="node_name">
|
|
60
|
+
<%= node.name || ' '.html_safe %>
|
|
61
|
+
<span class="node_page">
|
|
62
|
+
<% if node.page %>
|
|
63
|
+
<i class="icon far fa-file"></i>
|
|
64
|
+
|
|
65
|
+
<%= link_to [:edit, :admin, node.page], title: Alchemy.t(:edit_page) do %>
|
|
66
|
+
<%= node.page.name %>
|
|
67
|
+
<% end %>
|
|
68
|
+
<% end %>
|
|
69
|
+
</span>
|
|
70
|
+
<% if node.url %>
|
|
71
|
+
<span class="node_url">
|
|
72
|
+
<%= link_to node.url, node.url, target: '_blank', title: node.url %>
|
|
73
|
+
<% if node.external? %>
|
|
74
|
+
<i class="fas fa-external-link-alt fa-sm"></i>
|
|
75
|
+
<% end %>
|
|
76
|
+
</span>
|
|
77
|
+
<% end %>
|
|
78
|
+
</div>
|
|
79
|
+
<% end %>
|
|
80
|
+
<% if node.children.any? %>
|
|
81
|
+
<ul class="children<%= node.folded? ? ' hidden' : nil %>">
|
|
82
|
+
<% unless node.folded? %>
|
|
83
|
+
<%= render partial: 'node', collection: node.children.includes(:page, :children) %>
|
|
84
|
+
<% end %>
|
|
85
|
+
</ul>
|
|
86
|
+
<% end %>
|
|
87
|
+
</li>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render 'form', node: @node, button_label: Alchemy.t(:save) %>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<% content_for(:title) do %>
|
|
2
|
+
<%= Alchemy.t(:menus, scope: 'modules') %>
|
|
3
|
+
<% end %>
|
|
4
|
+
|
|
5
|
+
<% content_for(:toolbar) do %>
|
|
6
|
+
<div class="toolbar_buttons">
|
|
7
|
+
<%= render 'alchemy/admin/partials/site_select' %>
|
|
8
|
+
<%= render 'alchemy/admin/partials/language_tree_select' %>
|
|
9
|
+
<%= toolbar_button(
|
|
10
|
+
icon: 'plus',
|
|
11
|
+
label: Alchemy.t(:create_menu),
|
|
12
|
+
url: alchemy.new_admin_node_path,
|
|
13
|
+
hotkey: 'alt+n',
|
|
14
|
+
dialog_options: {
|
|
15
|
+
title: Alchemy.t(:create_menu),
|
|
16
|
+
size: '450x120'
|
|
17
|
+
},
|
|
18
|
+
if_permitted_to: [:create, Alchemy::Node]
|
|
19
|
+
) %>
|
|
20
|
+
</div>
|
|
21
|
+
<% end %>
|
|
22
|
+
|
|
23
|
+
<div id="archive_all">
|
|
24
|
+
<h1 id="node_filter_result"></h1>
|
|
25
|
+
<% if @root_nodes.any? %>
|
|
26
|
+
<% @root_nodes.each do |root_node| %>
|
|
27
|
+
<ul class="nodes_tree list">
|
|
28
|
+
<%= render 'node', node: root_node %>
|
|
29
|
+
</ul>
|
|
30
|
+
<% end %>
|
|
31
|
+
<% else %>
|
|
32
|
+
<div class="panel no-resource-found">
|
|
33
|
+
<%= render_message do %>
|
|
34
|
+
<%= Alchemy.t(:no_resource_found) % { resource: Alchemy.t(:menu) } %>
|
|
35
|
+
<% end %>
|
|
36
|
+
<%= render 'form', node: Alchemy::Node.new(language: Alchemy::Language.current), button_label: Alchemy.t(:create) %>
|
|
37
|
+
</div>
|
|
38
|
+
<% end %>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<script>
|
|
42
|
+
$('.nodes_tree').on('click', '.node_folder', function() {
|
|
43
|
+
var $this = $(this)
|
|
44
|
+
var node_id = $this.data('node-id')
|
|
45
|
+
var url = '<%= alchemy.toggle_admin_node_path(id: ":id") %>'.replace(':id', node_id)
|
|
46
|
+
var $children = $this.closest('li').find('> .children')
|
|
47
|
+
$this.find('> i').
|
|
48
|
+
toggleClass('fa-plus-square').
|
|
49
|
+
toggleClass('fa-minus-square')
|
|
50
|
+
$children.toggleClass('hidden')
|
|
51
|
+
$.ajax(url, { method: 'PATCH' }).then(function (nodes) {
|
|
52
|
+
if ($children.children().length === 0) {
|
|
53
|
+
$children.append(nodes)
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
return false
|
|
57
|
+
})
|
|
58
|
+
</script>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render 'form', node: @node, button_label: Alchemy.t(:create) %>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<%= form_tag do %>
|
|
2
|
+
<%= render_message do %>
|
|
3
|
+
<p><%= Alchemy.t(:anchor_link_headline) %></p>
|
|
4
|
+
<% end %>
|
|
5
|
+
<div class="input select">
|
|
6
|
+
<label for="anchor_link" class="control-label">
|
|
7
|
+
<%= Alchemy.t(:anchor) %>
|
|
8
|
+
</label>
|
|
9
|
+
<%= select_tag(:anchor_link,
|
|
10
|
+
options_for_select([[Alchemy.t('Please choose'), '']]),
|
|
11
|
+
class: 'alchemy_selectbox') %>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="input text">
|
|
14
|
+
<label for="anchor_link_title" class="control-label">
|
|
15
|
+
<%= Alchemy.t(:link_title) %>
|
|
16
|
+
</label>
|
|
17
|
+
<%= text_field_tag "anchor_link_title", '', class: 'link_title' %>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="submit">
|
|
20
|
+
<%= link_to Alchemy.t(:apply), '', class: 'create-link button', 'data-link-type' => 'anchor' %>
|
|
21
|
+
</div>
|
|
22
|
+
<% end %>
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
<label class="control-label"><%= Alchemy.t(:page_status) %></label>
|
|
10
10
|
<div class="control_group">
|
|
11
11
|
<%= render 'alchemy/admin/pages/publication_fields' %>
|
|
12
|
-
<%= page_status_checkbox(@page, :visible) %>
|
|
13
12
|
<%= page_status_checkbox(@page, :restricted) %>
|
|
13
|
+
<%= render 'alchemy/admin/pages/menu_fields', f: f %>
|
|
14
14
|
<% if configuration(:sitemap)['show_flag'] %>
|
|
15
15
|
<%= page_status_checkbox(@page, :sitemap) %>
|
|
16
16
|
<% end %>
|
|
@@ -2,20 +2,18 @@
|
|
|
2
2
|
<%= render_message do %>
|
|
3
3
|
<h3><%= Alchemy.t(:internal_link_headline) %></h3>
|
|
4
4
|
<p><%= Alchemy.t(:internal_link_page_elements_explanation) %></p>
|
|
5
|
-
<p><%= Alchemy.t(:internal_link_page_anchors_explanation) %></p>
|
|
6
5
|
<% end %>
|
|
7
|
-
<div
|
|
8
|
-
|
|
9
|
-
<%=
|
|
10
|
-
|
|
6
|
+
<div class="input select">
|
|
7
|
+
<label for="page_urlname" class="control-label">
|
|
8
|
+
<%= Alchemy.t(:page) %>
|
|
9
|
+
</label>
|
|
10
|
+
<input type="text" id="page_urlname" class="alchemy_selectbox full_width">
|
|
11
11
|
</div>
|
|
12
12
|
<div class="input select">
|
|
13
|
-
<label for="
|
|
13
|
+
<label for="element_anchor" class="control-label">
|
|
14
14
|
<%= Alchemy.t(:anchor) %>
|
|
15
15
|
</label>
|
|
16
|
-
<%=
|
|
17
|
-
options_for_select([[Alchemy.t('Please choose'), '']]),
|
|
18
|
-
class: 'alchemy_selectbox') %>
|
|
16
|
+
<input type="text" id="element_anchor" class="alchemy_selectbox full_width" disabled placeholder="<%= Alchemy.t('Select a page first') %>">
|
|
19
17
|
</div>
|
|
20
18
|
<div class="input text">
|
|
21
19
|
<label for="internal_link_title" class="control-label">
|
|
@@ -32,8 +30,6 @@
|
|
|
32
30
|
class: 'alchemy_selectbox link_target' %>
|
|
33
31
|
</div>
|
|
34
32
|
<div class="submit">
|
|
35
|
-
<%= hidden_field_tag(:internal_urlname) %>
|
|
36
|
-
<%= hidden_field_tag(:page_anchor) %>
|
|
37
33
|
<%= link_to Alchemy.t(:apply), '', class: 'create-link button', 'data-link-type' => 'internal' %>
|
|
38
34
|
</div>
|
|
39
35
|
<% end %>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<% if @page.menus.any? %>
|
|
2
|
+
<label class="checkbox">
|
|
3
|
+
<input type="checkbox" disabled checked>
|
|
4
|
+
<%= Alchemy.t(:attached_to) %>
|
|
5
|
+
</label>
|
|
6
|
+
<% @page.menus.each do |menu| %>
|
|
7
|
+
<span class="page-menu-name label">
|
|
8
|
+
<%= menu.name %>
|
|
9
|
+
</span>
|
|
10
|
+
<% end %>
|
|
11
|
+
<% elsif Alchemy::Node.roots.any? %>
|
|
12
|
+
<%= page_status_checkbox(@page, :visible) %>
|
|
13
|
+
<%= f.input :menu_id, collection: Alchemy::Node.roots.map { |n| [n.name, n.id] },
|
|
14
|
+
prompt: Alchemy.t('Please choose a menu'),
|
|
15
|
+
input_html: { class: 'alchemy_selectbox' },
|
|
16
|
+
wrapper_html: { style: @page.visible? ? 'display: block' : 'display: none' },
|
|
17
|
+
label: false %>
|
|
18
|
+
<script>
|
|
19
|
+
(function() {
|
|
20
|
+
var $wrapper = $('.input.page_menu_id')
|
|
21
|
+
$('#page_visible').click(function() {
|
|
22
|
+
if ($(this).is(':checked')) {
|
|
23
|
+
$wrapper.show()
|
|
24
|
+
} else {
|
|
25
|
+
$wrapper.find('select').val('')
|
|
26
|
+
$wrapper.hide()
|
|
27
|
+
}
|
|
28
|
+
})
|
|
29
|
+
})()
|
|
30
|
+
</script>
|
|
31
|
+
<% else %>
|
|
32
|
+
<%= page_status_checkbox(@page, :visible) %>
|
|
33
|
+
<% end %>
|
|
@@ -24,13 +24,6 @@
|
|
|
24
24
|
,ready: function () {
|
|
25
25
|
Alchemy.PageSorter();
|
|
26
26
|
}
|
|
27
|
-
<% elsif action_name == 'link' %>
|
|
28
|
-
,spinner: new Alchemy.Spinner('small'),
|
|
29
|
-
ready: function () {
|
|
30
|
-
if (Alchemy.currentDialog()) {
|
|
31
|
-
Alchemy.currentDialog().attachTreeEvents();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
27
|
<% end %>
|
|
35
28
|
});
|
|
36
29
|
});
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
<div id="overlay_tabs">
|
|
2
2
|
<ul>
|
|
3
3
|
<li><a href="#overlay_tab_internal_link"><%= Alchemy.t('link_overlay_tab_label.internal') %></a></li>
|
|
4
|
+
<li><a href="#overlay_tab_anchor_link"><%= Alchemy.t('link_overlay_tab_label.anchor') %></a></li>
|
|
4
5
|
<li><a href="#overlay_tab_external_link"><%= Alchemy.t('link_overlay_tab_label.external') %></a></li>
|
|
5
6
|
<li><a href="#overlay_tab_file_link"><%= Alchemy.t('link_overlay_tab_label.file') %></a></li>
|
|
6
7
|
</ul>
|
|
7
8
|
<div id="overlay_tab_internal_link">
|
|
8
9
|
<%= render partial: 'internal_link' %>
|
|
9
10
|
</div>
|
|
11
|
+
<div id="overlay_tab_anchor_link">
|
|
12
|
+
<%= render partial: 'anchor_link' %>
|
|
13
|
+
</div>
|
|
10
14
|
<div id="overlay_tab_external_link">
|
|
11
15
|
<%= render partial: 'external_link' %>
|
|
12
16
|
</div>
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
<%
|
|
1
|
+
<% languages = Alchemy::Language.on_current_site %>
|
|
2
|
+
<% if can?(:switch_language, Alchemy::Page) && languages.many? %>
|
|
2
3
|
<div class="button_with_label">
|
|
3
|
-
<%= form_tag
|
|
4
|
+
<%= form_tag switch_admin_languages_path, method: 'get' do %>
|
|
4
5
|
<%= select_tag(
|
|
5
6
|
'language_id',
|
|
6
|
-
options_for_select(
|
|
7
|
+
options_for_select(
|
|
8
|
+
languages.map { |l| [l.name, l.id] },
|
|
9
|
+
Alchemy::Language.current.id
|
|
10
|
+
),
|
|
7
11
|
class: 'alchemy_selectbox short',
|
|
8
12
|
data: {'auto-submit' => true}
|
|
9
13
|
) %>
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
return '<%= alchemy.fold_admin_element_path(id: 1) %>'.replace(/1/, id);
|
|
16
16
|
},
|
|
17
17
|
|
|
18
|
-
list_admin_elements_path: '<%= alchemy.list_admin_elements_path %>',
|
|
19
18
|
order_admin_elements_path: '<%= alchemy.order_admin_elements_path %>',
|
|
20
19
|
order_admin_pages_path: '<%= alchemy.order_admin_pages_path %>',
|
|
21
|
-
link_admin_pages_path: '<%= alchemy.link_admin_pages_path %>'
|
|
22
|
-
|
|
20
|
+
link_admin_pages_path: '<%= alchemy.link_admin_pages_path %>',
|
|
21
|
+
api_pages_path: '<%= alchemy.api_pages_path %>',
|
|
22
|
+
api_elements_path: '<%= alchemy.api_elements_path %>'
|
|
23
23
|
};
|
|
24
24
|
</script>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<div class="content_editor essence_spree_page" id="<%= content.dom_id %>" data-content-id="<%= content.id %>">
|
|
2
|
+
<%= content_label(content) %>
|
|
3
|
+
<%= text_field_tag(
|
|
4
|
+
content.form_field_name,
|
|
5
|
+
content.essence.page_id,
|
|
6
|
+
id: content.form_field_id,
|
|
7
|
+
class: 'alchemy_selectbox full_width'
|
|
8
|
+
) %>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<script>
|
|
12
|
+
$('#<%= content.form_field_id %>').alchemyPageSelect({
|
|
13
|
+
placeholder: "<%= Alchemy.t(:search_page) %>",
|
|
14
|
+
url: "<%= alchemy.api_pages_path %>",
|
|
15
|
+
query_params: <%== content.settings[:query_params].to_json %>,
|
|
16
|
+
<% if content.essence.page %>
|
|
17
|
+
initialSelection: {
|
|
18
|
+
id: <%= content.essence.page_id %>,
|
|
19
|
+
text: "<%= content.essence.page.name %>"
|
|
20
|
+
}
|
|
21
|
+
<% end %>
|
|
22
|
+
})
|
|
23
|
+
</script>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
<% content = local_assigns[:content] || local_assigns[:essence_richtext_view] %>
|
|
1
2
|
<%- options = local_assigns.fetch(:options, {}) -%>
|
|
2
3
|
<%- plain_text = !!content.settings_value(:plain_text, options) -%>
|
|
3
4
|
<%= raw content.essence.public_send(plain_text ? :stripped_body : :body) -%>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<% select_values = content.settings_value(:select_values, local_assigns.fetch(:options, {})) %>
|
|
2
2
|
<% inline = content.settings_value(:display_inline, local_assigns.fetch(:options, {})) %>
|
|
3
|
+
<% html_options = local_assigns.fetch(:html_options, {}) %>
|
|
3
4
|
|
|
4
5
|
<%= content_tag :div,
|
|
5
6
|
id: content.dom_id,
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
<% options = local_assigns.fetch(:options, {}) %>
|
|
2
|
+
<% html_options = local_assigns.fetch(:html_options, {}) %>
|
|
3
|
+
|
|
1
4
|
<div class="essence_text content_editor<%= options[:display_inline].to_s == 'true' ? ' display_inline' : '' %>" id="<%= content.dom_id %>">
|
|
2
5
|
<%= content_label(content) %>
|
|
3
6
|
<%= text_field_tag(
|
data/config/alchemy/modules.yml
CHANGED
|
@@ -28,9 +28,18 @@
|
|
|
28
28
|
- controller: 'alchemy/admin/pages'
|
|
29
29
|
action: edit
|
|
30
30
|
|
|
31
|
-
- name:
|
|
31
|
+
- name: menus
|
|
32
32
|
engine_name: alchemy
|
|
33
33
|
position: 3
|
|
34
|
+
navigation:
|
|
35
|
+
name: 'modules.menus'
|
|
36
|
+
controller: 'alchemy/admin/nodes'
|
|
37
|
+
action: index
|
|
38
|
+
icon: list-ul
|
|
39
|
+
|
|
40
|
+
- name: languages
|
|
41
|
+
engine_name: alchemy
|
|
42
|
+
position: 4
|
|
34
43
|
navigation:
|
|
35
44
|
name: 'modules.languages'
|
|
36
45
|
controller: 'alchemy/admin/languages'
|
|
@@ -39,7 +48,7 @@
|
|
|
39
48
|
|
|
40
49
|
- name: sites
|
|
41
50
|
engine_name: alchemy
|
|
42
|
-
position:
|
|
51
|
+
position: 5
|
|
43
52
|
navigation:
|
|
44
53
|
name: 'modules.sites'
|
|
45
54
|
controller: 'alchemy/admin/sites'
|
|
@@ -48,7 +57,7 @@
|
|
|
48
57
|
|
|
49
58
|
- name: tags
|
|
50
59
|
engine_name: alchemy
|
|
51
|
-
position:
|
|
60
|
+
position: 6
|
|
52
61
|
navigation:
|
|
53
62
|
name: 'modules.tags'
|
|
54
63
|
controller: 'alchemy/admin/tags'
|
|
@@ -57,7 +66,7 @@
|
|
|
57
66
|
|
|
58
67
|
- name: archive
|
|
59
68
|
engine_name: alchemy
|
|
60
|
-
position:
|
|
69
|
+
position: 7
|
|
61
70
|
navigation:
|
|
62
71
|
controller: 'alchemy/admin/pictures'
|
|
63
72
|
action: index
|