alchemy_cms 2.1.2 → 2.1.3

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 (29) hide show
  1. data/app/assets/javascripts/alchemy/alchemy.base.js +3 -1
  2. data/app/assets/javascripts/alchemy/alchemy.datepicker.js +40 -0
  3. data/app/assets/javascripts/alchemy/alchemy.elements_window.js +1 -0
  4. data/app/assets/javascripts/alchemy/alchemy.js +1 -0
  5. data/app/assets/javascripts/alchemy/alchemy.windows.js +4 -0
  6. data/app/assets/stylesheets/alchemy/buttons.css.scss +2 -4
  7. data/app/assets/stylesheets/alchemy/jquery-ui.alchemy.css.scss +31 -20
  8. data/app/assets/stylesheets/alchemy/sitemap.css.scss +9 -0
  9. data/app/controllers/alchemy/admin/essence_pictures_controller.rb +3 -4
  10. data/app/controllers/alchemy/admin/pages_controller.rb +6 -1
  11. data/app/controllers/alchemy/admin/resources_controller.rb +2 -1
  12. data/app/helpers/alchemy/admin/base_helper.rb +18 -0
  13. data/app/helpers/alchemy/admin/contents_helper.rb +3 -3
  14. data/app/models/alchemy/page.rb +1 -1
  15. data/app/models/alchemy/picture.rb +1 -1
  16. data/app/views/alchemy/admin/contents/new.html.erb +3 -3
  17. data/app/views/alchemy/admin/essence_pictures/assign.js.erb +1 -1
  18. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +48 -37
  19. data/app/views/alchemy/admin/pages/index.html.erb +10 -1
  20. data/app/views/alchemy/elements/_header_editor.html.erb +1 -1
  21. data/app/views/alchemy/elements/_intro_image_text_editor.html.erb +1 -1
  22. data/app/views/alchemy/essences/_essence_date_editor.html.erb +9 -8
  23. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +1 -1
  24. data/app/views/layouts/alchemy/admin.html.erb +3 -1
  25. data/config/alchemy/page_layouts.yml +1 -1
  26. data/config/locales/alchemy.de.yml +8 -4
  27. data/config/locales/alchemy.en.yml +7 -3
  28. data/lib/alchemy/version.rb +1 -1
  29. metadata +33 -32
@@ -229,7 +229,9 @@ if (typeof(Alchemy) === 'undefined') {
229
229
  var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
230
230
  if (results)
231
231
  return results[1] || 0;
232
- }
232
+ },
233
+
234
+ locale : 'en'
233
235
 
234
236
  });
235
237
 
@@ -0,0 +1,40 @@
1
+ if (typeof(Alchemy) === 'undefined') {
2
+ var Alchemy = {};
3
+ }
4
+
5
+ (function($) {
6
+
7
+ $.extend(Alchemy, {
8
+
9
+ Datepicker: function (selector) {
10
+ var datepicker_options = {
11
+ dateFormat: 'yy-mm-dd',
12
+ changeMonth: true,
13
+ changeYear: true,
14
+ showWeek: true,
15
+ showButtonPanel: true,
16
+ showOtherMonths: true
17
+ };
18
+ if (typeof(selector) === 'undefined') {
19
+ var selector = 'input[type="date"], input.date'
20
+ }
21
+ if (Alchemy.locale === 'de') {
22
+ $.extend(datepicker_options, {
23
+ dateFormat: 'dd.mm.yy',
24
+ dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
25
+ dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
26
+ monthNames: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
27
+ monthNamesShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
28
+ closeText: 'Ok',
29
+ currentText: 'Heute',
30
+ weekHeader: 'KW',
31
+ nextText: 'nächster',
32
+ prevText: 'vorheriger'
33
+ });
34
+ }
35
+ $(selector).datepicker(datepicker_options);
36
+ }
37
+
38
+ });
39
+
40
+ })(jQuery);
@@ -37,6 +37,7 @@ if (typeof(Alchemy) === 'undefined') {
37
37
  success: function(data, textStatus, XMLHttpRequest) {
38
38
  $dialog.html(data);
39
39
  Alchemy.ButtonObserver('#alchemyElementWindow .button');
40
+ Alchemy.Datepicker('#alchemyElementWindow input.date, #alchemyElementWindow input[type="date"]');
40
41
  callback.call();
41
42
  },
42
43
  error: function(XMLHttpRequest, textStatus, errorThrown) {
@@ -9,6 +9,7 @@
9
9
  //= require alchemy/alchemy.routes
10
10
  //= require alchemy/alchemy.base
11
11
  //= require alchemy/alchemy.buttons
12
+ //= require alchemy/alchemy.datepicker
12
13
  //= require alchemy/alchemy.dirty
13
14
  //= require alchemy/alchemy.dragndrop
14
15
  //= require alchemy/alchemy.element_editor_selector
@@ -163,10 +163,14 @@ if (typeof(Alchemy) === 'undefined') {
163
163
  });
164
164
  }
165
165
  Alchemy.SelectBox('#alchemyOverlay select');
