alchemy_cms 3.0.4 → 3.1.0.beta1

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 (210) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -6
  3. data/Gemfile +4 -7
  4. data/README.md +207 -115
  5. data/alchemy_cms.gemspec +10 -9
  6. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js.coffee +2 -2
  7. data/app/assets/javascripts/alchemy/alchemy.image_cropper.js.coffee +2 -2
  8. data/app/assets/javascripts/alchemy/alchemy.js +6 -7
  9. data/app/assets/javascripts/alchemy/alchemy.translations.js.coffee +1 -43
  10. data/app/assets/javascripts/alchemy/alchemy.uploader.js.coffee +1 -1
  11. data/app/assets/stylesheets/alchemy/_mixins.scss +2 -1
  12. data/app/assets/stylesheets/alchemy/buttons.scss +0 -5
  13. data/app/assets/stylesheets/alchemy/dialogs.scss +1 -0
  14. data/app/assets/stylesheets/alchemy/frame.scss +9 -12
  15. data/app/assets/stylesheets/tinymce/skins/alchemy/content.min.css.scss +11 -2
  16. data/app/assets/stylesheets/tinymce/skins/alchemy/skin.min.css.scss +9 -1
  17. data/app/controllers/alchemy/admin/attachments_controller.rb +2 -4
  18. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +34 -38
  19. data/app/controllers/alchemy/api/base_controller.rb +19 -0
  20. data/app/controllers/alchemy/api/contents_controller.rb +35 -0
  21. data/app/controllers/alchemy/api/elements_controller.rb +29 -0
  22. data/app/controllers/alchemy/api/pages_controller.rb +32 -0
  23. data/app/controllers/alchemy/contents_controller.rb +1 -0
  24. data/app/controllers/alchemy/elements_controller.rb +5 -2
  25. data/app/controllers/alchemy/pages_controller.rb +4 -1
  26. data/app/controllers/alchemy/pictures_controller.rb +4 -36
  27. data/app/helpers/alchemy/admin/essences_helper.rb +5 -2
  28. data/app/helpers/alchemy/essences_helper.rb +14 -1
  29. data/app/models/alchemy/content.rb +32 -4
  30. data/app/models/alchemy/element.rb +2 -16
  31. data/app/models/alchemy/element/presenters.rb +2 -2
  32. data/app/models/alchemy/essence_file.rb +5 -0
  33. data/app/models/alchemy/essence_picture.rb +12 -8
  34. data/app/models/alchemy/picture.rb +1 -74
  35. data/app/models/alchemy/picture/transformations.rb +249 -0
  36. data/app/serializers/alchemy/content_serializer.rb +3 -10
  37. data/app/serializers/alchemy/element_serializer.rb +6 -3
  38. data/app/serializers/alchemy/legacy_element_serializer.rb +17 -0
  39. data/app/views/alchemy/admin/dashboard/_sites.html.erb +14 -4
  40. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +8 -5
  41. data/app/views/alchemy/admin/pages/edit.html.erb +9 -9
  42. data/app/views/alchemy/admin/pictures/info.html.erb +2 -3
  43. data/app/views/alchemy/admin/tags/edit.html.erb +1 -1
  44. data/app/views/alchemy/essences/_essence_boolean_editor.html.erb +8 -7
  45. data/app/views/alchemy/essences/_essence_boolean_view.html.erb +3 -3
  46. data/app/views/alchemy/essences/_essence_date_editor.html.erb +8 -2
  47. data/app/views/alchemy/essences/_essence_date_view.html.erb +10 -8
  48. data/app/views/alchemy/essences/_essence_file_editor.html.erb +48 -53
  49. data/app/views/alchemy/essences/_essence_file_view.html.erb +5 -5
  50. data/app/views/alchemy/essences/_essence_html_editor.html.erb +5 -4
  51. data/app/views/alchemy/essences/_essence_link_editor.html.erb +17 -15
  52. data/app/views/alchemy/essences/_essence_link_view.html.erb +11 -7
  53. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +4 -2
  54. data/app/views/alchemy/essences/_essence_picture_view.html.erb +4 -2
  55. data/app/views/alchemy/essences/_essence_richtext_view.html.erb +5 -4
  56. data/app/views/alchemy/essences/_essence_select_editor.html.erb +22 -32
  57. data/app/views/alchemy/essences/_essence_text_view.html.erb +7 -6
  58. data/app/views/alchemy/essences/shared/_essence_picture_tools.html.erb +1 -1
  59. data/app/views/layouts/alchemy/admin.html.erb +5 -3
  60. data/config/initializers/inflections.rb +3 -0
  61. data/config/initializers/simple_form.rb +1 -1
  62. data/config/locales/alchemy.en.yml +0 -1
  63. data/config/routes.rb +14 -0
  64. data/lib/alchemy/capistrano.rb +71 -0
  65. data/lib/alchemy/engine.rb +0 -3
  66. data/lib/alchemy/essence.rb +1 -1
  67. data/lib/alchemy/permissions.rb +19 -5
  68. data/lib/alchemy/picture_attributes.rb +1 -1
  69. data/lib/alchemy/test_support/auth_helpers.rb +1 -1
  70. data/lib/alchemy/test_support/essence_shared_examples.rb +37 -22
  71. data/lib/alchemy/test_support/integration_helpers.rb +1 -1
  72. data/lib/alchemy/tinymce.rb +21 -4
  73. data/lib/alchemy/upgrader/three_point_one.rb +43 -0
  74. data/lib/alchemy/upgrader/three_point_zero.rb +13 -0
  75. data/lib/alchemy/version.rb +2 -1
  76. data/lib/rails/generators/alchemy/module/module_generator.rb +30 -0
  77. data/lib/rails/generators/alchemy/module/templates/ability.rb.tt +11 -0
  78. data/lib/rails/generators/alchemy/module/templates/controller.rb.tt +2 -0
  79. data/lib/rails/generators/alchemy/module/templates/module_config.rb.tt +15 -0
  80. data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +0 -1
  81. data/lib/rails/templates/alchemy.rb +2 -2
  82. data/lib/tasks/alchemy/db.rake +7 -1
  83. data/spec/controllers/admin/attachments_controller_spec.rb +38 -38
  84. data/spec/controllers/admin/base_controller_spec.rb +18 -18
  85. data/spec/controllers/admin/clipboard_controller_spec.rb +23 -18
  86. data/spec/controllers/admin/contents_controller_spec.rb +33 -27
  87. data/spec/controllers/admin/dashboard_controller_spec.rb +14 -14
  88. data/spec/controllers/admin/elements_controller_spec.rb +125 -105
  89. data/spec/controllers/admin/essence_files_controller_spec.rb +6 -7
  90. data/spec/controllers/admin/essence_pictures_controller_spec.rb +52 -42
  91. data/spec/controllers/admin/languages_controller_spec.rb +3 -3
  92. data/spec/controllers/admin/pages_controller_spec.rb +81 -71
  93. data/spec/controllers/admin/pictures_controller_spec.rb +69 -72
  94. data/spec/controllers/admin/resources_controller_spec.rb +5 -5
  95. data/spec/controllers/admin/trash_controller_spec.rb +15 -12
  96. data/spec/controllers/alchemy/admin/tags_controller_spec.rb +8 -8
  97. data/spec/controllers/alchemy/api/contents_controller_spec.rb +73 -0
  98. data/spec/controllers/alchemy/api/elements_controller_spec.rb +69 -0
  99. data/spec/controllers/alchemy/api/pages_controller_spec.rb +86 -0
  100. data/spec/controllers/attachments_controller_spec.rb +8 -8
  101. data/spec/controllers/contents_controller_spec.rb +22 -0
  102. data/spec/controllers/elements_controller_spec.rb +10 -4
  103. data/spec/controllers/messages_controller_spec.rb +35 -34
  104. data/spec/controllers/pages_controller_spec.rb +37 -28
  105. data/spec/controllers/pictures_controller_spec.rb +90 -23
  106. data/spec/dummy/app/models/dummy_user.rb +0 -4
  107. data/spec/dummy/app/views/alchemy/elements/_all_you_can_eat_editor.html.erb +11 -0
  108. data/spec/dummy/config/alchemy/elements.yml +22 -1
  109. data/spec/dummy/config/alchemy/page_layouts.yml +4 -0
  110. data/spec/dummy/config/application.rb +2 -1
  111. data/spec/dummy/config/environments/test.rb +3 -1
  112. data/spec/features/admin/dashboard_spec.rb +41 -6
  113. data/spec/features/admin/language_tree_feature_spec.rb +3 -3
  114. data/spec/features/admin/legacy_page_url_management_spec.rb +1 -1
  115. data/spec/features/admin/link_overlay_spec.rb +7 -7
  116. data/spec/features/admin/locale_select_feature_spec.rb +5 -2
  117. data/spec/features/admin/modules_integration_spec.rb +1 -1
  118. data/spec/features/admin/page_creation_feature_spec.rb +3 -2
  119. data/spec/features/admin/page_editing_feature_spec.rb +66 -79
  120. data/spec/features/admin/picture_library_integration_spec.rb +8 -8
  121. data/spec/features/admin/resources_integration_spec.rb +21 -21
  122. data/spec/features/admin/tinymce_feature_spec.rb +36 -0
  123. data/spec/features/navigation_spec.rb +1 -1
  124. data/spec/features/page_feature_spec.rb +34 -34
  125. data/spec/features/picture_security_spec.rb +4 -4
  126. data/spec/features/security_spec.rb +1 -1
  127. data/spec/features/translation_integration_spec.rb +7 -7
  128. data/spec/helpers/admin/base_helper_spec.rb +51 -49
  129. data/spec/helpers/admin/contents_helper_spec.rb +11 -11
  130. data/spec/helpers/admin/elements_helper_spec.rb +20 -17
  131. data/spec/helpers/admin/essences_helper_spec.rb +42 -11
  132. data/spec/helpers/admin/navigation_helper_spec.rb +64 -54
  133. data/spec/helpers/admin/pages_helper_spec.rb +10 -10
  134. data/spec/helpers/admin/tags_helper_spec.rb +16 -16
  135. data/spec/helpers/base_helper_spec.rb +11 -11
  136. data/spec/helpers/elements_block_helper_spec.rb +24 -24
  137. data/spec/helpers/elements_helper_spec.rb +46 -46
  138. data/spec/helpers/essences_helper_spec.rb +90 -17
  139. data/spec/helpers/pages_helper_spec.rb +53 -53
  140. data/spec/helpers/picture_url_helpers_spec.rb +6 -6
  141. data/spec/helpers/url_helper_spec.rb +32 -32
  142. data/spec/libraries/config_spec.rb +9 -9
  143. data/spec/libraries/controller_actions_spec.rb +14 -14
  144. data/spec/libraries/i18n_spec.rb +6 -6
  145. data/spec/libraries/kaminari/scoped_pagination_url_helper_spec.rb +4 -4
  146. data/spec/libraries/modules_spec.rb +4 -4
  147. data/spec/libraries/mount_point_spec.rb +13 -13
  148. data/spec/libraries/page_layout_spec.rb +24 -24
  149. data/spec/libraries/permissions_spec.rb +97 -80
  150. data/spec/libraries/resource_spec.rb +37 -37
  151. data/spec/libraries/resources_helper_spec.rb +19 -19
  152. data/spec/libraries/shell_spec.rb +17 -17
  153. data/spec/libraries/template_tracker_spec.rb +14 -14
  154. data/spec/libraries/tinymce_spec.rb +8 -8
  155. data/spec/libraries/userstamp_spec.rb +2 -2
  156. data/spec/mailers/messages_spec.rb +4 -4
  157. data/spec/models/attachment_spec.rb +86 -30
  158. data/spec/models/cell_spec.rb +10 -10
  159. data/spec/models/content_spec.rb +106 -46
  160. data/spec/models/element_spec.rb +94 -115
  161. data/spec/models/essence_date_spec.rb +1 -1
  162. data/spec/models/essence_file_spec.rb +4 -4
  163. data/spec/models/essence_picture_spec.rb +56 -25
  164. data/spec/models/essence_richtext_spec.rb +1 -1
  165. data/spec/models/essence_text_spec.rb +7 -7
  166. data/spec/models/language_spec.rb +12 -12
  167. data/spec/models/legacy_page_url_spec.rb +2 -2
  168. data/spec/models/message_spec.rb +12 -5
  169. data/spec/models/page_spec.rb +259 -235
  170. data/spec/models/picture_spec.rb +72 -166
  171. data/spec/models/site_spec.rb +41 -41
  172. data/spec/models/tag_spec.rb +7 -7
  173. data/spec/routing/api_routing_spec.rb +150 -0
  174. data/spec/routing/routing_spec.rb +28 -28
  175. data/spec/spec_helper.rb +6 -5
  176. data/spec/support/hint_examples.rb +5 -5
  177. data/spec/support/transformation_examples.rb +173 -0
  178. data/spec/tasks/helpers_spec.rb +29 -29
  179. data/spec/views/essences/essence_boolean_editor_spec.rb +32 -0
  180. data/spec/views/essences/essence_boolean_view_spec.rb +2 -2
  181. data/spec/views/essences/essence_date_view_spec.rb +1 -1
  182. data/spec/views/essences/essence_link_view_spec.rb +11 -0
  183. data/spec/views/essences/essence_picture_view_spec.rb +56 -11
  184. data/spec/views/essences/essence_richtext_view_spec.rb +12 -0
  185. data/spec/views/essences/essence_text_view_spec.rb +12 -0
  186. data/vendor/assets/javascripts/tinymce/langs/de.js +20 -2
  187. data/vendor/assets/javascripts/tinymce/langs/fr.js +14 -1
  188. data/vendor/assets/javascripts/tinymce/langs/nl.js +22 -4
  189. data/vendor/assets/javascripts/tinymce/plugins/anchor/plugin.min.js +1 -1
  190. data/vendor/assets/javascripts/tinymce/plugins/autoresize/plugin.min.js +1 -1
  191. data/vendor/assets/javascripts/tinymce/plugins/charmap/plugin.min.js +1 -1
  192. data/vendor/assets/javascripts/tinymce/plugins/code/plugin.min.js +1 -1
  193. data/vendor/assets/javascripts/tinymce/plugins/directionality/plugin.min.js +1 -1
  194. data/vendor/assets/javascripts/tinymce/plugins/fullscreen/plugin.min.js +1 -1
  195. data/vendor/assets/javascripts/tinymce/plugins/hr/plugin.min.js +1 -1
  196. data/vendor/assets/javascripts/tinymce/plugins/link/plugin.min.js +1 -1
  197. data/vendor/assets/javascripts/tinymce/plugins/paste/plugin.min.js +1 -1
  198. data/vendor/assets/javascripts/tinymce/plugins/tabfocus/plugin.min.js +1 -1
  199. data/vendor/assets/javascripts/tinymce/plugins/table/plugin.min.js +1 -1
  200. data/vendor/assets/javascripts/tinymce/themes/modern/theme.min.js +1 -1
  201. data/vendor/assets/javascripts/tinymce/tinymce.min.js +11 -10
  202. metadata +72 -42
  203. data/app/views/alchemy/messages/contact_form_mail.es.text.erb +0 -12
  204. data/config/locales/alchemy.es.yml +0 -958
  205. data/config/locales/alchemy.ru.yml +0 -837
  206. data/config/locales/simple_form.es.yml +0 -6
  207. data/config/locales/simple_form.ru.yml +0 -25
  208. data/lib/rails/generators/alchemy/scaffold/files/alchemy.es.yml +0 -31
  209. data/vendor/assets/javascripts/tinymce/langs/es.js +0 -197
  210. data/vendor/assets/javascripts/tinymce/langs/ru.js +0 -197
