alchemy_cms 2.5.3.1 → 2.6.0.rc5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (331) hide show
  1. data/.gitignore +1 -1
  2. data/.travis.yml +5 -13
  3. data/Gemfile +6 -3
  4. data/README.md +3 -2
  5. data/alchemy_cms.gemspec +22 -22
  6. data/app/assets/fonts/alchemy-icons.eot +0 -0
  7. data/app/assets/fonts/alchemy-icons.svg +54 -0
  8. data/app/assets/fonts/alchemy-icons.ttf +0 -0
  9. data/app/assets/fonts/alchemy-icons.woff +0 -0
  10. data/app/assets/images/alchemy/icons.png +0 -0
  11. data/app/assets/javascripts/alchemy/alchemy.base.js.coffee +151 -0
  12. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +3 -2
  13. data/app/assets/javascripts/alchemy/alchemy.datepicker.js.coffee +31 -0
  14. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js +1 -1
  15. data/app/assets/javascripts/alchemy/alchemy.element_editors.js.coffee +98 -0
  16. data/app/assets/javascripts/alchemy/alchemy.elements_window.js.coffee +23 -24
  17. data/app/assets/javascripts/alchemy/alchemy.growler.js.coffee +27 -0
  18. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +11 -8
  19. data/app/assets/javascripts/alchemy/alchemy.hotkeys.js.coffee +32 -0
  20. data/app/assets/javascripts/alchemy/alchemy.image_cropper.js.coffee +46 -0
  21. data/app/assets/javascripts/alchemy/alchemy.js +8 -2
  22. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js.coffee +5 -4
  23. data/app/assets/javascripts/alchemy/alchemy.list_filter.js.coffee +49 -0
  24. data/app/assets/javascripts/alchemy/alchemy.onload.js.coffee +3 -0
  25. data/app/assets/javascripts/alchemy/alchemy.preview_window.js.coffee +71 -0
  26. data/app/assets/javascripts/alchemy/alchemy.sitemap.js.coffee +61 -0
  27. data/app/assets/javascripts/alchemy/alchemy.spinner.js.coffee +35 -0
  28. data/app/assets/javascripts/alchemy/alchemy.string_extension.js.coffee +11 -0
  29. data/app/assets/javascripts/alchemy/alchemy.windows.js.coffee +278 -0
  30. data/app/assets/stylesheets/alchemy/admin.css.scss +2 -0
  31. data/app/assets/stylesheets/alchemy/archive.scss +109 -65
  32. data/app/assets/stylesheets/alchemy/base.scss +16 -188
  33. data/app/assets/stylesheets/alchemy/dashboard.scss +2 -2
  34. data/app/assets/stylesheets/alchemy/defaults.scss +2 -1
  35. data/app/assets/stylesheets/alchemy/elements.scss +58 -94
  36. data/app/assets/stylesheets/alchemy/errors.scss +2 -2
  37. data/app/assets/stylesheets/alchemy/{mixins.scss → extends.scss} +104 -80
  38. data/app/assets/stylesheets/alchemy/flash.scss +4 -6
  39. data/app/assets/stylesheets/alchemy/fonts.scss +46 -0
  40. data/app/assets/stylesheets/alchemy/form_elements.scss +46 -45
  41. data/app/assets/stylesheets/alchemy/frame.scss +20 -15
  42. data/app/assets/stylesheets/alchemy/icons.scss +22 -9
  43. data/app/assets/stylesheets/alchemy/jquery-ui.scss +476 -399
  44. data/app/assets/stylesheets/alchemy/login.scss +1 -1
  45. data/app/assets/stylesheets/alchemy/menubar.css.scss +1 -1
  46. data/app/assets/stylesheets/alchemy/notices.scss +5 -5
  47. data/app/assets/stylesheets/alchemy/pagination.scss +25 -13
  48. data/app/assets/stylesheets/alchemy/search.scss +29 -17
  49. data/app/assets/stylesheets/alchemy/sitemap.scss +41 -36
  50. data/app/assets/stylesheets/alchemy/tables.scss +102 -50
  51. data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +18 -16
  52. data/app/assets/stylesheets/alchemy/toolbar.scss +84 -24
  53. data/app/assets/stylesheets/alchemy/upload.scss +14 -9
  54. data/app/assets/stylesheets/alchemy/variables.scss +1 -0
  55. data/app/assets/stylesheets/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.scss +18 -21
  56. data/app/controllers/alchemy/admin/attachments_controller.rb +29 -39
  57. data/app/controllers/alchemy/admin/base_controller.rb +3 -9
  58. data/app/controllers/alchemy/admin/clipboard_controller.rb +1 -1
  59. data/app/controllers/alchemy/admin/contents_controller.rb +1 -1
  60. data/app/controllers/alchemy/admin/dashboard_controller.rb +1 -1
  61. data/app/controllers/alchemy/admin/elements_controller.rb +3 -3
  62. data/app/controllers/alchemy/admin/essence_files_controller.rb +1 -1
  63. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +5 -5
  64. data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
  65. data/app/controllers/alchemy/admin/pages_controller.rb +18 -16
  66. data/app/controllers/alchemy/admin/pictures_controller.rb +11 -10
  67. data/app/controllers/alchemy/admin/resources_controller.rb +87 -14
  68. data/app/controllers/alchemy/admin/tags_controller.rb +3 -3
  69. data/app/controllers/alchemy/admin/trash_controller.rb +3 -3
  70. data/app/controllers/alchemy/admin/users_controller.rb +6 -11
  71. data/app/controllers/alchemy/attachments_controller.rb +8 -9
  72. data/app/controllers/alchemy/base_controller.rb +17 -10
  73. data/app/controllers/alchemy/pages_controller.rb +7 -19
  74. data/app/controllers/alchemy/passwords_controller.rb +15 -3
  75. data/app/controllers/alchemy/user_sessions_controller.rb +5 -4
  76. data/app/controllers/alchemy/users_controller.rb +1 -1
  77. data/app/helpers/alchemy/admin/attachments_helper.rb +2 -2
  78. data/app/helpers/alchemy/admin/base_helper.rb +62 -90
  79. data/app/helpers/alchemy/admin/elements_helper.rb +13 -5
  80. data/app/helpers/alchemy/admin/essences_helper.rb +3 -5
  81. data/app/helpers/alchemy/admin/pages_helper.rb +6 -3
  82. data/app/helpers/alchemy/admin/tags_helper.rb +60 -0
  83. data/app/helpers/alchemy/base_helper.rb +16 -20
  84. data/app/helpers/alchemy/elements_helper.rb +7 -11
  85. data/app/helpers/alchemy/essences_helper.rb +2 -2
  86. data/app/helpers/alchemy/pages_helper.rb +31 -69
  87. data/app/helpers/alchemy/url_helper.rb +11 -3
  88. data/app/models/alchemy/attachment.rb +73 -45
  89. data/app/models/alchemy/cell.rb +1 -1
  90. data/app/models/alchemy/content.rb +20 -9
  91. data/app/models/alchemy/element.rb +9 -7
  92. data/app/models/alchemy/page.rb +15 -248
  93. data/app/models/alchemy/page/cells.rb +71 -0
  94. data/app/models/alchemy/page/elements.rb +147 -0
  95. data/app/models/alchemy/page/naming.rb +90 -0
  96. data/app/models/alchemy/picture.rb +18 -13
  97. data/app/models/alchemy/tag.rb +1 -1
  98. data/app/models/alchemy/user.rb +38 -6
  99. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +14 -7
  100. data/app/views/alchemy/admin/attachments/_attachment.html.erb +17 -12
  101. data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +3 -8
  102. data/app/views/alchemy/admin/attachments/_files_list.html.erb +20 -12
  103. data/app/views/alchemy/admin/attachments/_overlay_file_list.html.erb +11 -0
  104. data/app/views/alchemy/admin/attachments/_tag_list.html.erb +31 -0
  105. data/app/views/alchemy/admin/attachments/archive_overlay.js.erb +4 -0
  106. data/app/views/alchemy/admin/attachments/edit.html.erb +8 -7
  107. data/app/views/alchemy/admin/attachments/index.html.erb +19 -12
  108. data/app/views/alchemy/admin/attachments/new.html.erb +2 -2
  109. data/app/views/alchemy/admin/attachments/show.html.erb +3 -0
  110. data/app/views/alchemy/admin/contents/_missing.html.erb +4 -4
  111. data/app/views/alchemy/admin/contents/create.js.erb +1 -1
  112. data/app/views/alchemy/admin/contents/new.html.erb +6 -3
  113. data/app/views/alchemy/admin/dashboard/_locked_pages.html.erb +1 -1
  114. data/app/views/alchemy/admin/dashboard/_users.html.erb +1 -1
  115. data/app/views/alchemy/admin/dashboard/index.html.erb +3 -3
  116. data/app/views/alchemy/admin/dashboard/info.html.erb +16 -13
  117. data/app/views/alchemy/admin/elements/_add_picture.html.erb +1 -1
  118. data/app/views/alchemy/admin/elements/_element_foot.html.erb +4 -4
  119. data/app/views/alchemy/admin/elements/_element_head.html.erb +1 -7
  120. data/app/views/alchemy/admin/elements/_elements_select.html.erb +2 -2
  121. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +4 -4
  122. data/app/views/alchemy/admin/elements/_picture_gallery_editor.html.erb +1 -1
  123. data/app/views/alchemy/admin/elements/create.js.erb +2 -2
  124. data/app/views/alchemy/admin/elements/fold.js.erb +3 -6
  125. data/app/views/alchemy/admin/elements/new.html.erb +1 -1
  126. data/app/views/alchemy/admin/elements/order.js.erb +1 -1
  127. data/app/views/alchemy/admin/elements/trash.js.erb +1 -1
  128. data/app/views/alchemy/admin/elements/update.js.erb +2 -2
  129. data/app/views/alchemy/admin/essence_files/edit.html.erb +4 -4
  130. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +17 -18
  131. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +2 -2
  132. data/app/views/alchemy/admin/essence_pictures/update.js.erb +1 -0
  133. data/app/views/alchemy/admin/languages/_form.html.erb +12 -10
  134. data/app/views/alchemy/admin/languages/_language.html.erb +2 -1
  135. data/app/views/alchemy/admin/languages/_table.html.erb +3 -3
  136. data/app/views/alchemy/admin/languages/index.html.erb +15 -15
  137. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +6 -6
  138. data/app/views/alchemy/admin/layoutpages/index.html.erb +41 -40
  139. data/app/views/alchemy/admin/pages/_contactform_links.html.erb +4 -4
  140. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +6 -6
  141. data/app/views/alchemy/admin/pages/_external_link.html.erb +2 -2
  142. data/app/views/alchemy/admin/pages/_file_link.html.erb +3 -3
  143. data/app/views/alchemy/admin/pages/_internal_link.html.erb +1 -1
  144. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +1 -1
  145. data/app/views/alchemy/admin/pages/_page.html.erb +13 -13
  146. data/app/views/alchemy/admin/pages/_page_for_links.html.erb +2 -4
  147. data/app/views/alchemy/admin/pages/_sitemap.html.erb +5 -0
  148. data/app/views/alchemy/admin/pages/configure.html.erb +7 -7
  149. data/app/views/alchemy/admin/pages/configure_external.html.erb +4 -4
  150. data/app/views/alchemy/admin/pages/edit.html.erb +23 -30
  151. data/app/views/alchemy/admin/pages/index.html.erb +34 -23
  152. data/app/views/alchemy/admin/pages/new.html.erb +1 -1
  153. data/app/views/alchemy/admin/pages/sort.js.erb +1 -1
  154. data/app/views/alchemy/admin/partials/_flash_upload.html.erb +2 -3
  155. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +2 -2
  156. data/app/views/alchemy/admin/partials/_search_form.html.erb +3 -3
  157. data/app/views/alchemy/admin/partials/_upload_form.html.erb +2 -2
  158. data/app/views/alchemy/admin/pictures/_archive.html.erb +7 -7
  159. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -1
  160. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +6 -6
  161. data/app/views/alchemy/admin/pictures/_filter_bar.html.erb +4 -4
  162. data/app/views/alchemy/admin/pictures/_overlay_picture_list.html.erb +1 -1
  163. data/app/views/alchemy/admin/pictures/_picture.html.erb +3 -8
  164. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +9 -14
  165. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +27 -25
  166. data/app/views/alchemy/admin/pictures/archive_overlay.js.erb +3 -1
  167. data/app/views/alchemy/admin/pictures/index.html.erb +49 -42
  168. data/app/views/alchemy/admin/pictures/new.html.erb +2 -2
  169. data/app/views/alchemy/admin/pictures/show.html.erb +11 -0
  170. data/app/views/alchemy/admin/resources/_boolean.html.erb +2 -2
  171. data/app/views/alchemy/admin/resources/_datetime.html.erb +2 -2
  172. data/app/views/alchemy/admin/resources/_form.html.erb +9 -8
  173. data/app/views/alchemy/admin/resources/_resource.html.erb +15 -21
  174. data/app/views/alchemy/admin/resources/_string.html.erb +2 -2
  175. data/app/views/alchemy/admin/resources/_table.html.erb +11 -13
  176. data/app/views/alchemy/admin/resources/_text.html.erb +2 -2
  177. data/app/views/alchemy/admin/resources/index.csv.erb +13 -0
  178. data/app/views/alchemy/admin/resources/index.html.erb +24 -15
  179. data/app/views/alchemy/admin/sites/index.html.erb +23 -0
  180. data/app/views/alchemy/admin/tags/_radio_tag.html.erb +1 -1
  181. data/app/views/alchemy/admin/tags/_tag.html.erb +2 -1
  182. data/app/views/alchemy/admin/tags/edit.html.erb +1 -1
  183. data/app/views/alchemy/admin/tags/index.html.erb +16 -11
  184. data/app/views/alchemy/admin/tags/new.html.erb +3 -3
  185. data/app/views/alchemy/admin/trash/clear.js.coffee +1 -1
  186. data/app/views/alchemy/admin/users/_table.html.erb +12 -5
  187. data/app/views/alchemy/admin/users/_user.html.erb +16 -16
  188. data/app/views/alchemy/admin/users/index.html.erb +28 -16
  189. data/app/views/alchemy/breadcrumb/_page.html.erb +15 -0
  190. data/app/views/alchemy/breadcrumb/_spacer.html.erb +1 -0
  191. data/app/views/alchemy/elements/_editor_not_found.html.erb +1 -1
  192. data/app/views/alchemy/essences/_essence_file_editor.html.erb +16 -16
  193. data/app/views/alchemy/essences/_essence_file_view.html.erb +8 -9
  194. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +3 -6
  195. data/app/views/alchemy/essences/_essence_picture_tools.html.erb +9 -8
  196. data/app/views/alchemy/essences/_essence_richtext_editor.html.erb +0 -5
  197. data/app/views/alchemy/essences/_linkable_essence_tools.html.erb +2 -2
  198. data/app/views/alchemy/navigation/_link.html.erb +7 -7
  199. data/app/views/alchemy/navigation/_renderer.html.erb +29 -36
  200. data/app/views/alchemy/notifications/admin_user_created.de.text.erb +5 -1
  201. data/app/views/alchemy/notifications/admin_user_created.en.text.erb +5 -1
  202. data/app/views/alchemy/notifications/registered_user_created.de.text.erb +13 -0
  203. data/app/views/alchemy/notifications/registered_user_created.en.text.erb +13 -0
  204. data/app/views/alchemy/search/_result.html.erb +4 -6
  205. data/app/views/alchemy/search/_results.html.erb +4 -5
  206. data/app/views/alchemy/user_sessions/leave.html.erb +1 -1
  207. data/app/views/alchemy/user_sessions/new.html.erb +2 -2
  208. data/app/views/kaminari/_first_page.html.erb +11 -0
  209. data/app/views/kaminari/_gap.html.erb +1 -1
  210. data/app/views/kaminari/_last_page.html.erb +11 -0
  211. data/app/views/kaminari/_next_page.html.erb +2 -2
  212. data/app/views/kaminari/_page.html.erb +1 -1
  213. data/app/views/kaminari/_paginator.html.erb +2 -0
  214. data/app/views/kaminari/_prev_page.html.erb +2 -2
  215. data/app/views/layouts/alchemy/admin.html.erb +4 -5
  216. data/config/alchemy/config.yml +8 -12
  217. data/config/authorization_rules.rb +4 -3
  218. data/config/initializers/dragonfly.rb +20 -12
  219. data/config/locales/alchemy.de.yml +20 -15
  220. data/config/locales/alchemy.en.yml +15 -10
  221. data/config/locales/devise.de.yml +1 -0
  222. data/config/routes.rb +3 -3
  223. data/{spec/dummy/db/migrate/20121118000000_alchemy_two_point_four.rb → db/migrate/20130214233001_alchemy_two_point_five.rb} +50 -36
  224. data/db/migrate/20130221200514_migrate_attachments_to_dragonfly.rb +21 -0
  225. data/db/migrate/20130312205327_change_alchemy_users_role_to_roles.rb +11 -0
  226. data/lib/alchemy/capistrano.rb +10 -8
  227. data/lib/alchemy/errors.rb +7 -0
  228. data/lib/alchemy/filetypes.rb +33 -0
  229. data/lib/alchemy/i18n.rb +9 -1
  230. data/lib/alchemy/name_conversions.rb +28 -0
  231. data/lib/alchemy/page_layout.rb +5 -3
  232. data/lib/alchemy/resource.rb +132 -29
  233. data/lib/alchemy/resources_helper.rb +81 -12
  234. data/lib/alchemy/upgrader.rb +14 -276
  235. data/lib/alchemy/version.rb +1 -1
  236. data/lib/alchemy_cms.rb +17 -2
  237. data/lib/rails/generators/alchemy/deploy_script/templates/deploy.rb.tt +1 -1
  238. data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +1 -1
  239. data/lib/tasks/alchemy/convert.rake +39 -0
  240. data/lib/tasks/alchemy/install.rake +4 -6
  241. data/lib/tasks/alchemy/upgrade.rake +18 -1
  242. data/spec/controllers/admin/clipboard_controller_spec.rb +4 -4
  243. data/spec/controllers/admin/elements_controller_spec.rb +23 -23
  244. data/spec/controllers/admin/pages_controller_spec.rb +15 -0
  245. data/spec/controllers/admin/resources_controller_spec.rb +1 -11
  246. data/spec/controllers/admin/trash_controller_spec.rb +9 -9
  247. data/spec/controllers/attachments_controller_spec.rb +3 -3
  248. data/spec/controllers/elements_controller_spec.rb +2 -2
  249. data/spec/controllers/pages_controller_spec.rb +160 -129
  250. data/spec/controllers/pictures_controller_spec.rb +2 -2
  251. data/spec/controllers/user_sessions_controller_spec.rb +3 -3
  252. data/spec/controllers/users_controller_spec.rb +2 -2
  253. data/spec/dummy/app/models/event.rb +2 -2
  254. data/spec/dummy/app/models/location.rb +4 -0
  255. data/spec/dummy/app/views/layouts/application.html.erb +6 -42
  256. data/spec/dummy/config/routes.rb +1 -1
  257. data/spec/dummy/db/migrate/20121026104128_create_events.rb +0 -1
  258. data/{db/migrate/20121118000000_alchemy_two_point_four.rb → spec/dummy/db/migrate/20130214233001_alchemy_two_point_five.rb} +50 -36
  259. data/spec/dummy/db/migrate/20130221200514_migrate_attachments_to_dragonfly.rb +21 -0
  260. data/spec/dummy/db/migrate/20130312205327_change_alchemy_users_role_to_roles.rb +11 -0
  261. data/spec/dummy/db/migrate/20130328101418_create_locations.rb +9 -0
  262. data/spec/dummy/db/schema.rb +15 -6
  263. data/spec/factories.rb +4 -4
  264. data/spec/{integration → features}/admin/link_overlay_spec.rb +0 -0
  265. data/spec/{integration → features}/admin/modules_integration_spec.rb +1 -1
  266. data/spec/{integration → features}/admin/pages_controller_spec.rb +9 -4
  267. data/spec/{integration → features}/admin/picture_library_integration_spec.rb +5 -5
  268. data/spec/{integration → features}/admin/resources_integration_spec.rb +1 -1
  269. data/spec/{integration → features}/navigation_spec.rb +0 -0
  270. data/spec/{integration → features}/pages_controller_spec.rb +42 -112
  271. data/spec/{integration → features}/picture_security_spec.rb +2 -2
  272. data/spec/{integration → features}/security_spec.rb +7 -7
  273. data/spec/{integration → features}/translation_integration_spec.rb +0 -0
  274. data/spec/helpers/admin/base_helper_spec.rb +0 -50
  275. data/spec/helpers/admin/tags_helper_spec.rb +53 -0
  276. data/spec/helpers/base_helper_spec.rb +19 -3
  277. data/spec/helpers/pages_helper_spec.rb +92 -44
  278. data/spec/{url_helpers_spec.rb → helpers/picture_url_helpers_spec.rb} +7 -7
  279. data/spec/helpers/url_helper_spec.rb +92 -72
  280. data/spec/{config_spec.rb → libraries/config_spec.rb} +0 -0
  281. data/spec/libraries/resource_spec.rb +215 -76
  282. data/spec/libraries/resources_helper_spec.rb +70 -28
  283. data/spec/models/attachment_spec.rb +75 -9
  284. data/spec/models/clipboard_spec.rb +1 -1
  285. data/spec/models/element_spec.rb +7 -0
  286. data/spec/models/page_spec.rb +144 -25
  287. data/spec/models/picture_spec.rb +5 -5
  288. data/spec/models/resource_spec.rb +47 -10
  289. data/spec/models/user_spec.rb +115 -3
  290. data/spec/{routing_spec.rb → routing/routing_spec.rb} +8 -20
  291. data/spec/spec_helper.rb +5 -6
  292. data/spec/support/alchemy/specs_helpers.rb +1 -1
  293. data/spec/support/ci/install_phantomjs +1 -1
  294. data/spec/support/image with spaces.png +0 -0
  295. data/vendor/assets/javascripts/jquery_plugins/jquery.Jcrop.min.js +18 -18
  296. data/vendor/assets/javascripts/jquery_plugins/{jquery.dialogextend.1_0_1.js → jquery.dialogextend.js} +25 -17
  297. data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo.min.js +7 -0
  298. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +7 -7
  299. data/vendor/assets/javascripts/keymage.min.js +6 -0
  300. data/vendor/assets/javascripts/spin.min.js +1 -0
  301. metadata +122 -124
  302. data/app/assets/images/alchemy/ajax_loader.gif +0 -0
  303. data/app/assets/images/alchemy/gui/toggle.png +0 -0
  304. data/app/assets/images/alchemy/image_loader.gif +0 -0
  305. data/app/assets/images/alchemy/shading.png +0 -0
  306. data/app/assets/images/alchemy/tabs.gif +0 -0
  307. data/app/assets/javascripts/alchemy/alchemy.base.js +0 -172
  308. data/app/assets/javascripts/alchemy/alchemy.datepicker.js +0 -47
  309. data/app/assets/javascripts/alchemy/alchemy.element_editor_selector.js +0 -91
  310. data/app/assets/javascripts/alchemy/alchemy.growler.js +0 -46
  311. data/app/assets/javascripts/alchemy/alchemy.image_cropper.js +0 -60
  312. data/app/assets/javascripts/alchemy/alchemy.js_extensions.js +0 -15
  313. data/app/assets/javascripts/alchemy/alchemy.preview_window.js +0 -97
  314. data/app/assets/javascripts/alchemy/alchemy.windows.js +0 -321
  315. data/app/models/alchemy/clipboard_spec.rb +0 -0
  316. data/app/views/alchemy/admin/pictures/show_in_window.html.erb +0 -8
  317. data/app/views/alchemy/notifications/registered_user_created.text.erb +0 -11
  318. data/db/migrate/20121121162313_switch_from_fleximage_to_dragonfly.rb +0 -21
  319. data/db/migrate/20121205155004_create_alchemy_sites.rb +0 -14
  320. data/db/migrate/20121211163003_add_public_to_alchemy_sites.rb +0 -6
  321. data/db/migrate/20121220102223_add_aliases_to_site.rb +0 -6
  322. data/db/migrate/20130110212411_create_alchemy_legacy_page_urls.rb +0 -11
  323. data/db/migrate/20130121092645_migrate_to_devise.rb +0 -24
  324. data/spec/alchemy_spec.rb +0 -7
  325. data/spec/dummy/db/migrate/20121121162313_switch_from_fleximage_to_dragonfly.rb +0 -21
  326. data/spec/dummy/db/migrate/20121205155004_create_alchemy_sites.rb +0 -14
  327. data/spec/dummy/db/migrate/20121211163003_add_public_to_alchemy_sites.rb +0 -6
  328. data/spec/dummy/db/migrate/20121220102223_add_aliases_to_site.rb +0 -6
  329. data/spec/dummy/db/migrate/20130110212411_create_alchemy_legacy_page_urls.rb +0 -11
  330. data/spec/dummy/db/migrate/20130121092645_migrate_to_devise.rb +0 -24
  331. data/vendor/assets/javascripts/jquery_plugins/jquery.scrollTo-1.4.2-min.js +0 -11
