alchemy_cms 3.2.1 → 3.3.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 (556) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +28 -0
  3. data/.gitignore +2 -2
  4. data/.travis.yml +11 -3
  5. data/CHANGELOG.md +100 -0
  6. data/CONTRIBUTING.md +1 -1
  7. data/Gemfile +12 -1
  8. data/README.md +25 -7
  9. data/Rakefile +1 -3
  10. data/alchemy_cms.gemspec +7 -15
  11. data/app/assets/fonts/alchemy/icons.eot +0 -0
  12. data/app/assets/fonts/alchemy/icons.svg +28 -66
  13. data/app/assets/fonts/alchemy/icons.ttf +0 -0
  14. data/app/assets/fonts/alchemy/icons.woff +0 -0
  15. data/app/assets/images/alchemy/icons.png +0 -0
  16. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +10 -3
  17. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +15 -6
  18. data/app/assets/javascripts/alchemy/alchemy.char_counter.js.coffee +1 -1
  19. data/app/assets/javascripts/alchemy/alchemy.datepicker.js.coffee +1 -1
  20. data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +10 -4
  21. data/app/assets/javascripts/alchemy/alchemy.dirty.js.coffee +16 -22
  22. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +69 -32
  23. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +147 -83
  24. data/app/assets/javascripts/alchemy/alchemy.file_progress.js.coffee +14 -14
  25. data/app/assets/javascripts/alchemy/alchemy.hotkeys.js.coffee +1 -1
  26. data/app/assets/javascripts/alchemy/alchemy.i18n.js.coffee +1 -1
  27. data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +55 -0
  28. data/app/assets/javascripts/alchemy/alchemy.initializer.js.coffee +8 -1
  29. data/app/assets/javascripts/alchemy/alchemy.js +3 -1
  30. data/app/assets/javascripts/alchemy/alchemy.link_dialog.js.coffee +36 -31
  31. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +35 -29
  32. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +51 -5
  33. data/app/assets/javascripts/alchemy/alchemy.tinymce.js.coffee +26 -10
  34. data/app/assets/javascripts/alchemy/{alchemy.windows.js.coffee → alchemy.trash_window.js.coffee} +1 -13
  35. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +15 -17
  36. data/app/assets/javascripts/tinymce/plugins/alchemy_link/plugin.min.js +3 -3
  37. data/app/assets/stylesheets/alchemy/_extends.scss +1 -1
  38. data/app/assets/stylesheets/alchemy/_mixins.scss +27 -0
  39. data/app/assets/stylesheets/alchemy/_variables.scss +1 -0
  40. data/app/assets/stylesheets/alchemy/admin.scss +1 -0
  41. data/app/assets/stylesheets/alchemy/archive.scss +0 -57
  42. data/app/assets/stylesheets/alchemy/base.scss +1 -18
  43. data/app/assets/stylesheets/alchemy/buttons.scss +30 -25
  44. data/app/assets/stylesheets/alchemy/dialogs.scss +25 -9
  45. data/app/assets/stylesheets/alchemy/elements.scss +182 -126
  46. data/app/assets/stylesheets/alchemy/form_fields.scss +14 -8
  47. data/app/assets/stylesheets/alchemy/forms.scss +10 -1
  48. data/app/assets/stylesheets/alchemy/frame.scss +3 -10
  49. data/app/assets/stylesheets/alchemy/icon-font.scss +13 -6
  50. data/app/assets/stylesheets/alchemy/icons.scss +16 -0
  51. data/app/assets/stylesheets/alchemy/image_library.scss +269 -0
  52. data/app/assets/stylesheets/alchemy/selects.scss +1 -0
  53. data/app/assets/stylesheets/alchemy/sitemap.scss +12 -1
  54. data/app/assets/stylesheets/alchemy/toolbar.scss +2 -2
  55. data/app/assets/stylesheets/alchemy/upload.scss +97 -87
  56. data/app/assets/stylesheets/alchemy/welcome.sass +49 -0
  57. data/app/controllers/alchemy/admin/attachments_controller.rb +21 -29
  58. data/app/controllers/alchemy/admin/base_controller.rb +23 -4
  59. data/app/controllers/alchemy/admin/clipboard_controller.rb +0 -1
  60. data/app/controllers/alchemy/admin/contents_controller.rb +2 -4
  61. data/app/controllers/alchemy/admin/dashboard_controller.rb +4 -4
  62. data/app/controllers/alchemy/admin/elements_controller.rb +20 -11
  63. data/app/controllers/alchemy/admin/essence_files_controller.rb +2 -2
  64. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +10 -9
  65. data/app/controllers/alchemy/admin/languages_controller.rb +0 -1
  66. data/app/controllers/alchemy/admin/layoutpages_controller.rb +0 -2
  67. data/app/controllers/alchemy/admin/legacy_page_urls_controller.rb +0 -1
  68. data/app/controllers/alchemy/admin/pages_controller.rb +46 -29
  69. data/app/controllers/alchemy/admin/pictures_controller.rb +44 -55
  70. data/app/controllers/alchemy/admin/resources_controller.rb +8 -75
  71. data/app/controllers/alchemy/admin/tags_controller.rb +10 -8
  72. data/app/controllers/alchemy/admin/trash_controller.rb +0 -6
  73. data/app/controllers/alchemy/api/contents_controller.rb +0 -1
  74. data/app/controllers/alchemy/api/elements_controller.rb +0 -1
  75. data/app/controllers/alchemy/api/pages_controller.rb +4 -1
  76. data/app/controllers/alchemy/attachments_controller.rb +4 -5
  77. data/app/controllers/alchemy/base_controller.rb +6 -5
  78. data/app/controllers/alchemy/elements_controller.rb +1 -1
  79. data/app/controllers/alchemy/messages_controller.rb +9 -4
  80. data/app/controllers/alchemy/pages_controller.rb +133 -137
  81. data/app/controllers/alchemy/pictures_controller.rb +12 -10
  82. data/app/controllers/concerns/alchemy/admin/uploader_responses.rb +41 -0
  83. data/app/controllers/concerns/alchemy/legacy_page_redirects.rb +56 -0
  84. data/app/controllers/concerns/alchemy/locale_redirects.rb +38 -0
  85. data/app/controllers/concerns/alchemy/page_redirects.rb +80 -0
  86. data/app/controllers/concerns/alchemy/site_redirects.rb +22 -0
  87. data/app/helpers/alchemy/admin/attachments_helper.rb +1 -2
  88. data/app/helpers/alchemy/admin/base_helper.rb +36 -62
  89. data/app/helpers/alchemy/admin/contents_helper.rb +6 -80
  90. data/app/helpers/alchemy/admin/elements_helper.rb +36 -15
  91. data/app/helpers/alchemy/admin/essences_helper.rb +15 -8
  92. data/app/helpers/alchemy/admin/form_helper.rb +6 -10
  93. data/app/helpers/alchemy/admin/navigation_helper.rb +4 -7
  94. data/app/helpers/alchemy/admin/pages_helper.rb +14 -35
  95. data/app/helpers/alchemy/admin/pictures_helper.rb +12 -14
  96. data/app/helpers/alchemy/admin/tags_helper.rb +5 -7
  97. data/app/helpers/alchemy/base_helper.rb +9 -17
  98. data/app/helpers/alchemy/elements_block_helper.rb +5 -13
  99. data/app/helpers/alchemy/elements_helper.rb +6 -6
  100. data/app/helpers/alchemy/essences_helper.rb +3 -16
  101. data/app/helpers/alchemy/pages_helper.rb +32 -25
  102. data/app/helpers/alchemy/url_helper.rb +14 -16
  103. data/app/mailers/alchemy/messages.rb +0 -2
  104. data/app/models/alchemy.rb +0 -2
  105. data/app/models/alchemy/attachment.rb +45 -56
  106. data/app/models/alchemy/cell.rb +7 -8
  107. data/app/models/alchemy/content.rb +39 -24
  108. data/app/models/alchemy/content/factory.rb +27 -44
  109. data/app/models/alchemy/element.rb +101 -267
  110. data/app/models/alchemy/element/definitions.rb +9 -8
  111. data/app/models/alchemy/element/element_contents.rb +150 -0
  112. data/app/models/alchemy/element/element_essences.rb +109 -0
  113. data/app/models/alchemy/element/presenters.rb +18 -7
  114. data/app/models/alchemy/essence_date.rb +1 -2
  115. data/app/models/alchemy/essence_file.rb +10 -6
  116. data/app/models/alchemy/essence_html.rb +0 -1
  117. data/app/models/alchemy/essence_picture.rb +12 -4
  118. data/app/models/alchemy/essence_richtext.rb +6 -3
  119. data/app/models/alchemy/language.rb +48 -21
  120. data/app/models/alchemy/language/code.rb +1 -4
  121. data/app/models/alchemy/page.rb +33 -35
  122. data/app/models/alchemy/page/page_cells.rb +6 -10
  123. data/app/models/alchemy/page/page_elements.rb +130 -100
  124. data/app/models/alchemy/page/page_naming.rb +2 -3
  125. data/app/models/alchemy/page/page_natures.rb +50 -16
  126. data/app/models/alchemy/page/page_scopes.rb +7 -7
  127. data/app/models/alchemy/page/page_users.rb +3 -3
  128. data/app/models/alchemy/picture.rb +48 -33
  129. data/app/models/alchemy/picture/transformations.rb +8 -9
  130. data/app/models/alchemy/site.rb +19 -17
  131. data/app/models/alchemy/site/layout.rb +9 -9
  132. data/app/models/alchemy/tag.rb +0 -2
  133. data/app/models/alchemy/tree_node.rb +5 -4
  134. data/app/serializers/alchemy/attachment_serializer.rb +0 -1
  135. data/app/serializers/alchemy/base_serializer.rb +30 -0
  136. data/app/serializers/alchemy/cell_serializer.rb +0 -1
  137. data/app/serializers/alchemy/essence_boolean_serializer.rb +0 -1
  138. data/app/serializers/alchemy/essence_date_serializer.rb +0 -1
  139. data/app/serializers/alchemy/essence_file_serializer.rb +0 -1
  140. data/app/serializers/alchemy/essence_html_serializer.rb +0 -1
  141. data/app/serializers/alchemy/essence_link_serializer.rb +0 -1
  142. data/app/serializers/alchemy/essence_picture_serializer.rb +0 -1
  143. data/app/serializers/alchemy/essence_richtext_serializer.rb +0 -1
  144. data/app/serializers/alchemy/essence_select_serializer.rb +0 -1
  145. data/app/serializers/alchemy/essence_text_serializer.rb +0 -1
  146. data/app/serializers/alchemy/legacy_element_serializer.rb +0 -1
  147. data/app/serializers/alchemy/page_serializer.rb +0 -1
  148. data/app/serializers/alchemy/page_tree_serializer.rb +90 -0
  149. data/app/serializers/alchemy/picture_serializer.rb +0 -1
  150. data/app/views/alchemy/_menubar.html.erb +3 -3
  151. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +11 -16
  152. data/app/views/alchemy/admin/attachments/_attachment.html.erb +9 -9
  153. data/app/views/alchemy/admin/attachments/_files_list.html.erb +7 -15
  154. data/app/views/alchemy/admin/attachments/_overlay_file_list.html.erb +1 -1
  155. data/app/views/alchemy/admin/attachments/_tag_list.html.erb +2 -2
  156. data/app/views/alchemy/admin/attachments/edit.html.erb +3 -3
  157. data/app/views/alchemy/admin/attachments/index.html.erb +10 -17
  158. data/app/views/alchemy/admin/clipboard/clear.js.erb +1 -1
  159. data/app/views/alchemy/admin/clipboard/index.html.erb +3 -3
  160. data/app/views/alchemy/admin/clipboard/insert.js.erb +3 -3
  161. data/app/views/alchemy/admin/clipboard/remove.js.erb +2 -2
  162. data/app/views/alchemy/admin/contents/_missing.html.erb +5 -7
  163. data/app/views/alchemy/admin/contents/create.js.erb +1 -1
  164. data/app/views/alchemy/admin/contents/new.html.erb +2 -2
  165. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +6 -6
  166. data/app/views/alchemy/admin/dashboard/_recent_pages.html.erb +2 -2
  167. data/app/views/alchemy/admin/dashboard/_users.html.erb +2 -2
  168. data/app/views/alchemy/admin/dashboard/help.html.erb +15 -15
  169. data/app/views/alchemy/admin/dashboard/index.html.erb +6 -6
  170. data/app/views/alchemy/admin/dashboard/info.html.erb +5 -5
  171. data/app/views/alchemy/admin/elements/_add_picture.html.erb +1 -1
  172. data/app/views/alchemy/admin/elements/_element.html.erb +52 -18
  173. data/app/views/alchemy/admin/elements/_element_footer.html.erb +11 -0
  174. data/app/views/alchemy/admin/elements/{_element_head.html.erb → _element_header.html.erb} +8 -8
  175. data/app/views/alchemy/admin/elements/_element_toolbar.html.erb +49 -0
  176. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +7 -6
  177. data/app/views/alchemy/admin/elements/_picture_gallery_editor.html.erb +1 -1
  178. data/app/views/alchemy/admin/elements/_refresh_editor.js.erb +1 -1
  179. data/app/views/alchemy/admin/elements/create.js.erb +13 -8
  180. data/app/views/alchemy/admin/elements/fold.js.erb +12 -7
  181. data/app/views/alchemy/admin/elements/index.html.erb +12 -8
  182. data/app/views/alchemy/admin/elements/list.html.erb +3 -3
  183. data/app/views/alchemy/admin/elements/new.html.erb +4 -4
  184. data/app/views/alchemy/admin/elements/order.js.erb +3 -4
  185. data/app/views/alchemy/admin/elements/publish.js.erb +15 -0
  186. data/app/views/alchemy/admin/elements/trash.js.erb +3 -3
  187. data/app/views/alchemy/admin/elements/update.js.erb +7 -8
  188. data/app/views/alchemy/admin/essence_files/edit.html.erb +16 -13
  189. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +3 -3
  190. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +8 -8
  191. data/app/views/alchemy/admin/languages/_form.html.erb +12 -3
  192. data/app/views/alchemy/admin/languages/_language.html.erb +8 -2
  193. data/app/views/alchemy/admin/languages/_table.html.erb +11 -5
  194. data/app/views/alchemy/admin/languages/index.html.erb +1 -1
  195. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +8 -8
  196. data/app/views/alchemy/admin/layoutpages/edit.html.erb +2 -2
  197. data/app/views/alchemy/admin/layoutpages/index.html.erb +6 -13
  198. data/app/views/alchemy/admin/leave.html.erb +5 -5
  199. data/app/views/alchemy/admin/legacy_page_urls/_form.html.erb +1 -1
  200. data/app/views/alchemy/admin/legacy_page_urls/_legacy_page_url.html.erb +4 -4
  201. data/app/views/alchemy/admin/legacy_page_urls/_new.html.erb +1 -1
  202. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +9 -9
  203. data/app/views/alchemy/admin/pages/_external_link.html.erb +6 -6
  204. data/app/views/alchemy/admin/pages/_file_link.html.erb +6 -6
  205. data/app/views/alchemy/admin/pages/_form.html.erb +6 -6
  206. data/app/views/alchemy/admin/pages/_internal_link.html.erb +9 -11
  207. data/app/views/alchemy/admin/pages/_legacy_urls.html.erb +3 -3
  208. data/app/views/alchemy/admin/pages/_locked_page.html.erb +4 -4
  209. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +2 -2
  210. data/app/views/alchemy/admin/pages/_page.html.erb +95 -80
  211. data/app/views/alchemy/admin/pages/_page_for_links.html.erb +22 -22
  212. data/app/views/alchemy/admin/pages/_page_infos.html.erb +12 -0
  213. data/app/views/alchemy/admin/pages/_page_status.html.erb +7 -9
  214. data/app/views/alchemy/admin/pages/_sitemap.html.erb +35 -6
  215. data/app/views/alchemy/admin/pages/_tinymce_custom_config.html.erb +0 -3
  216. data/app/views/alchemy/admin/pages/configure.html.erb +1 -1
  217. data/app/views/alchemy/admin/pages/configure_external.html.erb +4 -4
  218. data/app/views/alchemy/admin/pages/edit.html.erb +39 -44
  219. data/app/views/alchemy/admin/pages/flush.js.erb +1 -1
  220. data/app/views/alchemy/admin/pages/fold.js.erb +2 -3
  221. data/app/views/alchemy/admin/pages/index.html.erb +15 -22
  222. data/app/views/alchemy/admin/pages/info.html.erb +8 -8
  223. data/app/views/alchemy/admin/pages/link.html.erb +3 -3
  224. data/app/views/alchemy/admin/pages/locked.html.erb +1 -1
  225. data/app/views/alchemy/admin/pages/new.html.erb +4 -4
  226. data/app/views/alchemy/admin/pages/sort.js.erb +1 -2
  227. data/app/views/alchemy/admin/pages/unlock.js.erb +1 -1
  228. data/app/views/alchemy/admin/pages/update.js.erb +3 -3
  229. data/app/views/alchemy/admin/partials/_autocomplete_tag_list.html.erb +1 -1
  230. data/app/views/alchemy/admin/partials/_language_tree_select.html.erb +1 -1
  231. data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +1 -1
  232. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +9 -15
  233. data/app/views/alchemy/admin/partials/_search_form.html.erb +14 -13
  234. data/app/views/alchemy/admin/partials/_sub_navigation.html.erb +1 -1
  235. data/app/views/alchemy/admin/pictures/_archive.html.erb +14 -14
  236. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +30 -36
  237. data/app/views/alchemy/admin/pictures/_filter_bar.html.erb +5 -5
  238. data/app/views/alchemy/admin/pictures/{edit.html.erb → _form.html.erb} +7 -6
  239. data/app/views/alchemy/admin/pictures/_infos.html.erb +50 -0
  240. data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +1 -1
  241. data/app/views/alchemy/admin/pictures/_picture.html.erb +17 -51
  242. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +1 -1
  243. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +2 -2
  244. data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +6 -6
  245. data/app/views/alchemy/admin/pictures/index.html.erb +28 -36
  246. data/app/views/alchemy/admin/pictures/show.html.erb +46 -9
  247. data/app/views/alchemy/admin/pictures/update.js.erb +6 -0
  248. data/app/views/alchemy/admin/resources/_form.html.erb +3 -3
  249. data/app/views/alchemy/admin/resources/_resource.html.erb +4 -4
  250. data/app/views/alchemy/admin/resources/_table.html.erb +5 -6
  251. data/app/views/alchemy/admin/resources/index.csv.erb +12 -10
  252. data/app/views/alchemy/admin/resources/index.html.erb +4 -4
  253. data/app/views/alchemy/admin/sites/index.html.erb +1 -1
  254. data/app/views/alchemy/admin/tags/_tag.html.erb +4 -4
  255. data/app/views/alchemy/admin/tags/edit.html.erb +5 -5
  256. data/app/views/alchemy/admin/tags/index.html.erb +8 -8
  257. data/app/views/alchemy/admin/tags/new.html.erb +2 -2
  258. data/app/views/alchemy/admin/trash/clear.js.erb +1 -1
  259. data/app/views/alchemy/admin/trash/index.html.erb +8 -6
  260. data/app/views/alchemy/admin/uploader/_button.html.erb +39 -0
  261. data/app/views/alchemy/admin/uploader/_setup.html.erb +13 -0
  262. data/app/views/alchemy/base/500.html.erb +4 -4
  263. data/app/views/alchemy/elements/_editor_not_found.html.erb +1 -1
  264. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +3 -4
  265. data/app/views/alchemy/essences/_essence_boolean_view.html.erb +1 -1
  266. data/app/views/alchemy/essences/_essence_date_editor.html.erb +2 -6
  267. data/app/views/alchemy/essences/_essence_date_view.html.erb +1 -1
  268. data/app/views/alchemy/essences/_essence_file_editor.html.erb +9 -11
  269. data/app/views/alchemy/essences/_essence_file_view.html.erb +11 -5
  270. data/app/views/alchemy/essences/_essence_html_editor.html.erb +1 -1
  271. data/app/views/alchemy/essences/_essence_link_editor.html.erb +1 -1
  272. data/app/views/alchemy/essences/_essence_link_view.html.erb +1 -1
  273. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +47 -52
  274. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +1 -1
  275. data/app/views/alchemy/essences/_essence_richtext_view.html.erb +1 -1
  276. data/app/views/alchemy/essences/_essence_select_editor.html.erb +23 -13
  277. data/app/views/alchemy/essences/_essence_text_editor.html.erb +1 -1
  278. data/app/views/alchemy/essences/_essence_text_view.html.erb +1 -1
  279. data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +29 -36
  280. data/app/views/alchemy/essences/shared/_linkable_essence_tools.html.erb +5 -5
  281. data/app/views/alchemy/language_links/_language.html.erb +15 -9
  282. data/app/views/alchemy/messages/contact_form_mail.de.text.erb +1 -1
  283. data/app/views/alchemy/messages/contact_form_mail.en.text.erb +1 -1
  284. data/app/views/alchemy/messages/contact_form_mail.es.text.erb +1 -1
  285. data/app/views/alchemy/navigation/_link.html.erb +0 -1
  286. data/app/views/alchemy/pages/show.rss.builder +6 -4
  287. data/app/views/alchemy/welcome.html.erb +28 -0
  288. data/app/views/layouts/alchemy/admin.html.erb +14 -10
  289. data/bin/alchemy +3 -4
  290. data/bin/rspec +7 -0
  291. data/bin/spring +15 -0
  292. data/config/alchemy/config.yml +16 -17
  293. data/config/initializers/assets.rb +13 -0
  294. data/config/locales/alchemy.de.yml +27 -29
  295. data/config/locales/alchemy.en.yml +23 -29
  296. data/config/locales/alchemy.es.yml +23 -29
  297. data/config/locales/alchemy.fr.yml +19 -28
  298. data/config/locales/alchemy.nl.yml +19 -27
  299. data/config/locales/alchemy.ru.yml +19 -28
  300. data/config/routes.rb +53 -54
  301. data/config/spring.rb +2 -0
  302. data/db/migrate/20130827094554_alchemy_two_point_six.rb +1 -3
  303. data/db/migrate/20150608204610_add_parent_element_id_to_alchemy_elements.rb +6 -0
  304. data/db/migrate/20150729151825_add_link_text_to_alchemy_essence_files.rb +5 -0
  305. data/db/migrate/20150906195818_add_locale_to_alchemy_languages.rb +7 -0
  306. data/lib/alchemy/auth_accessors.rb +1 -1
  307. data/lib/alchemy/cache_digests/template_tracker.rb +7 -13
  308. data/lib/alchemy/config.rb +5 -7
  309. data/lib/alchemy/configuration_methods.rb +11 -1
  310. data/lib/alchemy/controller_actions.rb +9 -12
  311. data/lib/alchemy/engine.rb +11 -28
  312. data/lib/alchemy/errors.rb +0 -1
  313. data/lib/alchemy/essence.rb +20 -20
  314. data/lib/alchemy/filetypes.rb +1 -3
  315. data/lib/alchemy/forms/builder.rb +0 -2
  316. data/lib/alchemy/hints.rb +1 -3
  317. data/lib/alchemy/i18n.rb +81 -53
  318. data/lib/alchemy/kaminari/scoped_pagination_url_helper.rb +0 -2
  319. data/lib/alchemy/locale.rb +0 -1
  320. data/lib/alchemy/logger.rb +1 -3
  321. data/lib/alchemy/modules.rb +3 -3
  322. data/lib/alchemy/mount_point.rb +0 -2
  323. data/lib/alchemy/name_conversions.rb +1 -3
  324. data/lib/alchemy/on_page_layout.rb +37 -23
  325. data/lib/alchemy/on_page_layout/callbacks_runner.rb +34 -0
  326. data/lib/alchemy/page_layout.rb +23 -24
  327. data/lib/alchemy/paths.rb +32 -0
  328. data/lib/alchemy/permissions.rb +20 -20
  329. data/lib/alchemy/picture_attributes.rb +0 -3
  330. data/lib/alchemy/resource.rb +66 -22
  331. data/lib/alchemy/resources_helper.rb +48 -11
  332. data/lib/alchemy/routing_constraints.rb +4 -5
  333. data/lib/alchemy/seeder.rb +1 -4
  334. data/lib/alchemy/shell.rb +12 -14
  335. data/lib/alchemy/tasks/helpers.rb +5 -7
  336. data/lib/alchemy/test_support/essence_shared_examples.rb +24 -24
  337. data/lib/alchemy/test_support/factories.rb +2 -146
  338. data/lib/alchemy/test_support/factories/attachment_factory.rb +9 -0
  339. data/lib/alchemy/test_support/factories/cell_factory.rb +9 -0
  340. data/lib/alchemy/test_support/factories/content_factory.rb +10 -0
  341. data/lib/alchemy/test_support/factories/dummy_user_factory.rb +21 -0
  342. data/lib/alchemy/test_support/factories/element_factory.rb +21 -0
  343. data/lib/alchemy/test_support/factories/essence_file_factory.rb +8 -0
  344. data/lib/alchemy/test_support/factories/essence_picture_factory.rb +8 -0
  345. data/lib/alchemy/test_support/factories/essence_text_factory.rb +7 -0
  346. data/lib/alchemy/test_support/factories/language_factory.rb +28 -0
  347. data/lib/alchemy/test_support/factories/page_factory.rb +45 -0
  348. data/lib/alchemy/test_support/factories/picture_factory.rb +10 -0
  349. data/lib/alchemy/test_support/factories/site_factory.rb +12 -0
  350. data/lib/alchemy/test_support/integration_helpers.rb +0 -3
  351. data/lib/alchemy/tinymce.rb +24 -35
  352. data/lib/alchemy/touching.rb +5 -6
  353. data/lib/alchemy/upgrader.rb +3 -5
  354. data/lib/alchemy/upgrader/tasks/available_contents_upgrader.rb +155 -0
  355. data/lib/alchemy/upgrader/tasks/nestable_elements_migration.rb +71 -0
  356. data/lib/alchemy/upgrader/tasks/three_point_two_task.rb +31 -0
  357. data/lib/alchemy/upgrader/three_point_three.rb +50 -0
  358. data/lib/alchemy/upgrader/three_point_two.rb +3 -32
  359. data/lib/alchemy/upgrader/three_point_zero.rb +0 -1
  360. data/lib/alchemy/version.rb +1 -1
  361. data/lib/rails/generators/alchemy/base.rb +1 -1
  362. data/lib/rails/generators/alchemy/elements/elements_generator.rb +1 -7
  363. data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +5 -7
  364. data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +6 -8
  365. data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +6 -7
  366. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +4 -4
  367. data/lib/rails/generators/alchemy/elements/templates/view.html.haml +3 -3
  368. data/lib/rails/generators/alchemy/elements/templates/view.html.slim +3 -3
  369. data/lib/rails/generators/alchemy/essence/essence_generator.rb +2 -3
  370. data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +1 -1
  371. data/lib/rails/generators/alchemy/install/files/alchemy.de.yml +2 -2
  372. data/lib/rails/generators/alchemy/install/files/alchemy.en.yml +2 -2
  373. data/lib/rails/generators/alchemy/install/files/alchemy.es.yml +3 -3
  374. data/lib/rails/generators/alchemy/install/install_generator.rb +0 -1
  375. data/lib/rails/generators/alchemy/install/templates/elements.yml.tt +2 -2
  376. data/lib/rails/generators/alchemy/install/templates/page_layouts.yml.tt +1 -1
  377. data/lib/rails/generators/alchemy/module/module_generator.rb +1 -1
  378. data/lib/rails/templates/alchemy.rb +2 -2
  379. data/lib/tasks/alchemy/convert.rake +4 -8
  380. data/lib/tasks/alchemy/db.rake +2 -3
  381. data/lib/tasks/alchemy/install.rake +3 -4
  382. data/lib/tasks/alchemy/tidy.rake +4 -5
  383. data/lib/tasks/alchemy/upgrade.rake +2 -4
  384. data/spec/controllers/{admin → alchemy/admin}/attachments_controller_spec.rb +26 -44
  385. data/spec/controllers/{admin → alchemy/admin}/base_controller_spec.rb +14 -1
  386. data/spec/controllers/{admin → alchemy/admin}/clipboard_controller_spec.rb +3 -3
  387. data/spec/controllers/{admin → alchemy/admin}/contents_controller_spec.rb +4 -4
  388. data/spec/controllers/{admin → alchemy/admin}/dashboard_controller_spec.rb +11 -6
  389. data/spec/controllers/{admin → alchemy/admin}/elements_controller_spec.rb +54 -31
  390. data/spec/controllers/{admin → alchemy/admin}/essence_files_controller_spec.rb +8 -3
  391. data/spec/controllers/{admin → alchemy/admin}/essence_pictures_controller_spec.rb +3 -3
  392. data/spec/controllers/{admin → alchemy/admin}/languages_controller_spec.rb +13 -1
  393. data/spec/controllers/{admin → alchemy/admin}/layoutpages_controller_spec.rb +0 -6
  394. data/spec/controllers/{admin → alchemy/admin}/pages_controller_spec.rb +103 -35
  395. data/spec/controllers/{admin → alchemy/admin}/pictures_controller_spec.rb +133 -108
  396. data/spec/controllers/alchemy/admin/resources_controller_spec.rb +81 -0
  397. data/spec/controllers/{admin → alchemy/admin}/trash_controller_spec.rb +12 -13
  398. data/spec/controllers/alchemy/api/contents_controller_spec.rb +12 -13
  399. data/spec/controllers/alchemy/api/elements_controller_spec.rb +8 -9
  400. data/spec/controllers/alchemy/api/pages_controller_spec.rb +40 -7
  401. data/spec/controllers/{attachments_controller_spec.rb → alchemy/attachments_controller_spec.rb} +7 -7
  402. data/spec/controllers/alchemy/base_controller_spec.rb +106 -0
  403. data/spec/controllers/{elements_controller_spec.rb → alchemy/elements_controller_spec.rb} +4 -4
  404. data/spec/controllers/{messages_controller_spec.rb → alchemy/messages_controller_spec.rb} +14 -9
  405. data/spec/controllers/alchemy/on_page_layout_mixin_spec.rb +330 -0
  406. data/spec/controllers/{pages_controller_spec.rb → alchemy/pages_controller_spec.rb} +167 -89
  407. data/spec/controllers/{pictures_controller_spec.rb → alchemy/pictures_controller_spec.rb} +42 -20
  408. data/spec/dummy/app/models/dummy_user.rb +4 -0
  409. data/spec/dummy/app/views/alchemy/elements/_all_you_can_eat_view.html.erb +31 -0
  410. data/spec/dummy/app/views/alchemy/elements/_article_editor.html.erb +6 -10
  411. data/spec/dummy/app/views/alchemy/elements/_article_view.html.erb +9 -24
  412. data/spec/dummy/app/views/alchemy/elements/_bild_editor.html.erb +3 -0
  413. data/spec/dummy/app/views/alchemy/elements/_bild_view.html.erb +5 -0
  414. data/spec/dummy/app/views/alchemy/elements/_contactform_editor.html.erb +6 -0
  415. data/spec/dummy/app/views/alchemy/elements/_contactform_view.html.erb +16 -0
  416. data/spec/dummy/app/views/alchemy/elements/_download_editor.html.erb +3 -0
  417. data/spec/dummy/app/views/alchemy/elements/_download_view.html.erb +5 -0
  418. data/spec/dummy/app/views/alchemy/elements/_erb_element_editor.html.erb +3 -0
  419. data/spec/dummy/app/views/alchemy/elements/_erb_element_view.html.erb +5 -0
  420. data/spec/dummy/app/views/alchemy/elements/_header_editor.html.erb +3 -0
  421. data/spec/dummy/app/views/alchemy/elements/_header_view.html.erb +5 -0
  422. data/spec/dummy/app/views/alchemy/elements/_news_editor.html.erb +5 -0
  423. data/spec/dummy/app/views/alchemy/elements/_search_editor.html.erb +1 -0
  424. data/spec/dummy/app/views/alchemy/elements/_search_view.html.erb +4 -0
  425. data/spec/dummy/app/views/alchemy/elements/_slide_editor.html.erb +3 -0
  426. data/spec/dummy/app/views/alchemy/elements/_slide_view.html.erb +5 -0
  427. data/spec/dummy/app/views/alchemy/elements/_slider_editor.html.erb +2 -0
  428. data/spec/dummy/app/views/alchemy/elements/_slider_view.html.erb +4 -0
  429. data/spec/dummy/app/views/alchemy/elements/_text_editor.html.erb +3 -0
  430. data/spec/dummy/app/views/alchemy/elements/_text_view.html.erb +5 -0
  431. data/spec/dummy/app/views/alchemy/page_layouts/_standard.html.erb +1 -0
  432. data/spec/dummy/config/alchemy/elements.yml +10 -13
  433. data/spec/dummy/config/alchemy/page_layouts.yml +1 -1
  434. data/spec/dummy/config/initializers/alchemy.rb +1 -0
  435. data/spec/dummy/config/locales/kl.yml +2 -0
  436. data/spec/dummy/db/migrate/20150608204610_add_parent_element_id_to_alchemy_elements.rb +1 -0
  437. data/spec/dummy/db/migrate/20150729151825_add_link_text_to_alchemy_essence_files.rb +1 -0
  438. data/spec/dummy/db/migrate/20150906195818_add_locale_to_alchemy_languages.rb +1 -0
  439. data/spec/dummy/db/schema.rb +10 -6
  440. data/spec/factories.rb +13 -0
  441. data/spec/features/admin/admin_layout_spec.rb +14 -0
  442. data/spec/features/admin/dashboard_spec.rb +1 -2
  443. data/spec/features/admin/edit_elements_feature_spec.rb +36 -0
  444. data/spec/features/admin/language_tree_feature_spec.rb +7 -8
  445. data/spec/features/admin/languages_features_spec.rb +65 -0
  446. data/spec/features/admin/legacy_page_url_management_spec.rb +3 -3
  447. data/spec/features/admin/link_overlay_spec.rb +16 -17
  448. data/spec/features/admin/locale_select_feature_spec.rb +1 -1
  449. data/spec/features/admin/modules_integration_spec.rb +0 -1
  450. data/spec/features/admin/navigation_feature_spec.rb +11 -2
  451. data/spec/features/admin/page_creation_feature_spec.rb +5 -5
  452. data/spec/features/admin/page_editing_feature_spec.rb +6 -6
  453. data/spec/features/admin/picture_library_integration_spec.rb +3 -3
  454. data/spec/features/admin/resources_integration_spec.rb +7 -12
  455. data/spec/features/admin/site_select_feature_spec.rb +1 -2
  456. data/spec/features/admin/tinymce_feature_spec.rb +0 -1
  457. data/spec/features/page_feature_spec.rb +57 -158
  458. data/spec/features/page_redirects_spec.rb +358 -0
  459. data/spec/features/picture_security_spec.rb +1 -7
  460. data/spec/fixtures/animated.gif +0 -0
  461. data/spec/helpers/{admin → alchemy/admin}/attachments_helper_spec.rb +0 -0
  462. data/spec/helpers/{admin → alchemy/admin}/base_helper_spec.rb +39 -29
  463. data/spec/helpers/{admin → alchemy/admin}/contents_helper_spec.rb +4 -23
  464. data/spec/helpers/{admin → alchemy/admin}/elements_helper_spec.rb +141 -5
  465. data/spec/helpers/{admin → alchemy/admin}/essences_helper_spec.rb +69 -8
  466. data/spec/helpers/{admin → alchemy/admin}/navigation_helper_spec.rb +43 -37
  467. data/spec/helpers/{admin → alchemy/admin}/pages_helper_spec.rb +6 -38
  468. data/spec/helpers/{admin → alchemy/admin}/pictures_helper_spec.rb +0 -1
  469. data/spec/helpers/{admin → alchemy/admin}/tags_helper_spec.rb +1 -3
  470. data/spec/helpers/{base_helper_spec.rb → alchemy/base_helper_spec.rb} +1 -2
  471. data/spec/helpers/{elements_block_helper_spec.rb → alchemy/elements_block_helper_spec.rb} +3 -3
  472. data/spec/helpers/{elements_helper_spec.rb → alchemy/elements_helper_spec.rb} +18 -19
  473. data/spec/helpers/alchemy/essences_helper_spec.rb +85 -0
  474. data/spec/helpers/{pages_helper_spec.rb → alchemy/pages_helper_spec.rb} +125 -39
  475. data/spec/helpers/alchemy/picture_url_helpers_spec.rb +78 -0
  476. data/spec/helpers/{url_helper_spec.rb → alchemy/url_helper_spec.rb} +66 -40
  477. data/spec/libraries/config_spec.rb +2 -3
  478. data/spec/libraries/controller_actions_spec.rb +18 -18
  479. data/spec/libraries/i18n_spec.rb +7 -0
  480. data/spec/libraries/page_layout_spec.rb +13 -7
  481. data/spec/libraries/paths_spec.rb +15 -0
  482. data/spec/libraries/permissions_spec.rb +6 -7
  483. data/spec/libraries/resource_spec.rb +48 -75
  484. data/spec/libraries/resources_helper_spec.rb +55 -6
  485. data/spec/libraries/shell_spec.rb +0 -4
  486. data/spec/libraries/template_tracker_spec.rb +4 -13
  487. data/spec/libraries/tinymce_spec.rb +53 -9
  488. data/spec/mailers/{messages_spec.rb → alchemy/messages_spec.rb} +0 -2
  489. data/spec/models/{attachment_spec.rb → alchemy/attachment_spec.rb} +43 -20
  490. data/spec/models/{cell_spec.rb → alchemy/cell_spec.rb} +2 -3
  491. data/spec/models/{content_spec.rb → alchemy/content_spec.rb} +179 -70
  492. data/spec/models/{element_spec.rb → alchemy/element_spec.rb} +315 -70
  493. data/spec/models/{element_to_page_spec.rb → alchemy/element_to_page_spec.rb} +0 -1
  494. data/spec/models/{essence_boolean_spec.rb → alchemy/essence_boolean_spec.rb} +0 -0
  495. data/spec/models/{essence_date_spec.rb → alchemy/essence_date_spec.rb} +2 -3
  496. data/spec/models/{essence_file_spec.rb → alchemy/essence_file_spec.rb} +2 -5
  497. data/spec/models/{essence_html_spec.rb → alchemy/essence_html_spec.rb} +1 -1
  498. data/spec/models/{essence_link_spec.rb → alchemy/essence_link_spec.rb} +0 -0
  499. data/spec/models/{essence_picture_spec.rb → alchemy/essence_picture_spec.rb} +101 -29
  500. data/spec/models/{essence_richtext_spec.rb → alchemy/essence_richtext_spec.rb} +7 -2
  501. data/spec/models/{essence_select_spec.rb → alchemy/essence_select_spec.rb} +0 -0
  502. data/spec/models/{essence_text_spec.rb → alchemy/essence_text_spec.rb} +4 -8
  503. data/spec/models/alchemy/language_spec.rb +243 -0
  504. data/spec/models/{legacy_page_url_spec.rb → alchemy/legacy_page_url_spec.rb} +1 -1
  505. data/spec/models/{message_spec.rb → alchemy/message_spec.rb} +0 -0
  506. data/spec/models/{page_spec.rb → alchemy/page_spec.rb} +460 -248
  507. data/spec/models/{picture_spec.rb → alchemy/picture_spec.rb} +118 -30
  508. data/spec/models/{site_spec.rb → alchemy/site_spec.rb} +19 -84
  509. data/spec/models/{tag_spec.rb → alchemy/tag_spec.rb} +1 -3
  510. data/spec/models/dummy_model_spec.rb +1 -2
  511. data/spec/requests/alchemy/admin/resources_requests_spec.rb +26 -0
  512. data/spec/requests/alchemy/admin/site_requests_spec.rb +19 -0
  513. data/spec/requests/alchemy/site_requests_spec.rb +18 -0
  514. data/spec/requests/alchemy/sitemap_spec.rb +56 -0
  515. data/spec/routing/api_routing_spec.rb +1 -1
  516. data/spec/routing/routing_spec.rb +121 -15
  517. data/spec/spec_helper.rb +2 -1
  518. data/spec/support/hint_examples.rb +1 -3
  519. data/spec/support/test_tweaks.rb +3 -3
  520. data/spec/support/transformation_examples.rb +6 -7
  521. data/spec/tasks/helpers_spec.rb +2 -4
  522. data/spec/views/admin/pictures/show_spec.rb +43 -0
  523. data/spec/views/essences/essence_boolean_editor_spec.rb +0 -1
  524. data/spec/views/essences/essence_boolean_view_spec.rb +2 -4
  525. data/spec/views/essences/essence_date_view_spec.rb +0 -1
  526. data/spec/views/essences/essence_file_editor_spec.rb +4 -6
  527. data/spec/views/essences/essence_file_view_spec.rb +56 -3
  528. data/spec/views/essences/essence_link_view_spec.rb +1 -1
  529. data/spec/views/essences/essence_picture_editor_spec.rb +80 -0
  530. data/spec/views/essences/essence_picture_view_spec.rb +0 -1
  531. data/spec/views/essences/essence_select_view_spec.rb +0 -1
  532. data/spec/views/essences/essence_text_view_spec.rb +0 -1
  533. data/vendor/assets/javascripts/handlebars.js +4608 -0
  534. data/vendor/assets/javascripts/tinymce/langs/de.js +19 -0
  535. data/vendor/assets/javascripts/tinymce/langs/es.js +19 -0
  536. data/vendor/assets/javascripts/tinymce/langs/fr.js +23 -4
  537. data/vendor/assets/javascripts/tinymce/langs/nl.js +22 -3
  538. data/vendor/assets/javascripts/tinymce/langs/ru.js +22 -3
  539. data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.min.js +1 -1
  540. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.min.js +1 -1
  541. data/vendor/assets/javascripts/tinymce/themes/modern/theme.min.js +1 -1
  542. data/vendor/assets/javascripts/tinymce/tinymce.min.js +12 -13
  543. metadata +274 -256
  544. data/app/views/alchemy/admin/attachments/create.js.erb +0 -11
  545. data/app/views/alchemy/admin/attachments/new.html.erb +0 -14
  546. data/app/views/alchemy/admin/elements/_element_foot.html.erb +0 -36
  547. data/app/views/alchemy/admin/partials/_upload_form.html.erb +0 -67
  548. data/app/views/alchemy/admin/pictures/info.html.erb +0 -38
  549. data/app/views/alchemy/admin/pictures/new.html.erb +0 -16
  550. data/lib/alchemy/middleware/rescue_old_cookies.rb +0 -27
  551. data/spec/controllers/admin/resources_controller_spec.rb +0 -53
  552. data/spec/controllers/base_controller_spec.rb +0 -51
  553. data/spec/helpers/essences_helper_spec.rb +0 -156
  554. data/spec/helpers/picture_url_helpers_spec.rb +0 -35
  555. data/spec/libraries/on_page_layout_spec.rb +0 -112
  556. data/spec/models/language_spec.rb +0 -123
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de51add0fe9d89790f0765d73717dc03a11ff1e5
4
- data.tar.gz: b09da429c3263550fc7a1d91d769c1621e0a74c2
3
+ metadata.gz: 0aceaeeaef206172b82d634ae32252349217f322
4
+ data.tar.gz: 649efbc4c49f43b6d42bd57455c0fffceae6b28f
5
5
  SHA512:
