alchemy_cms 3.4.2 → 3.5.0.rc1

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 (247) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +9 -3
  3. data/.teatro.yml +1 -0
  4. data/.travis.yml +14 -17
  5. data/CHANGELOG.md +44 -6
  6. data/Gemfile +7 -4
  7. data/README.md +60 -10
  8. data/Rakefile +1 -1
  9. data/alchemy_cms.gemspec +5 -8
  10. data/app/assets/javascripts/alchemy/admin.js +2 -0
  11. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +1 -0
  12. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +1 -0
  13. data/app/assets/javascripts/alchemy/alchemy.hotkeys.js.coffee +1 -1
  14. data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +9 -7
  15. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +1 -0
  16. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +11 -7
  17. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +1 -1
  18. data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee +8 -3
  19. data/app/assets/javascripts/alchemy/alchemy.tooltips.coffee +10 -0
  20. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +104 -73
  21. data/app/assets/stylesheets/alchemy/_defaults.scss +1 -4
  22. data/app/assets/stylesheets/alchemy/_extends.scss +13 -35
  23. data/app/assets/stylesheets/alchemy/_mixins.scss +82 -18
  24. data/app/assets/stylesheets/alchemy/_variables.scss +21 -8
  25. data/app/assets/stylesheets/alchemy/admin.scss +4 -0
  26. data/app/assets/stylesheets/alchemy/archive.scss +8 -12
  27. data/app/assets/stylesheets/alchemy/attachments.scss +39 -0
  28. data/app/assets/stylesheets/alchemy/base.scss +26 -15
  29. data/app/assets/stylesheets/alchemy/buttons.scss +59 -31
  30. data/app/assets/stylesheets/alchemy/dashboard.scss +3 -3
  31. data/app/assets/stylesheets/alchemy/dialogs.scss +10 -8
  32. data/app/assets/stylesheets/alchemy/elements.scss +65 -41
  33. data/app/assets/stylesheets/alchemy/errors.scss +7 -0
  34. data/app/assets/stylesheets/alchemy/flash.scss +1 -1
  35. data/app/assets/stylesheets/alchemy/form_fields.scss +0 -37
  36. data/app/assets/stylesheets/alchemy/forms.scss +18 -27
  37. data/app/assets/stylesheets/alchemy/frame.scss +104 -204
  38. data/app/assets/stylesheets/alchemy/hints.scss +62 -0
  39. data/app/assets/stylesheets/alchemy/icon-font.scss +2 -1
  40. data/app/assets/stylesheets/alchemy/icons.scss +9 -4
  41. data/app/assets/stylesheets/alchemy/image_library.scss +6 -6
  42. data/app/assets/stylesheets/alchemy/jquery-ui.scss +6 -4
  43. data/app/assets/stylesheets/alchemy/lists.scss +0 -1
  44. data/app/assets/stylesheets/alchemy/menubar.scss +3 -4
  45. data/app/assets/stylesheets/alchemy/modules.scss +0 -6
  46. data/app/assets/stylesheets/alchemy/navigation.scss +242 -0
  47. data/app/assets/stylesheets/alchemy/pagination.scss +3 -3
  48. data/app/assets/stylesheets/alchemy/print.scss +1 -0
  49. data/app/assets/stylesheets/alchemy/resource_info.scss +45 -0
  50. data/app/assets/stylesheets/alchemy/search.scss +72 -1
  51. data/app/assets/stylesheets/alchemy/selects.scss +38 -44
  52. data/app/assets/stylesheets/alchemy/sitemap.scss +89 -79
  53. data/app/assets/stylesheets/alchemy/tables.scss +6 -10
  54. data/app/assets/stylesheets/alchemy/toolbar.scss +7 -36
  55. data/app/assets/stylesheets/alchemy/upload.scss +12 -3
  56. data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +6 -3
  57. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.svg +58 -170
  58. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.ttf +0 -0
  59. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.woff +0 -0
  60. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.svg +124 -148
  61. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.ttf +0 -0
  62. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.woff +0 -0
  63. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +426 -144
  64. data/app/controllers/alchemy/admin/attachments_controller.rb +24 -16
  65. data/app/controllers/alchemy/admin/clipboard_controller.rb +1 -1
  66. data/app/controllers/alchemy/admin/essence_files_controller.rb +1 -1
  67. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +9 -8
  68. data/app/controllers/alchemy/admin/layoutpages_controller.rb +1 -0
  69. data/app/controllers/alchemy/admin/pages_controller.rb +2 -2
  70. data/app/controllers/alchemy/admin/resources_controller.rb +2 -2
  71. data/app/controllers/alchemy/admin/tags_controller.rb +1 -1
  72. data/app/controllers/alchemy/api/pages_controller.rb +16 -0
  73. data/app/controllers/alchemy/messages_controller.rb +1 -1
  74. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +2 -2
  75. data/app/helpers/alchemy/admin/attachments_helper.rb +11 -0
  76. data/app/helpers/alchemy/admin/base_helper.rb +37 -4
  77. data/app/helpers/alchemy/admin/contents_helper.rb +11 -4
  78. data/app/helpers/alchemy/admin/elements_helper.rb +0 -19
  79. data/app/helpers/alchemy/admin/essences_helper.rb +7 -30
  80. data/app/helpers/alchemy/admin/navigation_helper.rb +13 -51
  81. data/app/helpers/alchemy/admin/pages_helper.rb +21 -16
  82. data/app/helpers/alchemy/admin/pictures_helper.rb +9 -0
  83. data/app/helpers/alchemy/deprecated_pages_helper.rb +54 -0
  84. data/app/helpers/alchemy/essences_helper.rb +1 -1
  85. data/app/helpers/alchemy/pages_helper.rb +8 -109
  86. data/app/helpers/alchemy/url_helper.rb +8 -13
  87. data/app/models/alchemy/attachment.rb +7 -4
  88. data/app/models/alchemy/cell.rb +2 -2
  89. data/app/models/alchemy/content.rb +2 -2
  90. data/app/models/alchemy/content/factory.rb +12 -9
  91. data/app/models/alchemy/element.rb +6 -3
  92. data/app/models/alchemy/essence_file.rb +1 -1
  93. data/app/models/alchemy/essence_picture.rb +37 -47
  94. data/app/models/alchemy/essence_picture_view.rb +8 -1
  95. data/app/models/alchemy/folded_page.rb +3 -2
  96. data/app/models/alchemy/legacy_page_url.rb +3 -3
  97. data/app/models/alchemy/page.rb +50 -5
  98. data/app/models/alchemy/page/fixed_attributes.rb +63 -0
  99. data/app/models/alchemy/page/page_elements.rb +10 -7
  100. data/app/models/alchemy/page/page_natures.rb +19 -0
  101. data/app/models/alchemy/picture.rb +1 -0
  102. data/app/models/alchemy/picture/transformations.rb +1 -1
  103. data/app/models/alchemy/picture/url.rb +82 -0
  104. data/app/serializers/alchemy/page_tree_serializer.rb +29 -8
  105. data/app/views/alchemy/_edit_mode.html.erb +2 -0
  106. data/app/views/alchemy/_menubar.html.erb +1 -1
  107. data/app/views/alchemy/_preview_mode_code.html.erb +6 -0
  108. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +1 -1
  109. data/app/views/alchemy/admin/attachments/_attachment.html.erb +25 -5
  110. data/app/views/alchemy/admin/attachments/_replace_button.html.erb +26 -0
  111. data/app/views/alchemy/admin/attachments/index.html.erb +1 -1
  112. data/app/views/alchemy/admin/attachments/show.html.erb +52 -0
  113. data/app/views/alchemy/admin/elements/_element_header.html.erb +6 -3
  114. data/app/views/alchemy/admin/elements/create.js.erb +0 -2
  115. data/app/views/alchemy/admin/elements/trash.js.erb +0 -1
  116. data/app/views/alchemy/admin/elements/update.js.erb +0 -2
  117. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -4
  118. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +1 -1
  119. data/app/views/alchemy/admin/languages/index.html.erb +1 -0
  120. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +26 -27
  121. data/app/views/alchemy/admin/layoutpages/edit.html.erb +1 -1
  122. data/app/views/alchemy/admin/pages/_form.html.erb +13 -40
  123. data/app/views/alchemy/admin/pages/_locked_page.html.erb +1 -1
  124. data/app/views/alchemy/admin/pages/_page.html.erb +119 -61
  125. data/app/views/alchemy/admin/pages/_page_for_links.html.erb +4 -2
  126. data/app/views/alchemy/admin/pages/_page_infos.html.erb +12 -12
  127. data/app/views/alchemy/admin/pages/_page_status.html.erb +1 -1
  128. data/app/views/alchemy/admin/pages/_publication_fields.html.erb +35 -0
  129. data/app/views/alchemy/admin/pages/edit.html.erb +13 -2
  130. data/app/views/alchemy/admin/pages/index.html.erb +3 -8
  131. data/app/views/alchemy/admin/pages/info.html.erb +15 -2
  132. data/app/views/alchemy/admin/pages/sort.js.erb +1 -1
  133. data/app/views/alchemy/admin/pages/update.js.erb +1 -14
  134. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +12 -8
  135. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +4 -4
  136. data/app/views/alchemy/admin/partials/_search_form.html.erb +1 -1
  137. data/app/views/alchemy/admin/partials/_sub_navigation.html.erb +9 -6
  138. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -1
  139. data/app/views/alchemy/admin/pictures/_picture.html.erb +1 -6
  140. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -6
  141. data/app/views/alchemy/admin/pictures/index.html.erb +1 -1
  142. data/app/views/alchemy/admin/pictures/show.html.erb +1 -6
  143. data/app/views/alchemy/admin/uploader/_button.html.erb +4 -4
  144. data/app/views/alchemy/base/500.html.erb +15 -1
  145. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +13 -15
  146. data/app/views/alchemy/essences/_essence_boolean_view.html.erb +1 -3
  147. data/app/views/alchemy/essences/_essence_date_editor.html.erb +0 -2
  148. data/app/views/alchemy/essences/_essence_date_view.html.erb +0 -2
  149. data/app/views/alchemy/essences/_essence_file_editor.html.erb +2 -7
  150. data/app/views/alchemy/essences/_essence_file_view.html.erb +1 -3
  151. data/app/views/alchemy/essences/_essence_html_editor.html.erb +0 -2
  152. data/app/views/alchemy/essences/_essence_html_view.html.erb +1 -3
  153. data/app/views/alchemy/essences/_essence_link_editor.html.erb +0 -2
  154. data/app/views/alchemy/essences/_essence_link_view.html.erb +0 -2
  155. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +47 -49
  156. data/app/views/alchemy/essences/_essence_picture_view.html.erb +1 -3
  157. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +0 -2
  158. data/app/views/alchemy/essences/_essence_richtext_view.html.erb +1 -3
  159. data/app/views/alchemy/essences/_essence_select_editor.html.erb +27 -29
  160. data/app/views/alchemy/essences/_essence_select_view.html.erb +1 -3
  161. data/app/views/alchemy/essences/_essence_text_editor.html.erb +17 -19
  162. data/app/views/alchemy/essences/_essence_text_view.html.erb +0 -2
  163. data/app/views/alchemy/pages/_meta_data.html.erb +9 -0
  164. data/app/views/layouts/alchemy/admin.html.erb +9 -11
  165. data/bin/alchemy +1 -2
  166. data/config/alchemy/config.yml +1 -1
  167. data/config/alchemy/modules.yml +0 -16
  168. data/config/initializers/dragonfly.rb +0 -18
  169. data/config/initializers/mini_profiler.rb +6 -0
  170. data/config/locales/alchemy.de.yml +9 -1
  171. data/config/locales/alchemy.en.yml +7 -1
  172. data/config/locales/alchemy.es.yml +6 -0
  173. data/config/locales/alchemy.fr.yml +2 -0
  174. data/config/locales/alchemy.it.yml +3 -1
  175. data/config/locales/alchemy.nl.yml +2 -0
  176. data/config/locales/alchemy.ru.yml +2 -0
  177. data/config/routes.rb +3 -8
  178. data/db/migrate/20160912223112_add_index_to_alchemy_pages_rgt.rb +9 -0
  179. data/db/migrate/20160927205604_add_foreign_key_indices_and_null_constraints.rb +20 -0
  180. data/db/migrate/20160928080104_add_foreign_keys.rb +27 -0
  181. data/lib/alchemy/admin/locale.rb +4 -3
  182. data/lib/alchemy/engine.rb +2 -4
  183. data/lib/alchemy/errors.rb +9 -2
  184. data/lib/alchemy/forms/builder.rb +8 -0
  185. data/lib/alchemy/modules.rb +20 -19
  186. data/lib/alchemy/permissions.rb +15 -4
  187. data/lib/alchemy/resources_helper.rb +4 -2
  188. data/lib/alchemy/sass_support.rb +9 -0
  189. data/lib/alchemy/seeder.rb +89 -1
  190. data/lib/alchemy/test_support/essence_shared_examples.rb +2 -0
  191. data/lib/alchemy/test_support/factories/attachment_factory.rb +1 -1
  192. data/lib/alchemy/test_support/factories/content_factory.rb +1 -0
  193. data/lib/alchemy/test_support/factories/element_factory.rb +1 -0
  194. data/lib/alchemy/test_support/factories/picture_factory.rb +1 -1
  195. data/lib/alchemy/test_support/fixtures/image.png +0 -0
  196. data/lib/alchemy/tinymce.rb +2 -6
  197. data/lib/alchemy/upgrader.rb +4 -55
  198. data/lib/alchemy/upgrader/tasks/install_dragonfly_config.rb +14 -0
  199. data/lib/alchemy/upgrader/three_point_five.rb +32 -0
  200. data/lib/alchemy/upgrader/three_point_four.rb +2 -8
  201. data/lib/alchemy/upgrader/three_point_one.rb +30 -30
  202. data/lib/alchemy/upgrader/three_point_three.rb +31 -31
  203. data/lib/alchemy/upgrader/three_point_two.rb +25 -25
  204. data/lib/alchemy/upgrader/three_point_zero.rb +59 -59
  205. data/lib/alchemy/version.rb +1 -1
  206. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +1 -1
  207. data/lib/rails/generators/alchemy/elements/templates/view.html.haml +1 -1
  208. data/lib/rails/generators/alchemy/elements/templates/view.html.slim +1 -1
  209. data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +1 -3
  210. data/lib/rails/generators/alchemy/install/files/_article_view.html.erb +1 -1
  211. data/lib/rails/generators/alchemy/install/files/application.html.erb +3 -4
  212. data/lib/rails/generators/alchemy/install/install_generator.rb +4 -0
  213. data/lib/rails/generators/alchemy/install/templates/dragonfly.rb.tt +35 -0
  214. data/lib/rails/generators/alchemy/module/module_generator.rb +1 -1
  215. data/lib/tasks/alchemy/db.rake +6 -0
  216. data/lib/tasks/alchemy/tidy.rake +85 -0
  217. data/lib/tasks/alchemy/upgrade.rake +165 -16
  218. data/vendor/assets/javascripts/clipboard.min.js +7 -0
  219. data/vendor/assets/javascripts/fileupload/jquery.fileupload-process.js +4 -4
  220. data/vendor/assets/javascripts/fileupload/jquery.fileupload-validate.js +2 -2
  221. data/vendor/assets/javascripts/fileupload/jquery.fileupload.js +29 -14
  222. data/vendor/assets/javascripts/fileupload/jquery.iframe-transport.js +2 -2
  223. data/vendor/assets/javascripts/tinymce/langs/es.js +2 -2
  224. data/vendor/assets/javascripts/tinymce/langs/fr.js +1 -1
  225. data/vendor/assets/javascripts/tinymce/langs/it.js +1 -1
  226. data/vendor/assets/javascripts/tinymce/langs/nl.js +3 -3
  227. data/vendor/assets/javascripts/tinymce/tinymce.min.js +15 -12
  228. metadata +44 -88
  229. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/readme.md +0 -1
  230. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce-small.eot +0 -0
  231. data/app/assets/stylesheets/tinymce/skins/alchemy/fonts/tinymce.eot +0 -0
  232. data/app/assets/stylesheets/tinymce/skins/alchemy/img/wline.gif +0 -0
  233. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.ie7.min.css +0 -1
  234. data/app/controllers/alchemy/pictures_controller.rb +0 -97
  235. data/app/views/alchemy/admin/elements/_refresh_editor.js.erb +0 -8
  236. data/vendor/assets/javascripts/tinymce/plugins/anchor/plugin.min.js +0 -1
  237. data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.min.js +0 -1
  238. data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.min.js +0 -1
  239. data/vendor/assets/javascripts/tinymce/plugins/code/plugin.min.js +0 -1
  240. data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.min.js +0 -1
  241. data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.min.js +0 -1
  242. data/vendor/assets/javascripts/tinymce/plugins/hr/plugin.min.js +0 -1
  243. data/vendor/assets/javascripts/tinymce/plugins/link/plugin.min.js +0 -1
  244. data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.min.js +0 -1
  245. data/vendor/assets/javascripts/tinymce/plugins/tabfocus/plugin.min.js +0 -1
  246. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.min.js +0 -1
  247. data/vendor/assets/javascripts/tinymce/themes/modern/theme.min.js +0 -1
