refinerycms-pages 2.0.10 → 2.1.0

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 (89) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/refinery/admin/pages_controller.rb +23 -17
  3. data/app/controllers/refinery/admin/pages_dialogs_controller.rb +8 -45
  4. data/app/controllers/refinery/pages/admin/preview_controller.rb +38 -0
  5. data/app/controllers/refinery/pages_controller.rb +26 -43
  6. data/app/helpers/refinery/admin/pages_helper.rb +19 -14
  7. data/app/models/refinery/page.rb +133 -194
  8. data/app/models/refinery/page_part.rb +1 -1
  9. data/{lib → app/presenters}/refinery/pages/content_page_presenter.rb +1 -5
  10. data/{lib → app/presenters}/refinery/pages/content_presenter.rb +1 -15
  11. data/app/presenters/refinery/pages/menu_presenter.rb +118 -0
  12. data/{lib → app/presenters}/refinery/pages/page_part_section_presenter.rb +0 -0
  13. data/{lib → app/presenters}/refinery/pages/section_presenter.rb +0 -0
  14. data/{lib → app/presenters}/refinery/pages/title_section_presenter.rb +0 -0
  15. data/app/sweepers/refinery/pages/page_sweeper.rb +29 -0
  16. data/app/views/refinery/admin/pages/_form.html.erb +4 -4
  17. data/app/views/refinery/admin/pages/_form_advanced_options.html.erb +3 -18
  18. data/app/views/refinery/admin/pages/_form_page_parts.html.erb +2 -2
  19. data/app/views/refinery/admin/pages/_page.html.erb +5 -5
  20. data/app/views/refinery/admin/pages/_records.html.erb +1 -3
  21. data/app/views/refinery/admin/pages/_sortable_list.html.erb +1 -1
  22. data/app/views/refinery/admin/pages/index.html.erb +1 -1
  23. data/app/views/refinery/admin/pages_dialogs/link_to.html.erb +0 -2
  24. data/config/locales/bg.yml +0 -11
  25. data/config/locales/cs.yml +1 -3
  26. data/config/locales/da.yml +15 -5
  27. data/config/locales/de.yml +16 -5
  28. data/config/locales/el.yml +0 -3
  29. data/config/locales/en.yml +1 -12
  30. data/config/locales/es.yml +0 -3
  31. data/config/locales/fi.yml +0 -3
  32. data/config/locales/fr.yml +0 -11
  33. data/config/locales/hu.yml +85 -0
  34. data/config/locales/it.yml +0 -10
  35. data/config/locales/ja.yml +0 -3
  36. data/config/locales/ko.yml +0 -11
  37. data/config/locales/lt.yml +0 -3
  38. data/config/locales/lv.yml +0 -3
  39. data/config/locales/nb.yml +0 -3
  40. data/config/locales/nl.yml +51 -40
  41. data/config/locales/pl.yml +23 -4
  42. data/config/locales/pt-BR.yml +0 -3
  43. data/config/locales/pt.yml +85 -0
  44. data/config/locales/rs.yml +0 -3
  45. data/config/locales/ru.yml +0 -3
  46. data/config/locales/sk.yml +0 -11
  47. data/config/locales/sl.yml +0 -3
  48. data/config/locales/sv.yml +0 -3
  49. data/config/locales/tr.yml +85 -0
  50. data/config/locales/uk.yml +82 -0
  51. data/config/locales/vi.yml +0 -3
  52. data/config/locales/zh-CN.yml +8 -11
  53. data/config/locales/zh-TW.yml +0 -3
  54. data/config/routes.rb +11 -5
  55. data/db/seeds.rb +16 -14
  56. data/lib/generators/refinery/pages/templates/config/initializers/refinery/pages.rb.erb +8 -4
  57. data/lib/refinery/pages.rb +5 -9
  58. data/lib/refinery/pages/caching.rb +60 -0
  59. data/lib/refinery/pages/configuration.rb +11 -7
  60. data/lib/refinery/pages/engine.rb +7 -8
  61. data/lib/refinery/pages/instance_methods.rb +4 -11
  62. data/lib/refinery/pages/render_options.rb +27 -0
  63. data/lib/refinery/pages/tab.rb +15 -4
  64. data/lib/refinery/pages/url.rb +74 -0
  65. data/refinerycms-pages.gemspec +4 -3
  66. data/spec/controllers/refinery/pages_controller_spec.rb +24 -0
  67. data/spec/factories/pages.rb +1 -1
  68. data/spec/{requests → features}/refinery/admin/pages_spec.rb +125 -42
  69. data/spec/{requests → features}/refinery/pages_spec.rb +139 -23
  70. data/spec/helpers/refinery/pages/admin/pages_helper_spec.rb +25 -25
  71. data/spec/lib/refinery/pages/caching_spec.rb +90 -0
  72. data/spec/lib/refinery/pages/tab_spec.rb +89 -0
  73. data/spec/lib/refinery/pages/url_spec.rb +74 -0
  74. data/spec/models/refinery/page_spec.rb +196 -71
  75. data/spec/{lib → presenters/refinery}/pages/content_page_presenter_spec.rb +0 -0
  76. data/spec/{lib → presenters/refinery}/pages/content_presenter_spec.rb +0 -0
  77. data/spec/presenters/refinery/pages/menu_presenter_spec.rb +58 -0
  78. data/spec/{lib → presenters/refinery}/pages/page_part_section_presenter_spec.rb +0 -0
  79. data/spec/{lib → presenters/refinery}/pages/section_presenter_spec.rb +0 -0
  80. data/spec/{lib → presenters/refinery}/pages/title_section_presenter_spec.rb +0 -0
  81. data/spec/support/refinery/pages/caching.rb +19 -0
  82. data/spec/support/refinery/pages/caching_helpers.rb +22 -0
  83. metadata +77 -33
  84. data/app/controllers/refinery/page_sweeper.rb +0 -34
  85. data/app/helpers/refinery/pages_helper.rb +0 -20
  86. data/app/views/refinery/admin/pages/_locale_picker.html.erb +0 -11
  87. data/config/locales/pt-PT.yml +0 -75
  88. data/spec/controllers/refinery/admin/pages_controller_spec.rb +0 -17
  89. data/spec/helpers/refinery/pages/pages_helper_spec.rb +0 -30