166
+ Alchemy.Datepicker('#alchemyOverlay input.date, #alchemyOverlay input[type="date"]');
166
167
  Alchemy.ButtonObserver('#alchemyOverlay .button');
167
168
  },
168
169
  error: function(XMLHttpRequest, textStatus, errorThrown) {
169
170
  Alchemy.AjaxErrorHandler($dialog, XMLHttpRequest.status, textStatus, errorThrown);
171
+ },
172
+ complete: function(jqXHR, textStatus) {
173
+ Alchemy.enableButton('.button');
170
174
  }
171
175
  });
172
176
  },
@@ -60,10 +60,8 @@ input.button {
60
60
  }
61
61
 
62
62
  button.button {
63
- line-height: 19px;
64
- padding: 2px 8px 2px 8px;
65
- height: 25px;
66
- font-size: 11px;
63
+ line-height: 21px;
64
+ padding: 0px 8px;
67
65
  }
68
66
 
69
67
  .button img {
@@ -184,7 +184,7 @@
184
184
  color: $text-color;;
185
185
  text-decoration: none;
186
186
  text-shadow: none;
187
- background-color: #e5e5e5;
187
+ background-color: $button-hover-bg-color;
188
188
  }
189
189
 
190
190
  #alchemy .ui-state-active.stNav.stNext {
@@ -223,18 +223,18 @@
223
223
  ----------------------------------*/
224
224
 
225
225
  #alchemy .ui-state-highlight, #alchemy .ui-widget-content .ui-state-highlight, #alchemy .ui-widget-header .ui-state-highlight {
226
- border: 1px solid #f9dd34;
227
- background: #ffef8f image-url('alchemy/ui-bg_highlight-soft_25_ffef8f_1x100.png') 50% top repeat-x;
228
- color: #363636;
226
+ border: 1px solid $dark-gray;
227
+ background: $light-blue;
228
+ color: $text-color;
229
229
  }
230
230
 
231
231
  #alchemy .ui-state-highlight a, #alchemy .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a {
232
- color: #363636;
232
+ color: $text-color;
233
233
  }
234
234
 
235
235
  #alchemy .ui-state-error, #alchemy .ui-widget-content .ui-state-error, #alchemy .ui-widget-header .ui-state-error {
236
236
  border: 1px solid #cd0a0a;
237
- background: #cd0a0a image-url('alchemy/ui-bg_flat_15_cd0a0a_40x100.png') 50% 50% repeat-x;
237
+ background: #cd0a0a;
238
238
  color: #ffffff;
239
239
  }
240
240
 
@@ -247,13 +247,13 @@
247
247
  }
248
248
 
249
249
  #alchemy .ui-priority-primary, #alchemy .ui-widget-content .ui-priority-primary, #alchemy .ui-widget-header .ui-priority-primary {
250
- font-weight: bold;
250
+ font-weight: normal;
251
+ background-position: 50% -73px;
251
252
  }
252
253
 
253
254
  #alchemy .ui-priority-secondary, #alchemy .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary {
254
- opacity: .7;
255
- filter: Alpha(Opacity=70);
256
255
  font-weight: normal;
256
+ background-position: 50% -73px;
257
257
  }
258
258
 
259
259
  #alchemy .ui-state-disabled, #alchemy .ui-widget-content .ui-state-disabled, #alchemy .ui-widget-header .ui-state-disabled {
@@ -294,11 +294,11 @@
294
294
  }
295
295
 
296
296
  #alchemy .ui-state-highlight .ui-icon {
297
- background-image: image-url('alchemy/ui-icons_2e83ff_256x240.png');
297
+ background-image: image-url('alchemy/ui-icons_666666_256x240.png');
298
298
  }
299
299
 
300
300
  #alchemy .ui-state-error .ui-icon, #alchemy .ui-state-error-text .ui-icon {
301
- background-image: image-url('alchemy/ui-icons_ffffff_256x240.png');
301
+ background-image: image-url('alchemy/ui-icons_666666_256x240.png');
302
302
  }
303
303
 
304
304
  /* positioning */
@@ -1758,40 +1758,43 @@ button.ui-button::-moz-focus-inner {
1758
1758
 
1759
1759
  #alchemy .ui-datepicker {
1760
1760
  width: 17em;
1761
- padding: .2em .2em 0;
1761
+ padding: $default-padding;
1762
1762
  display: none;
1763
1763
  }
1764
1764
 
1765
1765
  #alchemy .ui-datepicker .ui-datepicker-header {
1766
1766
  position: relative;
1767
- padding: .2em 0;
1767
+ padding: $default-padding;
1768
+ margin: -$default-padding;
1768
1769
  }
1769
1770
 
1770
1771
  #alchemy .ui-datepicker .ui-datepicker-prev, #alchemy .ui-datepicker .ui-datepicker-next {
1771
1772
  position: absolute;
1772
- top: 2px;
1773
+ top: $default-padding;
1773
1774
  width: 1.8em;
1774
1775
  height: 1.8em;
1775
1776
  }
1776
1777
 