@@ -1,5 +1,3 @@
1
- <%- cache(content) do -%>
2
1
  <%- options = local_assigns.fetch(:options, {}) -%>
3
2
  <%- plain_text = !!content.settings_value(:plain_text, options) -%>
4
- <%= raw content.essence.send(plain_text ? :stripped_body : :body) -%>
5
- <%- end -%>
3
+ <%= raw content.essence.public_send(plain_text ? :stripped_body : :body) -%>
@@ -1,33 +1,31 @@
1
- <% cache(content) do %>
2
- <% select_values = content.settings_value(:select_values, local_assigns.fetch(:options, {})) %>
3
- <% inline = content.settings_value(:display_inline, local_assigns.fetch(:options, {})) %>
1
+ <% select_values = content.settings_value(:select_values, local_assigns.fetch(:options, {})) %>
2
+ <% inline = content.settings_value(:display_inline, local_assigns.fetch(:options, {})) %>
4
3
 
5
- <%= content_tag :div,
6
- id: content.dom_id,
7
- class: [
8
- "content_editor",
9
- "essence_select",
10
- inline ? 'display_inline' : nil
11
- ].compact, data: {content_id: content.id} do %>
12
- <%= content_label(content) %>
4
+ <%= content_tag :div,
5
+ id: content.dom_id,
6
+ class: [
7
+ "content_editor",
8
+ "essence_select",
9
+ inline ? 'display_inline' : nil
10
+ ].compact, data: {content_id: content.id} do %>
11
+ <%= content_label(content) %>
13
12
 
