alchemy_cms 2.4.beta2 → 2.4.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. data/.gitignore +2 -1
  2. data/.travis.yml +3 -1
  3. data/.yardopts +1 -1
  4. data/Gemfile +2 -1
  5. data/alchemy_cms.gemspec +18 -17
  6. data/app/assets/images/alchemy/ajax_loader.gif +0 -0
  7. data/app/assets/images/alchemy/alchemy-logo.png +0 -0
  8. data/app/assets/images/alchemy/icons.png +0 -0
  9. data/app/assets/images/alchemy/image_loader.gif +0 -0
  10. data/app/assets/images/alchemy/placeholder.png +0 -0
  11. data/app/assets/images/alchemy/shading.png +0 -0
  12. data/app/assets/images/alchemy/swfupload/browse_button.png +0 -0
  13. data/app/assets/images/alchemy/tabs.gif +0 -0
  14. data/app/assets/images/alchemy/ui-icons_666666_256x240.png +0 -0
  15. data/app/assets/images/sassy-ie-overlay.png +0 -0
  16. data/app/assets/javascripts/alchemy/alchemy.base.js +1 -3
  17. data/app/assets/javascripts/alchemy/alchemy.browser.js.coffee +28 -0
  18. data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +2 -2
  19. data/app/assets/javascripts/alchemy/alchemy.js +2 -0
  20. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js.coffee +79 -47
  21. data/app/assets/javascripts/alchemy/alchemy.menubar.js +12 -4
  22. data/app/assets/javascripts/alchemy/alchemy.onload.js.coffee +1 -1
  23. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +103 -0
  24. data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +1 -1
  25. data/app/assets/javascripts/alchemy/alchemy.uploader.js +4 -6
  26. data/app/assets/javascripts/alchemy/preview.js +1 -0
  27. data/app/assets/stylesheets/alchemy/admin.css.scss +25 -0
  28. data/app/assets/stylesheets/alchemy/{archive.css.scss → archive.scss} +0 -2
  29. data/app/assets/stylesheets/alchemy/{base.css.scss → base.scss} +1 -57
  30. data/app/assets/stylesheets/alchemy/{custom.css → custom.scss} +0 -0
  31. data/app/assets/stylesheets/alchemy/{dashboard.css.scss → dashboard.scss} +0 -2
  32. data/app/assets/stylesheets/alchemy/defaults.scss +5 -0
  33. data/app/assets/stylesheets/alchemy/{elements.css.scss → elements.scss} +24 -37
  34. data/app/assets/stylesheets/alchemy/{errors.css.scss → errors.scss} +0 -2
  35. data/app/assets/stylesheets/alchemy/{flash.css.scss → flash.scss} +0 -2
  36. data/app/assets/stylesheets/alchemy/{form_elements.css.scss → form_elements.scss} +39 -12
  37. data/app/assets/stylesheets/alchemy/{frame.css.scss → frame.scss} +0 -2
  38. data/app/assets/stylesheets/alchemy/{icons.css.scss → icons.scss} +20 -2
  39. data/app/assets/stylesheets/alchemy/{jquery-ui.alchemy.css.scss → jquery-ui.scss} +6 -3
  40. data/app/assets/stylesheets/alchemy/{login.css.scss → login.scss} +3 -3
  41. data/app/assets/stylesheets/alchemy/menubar.css.scss +0 -1
  42. data/app/assets/stylesheets/alchemy/{_defaults.scss → mixins.scss} +2 -39
  43. data/app/assets/stylesheets/alchemy/{modules.css.scss → modules.scss} +4 -2
  44. data/app/assets/stylesheets/alchemy/notices.scss +51 -0
  45. data/app/assets/stylesheets/alchemy/{pagination.css.scss → pagination.scss} +0 -2
  46. data/app/assets/stylesheets/alchemy/{print.css → print.css.scss} +3 -3
  47. data/app/assets/stylesheets/alchemy/search.scss +63 -0
  48. data/app/assets/stylesheets/alchemy/{sitemap.css.scss → sitemap.scss} +1 -2
  49. data/app/assets/stylesheets/alchemy/{tables.css.scss → tables.scss} +16 -3
  50. data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +3 -0
  51. data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +3 -0
  52. data/app/assets/stylesheets/alchemy/{upload.css.scss → upload.scss} +0 -2
  53. data/app/assets/stylesheets/alchemy/variables.scss +33 -0
  54. data/app/controllers/alchemy/admin/elements_controller.rb +1 -2
  55. data/app/controllers/alchemy/admin/tags_controller.rb +64 -0
  56. data/app/controllers/alchemy/base_controller.rb +8 -23
  57. data/app/controllers/alchemy/pages_controller.rb +5 -18
  58. data/app/helpers/alchemy/admin/base_helper.rb +1 -1
  59. data/app/helpers/alchemy/admin/elements_helper.rb +1 -0
  60. data/app/helpers/alchemy/elements_block_helper.rb +162 -0
  61. data/app/helpers/alchemy/elements_helper.rb +41 -3
  62. data/app/helpers/alchemy/pages_helper.rb +2 -1
  63. data/app/models/alchemy/attachment.rb +2 -1
  64. data/app/models/alchemy/element.rb +13 -10
  65. data/app/models/alchemy/essence_link.rb +11 -0
  66. data/app/models/alchemy/essence_picture.rb +15 -4
  67. data/app/models/alchemy/page.rb +23 -25
  68. data/app/models/alchemy/picture.rb +2 -2
  69. data/app/models/alchemy/tag.rb +16 -0
  70. data/app/models/alchemy/user.rb +3 -1
  71. data/app/views/alchemy/admin/attachments/_attachment.html.erb +12 -12
  72. data/app/views/alchemy/admin/attachments/edit.html.erb +10 -4
  73. data/app/views/alchemy/admin/elements/_element.html.erb +10 -13
  74. data/app/views/alchemy/admin/elements/_element_foot.html.erb +1 -1
  75. data/app/views/alchemy/admin/essence_files/edit.html.erb +12 -76
  76. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +9 -4
  77. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +1 -1
  78. data/app/views/alchemy/admin/layoutpages/index.html.erb +1 -1
  79. data/app/views/alchemy/admin/pages/_external_link.html.erb +9 -4
  80. data/app/views/alchemy/admin/pages/configure.html.erb +22 -12
  81. data/app/views/alchemy/admin/pages/edit.html.erb +40 -40
  82. data/app/views/alchemy/admin/partials/_autocomplete_tag_list.html.erb +9 -0
  83. data/app/views/alchemy/admin/pictures/edit.html.erb +1 -1
  84. data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +11 -2
  85. data/app/views/alchemy/admin/tags/_radio_tag.html.erb +6 -0
  86. data/app/views/alchemy/admin/tags/_tag.html.erb +29 -0
  87. data/app/views/alchemy/admin/tags/edit.html.erb +41 -0
  88. data/app/views/alchemy/admin/tags/index.html.erb +46 -0
  89. data/app/views/alchemy/admin/tags/new.html.erb +16 -0
  90. data/app/views/alchemy/admin/users/_table.html.erb +18 -10
  91. data/app/views/alchemy/admin/users/_user.html.erb +2 -1
  92. data/app/views/alchemy/admin/users/index.html.erb +2 -1
  93. data/app/views/alchemy/elements/_article_view.html.erb +1 -1
  94. data/app/views/alchemy/essences/_essence_link_editor.html.erb +23 -0
  95. data/app/views/alchemy/essences/_essence_link_view.html.erb +0 -0
  96. data/app/views/alchemy/essences/_essence_picture_tools.html.erb +1 -1
  97. data/app/views/alchemy/essences/_essence_text_editor.html.erb +1 -9
  98. data/app/views/alchemy/essences/_linkable_essence_tools.html.erb +19 -0
  99. data/app/views/layouts/alchemy/admin.html.erb +1 -1
  100. data/config/alchemy/elements.yml +2 -0
  101. data/config/alchemy/modules.yml +12 -0
  102. data/config/alchemy/page_layouts.yml +2 -0
  103. data/config/authorization_rules.rb +2 -0
  104. data/config/locales/alchemy.de.yml +36 -5
  105. data/config/locales/alchemy.en.yml +3 -0
  106. data/config/routes.rb +6 -4
  107. data/db/migrate/20121026100815_alchemy_two_point_three.rb +0 -36
  108. data/db/migrate/20121113115120_create_alchemy_essence_links.rb +13 -0
  109. data/db/migrate/20121115100736_add_cached_tag_list_to_elements_pages_and_users.rb +7 -0
  110. data/db/migrate/20121116140636_add_cached_tag_list_to_alchemy_attachments.rb +5 -0
  111. data/db/migrate/20121116141016_change_alchemy_pictures_tag_list_column.rb +9 -0
  112. data/lib/alchemy/engine.rb +1 -1
  113. data/lib/alchemy/resource.rb +1 -1
  114. data/lib/alchemy/resources_helper.rb +1 -1
  115. data/lib/alchemy/upgrader.rb +17 -0
  116. data/lib/alchemy/version.rb +1 -1
  117. data/lib/alchemy_cms.rb +1 -0
  118. data/lib/rails/generators/alchemy/base.rb +41 -0
  119. data/lib/rails/generators/alchemy/deploy_script/templates/deploy.rb.tt +10 -3
  120. data/lib/rails/generators/alchemy/elements/elements_generator.rb +6 -14
  121. data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +8 -6
  122. data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +13 -0
  123. data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +13 -0
  124. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +4 -4
  125. data/lib/rails/generators/alchemy/elements/templates/view.html.haml +15 -0
  126. data/lib/rails/generators/alchemy/elements/templates/view.html.slim +15 -0
  127. data/lib/rails/generators/alchemy/essence/essence_generator.rb +1 -1
  128. data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +2 -3
  129. data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +4 -13
  130. data/lib/rails/generators/alchemy/page_layouts/templates/layout.html.haml +1 -0
  131. data/lib/rails/generators/alchemy/page_layouts/templates/layout.html.slim +1 -0
  132. data/spec/controllers/pages_controller_spec.rb +41 -34
  133. data/spec/dummy/app/views/layouts/application.html.erb +51 -0
  134. data/spec/dummy/db/migrate/20121026100815_alchemy_two_point_three.rb +0 -36
  135. data/spec/dummy/db/migrate/20121113115120_create_alchemy_essence_links.rb +13 -0
  136. data/spec/dummy/db/migrate/20121115100736_add_cached_tag_list_to_elements_pages_and_users.rb +7 -0
  137. data/spec/dummy/db/migrate/20121116140636_add_cached_tag_list_to_alchemy_attachments.rb +5 -0
  138. data/spec/dummy/db/migrate/20121116141016_change_alchemy_pictures_tag_list_column.rb +9 -0
  139. data/spec/dummy/db/schema.rb +24 -45
  140. data/spec/helpers/elements_block_helper_spec.rb +135 -0
  141. data/spec/helpers/elements_helper_spec.rb +43 -5
  142. data/spec/integration/pages_controller_spec.rb +22 -18
  143. data/spec/integration/translation_integration_spec.rb +0 -15
  144. data/spec/models/element_spec.rb +44 -36
  145. data/spec/models/essence_picture_spec.rb +22 -6
  146. data/spec/models/page_spec.rb +28 -0
  147. data/spec/spec_helper.rb +8 -3
  148. data/spec/support/ci/install_phantomjs +6 -0
  149. metadata +82 -40
  150. data/app/assets/images/alchemy/gui/navi-tab.png +0 -0
  151. data/app/assets/images/alchemy/gui/shading_90.png +0 -0
  152. data/app/assets/images/alchemy/jquery-sb/select_arrow.gif +0 -0
  153. data/app/assets/images/alchemy/jquery-sb/select_arrow_bg.gif +0 -0
  154. data/app/assets/images/alchemy/jquery-sb/select_arrow_bg_hover.gif +0 -0
  155. data/app/assets/javascripts/alchemy/alchemy.preview.js +0 -98
  156. data/app/assets/stylesheets/alchemy/alchemy.css +0 -21
  157. data/app/controllers/alchemy/admin/essence_audios_controller.rb +0 -12
  158. data/app/controllers/alchemy/admin/essence_flashes_controller.rb +0 -12
  159. data/app/controllers/alchemy/admin/essence_videos_controller.rb +0 -12
  160. data/app/models/alchemy/essence_audio.rb +0 -14
  161. data/app/models/alchemy/essence_flash.rb +0 -12
  162. data/app/models/alchemy/essence_video.rb +0 -20
  163. data/app/views/alchemy/essences/_essence_audio_editor.html.erb +0 -1
  164. data/app/views/alchemy/essences/_essence_audio_view.html.erb +0 -33
  165. data/app/views/alchemy/essences/_essence_flash_editor.html.erb +0 -1
  166. data/app/views/alchemy/essences/_essence_flash_view.html.erb +0 -26
  167. data/app/views/alchemy/essences/_essence_video_editor.html.erb +0 -1
  168. data/app/views/alchemy/essences/_essence_video_view.html.erb +0 -35
