alchemy_cms 2.0.rc3 → 2.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (219) hide show
  1. data/.gitignore +3 -1
  2. data/.rspec +1 -2
  3. data/.travis.yml +11 -0
  4. data/.yardopts +0 -1
  5. data/Gemfile +1 -2
  6. data/README.md +14 -0
  7. data/alchemy_cms.gemspec +4 -2
  8. data/app/controllers/admin/clipboard_controller.rb +8 -9
  9. data/app/controllers/admin/contents_controller.rb +4 -2
  10. data/app/controllers/admin/essence_pictures_controller.rb +2 -2
  11. data/app/controllers/admin/layoutpages_controller.rb +2 -0
  12. data/app/controllers/admin/pages_controller.rb +5 -5
  13. data/app/controllers/admin/pictures_controller.rb +2 -1
  14. data/app/controllers/admin/trash_controller.rb +2 -0
  15. data/app/controllers/alchemy_controller.rb +10 -4
  16. data/app/controllers/elements_controller.rb +1 -1
  17. data/app/helpers/admin/elements_helper.rb +32 -1
  18. data/app/helpers/alchemy_helper.rb +15 -818
  19. data/app/helpers/contents_helper.rb +69 -0
  20. data/app/helpers/elements_helper.rb +161 -0
  21. data/app/helpers/essences_helper.rb +167 -0
  22. data/app/helpers/pages_helper.rb +401 -19
  23. data/app/models/attachment.rb +4 -0
  24. data/app/models/element.rb +27 -14
  25. data/app/models/page.rb +75 -38
  26. data/app/views/admin/essence_pictures/destroy.js.erb +1 -1
  27. data/app/views/admin/pages/_create_language_form.html.erb +2 -1
  28. data/app/views/admin/pages/new.html.erb +1 -1
  29. data/app/views/admin/pages/update.js.erb +1 -1
  30. data/app/views/admin/partials/_upload_form.html.erb +2 -2
  31. data/app/views/admin/pictures/index.html.erb +7 -4
  32. data/app/views/essences/_essence_picture_editor.html.erb +1 -3
  33. data/app/views/layouts/alchemy.html.erb +59 -59
  34. data/app/views/layouts/pages.html.erb +2 -4
  35. data/app/views/{partials/_navigation_image_link.html.erb → navigation/_image_link.html.erb} +0 -0
  36. data/app/views/{partials/_navigation_link.html.erb → navigation/_link.html.erb} +1 -1
  37. data/app/views/{partials/_navigation_renderer.html.erb → navigation/_renderer.html.erb} +0 -0
  38. data/app/views/page_layouts/_contact.html.erb +1 -1
  39. data/app/views/page_layouts/_external.html.erb +0 -1
  40. data/app/views/page_layouts/_intro.html.erb +1 -1
  41. data/app/views/page_layouts/_news.html.erb +1 -1
  42. data/app/views/page_layouts/_search.html.erb +1 -1
  43. data/app/views/page_layouts/_standard.html.erb +1 -1
  44. data/assets/images/icons.png +0 -0
  45. data/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css +49 -31
  46. data/assets/stylesheets/alchemy.css +111 -91
  47. data/assets/stylesheets/elements.css +12 -16
  48. data/bin/alchemy +1 -1
  49. data/config/alchemy/config.yml +4 -0
  50. data/config/initializers/tinymce_hammer.rb +1 -0
  51. data/config/locales/de.yml +3 -1
  52. data/config/locales/en.yml +2 -0
  53. data/config/routes.rb +6 -4
  54. data/lib/alchemy/capistrano.rb +4 -7
  55. data/lib/alchemy/page_layout.rb +12 -8
  56. data/lib/alchemy/version.rb +1 -1
  57. data/spec/controllers/admin/clipboard_controller_spec.rb +23 -0
  58. data/spec/dummy/db/schema.rb +9 -9
  59. data/spec/factories.rb +24 -6
  60. data/spec/helpers/admin/elements_helper_spec.rb +20 -0
  61. data/spec/helpers/alchemy_helper_spec.rb +41 -0
  62. data/spec/helpers/contents_helper_spec.rb +27 -0
  63. data/spec/helpers/elements_helper_spec.rb +39 -0
  64. data/spec/helpers/essences_helper_spec.rb +49 -0
  65. data/spec/helpers/pages_helper_spec.rb +140 -0
  66. data/spec/integration/security_spec.rb +1 -1
  67. data/spec/integration/standardset_spec.rb +29 -0
  68. data/spec/models/element_spec.rb +49 -0
  69. data/spec/{language_spec.rb → models/language_spec.rb} +0 -0
  70. data/spec/models/page_spec.rb +139 -0
  71. data/spec/{user_spec.rb → models/user_spec.rb} +0 -0
  72. data/spec/page_layout_spec.rb +21 -0
  73. data/spec/routing_spec.rb +53 -0
  74. data/spec/spec_helper.rb +12 -11
  75. metadata +54 -303
  76. data/spec/dummy/config/alchemy/config.yml +0 -199
  77. data/spec/dummy/config/alchemy/elements.yml +0 -91
  78. data/spec/dummy/config/alchemy/page_layouts.yml +0 -29
  79. data/spec/dummy/public/images/alchemy/ajax_loader.gif +0 -0
  80. data/spec/dummy/public/images/alchemy/alchemy-logo.png +0 -0
  81. data/spec/dummy/public/images/alchemy/flags.png +0 -0
  82. data/spec/dummy/public/images/alchemy/gui/navi-tab.png +0 -0
  83. data/spec/dummy/public/images/alchemy/gui/shading.png +0 -0
  84. data/spec/dummy/public/images/alchemy/gui/shading_90.png +0 -0
  85. data/spec/dummy/public/images/alchemy/gui/toggle.png +0 -0
  86. data/spec/dummy/public/images/alchemy/icons.png +0 -0
  87. data/spec/dummy/public/images/alchemy/jquery-sb/select_arrow.gif +0 -0
  88. data/spec/dummy/public/images/alchemy/jquery-sb/select_arrow_bg.gif +0 -0
  89. data/spec/dummy/public/images/alchemy/jquery-sb/select_arrow_bg_hover.gif +0 -0
  90. data/spec/dummy/public/images/alchemy/jquery-ui/ui-icons_666666_256x240.png +0 -0
  91. data/spec/dummy/public/images/alchemy/placeholder.png +0 -0
  92. data/spec/dummy/public/images/alchemy/swfupload/browse_button.png +0 -0
  93. data/spec/dummy/public/javascripts/alchemy/alchemy.element_editor_selector.js +0 -88
  94. data/spec/dummy/public/javascripts/alchemy/alchemy.growler.js +0 -44
  95. data/spec/dummy/public/javascripts/alchemy/alchemy.image_cropper.js +0 -56
  96. data/spec/dummy/public/javascripts/alchemy/alchemy.js +0 -892
  97. data/spec/dummy/public/javascripts/alchemy/alchemy.link_overlay.js +0 -221
  98. data/spec/dummy/public/javascripts/alchemy/alchemy.page_sorter.js +0 -42
  99. data/spec/dummy/public/javascripts/alchemy/alchemy.preview.js +0 -145
  100. data/spec/dummy/public/javascripts/alchemy/jquery-ui.js +0 -428
  101. data/spec/dummy/public/javascripts/alchemy/jquery.Jcrop.min.js +0 -246
  102. data/spec/dummy/public/javascripts/alchemy/jquery.dialogextend.min.js +0 -8
  103. data/spec/dummy/public/javascripts/alchemy/jquery.in-place-edit.js +0 -171
  104. data/spec/dummy/public/javascripts/alchemy/jquery.js +0 -18
  105. data/spec/dummy/public/javascripts/alchemy/jquery.rails.js +0 -315
  106. data/spec/dummy/public/javascripts/alchemy/jquery.sb.min.js +0 -14
  107. data/spec/dummy/public/javascripts/alchemy/jquery.scrollTo-1.4.2-min.js +0 -11
  108. data/spec/dummy/public/javascripts/alchemy/jquery.ui.nestedSortable.js +0 -291
  109. data/spec/dummy/public/javascripts/alchemy/jquery.ui.tabspaging.js +0 -281
  110. data/spec/dummy/public/javascripts/alchemy/swfupload/fileprogress.js +0 -203
  111. data/spec/dummy/public/javascripts/alchemy/swfupload/handlers.js +0 -171
  112. data/spec/dummy/public/javascripts/alchemy/swfupload/queue.js +0 -98
  113. data/spec/dummy/public/javascripts/alchemy/swfupload/swfupload.js +0 -980
  114. data/spec/dummy/public/javascripts/alchemy/swfupload/swfupload.swf +0 -0
  115. data/spec/dummy/public/javascripts/alchemy/tiny_mce/jquery.tinymce.js +0 -1
  116. data/spec/dummy/public/javascripts/alchemy/tiny_mce/langs/de.js +0 -1
  117. data/spec/dummy/public/javascripts/alchemy/tiny_mce/langs/en.js +0 -223
  118. data/spec/dummy/public/javascripts/alchemy/tiny_mce/license.txt +0 -504
  119. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/alchemy_link/editor_plugin.js +0 -43
  120. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/alchemy_link/langs/de.js +0 -4
  121. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/alchemy_link/langs/en.js +0 -4
  122. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/fullscreen/editor_plugin.js +0 -1
  123. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/fullscreen/fullscreen.htm +0 -109
  124. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/inlinepopups/editor_plugin.js +0 -1
  125. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css +0 -402
  126. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/inlinepopups/template.htm +0 -387
  127. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/lists/editor_plugin.js +0 -1
  128. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/paste/editor_plugin.js +0 -1
  129. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/paste/js/pastetext.js +0 -36
  130. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/paste/js/pasteword.js +0 -51
  131. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/paste/langs/de_dlg.js +0 -1
  132. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/paste/langs/en_dlg.js +0 -5
  133. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/paste/pastetext.htm +0 -27
  134. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/paste/pasteword.htm +0 -21
  135. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/cell.htm +0 -180
  136. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/css/cell.css +0 -17
  137. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/css/row.css +0 -25
  138. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/css/table.css +0 -13
  139. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/editor_plugin.js +0 -1
  140. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/js/cell.js +0 -319
  141. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/js/merge_cells.js +0 -27
  142. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/js/row.js +0 -237
  143. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/js/table.js +0 -450
  144. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/langs/de_dlg.js +0 -1
  145. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/langs/en_dlg.js +0 -75
  146. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/merge_cells.htm +0 -32
  147. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/row.htm +0 -158
  148. data/spec/dummy/public/javascripts/alchemy/tiny_mce/plugins/table/table.htm +0 -188
  149. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/about.htm +0 -52
  150. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/anchor.htm +0 -26
  151. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/charmap.htm +0 -51
  152. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/color_picker.htm +0 -74
  153. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/editor_template.js +0 -1
  154. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/image.htm +0 -80
  155. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  156. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/flash.gif +0 -0
  157. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/icons.gif +0 -0
  158. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/iframe.gif +0 -0
  159. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/pagebreak.gif +0 -0
  160. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/quicktime.gif +0 -0
  161. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/realmedia.gif +0 -0
  162. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/shockwave.gif +0 -0
  163. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/trans.gif +0 -0
  164. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/video.gif +0 -0
  165. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/img/windowsmedia.gif +0 -0
  166. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/js/about.js +0 -73
  167. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/js/anchor.js +0 -42
  168. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/js/charmap.js +0 -355
  169. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/js/color_picker.js +0 -329
  170. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/js/image.js +0 -247
  171. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/js/link.js +0 -153
  172. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/js/source_editor.js +0 -56
  173. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/langs/de.js +0 -1
  174. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/langs/de_dlg.js +0 -1
  175. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/langs/en.js +0 -68
  176. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/langs/en_dlg.js +0 -54
  177. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/link.htm +0 -57
  178. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/shortcuts.htm +0 -47
  179. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/default/content.css +0 -47
  180. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/default/dialog.css +0 -117
  181. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  182. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  183. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  184. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  185. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  186. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  187. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/default/ui.css +0 -214
  188. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/highcontrast/content.css +0 -23
  189. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +0 -105
  190. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/highcontrast/ui.css +0 -102
  191. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/o2k7/content.css +0 -46
  192. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/o2k7/dialog.css +0 -117
  193. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  194. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  195. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  196. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/o2k7/ui.css +0 -217
  197. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +0 -8
  198. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +0 -5
  199. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/advanced/source_editor.htm +0 -25
  200. data/spec/dummy/public/javascripts/alchemy/tiny_mce/themes/simple/langs/de.js +0 -1
  201. data/spec/dummy/public/javascripts/alchemy/tiny_mce/tiny_mce.js +0 -1
  202. data/spec/dummy/public/javascripts/alchemy/tiny_mce/tiny_mce_popup.js +0 -5
  203. data/spec/dummy/public/javascripts/alchemy/tiny_mce/utils/editable_selects.js +0 -70
  204. data/spec/dummy/public/javascripts/alchemy/tiny_mce/utils/form_utils.js +0 -210
  205. data/spec/dummy/public/javascripts/alchemy/tiny_mce/utils/mctabs.js +0 -162
  206. data/spec/dummy/public/javascripts/alchemy/tiny_mce/utils/validate.js +0 -252
  207. data/spec/dummy/public/stylesheets/alchemy/Jcrop.gif +0 -0
  208. data/spec/dummy/public/stylesheets/alchemy/alchemy.css +0 -3653
  209. data/spec/dummy/public/stylesheets/alchemy/alchemy_tinymce_content.css +0 -94
  210. data/spec/dummy/public/stylesheets/alchemy/alchemy_tinymce_dialog.css +0 -415
  211. data/spec/dummy/public/stylesheets/alchemy/default/img/tabs.gif +0 -0
  212. data/spec/dummy/public/stylesheets/alchemy/elements.css +0 -900
  213. data/spec/dummy/public/stylesheets/alchemy/flags.css +0 -1
  214. data/spec/dummy/public/stylesheets/alchemy/ie6.css +0 -18
  215. data/spec/dummy/public/stylesheets/alchemy/jquery-ui-1.8.7.alchemy.css +0 -2023
  216. data/spec/dummy/public/stylesheets/alchemy/jquery.Jcrop.css +0 -35
  217. data/spec/dummy/public/stylesheets/alchemy/jquery.sb.css +0 -244
  218. data/spec/dummy/public/stylesheets/alchemy/standard_set.css +0 -374
  219. data/spec/page_spec.rb +0 -50