14
- <% if select_values.nil? %>
15
- <%== warning(':select_values is nil',
16
- "<strong>No select values given.</strong>
17
- <br>Please provide :<code>select_values</code> either as argument to
18
- <code>render_essence_editor</code> helper or as setting on the content definition in
19
- <code>elements.yml</code>.") %>
20
- <% else %>
21
- <%
22
- if select_values.is_a?(Hash)
23
- options_tags = grouped_options_for_select(select_values, content.ingredient)
24
- else
25
- options_tags = options_for_select(select_values, content.ingredient)
26
- end %>
27
- <%= select_tag content.form_field_name, options_tags, {
28
- class: ["alchemy_selectbox", "essence_editor_select", html_options[:class]].compact,
29
- style: html_options[:style]
30
- } %>
31
- <% end %>
13
+ <% if select_values.nil? %>
14
+ <%== warning(':select_values is nil',
15
+ "<strong>No select values given.</strong>
16
+ <br>Please provide :<code>select_values</code> either as argument to
17
+ <code>render_essence_editor</code> helper or as setting on the content definition in
18
+ <code>elements.yml</code>.") %>
19
+ <% else %>
20
+ <%
21
+ if select_values.is_a?(Hash)
22
+ options_tags = grouped_options_for_select(select_values, content.ingredient)
23
+ else
24
+ options_tags = options_for_select(select_values, content.ingredient)
25
+ end %>
26
+ <%= select_tag content.form_field_name, options_tags, {
27
+ class: ["alchemy_selectbox", "essence_editor_select", html_options[:class]].compact,
28
+ style: html_options[:style]
29
+ } %>
32
30
  <% end %>
33
31
  <% end %>
@@ -1,3 +1 @@
1
- <% cache(content) do %>
2
- <%= content.ingredient %>
3
- <% end %>
1
+ <%= content.ingredient %>
@@ -1,19 +1,17 @@
1
- <% cache(content) do %>
2
- <div class="essence_text content_editor<%= options[:display_inline].to_s == 'true' ? ' display_inline' : '' %>" id="<%= content.dom_id %>">
3
- <%= content_label(content) %>
4
- <%= text_field_tag(
5
- content.form_field_name,
6
- content.ingredient,
7
- class: ["thin_border #{content.settings[:linkable] ? ' text_with_icon' : ''}", html_options[:class]].join(' '),
8
- style: html_options[:style],
9
- type: content.settings_value(:input_type) || "text"
10
- ) %>
11
- <% if content.settings[:linkable] %>
12
- <%= hidden_field_tag content.form_field_name(:link), content.essence.link %>
13
- <%= hidden_field_tag content.form_field_name(:link_title), content.essence.link_title %>
14
- <%= hidden_field_tag content.form_field_name(:link_class_name), content.essence.link_class_name %>
15
- <%= hidden_field_tag content.form_field_name(:link_target), content.essence.link_target %>
16
- <%= render 'alchemy/essences/shared/linkable_essence_tools', content: content %>
17
- <% end %>
18
- </div>
19
- <% end %>
1
+ <div class="essence_text content_editor<%= options[:display_inline].to_s == 'true' ? ' display_inline' : '' %>" id="<%= content.dom_id %>">
2
+ <%= content_label(content) %>
3
+ <%= text_field_tag(
4
+ content.form_field_name,
5
+ content.ingredient,
6
+ class: ["thin_border #{content.settings[:linkable] ? ' text_with_icon' : ''}", html_options[:class]].join(' '),
7
+ style: html_options[:style],
8
+ type: content.settings_value(:input_type) || "text"
9
+ ) %>
10
+ <% if content.settings[:linkable] %>
11
+ <%= hidden_field_tag content.form_field_name(:link), content.essence.link %>
12
+ <%= hidden_field_tag content.form_field_name(:link_title), content.essence.link_title %>
13
+ <%= hidden_field_tag content.form_field_name(:link_class_name), content.essence.link_class_name %>
14
+ <%= hidden_field_tag content.form_field_name(:link_target), content.essence.link_target %>
15
+ <%= render 'alchemy/essences/shared/linkable_essence_tools', content: content %>
16
+ <% end %>
17
+ </div>
@@ -1,4 +1,3 @@
1
- <%- cache(content) do -%>
2
1
  <%- options = local_assigns.fetch(:options, {}) -%>
3
2
  <%- html_options = local_assigns.fetch(:html_options, {}) -%>
4
3
  <%- if content.essence.link.blank? ||
@@ -14,5 +13,4 @@
14
13
  'data-link-target' => content.essence.link_target
15
14
  }.merge(html_options)
16
15
  ) -%>
