alchemy_cms 2.1.2 → 2.1.3

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