spina 2.16.0 → 2.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8740af9910fcafc714e8ebfe7c48e0676c696f8cc73aa0b2d5cfb13c832094e3
4
- data.tar.gz: ca1863b0553c66be2487224afa9a4f037a8756b435d620b42293d435708941bb
3
+ metadata.gz: a3f9ec18d2a07a7aedd9c210abd460a3e0098b92342087d4103a7315921692ad
4
+ data.tar.gz: fa6abb6f02ec21bbe17d8f004dffe8154e36dc762be8e8d7f9c8284e4d33e5df
5
5
  SHA512:
6
- metadata.gz: 4cfff0e8aa2ad19e9e675ad359c7cc525c5782ba759b964a4d17bd9653cebeb113a4275bf08a8f058f841936c15d8f1efa2a0631ddd9e730d18e7363b9a649ea
7
- data.tar.gz: ff06ff09cbced3560e43c69e86bda15f377e2faa290eb2362c4e270c54b337ec461ac14346c972459c242e181ce14e24f0127b239e0df7ecaea0676b2a669e3c
6
+ metadata.gz: a40c89a073e8b3355cd7b36269c1406b8a05ddd7e8d7ff6d7aa143e324daaf6b575fe673e730217eee7bc8b5219bbbd8bc3b36e64c32eb25f9c302d3cc8f1fb4
7
+ data.tar.gz: 5269cfc9d62772413beb28f28f49045ec845695308a65a72b0f000408694bce3fc3c7b4345e61cca33bce02ed17f3198c7d841410a41343eed8f162563e789fa
@@ -1,10 +1,11 @@
1
1
  <div class="flex items-center border border-gray-300 rounded-md bg-white p-1 relative shadow-sm" data-controller="parent-pages">
2
+ <% if resources.many? %>
3
+ <%= helpers.heroicon("collection", style: :solid, class: 'w-5 h-5 ml-2 text-gray-400 absolute') %>
4
+
5
+ <%= f.select :resource_id, resources, {}, class: "form-select hover:bg-gray-100 bg-none shadow-none w-auto bg-transparent border-none focus:ring-0 cursor-pointer pr-2 pl-8 flex-none truncate", data: {controller: "select-placeholder", action: "select-placeholder#update parent-pages#update"} %>
2
6
 
3
- <%= helpers.heroicon("collection", style: :solid, class: 'w-5 h-5 ml-2 text-gray-400 absolute') %>
4
-
5
- <%= f.select :resource_id, resources, {}, class: "form-select hover:bg-gray-100 bg-none shadow-none w-auto bg-transparent border-none focus:ring-0 cursor-pointer pr-2 pl-8 flex-none truncate", data: {controller: "select-placeholder", action: "select-placeholder#update parent-pages#update"} %>
6
-
7
- <%= helpers.heroicon('chevron-right', style: :solid, class: 'w-5 h-5 text-gray-600 flex-none') %>
7
+ <%= helpers.heroicon('chevron-right', style: :solid, class: 'w-5 h-5 text-gray-600 flex-none') %>
8
+ <% end %>
8
9
 
9
10
  <%= helpers.turbo_frame_tag "parent_pages", src: default_parent_pages_path, class: 'flex-auto', data: {parent_pages_target: "frame"} %>
10
11
  </div>
@@ -97,7 +97,7 @@ module Spina
97
97
  end
98
98
 
99
99
  def image_params
100
- params.require(:image).permit(:media_folder_id, :file)
100
+ params.require(:image).permit(:media_folder_id, :file, files: [])
101
101
  end
102
102
  end
103
103
  end
@@ -3,6 +3,7 @@ module Spina::Admin
3
3
  before_action :set_account
4
4
  before_action :set_locale
5
5
  before_action :set_breadcrumb
6
+ before_action :get_layout_parts
6
7
 
7
8
  admin_section :content
8
9
 
@@ -24,6 +25,11 @@ module Spina::Admin
24
25
  def layout_params
25
26
  params.require(:account).permit!
26
27
  end
28
+
29
+ def get_layout_parts
30
+ @layout_parts = Spina::Current.theme.layout_parts
31
+ @layout_parts = {parts: @layout_parts} if @layout_parts.is_a?(Array)
32
+ end
27
33
 
28
34
  def set_breadcrumb
29
35
  add_breadcrumb t("spina.layout.layout")
@@ -1,10 +1,8 @@
1
1
  module Spina::SpinaHelper
2
- def spina_importmap_tags(entry_point = "application", shim: true)
2
+ def spina_importmap_tags(entry_point = "application")
3
3
  safe_join [
4
4
  javascript_inline_importmap_tag(Spina.config.importmap.to_json(resolver: self)),
5
5
  javascript_importmap_module_preload_tags(Spina.config.importmap),
6
- (javascript_importmap_shim_nonce_configuration_tag if shim),
7
- (javascript_importmap_shim_tag if shim),
8
6
  javascript_import_module_tag(entry_point)
9
7
  ], "\n"