17
- <%- end -%>
18
16
  <%- end -%>
@@ -0,0 +1,9 @@
1
+ <% if @page %>
2
+ <meta charset="utf8">
3
+ <title><%= page_title prefix: local_assigns.fetch(:title_prefix, nil), separator: local_assigns.fetch(:title_separator, nil) %></title>
4
+ <%= tag(:meta, name: 'created', content: @page.updated_at) %>
5
+ <%= tag(:meta, name: 'robots', content: meta_robots) %>
6
+ <%= tag(:meta, name: 'description', content: meta_description, lang: @page.language_code) if meta_description.present? %>
7
+ <%= tag(:meta, name: 'keywords', content: meta_keywords, lang: @page.language_code) if meta_keywords.present? %>
8
+ <%= auto_discovery_link_tag(:rss, show_alchemy_page_url(@page, format: :rss)) if @page.contains_feed? %>
9
+ <% end %>
@@ -37,7 +37,7 @@
37
37
  <%= javascript_include_tag('alchemy/admin/all', 'data-turbolinks-track' => true) %>
38
38
  <%= yield :javascript_includes %>
39
39
  </head>
40
- <body id="alchemy" class="<%= alchemy_body_class %>">
40
+ <%= content_tag :body, id: 'alchemy', class: alchemy_body_class do %>
41
41
  <noscript>