@@ -1,20 +1,20 @@
1
- <% if page.redirects_to_external? -%>
1
+ <% if page.redirects_to_external? %>
2
2
  <%= link_to(
3
3
  h(page.name),
4
4
  page.urlname,
5
5
  :title => options[:show_title] == true ? page.title : nil,
6
6
  :target => configuration(:open_external_links_in_new_tab) ? '_blank' : nil,
7
7
  :class => external_page_css_class(page)
8
- ) -%>
9
- <% else -%>
8
+ ) %>
9
+ <% else %>
10
10
  <%= link_to(
11
11
  h(page.name),
12
- @preview_mode ? 'javascript:void(0)' : show_alchemy_page_path(page),
12
+ @preview_mode ? 'javascript: void(0)' : show_alchemy_page_path(page),
13
13
  {
14
14
  :class => (page_active?(page) ? 'active' : nil),
15
15
  :title => (options[:show_title] ? page.title : nil),
16
16
  :lang => page.language_code,
17
- 'data-page-id' => page.id
17
+ :data => {'page-id' => page.id}
18
18
  }
19
- ) -%>
20
- <% end -%>
19
+ ) %>
20
+ <% end %>
@@ -1,37 +1,30 @@
1
- <% unless pages.blank? -%>
2
- <%= content_tag(
3
- 'ul',
4
- :class => html_options[:class] || "navigation level_#{pages.first.level - 1}",
5
- :id => html_options[:id]
6
- ) do %>
7
- <% pages.each do |page| -%>
8
- <% position = 'first' if page == pages.to_a.first -%>
9
- <% position = 'last' if page == pages.to_a.last -%>
10
- <%= content_tag(
11
- 'li',
12
- :class => [page.urlname, position, page_active?(page) ? 'active' : nil].compact.join(' ')
13
- ) do %>
14
- <%= render(
15
- :partial => options[:navigation_link_partial],
16
- :object => page,
17
- :locals => {
18
- :page => page,
19
- :options => options
20
- }
21
- ) -%>
22
- <% options[:from_page] = page -%>
23
- <% if options[:reverse_children] -%>
24
- <%- options[:reverse] = true -%>
25
- <% end -%>
26
- <% if options[:show_nonactive] -%>
27
- <%= render_navigation(options) if options[:submenu] -%>
28
- <% else -%>
29
- <%= render_navigation(options) if (options[:submenu] && page_active?(page)) || options[:all_sub_menues] -%>
30
- <% end -%>
31
- <% end -%>
32
- <% unless options[:spacer].empty? -%>
33
- <%= raw "<li class=\"navigation_spacer\">#{options[:spacer]}</li>" unless page == pages.to_a.last -%>
34
- <% end -%>
35
- <% end -%>
1
+ <% if pages.present? %>
2
+ <%= content_tag(
3
+ 'ul',
4
+ :class => html_options[:class] || "navigation level_#{pages.first.level - 1}",
5
+ :id => html_options[:id]
6
+ ) do %>
7
+ <% pages.each do |page| %>
8
+ <% position = 'first' if page == pages.first %>
9
+ <% position = 'last' if page == pages.last %>
10
+ <%= content_tag(
11
+ 'li',
12
+ :class => [page.slug, position, page_active?(page) ? 'active' : nil].compact.join(' ')
13
+ ) do %>
14
+ <%= render options[:navigation_link_partial], :page => page, :options => options %>
15
+ <% options[:from_page] = page %>
16
+ <% if options[:reverse_children] %>
17
+ <% options[:reverse] = true %>
18
+ <% end %>
19
+ <% if options[:show_nonactive] %>
20
+ <%= render_navigation(options) if options[:submenu] %>
21
+ <% else %>
22
+ <%= render_navigation(options) if (options[:submenu] && page_active?(page)) || options[:all_sub_menues] %>
23
+ <% end %>
24
+ <% end %>
25
+ <% if options[:spacer].present? && position != 'last' %>
26
+ <%= content_tag :li, options[:spacer].html_safe, class: 'navigation_spacer' %>
27
+ <% end %>
36
28
  <% end %>