6
- metadata.gz: f352e7caa3e7eafe1b69e5f4ff0fb5722c8a7903d8e457740be20ca68f063699f185e40f59010f5dc59e648350e92afc2da2a54f8c5e3312dc3f794261bf3752
7
- data.tar.gz: 8bbf53881813c47c4cc2b9bce3e27ddcb229362a12efa7f0e8a73b58ec0f6915b181e05401d529ffaf2953be31a1a5feb1c33833a5b2fe716d9d2ae92bae7766
6
+ metadata.gz: 1520b2d1092a8a0341ea3e01bd45a981f94559112208b0405c84c5bbdf199c3e0f84789df79b03776ce7a2c5e5e9f837c44ee537dff7edf1f56715aaefc43f9c
7
+ data.tar.gz: eadd3e19d0eb0bab2b9f929beb66a25989e71e086bdb104e42944342da5ce8ec07c5510e8d8eec35da6466d1110ee5e45110c0803137afb7f470ee6aebbb98ed
@@ -0,0 +1,28 @@
1
+ ---
2
+ engines:
3
+ brakeman:
4
+ enabled: true
5
+ csslint:
6
+ enabled: false
7
+ coffeelint:
8
+ enabled: false
9
+ duplication:
10
+ enabled: true
11
+ config:
12
+ languages:
13
+ - ruby
14
+ eslint:
15
+ enabled: false
16
+ fixme:
17
+ enabled: false
18
+ rubocop:
19
+ enabled: false
20
+ ratings:
21
+ paths:
22
+ - Gemfile.lock
23
+ - "**.erb"
24
+ - "**.rb"
25
+ exclude_paths:
26
+ - config/
27
+ - db/
28
+ - spec/
data/.gitignore CHANGED
@@ -12,11 +12,11 @@ log
12
12
  spec/dummy/uploads/