42
42
  <h1><%= Alchemy.t(:javascript_disabled_headline) %></h1>
43
43
  <p><%= Alchemy.t(:javascript_disabled_text) %></p>
@@ -72,24 +72,22 @@
72
72
  </div>
73
73
  <% if current_alchemy_user %>
74
74
  <div id="top_menu">
75
- <div id="sub_navigation">
76
- <%= admin_subnavigation %>
75
+ <div id="header">
77
76
  <% if @locked_pages.present? %>
78
77
  <div id="locked_pages">
79
- <label><%= Alchemy.t(:locked_pages) %> &raquo;</label>
80
78
  <%= render partial: 'alchemy/admin/pages/locked_page', collection: @locked_pages %>
81
79
  </div>
82
80
  <% end %>
81
+ <div id="user_info">
82
+ <%= current_alchemy_user_name %>
83
+ <%= select_tag 'change_locale',
84
+ options_for_select(translations_for_select, ::I18n.locale),
85
+ class: 'alchemy_selectbox tiny' %>
86
+ </div>
83
87
  </div>
84
88
  <div id="toolbar">
85
89
  <%= yield(:toolbar) %>
86
90
  </div>
87
- <div id="user_info">
88
- <%= current_alchemy_user_name %>
89
- <%= select_tag 'change_locale',
90
- options_for_select(translations_for_select, ::I18n.locale),
91
- class: 'alchemy_selectbox tiny' %>
92
- </div>
93
91
  </div>