37
- <% end -%>
29
+ <% end %>
30
+ <% end %>
@@ -6,6 +6,10 @@ Um die Inhalte Ihrer Webseite zu bearbeiten klicken Sie bitte auf folgenden Link
6
6
 
7
7
  Ihr Benutzername lautet: <%= @user.login %>
8
8
 
9
- (Aus Sicherheitsgründen stellen wir Ihr Passwort hier nicht da. Wenn Sie Ihr Passwort vergessen haben oder dies Ihr erster Login ist, gehen Sie bitte auf: <%= new_password_url(@user) %>)
9
+ Aus Sicherheitsgründen stellen wir Ihr Passwort hier nicht dar.
10
+
11
+ Wenn Sie Ihr Passwort vergessen haben oder dies Ihr erster Login ist, gehen Sie bitte auf:
12
+
13
+ <%= alchemy.new_password_url %>
10
14
 
11
15
  Viel Spaß mit Alchemy!
@@ -6,6 +6,10 @@ To manage your website open a browser and go to:
6
6
 
7
7
  Your username is: <%= @user.login %>
8
8
 
9
- (For security reasons we do not show your password here. If you forgot your password or this is your first login, please goto: <%= new_password_url(@user) %>)
9
+ For security reasons we do not show your password here.
10
+
11
+ If you forgot your password or this is your first login, please goto:
12
+
13
+ <%= alchemy.new_password_url %>
10
14
 