1777
1778
  #alchemy .ui-datepicker .ui-datepicker-prev-hover, #alchemy .ui-datepicker .ui-datepicker-next-hover {
1778
- top: 1px;
1779
+ top: $default-padding;
1779
1780
  }
1780
1781
 
1781
1782
  #alchemy .ui-datepicker .ui-datepicker-prev {
1782
- left: 2px;
1783
+ left: $default-padding;
1783
1784
  }
1784
1785
 
1785
1786
  #alchemy .ui-datepicker .ui-datepicker-next {
1786
- right: 2px;
1787
+ right: $default-padding;
1787
1788
  }
1788
1789
 
1789
1790
  #alchemy .ui-datepicker .ui-datepicker-prev-hover {
1790
- left: 1px;
1791
+ top: $default-padding - 1;
1792
+ left: $default-padding - 1;
1791
1793
  }
1792
1794
 
1793
1795
  #alchemy .ui-datepicker .ui-datepicker-next-hover {
1794
- right: 1px;
1796
+ top: $default-padding - 1;
1797
+ right: $default-padding - 1;
1795
1798
  }
1796
1799
 
1797
1800
  #alchemy .ui-datepicker .ui-datepicker-prev span, #alchemy .ui-datepicker .ui-datepicker-next span {
@@ -1825,7 +1828,7 @@ button.ui-button::-moz-focus-inner {
1825
1828
 
1826
1829
  #alchemy .ui-datepicker table {
1827
1830
  width: 100%;
1828
- font-size: .9em;
1831
+ font-size: 1em;
1829
1832
  border-collapse: collapse;
1830
1833
  margin: 0 0 .4em;
1831
1834
  }
@@ -1842,6 +1845,14 @@ button.ui-button::-moz-focus-inner {
1842
1845
  padding: 1px;
1843
1846
  }
1844
1847
 
1848
+ #alchemy .ui-datepicker td.ui-datepicker-week-col {
1849
+ padding-left: $default-padding;
1850
+ }
1851
+
1852
+ #alchemy .ui-datepicker td.ui-datepicker-current-day {
1853
+ background-color: $dark-gray;
1854
+ }
1855
+
1845
1856
  #alchemy .ui-datepicker td span, #alchemy .ui-datepicker td a {
1846
1857
  display: block;
1847
1858
  padding: .2em;
@@ -283,3 +283,12 @@ a.folder_link {
283
283
  margin-top: 3px;
284
284
  margin-left: 2px;
285
285
  }
286
+
287
+ #create_language_tree_form {
288
+ width: 360px;
289
+
290
+ &.ui-dialog-content div.info {
291
+ margin: 2*$default-padding;
292
+ margin-bottom: 0;
293
+ }
294
+ }
@@ -54,11 +54,10 @@ module Alchemy
54
54
  @content = Content.find(params[:id])
55
55
  @picture = Picture.find(params[:picture_id])
56
56
  @content.essence.picture = @picture
57
- @options = params[:options]
58
- # If options params come from Flash uploader then we have to parse them as hash.
57
+ @options = params[:options] || {}
59
58
  @element = @content.element
60
- contents_of_this_type = @element.contents.find_all_by_essence_type('Alchemy::EssencePicture')
61
- @dragable = contents_of_this_type.length > 1
59
+ @dragable = @options[:grouped]
60
+ # If options params come from Flash uploader then we have to parse them as hash.
62
61
  if @options.is_a?(String)
63
62
  @options = Rack::Utils.parse_query(@options)
64
63
  end
@@ -16,7 +16,12 @@ module Alchemy
16
16
  @locked_pages = Page.all_locked_by(current_user)
17
17
  @languages = Language.all
18
18
  if !@page_root
19
- @language = @languages.find { |language| language.id == session[:language_id] }
19
+ if @languages.length == 1
20
+ @language = @languages.first
21
+ store_language_in_session(@language)
22
+ else
23
+ @language = @languages.find { |language| language.id == session[:language_id] }
24
+ end
20
25
  @languages_with_page_tree = Language.all_for_created_language_trees if @language
21
26
  end
22
27
  end
@@ -23,8 +23,9 @@ module Alchemy
23
23
 
24
24
  def index
25
25
  if !params[:query].blank?
26
+ search_terms = ActiveRecord::Base.sanitize("%#{params[:query]}%")
26
27
  items = resource_model.where(searchable_resource_attributes.map { |attribute|
27
- "`#{namespaced_resources_name}`.`#{attribute[:name]}` LIKE '%#{params[:query]}%'"
28
+ "`#{namespaced_resources_name}`.`#{attribute[:name]}` LIKE #{search_terms}"
28
29
  }.join(" OR "))
29
30
  else
30
31
  items = resource_model
@@ -430,6 +430,24 @@ module Alchemy
430
430
  end
431
431
  end
432
432
 