@@ -1,199 +0,0 @@
1
- # = Configuration
2
- #
3
- # == This is the global Alchemy configuration file
4
- # Please override your apps settings in your config/alchemy/config.yml file.
5
- # You can use a handy rake task to generate it.
6
- #
7
- # rake alchemy:app_structure:create:config
8
-
9
- # The amount of time of inactivity in minutes after which the user is kicked out of his current session.
10
- # Only active in production environment!!!
11
- :auto_logout_time: 30
12
-
13
- # === Redirect options
14
- # redirect_index: You can set to redirect (an 301 permanent, for all you SEO geeks ^_^) to first child page (typically the homepage) the index/intro page if it's not visible.
15
- # So you don't get an 404 error if the language root page is not visible.
16
- # redirect_to_public_child: Alchemy redirects to the first public child page found, if a page is not visible.
17
- :redirect_index: true
18
- :redirect_to_public_child: true
19
-
20
- # Enabling the Ferret fulltext search engine.
21
- # Tip! For best performance and stability install a crontab that reindexes ferrets search index periodly.
22
- # Example: cd ~/html/alchemy/current && RAILS_ENV=production rake ferret:rebuild_index
23
- :ferret: false
24
-
25
- # === Pagecaching
26
- # Enable/Disable pagecaching globally.
27
- # Hint: You can enable/disable page caching for single Alchemy::PageLayouts in the page_layout.yml file.
28
- :cache_pages: true
29
-
30
- # === Sitemap
31
- # Alchemy renders a nice HTML (<ul><li> style) and XML (Google conform!) Sitemap for you.
32
- # Just place a sitemap element for a page layout in your page_layouts.yml file. Alchemy does the rest.
33
- # ==== Options:
34
- # show_root: Show language root page in sitemap?
35
- # show_flag: enables the Checkbox in Page#update overlay. So your customer can set the visibilit of pages in the sitemap.
36
- :sitemap:
37
- :show_root: true
38
- :show_flag: false
39
-
40
- # === Picture rendering settings
41
- # Alchemy uses Fleximage and RMagick to render images. Use {:image_size => "XXXxYYY", :crop => BOOLEAN [true]} to resize images.
42
- # See https://github.com/Squeegy/fleximage for further infos.
43
- # ==== Options:
44
- # output_image_jpg_quality: If rendered as JPG this is the quality setting for it.
45
- # preprocess_image_resize: Large images are downsized after upload to save diskspace.
46
- # image_store_format: Masterimage storage format. Images are rendered from this master image, so a lossless format (png) is strongly recommended.
47
- # image_output_format: Globally image output format setting.
48
- # TIP: You can always override the output format in the options of your Essence. I.e. {:format => :gif}
49
- :output_image_jpg_quality: 85
50
- :preprocess_image_resize: 1000x1000
51
- :image_store_format: png
52
- :image_output_format: jpg
53
-
54
- # Set available translations for your customers.
55
- # Currently available translations are German and English.
56
- :translations:
57
- - :language_code: de
58
- :language: Deutsch
59
- - :language_code: en
60
- :language: English
61
-
62
- default_translation: en
63
-
64
- # Default language for your homepgae.
65
- default_language:
66
- code: en
67
- name: English
68
- page_layout: intro
69
- frontpage_name: Intro
70
-
71
- # === Mailer Settings:
72
- #
73
- # To send Mails via contact forms you can create your form fields here and set which fields are to be validated.
74
- #
75
- # ==== Options:
76
- #
77
- # fields: An Array from Hashes with fieldname as keys and type as values. Types are ActiveRecord column types (i.e. string, text, boolean, etc.).
78
- # validate_fields: A Hash with fieldname as key and a Hash (with :message as key and a message_id as value) as value
79
- #
80
- # ==== Translating validation messages:
81
- #
82
- # The message_id is passed through I18n.t so you can translate it in your language yml file.
83
- #
84
- # Example:
85
- #
86
- # de:
87
- # alchemy:
88
- # contactform:
89
- # validations:
90
- # enter_name: 'Bitte geben Sie einen Namen an'
91
- #
92
- :mailer:
93
- :page_layout_name: contact
94
- :forward_to_page: false
95
- :mail_success_page: thanks
96
- :fields: [salutation, firstname, lastname, address, zip, city, phone, email, message]
97
- :validate_fields:
98
- :lastname:
99
- :message: enter_name
100
- :email:
101
- :message: enter_mail
102
-
103
- # === User roles
104
- # You can add own user roles. To set permissions for this roles please add an authorization_rules.rb file in your config folder.
105
- # Further documentation for the auth system used please visit:
106
- # https://github.com/stffn/declarative_authorization/blob/master/README.rdoc
107
- #
108
- # ==== Translating Userroles
109
- # Userroles can be translated inside your the language yml file under:
110
- # alchemy:
111
- # user_roles:
112
- # rolename: Name of the role
113
- :user_roles: [registered, author, editor, admin]
114
-
115
- # === Uploader Settings
116
- # Allow filetypes to upload.
117
- # Pass * to allow all kind of files.
118
- :uploader:
119
- :allowed_filetypes:
120
- :pictures: [jpg, jpeg, gif, png, psd, pdf]
121
- :attachments: [*]
122
-
123
- # === Link Target Options
124
- # Values for the link target selectbox inside the page link overlay.
125
- # The value gets attached as a data-link-target attribute to the link.
126
- #
127
- # == Example:
128
- # Open all links set to overlay inside an jQuery UI Dialog Window.
129
- #
130
- # jQuery(a[data-link-target="overlay"]).dialog();
131
- :link_target_options: [blank]
132
-
133
- # == Alchemy core plugins configuration
134
-
135
- alchemy_plugins:
136
-
137
- - name: dashboard
138
- navigation:
139
- name: 'home'
140
- controller: 'admin'
141
- action: index
142
- icon: home
143
- sub_navigation:
144
- - name: 'home'
145
- controller: 'admin'
146
- action: index
147
-
148
- - name: pages
149
- navigation:
150
- name: 'module: pages'
151
- controller: 'admin/pages'
152
- action: index
153
- icon: pages
154
- sub_navigation:
155
- - name: 'module: pages'
156
- controller: 'admin/pages'
157
- action: index
158
- - name: 'module: layoutpages'
159
- controller: 'admin/layoutpages'
160
- action: index
161
- nested:
162
- - controller: 'admin/pages'
163
- action: edit
164
-
165
- - name: languages
166
- navigation:
167
- name: 'module: languages'
168
- controller: 'admin/languages'
169
- action: index
170
- icon: languages
171
- sub_navigation:
172
- - name: 'module: languages'
173
- controller: 'admin/languages'
174
- action: index
175
-
176
- - name: users
177
- navigation:
178
- name: 'module: users'
179
- controller: 'admin/users'
180
- action: index
181
- icon: users
182
- sub_navigation:
183
- - name: 'module: users'
184
- controller: 'admin/users'
185
- action: index
186
-
187
- - name: archive
188
- navigation:
189
- controller: 'admin/pictures'
190
- action: index
191
- name: 'module: library'
192
- icon: library
193
- sub_navigation:
194
- - name: 'module: pictures'
195
- controller: 'admin/pictures'
196
- action: index
197
- - name: 'module: attachments'
198
- controller: 'admin/attachments'
199
- action: index
@@ -1,91 +0,0 @@
1
- # == In this configuration you setup Alchemy´s element layouts.
2
- #
3
- # Use rails generate alchemy:scaffold to generate this file for your app.
4
- #
5
- # Elements containing all necessary basic tools for displaying and editing content inside Alchemy.
6
- # They consists of composed contents (different essence-types) as shown in the illustration of an elements-sheme below.
7
- #
8
- # == Schema of an element
9
- #
10
- # =================================
11
- # # Content 1 (EssenceText) #
12
- # # #
13
- # # Content 2 (EssencePicture) #
14
- # # #
15
- # # Content 3 (EssenceRichtext) #
16
- # =================================
17
- #
18
- # == Example of a basic element layout
19
- #
20
- # - name: a_unique_name (Used for the partial name in +app/views/elements+ and translated as Element.display_name)
21
- # unique: Bool //pass true if this element only can be displayed once on page
22
- # contents:
23
- # - name: head
24
- # type: EssenceText
25
- # - name: text
26
- # type: EssenceRichtext
27
- #
28
- # As already mentioned above, there are different content-types wich can be defined for each content in an element.
29
- # Defining these types is used to render predefined views in the element.
30
- #
31
- # == Content-Types:
32
- #
33
- # * EssenceText (Used to store a String (max. 255 Chars.) i.e. a headline, or productname. The editor is renderd as a single-lined input field. The view output will be sanitized and escaped. So it's XSS save.)
34
- # * EssenceRichtext (Used to store editable richtext. Editor is rendered as a textarea with TinyMCE Editor.)
35
- # * EssencePicture (Used to store picture ids from pictures assigned through the library. The editor is rendered as a picture-editor collection with a lot of options (i.e. image cropper). The view renders the assigned picture, resizes it, crops it and caches the result.)
36
- # * EssenceFlash (Used to store attachment ids from attachments assigned through the library. The view renders an embeded object.)
37
- # * EssenceDate (Used to store a DateTime object. The view output is passed through Rails I18n Library, so it will be fully localized.)
38
- # * EssenceHtml (Used to store a String (max. 255 Chars.). The view output renders the raw, not sanitized or unescaped String. So be carefull!)
39
- #
40
- # After finishing the setup of your element layouts, you need to generate the files for the elements before using them in Alchemy.
41
- # For creating these files, use the following command in your terminal:
42
- #
43
- # rails generate elements
44
- #
45
- # All new elements will be created as two different partials in Rails.root/app/views/elements.
46
- # For each element there is an editor-view wich will be rendered when editing them in Alchemy and another view for the website´s frontend.
47
- #
48
- # app/views/elements/_elements_name_editor.html.erb
49
- # app/views/elements/_elements_name_view.html.erb
50
- #
51
- # For most contents in an element you can specify additional options, so they get rendered in a specific way.
52
- # These options can be defined as symbols, but its too much to list them up here.
53
- # You can find these options described in the application_helper.rb, most of them at the render_essence method.
54
- #
55
- # == Setting a content as preview-text for the element
56
- #
57
- # You can set a content-essence as preview-text for its element like this
58
- # take_me_for_preview: true
59
- #
60
- #
61
- # == Adding contents dynamically in the frontend
62
- #
63
- # You are able to add content-essences dynamically to the element from the Alchemy frontend.
64
- # You just have to make contents available for adding them.
65
- # This example enables this feature
66
- #
67
- # - name: headline
68
- # unique: false
69
- # contents:
70
- # - name: headline
71
- # type: EssenceText
72
- # - name: big_text
73
- # type: EssenceRichtext
74
- # available_contents:
75
- # - name: big_text
76
- # type: EssenceRichtext
77
- #
78
- # Now an Alchemy user can add the content 'big_text' from the element as much as desired.
79
- #
80
- # === Translate element names
81
- #
82
- # Element names are passed through the I18n library. So you can translate them in your config/locales language yml file.
83
- #
84
- # Example:
85
- #
86
- # de:
87
- # alchemy:
88
- # element_names:
89
- # contact: Kontakt
90
- # search: Suche
91
-
@@ -1,29 +0,0 @@
1
- # == This file defines the page_layouts for new pages.
2
- #
3
- # Please make your own page_layouts for your app in your own Rails.root/config/alchemy/page_layouts.yml file.
4
- #
5
- # === DSL:
6
- # - name: String # The name of the layout used for views and inside the database. You can render a layout with the render_page_layout(name) helper.
7
- # unique: Bool # Pass true and the user can only choose this layout once inside a language tree.
8
- # hide: Bool # Pass true to hide this layout from the user.
9
- # elements: Array # A list of element names that can be placed on this layout i.e. [text, picture]. Elements are defined inside the elements.yml file.
10
- # autogenerate: Array # A list of element names that are autogenerated after creating the Page.
11
- # layoutpage: Bool # Layoutpages are outside the normal pagetree and can be used to place "global" language independent Elements.
12
- # cache: Bool # Pass false to disable the caching for this pages.
13
- # feed: Bool # Pass true to enable a RSS feed of news elements from this page.
14
- # redirects_to_external: Bool # Pass true to disable normal page rendering and redirect to a external page instead.
15
- # controller: controller_name # Controller to use instead of the default PagesController
16
- # action: action_name # Controllers action to use instead of the default PagesController#show
17
- #
18
- # === Translate page layout names
19
- #
20
- # Page layout names are passed through the I18n library. So you can translate them in your config/locales language yml file.
21
- #
22
- # Example:
23
- #
24
- # de:
25
- # alchemy:
26
- # page_layout_names:
27
- # contact: Kontakt
28
- # search: Suche
29
- #
@@ -1,88 +0,0 @@
1
- if (typeof(Alchemy) === 'undefined') {
2
- var Alchemy = {};
3
- }
4
-
5
- (function($) {
6
-
7
- var ElementEditorSelector = {};
8
- $.extend(Alchemy, ElementEditorSelector);
9
-
10
- Alchemy.ElementEditorSelector = {
11
-
12
- init : function() {
13
- var $elements = $('#element_area .element_editor');
14
- var self = Alchemy.ElementEditorSelector;
15
- self.reinit($elements);
16
- },
17
-
18
- reinit : function(elements) {
19
- var self = Alchemy.ElementEditorSelector;
20
- var $elements = $(elements);
21
- $elements.each(function () {
22
- self.bindEvent(this, $elements);
23
- });
24
- $elements.find('.element_head').click(self.onClickElement);
25
- $elements.find('.element_head').dblclick(function() {
26
- var id = $(this).parent().attr('id').replace(/\D/g,'');
27
- self.foldElement(id);
28
- });
29
- },
30
-
31
- onClickElement : function(e) {
32
- var self = Alchemy.ElementEditorSelector;
33
- var $element = $(this).parent('.element_editor');
34
- var id = $element.attr('id').replace(/\D/g,'');
35
- var $frame_elements, $selected_element;
36
- e.preventDefault();
37
- $('#element_area .element_editor').removeClass('selected');
38
- $element.addClass('selected');
39
- self.scrollToElement(this);
40
- $frame_elements = document.getElementById('alchemyPreviewWindow').contentWindow.jQuery('[data-alchemy-element]');
41
- $selected_element = $frame_elements.closest('[data-alchemy-element="'+id+'"]');
42
- $selected_element.trigger('Alchemy.SelectElement');
43
- },
44
-
45
- bindEvent : function (element) {
46
- var self = Alchemy.ElementEditorSelector;
47
- $(element).bind('Alchemy.SelectElementEditor', self.selectElement);
48
- },
49
-
50
- selectElement : function (e) {
51
- var self = Alchemy.ElementEditorSelector;
52
- var id = this.id.replace(/\D/g,'');
53
- var $element = $(this);
54
- var $elements = $('#element_area .element_editor');
55
- var $cells = $('#cells .sortable_cell');
56
- var $cell;
57
- e.preventDefault();
58
- $elements.removeClass('selected');
59
- $element.addClass('selected');
60
- if ($cells.size() > 0) {
61
- $cell = $element.parent('.sortable_cell');
62
- $('#cells').tabs('select', $cell.attr('id'));
63
- }
64
- if ($element.hasClass('folded')) {
65
- self.foldElement(id);
66
- } else {
67
- self.scrollToElement(this);
68
- }
69
- },
70
-
71
- scrollToElement : function(el) {
72
- $('#alchemyElementWindow').scrollTo(el, {duration: 400, offset: -10});
73
- },
74
-
75
- foldElement : function(id) {
76
- var self = Alchemy.ElementEditorSelector;
77
- $('#element_'+id+'_folder').hide();
78
- $('#element_'+id+'_folder_spinner').show();
79
- $.post('/admin/elements/'+id+'/fold', function() {
80
- $('#element_'+id+'_folder').show();
81
- $('#element_'+id+'_folder_spinner').hide();
82
- self.scrollToElement('#element_'+id);
83
- });
84
- }
85
-
86
- }
87
-
88
- })(jQuery);
@@ -1,44 +0,0 @@
1
- if (typeof(Alchemy) === 'undefined') {
2
- var Alchemy = {};
3
- }
4
-
5
- (function($) {
6
-
7
- var Growler = {};
8
- $.extend(Alchemy, Growler);
9
-
10
- Alchemy.Growler = {
11
-
12
- build : function(message, flash_type) {
13
- var $flash_container = $('<div class="flash '+flash_type+'" />');
14
- var icon_class = flash_type === 'notice' ? 'tick' : 'error';
15
- $flash_container.append('<span class="icon '+icon_class+'" />');
16
- $flash_container.append(message);
17
- $('#flash_notices').append($flash_container);
18
- $('#flash_notices').show();
19
- Alchemy.Growler.fade();
20
- },
21
-
22
- fade : function() {
23
- $('#flash_notices div[class!="flash error"]').delay(5000).hide('drop', { direction: "up" }, 400, function() {
24
- $(this).remove();
25
- });
26
- $('#flash_notices div[class="flash error"]')
27
- .css({cursor: 'pointer'})
28
- .click(function() {
29
- $(this).hide('drop', { direction: "up" }, 400, function() {
30
- $(this).remove();
31
- });
32
- });
33
- }
34
-
35
- },
36
-
37
- Alchemy.growl = function(message, style) {
38
- if (typeof(style) === 'undefined') {
39
- style = 'notice';
40
- }
41
- Alchemy.Growler.build(message, style);
42
- }
43
-
44
- })(jQuery);