@@ -1,5 +1,3 @@
1
- @import "alchemy/defaults";
2
-
3
1
  #top_menu {
4
2
  position: fixed;
5
3
  top: 0;
@@ -1,5 +1,3 @@
1
- @import "alchemy/defaults";
2
-
3
1
  .icon {
4
2
  @include inline-block;
5
3
  background: url('icons.png') no-repeat;
@@ -209,6 +207,26 @@
209
207
  background-position: -96px -136px;
210
208
  }
211
209
 
210
+ &.tag_add {
211
+ background-position: -384px -168px;
212
+ }
213
+
214
+ &.tag {
215
+ background-position: -288px -168px;
216
+ }
217
+
218
+ &.tag_label {
219
+ background: url('ui-icons_666666_256x240.png') -240px -97px;
220
+ }
221
+
222
+ &.tag_edit {
223
+ background-position: -352px -168px;
224
+ }
225
+
226
+ &.tag_delete {
227
+ background-position: -320px -168px;
228
+ }
229
+
212
230
  &.text {
213
231
  background-position: -448px -136px;
214
232
  }
@@ -1,5 +1,3 @@
1
- @import "alchemy/defaults";
2
-
3
1
  /*
4
2
  * jQuery UI CSS Framework 1.8.7
5
3
  *
@@ -1293,6 +1291,9 @@
1293
1291
  margin: 0;
1294
1292
  display: block;
1295
1293
  float: left;
1294
+ background-color: white;
1295
+ @include box-shadow(0 4px 16px $dark-gray);
1296
+ border: $default-border;
1296
1297
  }
1297
1298
 
1298
1299
  #alchemy .ui-menu .ui-menu {
@@ -1319,7 +1320,9 @@
1319
1320
  #alchemy .ui-menu .ui-menu-item a.ui-state-hover,
1320
1321
  #alchemy .ui-menu .ui-menu-item a.ui-state-active {
1321
1322
  font-weight: normal;
1322
- margin: -1px;
1323
+ cursor: pointer;
1324
+ background-color: #e6f0f5;
1325
+ color: $text-color;
1323
1326
  }
1324
1327
 
1325
1328
  /*
@@ -1,5 +1,3 @@
1
- @import "alchemy/defaults";
2
-
3
1
  div#alchemy_greeting {
4
2
  width: 370px;
5
3
  margin-right: auto;
@@ -21,12 +19,14 @@ div#alchemy_greeting {
21
19
  }
22
20
 
23
21
  div.login_signup_box {
24
- width: 360px;
22
+ width: 390px;
25
23
  padding: 4*$default-padding;
26
24
  border: $default-border;
27
25
  background-color: $medium-gray;
28
26
  @include rounded-corner;
29
27
  margin: 2em auto;
28
+
29
+ input[type="text"], input.thin_border { width: 240px }
30
30
  }
31
31
 
32
32
  html.no-js {
@@ -1,7 +1,6 @@
1
1
  /*
2
2
  *= require_self
3
3
  */
