alchemy_cms 2.1.4 → 2.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/README.md +11 -31
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js +3 -1
- data/app/assets/javascripts/alchemy/alchemy.windows.js +1 -1
- data/app/assets/stylesheets/alchemy/base.css.scss +0 -4
- data/app/assets/stylesheets/alchemy/buttons.css.scss +7 -4
- data/app/assets/stylesheets/alchemy/icons.css.scss +7 -1
- data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +11 -15
- data/app/assets/{javascripts → stylesheets}/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.scss +51 -18
- data/app/controllers/alchemy/admin/contents_controller.rb +5 -5
- data/app/controllers/alchemy/base_controller.rb +1 -1
- data/app/helpers/alchemy/admin/base_helper.rb +4 -7
- data/app/helpers/alchemy/admin/elements_helper.rb +2 -2
- data/app/models/alchemy/attachment.rb +1 -1
- data/app/models/alchemy/cell.rb +3 -3
- data/app/models/alchemy/content.rb +4 -4
- data/app/models/alchemy/element.rb +8 -8
- data/app/models/alchemy/essence_html.rb +1 -1
- data/app/models/alchemy/essence_richtext.rb +4 -4
- data/app/models/alchemy/essence_text.rb +1 -1
- data/app/models/alchemy/language.rb +10 -7
- data/app/models/alchemy/language/code.rb +19 -0
- data/app/models/alchemy/message.rb +6 -6
- data/app/models/alchemy/page.rb +26 -26
- data/app/models/alchemy/picture.rb +11 -13
- data/app/models/alchemy/user.rb +5 -5
- data/app/models/alchemy/user_session.rb +1 -1
- data/app/views/alchemy/admin/contents/destroy.js.erb +1 -1
- data/app/views/alchemy/admin/elements/create.js.erb +1 -0
- data/app/views/alchemy/admin/elements/fold.js.erb +2 -2
- data/app/views/alchemy/admin/elements/index.html.erb +1 -1
- data/app/views/alchemy/admin/essence_pictures/edit.html.erb +6 -6
- data/app/views/alchemy/admin/languages/_form.html.erb +47 -0
- data/app/views/alchemy/admin/languages/_language.html.erb +47 -0
- data/app/views/alchemy/admin/languages/_table.html.erb +33 -0
- data/app/views/alchemy/essences/_essence_picture_tools.html.erb +4 -1
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +1 -3
- data/app/views/alchemy/essences/_essence_text_editor.html.erb +1 -1
- data/config/locales/alchemy.de.yml +26 -22
- data/config/locales/alchemy.en.yml +2 -0
- data/config/routes.rb +2 -2
- data/db/migrate/20120216135355_add_country_code_to_languages.rb +9 -0
- data/lib/alchemy/i18n.rb +21 -14
- data/lib/alchemy/seeder.rb +2 -2
- data/lib/alchemy/version.rb +1 -1
- data/spec/dummy/db/schema.rb +5 -3
- data/spec/factories.rb +2 -2
- data/spec/models/language_spec.rb +22 -4
- data/vendor/assets/javascripts/tiny_mce/langs/de.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/langs/en.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/license.txt +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/autoresize/editor_plugin.js +1 -137
- data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/editor_plugin.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/editor_plugin.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/langs/de_dlg.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/langs/en_dlg.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/cell.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/cell.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/row.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/css/table.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/editor_plugin.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/cell.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/row.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/js/table.js +5 -1
- data/vendor/assets/javascripts/tiny_mce/plugins/table/langs/de_dlg.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/langs/en_dlg.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/row.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/table/table.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/about.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/charmap.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/color_picker.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/image.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/flash.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/iframe.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/pagebreak.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/quicktime.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/realmedia.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/shockwave.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/trans.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/video.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/windowsmedia.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/about.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/charmap.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/color_picker.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/image.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/link.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de_dlg.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/link.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/shortcuts.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/content.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +0 -0
- data/vendor/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +0 -0
- data/vendor/assets/javascripts/tiny_mce/tiny_mce.js +1 -1
- data/vendor/assets/javascripts/tiny_mce/tiny_mce_popup.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/utils/editable_selects.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/utils/form_utils.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/utils/mctabs.js +0 -0
- data/vendor/assets/javascripts/tiny_mce/utils/validate.js +0 -0
- metadata +39 -42
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
- data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +0 -90
@@ -23,6 +23,7 @@
|
|
23
23
|
Alchemy.ElementDirtyObserver('#element_<%= @element.id -%>');
|
24
24
|
Alchemy.SelectBox('#element_<%= @element.id -%> select');
|
25
25
|
Alchemy.ButtonObserver('#element_<%= @element.id -%> button.button');
|
26
|
+
Alchemy.Datepicker('#element_<%= @element.id -%> input[type="date"]');
|
26
27
|
|
27
28
|
<%- if @clipboard.blank? -%>
|
28
29
|
$('#clipboard_button .icon.clipboard').removeClass('full');
|
@@ -10,8 +10,6 @@
|
|
10
10
|
$('#element_area .sortable_cell').sortable('refresh');
|
11
11
|
Alchemy.ElementEditorSelector.reinit('.element_editor[data-element-id="<%= @element.id -%>"]');
|
12
12
|
|
13
|
-
Alchemy.ButtonObserver('.element_editor[data-element-id="<%= @element.id -%>"] button.button');
|
14
|
-
|
15
13
|
<%- if @element.folded -%>
|
16
14
|
|
17
15
|
<%- @element.rtf_contents.each do |content| -%>
|
@@ -32,6 +30,8 @@
|
|
32
30
|
<%- end -%>
|
33
31
|
|
34
32
|
Alchemy.ElementDirtyObserver('#element_<%= @element.id -%>');
|
33
|
+
Alchemy.Datepicker('#element_<%= @element.id -%> input[type="date"]');
|
34
|
+
Alchemy.ButtonObserver('.element_editor[data-element-id="<%= @element.id -%>"] button.button');
|
35
35
|
<%- end -%>
|
36
36
|
|
37
37
|
<%- end -%>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<%- @elements.each do |cell, elements| -%>
|
6
6
|
<li>
|
7
7
|
<a href="#cell_<%= cell.name -%>">
|
8
|
-
<%= cell.name == 'for_other_elements' ? t('other Elements') : t(
|
8
|
+
<%= cell.name == 'for_other_elements' ? t('other Elements') : t(cell.name, :scope => :cell_names) -%>
|
9
9
|
</a>
|
10
10
|
</li>
|
11
11
|
<%- end -%>
|
@@ -10,23 +10,23 @@
|
|
10
10
|
<%- if @options[:caption_as_textarea] -%>
|
11
11
|
<%= f.text_area "caption", :class => 'thin_border' %>
|
12
12
|
<%- else -%>
|
13
|
-
<%= f.text_field "caption", :class => 'thin_border
|
13
|
+
<%= f.text_field "caption", :class => 'thin_border' %>
|
14
14
|
<%- end -%>
|
15
15
|
</td>
|
16
16
|
</tr>
|
17
17
|
<tr>
|
18
18
|
<td class="label"><%= f.label "title" %></td>
|
19
|
-
<td class="input"><%= f.text_field "title", :class => 'thin_border
|
19
|
+
<td class="input"><%= f.text_field "title", :class => 'thin_border' %></td>
|
20
20
|
</tr>
|
21
21
|
<tr>
|
22
22
|
<td class="label"><%= f.label "alt_tag" %></td>
|
23
|
-
<td class="input"><%= f.text_field "alt_tag", :class => 'thin_border
|
23
|
+
<td class="input"><%= f.text_field "alt_tag", :class => 'thin_border' %></td>
|
24
24
|
</tr>
|
25
25
|
<%# Have to use a Hash here, because Rails has a Hash.to_params bug with nested Arrays!!!! %>
|
26
26
|
<%- if @options[:sizes].is_a?(HashWithIndifferentAccess) -%>
|
27
27
|
<tr>
|
28
28
|
<td class="label"><%= f.label "render_size" %></td>
|
29
|
-
<td class="
|
29
|
+
<td class="select">
|
30
30
|
<%= f.select(
|
31
31
|
"render_size",
|
32
32
|
options_for_select(
|
@@ -46,7 +46,7 @@
|
|
46
46
|
<%- if @options[:image_float_selector] -%>
|
47
47
|
<tr>
|
48
48
|
<td class="label"><%= f.label "css_class" %></td>
|
49
|
-
<td class="
|
49
|
+
<td class="select">
|
50
50
|
<%= f.select "css_class", [[t("Layout default"), ""], [t("above"), "no_float"], [t("left"), "left"], [t("right"), "right"]] %>
|
51
51
|
</td>
|
52
52
|
</tr>
|
@@ -54,7 +54,7 @@
|
|
54
54
|
<%- elsif @options[:css_classes].is_a?(HashWithIndifferentAccess) -%>
|
55
55
|
<tr>
|
56
56
|
<td class="label"><%= f.label "css_class" %></td>
|
57
|
-
<td class="
|
57
|
+
<td class="select">
|
58
58
|
<%= f.select("css_class", options_for_select([[t('None'), '']] + @options[:css_classes].sort, @essence_picture.css_class)) %>
|
59
59
|
</td>
|
60
60
|
</tr>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<%= form_for [resource_url_scope, :admin, resource_instance_variable], :remote => true, :html => {:style => 'width: 403px'} do |f| %>
|
2
|
+
<div id="errors" style="display: none"></div>
|
3
|
+
<table>
|
4
|
+
<tr>
|
5
|
+
<td class="label"><%= f.label :name %></td>
|
6
|
+
<td class="input"><%= f.text_field :name, :class => 'thin_border long' -%></td>
|
7
|
+
</tr>
|
8
|
+
<tr>
|
9
|
+
<td class="label"><%= f.label :language_code %></td>
|
10
|
+
<td class="input"><%= f.text_field :language_code, :class => 'thin_border long', :placeholder => t(:language_code_placeholder) -%></td>
|
11
|
+
</tr>
|
12
|
+
<tr>
|
13
|
+
<td class="label"><%= f.label :country_code %>*</td>
|
14
|
+
<td class="input">
|
15
|
+
<%= f.text_field :country_code, :class => 'thin_border long', :placeholder => t(:country_code_placeholder) -%>
|
16
|
+
</td>
|
17
|
+
</tr>
|
18
|
+
<tr>
|
19
|
+
<td class="label"><%= f.label :frontpage_name %></td>
|
20
|
+
<td class="input"><%= f.text_field :frontpage_name, :class => 'thin_border long' -%></td>
|
21
|
+
</tr>
|
22
|
+
<tr>
|
23
|
+
<td class="label"><%= f.label :page_layout %></td>
|
24
|
+
<td class="input"><%= f.text_field :page_layout, :class => 'thin_border long' -%></td>
|
25
|
+
</tr>
|
26
|
+
<tr>
|
27
|
+
<td class="label"><%= f.label :public %></td>
|
28
|
+
<td class="checkbox"><%= f.check_box :public -%></td>
|
29
|
+
</tr>
|
30
|
+
<tr>
|
31
|
+
<td class="label"><%= f.label :default -%></td>
|
32
|
+
<td class="checkbox"><%= f.check_box :default -%></td>
|
33
|
+
</tr>
|
34
|
+
<tr>
|
35
|
+
<td colspan="2">
|
36
|
+
<p class="foot_note">
|
37
|
+
* Der Ländercode ist nur notwendig, wenn Sie mehrere Länder mit unterschiedlichen Sprachen versehen wollen.
|
38
|
+
</p>
|
39
|
+
</td>
|
40
|
+
</tr>
|
41
|
+
<tr>
|
42
|
+
<td class="submit" colspan="2">
|
43
|
+
<%= f.button t('save'), :class => 'button' %>
|
44
|
+
</td>
|
45
|
+
</tr>
|
46
|
+
</table>
|
47
|
+
<% end %>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<tr class="<%= cycle('even', 'odd') %>">
|
2
|
+
<td>
|
3
|
+
<%= language.name %>
|
4
|
+
</td>
|
5
|
+
<td>
|
6
|
+
<%= language.language_code %>
|
7
|
+
</td>
|
8
|
+
<td>
|
9
|
+
<%= language.country_code %>
|
10
|
+
</td>
|
11
|
+
<td>
|
12
|
+
<%= language.frontpage_name %>
|
13
|
+
</td>
|
14
|
+
<td>
|
15
|
+
<%= language.page_layout %>
|
16
|
+
</td>
|
17
|
+
<td class="center">
|
18
|
+
<%= language.public? ? render_icon('true') : '' %>
|
19
|
+
</td>
|
20
|
+
<td class="center">
|
21
|
+
<%= language.default? ? render_icon('true') : '' %>
|
22
|
+
</td>
|
23
|
+
<td class="tools">
|
24
|
+
<%- permitted_to?(:destroy, :alchemy_admin_languages) do -%>
|
25
|
+
<%= link_to_confirmation_window(
|
26
|
+
'',
|
27
|
+
t("Are you sure?"),
|
28
|
+
alchemy.admin_language_path(language),
|
29
|
+
:title => t("Delete"),
|
30
|
+
:class => "icon destroy"
|
31
|
+
) -%>
|
32
|
+
<%- end -%>
|
33
|
+
<%- permitted_to?(:edit, :alchemy_admin_languages) do -%>
|
34
|
+
<%= link_to_overlay_window(
|
35
|
+
'',
|
36
|
+
alchemy.edit_admin_language_path(language),
|
37
|
+
{
|
38
|
+
:title => t("Edit")
|
39
|
+
},
|
40
|
+
{
|
41
|
+
:class => "icon edit",
|
42
|
+
:title => t("Edit")
|
43
|
+
}
|
44
|
+
) -%>
|
45
|
+
<%- end -%>
|
46
|
+
</td>
|
47
|
+
</tr>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<%- if @languages.any? -%>
|
2
|
+
<table class="list" id="languages_list">
|
3
|
+
<tr>
|
4
|
+
<th>
|
5
|
+
<%= Alchemy::Language.human_attribute_name(:name) %>
|
6
|
+
</th>
|
7
|
+
<th>
|
8
|
+
<%= Alchemy::Language.human_attribute_name(:language_code) %>
|
9
|
+
</th>
|
10
|
+
<th>
|
11
|
+
<%= Alchemy::Language.human_attribute_name(:country_code) %>
|
12
|
+
</th>
|
13
|
+
<th>
|
14
|
+
<%= Alchemy::Language.human_attribute_name(:frontpage_name) %>
|
15
|
+
</th>
|
16
|
+
<th>
|
17
|
+
<%= Alchemy::Language.human_attribute_name(:page_layout) %>
|
18
|
+
</th>
|
19
|
+
<th class="center">
|
20
|
+
<%= Alchemy::Language.human_attribute_name(:public) %>
|
21
|
+
</th>
|
22
|
+
<th class="center">
|
23
|
+
<%= Alchemy::Language.human_attribute_name(:default) %>
|
24
|
+
</th>
|
25
|
+
<th class="tools"></th>
|
26
|
+
</tr>
|
27
|
+
<%= render_resources %>
|
28
|
+
</table>
|
29
|
+
<%- elsif params[:query] -%>
|
30
|
+
<p><%= t('Nothing found') %></p>
|
31
|
+
<%- end -%>
|
32
|
+
|
33
|
+
<%= render 'alchemy/admin/partials/pagination_links', :items => @languages, :scope => alchemy %>
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% if options[:crop].to_s == 'true' && content.ingredient %>
|
1
2
|
<%= link_to_overlay_window(
|
2
3
|
render_icon('crop'),
|
3
4
|
alchemy.crop_admin_essence_picture_path(content.essence, :options => options),
|
@@ -6,10 +7,12 @@
|
|
6
7
|
:title => t('Edit Picturemask')
|
7
8
|
},
|
8
9
|
{
|
9
|
-
:class => necessary_options_for_cropping_provided?(options) && content.ingredient ? nil : 'disabled',
|
10
10
|
:title => t('Edit Picturemask')
|
11
11
|
}
|
12
12
|
) %>
|
13
|
+
<%- else -%>
|
14
|
+
<a href="#" class="disabled"><%= render_icon('crop') %></a>
|
15
|
+
<%- end -%>
|
13
16
|
|
14
17
|
<%= link_to_overlay_window(
|
15
18
|
render_icon('swap_picture'),
|
@@ -14,9 +14,7 @@
|
|
14
14
|
),
|
15
15
|
{
|
16
16
|
:alt => (content.essence.alt_tag.blank? ? nil : content.essence.alt_tag),
|
17
|
-
:title => (content.essence.title.blank? ? nil : content.essence.title)
|
18
|
-
:id => dom_id(content.essence.picture),
|
19
|
-
:style => (options[:crop] && !options[:image_size].blank?) || (!options[:crop] && options[:image_size].blank?) ? "width: #{options[:image_size].blank? ? content.essence.picture.image_width : options[:image_size].split('x')[0]}px; height: #{options[:image_size].blank? ? content.essence.picture.image_height : options[:image_size].split('x')[1]}px" : nil
|
17
|
+
:title => (content.essence.title.blank? ? nil : content.essence.title)
|
20
18
|
}.merge(html_options)
|
21
19
|
) -%>
|
22
20
|
|
@@ -49,7 +49,7 @@
|
|
49
49
|
<%= link_to_confirmation_window(
|
50
50
|
render_icon('delete-small'),
|
51
51
|
t('Do you really want to delete this content?'),
|
52
|
-
alchemy.
|
52
|
+
alchemy.admin_content_path(content),
|
53
53
|
:class => 'icon_button small',
|
54
54
|
:title => t('Remove this content')
|
55
55
|
) if content.settings[:deletable] %>
|
@@ -341,6 +341,7 @@ de:
|
|
341
341
|
copy_element: "Element kopieren"
|
342
342
|
copy_page: "Seite kopieren"
|
343
343
|
copy_language_tree_heading: "Einen Sprachbaum kopieren"
|
344
|
+
country_code_placeholder: 'z.B. at (optional)'
|
344
345
|
create: "erstellen"
|
345
346
|
"Create language": "Eine neue Sprache erstellen"
|
346
347
|
create_language_tree_heading: "Einen leeren Sprachbaum erstellen"
|
@@ -397,6 +398,7 @@ de:
|
|
397
398
|
"item removed from clipboard": "%{name} wurde aus der Zwischenablage entfernt."
|
398
399
|
javascript_disabled_headline: "Javascript ist deaktiviert!"
|
399
400
|
javascript_disabled_text: "Alchemy funktioniert nur einwandfrei mit aktiviertem Javascript. Bitte aktivieren Sie es in Ihrem Browser."
|
401
|
+
language_code_placeholder: 'z.B. de'
|
400
402
|
language_does_not_exist: "Dieser Sprachbaum existiert noch nicht"
|
401
403
|
language_pages_copied: "Der Sprachbaum wurde kopiert"
|
402
404
|
left: "links"
|
@@ -711,7 +713,8 @@ de:
|
|
711
713
|
picture_id: Bild
|
712
714
|
|
713
715
|
alchemy/language:
|
714
|
-
|
716
|
+
country_code: "Länderkürzel"
|
717
|
+
language_code: "Sprachkürzel"
|
715
718
|
default: "Standardsprache"
|
716
719
|
frontpage_name: "Name der Startseite"
|
717
720
|
name: "Name"
|
@@ -762,26 +765,26 @@ de:
|
|
762
765
|
body: ""
|
763
766
|
|
764
767
|
messages:
|
765
|
-
inclusion: "
|
766
|
-
exclusion: "
|
767
|
-
invalid: "
|
768
|
+
inclusion: "ist kein gültiger Wert"
|
769
|
+
exclusion: "ist nicht verfügbar"
|
770
|
+
invalid: "ist nicht gültig"
|
768
771
|
record_invalid: 'Validierung von %{errors} ist fehlgeschlagen'
|
769
|
-
confirmation: "
|
770
|
-
accepted: "
|
771
|
-
empty: "
|
772
|
-
blank: "
|
773
|
-
too_long: "
|
774
|
-
too_short: "
|
775
|
-
wrong_length: "
|
776
|
-
taken: "
|
777
|
-
not_a_number: "
|
778
|
-
greater_than: "
|
779
|
-
greater_than_or_equal_to: "
|
780
|
-
equal_to: "
|
781
|
-
less_than: "
|
782
|
-
less_than_or_equal_to: "
|
783
|
-
odd: "
|
784
|
-
even: "
|
772
|
+
confirmation: "stimmt nicht mit der Bestätigung überein"
|
773
|
+
accepted: "muss akzeptiert werden"
|
774
|
+
empty: "muss ausgefüllt werden"
|
775
|
+
blank: "muss ausgefüllt werden"
|
776
|
+
too_long: "ist zu lang (nicht mehr als %{count} Zeichen)"
|
777
|
+
too_short: "ist zu kurz (nicht weniger als %{count} Zeichen)"
|
778
|
+
wrong_length: "hat die falsche Länge (muss genau %{count} Zeichen haben)"
|
779
|
+
taken: "ist bereits vergeben"
|
780
|
+
not_a_number: "ist keine Zahl"
|
781
|
+
greater_than: "muss größer als %{count} sein"
|
782
|
+
greater_than_or_equal_to: "muss größer oder gleich %{count} sein"
|
783
|
+
equal_to: "muss genau %{count} sein"
|
784
|
+
less_than: "muss kleiner als %{count} sein"
|
785
|
+
less_than_or_equal_to: "muss kleiner oder gleich %{count} sein"
|
786
|
+
odd: "muss ungerade sein"
|
787
|
+
even: "muss gerade sein"
|
785
788
|
|
786
789
|
models:
|
787
790
|
alchemy/content:
|
@@ -790,8 +793,9 @@ de:
|
|
790
793
|
validation_failed: 'Validierung fehlgeschlagen.'
|
791
794
|
alchemy/language:
|
792
795
|
attributes:
|
793
|
-
|
794
|
-
invalid: '
|
796
|
+
language_code:
|
797
|
+
invalid: 'ist nicht korrekt. Bitte exakt zwei Kleinbuchstaben verwenden.'
|
798
|
+
taken: 'ist für dieses Länderkürzel bereits vergeben.'
|
795
799
|
|
796
800
|
# Translations for the authentication system used in alchemy.
|
797
801
|
authlogic:
|
@@ -199,6 +199,7 @@ en:
|
|
199
199
|
copy_element: "Copy this element"
|
200
200
|
copy_language_tree_heading: "Copy page tree"
|
201
201
|
copy_page: "Copy page"
|
202
|
+
country_code_placeholder: 'i.e. us (optional)'
|
202
203
|
"Create language": "Create a new language"
|
203
204
|
create_language_tree_heading: "Create empty language tree"
|
204
205
|
create_page: "Create a new subpage"
|
@@ -255,6 +256,7 @@ en:
|
|
255
256
|
"item removed from clipboard": "Removed %{name} from clipboard"
|
256
257
|
javascript_disabled_headline: "Javascript is disabled!"
|
257
258
|
javascript_disabled_text: "Alchemy needs Javascript to run smoothly. Please enable it in your browser settings."
|
259
|
+
language_code_placeholder: 'i.e. en'
|
258
260
|
language_does_not_exist: "This language tree does not exist"
|
259
261
|
language_pages_copied: "Language tree succesfully copied."
|
260
262
|
link_image: "Link this image."
|
data/config/routes.rb
CHANGED
@@ -139,12 +139,12 @@ Alchemy::Engine.routes.draw do
|
|
139
139
|
end
|
140
140
|
|
141
141
|
match '/:lang' => 'pages#show',
|
142
|
-
:constraints => {:lang => /[a-z]{2}
|
142
|
+
:constraints => {:lang => /[a-z]{2}(-[a-z]{2})?/},
|
143
143
|
:as => :show_language_root
|
144
144
|
|
145
145
|
# The page show action has to be last route
|
146
146
|
match '(/:lang)(/:level1(/:level2(/:level3)))/:urlname(.:format)' => 'pages#show',
|
147
|
-
:constraints => {:lang => /[a-z]{2}
|
147
|
+
:constraints => {:lang => /[a-z]{2}(-[a-z]{2})?/},
|
148
148
|
:as => :show_page
|
149
149
|
|
150
150
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class AddCountryCodeToLanguages < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
add_column :alchemy_languages, :country_code, :string
|
4
|
+
rename_column :alchemy_languages, :code, :language_code
|
5
|
+
remove_index :alchemy_languages, :name => :index_languages_on_code
|
6
|
+
add_index :alchemy_languages, :language_code
|
7
|
+
add_index :alchemy_languages, [:language_code, :country_code]
|
8
|
+
end
|
9
|
+
end
|
data/lib/alchemy/i18n.rb
CHANGED
@@ -1,28 +1,35 @@
|
|
1
1
|
module Alchemy
|
2
2
|
class I18n
|
3
3
|
|
4
|
-
|
4
|
+
# A I18n Proxy for Alchemy translations
|
5
5
|
#
|
6
6
|
# Instead of having to translate strings and defining a default value:
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
7
|
+
#
|
8
|
+
# Alchemy::I18n.t("Hello World!", :default => 'Hello World!')
|
9
|
+
#
|
10
10
|
# We define this method to define the value only once:
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
11
|
+
#
|
12
|
+
# Alchemy::I18n.t("Hello World!")
|
13
|
+
#
|
14
14
|
# Note that interpolation still works:
|
15
|
-
#
|
16
|
-
# AlchemyAlchemy::I18n.t("Hello %{world}!", :world => @world)
|
17
|
-
#
|
18
|
-
# Notes:
|
19
|
-
# -----
|
20
15
|
#
|
21
|
-
#
|
16
|
+
# Alchemy::I18n.t("Hello %{world}!", :world => @world)
|
17
|
+
#
|
18
|
+
# === Notes
|
19
|
+
#
|
20
|
+
# All translations are scoped into the +alchemy+ namespace.
|
21
|
+
# Even scopes are scoped into the +alchemy+ namespace.
|
22
|
+
#
|
23
|
+
# So a call for t('hello', :scope => :world) has to be translated like this:
|
24
|
+
#
|
25
|
+
# de:
|
26
|
+
# alchemy:
|
27
|
+
# world:
|
28
|
+
# hello: Hallo
|
22
29
|
#
|
23
30
|
def self.t(msg, *args)
|
24
31
|
options = args.extract_options!
|
25
|
-
options[:default] = options[:default] ? options[:default] : msg
|
32
|
+
options[:default] = options[:default] ? options[:default] : msg.to_s.humanize
|
26
33
|
scope = ['alchemy']
|
27
34
|
case options[:scope].class.name
|
28
35
|
when "Array"
|