@@ -19,32 +19,33 @@ Gem::Specification.new do |gem|
19
19
  gem.executables = 'alchemy'
20
20
  gem.require_paths = ['lib']
21
21
 
22
- gem.add_runtime_dependency 'rails', '>= 4.0', '< 4.2'
22
+ gem.add_runtime_dependency 'rails', '>= 4.0', '< 5.0'
23
23
  gem.add_runtime_dependency 'actionpack-page_caching', '~> 1.0.0'
24
24
  gem.add_runtime_dependency 'awesome_nested_set', '~> 3.0.0.rc.2'
25
25
  gem.add_runtime_dependency 'acts-as-taggable-on', '~> 3.1'
26
- gem.add_runtime_dependency 'cancan', '~> 1.6.10'
26
+ gem.add_runtime_dependency 'cancancan', '~> 1.9'
27
27
  gem.add_runtime_dependency 'dragonfly', '~> 1.0.1'
28
28
  gem.add_runtime_dependency 'kaminari', '~> 0.15'
29
29
  gem.add_runtime_dependency 'acts_as_list', '~> 0.3.0'
30
30
  gem.add_runtime_dependency 'magiclabs-userstamp', '~> 2.1.0'
31
- gem.add_runtime_dependency 'simple_form', '~> 3.0.1'
31
+ gem.add_runtime_dependency 'simple_form', '~> 3.0'
32
32
  gem.add_runtime_dependency 'jquery-rails', '~> 3.1.0'