4
-
5
4
  @import "alchemy/defaults";
6
5
 
7
6
  @mixin transition {
@@ -1,41 +1,3 @@
1
- @import "compass/css3";
2
- @import "compass/css3/user-interface";
3
- @import "sassy-buttons";
4
-
5
- $text-color: #333333;
6
- $light-blue: #C6DBE7;
7
- $blue: darken($light-blue, 15%);
8
- $very-light-blue: lighten($light-blue, 12%);
9
- $light-gray: #EDEDED;
10
- $medium-gray: #E3E3E3;
11
- $dark-gray: #666666;
12
-
13
- $default-padding: 4px;
14
- $default-margin: $default-padding;
15
-
16
- $default-font-face: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, Tahoma, sans-serif;
17
- $default-font-size: 12px;
18
- $default-font-style: $default-font-size $default-font-face;
19
-
20
- $default-border-color: #AFAFAF;
21
- $default-border-width: 1px;
22
- $default-border-style: solid;
23
- $default-border: $default-border-width $default-border-style $default-border-color;
24
- $default-border-radius: 3px;
25
-
26
- $button-bg-color: #F7F7F7;
27
- $button-hover-bg-color: #e6f0f5;
28
- $button-border-color: #9A9A9A;
29
- $button-hover-border-color: #888888;
30
- $button-text-shadow: #f2f2f2 1px 1px 0;
31
-
32
- $sb-base-color: $light-gray;
33
- $sb-border-radius: $default-border-radius;
34
- $sb-font-size: $default-font-size;
35
- $sb-text-color: $text-color;
36
- $sb-ie-support: true;
37
- $default-form-field-margin: 0.3em 0;
38
-
39
1
  @mixin rounded-corner($radius: $default-border-radius) {
40
2
  @include border-radius($radius);
41
3
  }
@@ -69,7 +31,8 @@ $default-form-field-margin: 0.3em 0;
69
31
  }
