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.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +92 -0
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +59 -2
  5. data/Gemfile +6 -5
  6. data/README.md +7 -6
  7. data/alchemy_cms.gemspec +4 -2
  8. data/app/assets/config/alchemy_manifest.js +15 -0
  9. data/app/assets/javascripts/alchemy/admin.js +1 -0
  10. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +1 -13
  11. data/app/assets/javascripts/alchemy/alchemy.i18n.js.coffee +1 -1
  12. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +84 -87
  13. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +0 -4
  14. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +1 -1
  15. data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee +2 -2
  16. data/app/assets/javascripts/alchemy/page_select.js +41 -0
  17. data/app/assets/javascripts/alchemy/templates/index.js +1 -0
  18. data/app/assets/javascripts/alchemy/templates/page.hbs +9 -0
  19. data/app/assets/stylesheets/alchemy/_mixins.scss +11 -1
  20. data/app/assets/stylesheets/alchemy/admin.scss +3 -0
  21. data/app/assets/stylesheets/alchemy/elements.scss +1 -0
  22. data/app/assets/stylesheets/alchemy/forms.scss +6 -5
  23. data/app/assets/stylesheets/alchemy/labels.scss +6 -0
  24. data/app/assets/stylesheets/alchemy/nodes.scss +154 -0
  25. data/app/assets/stylesheets/alchemy/page-select.scss +30 -0
  26. data/app/assets/stylesheets/alchemy/selects.scss +39 -22
  27. data/app/assets/stylesheets/alchemy/sitemap.scss +0 -33
  28. data/app/assets/stylesheets/alchemy/tags.scss +0 -3
  29. data/app/controllers/alchemy/admin/base_controller.rb +1 -0
  30. data/app/controllers/alchemy/admin/elements_controller.rb +24 -11
  31. data/app/controllers/alchemy/admin/languages_controller.rb +5 -0
  32. data/app/controllers/alchemy/admin/nodes_controller.rb +43 -0
  33. data/app/controllers/alchemy/admin/pages_controller.rb +1 -21
  34. data/app/controllers/alchemy/admin/resources_controller.rb +1 -1
  35. data/app/controllers/alchemy/admin/tags_controller.rb +1 -2
  36. data/app/controllers/alchemy/api/contents_controller.rb +17 -2
  37. data/app/controllers/alchemy/api/elements_controller.rb +26 -1
  38. data/app/controllers/alchemy/api/pages_controller.rb +78 -7
  39. data/app/controllers/alchemy/messages_controller.rb +23 -8
  40. data/app/helpers/alchemy/admin/contents_helper.rb +1 -1
  41. data/app/helpers/alchemy/admin/elements_helper.rb +6 -0
  42. data/app/helpers/alchemy/admin/essences_helper.rb +23 -4
  43. data/app/helpers/alchemy/elements_block_helper.rb +11 -3
  44. data/app/helpers/alchemy/elements_helper.rb +3 -3
  45. data/app/helpers/alchemy/essences_helper.rb +36 -9
  46. data/app/helpers/alchemy/pages_helper.rb +29 -0
  47. data/app/models/alchemy/content.rb +1 -1
  48. data/app/models/alchemy/element.rb +20 -8
  49. data/app/models/alchemy/element/element_contents.rb +6 -4
  50. data/app/models/alchemy/element/presenters.rb +2 -2
  51. data/app/models/alchemy/essence_page.rb +29 -0
  52. data/app/models/alchemy/essence_picture.rb +8 -3
  53. data/app/models/alchemy/language.rb +10 -2
  54. data/app/models/alchemy/node.rb +48 -0
  55. data/app/models/alchemy/page.rb +74 -3
  56. data/app/models/alchemy/page/page_elements.rb +12 -4
  57. data/app/models/alchemy/page/page_natures.rb +6 -0
  58. data/app/models/alchemy/page/page_scopes.rb +1 -1
  59. data/app/models/alchemy/picture.rb +5 -1
  60. data/app/models/concerns/alchemy/content_touching.rb +1 -1
  61. data/app/serializers/alchemy/element_serializer.rb +7 -1
  62. data/app/serializers/alchemy/page_serializer.rb +0 -4
  63. data/app/views/alchemy/_menubar.html.erb +1 -1
  64. data/app/views/alchemy/admin/elements/_element.html.erb +18 -2
  65. data/app/views/alchemy/admin/leave.html.erb +1 -1
  66. data/app/views/alchemy/admin/nodes/_form.html.erb +39 -0
  67. data/app/views/alchemy/admin/nodes/_node.html.erb +87 -0
  68. data/app/views/alchemy/admin/nodes/edit.html.erb +1 -0
  69. data/app/views/alchemy/admin/nodes/index.html.erb +58 -0
  70. data/app/views/alchemy/admin/nodes/new.html.erb +1 -0
  71. data/app/views/alchemy/admin/pages/_anchor_link.html.erb +22 -0
  72. data/app/views/alchemy/admin/pages/_form.html.erb +1 -1
  73. data/app/views/alchemy/admin/pages/_internal_link.html.erb +7 -11
  74. data/app/views/alchemy/admin/pages/_menu_fields.html.erb +33 -0
  75. data/app/views/alchemy/admin/pages/_sitemap.html.erb +0 -7
  76. data/app/views/alchemy/admin/pages/link.html.erb +4 -0
  77. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +7 -3
  78. data/app/views/alchemy/admin/partials/_routes.html.erb +3 -3
  79. data/app/views/alchemy/essences/_essence_boolean_view.html.erb +1 -0
  80. data/app/views/alchemy/essences/_essence_date_view.html.erb +1 -0
  81. data/app/views/alchemy/essences/_essence_file_view.html.erb +1 -0
  82. data/app/views/alchemy/essences/_essence_html_view.html.erb +1 -0
  83. data/app/views/alchemy/essences/_essence_link_view.html.erb +1 -0
  84. data/app/views/alchemy/essences/_essence_page_editor.html.erb +23 -0
  85. data/app/views/alchemy/essences/_essence_page_view.html.erb +5 -0
  86. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +2 -0
  87. data/app/views/alchemy/essences/_essence_picture_view.html.erb +1 -0
  88. data/app/views/alchemy/essences/_essence_richtext_view.html.erb +1 -0
  89. data/app/views/alchemy/essences/_essence_select_editor.html.erb +1 -0
  90. data/app/views/alchemy/essences/_essence_select_view.html.erb +1 -0
  91. data/app/views/alchemy/essences/_essence_text_editor.html.erb +3 -0
  92. data/app/views/alchemy/essences/_essence_text_view.html.erb +1 -0
  93. data/config/alchemy/modules.yml +13 -4
  94. data/config/initializers/assets.rb +1 -13
  95. data/config/locales/alchemy.en.yml +27 -9
  96. data/config/routes.rb +11 -3
  97. data/db/migrate/20191016073858_create_alchemy_essence_pages.rb +8 -0
  98. data/db/migrate/20191029212236_create_alchemy_nodes.rb +24 -0
  99. data/lib/alchemy/admin/locale.rb +1 -1
  100. data/lib/alchemy/auth_accessors.rb +8 -2
  101. data/lib/alchemy/cache_digests/template_tracker.rb +8 -5
  102. data/lib/alchemy/elements_finder.rb +17 -14
  103. data/lib/alchemy/engine.rb +4 -0
  104. data/lib/alchemy/essence.rb +40 -2
  105. data/lib/alchemy/permissions.rb +2 -0
  106. data/lib/alchemy/tasks/tidy.rb +1 -1
  107. data/lib/alchemy/test_support/essence_shared_examples.rb +25 -8
  108. data/lib/alchemy/test_support/factories/essence_page_factory.rb +10 -0
  109. data/lib/alchemy/test_support/factories/essence_picture_factory.rb +5 -0
  110. data/lib/alchemy/test_support/factories/node_factory.rb +21 -0
  111. data/lib/alchemy/version.rb +1 -1
  112. data/lib/rails/generators/alchemy/elements/elements_generator.rb +0 -1
  113. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +3 -3
  114. data/lib/rails/generators/alchemy/elements/templates/view.html.haml +3 -3
  115. data/lib/rails/generators/alchemy/elements/templates/view.html.slim +3 -3
  116. data/lib/rails/generators/alchemy/install/files/{_article_view.html.erb → _article.html.erb} +2 -2
  117. data/lib/rails/generators/alchemy/install/files/application.html.erb +13 -10
  118. data/lib/rails/generators/alchemy/install/install_generator.rb +2 -11
  119. data/lib/rails/generators/alchemy/menus/menus_generator.rb +24 -0
  120. data/lib/rails/generators/alchemy/menus/templates/node.html.erb +19 -0
  121. data/lib/rails/generators/alchemy/menus/templates/node.html.haml +16 -0
  122. data/lib/rails/generators/alchemy/menus/templates/node.html.slim +16 -0
  123. data/lib/rails/generators/alchemy/menus/templates/wrapper.html.erb +8 -0
  124. data/lib/rails/generators/alchemy/menus/templates/wrapper.html.haml +6 -0
  125. data/lib/rails/generators/alchemy/menus/templates/wrapper.html.slim +6 -0
  126. data/lib/rails/generators/alchemy/views/views_generator.rb +1 -1
  127. data/lib/tasks/alchemy/convert.rake +60 -0
  128. metadata +79 -20
  129. data/.rspec +0 -1
  130. data/.travis.yml +0 -28
  131. data/app/models/alchemy/page/page_users.rb +0 -60
  132. data/app/views/alchemy/admin/elements/list.html.erb +0 -16
  133. data/app/views/alchemy/admin/pages/_page_for_links.html.erb +0 -53
  134. data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +0 -9
  135. data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +0 -8
  136. data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +0 -8
  137. data/lib/rails/generators/alchemy/install/files/_article_editor.html.erb +0 -5
  138. data/lib/rails/generators/alchemy/install/files/alchemy.de.yml +0 -31
  139. 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