13
13
  spec/dummy/db/*.sqlite3*
14
14
  spec/dummy/public/assets
15
- spec/dummy/config/locales/**/*
16
15
  .rvmrc
17
16
  /coverage/
18
17
  *.gem
19
18
  /index/
20
19
  /.bundle/
21
20
  .rbenv-version
22
- .ruby-*
21
+ .ruby-gemset
22
+ .ruby-version
@@ -2,12 +2,14 @@ language: ruby
2
2
  sudo: false
3
3
  cache: bundler
4
4
  rvm:
5
- - 2.0.0
6
5
  - 2.1
7
- - 2.2.0
6
+ - 2.2
7
+ - 2.3.0
8
8
  branches:
9
9
  only:
10
- - master
10
+ - master
11
+ before_install:
12
+ - gem install bundler
11
13
  before_script: bundle exec rake alchemy:spec:prepare
12
14
  script: bundle exec rspec
13
15
  env:
@@ -22,6 +24,12 @@ notifications:
22
24
  - irc.freenode.org#alchemy_cms
23
25
  slack:
24
26
  secure: QzOFw1Ph69pzwWBFgtIVkOnjbcRxB9HPRQ+RYjK+2tg+fsbiTJ+wYgHcZL49tPYcLAls4kymkFWzWBF3PCAXJMfKgUCqXzdQ2FuJC/JoVRTLll4wDnZFPG33jsm5tVznmycZ3ma4+ZWfJQ+C+elEBOba6v1kG9eGIy6sH2cvXfE=
27
+ webhooks:
28
+ urls:
29
+ - https://webhooks.gitter.im/e/4dc02992aca8b4fd883b
30
+ on_success: always
31
+ on_failure: always
32
+ on_start: never
25
33
  addons:
26
34
  code_climate:
27
35
  secure: qmOMqc4FUBRP25XqaYIKuxZQ/GrGLKjIc3vUqZa+XfkQKh6xLXvOF7YUM/XJZ5u6D6hk0Ly8UxjctvDY+tQxEAK49lFwK51i7bODfkQjfVBrFzfht7QhxY5HJKx7F0HHmpyNJet4n8mR0gGlhwVyXv+Tz7Rm6O3Hq3+TEbY9+pk=
@@ -0,0 +1,100 @@
1
+ # Change Log
2
+
3
+ ## 3.3.0 (unreleased)
4
+
5
+ __New Features__
6
+
7
+ * Add support for Sprockets 3
8
+ * Add support for jquery-rails 4.1
9
+ * Show a welcome page, if no users or pages are present yet
10
+ * Namespace spec files
11
+ * Image library slideshow
12
+ * Global "current locked pages" tabs
13
+ * New option `linkable: false` for `EssencePicture`
14
+ * Allow custom routing for admin backend
15
+ * Resource forms can now have Tinymce enabled by adding `.tinymce` class
16
+ * `Alchemy::EssenceFile` now has a `link_text` attribute, so the editor is able to change the linked text of the download link.
17
+ * Enable to pass multiple page layout names to `on_page_layout` callbacks
18
+ * Client side rendering of the pages admin _(not merged yet)_
19
+ * Deprecate `redirect_index` configuration _(not merged yet)_
20
+ * Add Nestable elements feature
21
+
22
+ __Notable Changes__
23
+
24
+ * Essence generator does not namespace the model into `Alchemy` namespace anymore
25
+ * New simplified uploader that allows to drag and drop images onto the archive everywhere in your app
26
+ - Model names in uploader `allowed_filetypes` setting are now namespaced.
27
+ Please be sure to run `rake alchemy:upgrade` to update your settings.
28
+ * Allow uppercase country codes
29
+ * Uses Time.current instead of Time.now for proper timezone support
30
+ * Adds year to `created_at` column of attachments table
31
+ * Removes "available contents" feature.
32
+ * Use Ransack for Admin Resources filtering, sorting and searching
33
+ * Renames Alchemy translation helpers from `_t` to `Alchemy.t`
34
+ * Do not append geometry string to preprocess option
35
+ * Skip the default locale in urls
36
+ * Add a proper index route and do not redirect to page anymore
37
+ * Updates Tinymce to 4.2.3
38
+ * Moves page status info into reusable partial
39
+ * Refactors factories into individual requirable files
40
+ * Do not raise error if `element_ids` params is missing while ordering elements
41
+ * Removes old middleware for rescueing legacy sessions
42
+ * Use rails tag helpers instead of plain HTML for meta tags
43
+ * Remove the duplication of `#decription` vs. `#definition`
44
+ * Resource CSV export now includes ID column and does not truncate large text columns anymore
45
+ * `Alchemy::Attachment#urlname` now returns always an escaped urlname w/o format suffix and does not convert the `file_name` once on create anymore
46
+ * Speed up the admin interface significantly when handling a large amount of pages
47
+
48
+ __Fixed Bugs__
49
+
50
+ * Add `locale` to `Alchemy::Language` to avoid errors for languages with missing locale files #831
51
+ * Fixes `Alchemy::PageLayout.get_all_by_attributes`
52
+ * Fix tag list display in picture library
53
+ * Animated GIFs display correctly
54
+ * EssenceSelect grouped options tags
55
+ * Add missing element partials for dummy app
56
+ * Eliminate an SQL lookup on frontend cached element partials
57
+ * Add missing german and spanish translation for element toolbar
58
+ * Use the site_id parameter and the session only in the Admin area
59
+
60
+ [Full Change Log](https://github.com/AlchemyCMS/alchemy_cms/compare/v3.2.0...HEAD)
61
+
62
+ ## 3.2.0 (2015-07-31)
63
+
64
+ [Release Notes](https://github.com/AlchemyCMS/alchemy_cms/releases/tag/v3.2.0)
65
+
66
+ ## 3.1.3 (2016-01-21)
67
+
68
+ [Full Change Log](https://github.com/AlchemyCMS/alchemy_cms/compare/v3.1.1...v3.1.3)
69
+
70
+ ## 3.1.2 (yanked)
71
+
72
+ No changes
73
+
74
+ ## 3.1.1 (2015-03-17)
75
+
76
+ [Full Change Log](https://github.com/AlchemyCMS/alchemy_cms/compare/v3.1.0...v3.1.1)
77
+
78
+ ## 3.1.0 (2015-02-24)
79
+
80
+ [Release Notes](https://github.com/AlchemyCMS/alchemy_cms/releases/tag/v3.1.0)
81
+
82
+ ## 3.0.4 (2015-03-17)
83
+
84
+ [Full Change Log](https://github.com/AlchemyCMS/alchemy_cms/compare/v3.0.3...v3.0.4)
85
+
86
+ ## 3.0.3 (2014-12-24)
87
+
88
+ [Full Change Log](https://github.com/AlchemyCMS/alchemy_cms/compare/v3.0.2...v3.0.3)
89
+
90
+ ## 3.0.2 (2014-09-30)
91
+
92
+ [Full Change Log](https://github.com/AlchemyCMS/alchemy_cms/compare/v3.0.1...v3.0.2)
93
+
94
+ ## 3.0.1 (2014-09-11)
95
+
96
+ [Full Change Log](https://github.com/AlchemyCMS/alchemy_cms/compare/v3.0.0...v3.0.1)
97
+
98
+ ## 3.0.0 (2014-07-03)
99
+
100
+ [Release Notes](https://github.com/AlchemyCMS/alchemy_cms/releases/tag/v3.0.0)
@@ -1,5 +1,5 @@
1
1
  Alchemy CMS is an open source project and we encourage contributions. Please read these
2
- contributors guidelines before contributing.
2
+ contributors guidelines and our code of conduct before contributing.
3
3
 
4
4
  ## Filing an issue
5
5
 
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  gem 'sqlite3' if ENV['DB'].nil? || ENV['DB'] == 'sqlite'
6
- gem 'mysql2' if ENV['DB'] == 'mysql'
6
+ gem 'mysql2', '~> 0.3.18' if ENV['DB'] == 'mysql'
7
7
  gem 'pg' if ENV['DB'] == 'postgresql'
8
8
 
9
9
  group :development, :test do
@@ -25,6 +25,17 @@ group :development, :test do
25
25
  gem 'spring-commands-rspec'
26
26
  gem 'rubocop', require: false
27
27
  end
28
+ gem 'capybara', '~> 2.4'
29
+ gem 'database_cleaner', '~> 1.3'
30
+ gem 'factory_girl_rails', '~> 4.5'
31
+ gem 'poltergeist', '~> 1.5'
32
+ gem 'rspec-activemodel-mocks', '~> 1.0'
33
+ gem 'rspec-rails', '~> 3.0'
34
+ end
35
+
36
+ # We need this if we want to start the dummy app in development mode
37
+ group :development, :production do
38
+ gem 'quiet_assets'
28
39
  end
29
40
 
30
41
  # We need this if we want to start the dummy app in production, ie on Teatro.io
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/alchemy_cms.svg)](http://badge.fury.io/rb/alchemy_cms)
2
- [![Build Status](https://travis-ci.org/AlchemyCMS/alchemy_cms.svg?branch=3.2-stable)](https://travis-ci.org/AlchemyCMS/alchemy_cms) [![Code Climate](https://codeclimate.com/github/AlchemyCMS/alchemy_cms.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms) [![Test Coverage](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/badges/coverage.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms)
2
+ [![Build Status](https://travis-ci.org/AlchemyCMS/alchemy_cms.svg?branch=master)](https://travis-ci.org/AlchemyCMS/alchemy_cms)
3
+ [![Code Climate](https://codeclimate.com/github/AlchemyCMS/alchemy_cms.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms)
4
+ [![Test Coverage](https://codeclimate.com/github/AlchemyCMS/alchemy_cms/badges/coverage.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy_cms)
5
+ [![Slack Status](http://slack.alchemy-cms.com/badge.svg)](http://slack.alchemy-cms.com)
6
+
7
+ **CAUTION: This master branch is a development branch that *can* contain bugs. For productive environments you should use the [current Ruby gem version](https://rubygems.org/gems/alchemy_cms/versions/3.2.0), or the [latest stable branch (3.2-stable)](https://github.com/AlchemyCMS/alchemy_cms/tree/3.2-stable).**
3
8
 
4
9
 
5
10
  ## About
@@ -29,7 +34,7 @@ Read more about Alchemy on the [website](http://alchemy-cms.com) and in the [gui
29
34
 
30
35
  ## Rails Version
31
36
 
32
- **This version of Alchemy CMS runs with Rails 4.2 only**
37
+ **This version of Alchemy CMS runs with Rails 4.2**
33
38
 
34
39
  * For a Rails 4.0/4.1 compatible version use the [`3.1-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/3.1-stable).
35
40
  * For a Rails 3.2 compatible version use the [`2.8-stable` branch](https://github.com/AlchemyCMS/alchemy_cms/tree/2.8-stable).
@@ -54,7 +59,7 @@ For a Ruby 1.8.7 compatible version use the [`2.3-stable` branch](https://github
54
59
  Use the installer:
55
60
 
56
61
  ```shell
57
- $ gem install alchemy_cms
62
+ $ gem install alchemy_cms --pre
58
63
  $ alchemy new my_magicpage
59
64
  ```
60
65
 
@@ -73,7 +78,7 @@ $ alchemy --help
73
78
  Put this into your `Gemfile`:
74
79
 
75
80
  ```ruby
76
- gem 'alchemy_cms', github: 'AlchemyCMS/alchemy_cms', branch: '3.2-stable'
81
+ gem 'alchemy_cms', github: 'AlchemyCMS/alchemy_cms', branch: 'master'
77
82
  ```
78
83
 
79
84
  **NOTE:** You normally want to use a stable branch, like `3.0-stable`.
@@ -102,7 +107,7 @@ the Devise based user model that Alchemy provides and was extracted [into its ow
102
107
  If you don't have your own user class, you can use the Alchemy user model. Just add the following gem into your `Gemfile`:
103
108
 
104
109
  ```ruby
105
- gem 'alchemy-devise', github: 'AlchemyCMS/alchemy-devise', branch: '3.2-stable'
110
+ gem 'alchemy-devise', github: 'AlchemyCMS/alchemy-devise', branch: 'master'
106
111
  ```
107
112
 
108
113
  **NOTE:** You normally want to use a stable branch, like `2.0-stable`.
@@ -145,7 +150,7 @@ def alchemy_roles
145
150
  end
146
151
  ```
147
152
 
148
- Please follow [this guide](http://guides.alchemy-cms.com/edge/custom_authentication.html) for further instructions on how to customize your user class even more.
153
+ Please follow [this guide](http://guides.alchemy-cms.com/stable/custom_authentication.html) for further instructions on how to customize your user class even more.
149
154
 
150
155
  #### 4. Install Alchemy into your app:
151
156
 
@@ -164,13 +169,26 @@ Now everything should be set up and you should be able to visit the Alchemy Dash
164
169
 
165
170
  ## Customizing
166
171
 
167
- Alchemy has very flexible ways to organize and manage content. Please be sure to read [the introduction guide](http://guides.alchemy-cms.com/edge/index.html) in order to understand the basic idea of how Alchemy works.
172
+ Alchemy has very flexible ways to organize and manage content. Please be sure to read [the introduction guide](http://guides.alchemy-cms.com/stable/index.html) in order to understand the basic idea of how Alchemy works.
168
173
 
169
174
 
170
175
  ### Custom Controllers
171
176
 
172
177
  Beginning with Alchemy 3.1 we do not patch the `ApplicationController` anymore. If you have controllers that loads Alchemy content or uses Alchemy helpers in the views (i.e. `render_navigation` or `render_elements`) you can either inherit from `Alchemy::BaseController` or you `include Alchemy::ControllerActions` in your controller (**that's the recommended way**).
173
178
 
179
+ ### Custom admin interface routing
180
+
181
+ By default, Alchemy Dashboard is accessible at <http://example.com/admin>. You can change this by setting `Alchemy.admin_path` and `Alchemy.admin_constraints`.
182
+ For example, these settings:
183
+
184
+ ```ruby
185
+ # config/initializers/alchemy.rb
186
+
187
+ Alchemy.admin_path = '/backend'
188
+ Alchemy.admin_constraints = {subdomain: 'hidden'}
189
+ ```
190
+
191
+ will move the dashboard to <http://hidden.example.com/backend>.
174
192
 
175
193
  ## Upgrading
176
194
 
data/Rakefile CHANGED
@@ -32,17 +32,15 @@ require 'rspec/core/rake_task'
32
32
 
33
33
  RSpec::Core::RakeTask.new(:spec)
34
34
 
35
- task :default => ['alchemy:spec:prepare', :spec]
35
+ task default: ['alchemy:spec:prepare', :spec]
36
36
 
37
37
  Bundler::GemHelper.install_tasks
38
38
 
39
39
  namespace :alchemy do
40
40
  namespace :spec do
41
-
42
41
  desc "Prepares database for testing Alchemy"
43
42
  task :prepare do
44
43
  system 'cd spec/dummy && RAILS_ENV=test bundle exec rake db:setup && cd -'
45
44
  end
46
-
47
45
  end
48
46
  end
@@ -11,7 +11,7 @@ Gem::Specification.new do |gem|
11
11
  gem.homepage = 'http://alchemy-cms.com'
12
12
  gem.summary = 'A powerful, userfriendly and flexible CMS for Rails 4'
13
13
  gem.description = 'Alchemy is a powerful, userfriendly and flexible Rails 4 CMS.'
14
- gem.requirements << 'ImageMagick (libmagick), v6.6 or greater.'
14
+ gem.requirements << 'ImageMagick (libmagick), v6.6 or greater.'
15
15
  gem.required_ruby_version = '>= 2.0.0'
16
16
  gem.license = 'BSD New'
17
17
  gem.files = `git ls-files`.split("\n")
@@ -26,32 +26,24 @@ Gem::Specification.new do |gem|
26
26
  gem.add_runtime_dependency 'awesome_nested_set', ['~> 3.0.0']
27
27
  gem.add_runtime_dependency 'cancancan', ['~> 1.9']
28
28
  gem.add_runtime_dependency 'coffee-rails', ['~> 4.0']
29
- gem.add_runtime_dependency 'compass-rails', ['~> 2.0', '>= 2.0.4']
29
+ gem.add_runtime_dependency 'compass-rails', ['>= 2.0.4', '< 4.0']
30
30
  gem.add_runtime_dependency 'dragonfly', ['~> 1.0.1']
31
- gem.add_runtime_dependency 'jquery-rails', ['~> 4.0.3']
31
+ gem.add_runtime_dependency 'jquery-rails', ['~> 4.0']
32
32
  gem.add_runtime_dependency 'jquery-ui-rails', ['~> 5.0.0']
33
33
  gem.add_runtime_dependency 'kaminari', ['~> 0.15']
34
34
  gem.add_runtime_dependency 'magiclabs-userstamp', ['~> 2.1.0']
35
- gem.add_runtime_dependency 'non-stupid-digest-assets', ['~> 1.0.3']
35
+ gem.add_runtime_dependency 'non-stupid-digest-assets', ['~> 1.0.8']
36
36
  gem.add_runtime_dependency 'rails', ['>= 4.2.0', '< 5.0']
37
- gem.add_runtime_dependency 'request_store', ['~> 1.1.0']
37
+ gem.add_runtime_dependency 'ransack', ['~> 1.4']
38
+ gem.add_runtime_dependency 'request_store', ['~> 1.2']
38
39
  gem.add_runtime_dependency 'responders', ['~> 2.0']
39
40
  gem.add_runtime_dependency 'sass-rails', ['~> 5.0']
40
41
  gem.add_runtime_dependency 'sassy-buttons', ['~> 0.2.6']
41
42
  gem.add_runtime_dependency 'select2-rails', ['>= 3.5.9.1', '< 4.0']
42
43
  gem.add_runtime_dependency 'simple_form', ['~> 3.0']
43
- gem.add_runtime_dependency 'spinner.rb'
44
44
  gem.add_runtime_dependency 'turbolinks', ['~> 2.5']
45
- gem.add_runtime_dependency 'tvdeyen-handles_sortable_columns', ['~> 0.1.5']
46
45
 
47
- gem.add_development_dependency 'capybara', ['~> 2.4']
48
- gem.add_development_dependency 'database_cleaner', ['~> 1.3']
49
- gem.add_development_dependency 'factory_girl_rails', ['~> 4.5']
50
- gem.add_development_dependency 'poltergeist', ['~> 1.5']
51
- gem.add_development_dependency 'rspec-activemodel-mocks', ['~> 1.0']
52
- gem.add_development_dependency 'rspec-rails', ['~> 3.0']
53
-
54
- gem.post_install_message =<<-MSG
46
+ gem.post_install_message = <<-MSG
55
47
  -------------------------------------------------------------
56
48
  Thank you for installing Alchemy CMS
57
49
  -------------------------------------------------------------
@@ -1,71 +1,33 @@
1
1
  <?xml version="1.0" standalone="no"?>
2
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
3
  <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata>
5
- This is a custom SVG font generated by IcoMoon.
6
- <iconset grid="20"></iconset>
7
- </metadata>
4
+ <metadata>Generated by IcoMoon</metadata>
8
5
  <defs>
9
- <font id="Alchemy-Icons" horiz-adv-x="640" >
10
- <font-face units-per-em="640" ascent="608" descent="-32" />
11
- <missing-glyph horiz-adv-x="640" />
12
- <glyph unicode="&#xe000;" d="M 512.00,544.00L 128.00,544.00 C 92.80,544.00, 64.00,515.20, 64.00,480.00l0.00-384.00 c0.00-35.20, 28.80-64.00, 64.00-64.00l 384.00,0.00 c 35.20,0.00, 64.00,28.80, 64.00,64.00L 576.00,480.00 C 576.00,515.20, 547.20,544.00, 512.00,544.00z M 480.00,256.00l-128.00,0.00 l0.00-128.00 L 288.00,128.00 l0.00,128.00 L 160.00,256.00 L 160.00,320.00 l 128.00,0.00 L 288.00,448.00 l 64.00,0.00 l0.00-128.00 l 128.00,0.00 L 480.00,256.00 z" />
13
- <glyph unicode="&#xe001;" d="M 512.00,544.00L 128.00,544.00 C 92.80,544.00, 64.00,515.20, 64.00,480.00l0.00-384.00 c0.00-35.20, 28.80-64.00, 64.00-64.00l 384.00,0.00 c 35.20,0.00, 64.00,28.80, 64.00,64.00L 576.00,480.00 C 576.00,515.20, 547.20,544.00, 512.00,544.00z M 480.00,256.00L 160.00,256.00 L 160.00,320.00 l 320.00,0.00 L 480.00,256.00 z" />
14
- <glyph unicode="&#xe004;" d="M 459.168,187.136L 370.912,288.00l 88.256,100.864c 15.008,15.008, 15.008,39.328,0.00,54.304c-15.008,14.976-39.328,14.976-54.304,0.00L 320.00,346.176
15
- l-84.832,96.96c-15.008,15.008-39.328,15.008-54.304,0.00c-14.976-15.008-14.976-39.328,0.00-54.304L 269.088,288.00l-88.256-100.864
16
- c-14.976-15.008-14.976-39.264,0.00-54.24c 15.008-15.008, 39.328-15.008, 54.304,0.00L 320.00,229.824l 84.832-96.928c 15.008-15.008, 39.328-15.008, 54.304,0.00
17
- S 474.144,172.128, 459.168,187.136z" />
18
- <glyph unicode="&#xe005;" d="M 486.368,320.00l-134.40,0.00 L 351.968,454.40 c0.00,17.664-14.304,19.20-32.00,19.20c-17.664,0.00-32.00-1.504-32.00-19.20L 287.968,320.00 L 153.60,320.00 c-17.696,0.00-19.20-14.336-19.20-32.00s 1.504-32.00, 19.20-32.00l 134.368,0.00
19
- l0.00-134.40 c0.00-17.664, 14.336-19.20, 32.00-19.20c 17.696,0.00, 32.00,1.536, 32.00,19.20L 351.968,256.00 l 134.40,0.00 c 17.696,0.00, 19.232,14.336, 19.232,32.00S 504.064,320.00, 486.368,320.00z" />
20
- <glyph unicode="&#xe006;" d="M 486.368,320.00L 153.60,320.00 c-17.696,0.00-19.20-14.336-19.20-32.00s 1.504-32.00, 19.20-32.00l 332.768,0.00 c 17.696,0.00, 19.232,14.336, 19.232,32.00S 504.064,320.00, 486.368,320.00z" />
21
- <glyph unicode="&#xe007;" d="M 529.952,497.984c-46.144,46.176-80.80,39.264-80.80,39.264L 287.456,375.552L 102.72,190.816L 70.40,38.40l 152.416,32.32l 184.736,184.736l 161.664,161.664
22
- C 569.216,417.12, 576.16,451.776, 529.952,497.984z M 213.728,89.056l-51.936-11.20c-5.024,9.376-11.072,18.752-22.112,29.824
23
- c-11.04,11.04-20.448,17.056-29.824,22.08l 11.232,51.968l 15.008,15.008c0.00,0.00, 28.288-0.576, 60.192-32.48c 31.936-31.936, 32.512-60.224, 32.512-60.224
24
- L 213.728,89.056z" />
25
- <glyph unicode="&#xe034;" d="M 96.747,279.653L 345.147,528.00L 558.48,528.00 l0.00-213.333 l -248.40-248.373c -16.747-16.747, -43.893-16.747, -60.64,0.00l -152.693,152.72
26
- C 80.00,235.733, 80.00,262.88, 96.747,279.653z M 438.48,354.667c 29.467,0.00 53.333,23.867 53.333,53.333s -23.867,53.333, -53.333,53.333c -29.467,0.08, -53.333-23.867, -53.333-53.333S 409.067,354.667, 438.48,354.667
27
- z" />
28
- <glyph unicode="&#xe008;" d="M 316.064,582.368c-162.56-2.176-292.608-135.744-290.432-298.336c 2.176-162.496, 135.744-292.576, 298.304-290.40
29
- c 162.56,2.176, 292.608,135.744, 290.432,298.336C 612.224,454.496, 478.624,584.544, 316.064,582.368z M 348.704,484.256c 29.92,0.00, 38.752-17.344, 38.752-37.216
30
- c0.00-24.80-19.872-47.744-53.76-47.744c-28.352,0.00-41.824,14.272-41.024,37.824C 292.672,456.992, 309.312,484.256, 348.704,484.256z M 271.968,104.00
31
- c-20.448,0.00-35.424,12.416-21.12,67.008l 23.456,96.768c 4.064,15.52, 4.736,21.728,0.00,21.728c-6.112,0.00-32.672-10.72-48.384-21.28l-10.208,16.736
32
- c 49.76,41.536, 106.976,65.92, 131.488,65.92c 20.448,0.00, 23.84-24.192, 13.632-61.408l-26.88-101.76c-4.736-17.984-2.688-24.192, 2.048-24.192
33
- c 6.112,0.00, 26.24,7.424, 46.016,22.976l 11.552-15.52C 345.216,122.624, 292.448,104.00, 271.968,104.00z" />
34
- <glyph unicode="&#xe009;" d="M 624.384,32.576L 339.328,532.768C 335.392,539.68, 328.00,543.936, 320.00,543.936c-8.00,0.00-15.36-4.256-19.328-11.168L 15.648,32.576
35
- c-3.872-6.784-3.808-15.072, 0.16-21.792s 11.264-10.848, 19.136-10.848l 570.08,0.00 c 7.808,0.00, 15.136,4.128, 19.136,10.848
36
- C 628.128,17.504, 628.192,25.792, 624.384,32.576z M 355.20,63.936L 284.80,63.936 l0.00,64.00 l 70.40,0.00 L 355.20,63.936 z M 355.20,175.936L 284.80,175.936 l0.00,192.00 l 70.40,0.00 L 355.20,175.936 z" />
37
- <glyph unicode="&#xe00a;" d="M 265.44,64.00c-13.92,0.00-27.104,6.496-35.552,17.696L 115.52,232.672c-14.88,19.648-11.008,47.616, 8.64,62.496
38
- c 19.68,14.912, 47.616,11.008, 62.496-8.64l 75.232-99.328l 189.184,303.712c 13.024,20.896, 40.544,27.296, 61.472,14.272
39
- c 20.896-12.992, 27.296-40.544, 14.24-61.44L 303.328,85.024c-7.776-12.512-21.184-20.352-35.872-20.992C 266.784,64.00, 266.112,64.00, 265.44,64.00z" />
40
- <glyph unicode="&#xe00b;" d="M 359.232,550.40c-142.24,0.00-257.92-113.984-261.408-255.84L 19.20,294.56 l 117.728-131.20l 117.696,131.20L 163.232,294.56 C 166.688,400.192, 253.088,484.80, 359.232,484.80
41
- c 108.384,0.00, 196.192-88.096, 196.192-196.80s-87.808-196.80-196.192-196.80c-43.424,0.00-83.552,14.208-116.064,38.176l-44.992-48.128
42
- C 242.56,46.40, 298.464,25.60, 359.232,25.60c 144.48,0.00, 261.60,117.472, 261.60,262.40C 620.80,432.928, 503.68,550.40, 359.232,550.40z" />
43
- <glyph unicode="&#xf014;" d="M 182.857,345.143l0.00-205.714 q0.00-5.00 -3.214-8.214t-8.214-3.214l-22.857,0.00 q-5.00,0.00 -8.214,3.214t-3.214,8.214l0.00,205.714 q0.00,5.00 3.214,8.214t 8.214,3.214l 22.857,0.00 q 5.00,0.00 8.214-3.214t 3.214-8.214zM 274.286,345.143l0.00-205.714 q0.00-5.00 -3.214-8.214t-8.214-3.214l-22.857,0.00 q-5.00,0.00 -8.214,3.214t-3.214,8.214l0.00,205.714 q0.00,5.00 3.214,8.214t 8.214,3.214l 22.857,0.00 q 5.00,0.00 8.214-3.214t 3.214-8.214zM 365.714,345.143l0.00-205.714 q0.00-5.00 -3.214-8.214t-8.214-3.214l-22.857,0.00 q-5.00,0.00 -8.214,3.214t-3.214,8.214l0.00,205.714 q0.00,5.00 3.214,8.214t 8.214,3.214l 22.857,0.00 q 5.00,0.00 8.214-3.214t 3.214-8.214zM 411.429,86.571l0.00,338.571 l-320.00,0.00 l0.00-338.571 q0.00-7.857 2.50-14.464t 5.179-9.643t 3.75-3.036l 297.143,0.00 q 1.071,0.00 3.75,3.036t 5.179,9.643t 2.50,14.464zM 171.429,470.857l 160.00,0.00 l-17.143,41.786q-2.50,3.214 -6.071,3.929l-113.214,0.00 q-3.571-0.714 -6.071-3.929zM 502.857,459.429l0.00-22.857 q0.00-5.00 -3.214-8.214t-8.214-3.214l-34.286,0.00 l0.00-338.571 q0.00-29.643 -16.786-51.25t-40.357-21.607l-297.143,0.00 q-23.571,0.00 -40.357,20.893t-16.786,50.536l0.00,340.00 l-34.286,0.00 q-5.00,0.00 -8.214,3.214t-3.214,8.214l0.00,22.857 q0.00,5.00 3.214,8.214t 8.214,3.214l 110.357,0.00 l 25.00,59.643q 5.357,13.214 19.286,22.50t 28.214,9.286l 114.286,0.00 q 14.286,0.00 28.214-9.286t 19.286-22.50l 25.00-59.643l 110.357,0.00 q 5.00,0.00 8.214-3.214t 3.214-8.214z" horiz-adv-x="502.8571428571429" />
44
- <glyph unicode="&#xe00e;" d="M 320.00,556.80c-148.48,0.00-268.80-120.384-268.80-268.80c0.00-148.48, 120.352-268.80, 268.80-268.80c 148.448,0.00, 268.80,120.352, 268.80,268.80C 588.80,436.448, 468.448,556.80, 320.00,556.80z
45
- M 375.328,288.00l 97.952-97.952l-55.328-55.328L 320.00,232.672l-97.952-97.952l-55.296,55.328L 264.672,288.00l-97.92,97.92l 55.296,55.328L 320.00,343.328l 97.952,97.92
46
- l 55.328-55.296L 375.328,288.00z" />
47
- <glyph unicode="&#xe00f;" d="M 548.00,378.464l-65.472,180.352c-4.832,13.312-19.04,20.352-31.648,15.744L 15.776,415.744C 3.136,411.168-3.232,396.64, 1.60,383.328
48
- l 69.024-190.144L 70.624,295.104 c0.00,45.984, 36.736,83.36, 81.952,83.36l 114.976,0.00 l 137.12,96.256l 79.36-96.256L 548.00,378.464 z M 615.616,320.736L 152.576,320.736
49
- c-13.44,0.00-24.384-11.488-24.384-25.664l0.00-301.472 c0.00-14.144, 10.912-25.664, 24.384-25.664l 463.04,0.00 c 13.472,0.00, 24.384,11.488, 24.384,25.664L 640.00,295.104
50
- C 640.00,309.248, 629.088,320.736, 615.616,320.736z M 580.288,32.096L 196.448,32.096 l0.00,55.008 l 59.04,137.44l 88.608-109.984l 83.104,85.184l 106.848,38.56l 46.24-103.104
51
- L 580.288,32.096 z" />
52
- <glyph unicode="&#xe010;" d="M 320.00,608.00L 172.80,374.40l 294.368,0.00L 320.00,608.00z M 320.032-32.00l 147.168,233.60L 172.80,201.632L 320.032-32.00z" />
53
- <glyph unicode="&#xe011;" d="M 402.66,608.00C 271.88,608.00, 165.46,501.60, 165.46,370.74c0.00-31.32, 6.40-61.02, 17.42-88.36L0.00,99.48L 131.40-32.00l 182.96,183.04
54
- c 27.34-11.10, 57.04-17.50, 88.28-17.50c 130.86,0.00, 237.34,106.40, 237.34,237.16C 640.00,501.60, 533.52,608.00, 402.66,608.00z M 402.66,213.46
55
- c-86.64,0.00-157.26,70.62-157.26,157.24c0.00,86.72, 70.62,157.34, 157.26,157.34c 86.80,0.00, 157.42-70.62, 157.42-157.34
56
- C 560.08,284.10, 489.46,213.46, 402.66,213.46z" />
57
- <glyph unicode="&#xe01e;" d="M 491.72,59.72L 583.44-32.00L 640.00,24.56L 548.28,116.28L 640.00,208.00L 400.00,208.00L 400.00-32.00 zM0.00,368.00L 240.00,368.00L 240.00,608.00L 148.28,516.28L 57.50,607.14L 0.94,550.58L 91.72,459.72 zM0.00,24.56L 56.56-32.00L 148.28,59.72L 240.00-32.00L 240.00,208.00L0.00,208.00L 91.72,116.28 zM 400.00,368.00L 640.00,368.00L 548.28,459.72L 639.22,550.58L 582.66,607.14L 491.72,516.28L 400.00,608.00 z" />
58
- <glyph unicode="&#xe00c;" d="M 316.096,582.368c-162.592-2.176-292.64-135.744-290.464-298.336c 2.176-162.496, 135.744-292.576, 298.336-290.40
59
- c 162.528,2.176, 292.608,135.744, 290.40,298.336C 612.224,454.496, 478.656,584.544, 316.096,582.368z M 315.232,108.80L 313.60,108.80 c-25.024,0.736-42.688,19.20-41.984,43.872
60
- c 0.704,24.224, 18.784,41.856, 43.008,41.856l 1.472-0.032c 25.728-0.768, 43.20-19.04, 42.432-44.416C 357.824,125.792, 340.00,108.80, 315.232,108.80z
61
- M 420.544,317.824c-5.92-8.352-18.848-18.752-35.168-31.456l-17.984-12.416c-9.856-7.68-15.808-14.88-18.016-21.952
62
- c-1.792-5.632-2.624-7.072-2.784-18.432l-0.032-2.912L 277.984,230.656 l 0.192,5.824c 0.832,23.872, 1.44,37.888, 11.328,49.504
63
- c 15.52,18.208, 49.76,40.256, 51.20,41.184c 4.896,3.712, 9.024,7.904, 12.128,12.384c 7.20,9.92, 10.368,17.76, 10.368,25.408
64
- c0.00,10.656-3.168,20.512-9.408,29.28c-6.016,8.48-17.44,12.768-33.952,12.768c-16.384,0.00-27.584-5.216-34.304-15.872
65
- C 278.592,380.16, 275.136,368.672, 275.136,356.896l0.00-2.944 l-70.72,0.00 l 0.128,3.072c 1.824,43.328, 17.28,74.496, 45.952,92.704C 268.48,461.344, 290.88,467.20, 316.992,467.20
66
- c 34.208,0.00, 63.136-8.32, 85.856-24.704c 23.04-16.608, 34.72-41.504, 34.72-73.952C 437.568,350.368, 431.84,333.312, 420.544,317.824z" />
67
- <glyph unicode="&#xe01d;" d="M 548.28,116.28L 456.56,208.00L 400.00,151.44L 491.72,59.72L 400.00-32.00L 640.00-32.00L 640.00,208.00 zM 240.00,608.00L0.00,608.00L0.00,368.00L 91.72,459.72L 182.58,368.94L 239.14,425.50L 148.28,516.28 zM 240.00,151.44L 183.44,208.00L 91.72,116.28L0.00,208.00L0.00-32.00L 240.00-32.00L 148.28,59.72 zM 640.00,608.00L 400.00,608.00L 491.72,516.28L 400.86,425.50L 457.42,368.94L 548.28,459.72L 640.00,368.00 z" />
68
- <glyph unicode="&#xf013;" d="M 365.714,288.00q0.00,37.857 -26.786,64.643t-64.643,26.786t-64.643-26.786t-26.786-64.643t 26.786-64.643t 64.643-26.786t 64.643,26.786t 26.786,64.643zM 548.571,326.929l0.00-79.286 q0.00-4.286 -2.857-8.214t-7.143-4.643l-66.071-10.00q-6.786-19.286 -13.929-32.50q 12.50-17.857 38.214-49.286q 3.571-4.286 3.571-8.929t-3.214-8.214q-9.643-13.214 -35.357-38.571t-33.571-25.357q-4.286,0.00 -9.286,3.214l-49.286,38.571q-15.714-8.214 -32.50-13.571 q-5.714-48.571 -10.357-66.429q-2.50-10.00 -12.857-10.00l-79.286,0.00 q-5.00,0.00 -8.75,3.036t-4.107,7.679l-10.00,65.714q-17.50,5.714 -32.143,13.214l-50.357-38.214q-3.571-3.214 -8.929-3.214q-5.00,0.00 -8.929,3.929q-45.00,40.714 -58.929,60.00q-2.50,3.571 -2.50,8.214q0.00,4.286 2.857,8.214q 5.357,7.50 18.214,23.75t 19.286,25.179q-9.643,17.857 -14.643,35.357l-65.357,9.643q-4.643,0.714 -7.50,4.464t-2.857,8.393l0.00,79.286 q0.00,4.286 2.857,8.214t 6.786,4.643 l 66.429,10.00q 5.00,16.429 13.929,32.857q-14.286,20.357 -38.214,49.286q-3.571,4.286 -3.571,8.571q0.00,3.571 3.214,8.214q 9.286,12.857 35.179,38.393t 33.75,25.536q 4.643,0.00 9.286-3.571l 49.286-38.214q 15.714,8.214 32.50,13.571q 5.714,48.571 10.357,66.429q 2.50,10.00 12.857,10.00l 79.286,0.00 q 5.00,0.00 8.75-3.036t 4.107-7.679l 10.00-65.714q 17.50-5.714 32.143-13.214l 50.714,38.214q 3.214,3.214 8.571,3.214q 4.643,0.00 8.929-3.571q 46.071-42.50 58.929-60.714q 2.50-2.857 2.50-7.857 q0.00-4.286 -2.857-8.214q-5.357-7.50 -18.214-23.75t-19.286-25.179q 9.286-17.857 14.643-35.00l 65.357-10.00q 4.643-0.714 7.50-4.464t 2.857-8.393z" horiz-adv-x="548.5714285714286" />
69
- <glyph unicode="&#x20;" horiz-adv-x="320" />
70
- <glyph class="hidden" unicode="&#xf000;" d="M0,608L 640 -32L0 -32 z" horiz-adv-x="0" />
6
+ <font id="Alchemy-Icons" horiz-adv-x="1024">
7
+ <font-face units-per-em="1024" ascent="960" descent="-64" />
8
+ <missing-glyph horiz-adv-x="1024" />
9
+ <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
10
+ <glyph unicode="&#xe000;" glyph-name="plus" d="M819.2 836.267h-614.4c-56.32 0-102.4-46.080-102.4-102.4v-614.4c0-56.32 46.080-102.4 102.4-102.4h614.4c56.32 0 102.4 46.080 102.4 102.4v614.4c0 56.32-46.080 102.4-102.4 102.4zM768 375.467h-204.8v-204.8h-102.4v204.8h-204.8v102.4h204.8v204.8h102.4v-204.8h204.8v-102.4z" />
11
+ <glyph unicode="&#xe001;" glyph-name="minus" d="M819.2 836.267h-614.4c-56.32 0-102.4-46.080-102.4-102.4v-614.4c0-56.32 46.080-102.4 102.4-102.4h614.4c56.32 0 102.4 46.080 102.4 102.4v614.4c0 56.32-46.080 102.4-102.4 102.4zM768 375.467h-512v102.4h512v-102.4z" />
12
+ <glyph unicode="&#xe004;" glyph-name="cross" d="M734.669 265.285l-141.21 161.382 141.21 161.382c24.013 24.013 24.013 62.925 0 86.886s-62.925 23.962-86.886 0l-135.782-155.187-135.731 155.136c-24.013 24.013-62.925 24.013-86.886 0s-23.962-62.925 0-86.886l141.158-161.331-141.21-161.382c-23.962-24.013-23.962-62.822 0-86.784 24.013-24.013 62.925-24.013 86.886 0l135.782 155.085 135.731-155.085c24.013-24.013 62.925-24.013 86.886 0s24.013 62.771 0.051 86.784z" />
13
+ <glyph unicode="&#xe005;" glyph-name="plus-2" d="M778.189 477.867h-215.040v215.040c0 28.262-22.886 30.72-51.2 30.72-28.262 0-51.2-2.406-51.2-30.72v-215.040h-214.989c-28.314 0-30.72-22.938-30.72-51.2s2.406-51.2 30.72-51.2h214.989v-215.040c0-28.262 22.938-30.72 51.2-30.72 28.314 0 51.2 2.458 51.2 30.72v215.040h215.040c28.314 0 30.771 22.938 30.771 51.2s-2.458 51.2-30.771 51.2z" />
14
+ <glyph unicode="&#xe006;" glyph-name="minus-2" d="M778.189 477.867h-532.429c-28.314 0-30.72-22.938-30.72-51.2s2.406-51.2 30.72-51.2h532.429c28.314 0 30.771 22.938 30.771 51.2s-2.458 51.2-30.771 51.2z" />
15
+ <glyph unicode="&#xe007;" glyph-name="pencil" d="M847.923 762.641c-73.83 73.882-129.28 62.822-129.28 62.822l-554.291-554.291-51.712-243.866 243.866 51.712 554.24 554.24c0 0 11.11 55.45-62.822 129.382zM341.965 108.357l-83.098-17.92c-8.038 15.002-17.715 30.003-35.379 47.718-17.664 17.664-32.717 27.29-47.718 35.328l17.971 83.149 24.013 24.013c0 0 45.261-0.922 96.307-51.968 51.098-51.098 52.019-96.358 52.019-96.358l-24.115-23.962z" />
16
+ <glyph unicode="&#xe008;" glyph-name="info" d="M505.702 897.656c-260.096-3.482-468.173-217.19-464.691-477.338 3.482-259.994 217.19-468.122 477.286-464.64s468.173 217.19 464.691 477.338c-3.43 260.045-217.19 468.122-477.286 464.64zM557.926 740.677c47.872 0 62.003-27.75 62.003-59.546 0-39.68-31.795-76.39-86.016-76.39-45.363 0-66.918 22.835-65.638 60.518 0 31.795 26.624 75.418 89.651 75.418zM435.149 132.267c-32.717 0-56.678 19.866-33.792 107.213l37.53 154.829c6.502 24.832 7.578 34.765 0 34.765-9.779 0-52.275-17.152-77.414-34.048l-16.333 26.778c79.616 66.458 171.162 105.472 210.381 105.472 32.717 0 38.144-38.707 21.811-98.253l-43.008-162.816c-7.578-28.774-4.301-38.707 3.277-38.707 9.779 0 41.984 11.878 73.626 36.762l18.483-24.832c-77.363-77.363-161.792-107.162-194.56-107.162z" />
17
+ <glyph unicode="&#xe009;" glyph-name="warning" d="M999.014 17.989l-456.090 800.307c-6.298 11.059-18.125 17.869-30.925 17.869s-24.576-6.81-30.925-17.869l-456.038-800.307c-6.195-10.854-6.093-24.115 0.256-34.867s18.022-17.357 30.618-17.357h912.128c12.493 0 24.218 6.605 30.618 17.357 6.349 10.752 6.451 24.013 0.358 34.867zM568.32 68.165h-112.64v102.4h112.64v-102.4zM568.32 247.365h-112.64v307.2h112.64v-307.2z" />
18
+ <glyph unicode="&#xe00a;" glyph-name="checkmark" d="M424.704 68.267c-22.272 0-43.366 10.394-56.883 28.314l-182.989 241.562c-23.808 31.437-17.613 76.186 13.824 99.994 31.488 23.859 76.186 17.613 99.994-13.824l120.371-158.925 302.694 485.939c20.838 33.434 64.87 43.674 98.355 22.835 33.434-20.787 43.674-64.87 22.784-98.304l-357.53-573.952c-12.442-20.019-33.894-32.563-57.395-33.587-1.075-0.051-2.15-0.051-3.226-0.051z" />
19
+ <glyph unicode="&#xe00b;" glyph-name="ccw" d="M574.771 846.507c-227.584 0-412.672-182.374-418.253-409.344h-125.798l188.365-209.92 188.314 209.92h-146.227c5.53 169.011 143.77 304.384 313.6 304.384 173.414 0 313.907-140.954 313.907-314.88s-140.493-314.88-313.907-314.88c-69.478 0-133.683 22.733-185.702 61.082l-71.987-77.005c71.014-55.757 160.461-89.037 257.69-89.037 231.168 0 418.56 187.955 418.56 419.84-0.051 231.885-187.443 419.84-418.56 419.84z" />
20
+ <glyph unicode="&#xe00c;" glyph-name="help" d="M505.754 897.656c-260.147-3.482-468.224-217.19-464.742-477.338 3.482-259.994 217.19-468.122 477.338-464.64 260.045 3.482 468.173 217.19 464.64 477.338-3.43 260.045-217.139 468.122-477.235 464.64zM504.371 139.947h-2.611c-40.038 1.178-68.301 30.72-67.174 70.195 1.126 38.758 30.054 66.97 68.813 66.97l2.355-0.051c41.165-1.229 69.12-30.464 67.891-71.066-1.126-38.861-29.645-66.048-69.274-66.048zM672.87 474.385c-9.472-13.363-30.157-30.003-56.269-50.33l-28.774-19.866c-15.77-12.288-25.293-23.808-28.826-35.123-2.867-9.011-4.198-11.315-4.454-29.491l-0.051-4.659h-109.722l0.307 9.318c1.331 38.195 2.304 60.621 18.125 79.206 24.832 29.133 79.616 64.41 81.92 65.894 7.834 5.939 14.438 12.646 19.405 19.814 11.52 15.872 16.589 28.416 16.589 40.653 0 17.050-5.069 32.819-15.053 46.848-9.626 13.568-27.904 20.429-54.323 20.429-26.214 0-44.134-8.346-54.886-25.395-11.11-17.562-16.64-35.942-16.64-54.784v-4.71h-113.152l0.205 4.915c2.918 69.325 27.648 119.194 73.523 148.326 28.774 18.586 64.614 27.955 106.394 27.955 54.733 0 101.018-13.312 137.37-39.526 36.864-26.573 55.552-66.406 55.552-118.323 0-29.082-9.165-56.371-27.238-81.152z" />
21
+ <glyph unicode="&#xe00e;" glyph-name="cross-2" d="M512 856.747c-237.568 0-430.080-192.614-430.080-430.080 0-237.568 192.563-430.080 430.080-430.080s430.080 192.563 430.080 430.080c0 237.517-192.563 430.080-430.080 430.080zM600.525 426.667l156.723-156.723-88.525-88.525-156.723 156.723-156.723-156.723-88.474 88.525 156.672 156.723-156.672 156.672 88.474 88.525 156.723-156.672 156.723 156.672 88.525-88.474-156.723-156.723z" />
22
+ <glyph unicode="&#xe00f;" glyph-name="pictures" d="M876.8 571.409l-104.755 288.563c-7.731 21.299-30.464 32.563-50.637 25.19l-696.166-254.106c-20.224-7.322-30.413-30.566-22.682-51.866l110.438-304.23v163.072c0 73.574 58.778 133.376 131.123 133.376h183.962l219.392 154.010 126.976-154.010h102.349zM984.986 479.045h-740.864c-21.504 0-39.014-18.381-39.014-41.062v-482.355c0-22.63 17.459-41.062 39.014-41.062h740.864c21.555 0 39.014 18.381 39.014 41.062v482.406c0 22.63-17.459 41.011-39.014 41.011zM928.461 17.221h-614.144v88.013l94.464 219.904 141.773-175.974 132.966 136.294 170.957 61.696 73.984-164.966v-164.966z" />
23
+ <glyph unicode="&#xe010;" glyph-name="menu" d="M512 938.667l-235.52-373.76h470.989l-235.469 373.76zM512.051-85.333l235.469 373.76-471.040 0.051 235.571-373.811z" />
24
+ <glyph unicode="&#xe011;" glyph-name="magnifying-glass" d="M644.256 938.667c-209.248 0-379.52-170.24-379.52-379.616 0-50.112 10.24-97.632 27.872-141.376l-292.608-292.64 210.24-210.368 292.736 292.864c43.744-17.76 91.264-28 141.248-28 209.376 0 379.744 170.24 379.744 379.456 0.032 209.44-170.336 379.68-379.712 379.68zM644.256 307.403c-138.624 0-251.616 112.992-251.616 251.584 0 138.752 112.992 251.744 251.616 251.744 138.88 0 251.872-112.992 251.872-251.744 0-138.56-112.992-251.584-251.872-251.584z" />
25
+ <glyph unicode="&#xe01d;" glyph-name="fullscreen" d="M877.248 151.915l-146.752 146.752-90.496-90.496 146.752-146.752-146.752-146.752h384v384zM384 938.667h-384v-384l146.752 146.752 145.376-145.248 90.496 90.496-145.376 145.248zM384 208.171l-90.496 90.496-146.752-146.752-146.752 146.752v-384h384l-146.752 146.752zM1024 938.667h-384l146.752-146.752-145.376-145.248 90.496-90.496 145.376 145.248 146.752-146.752z" />
26
+ <glyph unicode="&#xe01e;" glyph-name="fullscreen-exit" d="M786.752 61.419l146.752-146.752 90.496 90.496-146.752 146.752 146.752 146.752h-384v-384zM0 554.667h384v384l-146.752-146.752-145.248 145.376-90.496-90.496 145.248-145.376zM0 5.163l90.496-90.496 146.752 146.752 146.752-146.752v384h-384l146.752-146.752zM640 554.667h384l-146.752 146.752 145.504 145.376-90.496 90.496-145.504-145.376-146.752 146.752z" />
27
+ <glyph unicode="&#xe034;" glyph-name="tag" d="M154.795 413.312l397.44 397.355h341.333v-341.333l-397.44-397.397c-26.795-26.795-70.229-26.795-97.024 0l-244.309 244.352c-26.795 26.75-26.795 70.186 0 97.022zM701.568 533.334c47.147 0 85.333 38.187 85.333 85.333s-38.187 85.333-85.333 85.333c-47.147 0.128-85.333-38.187-85.333-85.333s38.272-85.333 85.333-85.333z" />
28
+ <glyph unicode="&#xf013;" glyph-name="cog" horiz-adv-x="877" d="M585.142 426.667q0 60.571-42.858 103.429t-103.429 42.858-103.429-42.858-42.858-103.429 42.858-103.429 103.429-42.858 103.429 42.858 42.858 103.429zM877.714 488.953v-126.858q0-6.858-4.571-13.142t-11.429-7.429l-105.714-16q-10.858-30.858-22.286-52 20-28.571 61.142-78.858 5.714-6.858 5.714-14.286t-5.142-13.142q-15.429-21.142-56.571-61.714t-53.714-40.571q-6.858 0-14.858 5.142l-78.858 61.714q-25.142-13.142-52-21.714-9.142-77.714-16.571-106.286-4-16-20.571-16h-126.858q-8 0-14 4.858t-6.571 12.286l-16 105.142q-28 9.142-51.429 21.142l-80.571-61.142q-5.714-5.142-14.286-5.142-8 0-14.286 6.286-72 65.142-94.286 96-4 5.714-4 13.142 0 6.858 4.571 13.142 8.571 12 29.142 38t30.858 40.286q-15.429 28.571-23.429 56.571l-104.571 15.429q-7.429 1.142-12 7.142t-4.571 13.429v126.858q0 6.858 4.571 13.142t10.858 7.429l106.286 16q8 26.286 22.286 52.571-22.858 32.571-61.142 78.858-5.714 6.858-5.714 13.714 0 5.714 5.142 13.142 14.858 20.571 56.286 61.429t54 40.858q7.429 0 14.858-5.714l78.858-61.142q25.142 13.142 52 21.714 9.142 77.714 16.571 106.286 4 16 20.571 16h126.858q8 0 14-4.858t6.571-12.286l16-105.142q28-9.142 51.429-21.142l81.142 61.142q5.142 5.142 13.714 5.142 7.429 0 14.286-5.714 73.714-68 94.286-97.142 4-4.571 4-12.571 0-6.858-4.571-13.142-8.571-12-29.142-38t-30.858-40.286q14.858-28.571 23.429-56l104.571-16q7.429-1.142 12-7.142t4.571-13.429z" />
29
+ <glyph unicode="&#xf014;" glyph-name="trash" horiz-adv-x="803" d="M292.571 518.096v-329.142q0-8-5.142-13.142t-13.142-5.142h-36.571q-8 0-13.142 5.142t-5.142 13.142v329.142q0 8 5.142 13.142t13.142 5.142h36.571q8 0 13.142-5.142t5.142-13.142zM438.858 518.096v-329.142q0-8-5.142-13.142t-13.142-5.142h-36.571q-8 0-13.142 5.142t-5.142 13.142v329.142q0 8 5.142 13.142t13.142 5.142h36.571q8 0 13.142-5.142t5.142-13.142zM585.142 518.096v-329.142q0-8-5.142-13.142t-13.142-5.142h-36.571q-8 0-13.142 5.142t-5.142 13.142v329.142q0 8 5.142 13.142t13.142 5.142h36.571q8 0 13.142-5.142t5.142-13.142zM658.286 104.381v541.714h-512v-541.714q0-12.571 4-23.142t8.286-15.429 6-4.858h475.429q1.714 0 6 4.858t8.286 15.429 4 23.142zM274.286 719.238h256l-27.429 66.858q-4 5.142-9.714 6.286h-181.142q-5.714-1.142-9.714-6.286zM804.571 700.953v-36.571q0-8-5.142-13.142t-13.142-5.142h-54.858v-541.714q0-47.429-26.858-82t-64.571-34.571h-475.429q-37.714 0-64.571 33.429t-26.858 80.858v544h-54.858q-8 0-13.142 5.142t-5.142 13.142v36.571q0 8 5.142 13.142t13.142 5.142h176.571l40 95.429q8.571 21.142 30.858 36t45.142 14.858h182.858q22.858 0 45.142-14.858t30.858-36l40-95.429h176.571q8 0 13.142-5.142t5.142-13.142z" />
30
+ <glyph unicode="&#xf101;" glyph-name="angle-double-right" horiz-adv-x="585" d="M340 390.096q0-7.429-5.714-13.143l-266.286-266.286q-5.714-5.714-13.143-5.714t-13.143 5.714l-28.571 28.571q-5.714 5.714-5.714 13.143t5.714 13.143l224.571 224.571-224.571 224.571q-5.714 5.714-5.714 13.143t5.714 13.143l28.571 28.571q5.714 5.714 13.143 5.714t13.143-5.714l266.286-266.286q5.714-5.714 5.714-13.143zM559.429 390.096q0-7.429-5.714-13.143l-266.286-266.286q-5.714-5.714-13.143-5.714t-13.143 5.714l-28.571 28.571q-5.714 5.714-5.714 13.143t5.714 13.143l224.571 224.571-224.571 224.571q-5.714 5.714-5.714 13.143t5.714 13.143l28.571 28.571q5.714 5.714 13.143 5.714t13.143-5.714l266.286-266.286q5.714-5.714 5.714-13.143z" />
31
+ <glyph unicode="&#xf104;" glyph-name="angle-left" horiz-adv-x="366" d="M358.286 627.81q0-7.429-5.714-13.143l-224.571-224.571 224.571-224.571q5.714-5.714 5.714-13.143t-5.714-13.143l-28.571-28.571q-5.714-5.714-13.143-5.714t-13.143 5.714l-266.286 266.286q-5.714 5.714-5.714 13.143t5.714 13.143l266.286 266.286q5.714 5.714 13.143 5.714t13.143-5.714l28.571-28.571q5.714-5.714 5.714-13.143z" />
32
+ <glyph unicode="&#xf105;" glyph-name="angle-right" horiz-adv-x="366" d="M340 390.096q0-7.429-5.714-13.143l-266.286-266.286q-5.714-5.714-13.143-5.714t-13.143 5.714l-28.571 28.571q-5.714 5.714-5.714 13.143t5.714 13.143l224.571 224.571-224.571 224.571q-5.714 5.714-5.714 13.143t5.714 13.143l28.571 28.571q5.714 5.714 13.143 5.714t13.143-5.714l266.286-266.286q5.714-5.714 5.714-13.143z" />
71
33
  </font></defs></svg>