70
32
 
71
33
  @mixin default-button-style {
72
- @include sassy-button('shiny');
34
+ @include sassy-button('shiny', $sb-border-radius, $sb-font-size, $sb-base-color, $sb-second-color, $sb-text-color, $sb-text-style, $sb-pseudo-states, $sb-ie-support);
35
+
73
36
  border-color: $button-border-color;
74
37
  margin: $default-form-field-margin;
75
38
  }
@@ -1,5 +1,3 @@
1
- @import "alchemy/defaults";
2
-
3
1
  span.icon.module {
4
2
  width: 24px;
5
3
  height: 24px;
@@ -26,6 +24,10 @@ span.module.languages {
26
24
  background-position: -200px 0;
27
25
  }
28
26
 
27
+ span.module.tags {
28
+ background-position: -280px 0;
29
+ }
30
+
29
31
  span.module.exit {
30
32
  background-position: -160px 0;
31
33
  }
@@ -0,0 +1,51 @@
1
+ @mixin message {
2
+ padding: 8px 8px 8px 32px;
3
+ line-height: 17px;
4
+ border-width: 1px;
5
+ border-style: solid;
6
+ @include rounded-corner;
7
+ position: relative;
8
+ margin-bottom: 8px;
9
+
10
+ h2 { margin-top: 0 }
11
+
12
+ span.icon {
13
+ position: absolute;
14
+ left: 8px;
15
+ top: 8px;
16
+ }
17
+
18
+ &.footnote {
19
+ font-size: 10px;
20
+ margin: 16px;
21
+ }
22
+
23
+ ol {
24
+ margin: 0 0 8px;
25
+ padding-left: 20px;
26
+
27
+ li {
28
+ text-indent: 0;
29
+ margin-bottom: 4px;
30
+ }
31
+ }
32
+ }
33
+
34
+ div.info {
35
+ @include message;
36
+ color: $text-color;
37
+ background-color: #eaf4f9;
38
+ border-color: #0b5c84;
39
+ }
40
+
41
+ div.error {
42
+ @include message;
43
+ background-color: #f1c9ca;
44
+ color: #931f23;
45
+ }
46
+
47
+ div.warning {
48
+ @include message;
49
+ background-color: #f7efb8;
50
+ color: #756f47;
51
+ }
@@ -1,5 +1,3 @@
1
- @import "alchemy/defaults";
2
-
3
1
  div.pagination {
4
2
  clear: both;
5
3
  zoom: 1;
@@ -1,7 +1,7 @@
1
1
  /*
2
- *= require alchemy/base
3
- *= require_self
4
- */
2
+ *= require_self
3
+ */
4
+ @import "alchemy/defaults";
5
5
 
6
6
  div#main_menu,
7
7
  div#top_menu,
@@ -0,0 +1,63 @@
1
+ #toolbar div.search_field {
2
+ position: relative;
3
+ float: left;
4
+ margin-bottom: $default-margin;
5
+ }
6
+
7
+ div#image_assign_filter_and_image_sizing form div.search_field {
8
+ margin-right: 4px;
9
+ float: left;
10
+ position: relative;
11
+ }
12
+
13
+ #alchemy a.search_field_clear {
14
+ width: 16px;
15
+ height: 16px;
16
+ background: url('ui-icons_666666_256x240.png') no-repeat -80px -128px;
17
+ position: absolute;
18
+ right: 8px;
19
+ top: 7px;
20
+ @include rounded-corner;
21
+ }
22
+
23
+ td#tags_tag_list {
24
+ text-align: left;
25
+
26
+ ul.tags {
27
+ max-height: 10em;
28
+ padding: 1px;
29
+ margin: 0;
30
+ margin-top: 2px;
31
+ overflow: auto;
32
+ text-align: left;
33
+ list-style-type: none;
34
+
35
+ li {
36
+ background-color: white;
37
+ padding: 4px;
38
+ margin: 0;
39
+
40
+ &.odd {
41
+ background-color: #eaf3f9;
42
+ }
43
+ }
44
+ }
45
+
46
+ .js_filter_field_box {
47
+ float: none;
48
+ margin: 0;
49
+
50
+ .js_filter_field {
51
+ width: 260px;
52
+ border-radius: 3px;
53
+ -o-border-radius: 3px;
54
+ -ms-border-radius: 3px;
55
+ -moz-border-radius: 3px;
56
+ -webkit-border-radius: 3px;
57
+ }
58
+
59
+ label {
60
+ display: none
61
+ }
62
+ }
63
+ }
@@ -1,5 +1,3 @@
1
- @import "alchemy/defaults";
2
-
3
1
  div#sort_panel {