433
+ # Renders a textfield ready to display a datepicker
434
+ #
435
+ # Uses a HTML5 +input type="date"+ field.
436
+ #
437
+ # Pass a type as third option to override that. But old browsers hand this as text field anyway. So there is no need to override that.
438
+ #
439
+ # === Example
440
+ #
441
+ # <%= alchemy_datepicker(@person, :birthday) %>
442
+ #
443
+ def alchemy_datepicker(object, method, html_options={})
444
+ text_field(object.class.name.underscore.to_sym, method.to_sym, {
445
+ :type => 'date',
446
+ :class => 'thin_border date',
447
+ :value => object.send(method.to_sym).nil? ? nil : l(object.send(method.to_sym), :format => :datepicker)
448
+ }.merge(html_options))
449
+ end
450
+
433
451
  end
434
452
  end
435
453
  end
@@ -35,16 +35,16 @@ module Alchemy
35
35
  # Renders a link to show the new content overlay
36
36
  def render_new_content_link(element)
37
37
  link_to_overlay_window(
38
- t('add new content'),
38
+ render_icon('create') + t('add new content'),
39
39
  alchemy.new_admin_element_content_path(element),
40
40
  {
41
- :size => '305x40',
41
+ :size => '335x70',
42
42
  :title => t('Select an content'),
43
43
  :overflow => true
44
44
  },
45
45
  {
46
46
  :id => "add_content_for_element_#{element.id}",
47
- :class => 'button new_content_link'
47
+ :class => 'small button with_icon new_content_link'
48
48
  }
49
49
  )
50
50
  end
@@ -377,7 +377,7 @@ module Alchemy
377
377
  :locked => false,
378
378
  :locked_by => nil
379
379
  )
380
- page = self.new(attributes.except(["id", "updated_at", "created_at", "created_id", "updater_id"]))
380
+ page = self.new(attributes.except(:id, :updated_at, :created_at, :created_id, :updater_id, :lft, :rgt, :depth))
381
381
  if page.save
382
382
  # copy the page´s cells
383
383
  source.cells.each do |cell|
@@ -48,7 +48,7 @@ module Alchemy
48
48
  end
49
49
 
50
50
  def humanized_name