33
- gem.add_runtime_dependency 'jquery-ui-rails', '~> 4.1.1'
34
- gem.add_runtime_dependency 'sass-rails', '~> 4.0.2'
33
+ gem.add_runtime_dependency 'jquery-ui-rails', '~> 5.0.0'
34
+ gem.add_runtime_dependency 'sass-rails', '>= 4.0.4'
35
+ gem.add_runtime_dependency 'sass', '>= 3.2.19'
35
36
  gem.add_runtime_dependency 'uglifier', '>= 1.3.0'
36
37
  gem.add_runtime_dependency 'coffee-rails', '~> 4.0.0'
37
- gem.add_runtime_dependency 'compass-rails', '~> 1.1.2'
38
+ gem.add_runtime_dependency 'compass-rails', '>= 1.1.2'
38
39
  gem.add_runtime_dependency 'sassy-buttons', '~> 0.2.6'
39
- gem.add_runtime_dependency 'select2-rails', '>= 3.5.9.1', '< 4.0'
40
+ gem.add_runtime_dependency 'select2-rails', '~> 3.4'
40
41
  gem.add_runtime_dependency 'tvdeyen-handles_sortable_columns', '~> 0.1.5'
41
42
  gem.add_runtime_dependency 'spinner.rb'
42
43
  gem.add_runtime_dependency 'turbolinks', '~> 2.0'
43
44
  gem.add_runtime_dependency 'non-stupid-digest-assets', '~> 1.0.3'
44
- gem.add_runtime_dependency 'active_model_serializers', '>= 0.8.1', '< 0.9.1'
45
+ gem.add_runtime_dependency 'active_model_serializers', '>= 0.8.1', '< 0.10.0'
45
46
  gem.add_runtime_dependency 'request_store', '~> 1.1.0'
46
47
 
47
- gem.add_development_dependency 'rspec-rails', '~> 2.0'
48
+ gem.add_development_dependency 'rspec-rails', '~> 3.0'
48
49
  gem.add_development_dependency 'capybara'
49
50
  gem.add_development_dependency 'factory_girl_rails'
50
51
 
@@ -1,5 +1,5 @@
1
- #= require jquery.ui.draggable
2
- #= require jquery.ui.sortable
1
+ #= require jquery-ui/draggable
2
+ #= require jquery-ui/sortable
3
3
  #
4
4
  window.Alchemy = {} if typeof (window.Alchemy) is "undefined"
5
5
 
@@ -4,7 +4,7 @@ Alchemy.ImageCropper =
4
4
 
5
5
  initialized: false
6
6
 
7
- init: (box, size_x, size_y, default_box, ratio, true_size) ->
7
+ init: (box, min_size, default_box, ratio, true_size) ->
8
8
  crop_from_field = $("#essence_picture_crop_from")
9
9
  crop_size_field = $("#essence_picture_crop_size")
10
10
  options =
@@ -13,7 +13,7 @@ Alchemy.ImageCropper =
13
13
  crop_size_field.val coords.w + "x" + coords.h
14
14
  setSelect: box
15
15
  aspectRatio: (if ratio then ratio else `undefined`)
16
- minSize: [size_x, size_y]
16
+ minSize: (if min_size then min_size else `undefined`)
17
17
  boxWidth: 800
18
18
  boxHeight: 600
19
19
  trueSize: true_size
@@ -3,12 +3,12 @@
3
3
  //= require jquery
4
4
  //= require jquery_ujs
5
5
  //= require turbolinks
6
- //= require jquery.ui.datepicker
7
- //= require jquery.ui.draggable
8
- //= require jquery.ui.effect-drop
9
- //= require jquery.ui.effect-fade
10
- //= require jquery.ui.sortable
11
- //= require jquery.ui.tabs
6
+ //= require jquery-ui/datepicker
7
+ //= require jquery-ui/draggable
8
+ //= require jquery-ui/effect-drop
9
+ //= require jquery-ui/effect-fade
10
+ //= require jquery-ui/sortable
11
+ //= require jquery-ui/tabs
12
12
  //= require tinymce/tinymce.min
13
13
  //= require_tree ../../../../vendor/assets/javascripts/jquery_plugins/
14
14
  //= require spin.min
@@ -16,7 +16,6 @@
16
16
  //= require requestAnimationFrame
17
17
  //= require select2
18
18
  //= require select2_locale_de
19
- //= require select2_locale_ru
20
19
  //= require alchemy/alchemy.base
21
20
  //= require alchemy/alchemy.autocomplete
22
21
  //= require alchemy/alchemy.browser
@@ -87,46 +87,4 @@ Alchemy.translations =
87
87
  'File is too small': 'Le fichier est trop petit.'
88
88
  'File type not allowed': 'Type de document non autorisé.'
89
89
  'Maximum number of files exceeded': 'Le nombre maximum de fichiers est atteint.'
90
- 'Uploaded bytes exceed file size': 'Taille de fichier maximale autorisée atteint.'
91
-
92
- # Russian
93
- ru:
94
- allowed_chars: '%{count} знаков'
95
- cancel: 'Отмена'
96
- cancelled: 'Отменено'
97
- click_to_edit: 'нажмите, чтобы редактировать'
98
- complete: 'Завершено'
99
- element_dirty_notice: 'Для этого элемента есть несохраненные изменения. Вы действительно хотите их сбросить?'
100
- help: 'Помощь'
101
- ok: 'Ок'
102
- page_dirty_notice: 'На странице есть несохраненные изменения. Если вы продолжите, то они пропадут.'
103
- page_found: 'Страница найдена'
104
- pages_found: 'Страницы найдены'
105
- url_validation_failed: 'Адрес (URL) имеет неверный формат.'
106
- warning: 'Внимание!'
107
- 'File is too large': 'Файл слишком большой'
108
- 'File is too small': 'Файл слишком маленький'
109
- 'File type not allowed': 'Этот тип файла не разрешен'
110
- 'Maximum number of files exceeded': 'Исчерпано максимальное количество файлов.'
111
- 'Uploaded bytes exceed file size': 'Превышен максимальный размер файла'
112
-
113
- # Spanish
114
- es:
115
- allowed_chars: 'de %{count} caracteres'
116
- cancel: 'Cancelar'
117
- cancelled: 'Cancelado'
118
- click_to_edit: 'Pulsar para editar'
119
- complete: 'Completado'
120
- element_dirty_notice: 'Este elemento tiene cambios sin guardar. ¿Realmente quieres plegarlo?'
121
- help: 'Ayuda'
122
- ok: 'Aceptar'
123
- page_dirty_notice: 'Tienes cambios sin guardar en esta página. Si continúas se perderán.'
124
- page_found: 'Página encontrada'
125
- pages_found: 'Páginas encontradas'
126
- url_validation_failed: 'La url no tiene un formato válido.'
127
- warning: '¡Atención!'
128
- 'File is too large': 'El archivo es demasiado grande'
129
- 'File is too small': 'El archivo es demasiado pequeño'
130
- 'File type not allowed': 'El tipo de archivo no está permitido'
131
- 'Maximum number of files exceeded': 'Número máximo de archivos excedido.'
132
- 'Uploaded bytes exceed file size': 'Los bytes subidos exceden el tamaño del archivo'
90
+ 'Uploaded bytes exceed file size': 'Taille de fichier maximale autorisée atteint.'
@@ -1,4 +1,4 @@
1
- #= require jquery.ui.widget
1
+ #= require jquery-ui/widget
2
2
  #= require alchemy/alchemy.file_progress
3
3
  #= require fileupload/jquery.iframe-transport
4
4
  #= require fileupload/jquery.fileupload