4
2
  background: $medium-gray;
5
3
  padding: 60px 0 8px 0;
@@ -95,6 +93,7 @@ div.sitemap_page:hover a.sitemap_pagename_link {
95
93
  }
96
94
 
97
95
  div.sitemap_left_images {
96
+ width: 16px;
98
97
  margin-top: 3px;
99
98
  float: left;
100
99
  margin-right: 8px;
@@ -1,5 +1,3 @@
1
- @import "alchemy/defaults";
2
-
3
1
  table {
4
2
  border-style: none;
5
3
  border-spacing: 0 $default-padding;
@@ -9,7 +7,6 @@ table {
9
7
 
10
8
  td, th {
11
9
  padding: $default-padding;
12
- white-space: nowrap;
13
10
  vertical-align: top;
14
11
  line-height: 18px;
15
12
 
@@ -19,6 +16,7 @@ table {
19
16
  }
20
17
 
21
18
  th {
19
+ white-space: nowrap;
22
20
  text-align: left;
23
21
  height: 22px;
24
22
  vertical-align: top;
@@ -45,6 +43,10 @@ td.input, td.submit, td.select, td.value {
45
43
  }
46
44
  }
47
45
 
46
+ td.input {
47
+ .autocomplete_tag_list { float: right }
48
+ }
49
+
48
50
  td.submit p.foot_note { float: left; padding-top: 1em }
49
51
 
50
52
  td.label {
@@ -171,6 +173,12 @@ td.role {
171
173
  width: 10%;
172
174
  }
173
175
 
176
+ th.count, td.count {
177
+ width: 120px;
178
+ text-align: right;
179
+ padding-right: 16px;
180
+ }
181
+
174
182
  table td.rights {
175
183
  width: 60px;
176
184
  }
@@ -194,4 +202,9 @@ table tr.even td {
194
202
  th.icon, td.icon {
195
203
  background: none;
196
204
  display: table-cell;
205
+ vertical-align: top;
206
+ }
207
+
208
+ td.file_name {
209
+ word-break: break-all;
197
210
  }
@@ -1,3 +1,6 @@
1
+ /*
2
+ *= require_self
3
+ */
1
4
  @import "alchemy/defaults";
2
5
 
3
6
  body, td, pre {
@@ -1,3 +1,6 @@
1
+ /*
2
+ *= require_self
3
+ */
1
4
  @import "alchemy/defaults";
2
5
 
3
6
  /* Generic */
@@ -1,5 +1,3 @@
1
- @import "alchemy/defaults";
2
-
3
1
  a#uploadswitcher, a.underline {
4
2
  text-decoration: underline;
5
3
  }
@@ -0,0 +1,33 @@
1
+ $text-color: #333333;
2
+ $light-blue: #C6DBE7;
3
+ $blue: darken($light-blue, 15%);
4
+ $very-light-blue: lighten($light-blue, 12%);
5
+ $light-gray: #EDEDED;
6
+ $medium-gray: #E3E3E3;
7
+ $dark-gray: #666666;
8
+
9
+ $default-padding: 4px;
10
+ $default-margin: $default-padding;
11
+
12
+ $default-font-face: "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Verdana, Tahoma, sans-serif;
13
+ $default-font-size: 12px;
14
+ $default-font-style: $default-font-size $default-font-face;
15
+
16
+ $default-border-color: #AFAFAF;
17
+ $default-border-width: 1px;
18
+ $default-border-style: solid;
19
+ $default-border: $default-border-width $default-border-style $default-border-color;
20
+ $default-border-radius: 3px;
21
+
22
+ $button-bg-color: #F7F7F7;
23
+ $button-hover-bg-color: #e6f0f5;
24
+ $button-border-color: #9A9A9A;
25
+ $button-hover-border-color: #888888;
26
+ $button-text-shadow: #f2f2f2 1px 1px 0;
27
+
28
+ $sb-base-color: $light-gray;
29
+ $sb-border-radius: $default-border-radius;
30
+ $sb-font-size: $default-font-size;
31
+ $sb-text-color: $text-color;
32
+ $sb-ie-support: true;
33
+ $default-form-field-margin: 0.3em 0;
@@ -66,8 +66,7 @@ module Alchemy
66
66
  @element = Element.find_by_id(params[:id])
67
67
  if @element.save_contents(params)
68
68
  @page = @element.page
69
- @element.public = !params[:public].nil?
70
- @element_validated = @element.save!
69
+ @element_validated = @element.update_attributes!(params[:element])
71
70
  else
72
71
  @element_validated = false
73
72
  @notice = t('Validation failed')
@@ -0,0 +1,64 @@
1
+ module Alchemy
2
+ module Admin
3
+ class TagsController < BaseController
4
+
5
+ before_filter :load_tag, :only => [:edit, :update, :destroy]
6
+
7
+ def index
8
+ @tags = ActsAsTaggableOn::Tag.where(
9
+ "name LIKE '%#{params[:query]}%'"
10
+ ).page(params[:page] || 1).per(per_page_value_for_screen_size).order("name ASC")
11
+ end
12
+
13
+ def new
14
+ @tag = ActsAsTaggableOn::Tag.new
15
+ render :layout => false
16
+ end
17
+
18
+ def create
19
+ @tag = ActsAsTaggableOn::Tag.create(params[:tag])
20
+ render_errors_or_redirect @tag, admin_tags_path, t('New Tag Created')
21
+ end
22
+
23
+ def edit
24
+ @tags = ActsAsTaggableOn::Tag.order("name ASC").all - [@tag]
25
+ render :layout => false
26
+ end
27
+
28
+ def update
29
+ if params[:replace]
30
+ @new_tag = ActsAsTaggableOn::Tag.find(params[:tag][:merge_to])
31
+ Tag.replace(@tag, @new_tag)
32
+ operation_text = t('Replaced Tag %{old_tag} with %{new_tag}') % {:old_tag => @tag.name, :new_tag => @new_tag.name}
33
+ @tag.destroy
34
+ else
35
+ @tag.update_attributes(params[:tag])
36
+ @tag.save
37
+ operation_text = t(:successfully_updated_tag)
38
+ end
39
+ render_errors_or_redirect @tag, admin_tags_path, operation_text
40
+ end
41
+
42
+ def destroy
43
+ if request.delete?
44
+ @tag.destroy
45
+ flash[:notice] = t(:successfully_deleted_tag)
46
+ end
47
+ @redirect_url = admin_tags_path
48
+ render :action => :redirect
49
+ end
50
+
51
+ def autocomplete
52
+ items = ActsAsTaggableOn::Tag.where(['LOWER(name) LIKE ?', "#{params[:term].downcase}%"])
53
+ render :json => json_for_autocomplete(items, :name)
54
+ end
55
+
56
+ private
57
+
58
+ def load_tag
59
+ @tag = ActsAsTaggableOn::Tag.find(params[:id])
60
+ end
61
+
62
+ end
63
+ end
64
+ end