refinerycms-llama_widgets 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/app/assets/images/refinery/icons/lock.png +0 -0
  2. data/app/assets/images/refinery/itoggle.png +0 -0
  3. data/app/assets/javascripts/refinery/engage.itoggle-min.js +17 -0
  4. data/app/assets/javascripts/refinery/widgets.js.coffee.erb +91 -0
  5. data/app/assets/stylesheets/refinery/engage.itoggle.css +94 -0
  6. data/app/assets/stylesheets/refinery/widgets.scss +89 -0
  7. data/app/controllers/refinery/widgets/admin/templates_controller.rb +28 -0
  8. data/app/controllers/refinery/widgets/admin/widget_types_controller.rb +59 -0
  9. data/app/controllers/refinery/widgets/admin/widgets_controller.rb +30 -0
  10. data/app/decorators/controllers/refinery/admin/pages_controller.rb +23 -0
  11. data/app/decorators/controllers/refinery/pages_controller.rb +13 -0
  12. data/app/decorators/models/refinery/page.rb +28 -0
  13. data/app/decorators/models/refinery/page_part.rb +16 -0
  14. data/app/helpers/refinery/widgets/widgets_helper.rb +38 -0
  15. data/app/models/refinery/widgets/content_block_widget.rb +13 -0
  16. data/app/models/refinery/widgets/template.rb +64 -0
  17. data/app/models/refinery/widgets/template_part.rb +37 -0
  18. data/app/models/refinery/widgets/widget.rb +108 -0
  19. data/app/overrides/refinery/admin/pages/_actions.rb +5 -0
  20. data/app/overrides/refinery/admin/pages/_form.rb +4 -0
  21. data/app/overrides/refinery/admin/pages/_form_page_parts.rb +5 -0
  22. data/app/overrides/refinery/admin/pages/_page.rb +5 -0
  23. data/app/views/refinery/admin/_image_picker.html.erb +66 -0
  24. data/app/views/refinery/admin/_nested_image_picker.html.erb +58 -0
  25. data/app/views/refinery/admin/pages/_form_page_parts.html.erb +37 -0
  26. data/app/views/refinery/admin/pages/_page_part.slim +25 -0
  27. data/app/views/refinery/admin/pages/_widget_fields.slim +46 -0
  28. data/app/views/refinery/widgets/_content_block_widget.slim +2 -0
  29. data/app/views/refinery/widgets/_widget.slim +1 -0
  30. data/app/views/refinery/widgets/admin/templates/_actions.html.erb +25 -0
  31. data/app/views/refinery/widgets/admin/templates/_form.html.erb +17 -0
  32. data/app/views/refinery/widgets/admin/templates/_page_part.slim +22 -0
  33. data/app/views/refinery/widgets/admin/templates/_page_parts.html.erb +37 -0
  34. data/app/views/refinery/widgets/admin/templates/_records.html.erb +16 -0
  35. data/app/views/refinery/widgets/admin/templates/_sortable_list.html.erb +5 -0
  36. data/app/views/refinery/widgets/admin/templates/_template.html.erb +18 -0
  37. data/app/views/refinery/widgets/admin/templates/_templates.html.erb +2 -0
  38. data/app/views/refinery/widgets/admin/templates/_widget_fields.slim +26 -0
  39. data/app/views/refinery/widgets/admin/templates/edit.html.erb +1 -0
  40. data/app/views/refinery/widgets/admin/templates/index.html.erb +7 -0
  41. data/app/views/refinery/widgets/admin/templates/list.slim +15 -0
  42. data/app/views/refinery/widgets/admin/templates/new.html.erb +1 -0
  43. data/app/views/refinery/widgets/admin/widget_types/new_for_page.slim +4 -0
  44. data/app/views/refinery/widgets/admin/widget_types/new_for_template.slim +4 -0
  45. data/app/views/refinery/widgets/admin/widget_types/show_for_page.slim +4 -0
  46. data/app/views/refinery/widgets/admin/widget_types/show_for_template.slim +4 -0
  47. data/app/views/refinery/widgets/admin/widgets/_content_block_widget.slim +3 -0
  48. data/app/views/refinery/widgets/admin/widgets/_content_block_widget_preview.slim +3 -0
  49. data/app/views/refinery/widgets/admin/widgets/_widget.slim +2 -0
  50. data/app/views/refinery/widgets/admin/widgets/_widget_preview.slim +2 -0
  51. data/app/views/refinery/widgets/admin/widgets/new.slim +31 -0
  52. data/config/locales/cs.yml +27 -0
  53. data/config/locales/en.yml +34 -0
  54. data/config/locales/es.yml +28 -0
  55. data/config/locales/fr.yml +27 -0
  56. data/config/locales/it.yml +27 -0
  57. data/config/locales/nb.yml +27 -0
  58. data/config/locales/nl.yml +27 -0
  59. data/config/locales/sk.yml +27 -0
  60. data/config/locales/tr.yml +27 -0
  61. data/config/locales/zh-CN.yml +29 -0
  62. data/config/routes.rb +29 -0
  63. data/db/migrate/1_create_widgets_templates.rb +22 -0
  64. data/db/migrate/2_create_widgets_template_parts.rb +20 -0
  65. data/db/migrate/3_create_widgets_widgets.rb +24 -0
  66. data/db/migrate/4_create_widgets_content_block_widgets.rb +16 -0
  67. data/db/migrate/5_add_template_id_to_refinery_pages.rb +13 -0
  68. data/db/migrate/6_add_locked_to_refinery_page_parts.rb +13 -0
  69. data/db/seeds.rb +24 -0
  70. data/lib/generators/refinery/templates/config/initializers/refinery/widgets.rb.erb +7 -0
  71. data/lib/generators/refinery/widgets_generator.rb +27 -0
  72. data/lib/refinery/widgets.rb +24 -0
  73. data/lib/refinery/widgets/acts_as_widget.rb +31 -0
  74. data/lib/refinery/widgets/configuration.rb +15 -0
  75. data/lib/refinery/widgets/engine.rb +39 -0
  76. data/lib/refinery/widgets/widget_type.rb +31 -0
  77. data/lib/refinerycms-widgets.rb +4 -0
  78. data/lib/tasks/refinery/widgets.rake +26 -0
  79. metadata +202 -0
