alchemy_cms 2.1.4 → 2.1.5
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.
- 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"
|