51
- (image_filename.downcase.gsub(/\.#{Regexp.quote(suffix)}$/, '')).humanize
51
+ (image_filename.to_s.downcase.gsub(/\.#{Regexp.quote(suffix)}$/, '')).humanize
52
52
  end
53
53
 
54
54
  # Returning true if picture's width is greater than it's height
@@ -4,11 +4,11 @@
4
4
  <table>
5
5
  <tr>
6
6
  <td>
7
- <%= f.select 'name', @contents.map { |a| [t("alchemy.content_names.#{a['name']}"), a['name']] }, :style => 'width: 200px' %>
7
+ <%= f.select 'name', @contents.map { |a| [t("content_names.#{a['name']}"), a['name']] } %>
8
8
  <%= hidden_field_tag('options', @options) %>
9
9
  </td>
10
- <td>
11
- &nbsp;<%= f.button t('save'), :class => 'button' %>
10
+ <td class="submit">
11
+ <%= f.button t('save'), :class => 'button' %>
12
12
  </td>
13
13
  </tr>
14
14
  </table>
@@ -3,7 +3,7 @@
3
3
  $('#<%= content_dom_id(@content) -%>').replaceWith('<%= escape_javascript(
4
4
  render(
5
5
  :partial => "alchemy/essences/essence_picture_editor",
6
- :locals => {:content => @content, :options => params[:options]}
6
+ :locals => {:content => @content, :options => @options}
7
7
  )
8
8
  ) -%>');
9
9
  <%- if @content.siblings.essence_pictures.count > 1 -%>
@@ -1,41 +1,52 @@
1
- <div class="info">
2
- <%= render_icon('info') %>
3
- <%= t("language_does_not_exist") %>
4
- </div>
1
+ <div id="create_language_tree_form" style="display: none">
2
+ <div class="info">
3
+ <%= render_icon('info') %>
4
+ <%= t("language_does_not_exist") %>
5
+ </div>
5
6
  <%- if @language -%>
6
- <%- if @languages_with_page_tree.size >= 1 -%>
7
- <p><%= t("want_to_make_copy_of_existing_language") %></p>
8
- <%= form_tag(alchemy.copy_language_tree_admin_pages_path) do %>
9
- <table style="width: 135px;">
10
- <tr>
11
- <td>
12
- <%= select_tag("languages[old_lang_id]", options_for_select(@languages_with_page_tree.map{ |l| [l.name, l.id] }), :class => "medium_long") %>
13
- <%= hidden_field_tag("languages[new_lang_id]", @language.id) %>
14
- </td>
15
- <td>
16
- <%= hidden_field_tag("layoutpage", params[:action] == "layoutpages") if params[:action] == "layoutpages" %>
17
- <%= submit_tag t("copy"), :class => 'button' %>
18
- </td>
19
- </tr>
20
- </table>
7
+
8
+ <%- if @languages_with_page_tree.size >= 1 -%>
9
+ <%= form_tag(alchemy.copy_language_tree_admin_pages_path) do %>
10
+ <h2><%= t('copy_language_tree_heading') %></h2>
11
+ <p><%= t("want_to_make_copy_of_existing_language") %></p>
12
+ <table>
13
+ <tr>
14
+ <td class="label"><%= label_tag('languages[old_lang_id]', t('Language tree')) %></td>
15
+ <td class="select">
16
+ <%= select_tag("languages[old_lang_id]", options_for_select(@languages_with_page_tree.map{ |l| [l.name, l.id] }), :class => "medium_long") %>
17
+ <%= hidden_field_tag("languages[new_lang_id]", @language.id) %>
18
+ </td>
19
+ </tr>
20
+ <tr>
21
+ <td class="submit" colspan="2">
22
+ <%= hidden_field_tag("layoutpage", params[:action] == "layoutpages") if params[:action] == "layoutpages" %>
23
+ <%= submit_tag t("copy"), :class => 'button' %>
24
+ </td>
25
+ </tr>
26
+ </table>
27
+ <% end %>
28
+ <%- end -%>
29
+
30
+ <%- if params[:action] == "index" -%>
31
+
32
+ <%= form_for([:admin, Alchemy::Page.new], :remote => true) do |form| %>
33
+ <h2><%= t('create_language_tree_heading') %></h2>
34
+ <p><%= t("want_to_create_new_language") %></p>
35
+ <%= form.hidden_field :name, :value => @language.frontpage_name %>
36
+ <%= form.hidden_field :language_id, :value => @language.id %>
37
+ <%= form.hidden_field :language_code, :value => @language.code %>
38
+ <%= form.hidden_field :page_layout, :value => @language.page_layout %>
39
+ <%= form.hidden_field :language_root, :value => true %>
40
+ <%= form.hidden_field :parent_id, :value => Alchemy::Page.rootpage.id %>
41
+ <%= form.button t("create_tree_as_new_language", :language => @language.name), :class => 'button' %>
21
42
  <% end %>
22
- <%- end -%>
23
- <%- if params[:action] == "index" -%>
24
- <%- if @languages_with_page_tree.size >= 1 -%>
25
- <p>
26
- <%= t("want_to_create_new_language") %>
27
- </p>
28
- <%- end -%>
29
- <%= form_for([:admin, Alchemy::Page.new], :remote => true) do |form| %>
30
- <%= form.hidden_field :name, :value => @language.frontpage_name %>
31
- <%= form.hidden_field :language_id, :value => @language.id %>
32
- <%= form.hidden_field :language_code, :value => @language.code %>
33
- <%= form.hidden_field :page_layout, :value => @language.page_layout %>
34
- <%= form.hidden_field :language_root, :value => true %>
35
- <%= form.hidden_field :parent_id, :value => Alchemy::Page.rootpage.id %>
36
- <%= form.submit t("create_tree_as_new_language", :language => @language.name), :class => 'button' %>
37
- <% end %>
38
- <%- end -%>
43
+
44
+ <%- end -%>
45
+
39
46
  <%- else -%>
40
- <p><%= t("Actually this language does not exist. Please create this language first.") %></p>
47
+
48
+ <p><%= t("Actually this language does not exist. Please create this language first.") %></p>
49
+
41
50
  <%- end -%>
51
+
52
+ </div>
@@ -87,5 +87,14 @@
87
87
  <%- else -%>
88
88
 
89
89
  <%= render :partial => 'create_language_form' %>
90
-
90
+ <% content_for(:javascripts) do %>
91
+ <script type="text/javascript">
92
+ jQuery(document).ready(function($) {
93
+ $('#create_language_tree_form').dialog({modal: true, width: 360, close: function() {
94
+ $(this).appendTo('#archive_all').show().removeClass().removeAttr('style');
95
+ }});
96
+ });
97
+ </script>
91
98
  <%- end -%>
99
+
100
+ <% end -%>
@@ -1 +1 @@
1
- <%= render_picture_editor(element, :maximum_amount_of_images => 1, :image_size => '900x300', :crop => true) %>
1
+ <%= render_essence_editor_by_name(element, 'image', :image_size => '900x300', :crop => true) %>
@@ -1,3 +1,3 @@
1
1
  <%= render_essence_editor_by_name(element, 'headline') %>
2
- <%= render_picture_editor(element, :image_float_selector => true, :maximum_amount_of_images => 1, :image_size => "450x300", :crop => true) %>
2
+ <%= render_essence_editor_by_name(element, 'image', :image_float_selector => true, :image_size => "450x300", :crop => true) %>
3
3
  <%= render_essence_editor_by_name(element, 'text') %>
@@ -1,12 +1,13 @@
1
1
  <div class="content_editor" id="<%= content_dom_id(content) %>">
2
2
  <label><%= render_content_name(content) %></label>
3
- <%= datetime_select(
4
- "contents[content_#{content.id}]",
5
- :date,
6
- :default => content.ingredient || Date.today,
7
- :start_year => options[:start_year],
8
- :end_year => options[:end_year],
9
- :discard_minute => (options[:show_time] ? false : true),
10
- :discard_hour => (options[:show_time] ? false : true)
3
+ <%= alchemy_datepicker(
4
+ content.essence, :date, {
5
+ :name => content.form_field_name,
6
+ :id => content.form_field_id,
7
+ :style => 'width: 140px'
8
+ }
11
9
  ) %>
10
+ <label for="<%= content.form_field_id %>" style="cursor: pointer; display: inline; display: inline-block; position: relative; top: 3px; margin: 0;">
11
+ <span class="ui-icon ui-icon-calendar"></span>
12
+ </label>
12
13
  </div>
@@ -1,4 +1,4 @@
1
- <div id="<%= content_dom_id(content) %>" class="<%= options[:dragable] ? 'essence_picture_editor dragable_picture' : "essence_picture_editor#{options[:grouped] ? nil : ' content_editor'}" %>">
1
+ <div id="<%= content_dom_id(content) %>" class="essence_picture_editor<%= ' dragable_picture' if options[:dragable] %><%= ' content_editor' unless options[:grouped] %>">
2
2
  <% unless options[:grouped] %>
3
3
  <label><%= render_content_name(content) %></label>
4
4
  <% end %>
@@ -57,15 +57,17 @@
57
57
  <%= yield(:javascripts) %>
58
58
  <script type="text/javascript" charset="utf-8">
59
59
  jQuery(function($) {
60
+ Alchemy.locale = '<%= ::I18n.locale %>';
60
61
  Alchemy.resizeFrame();
61
62
  Alchemy.Tooltips();
62
63
  if (typeof(jQuery().sb) === 'function') {
63
64
  Alchemy.SelectBox('body#alchemy select');
64
65
  }
66
+ Alchemy.Datepicker();
65
67
  if ($('#flash_notices').length > 0) {
66
68
  Alchemy.Growler.fade();
67
69
  }
68
- $('#toolbar a.please_wait, #toolbar form .button, #toolbar form .icon_button, #main_navi a.main_navi_entry, #sub_navigation .subnavi_tab a, .pagination a').click(function() {
70
+ $('a.please_wait, form .button, form .icon_button, #main_navi a.main_navi_entry, #sub_navigation .subnavi_tab a, .pagination a').click(function() {
69
71
  Alchemy.pleaseWaitOverlay();
70
72
  });
71
73
  });
@@ -30,7 +30,7 @@
30
30
  #
31
31
  - name: intro
32
32
  unique: true
33
- elements: [article, claim, header, bild, bild_text, text, intro, headline, image_mosaic, intro_image_text]
33
+ elements: [header, intro_image_text]
34
34
  autogenerate: [header, intro_image_text]
35
35
 
36
36
  - name: standard
@@ -59,7 +59,7 @@ de:
59
59
  text: 'Text'
60
60
  date: 'Datum'
61
61
  body: 'Inhalt'
62
- image: 'Bild(er)'
62
+ image: 'Bild'
63
63
  mail_from: 'Absender (E-Mail)'
64
64
  mail_to: 'Empfänger (E-Mail)'
65
65
  caption: "Bildunterschrift"
@@ -309,7 +309,7 @@ de:
309
309
  "Your trash is empty": "Der Papierkorb ist leer"
310
310
  above: "darüber"
311
311
  add: "hinzufügen"
312
- "add new content": "+ einen Inhalt hinzufügen"
312
+ "add new content": "Element hinzufügen"
313
313
  add_image_to_element: "Bild hinzufügen"
314
314
  align_in_text: "Im Text anordnen"
315
315
  all: "alle"
@@ -340,8 +340,10 @@ de:
340
340
  copy: "kopieren"
341
341
  copy_element: "Element kopieren"
342
342
  copy_page: "Seite kopieren"
343
+ copy_language_tree_heading: "Einen Sprachbaum kopieren"
343
344
  create: "erstellen"
344
345
  "Create language": "Eine neue Sprache erstellen"
346
+ create_language_tree_heading: "Einen leeren Sprachbaum erstellen"
345
347
  create_page: "Eine Unterseite anlegen"
346
348
  create_user: "Einen Benutzer anlegen"
347
349
  created_at: "Erstellt am"
@@ -510,7 +512,7 @@ de:
510
512
  urlname_to_short: "Der URL-Name der Seite ist zu kurz (min. 3 Zeichen)"
511
513
  username: "Benutzername"
512
514
  visible: "sichtbar"
513
- want_to_create_new_language: "Oder wollen Sie einen neuen leeren Sprachbaum erstellen?"
515
+ want_to_create_new_language: "Wollen Sie einen neuen leeren Sprachbaum erstellen?"
514
516
  want_to_make_copy_of_existing_language: "Wollen Sie eine Kopie eines vorhanden Sprachbaums machen?"
515
517
  "We need at least one default.": "Es muss eine Standardsprache geben."
516
518
  welcome_please_identify_notice: "Willkommen! Bitte identifizieren Sie sich."
@@ -544,6 +546,7 @@ de:
544
546
  date:
545
547
  formats:
546
548
  default: "%d.%m.%Y"
549
+ datepicker: "%d.%m.%Y"
547
550
  short: "%e. %b"
548
551
  long: "%e. %B %Y"
549
552
  only_day: "%e"
@@ -561,6 +564,7 @@ de:
561
564
  short: "%d. %B, %H:%Mh"
562
565
  long: "%A, %d. %B %Y um %H:%M Uhr"
563
566
  date: "%d.%m.%Y"
567
+ datepicker: "%d.%m.%Y"
564
568
  time: "%H:%M"
565
569
  am: "vormittags"
566
570
  pm: "nachmittags"
@@ -785,7 +789,7 @@ de:
785
789
  alchemy/language:
786
790
  attributes:
787
791
  code:
788
- invalid: 'ist nicht korrekt. Bitte exakt zwei Kleinbuchstaben verwenden.'
792
+ invalid: '^Sprachkürzel ist nicht korrekt. Bitte exakt zwei Kleinbuchstaben verwenden.'
789
793
 
790
794
  # Translations for the authentication system used in alchemy.
791
795
  authlogic:
@@ -57,7 +57,7 @@ en:
57
57
  text: 'Text'
58
58
  date: 'Date'
59
59
  body: 'Content'
60
- image: 'Image(s)'
60
+ image: 'Image'
61
61
  mail_from: 'Sender (E-Mail)'
62
62
  mail_to: 'Receiver (E-Mail)'
63
63
  caption: "Caption"
@@ -197,8 +197,10 @@ en:
197
197
  content_essence_not_found: "Content essence not found"
198
198
  content_not_found: "Field for content not present."
199
199
  copy_element: "Copy this element"
200
+ copy_language_tree_heading: "Copy page tree"
200
201
  copy_page: "Copy page"
201
202
  "Create language": "Create a new language"
203
+ create_language_tree_heading: "Create empty language tree"
202
204
  create_page: "Create a new subpage"
203
205
  create_user: "Create a new user"
204
206
  created_at: "Created at"
@@ -352,7 +354,7 @@ en:
352
354
  url_name: "URL-Name"
353
355
  urlname_to_short: "The pages urlname is too short (minimum of 3 characters)"
354
356
  username: "Username"
355
- want_to_create_new_language: "Or do you want to create a new empty language tree?"
357
+ want_to_create_new_language: "Do you want to create a new empty language tree?"
356
358
  want_to_make_copy_of_existing_language: "Do you want to copy an existing language tree?"
357
359
  welcome_please_identify_notice: "Welcome! Please identify."
358
360
  width: "Width"
@@ -374,7 +376,8 @@ en:
374
376
  # Use the strftime parameters for formats.
375
377
  # When no format has been given, it uses default.
376
378
  # You can provide other formats here if you like!
377
- default: "%Y-%m-%d"
379
+ default: "%Y-%m-%d"
380
+ datepicker: "%Y-%m-%d"
378
381
  short: "%b %d"
379
382
  long: "%B %d, %Y"
380
383
  day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
@@ -393,6 +396,7 @@ en:
393
396
  short: "%d %b %H:%M"
394
397
  long: "%B %d, %Y %H:%M"
395
398
  date: "%Y-%m-%d"
399
+ datepicker: "%Y-%m-%d"
396
400
  am: "am"
397
401
  pm: "pm"
398
402
  support:
@@ -1,5 +1,5 @@
1
1
  module Alchemy
2
2
 
3
- VERSION = "2.1.2"
3
+ VERSION = "2.1.3"
4
4
 
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-02-01 00:00:00.000000000 Z
14
+ date: 2012-02-06 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
18
- requirement: &70295293852440 !ruby/object:Gem::Requirement
18
+ requirement: &70207620493240 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: 3.1.3
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70295293852440
26
+ version_requirements: *70207620493240
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: authlogic
29
- requirement: &70295293851260 !ruby/object:Gem::Requirement
29
+ requirement: &70207620490880 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *70295293851260
37
+ version_requirements: *70207620490880
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: awesome_nested_set
40
- requirement: &70295293848080 !ruby/object:Gem::Requirement
40
+ requirement: &70207620535420 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ~>
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '2.0'
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *70295293848080
48
+ version_requirements: *70207620535420
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: declarative_authorization
51
- requirement: &70295293862020 !ruby/object:Gem::Requirement
51
+ requirement: &70207620534680 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ~>
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: 0.5.4
57
57
  type: :runtime
58
58
  prerelease: false
59
- version_requirements: *70295293862020
59
+ version_requirements: *70207620534680
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: tvdeyen-fleximage
62
- requirement: &70295293859620 !ruby/object:Gem::Requirement
62
+ requirement: &70207620533640 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ~>
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: 1.0.9
68
68
  type: :runtime
69
69
  prerelease: false
70
- version_requirements: *70295293859620
70
+ version_requirements: *70207620533640
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: will_paginate
73
- requirement: &70295293856680 !ruby/object:Gem::Requirement
73
+ requirement: &70207620532420 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ~>
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: '3.0'
79
79
  type: :runtime
80
80
  prerelease: false
81
- version_requirements: *70295293856680
81
+ version_requirements: *70207620532420
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: acts_as_ferret
84
- requirement: &70295293869400 !ruby/object:Gem::Requirement
84
+ requirement: &70207620531360 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ~>
@@ -89,10 +89,10 @@ dependencies:
89
89
  version: '0.5'
90
90
  type: :runtime
91
91
  prerelease: false
92
- version_requirements: *70295293869400
92
+ version_requirements: *70207620531360
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: acts_as_list
95
- requirement: &70295293867480 !ruby/object:Gem::Requirement
95
+ requirement: &70207620530160 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ~>
@@ -100,10 +100,10 @@ dependencies:
100
100
  version: '0.1'
101
101
  type: :runtime
102
102
  prerelease: false
103
- version_requirements: *70295293867480
103
+ version_requirements: *70207620530160
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: magiclabs-userstamp
106
- requirement: &70295293865640 !ruby/object:Gem::Requirement
106
+ requirement: &70207620529000 !ruby/object:Gem::Requirement
107
107
  none: false
108
108
  requirements:
109
109
  - - ~>
@@ -111,10 +111,10 @@ dependencies:
111
111
  version: 2.0.2
112
112
  type: :runtime
113
113
  prerelease: false
114
- version_requirements: *70295293865640
114
+ version_requirements: *70207620529000
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: dynamic_form
117
- requirement: &70295293864160 !ruby/object:Gem::Requirement
117
+ requirement: &70207620558540 !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements:
120
120
  - - ~>
@@ -122,10 +122,10 @@ dependencies:
122
122
  version: '1.1'
123
123
  type: :runtime
124
124
  prerelease: false
125
- version_requirements: *70295293864160
125
+ version_requirements: *70207620558540
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: jquery-rails
128
- requirement: &70295293863160 !ruby/object:Gem::Requirement
128
+ requirement: &70207620553520 !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
131
  - - ~>
@@ -133,10 +133,10 @@ dependencies:
133
133
  version: 1.0.16
134
134
  type: :runtime
135
135
  prerelease: false
136
- version_requirements: *70295293863160
136
+ version_requirements: *70207620553520
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: attachment_magic
139
- requirement: &70295293876280 !ruby/object:Gem::Requirement
139
+ requirement: &70207620580400 !ruby/object:Gem::Requirement
140
140
  none: false
141
141
  requirements:
142
142
  - - ~>
@@ -144,10 +144,10 @@ dependencies:
144
144
  version: 0.2.1
145
145
  type: :runtime
146
146
  prerelease: false
147
- version_requirements: *70295293876280
147
+ version_requirements: *70207620580400
148
148
  - !ruby/object:Gem::Dependency
149
149
  name: rspec-rails
150
- requirement: &70295293872400 !ruby/object:Gem::Requirement
150
+ requirement: &70207620578660 !ruby/object:Gem::Requirement
151
151
  none: false
152
152
  requirements:
153
153
  - - ~>
@@ -155,10 +155,10 @@ dependencies:
155
155
  version: '2.8'
156
156
  type: :development
157
157
  prerelease: false
158
- version_requirements: *70295293872400
158
+ version_requirements: *70207620578660
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: sqlite3
161
- requirement: &70295293884580 !ruby/object:Gem::Requirement
161
+ requirement: &70207620577380 !ruby/object:Gem::Requirement
162
162
  none: false
163
163
  requirements:
164
164
  - - ! '>='
@@ -166,7 +166,7 @@ dependencies:
166
166
  version: '0'
167
167
  type: :development
168
168
  prerelease: false
169
- version_requirements: *70295293884580
169
+ version_requirements: *70207620577380
170
170
  description: Alchemy is a Rails 3 CMS with a flexible content storing architecture.
171
171
  email:
172
172
  - alchemy@magiclabs.de
@@ -205,6 +205,7 @@ files:
205
205
  - app/assets/images/alchemy/ui-icons_666666_256x240.png
206
206
  - app/assets/javascripts/alchemy/alchemy.base.js
207
207
  - app/assets/javascripts/alchemy/alchemy.buttons.js
208
+ - app/assets/javascripts/alchemy/alchemy.datepicker.js
208
209
  - app/assets/javascripts/alchemy/alchemy.dirty.js
209
210
  - app/assets/javascripts/alchemy/alchemy.dragndrop.js
210
211
  - app/assets/javascripts/alchemy/alchemy.element_editor_selector.js
@@ -808,7 +809,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
808
809
  version: '0'
809
810
  segments:
810
811
  - 0
811
- hash: -3492770316894394278
812
+ hash: -1495060895852714083
812
813
  required_rubygems_version: !ruby/object:Gem::Requirement
813
814
  none: false
814
815
  requirements:
@@ -817,7 +818,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
817
818
  version: '0'
818
819
  segments:
819
820
  - 0
820
- hash: -3492770316894394278
821
+ hash: -1495060895852714083
821
822
  requirements:
822
823
  - ImageMagick (libmagick), v6.6 or greater.
823
824
  rubyforge_project: