alchemy_cms 2.1.6 → 2.1.7

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 (76) hide show
  1. data/Gemfile +0 -1
  2. data/alchemy_cms.gemspec +3 -2
  3. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js +1 -1
  4. data/app/assets/javascripts/alchemy/alchemy.windows.js +1 -1
  5. data/app/assets/stylesheets/alchemy/alchemy.css +0 -1
  6. data/app/assets/stylesheets/alchemy/base.css.scss +2 -5
  7. data/app/assets/stylesheets/alchemy/elements.css.scss +118 -139
  8. data/app/assets/stylesheets/alchemy/frame.css.scss +10 -4
  9. data/app/assets/stylesheets/alchemy/tables.css.scss +4 -0
  10. data/app/controllers/alchemy/admin/attachments_controller.rb +1 -1
  11. data/app/controllers/alchemy/admin/base_controller.rb +1 -1
  12. data/app/controllers/alchemy/admin/contents_controller.rb +1 -1
  13. data/app/controllers/alchemy/admin/essence_audios_controller.rb +1 -1
  14. data/app/controllers/alchemy/admin/essence_files_controller.rb +1 -1
  15. data/app/controllers/alchemy/admin/essence_flashes_controller.rb +1 -1
  16. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +4 -3
  17. data/app/controllers/alchemy/admin/essence_videos_controller.rb +1 -1
  18. data/app/controllers/alchemy/admin/pages_controller.rb +3 -3
  19. data/app/controllers/alchemy/admin/resources_controller.rb +3 -3
  20. data/app/controllers/alchemy/admin/users_controller.rb +3 -3
  21. data/app/controllers/alchemy/base_controller.rb +1 -1
  22. data/app/controllers/alchemy/messages_controller.rb +3 -2
  23. data/app/helpers/alchemy/admin/base_helper.rb +5 -1
  24. data/app/helpers/alchemy/admin/elements_helper.rb +1 -1
  25. data/app/helpers/alchemy/admin/essences_helper.rb +4 -4
  26. data/app/helpers/alchemy/base_helper.rb +20 -0
  27. data/app/helpers/alchemy/elements_helper.rb +1 -0
  28. data/app/helpers/alchemy/pages_helper.rb +15 -3
  29. data/app/models/alchemy/attachment.rb +1 -4
  30. data/app/models/alchemy/language.rb +1 -1
  31. data/app/models/alchemy/message.rb +5 -1
  32. data/app/models/alchemy/page.rb +8 -5
  33. data/app/models/alchemy/picture.rb +1 -4
  34. data/app/views/alchemy/admin/attachments/_files_list.html.erb +1 -1
  35. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +2 -1
  36. data/app/views/alchemy/admin/elements/index.html.erb +12 -8
  37. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -1
  38. data/app/views/alchemy/admin/essence_pictures/update.js.erb +1 -1
  39. data/app/views/alchemy/admin/languages/_form.html.erb +2 -2
  40. data/app/views/alchemy/admin/pages/_page_status.html.erb +2 -2
  41. data/app/views/alchemy/admin/pages/edit.html.erb +1 -0
  42. data/app/views/alchemy/admin/partials/_pagination_links.html.erb +1 -7
  43. data/app/views/alchemy/admin/partials/_sub_navigation_tab.html.erb +1 -1
  44. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +4 -9
  45. data/app/views/alchemy/admin/pictures/_pictures_list.html.erb +1 -1
  46. data/app/views/alchemy/admin/users/index.html.erb +1 -1
  47. data/app/views/alchemy/base/error_notice.html.erb +4 -0
  48. data/app/views/alchemy/essences/_essence_picture_view.html.erb +2 -1
  49. data/app/views/alchemy/essences/_essence_text_editor.html.erb +7 -3
  50. data/app/views/alchemy/navigation/_link.html.erb +1 -1
  51. data/app/views/kaminari/_gap.html.erb +8 -0
  52. data/app/views/kaminari/_next_page.html.erb +13 -0
  53. data/app/views/kaminari/_page.html.erb +14 -0
  54. data/app/views/kaminari/_paginator.html.erb +21 -0
  55. data/app/views/kaminari/_prev_page.html.erb +13 -0
  56. data/app/views/layouts/alchemy/admin.html.erb +1 -1
  57. data/app/views/layouts/alchemy/login.html.erb +1 -1
  58. data/config/alchemy/config.yml +3 -0
  59. data/config/initializers/kaminari_config.rb +9 -0
  60. data/config/locales/alchemy.de.yml +5 -6
  61. data/config/locales/alchemy.en.yml +5 -6
  62. data/lib/alchemy/capistrano.rb +0 -3
  63. data/lib/alchemy/scoped_pagination_url_helper.rb +13 -0
  64. data/lib/alchemy/version.rb +1 -1
  65. data/lib/alchemy_cms.rb +2 -2
  66. data/lib/rails/generators/alchemy/elements/elements_generator.rb +1 -1
  67. data/spec/factories.rb +4 -0
  68. data/spec/helpers/elements_helper_spec.rb +38 -0
  69. data/spec/models/language_spec.rb +29 -9
  70. data/spec/models/page_spec.rb +17 -0
  71. metadata +53 -39
  72. data/app/assets/images/alchemy/flags.png +0 -0
  73. data/app/assets/stylesheets/alchemy/flags.css.scss +0 -1
  74. data/app/views/alchemy/admin/partials/_remote_pagination_links.html.erb +0 -9
  75. data/lib/alchemy/remote_pagination_link_renderer.rb +0 -31
  76. data/lib/alchemy/scoped_pagination_link_renderer.rb +0 -27
data/Gemfile CHANGED
@@ -14,7 +14,6 @@ group :test do
14
14
  end
15
15
 
16
16
  group :assets do
17
- gem 'sass-rails', '~> 3.1.4'
18
17
  gem 'uglifier', '>= 1.0.3'
19
18
  end
20
19
 
@@ -24,14 +24,15 @@ Gem::Specification.new do |s|
24
24
  s.add_runtime_dependency(%q<awesome_nested_set>, ["~> 2.0"])
25
25
  s.add_runtime_dependency(%q<declarative_authorization>, ["~> 0.5.4"])
26
26
  s.add_runtime_dependency(%q<tvdeyen-fleximage>, ["~> 1.0.9"])
27
- s.add_runtime_dependency(%q<will_paginate>, ["~> 3.0"])
27
+ s.add_runtime_dependency(%q<kaminari>, ["~> 0.13.0"])
28
28
  s.add_runtime_dependency(%q<acts_as_ferret>, ["~> 0.5"])
29
29
  s.add_runtime_dependency(%q<acts_as_list>, ["~> 0.1"])
30
30
  s.add_runtime_dependency(%q<magiclabs-userstamp>, ["~> 2.0.2"])
31
31
  s.add_runtime_dependency(%q<dynamic_form>, ["~> 1.1"])
32
32
  s.add_runtime_dependency(%q<jquery-rails>, ["~> 1.0.16"])
33
33
  s.add_runtime_dependency(%q<attachment_magic>, ["~> 0.2.1"])
34
-
34
+ s.add_runtime_dependency('sass-rails', ['~> 3.1.4'])
35
+
35
36
  s.add_development_dependency(%q<rspec-rails>, ["~> 2.8"])
36
37
  s.add_development_dependency(%q<sqlite3>)
37
38
 
@@ -27,7 +27,7 @@ if (typeof(Alchemy) === 'undefined') {
27
27
  url: Alchemy.routes.link_admin_pages_path,
28
28
  success: function(data, textStatus, XMLHttpRequest) {
29
29
  $dialog.html(data);
30
- Alchemy.SelectBox('#alchemyLinkOverlay select');
30
+ Alchemy.SelectBox('#alchemyLinkOverlay select.alchemy_selectbox');
31
31
  },
32
32
  error: function(XMLHttpRequest, textStatus, errorThrown) {
33
33
  Alchemy.AjaxErrorHandler($dialog, XMLHttpRequest.status, textStatus, errorThrown);
@@ -162,7 +162,7 @@ if (typeof(Alchemy) === 'undefined') {
162
162
  top: ($(window).height() - $dialog.dialog('widget').height()) / 2
163
163
  });
164
164
  }
165
- Alchemy.SelectBox('#alchemyOverlay select');
165
+ Alchemy.SelectBox('#alchemyOverlay select.alchemy_selectbox');
166
166
  Alchemy.Datepicker('#alchemyOverlay input.date, #alchemyOverlay input[type="date"]');