10
8
  end
@@ -5,7 +5,7 @@ module Spina
5
5
  include Partable
6
6
  include TranslatedContent
7
7
 
8
- serialize :preferences
8
+ serialize :preferences, coder: Psych
9
9
 
10
10
  after_save :bootstrap_website
11
11
 
@@ -6,15 +6,15 @@ module Spina
6
6
  # NavigationItems can be of two different kinds:
7
7
  # - A link to a page
8
8
  # - A link to a URL
9
- enum(:kind, {page: "page", url: "url"}, default: :page, suffix: true)
9
+ enum kind: {page: "page", url: "url"}, _suffix: true
10
10
 
11
11
  has_ancestry
12
12
 
13
13
  scope :regular_pages, -> { joins(:page).where(spina_pages: {resource_id: nil}) }
14
14
  scope :sorted, -> { order("spina_navigation_items.position") }
15
- scope :live, -> { joins(:page).where(spina_pages: {draft: false, active: true}) }
16
- scope :in_menu, -> { joins(:page).where(spina_pages: {show_in_menu: true}) }
17
- scope :active, -> { joins(:page).where(spina_pages: {active: true}) }
15
+ scope :live, -> { left_outer_joins(:page).where("spina_pages.draft = ? AND spina_pages.active = ? OR spina_pages.id IS NULL", false, true) }
16
+ scope :in_menu, -> { left_outer_joins(:page).where("spina_pages.show_in_menu = ? OR spina_pages.id IS NULL", true) }
17
+ scope :active, -> { left_outer_joins(:page).where("spina_pages.active = ? OR spina_pages.id IS NULL", true) }
18
18
 
19
19
  validates :page, uniqueness: {scope: :navigation}, presence: true, if: :page_kind?
20
20
  validates :url, presence: true, if: :url_kind?
@@ -13,7 +13,10 @@ module Spina
13
13
  signed_blob_id.present?
14
14
  end
15
15
 
16
- def signed_id(expires_in: nil)
16
+ # Rails 7.1 started using 'expires_at', so we
17
+ # include both expires_in and expires_at for backwards
18
+ # compatibility
19
+ def signed_id(expires_at: nil, expires_in: nil)
17
20
  signed_blob_id
18
21
  end
19
22
  end
@@ -28,7 +28,10 @@ module Spina
28
28
  signed_blob_id.present?
29
29
  end
30
30
 
31
- def signed_id(expires_in: nil)
31
+ # Rails 7.1 started using 'expires_at', so we
32
+ # include both expires_in and expires_at for backwards
33
+ # compatibility
34
+ def signed_id(expires_at: nil, expires_in: nil)
32
35
  signed_blob_id
33
36
  end
34
37
 
@@ -65,7 +65,7 @@ module Spina
65
65
  end
66
66
 
67
67
  def scoped_collection(collection)
68
- scoped = collection.regular_pages.active.in_menu.sorted
68
+ scoped = collection.active.in_menu.sorted
69
69
  include_drafts ? scoped : scoped.live
70
70
  end
71
71
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  <link rel="icon" href="<%= image_url('spina/favicon.png') %>" />
10
10
 
11
- <title>Spina CMS</title>
11
+ <title><%= Spina.config.backend_title %></title>
12
12
 
13
13
  <!-- Stylesheets -->
14
14
  <%= stylesheet_link_tag "spina/tailwind", "spina/fonts", "spina/animate", "data-turbo-track": "reload" %>
@@ -1,36 +1,45 @@
1
- <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
2
- <% header.with_actions do %>
3
- <%= render Spina::UserInterface::TranslationsComponent.new(@account, label: @locale.upcase) %>
4
-
5
- <% if Spina::Current.theme.layout_parts.any? %>
1
+ <div data-controller="tabs" data-tabs-active="cursor-default text-gray-900 bg-spina-dark bg-opacity-10" data-tabs-inactive="cursor-pointer bg-transparent text-gray-400 border-transparent">
2
+ <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
3
+ <% header.with_actions do %>
4
+ <%= render Spina::UserInterface::TranslationsComponent.new(@account, label: @locale.upcase) %>
5
+
6
6
  <%= button_tag type: :submit, form: dom_id(@account), class: 'btn btn-primary', data: {controller: "button hotkeys", hotkeys: "command+s, ctrl+s", hotkeys_target: "button", action: "button#loading", loading_message: t('spina.ui.saving')} do %>
7
7
  <%= heroicon('check', style: :mini, class: 'w-5 h-5 -ml-1 mr-1') %>
8
8
  <%=t 'spina.layout.save' %>