11
15
  Have much fun with Alchemy!
@@ -0,0 +1,13 @@
1
+ Hallo <%= @user.name %>!
2
+
3
+ Ihnen wurde ein Benutzerkonto eingerichtet.
4
+
5
+ Ihr Benutzername lautet: <%= @user.login %>
6
+
7
+ Es wurde ein Zufallspasswort generiert. Aus Sicherheitsgründen wird dieses hier aber nicht angezeigt.
8
+
9
+ Klicken Sie bitte daher auf den folgenden Link (*), um sich ein neues Passwort zu vergeben:
10
+
11
+ <%= alchemy.new_password_url(@user, email: @user.email) %>
12
+
13
+ *) Sollte dies nicht funktionieren, so kopieren Sie Sich bitte diesen Link und tragen Sie ihn in die Adresszeile Ihres Webbrowsers ein.
@@ -0,0 +1,13 @@
1
+ Greetings <%= @user.name %>!
2
+
3
+ A login was created for you.
4
+
5
+ Your username is: <%= @user.login %>
6
+
7
+ The password was randomly created. For security reasons it is not displayed here.
8
+
9
+ Please follow this link (*) to reset your password:
10
+
11
+ <%= alchemy.new_password_url(@user, email: @user.email) %>
12
+
13
+ *) If this does not work, please copy the url and paste it into the address bar of your web browser.
@@ -1,9 +1,7 @@
1
1
  <li class="search_result">