+ &nbsp;
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 || '&nbsp;'.html_safe %>
61
+ <span class="node_page">
62
+ <% if node.page %>
63
+ <i class="icon far fa-file"></i>
64
+ &nbsp;
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 id="page_selector_container">
8
- <% if @page_root %>
9
- <%= render 'sitemap', page_partial: 'page_for_links', full: true %>
10
- <% end %>
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="internal_anchor" class="control-label">
13
+ <label for="element_anchor" class="control-label">
14
14
  <%= Alchemy.t(:anchor) %>
15
15
  </label>
16
- <%= select_tag(:internal_anchor,
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
- <% if can?(:switch_language, Alchemy::Page) && @languages.many? %>
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 switch_language_admin_pages_path, method: 'get' do %>
4
+ <%= form_tag switch_admin_languages_path, method: 'get' do %>
4
5
  <%= select_tag(
5
6
  'language_id',
6
- options_for_select(@languages.map { |l| [l.name, l.id] }, Alchemy::Language.current.id),
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>
@@ -1 +1,2 @@
1
+ <% content = local_assigns[:content] || local_assigns[:essence_boolean_view] %>
1
2
  <%= Alchemy.t(content.ingredient) unless content.ingredient.nil? -%>
@@ -1,3 +1,4 @@
1
+ <% content = local_assigns[:content] || local_assigns[:essence_date_view] %>
1
2
  <%- date_format = content.settings_value(:date_format,
2
3
  local_assigns.fetch(:options, {})) -%>
3
4
  <%- if content.ingredient.present? -%>
@@ -1,3 +1,4 @@
1
+ <% content = local_assigns[:content] || local_assigns[:essence_file_view] %>
1
2
  <%- if attachment = content.ingredient -%>
2
3
  <%- html_options = local_assigns.fetch(:html_options, {}) -%>
3
4
  <%= link_to(
@@ -1 +1,2 @@
1
+ <% content = local_assigns[:content] || local_assigns[:essence_html_view] %>
1
2
  <%= raw content.ingredient -%>
@@ -1,3 +1,4 @@
1
+ <% content = local_assigns[:content] || local_assigns[:essence_link_view] %>
1
2
  <%- if content.ingredient.present? -%>
2
3
  <%- html_options = {
3
4
  target: content.essence.link_target == "blank" ? "_blank" : nil
@@ -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>
@@ -0,0 +1,5 @@
1
+ <% content = local_assigns[:content] || local_assigns[:essence_page_view] %>
2
+ <% page = content.ingredient %>
3
+ <% if page %>
4
+ <%= link_to page.name, alchemy.show_page_path(urlname: page.urlname) %>
5
+ <% end %>
@@ -1,3 +1,5 @@
1
+ <% options = local_assigns.fetch(:options, {}) %>
2
+
1
3
  <%= content_tag :div, id: content.dom_id, data: {"content-id" => content.id}, class: "content_editor essence_picture" do %>
2
4
  <%= content_label(content) %>
3
5
  <div class="picture_thumbnail">
@@ -1,3 +1,4 @@
1
+ <% content = local_assigns[:content] || local_assigns[:essence_picture_view] %>
1
2
  <%= Alchemy::EssencePictureView.new(
2
3
  content,
3
4
  local_assigns[:options],
@@ -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 +1,2 @@
1
+ <% content = local_assigns[:content] || local_assigns[:essence_select_view] %>
1
2
  <%= content.ingredient %>
@@ -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(
@@ -1,3 +1,4 @@
1
+ <% content = local_assigns[:content] || local_assigns[:essence_text_view] %>
1
2
  <%- options = local_assigns.fetch(:options, {}) -%>
2
3
  <%- html_options = local_assigns.fetch(:html_options, {}) -%>
3
4
  <%- if content.essence.link.blank? ||
@@ -28,9 +28,18 @@
28
28
  - controller: 'alchemy/admin/pages'
29
29
  action: edit
30
30
 
31
- - name: languages
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: 4
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: 5
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: 6
69
+ position: 7
61
70
  navigation:
62
71
  controller: 'alchemy/admin/pictures'
63
72
  action: index