@@ -0,0 +1,37 @@
1
+ <div class='field'>
2
+ <div id='page-tabs' class='clearfix ui-tabs ui-widget ui-widget-content ui-corner-all'>
3
+ <ul id='page_parts'>
4
+ <% f.object.parts.each_with_index do |part, index| %>
5
+ <li class="ui-state-default <%= 'ui-state-active' if index == 0 %>">
6
+ <%= link_to "#{part.title.to_s.humanize}", "\##{part.title}" %>
7
+ </li>
8
+ <% end %>
9
+ <% pages_tabs = ::Refinery::Pages.tabs
10
+ tabs_to_show = (refinery_pages_tabs ||= []).map!(&:to_s)
11
+ pages_tabs.reject!{|t| refinery_pages_tabs.exclude?(t.name.to_s) } unless tabs_to_show.include?('all')
12
+ pages_tabs.each_with_index do |tab, tab_index| %>
13
+ <li class='ui-state-default' id="custom_<%= tab.name %>_tab">
14
+ <%= link_to tab.name.titleize, "#custom_tab_#{tab_index}" %>
15
+ </li>
16
+ <% end %>
17
+ </ul>
18
+
19
+ <div id='page_part_editors'>
20
+ <% f.object.parts.each_with_index do |part,index| %>
21
+ <div class='page_part' id="<%= part.title %>">
22
+ <%= render 'page_part', :f => f, :field => part.title, :part => part %>
23
+ </div>
24
+ <% end %>
25
+ </div>
26
+ </div>
27
+ </div>
28
+
29
+ <% content_for :javascripts do %>
30
+ <script>
31
+ $(document).ready(function(){
32
+ if (!page_options.initialised) {
33
+ page_options.init(false, '', '');
34
+ }
35
+ });
36
+ </script>
37
+ <% end %>
@@ -0,0 +1,25 @@
1
+ - index = part.new_record? ? part.object_id : part.to_param
2
+
3
+ div.page_part id = field
4
+ div.tab-area.ui-corner-bottom id="template_part_index_#{part.title}" data-index=index
5
+ = f.fields_for :parts, part, child_index: index do |j|
6
+ = j.hidden_field :title
7
+ = j.hidden_field :position
8
+ = j.hidden_field :locked
9
+ .widgets data-sortable='widgets'
10
+ = j.fields_for :widgets, part.widgets.sort_by(&:position) do |k|
11
+ = render 'refinery/admin/pages/widget_fields', f: k, type: k.object.widget_type
12
+
13
+ - unless part.locked?
14
+ = content_tag(:a, :href => refinery.page_widgets_admin_widgets_path(:dialog => true), :title => 'Add widget', :id => "add_widget_#{j.object.title}") do
15
+ .widget
16
+ .left
17
+ = refinery_icon_tag('add')
18
+ span.type Add widget
19
+ .clear
20
+ - else
21
+ .widget
22
+ .left
23
+ = refinery_icon_tag('lock')
24
+ span.type This page part is locked.
25
+ .clear
@@ -0,0 +1,46 @@
1
+ .widget data-sort-item='widget'
2
+ .banner
3
+ .left
4
+ span.handle title="Reorder"
5
+ = refinery_icon_tag('arrow_switch')
6
+ span.type
7
+ = f.object.ultimate_widget_type.name if f.object.widget_type
8
+ - if f.object.times_used > 1
9
+ span.sub-title style = 'margin-left: 20px;' Used in #{pluralize (f.object.times_used-1), 'other place'}
10
+ .right
11
+ .icons
12
+ - if f.object.locked?
13
+ span title = 'Locked'
14
+ = refinery_icon_tag('lock')
15
+ - else
16
+ = f.label :display, :class => 'inline'
17
+ = f.check_box :display, :class => 'simple-itoggle'
18
+ = link_to_function(refinery_icon_tag('bin_closed'), 'removeWidget(this)', :title => "Remove widget" )
19
+ = link_to_function(refinery_icon_tag('edit'), 'showWidgetEdit(this)', :title => "Edit widget" ) unless local_assigns.has_key?(:mode) && mode == 'edit'
20
+ = link_to_function(refinery_icon_tag('zoom'), 'toggleWidget(this)', :title => "Toggle details")
21
+ .inner.clear style="margin-top:40px;"
22
+ .previewing style=("display:none;" if local_assigns.has_key?(:mode) && mode == 'edit')
23
+ .field
24
+ = f.label :name
25
+ = f.object.name
26
+ = f.fields_for f.object.widget_type.association_name do |j|
27
+ = render "refinery/widgets/admin/widgets/#{f.object.widget_type.admin_preview_partial}", :f => j
28
+
29
+ .editing style=("display:none;" unless local_assigns.has_key?(:mode) && mode == 'edit')
30
+ .field.clear
31
+ = f.hidden_field :sub_type
32
+ = f.hidden_field :_destroy, 'data-meta' => 'destroy'
33
+ = f.hidden_field :position, 'data-meta' => 'position'
34
+ = f.hidden_field :widget_id
35
+ = f.hidden_field :locked
36
+ = f.hidden_field :layout
37
+ = f.label :name
38
+ - if f.object.locked?
39
+ = text_field_tag :name, f.object.name, :disabled => true
40
+ = f.hidden_field :name
41
+ - else
42
+ = f.text_field :name
43
+ = f.fields_for f.object.widget_type.association_name do |j|
44
+ = render "refinery/widgets/admin/widgets/#{f.object.widget_type.admin_partial}", :f => j
45
+ .clear
46
+
@@ -0,0 +1,2 @@
1
+ .widget.content_block_widget
2
+ = raw widget.sub_type_instance.content
@@ -0,0 +1 @@
1
+ = render "refinery/widgets/#{widget.widget.widget_type.front_partial}", :widget => widget.widget
@@ -0,0 +1,25 @@
1
+ <ul>
2
+ <% if ::Refinery::Widgets::Admin::TemplatesController.searchable? %>
3
+ <li>
4
+ <%= render '/refinery/admin/search', :url => refinery.widgets_admin_templates_path %>
5
+ </li>
6
+ <% end %>
7
+ <li>
8
+ <%= link_to t('.create_new'), refinery.new_widgets_admin_template_path,
9
+ :class => "add_icon" %>
10
+ </li>
11
+ <% if !searching? && ::Refinery::Widgets::Admin::TemplatesController.sortable? && ::Refinery::Widgets::Template.many? %>
12
+ <li>
13
+ <%= link_to t('.reorder', :what => "Templates"),
14
+ refinery.widgets_admin_templates_path,
15
+ :id => "reorder_action",
16
+ :class => "reorder_icon" %>
17
+
18
+ <%= link_to t('.reorder_done', :what => "Templates"),
19
+ refinery.widgets_admin_templates_path,
20
+ :id => "reorder_action_done",
21
+ :style => "display: none;",
22
+ :class => "reorder_icon" %>
23
+ </li>
24
+ <% end %>
25
+ </ul>
@@ -0,0 +1,17 @@
1
+ <%= form_for [refinery, :widgets_admin, @template] do |f| -%>
2
+ <%= render '/refinery/admin/error_messages',
3
+ :object => @template,
4
+ :include_object_name => true %>
5
+
6
+ <div class='field'>
7
+ <%= f.label :name -%>
8
+ <%= f.text_field :name, :class => 'larger widest' -%>
9
+ </div>
10
+
11
+ <%= render 'page_parts', f: f, tabbed_fields: Refinery::Widgets::Template.parts %>
12
+
13
+ <%= render '/refinery/admin/form_actions', :f => f,
14
+ :continue_editing => false,
15
+ :delete_title => t('delete', :scope => 'refinery.templates.admin.templates.template'),
16
+ :delete_confirmation => t('message', :scope => 'refinery.admin.delete', :title => @template.name) -%>
17
+ <% end -%>
@@ -0,0 +1,22 @@
1
+ - template_part = f.object.template_part(field)
2
+ - index = template_part.new_record? ? template_part.object_id : template_part.to_param
3
+
4
+ div.tab-area.ui-corner-bottom id="template_part_index_#{field}" data-index=index
5
+ = f.fields_for :template_parts, template_part, child_index: index do |j|
6
+ = j.hidden_field :name
7
+
8
+ .field.clear
9
+ = j.label :locked, class: 'inline'
10
+ = j.select :locked, [['Yes', true], ['No', false]]
11
+ = j.hidden_field :display
12
+
13
+ .widgets data-sortable='widgets'
14
+ = j.fields_for :widgets, template_part.widgets.sort_by(&:position) do |k|
15
+ = render 'refinery/widgets/admin/templates/widget_fields', f: k, type: k.object.widget_type
16
+
17
+ = content_tag(:a, :href => refinery.template_widgets_admin_widgets_path(:dialog => true), :title => 'Add widget', :id => "add_widget_#{j.object.name}") do
18
+ .widget
19
+ .left
20
+ = refinery_icon_tag('add')
21
+ span.type Add widget
22
+ .clear
@@ -0,0 +1,37 @@
1
+ <div class='field'>
2
+ <div id='page-tabs' class='clearfix ui-tabs ui-widget ui-widget-content ui-corner-all'>
3
+ <ul id='page_parts'>
4
+ <% tabbed_fields.each_with_index do |field, index| %>
5
+ <li class="ui-state-default <%= 'ui-state-active' if index == 0 %>">
6
+ <%= link_to "#{field.to_s.humanize}", "\##{field}" %>
7
+ </li>
8
+ <% end %>
9
+ <% pages_tabs = ::Refinery::Pages.tabs
10
+ tabs_to_show = (refinery_pages_tabs ||= []).map!(&:to_s)
11
+ pages_tabs.reject!{|t| refinery_pages_tabs.exclude?(t.name.to_s) } unless tabs_to_show.include?('all')
12
+ pages_tabs.each_with_index do |tab, tab_index| %>
13
+ <li class='ui-state-default' id="custom_<%= tab.name %>_tab">
14
+ <%= link_to tab.name.titleize, "#custom_tab_#{tab_index}" %>
15
+ </li>
16
+ <% end %>
17
+ </ul>
18
+
19
+ <div id='page_part_editors'>
20
+ <% tabbed_fields.each do |field| %>
21
+ <div class='page_part' id="<%= field %>">
22
+ <%= render 'page_part', :f => f, :field => field %>
23
+ </div>
24
+ <% end %>
25
+ </div>
26
+ </div>
27
+ </div>
28
+
29
+ <% content_for :javascripts do %>
30
+ <script>
31
+ $(document).ready(function(){
32
+ if (!page_options.initialised) {
33
+ page_options.init(false, '', '');
34
+ }
35
+ });
36
+ </script>
37
+ <% end %>
@@ -0,0 +1,16 @@
1
+ <%= render 'refinery/admin/search_header', :url => refinery.widgets_admin_templates_path %>
2
+ <div class='pagination_container'>
3
+ <% if @templates.any? %>
4
+ <%= render 'templates' %>
5
+ <% else %>
6
+ <p>
7
+ <% unless searching? %>
8
+ <strong>
9
+ <%= t('.no_items_yet') %>
10
+ </strong>
11
+ <% else %>
12
+ <%= t('no_results', :scope => 'refinery.admin.search') %>
13
+ <% end %>
14
+ </p>
15
+ <% end %>
16
+ </div>
@@ -0,0 +1,5 @@
1
+ <ul id='sortable_list'>
2
+ <%= render :partial => 'template', :collection => @templates %>
3
+ </ul>
4
+ <%= render '/refinery/admin/sortable_list',
5
+ :continue_reordering => (local_assigns.keys.include?(:continue_reordering)) ? continue_reordering : true %>
@@ -0,0 +1,18 @@
1
+ <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(template) -%>">
2
+ <span class='title'>
3
+ <%= template.name %>
4
+ </span>
5
+ <span class='sub-title'>
6
+ Used <%= pluralize template.pages.count, 'time' %>
7
+ </span>
8
+ <span class='actions'>
9
+
10
+ <%= link_to refinery_icon_tag("application_edit.png"), refinery.edit_widgets_admin_template_path(template),
11
+ :title => t('.edit') %>
12
+ <%= link_to refinery_icon_tag("delete.png"), refinery.widgets_admin_template_path(template),
13
+ :class => "cancel confirm-delete",
14
+ :title => t('.delete'),
15
+ :confirm => t('message', :scope => 'refinery.admin.delete', :title => template.name),
16
+ :method => :delete %>
17
+ </span>
18
+ </li>
@@ -0,0 +1,2 @@
1
+ <%= will_paginate @templates if Refinery::Widgets::Admin::TemplatesController.pageable? %>
2
+ <%= render 'sortable_list' %>
@@ -0,0 +1,26 @@
1
+ .widget data-sort-item='widget'
2
+ .banner
3
+ .left
4
+ span.handle title="Reorder"
5
+ = refinery_icon_tag('arrow_switch')
6
+ span.type
7
+ = f.object.ultimate_widget_type.name if f.object.widget_type
8
+ - if f.object.times_used > 1
9
+ span.sub-title style = 'margin-left: 20px;' Used in #{pluralize (f.object.times_used-1), 'other place'}
10
+ .right
11
+ .icons
12
+ = link_to_function(refinery_icon_tag('bin_closed'), 'removeWidget(this)', :title => "Remove widget" )
13
+ = link_to_function(refinery_icon_tag('zoom'), 'toggleWidget(this)', :title => "Toggle details")
14
+ .inner.clear style="margin-top:40px;"
15
+ .field.clear
16
+ = f.hidden_field :sub_type
17
+ = f.hidden_field :_destroy, 'data-meta' => 'destroy'
18
+ = f.hidden_field :position, 'data-meta' => 'position'
19
+ = f.hidden_field :widget_id
20
+ = f.hidden_field :locked
21
+ = f.label :name
22
+ = f.text_field :name
23
+ = f.fields_for f.object.widget_type.association_name do |j|
24
+ = render "refinery/widgets/admin/widgets/#{f.object.widget_type.admin_partial}", :f => j
25
+ .clear
26
+
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1,7 @@
1
+ <section id='records'>
2
+ <%= render 'records' %>
3
+ </section>
4
+ <aside id='actions'>
5
+ <%= render 'actions' %>
6
+ </aside>
7
+ <%= render '/refinery/admin/make_sortable', :tree => false if !searching? and ::Refinery::Widgets::Admin::TemplatesController.sortable? and ::Refinery::Widgets::Template.many? %>
@@ -0,0 +1,15 @@
1
+ table.select_template
2
+ thead
3
+ tr
4
+ th Name
5
+ th Template parts
6
+ th Times used
7
+ th &nbsp;
8
+
9
+ tbody
10
+ - @templates.each do |template|
11
+ tr class = cycle('dark', 'light')
12
+ td = template.name
13
+ td = template.unlocked_template_parts.collect(&:name).to_sentence
14
+ td = Refinery::Page.where(template_id: template.id).count
15
+ td = link_to_function 'Use this template', "linkFromDialog('#{refinery.new_admin_page_path(parent_id: @parent_id, template_id: template.id)}')"
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1,4 @@
1
+ = instantiate_builder('page', @page, {}).fields_for :parts, @page_part, child_index: @page_part_index do |j|
2
+ = j.fields_for :widgets, @widget, child_index: @widget.object_id do |k|
3
+ = render("refinery/admin/pages/widget_fields", f: k, mode: 'edit')
4
+
@@ -0,0 +1,4 @@
1
+ = instantiate_builder('template', @template, {}).fields_for :template_parts, @template_part, child_index: @template_part_index do |j|
2
+ = j.fields_for :widgets, @widget, child_index: @widget.object_id do |k|
3
+ = render("refinery/widgets/admin/templates/widget_fields", f: k)
4
+
@@ -0,0 +1,4 @@
1
+ = instantiate_builder('page', @page, {}).fields_for :parts, @page_part, child_index: @page_part_index do |j|
2
+ = j.fields_for :widgets, @widget, child_index: @widget.object_id do |k|
3
+ = render("refinery/widgets/admin/templates/widget_fields", f: k)
4
+
@@ -0,0 +1,4 @@
1
+ = instantiate_builder('template', @template, {}).fields_for :template_parts, @template_part, child_index: @template_part_index do |j|
2
+ = j.fields_for :widgets, @widget, child_index: @widget.object_id do |k|
3
+ = render("refinery/widgets/admin/templates/widget_fields", f: k)
4
+
@@ -0,0 +1,3 @@
1
+ .field
2
+ = f.label :content
3
+ = f.text_field :content, :class => 'wymeditor', :style => 'width: 918px;'
@@ -0,0 +1,3 @@
1
+ .field
2
+ = f.label :content
3
+ = raw f.object.content
@@ -0,0 +1,2 @@
1
+ = f.fields_for f.object.widget_type.association_name do |j|
2
+ = render "refinery/widgets/admin/widgets/#{f.object.widget_type.admin_partial}", :f => j
@@ -0,0 +1,2 @@
1
+ = f.fields_for f.object.widget_type.association_name do |j|
2
+ = render "refinery/widgets/admin/widgets/#{f.object.widget_type.admin_preview_partial}", :f => j
@@ -0,0 +1,31 @@
1
+ #new_widget
2
+ h3 Add new
3
+ = select_tag :widget_type, options_for_select([['Select type...', nil]] + Refinery::Widgets::WidgetType.all.map{|t| [t.name, t.klass_as_string] }), :class => current_page?(refinery.url_for(:action => 'page')) ? 'page' : 'template'
4
+
5
+ h3 Select existing
6
+ table.existing_widgets
7
+ thead
8
+ tr.titles
9
+ th Name
10
+ th Type
11
+ - if current_page?(refinery.url_for(action: 'page'))
12
+ th Pages
13
+ - else
14
+ th Templates
15
+ th &nbsp
16
+ tbody
17
+ - @widgets.each do |widget|
18
+ tr class = cycle('dark', 'light')
19
+ td = widget.name
20
+ td = widget.widget_type.name
21
+ - if current_page?(refinery.url_for(action: 'page'))
22
+ td
23
+ = widget.pages.collect{|p| p.title }.to_sentence
24
+ - else
25
+ td
26
+ = widget.templates.collect{|p| p.name }.to_sentence
27
+ td
28
+ - if current_page?(refinery.url_for(action: 'page'))
29
+ = link_to_function('Select', "selectExistingWidgetForPage(#{widget.id})")
30
+ - else
31
+ = link_to_function('Select', "selectExistingWidgetForTemplate(#{widget.id})")
@@ -0,0 +1,27 @@
1
+ cs:
2
+ refinery:
3
+ plugins:
4
+ templates:
5
+ title: Templates
6
+ widgets:
7
+ admin:
8
+ templates:
9
+ actions:
10
+ create_new: Přidat Template
11
+ reorder: Řadit Templates
12
+ reorder_done: Konec řazení Templates
13
+ records:
14
+ title: Templates
15
+ sorry_no_results: Litujeme, ale nebyly nalezny žádné výsledky.
16
+ no_items_yet: Zatím nebyly vytvořeny žádné Templates. Zvolte "Přidat Template" pro přidání prvního template.
17
+ template:
18
+ view_live_html: Zobrazit náhled template<br/><em>(otevře se v novém okně)</em>
19
+ edit: Upravit template
20
+ delete: Smazat template
21
+ templates:
22
+ show:
23
+ other: Další Templates
24
+ activerecord:
25
+ attributes:
26
+ 'refinery/widgets/template':
27
+ name: Name