2
- <h3>
3
- <%= _t('search_result_page.result_page') %>:
4
- <%= link_to page.name, show_alchemy_page_path(page) %>
5
- </h3>
6
- <%- result.each do |highlight| -%>
2
+ <h3><%= page.name %></h3>
3
+ <% result.each do |highlight| %>
7
4
  <p><%= sanitize highlight.force_encoding('UTF-8') %></p>
8
- <%- end -%>
5
+ <% end %>
6
+ <p><%= link_to page.urlname, show_alchemy_page_path(page) %></p>
9
7
  </li>
@@ -16,12 +16,11 @@
16
16
  <% end %>
17
17
  <ul class="search_result_list">
18
18
  <% @search_results.each do |search_result| %>
19
- <% result = search_result.highlight(
20
- "*#{params[:query]}*", {
21
- :field => (search_result.class.name == "Alchemy::EssenceRichtext" ? :stripped_body : :body)
22
- }
19
+ <%= render('alchemy/search/result',
20
+ result: search_result.highlight("*#{params[:query]}*"),
21
+ options: options,
22
+ page: search_result.page
23
23
  ) %>
24
- <%= render 'alchemy/search/result', :result => result, :options => options, :page => search_result.page %>
25
24
  <% end %>
26
25
  </ul>
27
26
  <% end %>
@@ -6,6 +6,6 @@
6
6
  </p>
7
7
  <%= form_tag alchemy.logout_path, :method => :delete, :class => 'buttons' do %>
8
8
  <label><%= _t('or to completly') %></label>
9
- <%= button _t('logout') %>
9
+ <%= button _t(:logout) %>
10
10
  <% end %>
11
11
  </div>
@@ -21,14 +21,14 @@
21
21
  <td class="input">
22
22
  <%= f.password_field :password, :class => 'thin_border' %>
23
23
  <p class="foot_note">
24
- <%= link_to _t('Forgot your password?'), new_password_path(@user) %>
24
+ <%= link_to _t('Forgot your password?'), new_password_path %>
25
25
  </p>
26
26
  </td>
27
27
  </tr>
28
28
  <tr>
29
29
  <td colspan="2" class="submit">
30
30
  <%= hidden_field_tag 'user_screensize' %>
31
- <%= f.button _t('login'), :class => 'button', :name => nil %>
31
+ <%= f.button _t(:login), :class => 'button', :name => nil %>
32
32
  </td>
33
33
  </tr>
34
34
  </table>
@@ -0,0 +1,11 @@
1
+ <%# Link to the "First" page
2
+ - available local variables
3
+ url: url to the first page
4
+ current_page: a page object for the currently displayed page
5
+ num_pages: total number of pages
6
+ per_page: number of items to fetch per page
7
+ remote: data-remote
8
+ -%>
9
+ <span class="first">
10
+ <%= link_to_unless current_page.first?, '&laquo;'.html_safe, url, :remote => remote, :title => t('views.pagination.first'), :class => 'button' %>
11
+ </span>
@@ -5,4 +5,4 @@
5
5
  per_page: number of items to fetch per page
6
6
  remote: data-remote
7
7
  -%>
8
- <span class="page gap"><%= raw(_t 'pagination.truncate') -%></span>
8
+ <span class="page gap">&hellip;</span>
@@ -0,0 +1,11 @@
1
+ <%# Link to the "Last" page
2
+ - available local variables
3
+ url: url to the last page
4
+ current_page: a page object for the currently displayed page
5
+ num_pages: total number of pages
6
+ per_page: number of items to fetch per page
7
+ remote: data-remote
8
+ -%>
9
+ <span class="last">
10
+ <%= link_to_unless current_page.last?, '&raquo;'.html_safe, url, {:remote => remote, :title => t('views.pagination.last'), :class => 'button'} %>
11
+ </span>
@@ -7,7 +7,7 @@
7
7
  remote: data-remote
8
8
  -%>
9
9
  <% if current_page.last? -%>
10
- <span class="next_page disabled"><%= raw(_t 'pagination.next_page') -%></span>
10
+ <span class="next_page disabled">&rsaquo;</span>
11
11
  <% else -%>
12
- <%= link_to raw(_t 'pagination.next_page'), url, :rel => 'next', :remote => remote -%>
12
+ <%= link_to '&rsaquo;'.html_safe, url, :rel => 'next', :remote => remote, :title => t('views.pagination.next_page'), :class => "next_page button" -%>
13
13
  <% end -%>
@@ -10,5 +10,5 @@
10
10
  <% if page.current? -%>
11
11
  <span class="page current"><%= page -%></span>
12
12
  <% else -%>
13
- <%= link_to page, url, opts = {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil} -%>
13
+ <%= link_to page, url, opts = {:remote => remote, :rel => page.next? ? 'next' : page.prev? ? 'prev' : nil, :class => 'button'} -%>
14
14
  <% end -%>
@@ -8,6 +8,7 @@
8
8
  -%>
9
9
  <%= paginator.render do -%>
10
10
  <div class="pagination">
11
+ <%= first_page_tag %>
11
12
  <%= prev_page_tag -%>
12
13
  <% each_page do |page| -%>
13
14
  <% if page.left_outer? || page.right_outer? || page.inside_window? -%>
@@ -17,5 +18,6 @@
17
18
  <% end -%>
18
19
  <% end -%>
19
20
  <%= next_page_tag -%>
21
+ <%= last_page_tag %>
20
22
  </div>
21
23
  <% end -%>
@@ -7,7 +7,7 @@
7
7
  remote: data-remote
8
8
  -%>
9
9
  <% if current_page.first? -%>
10
- <span class="previous_page disabled"><%= raw(_t 'pagination.previous_page') %></span>
10
+ <span class="previous_page disabled">&lsaquo;</span>
11
11
  <% else -%>
12
- <%= link_to raw(_t 'pagination.previous_page'), url, :rel => 'prev', :remote => remote, :class => 'previous_page' -%>
12
+ <%= link_to '&lsaquo;'.html_safe, url, :rel => 'prev', :remote => remote, :class => 'previous_page button', :title => t('views.pagination.previous_page') -%>
13
13
  <% end -%>
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html class="no-js">
3
3
  <head>
4
- <meta charset="UTF-8">
4
+ <meta charset="utf-8">
5
5
  <title><%= render_alchemy_title %></title>
6
6
  <%= csrf_meta_tag %>
7
7
  <meta name="robots" content="noindex">
@@ -32,8 +32,7 @@
32
32
  </noscript>
33
33
  <div id="overlay">
34
34
  <div id="overlay_text_box">
35
- <%= image_tag('alchemy/ajax_loader.gif', :id => 'ajax_loader') %>
36
- <span id="overlay_text"><%= _t("please_wait") %></span>
35
+ <span id="overlay_text"><%= _t(:please_wait) %></span>
37
36
  </div>
38
37
  </div>
39
38
  <div id="left_menu">
@@ -44,7 +43,7 @@
44
43
  <div id="logout">
45
44
  <% if current_user %>
46
45
  <%= link_to_overlay_window(
47
- "<span class='module icon exit'></span><label>#{_t('leave')}</label>".html_safe,
46
+ "<span class='module icon exit'></span><label>#{_t(:leave)}</label>".html_safe,
48
47
  alchemy.leave_admin_path, {
49
48
  :size => "300x105",
50
49
  :title => _t("Leave Alchemy")
@@ -52,7 +51,7 @@
52
51
  <% else %>
53
52
  <%= link_to(alchemy.root_path) do %>
54
53
  <span class="module icon exit"></span>
55
- <label><%= _t('leave') %></label>
54
+ <label><%= _t(:leave) %></label>
56
55
  <% end %>
57
56
  <% end %>
58
57
  </div>
@@ -60,31 +60,27 @@ sitemap:
60
60
 
61
61
  # === URL nesting
62
62
  #
63
- # By default Alchemy does not nest page urls respectivley to their page tree position.
63
+ # Since Alchemy 2.6.0 page urls are nested, respectivley to their tree position.
64
64
  #
65
- # Enable +url_nesting+ to get nested urls.
65
+ # Disable +url_nesting+ to get slug only urls.
66
66
  #
67
- # ==== Example of a nested url:
67
+ # NOTE: After changing the url_nesting, you should run one of these convert rake task:
68
68
  #
69
- # +http://homepage.com/company/history/the-early-years+
69
+ # rake alchemy:convert:urlnames:to_nested
70
+ # rake alchemy:convert:urlnames:to_slug
70
71
  #
71
- # Alchemy supports url nesting up to three levels deep. We think that's more then enough,
72
- # because URLs like this are possible:
73
- #
74
- # +http://homepage.com/en/2011/12/08/my-post
75
- #
76
- url_nesting: false
72
+ url_nesting: true
77
73
 
78
74
  # === Picture rendering settings
79
75
  #
80
- # Alchemy uses Dragonfly and RMagick to render images. Use {:image_size => "XXXxYYY", :crop => BOOLEAN [true]} to resize images.
76
+ # Alchemy uses Dragonfly to render images. Use {:image_size => "XXXxYYY", :crop => BOOLEAN [true]} to resize images.
81
77
  #
82
78
  # See http://markevans.github.com/dragonfly for further infos.
83
79
  #
84
80
  # ==== Options:
85
81
  #
86
82
  # output_image_jpg_quality [Integer] # If image gets rendered as JPG this is the quality setting for it. (Default 85)
87
- # preprocess_image_resize [String] # I.E.: 1000x1000. If you are limited on diskspace use this option to downsize large images to that value. (Default nil)
83
+ # preprocess_image_resize [String] # Use this option to resize images to that value. Downsizing example: '1000x1000>' (Default nil)
88
84
  # image_output_format [String] # The global image output format setting.
89
85
  #
90
86
  # TIP: You can always override the output format in the options of your Essence. I.E. {:format => :gif}
@@ -18,7 +18,8 @@ authorization do
18
18
  role :registered do
19
19
  includes :guest
20
20
  has_permission_on :alchemy_pages, :to => [:show] do
21
- if_attribute :public => true
21
+ if_attribute :public => true, :restricted => true
22
+ if_attribute :public => true, :restricted => false
22
23
  end
23
24
  has_permission_on :alchemy_elements, :to => [:show] do
24
25
  if_attribute :public => true
@@ -36,7 +37,7 @@ authorization do
36
37
  has_permission_on :alchemy_pictures, :to => [:thumbnail]
37
38
  has_permission_on :alchemy_admin_pages, :to => [:index, :fold, :edit_page_content, :link]
38
39
  has_permission_on :alchemy_admin_elements, :to => [:manage_elements]
39
- has_permission_on :alchemy_admin_pictures, :to => [:index, :archive_overlay, :show_in_window, :info]
40
+ has_permission_on :alchemy_admin_pictures, :to => [:read, :archive_overlay, :info]
40
41
  has_permission_on :alchemy_admin_attachments, :to => [:index, :archive_overlay, :show, :download]
41
42
  has_permission_on :alchemy_admin_contents, :to => [:manage_contents]
42
43
  has_permission_on :alchemy_admin_essence_pictures, :to => [:manage_picture_essences]
@@ -60,7 +61,7 @@ authorization do
60
61
 
61
62
  role :admin do
62
63
  includes :editor
63
- has_permission_on :alchemy_admin_users, :to => [:manage, :update_role]
64
+ has_permission_on :alchemy_admin_users, :to => [:manage, :update_roles]
64
65
  has_permission_on :alchemy_admin_languages, :to => [:manage]
65
66
  has_permission_on :authorization_rules, :to => :read
66
67
  has_permission_on :alchemy_admin_sites, :to => [:manage]
@@ -1,20 +1,28 @@
1
1
  # Alchemy CMS Dragonfly configuration.
2
- app = Dragonfly[:alchemy_pictures]
3
2
 
4
- app.configure_with :imagemagick
5
- app.configure_with :rails
6
- app.define_macro ActiveRecord::Base, :image_accessor
7
-
8
- app.configure do |c|
9
-
10
- c.datastore.configure do |d|
11
- d.root_path = Rails.root.join('uploads/pictures').to_s
12
- d.store_meta = false
3
+ # Pictures
4
+ pictures = Dragonfly[:alchemy_pictures]
5
+ pictures.configure_with :imagemagick
6
+ pictures.configure_with :rails
7
+ pictures.define_macro ActiveRecord::Base, :image_accessor
8
+ pictures.configure do |config|
9
+ config.datastore.configure do |store|
10
+ store.root_path = Rails.root.join('uploads/pictures').to_s
11
+ store.store_meta = false
13
12
  end
14
-
15
13
  # You only need this if you use Dragonfly url helpers, what you not need to ;)
16
14
  # If you use the Dragonfly url helpers and you have a different mountpoint for Alchemy,
17
15
  # you have to alter this to include the mountpoint.
18
- c.url_format = '/pictures/:job/:basename.:format'
16
+ config.url_format = '/pictures/:job/:basename.:format'
17
+ end
19
18
 
19
+ # Attachments
20
+ attachments = Dragonfly[:alchemy_attachments]
21
+ attachments.configure_with :rails
22
+ attachments.define_macro ActiveRecord::Base, :file_accessor
23
+ attachments.configure do |config|
24
+ config.datastore.configure do |store|
25
+ store.root_path = Rails.root.join('uploads/attachments').to_s
26
+ store.store_meta = false
27
+ end
20
28
  end
@@ -134,12 +134,7 @@ de:
134
134
  mailer:
135
135
  # The mail the user gets after registering for alchemy
136
136
  new_user_mail:
137
- subject: 'Ihre Zugangsdaten zu meiner Seite'
138
- welcome: 'Willkommen auf meiner Seite'
139
- login_url_explanation: 'Zum Anmelden klicken Sie bitte auf folgenden Link'
140
- username: 'Ihr Benutzername lautet:'
141
- password_notice: "(Aus Sicherheitsgründen stellen wir Ihr Passwort hier nicht da. Wenn Sie Ihr Passwort vergessen haben oder dies Ihr erster Login ist, gehen Sie bitte auf: %{url})"
142
- greeting: 'Einen schönen Tag noch'
137
+ subject: 'Ihre Zugangsdaten'
143
138
 
144
139
  # == Translated language names for translation select
145
140
  translations:
@@ -222,7 +217,7 @@ de:
222
217
  "Error with the Flash® Uploader!": "Fehler mit dem Flash® Uploader!"
223
218
  "Excerpt": "Auszug"
224
219
  "File %{name} uploaded succesfully": "Datei %{name} wurde hochgeladen"
225
- "File renamed successfully from: '%{from}' to '%{to}'": "Datei wurde erfolgreich von: '%{from}' nach '%{to}' umbenannt."
220
+ "File successfully updated": "Datei wurde erfolgreich gespeichert."
226
221
  "File upload error: %{error}": "Datei konnte nicht hochgeladen werden: %{error}"
227
222
  "File: '%{name}' deleted successfully": "%{name} wurde gelöscht"
228
223
  "Filter by tag": "Nach Tags filtern"
@@ -395,6 +390,7 @@ de:
395
390
  delete_user: "Benutzer löschen"
396
391
  document: "Dokument"
397
392
  documents: "Dateien"
393
+ download_csv: "CSV runterladen"
398
394
  download_file: "%{filename} runterladen"
399
395
  do_you_really_want_to_delete_this_tag?: "Wollen Sie dieses Tag wirklich löschen?"
400
396
  drag_to_sort: "Mit der Maus halten und verschieben"
@@ -519,10 +515,6 @@ de:
519
515
  pages:
520
516
  update:
521
517
  comma_seperated: "Durch Kommata getrennt eingeben"
522
- pagination:
523
- next_page: "nächste Seite &raquo;"
524
- previous_page: "&laquo; vorherige Seite"
525
- truncate: '...'
526
518
  password: "Passwort"
527
519
  paste: "einfügen"
528
520
  picture_gallery_editor: 'Bilder'
@@ -550,6 +542,9 @@ de:
550
542
  rename: umbenennen
551
543
  replace: ersetzen
552
544
  'Replaced Tag %{old_tag} with %{new_tag}': "Das Tag '%{old_tag}' wurde durch das Tag '%{new_tag}' ersetzt"
545
+ resources:
546
+ relation_select:
547
+ blank: '- ohne -'
553
548
  right: "rechts"
554
549
  robot_follow: "den Robot Links folgen lassen"
555
550
  robot_index: "durch Robot indizieren"
@@ -825,6 +820,9 @@ de:
825
820
  activerecord:
826
821
 
827
822
  models:
823
+ acts_as_taggable_on/tag:
824
+ one: Tag
825
+ other: Tags
828
826
 
829
827
  alchemy/attachment:
830
828
  one: "Datei"
@@ -861,11 +859,11 @@ de:
861
859
  taggings_count: Anzahl Verwendung
862
860
 
863
861
  alchemy/attachment:
864
- content_type: "Dateityp"
862
+ file_mime_type: "Dateityp"
865
863
  created_at: "Erstellt Am"
866
- filename: "Dateiname"
864
+ file_name: "Dateiname"
867
865
  name: "Name"
868
- size: "Dateigröße"
866
+ file_size: "Dateigröße"
869
867
  tag_list: Tags
870
868
 
871
869
  alchemy/element:
@@ -940,7 +938,7 @@ de:
940
938
  name: "Name"
941
939
  password: "Passwort"
942
940
  password_confirmation: "Passwort Bestätigung"
943
- role: "Benutzerrolle"
941
+ roles: "Benutzerrollen"
944
942
  tag_list: Tags
945
943
 
946
944
  alchemy/site:
@@ -952,3 +950,10 @@ de:
952
950
 
953
951
  errors:
954
952
  <<: *errors
953
+
954
+ views:
955
+ pagination:
956
+ first: "erste Seite"
957
+ previous_page: "vorherige Seite"
958
+ next_page: "nächste Seite"
959
+ last: "letzte Seite"