9
9
  <% end %>
10
10
  <% end %>
11
+
12
+ <% header.with_navigation do %>
13
+ <nav class="-mb-3 mt-4" <%= 'hidden' unless @layout_parts.keys.many? %>>
14
+ <ul class="inline-flex w-auto rounded-md bg-white">
15
+ <% @layout_parts.keys.each do |key| %>
16
+ <%= render Spina::Pages::TabButtonComponent.new(tab_name: key) do %>
17
+ <%=t "spina.layout.sections.#{key}" %>
18
+ <% end %>
19
+ <% end %>
20
+ </ul>
21
+ </nav>
22
+ <% end %>
11
23
  <% end %>
12
- <% end %>
13
-
14
- <%= form_with model: @account, url: spina.admin_layout_path, id: dom_id(@account) do |f| %>
15
- <%= hidden_field_tag :locale, @locale %>
16
-
17
- <div class="py-4 p-8">
18
- <% if Spina::Current.theme.layout_parts.any? %>
19
-
20
- <div class="max-w-5xl">
21
- <%= f.fields_for "#{@locale}_content".to_sym, build_parts(f.object, Spina::Current.theme.layout_parts) do |ff| %>
22
- <%= ff.hidden_field :type, value: ff.object.class %>
23
- <%= ff.hidden_field :name %>
24
- <%= ff.hidden_field :title %>
24
+
25
+ <%= form_with model: @account, url: spina.admin_layout_path, id: dom_id(@account) do |f| %>
26
+ <%= hidden_field_tag :locale, @locale %>
27
+
28
+ <div class="py-4 p-8">
29
+ <% @layout_parts.keys.each.with_index do |key, index| %>
30
+ <div data-tabs-target="pane" id="<%= key %>">
31
+ <div class="max-w-5xl">
32
+ <%= f.fields_for "#{@locale}_content".to_sym, build_parts(f.object, @layout_parts[key]) do |ff| %>
33
+ <%= ff.hidden_field :type, value: ff.object.class %>
34
+ <%= ff.hidden_field :name %>
35
+ <%= ff.hidden_field :title %>
36
+
37
+ <%= render "spina/admin/parts/#{parts_partial_namespace(ff.object.class.to_s)}/form", f: ff %>
38
+ <% end %>
39
+ </div>
40
+ </div>
41
+ <% end %>
42
+ </div>
25
43
 
26
- <%= render "spina/admin/parts/#{parts_partial_namespace(ff.object.class.to_s)}/form", f: ff %>
27
- <% end %>
28
- </div>
29
- <% else %>
30
- <div class="text-gray-500 italic">
31
- <%=t 'spina.layout.no_layout_parts' %>
32
- </div>
33
- <% end %>
34
- </div>
35
-
36
- <% end %>
44
+ <% end %>
45
+ </div>
@@ -8,7 +8,7 @@
8
8
  <div class="text-left truncate"><%= navigation_item.menu_title %></div>
9
9
 
10
10
  <% if navigation_item.url_kind? %>
11
- <%= link_to navigation_item.url, target: :blank, class: "h-7 flex items-center pl-1 text-gray-400 hover:text-gray-700" do %>
11
+ <%= link_to navigation_item.url, class: "h-7 flex items-center pl-1 text-gray-400 hover:text-gray-700" do %>
12
12
  <%= heroicon("external-link", style: :mini, class: "w-4 h-4") %>
13
13
  <% end %>
14
14
  <% end %>
@@ -4,7 +4,7 @@
4
4
  <% if @page.draft? %>
5
5
  <span class="text-gray-400 ml-2 text-sm">(<%= Spina::Page.human_attribute_name(:draft) %>)</span>
6
6
  <% end %>
7
- <%= link_to @page.materialized_path(locale: @locale), class: 'px-3 py-2 flex items-center text-gray-400 hover:text-gray-700', target: :blank, data: {turbo: false} do %>
7
+ <%= link_to @page.materialized_path(locale: @locale), class: 'px-3 py-2 flex items-center text-gray-400 hover:text-gray-700', data: {turbo: false} do %>
8
8
  <%= heroicon("external-link", style: :mini, class: "w-4 h-4") %>
9
9
  <% end %>
10
10
  <% end %>
@@ -1,4 +1,11 @@
1
1
  <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
2
+ <% header.with_after_breadcrumbs do %>
3
+ <%= link_to "/", class: 'px-3 py-1.5 flex items-center text-gray-400 hover:text-gray-700', data: {turbo: false} do %>
4
+ <%= heroicon("external-link", style: :mini, class: "w-4 h-4") %>
5
+ <span class="text-sm ml-1"><%=t "spina.preview_website" %></span>
6
+ <% end %>
7
+ <% end %>
8
+
2
9
  <% header.with_actions do %>