@@ -4,7 +4,7 @@ module Refinery
4
4
  attr_accessible :title, :content, :position, :body, :refinery_page_id
5
5
  belongs_to :page, :foreign_key => :refinery_page_id
6
6
 
7
- validates :title, :presence => true
7
+ validates :title, :presence => true, :uniqueness => {:scope => :refinery_page_id}
8
8
  alias_attribute :content, :body
9
9
 
10
10
  translates :body if respond_to?(:translates)
@@ -7,7 +7,7 @@ module Refinery
7
7
  class ContentPagePresenter < ContentPresenter
8
8
  def initialize(page, page_title)
9
9
  super()
10
- add_default_title_section(page_title) if page_title.present?
10
+ add_default_title_section(page_title) if page_title.present? && Pages.show_title_in_body
11
11
  add_page_parts(page.parts) if page
12
12
  add_default_post_page_sections
13
13
  end
@@ -21,10 +21,6 @@ module Refinery
21
21
  def add_default_post_page_sections
22
22
  add_section_if_missing(:id => :body)
23
23
  add_section_if_missing(:id => :side_body)
24
-
25
- # Deprecated in 2.1
26
- add_section_if_missing(:id => :body_content_left)
27
- add_section_if_missing(:id => :body_content_right)
28
24
  end
29
25
 
30
26
  def add_page_parts(parts)
@@ -47,21 +47,7 @@ module Refinery
47
47
  private
48
48
 
49
49
  def sections_html(can_use_fallback)
50
- @sections.map do |section|
51
- # Remove in 2.1
52
- check_deprecated_sections(section)
53
- section.wrapped_html(can_use_fallback)
54
- end.compact.join("\n").html_safe
55
- end
56
-
57
- def check_deprecated_sections(section)
58
- if section.has_content?
59
- if section.id == :body_content_left
60
- Refinery.deprecate "content_for :body_content_left", :when => '2.1.0', :replacement => "content_for :body"
61
- elsif section.id == :body_content_right
62
- Refinery.deprecate "content_for :body_content_right", :when => '2.1.0', :replacement => "content_for :side_body"
63
- end
64
- end
50
+ @sections.map { |section| section.wrapped_html(can_use_fallback) }.compact.join("\n").html_safe
65
51
  end
66
52
 
67
53
  def add_section_if_missing(options)
@@ -0,0 +1,118 @@
1
+ require 'active_support/core_ext/string'
2
+ require 'active_support/configurable'
3
+ require 'action_view/helpers/tag_helper'
4
+ require 'action_view/helpers/url_helper'
5
+
6
+ module Refinery
7
+ module Pages
8
+ class MenuPresenter
9
+ include ActionView::Helpers::TagHelper
10
+ include ActionView::Helpers::UrlHelper
11
+ include ActiveSupport::Configurable
12
+
13
+ config_accessor :roots, :menu_tag, :list_tag, :list_item_tag, :css, :dom_id,
14
+ :max_depth, :selected_css, :first_css, :last_css
15
+ self.dom_id = 'menu'
16
+ self.css = 'menu clearfix'
17
+ self.menu_tag = :nav
18
+ self.list_tag = :ul
19
+ self.list_item_tag = :li
20
+ self.selected_css = :selected
21
+ self.first_css = :first
22
+ self.last_css = :last
23
+ def roots
24
+ config.roots.presence || collection.roots
25
+ end
26
+
27
+ attr_accessor :context, :collection
28
+ delegate :output_buffer, :output_buffer=, :to => :context
29
+
30
+ def initialize(collection, context)
31
+ @collection = collection
32
+ @context = context
33
+ end
34
+
35
+ def to_html
36
+ render_menu(roots) if roots.present?
37
+ end
38
+
39
+ private
40
+ def render_menu(items)
41
+ content_tag(menu_tag, :id => dom_id, :class => css) do
42
+ render_menu_items(items)
43
+ end
44
+ end
45
+
46
+ def render_menu_items(menu_items)
47
+ if menu_items.present?
48
+ content_tag(list_tag) do
49
+ menu_items.each_with_index.inject(ActiveSupport::SafeBuffer.new) do |buffer, (item, index)|
50
+ buffer << render_menu_item(item, index)
51
+ end
52
+ end
53
+ end
54
+ end
55
+
56
+ def render_menu_item(menu_item, index)
57
+ content_tag(list_item_tag, :class => menu_item_css(menu_item, index)) do
58
+ buffer = ActiveSupport::SafeBuffer.new
59
+ buffer << link_to(menu_item.title, context.refinery.url_for(menu_item.url))
60
+ buffer << render_menu_items(menu_item_children(menu_item))
61
+ buffer
62
+ end
63
+ end
64
+
65
+ # Determines whether any item underneath the supplied item is the current item according to rails.
66
+ # Just calls selected_item? for each descendant of the supplied item
67
+ # unless it first quickly determines that there are no descendants.
68
+ def descendant_item_selected?(item)
69
+ item.has_children? && item.descendants.any?(&method(:selected_item?))
70
+ end
71
+
72
+ def selected_item_or_descendant_item_selected?(item)
73
+ selected_item?(item) || descendant_item_selected?(item)
74
+ end
75
+
76
+ # Determine whether the supplied item is the currently open item according to Refinery.
77
+ def selected_item?(item)
78
+ path = context.request.path
79
+ path = path.force_encoding('utf-8') if path.respond_to?(:force_encoding)
80
+
81
+ # Ensure we match the path without the locale, if present.
82
+ if %r{^/#{::I18n.locale}/} === path
83
+ path = path.split(%r{^/#{::I18n.locale}}).last.presence || "/"
84
+ end
85
+
86
+ # First try to match against a "menu match" value, if available.
87
+ return true if item.try(:menu_match).present? && path =~ Regexp.new(item.menu_match)
88
+
89
+ # Find the first url that is a string.
90
+ url = [item.url]
91
+ url << ['', item.url[:path]].compact.flatten.join('/') if item.url.respond_to?(:keys)
92
+ url = url.last.match(%r{^/#{::I18n.locale.to_s}(/.*)}) ? $1 : url.detect{|u| u.is_a?(String)}
93
+
94
+ # Now use all possible vectors to try to find a valid match
95
+ [path, URI.decode(path)].include?(url) || path == "/#{item.original_id}"
96
+ end
97
+
98
+ def menu_item_css(menu_item, index)
99
+ css = []
100
+
101
+ css << selected_css if selected_item_or_descendant_item_selected?(menu_item)
102
+ css << first_css if index == 0
103
+ css << last_css if index == menu_item.shown_siblings.length
104
+
105
+ css.reject(&:blank?).presence
106
+ end
107
+
108
+ def menu_item_children(menu_item)
109
+ within_max_depth?(menu_item) ? menu_item.children : []
110
+ end
111
+
112
+ def within_max_depth?(menu_item)
113
+ !max_depth || menu_item.depth < max_depth
114
+ end
115
+
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,29 @@
1
+ module Refinery
2
+ module Pages
3
+ class PageSweeper < ActionController::Caching::Sweeper
4
+ observe Page
5
+
6
+ def after_save(page)
7
+ expire_cache!
8
+ end
9
+
10
+ def after_destroy(page)
11
+ expire_cache!
12
+ end
13
+
14
+ protected
15
+ def cache_directory
16
+ page_cache_directory
17
+ end
18
+
19
+ def caching
20
+ @caching ||= Caching.new(cache_directory)
21
+ end
22
+
23
+ def expire_cache!
24
+ caching.expire!
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -1,8 +1,9 @@
1
- <%= form_for [refinery, :admin, @page], :url => (refinery.admin_page_path(@page.nested_url) if @page.persisted?) do |f| %>
1
+ <%= form_for [refinery, :admin, @page],
2
+ :url => (refinery.admin_page_path(@page.nested_url) if @page.persisted?) do |f| %>
2
3
 
3
4
  <%= render '/refinery/admin/error_messages', :object => @page, :include_object_name => true %>
4
5
 
5
- <%= render 'locale_picker', :current_locale => Globalize.locale if Refinery.i18n_enabled? %>
6
+ <%= render '/refinery/admin/locale_picker', :current_locale => Globalize.locale %>
6
7
 
7
8
  <div class="field">
8
9
  <%= f.label :title %>
@@ -36,7 +37,6 @@
36
37
 
37
38
  <% content_for :javascripts do %>
38
39
  <script>
39
- var refinery_page_preview_url = '<%= @page.persisted? ? refinery.preview_page_path(@page.uncached_nested_url) : refinery.preview_pages_path %>';
40
40
  $(document).ready(function(){
41
41
  page_options.init(
42
42
  <%= Refinery::Pages.new_page_parts.to_s %>
@@ -49,7 +49,7 @@
49
49
  var prev_url = form.attr('action');
50
50
  var prev_target = form.attr('target');
51
51
  form.attr({
52
- 'action': refinery_page_preview_url
52
+ 'action': '<%= @page.persisted? ? refinery.pages_admin_preview_page_path(@page.nested_url) : refinery.pages_admin_preview_pages_path %>'
53
53
  , 'target': '_blank'
54
54
  });
55
55
  form.submit();
@@ -1,16 +1,6 @@
1
- <div id='more_options_field'>
2
- <p>
3
- <%= link_to t('.advanced_options'), "#",
4
- :id => 'toggle_advanced_options',
5
- :title => t('.toggle_advanced_options') %>
6
- </p>
7
- <span id='draft_field'>
8
- <%= f.check_box :draft %>
9
- <%= f.label :draft, t('.save_as_draft'),
10
- :class => "stripped" %>
11
- </span>
12
- </div>
13
- <div id='more_options' style="display:none;">
1
+ <%= render '/refinery/admin/form_advanced_options_menu', :f => f %>
2
+
3
+ <div id="more_options" style="display:none;">
14
4
  <div class="hemisquare">
15
5
  <h2><%= t('.page_options') %></h2>
16
6
  <div class='field'>
@@ -30,7 +20,6 @@
30
20
  template_options(:layout_template, @page) %>
31
21
  </div>
32
22
  <% end %>
33
- <% if Refinery::Pages.use_view_templates %>
34
23
  <div class='field'>
35
24
  <span class='label_with_help'>
36
25
  <%= f.label :view_template, t('.view_template') %>
@@ -39,7 +28,6 @@
39
28
  <%= f.select :view_template, @valid_view_templates.map { |t| [t.titleize, t] },
40
29
  template_options(:view_template, @page) %>
41
30
  </div>
42
- <% end %>
43
31
 
44
32
  <div class='field'>
45
33
  <span class='label_with_help'>
@@ -75,9 +63,6 @@
75
63
  <% content_for :javascripts do %>
76
64
  <script>
77
65
  $(document).ready(function(){
78
- link_tester.init('<%= refinery.test_url_admin_pages_dialogs_path %>',
79
- '<%= refinery.test_email_admin_pages_dialogs_path %>');
80
-
81
66
  link_tester.validate_url_textbox("#page_link_url")
82
67
  });
83
68
  </script>
@@ -30,7 +30,7 @@
30
30
  <%= link_to part.title, "##{@page.persisted? ? part.to_param : "page_part_new_#{part_index}"}" %>
31
31
  </li>
32
32
  <% end %>
33
- <% ::Refinery::Pages.tabs.each_with_index do |tab, tab_index| %>
33
+ <% ::Refinery::Pages.tabs_for_template(@page.view_template).each_with_index do |tab, tab_index| %>
34
34
  <li class='ui-state-default' id="custom_<%= tab.name %>_tab">
35
35
  <%= link_to tab.name.titleize, "#custom_tab_#{tab_index}" %>
36
36
  </li>
@@ -45,7 +45,7 @@
45
45
  :part_index => (part_index += 1),
46
46
  :new_part => @page.new_record? -%>
47
47
  <% end %>
48
- <% ::Refinery::Pages.tabs.each_with_index do |tab, tab_index| %>
48
+ <% ::Refinery::Pages.tabs_for_template(@page.view_template).each_with_index do |tab, tab_index| %>
49
49
  <div class='page_part' id='<%= "custom_tab_#{tab_index}" %>'>
50
50
  <%= render tab.partial, :f => f %>
51
51
  </div>
@@ -10,12 +10,12 @@
10
10
  <%= page_title_with_translations page %>
11
11
  <%= page_meta_information page %>
12
12
  </span>
13
- <% if Refinery.i18n_enabled? && Refinery::I18n.frontend_locales.many? %>
13
+ <% if Refinery::I18n.frontend_locales.many? %>
14
14
  <span class='locales'>
15
15
  <% page.translations.sort_by{|t| Refinery::I18n.frontend_locales.index(t.locale)}.each do |translation| %>
16
16
  <%= link_to refinery_icon_tag("flags/#{translation.locale}.png", :size => '16x11'),
17
17
  refinery.edit_admin_page_path(page.nested_url, :switch_locale => translation.locale),
18
- :class => 'locale' %>
18
+ :class => 'locale' if translation.title.present? %>
19
19
  <% end %>
20
20
  </span>
21
21
  <% end %>
@@ -30,11 +30,11 @@
30
30
  :title => t('new', :scope => 'refinery.admin.pages') %>
31
31
 
32
32
  <%= link_to refinery_icon_tag('application_edit.png'),
33
- refinery.edit_admin_page_path(page.uncached_nested_url, :switch_locale => (page.translations.first.locale unless page.translated_to_default_locale?)),
33
+ refinery.edit_admin_page_path(page.nested_url, :switch_locale => (page.translations.first.locale unless page.translated_to_default_locale?)),
34
34
  :title => t('edit', :scope => 'refinery.admin.pages') %>
35
35
 
36
36
  <%= link_to refinery_icon_tag('delete.png'),
37
- refinery.admin_page_path(page.uncached_nested_url),
37
+ refinery.admin_page_path(page.nested_url),
38
38
  :class => "cancel confirm-delete",
39
39
  :title => t('delete', :scope => 'refinery.admin.pages'),
40
40
  :data => {
@@ -46,7 +46,7 @@
46
46
  :method => :delete if page.deletable? %>
47
47
  </span>
48
48
  </div>
49
- <ul class='nested' data-ajax-content="<%= refinery.admin_children_pages_path(page.uncached_nested_url) %>">
49
+ <ul class='nested' data-ajax-content="<%= refinery.admin_children_pages_path(page.nested_url) %>">
50
50
  <%= render(:partial => 'page', :collection => page.children) if Refinery::Pages.auto_expand_admin_tree %>
51
51
  </ul>
52
52
  </li>
@@ -1,6 +1,4 @@
1
- <% if searching? %>
2
- <h2><%= t('results_for', :scope => 'refinery.admin.search', :query => params[:search]) %></h2>
3
- <% end %>
1
+ <%= render 'refinery/admin/search_header', :url => refinery.admin_pages_path %>
4
2
  <% if @pages.any? %>
5
3
  <%= render 'sortable_list' %>
6
4
  <% else %>
@@ -1,4 +1,4 @@
1
1
  <ul id='sortable_list'>
2
- <%= render :partial => 'page', :collection => @pages.select{|p| p.parent_id.nil?} %>
2
+ <%= render :partial => 'page', :collection => @pages.roots %>
3
3
  </ul>
4
4
  <%= render '/refinery/admin/sortable_list', :continue_reordering => !!local_assigns[:continue_reordering] %>
@@ -6,4 +6,4 @@
6
6
  <section id='actions'>
7
7
  <%= render 'actions' %>
8
8
  </section>
9
- <%= render '/refinery/admin/make_sortable', :tree => true if @pages.many? -%>
9
+ <%= render '/refinery/admin/make_sortable', :tree => true, :replace_contents_after_update => true if @pages.many? -%>
@@ -119,8 +119,6 @@
119
119
  <% content_for :javascripts do %>
120
120
  <script>
121
121
  $(document).ready(function(){
122
- link_tester.init('<%= refinery.test_url_admin_pages_dialogs_path %>',
123
- '<%= refinery.test_email_admin_pages_dialogs_path %>');
124
122
  link_dialog.init();
125
123
 
126
124
  $('.link_list a').click(function(e){
@@ -45,16 +45,13 @@ bg:
45
45
  create_content_section: Добавяне на секция за съдържание
46
46
  delete_content_section: Изтриване на секция за съдържание
47
47
  form_advanced_options:
48
- toggle_advanced_options: Достъп до настройките за етикета "meta" и менюто
49
48
  page_options: Настройки на страница
50
49
  parent_page: Родителска страница
51
- advanced_options: Разширени настройки
52
50
  menu_title: Заглавие в менюто
53
51
  custom_slug: Кратко заглавие по избор
54
52
  show_in_menu_title: Показване в менюто
55
53
  show_in_menu_description: Показване на тази страница в менюто на сайта
56
54
  show_in_menu_help: Махнете отметката от това поле, ако искате страницата да не се показва в менюто на сайта. Това е удобно, ако искате дадена страница да бъде достъпвана директно без да бъде показвана в менюто.
57
- save_as_draft: Запис като чернова
58
55
  skip_to_first_child: Пропускане на страницата като родителска
59
56
  skip_to_first_child_label: Пренасочване на посетителите към първата страница от по-ниско ниво.
60
57
  skip_to_first_child_help: Тази настройка предоставя възможност страницата да бъде свързана с друга, намираща се под нея. Това е полезно при групиране на страници.
@@ -63,14 +60,6 @@ bg:
63
60
  parent_page_help: Можете да поставите страница под друга като я изберете от списъка. Ако искате тази страница да бъде на най-горно ниво, оставете полето празно.
64
61
  menu_title_help: Ако искате в менюто да се показва различно заглавие на страницата, въведете го тук.
65
62
  custom_slug_help: Краткото заглавие (slug) представлява лесно четим идентификатор, който се използва при създаването на уеб адреса на страницата. Например &apos;за-нас&apos;. За да замените краткото заглавие, което автоматично се генерира от Refinery, въведете Вашето тук.
66
- form_advanced_options_seo:
67
- seo: Оптимизация за търсачки
68
- seo_override_title: Заглавие в браузъра
69
- seo_override_title_help: Въведете заглавие от 5 до 10 символа, което да синтезира съдържанието на тази страница.
70
- meta_keywords_title: Ключови думи за етиката "meta"
71
- meta_keywords_help: Въведете от 5 до 10 ключови думи, които описват тази страница, разделени със запетая.
72
- meta_description_title: Описание за етикета "meta"
73
- meta_description_help: Въведете няколко кратки изречения, които да описват тази страница.
74
63
  actions:
75
64
  create_new_page: Добавяне на нова страница
76
65
  reorder_pages: Пренареждане на страниците
@@ -34,6 +34,7 @@ cs:
34
34
  pages:
35
35
  delete: Smazat tuto stránku
36
36
  edit: Upravit tuto stránku
37
+ new: Přidat podstránku
37
38
  page:
38
39
  view_live_html: Zobrazit tuto stránku <br/><em>(otevře se v novém okně)</em>
39
40
  hidden: skrytá
@@ -44,15 +45,12 @@ cs:
44
45
  create_content_section: Přidat sekci
45
46
  delete_content_section: Smazat sekci
46
47
  form_advanced_options:
47
- toggle_advanced_options: Zpřístupní nastavení menu a meta tagů
48
48
  page_options: Nastavení stránky
49
49
  parent_page: Nadřazená stránka
50
- advanced_options: Rozšířené nastavení
51
50
  custom_title: Titulek
52
51
  show_in_menu_title: Zobrazit v menu
53
52
  show_in_menu_description: Zobrazit tuto stránku v menu webu
54
53
  show_in_menu_help: Odškrtněte pokud chcete odstranit odkaz na tuto stránku z menu webu.
55
- save_as_draft: Uložit jako pracovní verzi
56
54
  skip_to_first_child: Přeskočit na první dceřinou stránku
57
55
  skip_to_first_child_label: Přesměruje návštěvníka na první dceřinou stránku.
58
56
  skip_to_first_child_help: Tato stránka se nezobrazí, místo toho bude odkaz na ní přesměrován na její první dceřinou stránku. To se může hodit pro seskupování stránek.
@@ -34,38 +34,48 @@ da:
34
34
  pages:
35
35
  delete: Slet siden permanent
36
36
  edit: Redigér siden
37
+ new: Tilføj en ny underside
38
+ expand_collapse: Udvid eller sammenfold undersider
37
39
  page:
38
40
  view_live_html: Vis siden live <br/><em>(åbner i et nyt vindue)</em>
39
41
  hidden: skjult
40
42
  draft: kladde
43
+ form:
44
+ preview: Preview
45
+ preview_changes: Se dine ændringer før du udgiver dem
41
46
  form_new_page_parts:
42
47
  title: Titel
43
48
  form_page_parts:
44
49
  create_content_section: Tilføj indholdselement
45
50
  delete_content_section: Slet indholdselement
51
+ reorder_content_section: Redigér rækkefølgen af indholdselement
46
52
  form_advanced_options:
47
- toggle_advanced_options: Tilgå meta tags og menuindstillinger
48
53
  page_options: Side indstillinger
49
54
  parent_page: Overordnet side
50
- advanced_options: Avancerede indstillinger
51
- custom_title: Brugerdefineret titel
55
+ menu_title: Menutitel
56
+ custom_slug: Brugerdefineret slug
52
57
  show_in_menu_title: Vis i menuen
53
58
  show_in_menu_description: Vis siden i menuen på sitet
54
59
  show_in_menu_help: Afkryds ikke, hvis du vil fjerne siden fra menuen på sitet. Dette kan benyttes, hvis du vil have en side, du kan linke til direkte, men som ikke skal vises i menuen.
55
- save_as_draft: Gem som kladde
56
60
  skip_to_first_child: Spring øverste sideniveau over
57
61
  skip_to_first_child_label: Videresend besøgende til den første underliggende side.
58
62
  skip_to_first_child_help: Dette vil vise den første underliggende side i stedet for denne side. Kan benyttes når man vil gruppere sider.
59
63
  link_url: Videresend besøgende til andet website eller anden side
60
64
  link_url_help: Hvis du vil have denne side går til et andet website eller en anden side, når besøgende klikker på den i menuen, skal du indtaste URLen, fx http://google.com
61
65
  parent_page_help: Du kan placere siden under en anden side ved at vælge den i listen. Hvis siden skal ligge på øverste niveau skal du ikke vælge noget.
62
- custom_title_help: Hvis siden skal have en anden titel end i menuen, så vælg &apos;Tekst&apos; og indtast titlen her.
66
+ menu_title_help: Hvis siden skal have en anden titel i menuen, så vælg &apos;Tekst&apos; og indtast titlen her.
67
+ custom_slug_help: En slug er et letlæseligt id, som bruges til at lave en sides fulde internetadresse (URL), fx &apos;om-os&apos. For at overskrive den slug der automatisk bliver oprettet af Refinery, kan du skrive din brugerdefinerede slug her.
68
+ layout_template: Layout template
69
+ layout_template_help: You can choose a different layout template for this page
70
+ view_template: View template
71
+ view_template_help: You can choose a different view template for this page
63
72
  actions:
64
73
  create_new_page: Tilføj en ny side
65
74
  reorder_pages: Redigér rækkefølgen af siderne
66
75
  reorder_pages_done: Gem rækkefølgen
67
76
  records:
68
77
  no_pages_yet: Der er ingen sider endnu. Klik på "Tilføj en ny side" for at oprette den første."
78
+ translator_access: Du har ikke tilstrækkelige rettigheder til at ændre siden på det valgte sprog.
69
79
  activerecord:
70
80
  models:
71
81
  refinery/page: side