@@ -1,7 +1,8 @@
1
1
  @mixin default-focus-style {
2
2
  border-color: $blue;
3
- @include box-shadow(0 0 1px 2px $blue);
3
+ @include box-shadow(0 0 2px 2px $blue);
4
4
  outline: none;
5
+ @include transition(all 0.25s ease-in-out);
5
6
 
6
7
  &::-moz-focus-inner {
7
8
  border: none !important;
@@ -196,11 +196,6 @@ button.icon_button {
196
196
  border: $default-border;
197
197
  padding: 2px;
198
198
  @extend %rounded-border;
199
-
200
- &:focus {
201
- border: 0;
202
- padding: 3px;
203
- }
204
199
  }
205
200
 
206
201
  .select2-container {
@@ -48,6 +48,7 @@
48
48
  .alchemy-dialog {
49
49
  position: relative;
50
50
  max-width: 100%;
51
+ max-height: 100%;
51
52
  display: inline-block;
52
53
  vertical-align: middle;
53
54
  text-align: left;
@@ -122,12 +122,12 @@ div#overlay_text_box {
122
122
  left: 0;
123
123
  text-align: center;
124
124
  width: 65px;
125
+ padding-top: 4px;
126
+ padding-bottom: 8px;
125
127
  background: $light-blue;
126
128
 
127
129
  a {
128
130
  display: block;
129
- padding-top: 4px;
130
- padding-bottom: 8px;
131
131
 
132
132
  &:hover {
133
133
  text-decoration: none;
@@ -197,22 +197,20 @@ div#user_info {
197
197
  text-shadow: 0px 1px 1px #FFFFFF;
198
198
  @extend .disable-user-select;
199
199
  cursor: default;
200
- line-height: 27px;
200
+ line-height: 22px;
201
201
  float: left;
202
202
  @extend .top-rounded-border;
203
203
  border: $default-border;
204
204
  border-bottom-style: none;
205
205
  height: 24px;
206
206
  margin-right: 1px;
207
-
208
- .page_name {
209
- position: relative;
210
- bottom: 2px;
211
- }
212
207
  }
213
208
 
214
209
  .page_name {
210
+ position: relative;
215
211
  margin-right: $default-margin;
212
+ line-height: 27px;
213
+ bottom: 2px;
216
214
  }
217
215
 
218
216
  .page_language {
@@ -230,6 +228,7 @@ div#user_info {
230
228
 
231
229
  .subnavi_tab {
232
230
  float: left;
231
+ padding: 0px 8px;
233
232
  line-height: 21px;
234
233
  height: 23px;
235
234
  text-shadow: #fff 0 0px 4px;
@@ -258,7 +257,9 @@ div#user_info {
258
257
  }
259
258
 
260
259
  &.active {
260
+ float: left;
261
261
  position: relative;
262
+ padding: 0px 8px;
262
263
  height: 24px;
263
264
  color: $text-color;
264
265
  background-color: $medium-gray;
@@ -267,10 +268,6 @@ div#user_info {
267
268
  cursor: default;
268
269
  z-index: 10;
269
270
  }
270
-
271
- > a {
272
- padding: 0px 8px;
273
- }
274
271
  }
275
272
  }
276
273
 
@@ -2,13 +2,22 @@
2
2
  *= require_self
3
3
  */
4
4
  @import "alchemy/variables";
5
+ @import "compass/css3";
6
+
7
+ html {
8
+ @include box-shadow(inset 0px 1px 1px $medium-gray);
9
+ @include border-radius($default-border-radius);
10
+ }
5
11
 
6
12
  body {
7
13
  background-color: #fff;
8
14
  color: $text-color;
9
15
  font: $default-font-style;
10
- margin: 0 2*$default-margin;
11
- padding-bottom: $default-padding !important;
16
+ margin: 6px 0 !important;
17
+ padding-left: 2*$default-margin !important;
18
+ padding-right: 2*$default-margin !important;
19
+ padding-top: 0px !important;
20
+ padding-bottom: 0px !important;
12
21
  }
13
22
 
14
23
  td,th {
@@ -98,6 +98,8 @@ div.mce-fullscreen {
98
98
  div.mce-edit-area {
99
99
  background: #FFF;
100
100
  filter: none;
101
+ border-top: 0;
102
+ @include border-radius($default-border-radius);
101
103
  }
102
104
 
103
105
  .mce-statusbar {
@@ -246,6 +248,11 @@ div.mce-tinymce-inline {
246
248
  .mce-panel {
247
249
  border: 0 solid $default-border-color;
248
250
  background-color: $medium-gray;
251
+ @include box-sizing(border-box);
252
+ }
253
+
254
+ .mce-toolbar-grp {
255
+ border-bottom: 1px solid $default-border-color;
249
256
  }
250
257
 
251
258
  .mce-floatpanel {
@@ -1397,6 +1404,7 @@ div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover {
1397
1404
 
1398
1405
  i.mce-i-resize {
1399
1406
  color: #333;
1407
+ font-size: 16px;
1400
1408
  }
1401
1409
 
1402
1410
  .mce-spacer {
@@ -1555,7 +1563,7 @@ i.mce-i-resize {
1555
1563
  font-size: 12px;
1556
1564
  line-height: 16px;
1557
1565
  vertical-align: text-top;
1558
- -webkit-font-smoothing: antialiased;
1566
+ -webkit-font-smoothing: subpixel-antialiased;
1559
1567
  display: inline-block;
1560
1568
  background: transparent center center;
1561
1569
  width: 16px;
@@ -40,7 +40,6 @@ module Alchemy
40
40
  end
41
41
 
42
42
  def update
43
- @attachment = Attachment.find(params[:id])
44
43
  @attachment.update_attributes(attachment_attributes)
45
44
  render_errors_or_redirect(
46
45
  @attachment,
@@ -50,7 +49,6 @@ module Alchemy
50
49
  end
51
50
 
52
51
  def destroy
53
- @attachment = Attachment.find(params[:id])
54
52
  name = @attachment.name
55
53
  @attachment.destroy
56
54
  @url = admin_attachments_url(
@@ -76,7 +74,7 @@ module Alchemy
76
74
  end
77
75
 
78
76
  def archive_overlay
79
- @content = Content.select('id').find_by(id: params[:content_id])
77
+ @content = Content.find_by(id: params[:content_id])
80
78
  @options = options_from_params
81
79
  respond_to do |format|
82
80
  format.html { render partial: 'archive_overlay' }
@@ -90,7 +88,7 @@ module Alchemy
90
88
 
91
89
  def set_instance_variables
92
90
  @while_assigning = true
93
- @content = Content.select('id').find_by(id: params[:content_id])
91
+ @content = Content.find_by(id: params[:content_id])
94
92
  @swap = params[:swap]
95
93
  @options = options_from_params
96
94
  end
@@ -18,9 +18,13 @@ module Alchemy
18
18
  if @picture = @essence_picture.picture
19
19
  @content = @essence_picture.content
20
20
  @options[:format] ||= (configuration(:image_store_format) or 'png')
21
- @size_x, @size_y = sizes_from_essence_or_params
22
- @initial_box, @default_box = cropping_boxes
21
+
22
+ @min_size = sizes_from_essence_or_params
23
23
  @ratio = ratio_from_size_or_params
24
+ infer_width_or_height_from_ratio
25
+
26
+ @default_box = @essence_picture.default_mask(@min_size)
27
+ @initial_box = @essence_picture.cropping_mask || @default_box
24
28
  else
25
29
  @no_image_notice = _t(:no_image_for_cropper_found)
26
30
  end
@@ -35,15 +39,16 @@ module Alchemy
35
39
  # When the user press save on the element, it gets saved.
36
40
  #
37
41
  def assign
38
- @picture = Picture.find_by_id(params[:picture_id])
42
+ @picture = Picture.find_by(id: params[:picture_id])
39
43
  @content.essence.picture = @picture
44
+ @content.touch # We need to touch manually because its not saved yet.
40
45
  @element = @content.element
41
46
  @dragable = @options[:grouped]
42
47
  @options = @options.merge(dragable: @dragable)
43
48
  end
44
49
 
45
50
  def destroy
46
- @content = Content.find_by_id(params[:id])
51
+ @content = Content.find_by(id: params[:id])
47
52
  @element = @content.element
48
53
  @content_id = @content.id
49
54
  @content.destroy
@@ -64,49 +69,40 @@ module Alchemy
64
69
  @content = Content.find(params[:content_id])
65
70
  end
66
71
 
72
+ # Gets the minimum size of the image to be rendered. the database render_size
73
+ # has preference over the image_size parameter.
74
+ #
67
75
  def sizes_from_essence_or_params
68
- sizes_from_essence || sizes_from_params
69
- end
70
-
71
- def sizes_from_params
72
- return [0, 0] if @options[:image_size].blank?
73
- @options[:image_size].split('x')
74
- end
75
-
76
- def sizes_from_essence
77
- return if @essence_picture.render_size.blank?
78
- size_x, size_y = @essence_picture.render_size.split('x').map(&:to_i)
79
- if size_x.zero? || size_y.nil? || size_y.zero?
80
- size_x_of_original = @essence_picture.picture.image_file_width
81
- size_y_of_original = @essence_picture.picture.image_file_height
82
- size_x = size_x_of_original * size_y / size_y_of_original if size_x.zero?
83
- size_y = size_y_of_original * size_x / size_x_of_original if size_y.nil? || size_y.zero?
76
+ if @essence_picture.render_size? && !@essence_picture.render_size.blank?
77
+ @essence_picture.sizes_from_string(@essence_picture.render_size)
78
+ elsif @options[:image_size]
79
+ @essence_picture.sizes_from_string(@options[:image_size])
80
+ else
81
+ { width: 0, height: 0 }
84
82
  end
85
- [size_x, size_y]
86
83
  end
87
84
 
88
- def sizes_string
89
- @sizes_string ||= "#{@size_x}x#{@size_y}"
90
- end
91
-
92
- def cropping_boxes
93
- if @essence_picture.crop_from.blank? || @essence_picture.crop_size.blank?
94
- initial_box = @picture.default_mask(sizes_string)
95
- default_box = initial_box
85
+ # Infers the aspect ratio from size or parameters. If you don't want a fixed
86
+ # aspect ratio, don't specify a size or only width or height.
87
+ #
88
+ def ratio_from_size_or_params
89
+ if @min_size.has_value?(0) && @options[:fixed_ratio]
90
+ @options[:fixed_ratio].to_f
91
+ elsif !@min_size[:width].zero? && !@min_size[:height].zero?
92
+ @min_size[:width].to_f / @min_size[:height].to_f
96
93
  else
97
- initial_box = @essence_picture.cropping_mask
98
- default_box = @picture.default_mask(sizes_string)
94
+ false
99
95
  end
100
- [initial_box, default_box]
101
96
  end
102
97
 
103
- def ratio_from_size_or_params
104
- if @options[:fixed_ratio] == false
105
- false
106
- elsif @size_y == 0
107
- 1
98
+ # Infers the minimum width or height if the aspect ratio and one dimension
99
+ # is specified.
100
+ #
101
+ def infer_width_or_height_from_ratio
102
+ if @min_size[:height].zero?
103
+ @min_size[:height] = (@min_size[:width] / @ratio).to_i if @ratio
108
104
  else
109
- @size_x.to_f / @size_y.to_f
105
+ @min_size[:width] = (@min_size[:height] * @ratio).to_i if @ratio
110
106
  end
111
107
  end
112
108