3
10
  <% if @resource %>
4
11
  <%= link_to spina.edit_admin_resource_path(@resource), class: 'btn btn-default' do %>
@@ -16,9 +16,13 @@
16
16
 
17
17
  <%= render Spina::MainNavigation::LinkComponent.new t('spina.website.pages'), spina.admin_pages_path, active: controller_name.in?(%w(pages resources)) %>
18
18
 
19
- <%= render Spina::MainNavigation::LinkComponent.new t('spina.navigations.navigations'), spina.admin_navigations_path, active: controller_name == "navigations" %>
20
-
21
- <%= render Spina::MainNavigation::LinkComponent.new t('spina.layout.layout'), spina.edit_admin_layout_path, active: controller_name == "layout" %>
19
+ <% if Spina::Current.theme.navigations.present? %>
20
+ <%= render Spina::MainNavigation::LinkComponent.new t('spina.navigations.navigations'), spina.admin_navigations_path, active: controller_name == "navigations" %>
21
+ <% end %>
22
+
23
+ <% if Spina::Current.theme.layout_parts.present? %>
24
+ <%= render Spina::MainNavigation::LinkComponent.new t('spina.layout.layout'), spina.edit_admin_layout_path, active: controller_name == "layout" %>
25
+ <% end %>
22
26
 
23
27
  <%= render Spina::MainNavigation::LinkComponent.new t('spina.website.media_library'), spina.admin_images_path, active: controller_name.in?(%w(images media_folders attachments)) %>
24
28
 
@@ -0,0 +1,415 @@
1
+ cs:
2
+ activemodel:
3
+ attributes:
4
+ spina/embeds/youtube:
5
+ url: youtube.com/watch?v=...
6
+ spina/embeds/vimeo:
7
+ url: vimeo.com/...
8
+ activerecord:
9
+ errors:
10
+ models:
11
+ spina/page:
12
+ attributes:
13
+ title:
14
+ blank: Titulek je povinný
15
+ attributes:
16
+ spina/account:
17
+ address: Adresa
18
+ city: Město
19
+ email: E-mail
20
+ facebook: Facebook
21
+ google_analytics: Google Analytics
22
+ google_plus: Google+
23
+ google_site_verification: Google Site Verification
24
+ instagram: Instagram
25
+ kvk_identifier: IČO
26
+ kvk_identifier_description: IČO
27
+ linkedin: LinkedIn
28
+ logo: Logo
29
+ name: Název webu
30
+ phone: Telefon
31
+ postal_code: PSČ
32
+ robots_allowed: Viditelný ve vyhledávačích
33
+ theme: Téma webu
34
+ twitter: Twitter
35
+ vat_identifier: DIČ
36
+ vat_identifier_description: DIČ
37
+ youtube: YouTube
38
+ spina/attachment:
39
+ created_at: Vytvořeno
40
+ name: Název souboru
41
+ size: Velikost
42
+ spina/media_folder:
43
+ name: Název
44
+ spina/navigation:
45
+ auto_add_pages: Automaticky přidávat stránky
46
+ auto_add_pages_description: Nové stránky jsou přidány automaticky do této navigace
47
+ label: Popisek
48
+ pages: Stránky
49
+ pages_description: Vyberte stránky, které chcete použít v této navigaci
50
+ spina/page:
51
+ ancestry: Nadřazená stránka
52
+ created_at: Vytvořeno
53
+ description: Meta popisek
54
+ description_description: Tento popisek bude zobrazen ve výsledcích vyhledávání
55
+ description_placeholder: Krátký popis vaší stránky
56
+ draft: Návrh
57
+ draft_description: Ideální pro situace, kdy vaše stránka ještě není hotová
58
+ link_url: Přesměrování stránky
59
+ link_url_description: Přesměrujte na URL
60
+ link_url_placeholder: např. http://www.example.com/
61
+ menu_title: Popisek v navigaci
62
+ menu_title_placeholder: Nechte prázdné, abyste použili název stránky
63
+ no_parent: Žádná nadřazená stránka
64
+ resource: Zdroj
65
+ seo_title: SEO titulek
66
+ seo_title_description: Ujistěte se, že váš výsledek vyhledávání vypadá dobře ve vyhledávačích
67
+ seo_title_placeholder: Tento titulek je použit v <title>-tagu
68
+ show_in_menu: Zobrazit v navigaci
69
+ show_in_menu_description: Pokud vypnete, tato stránka se nezobrazí ve vaší navigaci
70
+ skip_to_first_child: Přejít na první potomka
71
+ skip_to_first_child_description: Přejít na první potomkovou stránku
72
+ title: Titulek
73
+ title_placeholder: Název stránky
74
+ url_title: Přepsat slug
75
+ url_title_description: Volitelné
76
+ url_title_placeholder: Slug
77
+ view_template: Šablona stránky
78
+ spina/resource:
79
+ label: Popisek
80
+ order_by: Seřadit podle
81
+ parent_page: Nadřazená stránka
82
+ view_template: Výchozí šablona zobrazení
83
+ spina/user:
84
+ admin: Administrátor
85
+ admin_description: Administrátoři mohou vytvářet uživatele
86
+ email: E-mail
87
+ email_description: Váš e-mail musí být jedinečný
88
+ last_logged_in: Naposledy přihlášen
89
+ name: Jméno
90
+ name_placeholder: Jméno
91
+ password: Heslo
92
+ password_confirmation: Potvrdit heslo
93
+ password_description: Nechte prázdné, abyste ponechali stávající heslo
94
+ role: Role
95
+ user: Uživatel
96
+ models:
97
+ spina/attachment:
98
+ one: Dokument
99
+ other: Dokumenty
100
+ spina/page:
101
+ one: Stránka
102
+ other: Stránky
103
+ spina/photo:
104
+ one: Obrázek
105
+ other: Obrázky
106
+ spina/user:
107
+ one: Uživatel
108
+ other: Uživatelé
109
+ helpers:
110
+ label:
111
+ spina/embeds/button:
112
+ url: URL
113
+ label: Popisek tlačítka
114
+ spina/embeds/youtube:
115
+ url: URL YouTube
116
+ spina/embeds/vimeo:
117
+ url: URL Vimeo
118
+ spina:
119
+ accounts:
120
+ contact_details: Kontaktní údaje
121
+ contact_details_description: E-mail a telefon
122
+ couldnt_be_saved: Účet se nepodařilo uložit
123
+ name_description: Název vašeho webu
124
+ save: Uložit účet
125
+ saved: Účet uložen
126
+ ago: před
127
+ attachments:
128
+ choose_attachment: Vybrat přílohu
129
+ delete_confirmation_html: Jste si jistý? Tato příloha <span class='font-semibold'>možná</span> je použita na stránce.
130
+ download: Stáhnout
131
+ insert: Vložit dokument
132
+ insert_multiple: Vložit dokumenty
133
+ upload: Nahrát soubory
134
+ upload_one: Nahrát soubor
135
+ cancel: Zrušit
136
+ choose_from_library: Vybrat z knihovny
137
+ close: Zavřít
138
+ delete: Smazat
139
+ delete_confirmation: Jste si jistý, že chcete smazat <strong>%{subject}</strong>?
140
+ edit: Upravit
141
+ edit_website: Upravit váš web
142
+ embeds:
143
+ embed_a_component: Vložit komponentu
144
+ embed_component: Vložit komponentu
145
+ forgot_password:
146
+ expired: Platnost vašeho tokenu pro obnovení hesla vypršela.
147
+ mail_subject: Obnovení hesla
148
+ new: Obnovit heslo
149
+ request: Požádat o nové heslo
150
+ save: Uložit nové heslo
151
+ success: Můžete použít vaše nové heslo
152
+ unknown_user: Tento uživatel neexistuje
153
+ images:
154
+ all_images: Všechny obrázky
155
+ back: Zpět
156
+ cannot_be_created: Nelze vytvořit
157
+ choose_image: Vybrat obrázek
158
+ choose_images: Vybrat obrázky
159
+ confirm_selection: Potvrdit výběr
160
+ delete: Smazat
161
+ delete_confirmation_html: Jste si jistý, že chcete smazat tento <strong>obrázek</strong>?
162
+ delete_folder: Smazat složku
163
+ done_organizing: Dokončeno organizování
164
+ insert_image: Vložit obrázek
165
+ insert_photo: Vložit fotku
166
+ insert_photos: Vložit fotky
167
+ link: Odkaz
168
+ missing_image: Chybí obrázek
169
+ new_folder: Nová složka
170
+ organize: Uspořádat
171
+ remove_image: Odebrat obrázek
172
+ upload: Nahrát obrázky
173
+ upload_image: Nahrát obrázek
174
+ languages:
175
+ bg: Bulharština
176
+ de: Německo
177
+ en: Angličtina
178
+ es: Španělština
179
+ fr: Francouzština
180
+ id: Indonéština
181
+ it: Italština
182
+ nl: Holandština
183
+ pl: Polština
184
+ pt-BR: Portugalština (Brazílie)
185
+ ro: Rumunština
186
+ ru: Rusština
187
+ sv: Švédština
188
+ th: Thajština
189
+ tr: Turečtina
190
+ zh-CN: Čínština (zjednodušená)
191
+ cs: Čeština
192
+ layout:
193
+ couldnt_be_saved: Layout se nepodařilo uložit
194
+ layout: Layout
195
+ no_layout_parts: Žádné layoutové části nejsou k dispozici
196
+ save: Uložit layout
197
+ saved: Layout uložen
198
+ login: Přihlásit se
199
+ logout: Odhlásit se
200
+ main_menu: Hlavní menu
201
+ media_library:
202
+ add_folder: Přidat složku
203
+ add_image: Přidat obrázek
204
+ attachments: Dokumenty
205
+ back_to_all: Zpět na vše
206
+ filename: Název souboru
207
+ images: Obrázky
208
+ images_count:
209
+ one: 1 obrázek
210
+ other: "%{count} obrázků"
211
+ insert: Vložit obrázek
212
+ media_folder_delete_confirmation_html: Jste si jistý? Obrázky nebudou <strong>smazány</strong>.
213
+ no_folder: Žádná složka
214
+ photos: Obrázky
215
+ rename_folder: Přejmenovat složku
216
+ save_media_folder: Uložit mediální složku
217
+ upload_from_device: Nahrát ze zařízení
218
+ uploading: Nahrávám...
219
+ modal:
220
+ agree: Ano, jsem si jistý
221
+ cancel: Ne, zrušit
222
+ navigations:
223
+ add_menu_item: Přidat položku menu
224
+ add_sub_item: Přidat pod-položku
225
+ choose_page: Vybrat stránku
226
+ delete_item: Smazat položku
227
+ delete_item_confirmation_html: Jste si jistý, že chcete <span class='font-semibold'>smazat</span> tuto položku menu?
228
+ description: Přidejte a seřaďte položky podle libosti. Můžete přidat vnořené položky menu, ale nemusíte.
229
+ edit_item: "Upravit položku"
230
+ navigations: Navigace
231
+ no_navigations: Tato webová stránka nemá zatím žádné navigace. Můžete si ji nastavit v nastavení motivu.
232
+ sorting_saved: Seřazení uloženo
233
+ url_placeholder: "https://"
234
+ url_title_placeholder: "Popisek"
235
+ navigation_items:
236
+ page: Stránka
237
+ url: URL
238
+ notifications:
239
+ alert: Chybka! Něco se pokazilo
240
+ information: Informace
241
+ login: Musíte se nejprve přihlásit
242
+ wrong_username_or_password: Špatná e-mailová adresa nebo heslo
243
+ options:
244
+ choose_option: Vybrat možnost
245
+ pages:
246
+ add_page_to: 'Přidat stránku k:'
247
+ add_translation: Přidat %{language} překlad
248
+ advanced: Pokročilé
249
+ cannot_be_deleted: Stránku nelze smazat
250
+ change_order: Změnit pořadí
251
+ change_view_template: Změnit šablonu zobrazení
252
+ change_view_template_confirmation: Jste si jistý, že chcete změnit šablonu zobrazení stránky? Obsah stránky, který nepatří do nové šablony, bude ztracen.
253
+ concept: koncept
254
+ create: Vytvořit stránku
255
+ create_page: nový %{template}
256
+ delete: Smazat stránku
257
+ delete_confirmation: Jste si jistý, že chcete smazat stránku <strong>%{subject}</strong>?
258
+ deleted: Stránka smazána
259
+ done_changing_order: Dokončeno řazení
260
+ edit_translation: Upravit %{language} překlad
261
+ invisible_to_search_engines: Váš web je pro vyhledávače neviditelný
262
+ invisible_to_search_engines_description: Přejděte do svých preferencí a aktivujte vyhledávače.
263
+ main_collection: Hlavní kolekce
264
+ materialize_path_confirmation: Jste si jistý, že chcete znovu vytvořit cestu pro tuto stránku?
265
+ missing_translations: Chybějící překlady
266
+ move_page: Přesunout stránku
267
+ moved: Stránka přemístěna
268
+ new: Nová stránka
269
+ no_pages_yet: Zatím žádné stránky
270
+ no_parent_page: Bez nadřazené stránky
271
+ page_content: Obsah stránky
272
+ page_part: Sekce stránky
273
+ page_seo: Vyhledávací nástroje
274
+ path: 'Cesta:'
275
+ photo_picker: Vybrat obrázek
276
+ photos_picker: Vybrat obrázky
277
+ preview: Náhled
278
+ publish: Publikovat
279
+ published: Stránka publikována
280
+ rebuild_materialized_path: Obnovit zmaterializovaný odkaz
281
+ recommended: Doporučeno
282
+ save: Uložit stránku
283
+ save_changes: Uložit změny
284
+ save_draft: Uložit koncept
285
+ saved: Stránka uložena
286
+ saving: Ukládám...
287
+ select_page: Vybrat stránku
288
+ couldnt_be_saved: Stránka se nepodařilo uložit
289
+ search_engines: Vyhledávací nástroje
290
+ show_in_menu: Neviditelná
291
+ skip_to_first_child: Přejít na první podřízenou stránku
292
+ sorting_saved: Seřazení uloženo
293
+ page_translations:
294
+ delete: Smazat překlad (%{translation})
295
+ delete_confirmation: Jste si jistý, že chcete smazat tento překlad <strong>(%{subject})</strong>?
296
+ deleted: Překlad smazán
297
+ permanently_delete: Trvale smazat
298
+ photos:
299
+ cannot_be_created: 'Obrázek nelze zpracovat:'
300
+ choose_images: Vybrat obrázky
301
+ delete: Smazat
302
+ delete_confirmation: Jste si jistý, že chcete smazat tento <strong>obrázek</strong>?
303
+ delete_folder: Smazat složku
304
+ done_organizing: Dokončeno organizování
305
+ insert_photo: Vložit obrázek
306
+ insert_photos: Vybrat obrázky
307
+ link: 'URL vašeho obrázku:'
308
+ new_folder: Nová složka
309
+ organize: Uspořádat obrázky
310
+ rename_folder: Přejmenovat složku
311
+ select_images: Vybrat obrázky
312
+ upload_image: Nahrát obrázek
313
+ preferences:
314
+ Analytics: Analytika
315
+ account: Obecné
316
+ account_description: Osobní preference
317
+ account_save: Uložit preference
318
+ analytics: Analytika a vyhledávání
319
+ analytics_description: Připojte svůj účet pro reálnou dobu analýzy
320
+ analytics_save: Uložit preference
321
+ domain_name_settings: Nastavení domény
322
+ domain_name_settings_description: Nastavte si vlastní doménu
323
+ social_media: Sociální média
324
+ social_media_description: Facebook a Twitter účty
325
+ social_media_save: Uložit sociální média
326
+ style: Stylování
327
+ style_description: Vyberte si motiv, který se hodí k vaší značce
328
+ style_save: Uložit stylování
329
+ title: Preferencie
330
+ users: Uživatelé
331
+ users_description: Spravujte uživatele a administrátory
332
+ preview_website: Náhled webu
333
+ resources:
334
+ edit: Upravit zdroj
335
+ label_description: Popis pro uživatele této kolekce stránek.
336
+ manual_sorting: Ruční řazení
337
+ no_default_template: Žádný výchozí šablona
338
+ saved: Kolekce stránek uložena
339
+ settings: "%{label} nastavení"
340
+ settings_description: Všechny stránky uvnitř této kolekce budou mít předponu tímto slugem.
341
+ save: Uložit
342
+ search: Hledat...
343
+ settings:
344
+ general: Obecné
345
+ save: Uložit Nastavení
346
+ title: Nastavení
347
+ users: Uživatelé
348
+ theme:
349
+ save: Uložit téma
350
+ saved: Téma uloženo
351
+ theme: Téma
352
+ theme_description: Nastavte si svůj motiv
353
+ ui:
354
+ cancel: Zrušit
355
+ delete: Smazat
356
+ delete_item: "Smazat %{item}"
357
+ load_more: Načíst více
358
+ move_to: Přesunout do
359
+ new_entry: Nový záznam
360
+ optional: Volitelné
361
+ or: nebo
362
+ rename: Přejmenovat
363
+ replace: Nahradit
364
+ save_changes: Uložit změny
365
+ saving: Ukládám...
366
+ user_mailer:
367
+ forgot_password:
368
+ button: Obnovit heslo
369
+ introduction: Nedávno jste požádali o obnovení hesla pro váš účet Spina CMS. Tento odkaz na obnovení hesla je platný pouze po dobu 2 hodin. Zkopírujte a vložte následující URL do svého webového prohlížeče.
370
+ introduction_html: "Nedávno jste požádali o obnovení hesla pro váš účet Spina CMS. Použijte tlačítko níže k jeho obnovení. <strong>Tento odkaz na obnovení hesla je platný pouze po dobu 2 hodin.</strong>"
371
+ preheader: Použijte tento odkaz k obnovení hesla. Platný je 2 hodiny.
372
+ request_origin: Pro účely zabezpečení byla tato žádost přijata ze zařízení %{platform} pomocí %{browser}. Pokud jste nepožádali o obnovení hesla, tuto e-mailovou zprávu ignorujte.
373
+ salutation: Ahoj, %{name}
374
+ subject: Obnovit heslo
375
+ trouble: Pokud máte problémy s tlačítkem níže, zkopírujte a vložte následující URL do svého webového prohlížeče.
376
+ users:
377
+ authorization: Autorizace
378
+ authorization_description: Administrátoři mohou spravovat uživatele. Běžní uživatelé nemohou.
379
+ cannot_be_created: Uživatel nemůže být uložen
380
+ delete: Smazat uživatele
381
+ delete_confirmation_html: Jste si jistý, že chcete smazat uživatele <strong>%{user}</strong>?
382
+ deleted: Uživatel smazán
383
+ last_login: 'Poslední přihlášení:'
384
+ never_logged_in: Nikdy se nepřihlásil
385
+ new: Nový uživatel
386
+ profile: Profil
387
+ profile_description: Tato informace bude použita k identifikaci různých uživatelů. Uživatelé se budou přihlašovat pomocí své e-mailové adresy.
388
+ save: Uložit uživatele
389
+ saved: Uživatel uložen
390
+ visit_page: Navštívit stránku
391
+ website:
392
+ all_pages: Všechny stránky
393
+ content: Obsah
394
+ documents: Dokumenty
395
+ images: Obrázky
396
+ main: Hlavní
397
+ media_library: Mediální knihovna
398
+ media_library_description: Tady najdete všechny své obrázky a dokumenty.
399
+ pages: Stránky
400
+ pages_description: Všechny stránky na vašem webu
401
+ photos: Obrázky
402
+ settings: Nastavení
403
+ theme: Motiv
404
+ title: Váš web
405
+ wysiwyg:
406
+ heading_1: Nadpis 1
407
+ heading_2: Nadpis 2
408
+ heading_3: Nadpis 3
409
+ insert_link: Vložit odkaz
410
+ link: Odkaz
411
+ paragraph: Odstavec
412
+ quote: Citát
413
+ unlink: Odebrat odkaz
414
+ url: URL
415
+ url_placeholder: Zadejte URL
@@ -281,7 +281,7 @@ nl:
281
281
  select_page: Kies pagina
282
282
  search_engines: Zoekmachines
283
283
  show_in_menu: onzichtbaar
284
- skip_to_first_child: doorsturen naar 1<sup>e</sup> subpagina
284
+ skip_to_first_child: doorsturen naar eerste subpagina
285
285
  sorting_saved: Volgorde opgeslagen
286
286
  page_translations:
287
287
  delete: Verwijder vertaling (%{translation})
@@ -4,6 +4,11 @@ Spina.configure do |config|
4
4
  # All locales your content should be available in.
5
5
  # Defaults to I18n.default_locale
6
6
  # config.locales = [:en, :nl]
7
+
8
+ # Backend title
9
+ # ===============
10
+ # Set <title> for the admin panel. Defaults to "Spina CMS"
11
+ # config.backend_title = "Spina CMS"
7
12
 
8
13
  # Backend path
9
14
  # ===============
data/lib/spina/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Spina
2
- VERSION = "2.16.0"
2
+ VERSION = "2.18.0"
3
3
  end
data/lib/spina.rb CHANGED
@@ -23,6 +23,7 @@ module Spina
23
23
  config_accessor :api_key,
24
24
  :api_path,
25
25
  :authentication,
26
+ :backend_title,
26
27
  :backend_path,
27
28
  :importmap,
28
29
  :frontend_parent_controller,