94
92
  <% end %>
95
93
  <%= render :partial => 'alchemy/admin/partials/flash_notices' %>
@@ -104,5 +102,5 @@
104
102
  </script>
105
103
  <%= render 'alchemy/admin/uploader/setup' %>
106
104
  <%= yield(:javascripts) %>
107
- </body>
105
+ <% end %>
108
106
  </html>
@@ -113,7 +113,7 @@ EOF
113
113
  <<-GITIGNORE
114
114
 
115
115
  # Ignore Alchemy uploads folder
116
- uploads/*
116
+ /uploads
117
117
 
118
118
  # Ignore sensitive data
119
119
  config/database.yml
@@ -123,7 +123,6 @@ GITIGNORE
123
123
  `
124
124
  cd #{@application}
125
125
  mkdir -p ./uploads
126
- touch ./uploads/.gitkeep
127
126
  `
128
127
  end
129
128
 
@@ -61,7 +61,7 @@ url_nesting: true
61
61
 
62
62
  # === Picture rendering settings
63
63
  #
64
- # Alchemy uses Dragonfly to render images. Use {:image_size => "XXXxYYY", :crop => BOOLEAN [true]} to resize images.
64
+ # Alchemy uses Dragonfly to render images. Use {size: "XXXxYYY", crop: BOOLEAN [true]} to resize images.
65
65
  #
66
66
  # See http://markevans.github.com/dragonfly for further infos.
67
67
  #
@@ -8,10 +8,6 @@
8
8
  controller: 'alchemy/admin/dashboard'
9
9
  action: index
10
10
  image: 'alchemy/icon.svg'
11
- sub_navigation:
12
- - name: 'modules.dashboard'
13
- controller: 'alchemy/admin/dashboard'
14
- action: index
15
11
 
16
12
  - name: pages
17
13
  engine_name: alchemy
@@ -40,10 +36,6 @@
40
36
  controller: 'alchemy/admin/languages'
41
37
  action: index
42
38
  icon: languages
43
- sub_navigation:
44
- - name: 'modules.languages'
45
- controller: 'alchemy/admin/languages'
46
- action: index
47
39
 
48
40
  - name: sites
49
41
  engine_name: alchemy
@@ -53,10 +45,6 @@
53
45
  controller: 'alchemy/admin/sites'
54
46
  action: index
55
47
  icon: sites
56
- sub_navigation:
57
- - name: 'modules.sites'
58
- controller: 'alchemy/admin/sites'
59
- action: index
60
48
 
61
49
  - name: tags
62
50
  engine_name: alchemy
@@ -66,10 +54,6 @@
66
54
  controller: 'alchemy/admin/tags'
67
55
  action: index
68
56
  icon: tags
69
- sub_navigation:
70
- - name: 'modules.tags'
71
- controller: 'alchemy/admin/tags'
72
- action: index
73
57
 
74
58
  - name: archive
75
59
  engine_name: alchemy
@@ -1,23 +1,5 @@
1
1
  require 'dragonfly_svg'
2
2
 
3
- # Alchemy CMS Dragonfly configuration.
4
-
5
- # Pictures
6
- Dragonfly.app(:alchemy_pictures).configure do
7
- plugin :imagemagick
8
- plugin :svg
9
- datastore :file,
10
- root_path: Rails.root.join('uploads/pictures').to_s,
11
- store_meta: false
12
- end
13
-
14
- # Attachments
15
- Dragonfly.app(:alchemy_attachments).configure do
16
- datastore :file,
17
- root_path: Rails.root.join('uploads/attachments').to_s,
18
- store_meta: false
19
- end
20
-
21
3
  # Logger
22
4
  Dragonfly.logger = Rails.logger
23
5
 
@@ -0,0 +1,6 @@
1
+ begin
2
+ require 'rack-mini-profiler'
3
+ Rack::MiniProfiler.config.position = 'right'
4
+ Rack::MiniProfiler.config.start_hidden = true
5
+ rescue LoadError
6
+ end
@@ -161,6 +161,7 @@ de:
161
161
  aliases: Weitere Domains bitte mit Leerzeichen oder Leerzeile getrennt angeben.
162
162
 
163
163
  anchor: 'Sprungmarke'
164
+ attribute_fixed: Dieser Wert ist für diesen Seitentyp nicht veränderbar
164
165
  back: 'zurück'
165
166
  create_tree_as_new_language: "%{language} als neuen Sprachbaum anlegen"
166
167
  locked_pages: "Aktive Seiten"
@@ -263,6 +264,7 @@ de:
263
264
  "Show all files": Alle Dateien anzeigen
264
265
  "Show childpages": "Unterseiten anzeigen"
265
266
  "Show clipboard": "Zwischenablage anzeigen"
267
+ "Copied to clipboard": "In die Zwischenablage kopiert"
266
268
  "Show picture infos": "Bild Informationen anzeigen"
267
269
  "Show trash": "Papierkorb anzeigen"
268
270
  "Site successfully created": "Website wurde erfolgreich erstellt."
@@ -284,6 +286,7 @@ de:
284
286
  "Validation failed": "Einige Pflichtfelder wurden nicht richtig ausgefüllt."
285
287
  "Version": "Version"
286
288
  "View File": "Datei anzeigen"
289
+ "Attachment Preview": "Dateivorschau"
287
290
  "Visit page": "zur Seite gehen"
288
291
  "Warning!": "Achtung!"
289
292
  content_definition_missing: "Warnung: Für diesen Content konnte die Vorlage nicht gefunden werden. Bitte überprüfen Sie die elements.yml Datei."
@@ -324,7 +327,7 @@ de:
324
327
  confirm_to_delete_image: "Wollen Sie dieses Bild wirklich löschen?"
325
328
  confirm_to_delete_image_from_server: "Wollen Sie dieses Bild wirklich vom Server löschen?"
326
329
  confirm_to_delete_images_from_server: "Wollen Sie diese Bilder wirklich vom Server löschen?"
327
- confirm_to_delete_page: "Wollen Sie diese Seite wirklich löschen? Alle Inhalte gehen dabei unwiderruflich verloren!"
330
+ confirm_to_delete_page: "Wollen Sie diese Seite wirklich löschen? Alle Inhalte (auch die aus dem Papierkorb) gehen dabei unwiderruflich verloren!"
328
331
  content_essence_not_found: "Essenz wurde nicht gefunden"
329
332
  content_not_found: "Das Feld für diesen Inhalt ist nicht vorhanden."
330
333
  content_validations_headline: "Bitte überprüfen Sie die markierten Felder."
@@ -514,6 +517,7 @@ de:
514
517
  rename_file: "Datei umbenennen"
515
518
  rename: umbenennen
516
519
  replace: ersetzen
520
+ replace_file: Datei ersetzen
517
521
  'Replaced Tag': "Das Tag '%{old_tag}' wurde durch das Tag '%{new_tag}' ersetzt"
518
522
  resources:
519
523
  relation_select:
@@ -585,6 +589,7 @@ de:
585
589
  "Create": "Hinzufügen"
586
590
  "Edit": "Bearbeiten"
587
591
  "Delete": "Löschen"
592
+ "Show error details": Fehlerdetails anzeigen
588
593
  "Succesfully created": "Erfolgreich erstellt"
589
594
  "Succesfully updated": "Erfolgreich aktualisiert"
590
595
  "Succesfully removed": "Erfolgreich gelöscht"
@@ -593,6 +598,7 @@ de:
593
598
  "Update available": 'Es ist ein Update verfügbar'
594
599
  "Update status unavailable": 'Update Status konnte nicht ermittelt werden'
595
600
  "Uploading": "Hochladen"
601
+ "Your user role does not allow you to edit this page": Ihre Benutzerrolle erlaubt es Ihnen nicht diese Seite zu bearbeiten
596
602
 
597
603
  # END of Alchemy translation
598
604
 
@@ -838,6 +844,8 @@ de:
838
844
  name: "Name"
839
845
  file_size: "Dateigröße"
840
846
  tag_list: Tags
847
+ url: "URL"
848
+ download_url: "Download-URL"
841
849
 
842
850
  alchemy/element:
843
851
  display_name: "Name"
@@ -160,6 +160,7 @@ en:
160
160
  aliases: Please separate additional domains with spaces or new lines.
161
161
 
162
162
  anchor: 'Anchor'
163
+ attribute_fixed: Value can't be changed for this page type
163
164
  back: 'back'
164
165
  create_tree_as_new_language: "Create %{language} as a new language tree"
165
166
  locked_pages: "Active pages"
@@ -261,6 +262,7 @@ en:
261
262
  show_element: "Show element"
262
263
  "Show childpages": "Show childpages"
263
264
  "Show clipboard": "Show clipboard"
265
+ "Copied to clipboard": "Copied to clipboard"
264
266
  "Show picture infos": "Show picture infos"
265
267
  "Show trash": "Show trash"
266
268
  "Site successfully created": "Website successfully created."
@@ -282,6 +284,7 @@ en:
282
284
  "Validation failed": "Validation failed"
283
285
  "Version": "Version"
284
286
  "View File": "View File"
287
+ "Attachment Preview": "Attachment Preview"
285
288
  "Visit page": "Visit page"
286
289
  "Warning!": "Warning!"
287
290
  content_definition_missing: "Warning: Content is missing its definition. Please check the elements.yml"
@@ -322,7 +325,7 @@ en:
322
325
  confirm_to_delete_image: "Do you really want to delete this image from server?"
323
326
  confirm_to_delete_image_from_server: "Do you really want to delete this image from the server?"
324
327
  confirm_to_delete_images_from_server: "Do you really want to delete these images from the server?"
325
- confirm_to_delete_page: "Do you really want to delete this page? All its elements will get lost!"
328
+ confirm_to_delete_page: "Do you really want to delete this page? All its elements (even trashed ones) will get lost!"
326
329
  content_essence_not_found: "Content essence not found"
327
330
  content_not_found: "Field for content not present."
328
331
  content_validations_headline: "Please check marked fields below"
@@ -509,6 +512,7 @@ en:
509
512
  rename_file: "Rename this file."
510
513
  rename: "Rename"
511
514
  replace: replace
515
+ replace_file: Replace file
512
516
  'Replaced Tag': "Tag '%{old_tag}' was replaced with '%{new_tag}'"
513
517
  resources:
514
518
  relation_select:
@@ -833,6 +837,8 @@ en:
833
837
  name: Name
834
838
  file_size: Filesize
835
839
  tag_list: Tags
840
+ url: "URL"
841
+ download_url: "Download-URL"
836
842
 
837
843
  alchemy/element:
838
844
  display_name: "Name"
@@ -160,6 +160,7 @@ es:
160
160
  aliases: Por favor separa con espacios o en una nueva línea los dominios adicionales.
161
161
 
162
162
  anchor: 'Ancla'
163
+ attribute_fixed: Este atributo no se puede cambiar
163
164
  back: 'Atras'
164
165
  create_tree_as_new_language: "Crear %{language} como nuevo árbol de idioma"
165
166
  locked_pages: "Páginas activas"
@@ -262,6 +263,7 @@ es:
262
263
  show_element: "Mostrar elemento"
263
264
  "Show childpages": "Mostrar páginas hijas"
264
265
  "Show clipboard": "Mostrar portapapeles"
266
+ "Copied to clipboard": "Copiado al portapapeles"
265
267
  "Show picture infos": "Mostrar información de la imagen"
266
268
  "Show trash": "Mostrar papelera"
267
269
  "Site successfully created": "Sitio web creado correctamente."
@@ -283,6 +285,7 @@ es:
283
285
  "Validation failed": "Fallo de validación"
284
286
  "Version": "Versión"
285
287
  "View File": "Ver archivo"
288
+ "Attachment Preview": "Vista previa"
286
289
  "Visit page": "Visitar página"
287
290
  "Warning!": "¡Atención!"
288
291
  content_definition_missing: "Atención: Falta la descripción del contenido. Por favor comprueba el archivo elements.yml"
@@ -510,6 +513,7 @@ es:
510
513
  rename_file: "Renombrar este archivo."
511
514
  rename: "Renombrar"
512
515
  replace: Reemplazar
516
+ replace_file: Reemplazar el archivo
513
517
  'Replaced Tag': "La etiqueta '%{old_tag}' fue reemplazada por '%{new_tag}'"
514
518
  resources:
515
519
  relation_select:
@@ -870,6 +874,8 @@ es:
870
874
  name: Nombre
871
875
  file_size: Tamaño del archivo
872
876
  tag_list: Etiquetas
877
+ url: "URL"
878
+ download_url: "URL de descarga"
873
879
 
874
880
  alchemy/element:
875
881
  display_name: "Nombre"
@@ -175,6 +175,7 @@ fr:
175
175
  aliases: "S'il vous plaît indiquer Autres domaines séparés par des espaces ou ligne blanche."
176
176
 
177
177
  anchor: 'ancre'
178
+ attribute_fixed: La valeur ne peut être modifiée
178
179
  back: 'arrière'
179
180
  create_tree_as_new_language: "%{language} Création d'un nouvel arbre de la langue"
180
181
  "<a href=\"http://get.adobe.com/flashplayer\" target=\"_blank\">%{value}</a>": ""
@@ -529,6 +530,7 @@ fr:
529
530
  rename_file: "Renommer un fichier"
530
531
  rename: rebaptiser
531
532
  replace: remplacer
533
+ replace_file: Remplacer le fichier
532
534
  'Replaced Tag %{old_tag} with %{new_tag}': "Le Tag '%{old_tag}' á été rmplacé par le Tag '%{new_tag}'"
533
535
  resources:
534
536
  relation_select: