alchemy_cms 2.1.6 → 2.1.7

Sign up to get free protection for your applications and to get access to all the features.
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"