@@ -44,6 +45,7 @@ module Spina
44
45
  self.api_key = nil
45
46
  self.api_path = "api"
46
47
  self.authentication = "Spina::Authentication::Sessions"
48
+ self.backend_title = "Spina CMS"
47
49
  self.backend_path = "admin"
48
50
  self.disable_frontend_routes = false
49
51
  self.disable_decorator_load = false
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spina
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.16.0
4
+ version: 2.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bram Jetten
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-23 00:00:00.000000000 Z
11
+ date: 2024-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -1480,6 +1480,7 @@ files:
1480
1480
  - config/initializers/yaml_column_permitted_classes.rb
1481
1481
  - config/locales/TH.yml
1482
1482
  - config/locales/bg.yml
1483
+ - config/locales/cs.yml
1483
1484
  - config/locales/de.yml
1484
1485
  - config/locales/en.yml
1485
1486
  - config/locales/es.yml
@@ -1561,9 +1562,10 @@ metadata:
1561
1562
  documentation_uri: https://www.spinacms.com/docs
1562
1563
  changelog_uri: https://github.com/SpinaCMS/Spina/blob/main/CHANGELOG.md
1563
1564
  source_code_uri: https://github.com/SpinaCMS/Spina
1564
- post_install_message: "\n Spina v2.14 includes a new migration, don't forget to
1565
+ post_install_message: "\n Spina v2.16 includes a new migration, don't forget to
1565
1566
  run spina:install:migrations.\n \n For details on this specific release, refer
1566
- to the CHANGELOG file.\n "
1567
+ to the CHANGELOG file.\n https://github.com/SpinaCMS/Spina/blob/main/CHANGELOG.md#2160-august-23rd-2022\n
1568
+ \ "
1567
1569
  rdoc_options: []
1568
1570
  require_paths:
1569
1571
  - lib