167
167
  Alchemy.ButtonObserver('#alchemyOverlay .button');
168
168
  },
@@ -4,7 +4,6 @@
4
4
  *= require alchemy/buttons
5
5
  *= require alchemy/dashboard
6
6
  *= require alchemy/elements
7
- *= require alchemy/flags
8
7
  *= require alchemy/flash
9
8
  *= require alchemy/frame
10
9
  *= require alchemy/icons
@@ -787,7 +787,8 @@ div.field_with_errors {
787
787
  }
788
788
 
789
789
  p.foot_note {
790
- font-size: 0.8em;
790
+ font-size: 10px;
791
+ line-height: 1.5em;
791
792
  }
792
793
 
793
794
  #errorExplanation ul {
@@ -1357,10 +1358,6 @@ div.assign_file_file_icon img {
1357
1358
  width: 217px;
1358
1359
  }
1359
1360
 
1360
- #alchemy .ui-dialog-content p {
1361
- min-height: 21px;
1362
- }
1363
-
1364
1361
  table.window_form td.checkbox {
1365
1362
  text-align: left;
1366
1363
  }
@@ -1,18 +1,5 @@
1
1
  @import "alchemy/defaults";
2
2
 
3
- #alchemy div.content_editor input.text_with_icon.auto_resize.thin_border {
4
- padding-right: 52px;
5
- width: 314px;
6
- }
7
-
8
- .element_editor p.footnote {
9
- clear: both;
10
- float: left;
11
- font-size: 10px;
12
- margin-top: 4px;
13
- width: 100%;
14
- }
15
-
16
3
  .element_heading .preview_text_quote {
17
4
  font-size: 10px;
18
5
  font-style: italic;
@@ -174,30 +161,74 @@ div.element_editor {
174
161
  @include rounded-corner;
175
162
  background-color: #f0e8d7;
176
163
  margin-bottom: 8px;
177
- }
178
164
 
179
- div.element_editor.not-draggable {
180
- @include opacity(50);
181
- }
165
+ &.not-draggable {
166
+ @include opacity(50);
167
+ }
182
168
 
183
- div.element_editor.dirty {
184
- border-color: #d0c83d;
185
- }
169
+ &.dirty {
170
+ border-color: #d0c83d;
186
171
 
187
- div.element_editor.dirty .element_head,
188
- div.element_editor.dirty .element_foot {
189
- background-color: #fff8df;
190
- }
172
+ .element_head, .element_foot {
173
+ background-color: #fff8df;
174
+ }
175
+ }
176
+
177
+ &.selected {
178
+ border-color: #4b93db;
179
+ -moz-box-shadow: 0 0 3px #4b93db;
180
+ -webkit-box-shadow: 0 0 3px #4b93db;
181
+ box-shadow: 0 0 3px #4b93db;
182
+ }
183
+
184
+ div.error {
185
+ padding: 8px 4px 8px 32px;
186
+ margin-bottom: 8px;
187
+ margin-top: 8px;
188
+ @include rounded-corner;
189
+ background-color: #f1c9ca;
190
+ color: #931f23;
191
+ border-style: solid;
192
+ border-width: 1px;
193
+ position: relative;
194
+
195
+ span.icon {
196
+ position: absolute;
197
+ left: 8px;
198
+ top: 8px;
199
+ }
200
+ }
201
+
202
+ .validation_notice {
203
+ font-size: 10px;
204
+ margin-top: 1em;
205
+ }
206
+
207
+ .foot_note {
208
+ padding: $default-padding;
209
+ background-color: #fffdef;
210
+ @include rounded-corner;
211
+ margin-bottom: 1em;
212
+ }
213
+
214
+ p.content_editor_error {
215
+ border: 1px solid #f5b04e;
216
+ padding: 4px 8px;
217
+ line-height: 21px;
218
+ background-color: #f5dea9;
219
+ margin-top: 4px;
220
+ @include rounded-corner;
191
221
 
192
- div.element_editor.selected {
193
- border-color: #4b93db;
194
- -moz-box-shadow: 0 0 3px #4b93db;
195
- -webkit-box-shadow: 0 0 3px #4b93db;
196
- box-shadow: 0 0 3px #4b93db;
222
+ span.icon.warning {
223
+ position: relative;
224
+ top: 2px;
225
+ margin-right: 8px;
226
+ }
227
+ }
197
228
  }
198
229
 
199
230
  #alchemy .ui-dialog div.element_editor form {
200
- margin: 4px 0 0;
231
+ margin: 0;
201
232
  padding: 0 8px;
202
233
  overflow: hidden;
203
234
  }
@@ -363,33 +394,6 @@ a.fold_element {
363
394
  margin: 1px;
364
395
  }
365
396
 
366
- .content_editor select.essence_editor_select {
367
- @include rounded-corner;
368
- background: white;
369
- border: 1px solid $button-border-color;
370
- font-size:11px;
371
- height:21px;
372
- line-height:21px;
373
- padding:2px;
374
- }
375
-
376
- .content_editor select.essence_editor_select optgroup {
377
- color: gray;
378
- font-style: normal;
379
- font-weight: bold;
380
- text-indent: 8px;
381
- }
382
-
383
- .content_editor select.essence_editor_select option {
384
- padding-top: 2px;
385
- padding-bottom: 2px;
386
- color: black;
387
- }
388
-
389
- .content_editor select.essence_editor_select optgroup option {
390
- text-indent: 24px;
391
- }
392
-
393
397
  .droppable_element_placeholder {
394
398
  border: 1px dotted $button-border-color;
395
399
  background-color: $medium-gray;
@@ -437,17 +441,6 @@ a.icon_button.linked {
437
441
  cursor: default;
438
442
  }
439
443
 
440
- div.content_editor.essence_date {
441
- float: none;
442
- display: inline;
443
- display: inline-block;
444
- vertical-align: top;
445
-
446
- input.date {
447
- width: 154px;
448
- }
449
- }
450
-
451
444
  div.essence_picture_editor {
452
445
  float: left;
453
446
  height: 126px;
@@ -455,14 +448,6 @@ div.essence_picture_editor {
455
448
  position: relative;
456
449
  }
457
450
 
458
- div.essence_picture_editor.content_editor {
459
- float: none;
460
- height: auto;
461
- display: inline;
462
- display: inline-block;
463
- margin: 8px 0;
464
- }
465
-
466
451
  div.essence_picture_editor .picture_tool_delete {
467
452
  position: absolute;
468
453
  right: 4px;
@@ -676,14 +661,6 @@ div.content_text_editor input.text_short {
676
661
  width: 100%;
677
662
  }
678
663
 
679
- // div.element_content {
680
- // white-space: nowrap;
681
-
682
- // p, div {
683
- // white-space: normal;
684
- // }
685
- // }
686
-
687
664
  div.content_editor {
688
665
  margin-bottom: 8px;
689
666
  margin-top: 8px;
@@ -750,46 +727,66 @@ div.content_editor {
750
727
  min-width: 90px;
751
728
  margin-right: 4px;
752
729
  }
730
+
731
+ a.icon_button.small {
732
+ display: none;
733
+ }
753
734
  }
754
- }
755
735
 
756
- .element_editor div.error {
757
- background-color: #f5dea9;
758
- padding: 8px 4px 8px 32px;
759
- margin-bottom: 8px;
760
- margin-top: 8px;
761
- @include rounded-corner;
762
- border: 1px solid #f5b04e;
763
- position: relative;
764
- }
736
+ &:hover label a.icon_button.small {
737
+ display: inline-block;
738
+ }
765
739
 
766
- .element_editor div.error span.icon.warning {
767
- position: absolute;
768
- top: 8px;
769
- left: 8px;
770
- }
740
+ input.text_with_icon.auto_resize.thin_border {
741
+ padding-right: 52px;
742
+ width: 314px;
743
+ }
771
744
 
772
- .element_editor p.content_editor_error {
773
- border: 1px solid #f5b04e;
774
- padding: 4px 8px;
775
- line-height: 21px;
776
- background-color: #f5dea9;
777
- margin-top: 4px;
778
- @include rounded-corner;
779
- }
745
+ select.essence_editor_select {
746
+ @include rounded-corner;
747
+ background: white;
748
+ border: 1px solid $button-border-color;
749
+ font-size:11px;
750
+ height:21px;
751
+ line-height:21px;
752
+ padding:2px;
753
+
754
+ optgroup {
755
+ color: gray;
756
+ font-style: normal;
757
+ font-weight: bold;
758
+ text-indent: 8px;
759
+
760
+ option {
761
+ text-indent: 24px;
762
+ }
763
+ }
780
764
 
781
- p.content_editor_error span.icon.warning {
782
- position: relative;
783
- top: 2px;
784
- margin-right: 8px;
785
- }
765
+ option {
766
+ padding-top: 2px;
767
+ padding-bottom: 2px;
768
+ color: black;
769
+ }
770
+ }
786
771
 
787
- div.content_editor label a.icon_button.small {
788
- display: none;
789
- }
772
+ &.essence_date {
773
+ float: none;
774
+ display: inline;
775
+ display: inline-block;
776
+ vertical-align: top;
790
777
 
791
- div.content_editor:hover label a.icon_button.small {
792
- display: inline-block;
778
+ input.date {
779
+ width: 154px;
780
+ }
781
+ }
782
+
783
+ &.essence_picture_editor {
784
+ float: none;
785
+ height: auto;
786
+ display: inline;
787
+ display: inline-block;
788
+ margin: 8px 0;
789
+ }
793
790
  }
794
791
 
795
792
  .o2k7Skin span.alchemy_link {
@@ -834,24 +831,6 @@ textarea.tinymce {
834
831
  border-width: 1px;
835
832
  }
836
833
 
837
- div.element_editor div.error {
838
- padding: 8px 4px 8px 32px;
839
- margin-bottom: 8px;
840
- margin-top: 8px;
841
- @include rounded-corner;
842
- background-color: #f1c9ca;
843
- color: #931f23;
844
- border-style: solid;
845
- border-width: 1px;
846
- position: relative;
847
- }
848
-
849
- div.element_editor div.error span.icon {
850
- position: absolute;
851
- left: 8px;
852
- top: 8px;
853
- }
854
-
855
834
  .element_errors {
856
835
  margin-top: 8px;
857
836
  margin-bottom: 8px;
@@ -862,9 +841,9 @@ div.element_editor div.error span.icon {
862
841
  color: #931f23;
863
842
  border-style: solid;
864
843
  border-width: 1px;
865
- }
866
844
 
867
- .element_errors p {
868
- margin: 0;
869
- line-height: 24px;
845
+ p {
846
+ margin: 0;
847
+ line-height: 24px;
848
+ }
870
849
  }
@@ -205,7 +205,7 @@ div#user_info {
205
205
  span.page_status_and_name {
206
206
  padding: 0 8px;
207
207
  background-color: $medium-gray;
208
- text-shadow: #fff 0 1px 2px;
208
+ text-shadow: 0px 1px 1px #FFFFFF;
209
209
  @include disable-user-select;
210
210
  cursor: default;
211
211
  line-height: 20px;
@@ -216,12 +216,18 @@ div#user_info {
216
216
  height: 22px;
217
217
  margin-right: 1px;
218
218
 
219
- .flag {
219
+ .page_language {
220
220
  float: none;
221
221
  position: relative;
222
222
  display: inline-block;
223
- bottom: 1px;
224
- margin-right: 3px;
223
+ bottom: 2px;
224
+ border: 1px solid #f0c8d1;
225
+ background-color: #f0c8d1;
226
+ color: #ac3d57;
227
+ @include rounded-corner;
228
+ margin-right: 2px;
229
+ padding: 2px 3px;
230
+ line-height: 11px;
225
231
  }
226
232
 
227
233
  span.page_name {
@@ -35,6 +35,10 @@ td.input, td.submit, td.select {
35
35
  padding-right: 0;
36
36
  }
37
37
 
38
+ td.checkbox {
39
+ padding: 6px 4px;
40
+ }
41
+
38
42
  td.value {
39
43
  padding-left: 2*$default-padding;
40
44
  }
@@ -50,7 +50,7 @@ module Alchemy
50
50
  def update
51
51
  @attachment = Attachment.find(params[:id])
52
52
  oldname = @attachment.name
53
- if @attachment.update_attributes(params[:attachment])
53
+ if @attachment.update_attributes(params[:attachment], :as => current_user.role.to_sym)
54
54
  flash[:notice] = t("File renamed successfully from: '%{from}' to '%{to}'", :from => oldname, :to => @attachment.name)
55
55
  else
56
56
  render :action => "edit"