spina 2.1.0 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of spina might be problematic. Click here for more details.

Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/app/assets/config/spina/manifest.js +1 -0
  4. data/app/assets/javascripts/spina/application.js +2 -0
  5. data/app/assets/javascripts/spina/controllers/attachment_picker_controller.js +15 -0
  6. data/app/assets/javascripts/spina/controllers/autofocus_controller.js +1 -1
  7. data/app/assets/javascripts/spina/controllers/button_controller.js +1 -1
  8. data/app/assets/javascripts/spina/controllers/confetti_controller.js +2 -2
  9. data/app/assets/javascripts/spina/controllers/confirm_controller.js +1 -1
  10. data/app/assets/javascripts/spina/controllers/delegate_click_controller.js +1 -1
  11. data/app/assets/javascripts/spina/controllers/exists_controller.js +1 -1
  12. data/app/assets/javascripts/spina/controllers/form_controller.js +2 -2
  13. data/app/assets/javascripts/spina/controllers/hotkeys_controller.js +2 -2
  14. data/app/assets/javascripts/spina/controllers/image_collection_controller.js +2 -2
  15. data/app/assets/javascripts/spina/controllers/image_fade_in_controller.js +1 -1
  16. data/app/assets/javascripts/spina/controllers/infinite_scroll_controller.js +1 -1
  17. data/app/assets/javascripts/spina/controllers/loading_button_controller.js +1 -1
  18. data/app/assets/javascripts/spina/controllers/media_picker_controller.js +1 -1
  19. data/app/assets/javascripts/spina/controllers/media_picker_modal_controller.js +1 -1
  20. data/app/assets/javascripts/spina/controllers/modal_controller.js +1 -1
  21. data/app/assets/javascripts/spina/controllers/navigation_controller.js +1 -1
  22. data/app/assets/javascripts/spina/controllers/parent_pages_controller.js +1 -1
  23. data/app/assets/javascripts/spina/controllers/repeater_controller.js +2 -2
  24. data/app/assets/javascripts/spina/controllers/select_placeholder_controller.js +1 -1
  25. data/app/assets/javascripts/spina/controllers/selectable_controller.js +1 -1
  26. data/app/assets/javascripts/spina/controllers/shortcuts_controller.js +1 -1
  27. data/app/assets/javascripts/spina/controllers/sortable_controller.js +3 -3
  28. data/app/assets/javascripts/spina/controllers/switch_controller.js +1 -1
  29. data/app/assets/javascripts/spina/controllers/tabs_controller.js +1 -1
  30. data/app/assets/javascripts/spina/controllers/toggle_controller.js +1 -1
  31. data/app/assets/javascripts/spina/controllers/trix_controller.js +1 -1
  32. data/app/assets/javascripts/spina/controllers/unique_id_controller.js +1 -1
  33. data/app/assets/javascripts/spina/libraries/stimulus-reveal@1.2.4.js +1 -1
  34. data/app/assets/stylesheets/spina/_tailwind.css +110078 -105581
  35. data/app/components/spina/media_picker/modal_component.html.erb +2 -2
  36. data/app/controllers/concerns/spina/api/paginable.rb +44 -0
  37. data/app/controllers/concerns/spina/current_account.rb +17 -0
  38. data/app/controllers/concerns/spina/current_theme.rb +17 -0
  39. data/app/controllers/spina/admin/admin_controller.rb +3 -10
  40. data/app/controllers/spina/admin/pages_controller.rb +2 -2
  41. data/app/controllers/spina/admin/password_resets_controller.rb +1 -1
  42. data/app/controllers/spina/admin/sessions_controller.rb +1 -1
  43. data/app/controllers/spina/admin/users_controller.rb +11 -1
  44. data/app/controllers/spina/api/api_controller.rb +29 -0
  45. data/app/controllers/spina/api/images_controller.rb +12 -0
  46. data/app/controllers/spina/api/navigations_controller.rb +20 -0
  47. data/app/controllers/spina/api/pages_controller.rb +26 -0
  48. data/app/controllers/spina/api/resources_controller.rb +19 -0
  49. data/app/controllers/spina/application_controller.rb +2 -1
  50. data/app/controllers/spina/pages_controller.rb +5 -5
  51. data/app/helpers/spina/attachments_helper.rb +1 -1
  52. data/app/helpers/spina/images_helper.rb +1 -5
  53. data/app/helpers/spina/spina_helper.rb +5 -8
  54. data/app/models/spina/attachment.rb +4 -0
  55. data/app/models/spina/page.rb +1 -1
  56. data/app/serializers/spina/api/base_serializer.rb +6 -0
  57. data/app/serializers/spina/api/image_serializer.rb +20 -0
  58. data/app/serializers/spina/api/navigation_serializer.rb +30 -0
  59. data/app/serializers/spina/api/page_serializer.rb +28 -0
  60. data/app/serializers/spina/api/resource_serializer.rb +12 -0
  61. data/app/views/layouts/spina/admin/application.html.erb +3 -7
  62. data/app/views/spina/admin/attachments/_attachment.html.erb +5 -0
  63. data/app/views/spina/admin/attachments/index.html.erb +1 -1
  64. data/app/views/spina/admin/parts/attachments/_form.html.erb +2 -2
  65. data/app/views/spina/admin/shared/_navigation.html.erb +18 -13
  66. data/config/locales/TH.yml +1 -0
  67. data/config/locales/bg.yml +1 -0
  68. data/config/locales/de.yml +177 -166
  69. data/config/locales/en.yml +7 -0
  70. data/config/locales/es.yml +133 -130
  71. data/config/locales/fr.yml +1 -0
  72. data/config/locales/id.yml +1 -0
  73. data/config/locales/it.yml +1 -0
  74. data/config/locales/nl.yml +1 -0
  75. data/config/locales/pl.yml +1 -0
  76. data/config/locales/pt-BR.yml +1 -0
  77. data/config/locales/ro.yml +1 -0
  78. data/config/locales/ru.yml +199 -176
  79. data/config/locales/sv.yml +1 -0
  80. data/config/locales/tr.yml +1 -0
  81. data/config/locales/zh-CN.yml +1 -0
  82. data/config/routes.rb +10 -0
  83. data/lib/generators/spina/templates/config/initializers/spina.rb +48 -13
  84. data/lib/generators/spina/templates/config/initializers/themes/demo.rb +1 -1
  85. data/lib/spina.rb +36 -30
  86. data/lib/spina/authentication/basic.rb +24 -0
  87. data/lib/spina/authentication/sessions.rb +32 -0
  88. data/lib/spina/engine.rb +18 -7
  89. data/lib/spina/railtie.rb +1 -1
  90. data/lib/spina/version.rb +1 -1
  91. data/lib/tasks/spina_tasks.rake +1 -1
  92. metadata +66 -10
  93. data/app/assets/javascripts/spina/importmap.json.erb +0 -5
  94. data/app/controllers/concerns/spina/current_methods.rb +0 -34
  95. data/lib/spina/importmap_helper.rb +0 -37
@@ -0,0 +1,30 @@
1
+ module Spina::Api
2
+ class NavigationSerializer < BaseSerializer
3
+ set_type :navigation
4
+
5
+ attributes :name, :label
6
+
7
+ attribute :tree do |navigation|
8
+ items_to_tree(navigation.navigation_items.sorted.roots.in_menu.live.joins(:page))
9
+ end
10
+
11
+ class << self
12
+
13
+ def items_to_tree(collection)
14
+ collection.map do |item|
15
+ {
16
+ depth: item.depth,
17
+ page: {
18
+ id: item.page_id,
19
+ menu_title: item.menu_title,
20
+ materialized_path: item.materialized_path
21
+ },
22
+ children: items_to_tree(item.children.sorted.in_menu.live.joins(:page))
23
+ }
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,28 @@
1
+ module Spina::Api
2
+ class PageSerializer < BaseSerializer
3
+ set_type :page
4
+
5
+ attributes :title, :seo_title, :menu_title, :materialized_path, :name, :description, :view_template
6
+
7
+ attribute(:content) { |page| page_content(page) }
8
+
9
+ belongs_to :resource
10
+
11
+ class << self
12
+
13
+ def page_content(page)
14
+ return [] unless view_template(page)
15
+
16
+ view_template(page)[:parts].map do |part|
17
+ { part => page.content(part) }
18
+ end
19
+ end
20
+
21
+ def view_template(page)
22
+ Spina::Current.theme.view_templates.find{|view_template| view_template[:name] == page.view_template}
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,12 @@
1
+ module Spina::Api
2
+ class ResourceSerializer < BaseSerializer
3
+ set_type :resource
4
+
5
+ attributes :name, :label, :view_template, :order_by, :slug
6
+
7
+ has_many :pages, lazy_load_data: true, links: {
8
+ self: -> (object) { api_resource_path(object.id) },
9
+ related: -> (object) { api_resource_pages_path(object.id) }
10
+ }, meta: -> (resource) { {count: resource.pages.live.length} }
11
+ end
12
+ end
@@ -10,19 +10,15 @@
10
10
 
11
11
  <title>Spina CMS</title>
12
12
 
13
- <!-- Tailwind -->
13
+ <!-- Tailwind -->
14
14
  <%= stylesheet_link_tag 'spina/application', data: {turbolinks_track: true} %>
15
15
 
16
- <!-- Turbo and Stimulus -->
17
- <%= turbo_include_tags %>
18
- <%= spina_include_tags %>
16
+ <!-- Spina's importmap -->
17
+ <%= spina_importmap_tags %>
19
18
 
20
19
  <!-- Plugins & Hooks -->
21
20
  <%= yield(:head) %>
22
21
  <%= render Spina::Hooks::HookComponent.new(partial: "head") %>
23
-
24
- <!-- Stimulus Autoloader -->
25
- <%= autoloader_include_tag %>
26
22
  </head>
27
23
 
28
24
  <body>
@@ -9,6 +9,11 @@
9
9
  <%= heroicon('pencil', style: :solid, class: 'w-4 h-4 mr-1 text-gray-600') %>
10
10
  <%=t 'spina.ui.rename' %>
11
11
  <% end %>
12
+
13
+ <%= link_to file_url(attachment.file), class: "btn btn-default h-7 px-2 mr-2 text-xs" do %>
14
+ <%= heroicon('download', style: :solid, class: 'w-4 h-4 mr-1 text-gray-600') %>
15
+ <%=t 'spina.attachments.download' %>
16
+ <% end %>
12
17
  </div>
13
18
  </turbo-frame>
14
19
 
@@ -1,6 +1,6 @@
1
1
  <%= render Spina::UserInterface::HeaderComponent.new do |header| %>
2
2
  <% header.actions do %>
3
- <%= form_with model: [:admin, Spina::Attachment.new], url: spina.admin_attachments_path, data: {controller: "form loading-button", loading_message: t('spina.media_library.uploading'), action: "turbo-submit-end->loading-button#doneLoading"} do |f| %>
3
+ <%= form_with model: [:admin, Spina::Attachment.new], url: spina.admin_attachments_path, data: {controller: "form loading-button", loading_message: t('spina.media_library.uploading'), action: "turbo:submit-end->loading-button#doneLoading"} do |f| %>
4
4
 
5
5
  <%= f.file_field :files, multiple: true, id: "new_attachment_file_field", class: 'hidden', data: {action: "loading-button#loading form#requestSubmit"} %>
6
6
 
@@ -1,8 +1,8 @@
1
- <div class="mt-6">
1
+ <div class="mt-6" data-controller="attachment-picker">
2
2
  <label for="price" class="block text-sm leading-5 font-medium text-gray-700"><%= f.object.title %></label>
3
3
 
4
4
  <%= f.hidden_field :signed_blob_id, data: {attachment_picker_target: 'signedBlobId'} %>
5
5
  <%= f.hidden_field :filename, data: {attachment_picker_target: 'filename'} %>
6
6
 
7
- <%= f.select :attachment_id, Spina::Attachment.sorted.map{|attachment| [attachment.file&.filename, attachment.id, data: {signed_blob_id: attachment.file&.blob&.signed_id, filename: attachment.file&.filename}]}, {include_blank: t("spina.attachments.choose_attachment")}, {class: "form-select"} %>
7
+ <%= f.select :attachment_id, Spina::Attachment.sorted.map{|attachment| [attachment.file&.filename, attachment.id, data: {signed_blob_id: attachment.file&.blob&.signed_id, filename: attachment.file&.filename}]}, {include_blank: t("spina.attachments.choose_attachment")}, {class: "form-select", data: {action: "attachment-picker#pick"}} %>
8
8
  </div>
@@ -8,7 +8,7 @@
8
8
  <%= heroicon('menu', style: :solid, class: 'md:hidden w-8 h-8 text-white md:mr-3') %>
9
9
 
10
10
  <div class="text-white font-semibold hidden md:block transform -translate-x-2 ease-in-out duration-300 absolute md:relative opacity-0 transition-all" data-navigation-target="label">
11
- Content
11
+ <%= t('spina.website.content') %>
12
12
  </div>
13
13
  <% end %>
14
14
 
@@ -17,8 +17,8 @@
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
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 "Layout", spina.edit_admin_layout_path, active: controller_name == "layout" %>
20
+
21
+ <%= render Spina::MainNavigation::LinkComponent.new t('spina.layout.layout'), spina.edit_admin_layout_path, active: controller_name == "layout" %>
22
22
 
23
23
  <%= render Spina::MainNavigation::LinkComponent.new t('spina.website.media_library'), spina.admin_images_path, active: controller_name.in?(%w(images media_folders attachments)) %>
24
24
 
@@ -33,14 +33,17 @@
33
33
  <%= heroicon('cog', style: :solid, class: 'w-8 h-8 text-white md:mr-3') %>
34
34
 
35
35
  <div class="text-white font-semibold hidden md:block transform -translate-x-2 ease-in-out duration-300 absolute md:relative opacity-0 transition-all" data-navigation-target="label">
36
- Settings
36
+ <%= t('spina.website.settings') %>
37
37
  </div>
38
38
  <% end %>
39
39
 
40
40
  <% nav.links do %>
41
- <%= render Spina::MainNavigation::LinkComponent.new("General", spina.edit_admin_account_path, active: controller_name == "accounts") %>
41
+ <%= render Spina::MainNavigation::LinkComponent.new(t('spina.settings.general'), spina.edit_admin_account_path, active: controller_name == "accounts") %>
42
42
  <%= render Spina::MainNavigation::LinkComponent.new(t('spina.website.theme'), spina.edit_admin_theme_path, active: controller_name == "theme") %>
43
- <%= render Spina::MainNavigation::LinkComponent.new("Users", spina.admin_users_path, active: controller_name == "users") %>
43
+
44
+ <% if Spina.config.authentication == "Spina::Authentication::Sessions" %>
45
+ <%= render Spina::MainNavigation::LinkComponent.new(t('spina.settings.users'), spina.admin_users_path, active: controller_name == "users") %>
46
+ <% end %>
44
47
 
45
48
  <%= render Spina::Hooks::HookComponent.new(partial: "settings_secondary_navigation") %>
46
49
 
@@ -54,13 +57,15 @@
54
57
  <% end %>
55
58
  </ul>
56
59
 
57
- <ul class="md:block">
58
- <li>
59
- <%= link_to spina.admin_logout_path, class: 'p-3 w-14 block flex justify-center opacity-50 hover:opacity-100 transition duration-200 ease', data: {turbo: false} do %>
60
- <%= heroicon('logout', style: :solid, class: 'h-8 w-8 text-white') %>
61
- <% end %>
62
- </li>
63
- </ul>
60
+ <% if defined?(logout_path) %>
61
+ <ul class="md:block">
62
+ <li>
63
+ <%= link_to logout_path, class: 'p-3 w-14 block flex justify-center opacity-50 hover:opacity-100 transition duration-200 ease', data: {turbo: false} do %>
64
+ <%= heroicon('logout', style: :solid, class: 'h-8 w-8 text-white') %>
65
+ <% end %>
66
+ </li>
67
+ </ul>
68
+ <% end %>
64
69
 
65
70
  </div>
66
71
  </nav>
@@ -108,6 +108,7 @@ th:
108
108
  delete_confirmation_html:
109
109
  insert: แทรกเอกสาร
110
110
  insert_multiple: แทรกเอกสาร
111
+ upload:
111
112
  cancel: ยกเลิก
112
113
  choose_from_library: เลือกจากไลบารี
113
114
  close: ปิด
@@ -108,6 +108,7 @@ bg:
108
108
  delete_confirmation_html:
109
109
  insert: Добавете документ
110
110
  insert_multiple: Добавете документи
111
+ upload:
111
112
  cancel: Спри
112
113
  choose_from_library: Избери от библиотеката
113
114
  close: Затвори
@@ -1,4 +1,7 @@
1
1
  de:
2
+ time:
3
+ formats:
4
+ long: "%Y-%m-%d %H:%M:%S"
2
5
  activerecord:
3
6
  attributes:
4
7
  spina/account:
@@ -18,7 +21,7 @@ de:
18
21
  phone: Telefon
19
22
  postal_code: PLZ
20
23
  robots_allowed: Sichtbar für Suchmaschinen
21
- theme: Webseite Theme
24
+ theme: Webseiten Theme
22
25
  twitter: Twitter
23
26
  vat_identifier: USt-IdNr
24
27
  vat_identifier_description: USt-IdNr
@@ -36,43 +39,43 @@ de:
36
39
  pages: Seiten
37
40
  pages_description: Wähle die Seiten aus, die du in diesem Menü verwenden willst
38
41
  spina/page:
39
- ancestry: Elternseite
40
- created_at:
42
+ ancestry: Oberseite
43
+ created_at: Erstellt am
41
44
  description: Meta Beschreibung
42
45
  description_description: Diese Beschreibung wird in den Suchergebnissen angezeigt
43
46
  description_placeholder: Kurze Beschreibung deiner Seite
44
47
  draft: Entwurf
45
- draft_description: Great for when your page is not quite finished
48
+ draft_description: Praktisch wenn deine Seite noch nicht ganz fertig ist
46
49
  link_url: Seitenumleitung
47
50
  link_url_description: Weiterleiten an URL
48
51
  link_url_placeholder: z.B. http://www.example.com/
49
52
  menu_title: Menü-Titel
50
53
  menu_title_placeholder: Leer lassen um den Seiten-Titel zu verwenden
51
- no_parent: Kein Eltern Element
52
- resource:
54
+ no_parent: Kein Oberelement
55
+ resource: Kollektion
53
56
  seo_title: SEO <title>
54
- seo_title_description:
57
+ seo_title_description: Stelle sicher dass deine Suchresultate gut aussehen
55
58
  seo_title_placeholder: Dieser Titel wird im <title>-tag verwendet
56
59
  show_in_menu: In der Navigation anzeigen
57
60
  show_in_menu_description: Wenn diese Option ausgeschaltet ist, wird deine Seite nicht in der Navigation angezeigt
58
- skip_to_first_child: Vorwärts
59
- skip_to_first_child_description: Zur ersten Seite
61
+ skip_to_first_child: Weiterleiten
62
+ skip_to_first_child_description: Zur ersten Unterseite
60
63
  title: Titel
61
64
  title_placeholder: Seiten-Titel
62
- url_title:
63
- url_title_description:
64
- url_title_placeholder:
65
+ url_title: Prefix überschreiben
66
+ url_title_description: Optional
67
+ url_title_placeholder: Prefix
65
68
  view_template: Seiten-Template
66
69
  spina/resource:
67
- label:
68
- order_by:
69
- parent_page:
70
- view_template:
70
+ label: Label
71
+ order_by: Ordnen nach
72
+ parent_page: Oberseite
73
+ view_template: Standard View Template
71
74
  spina/user:
72
75
  admin: Administrator
73
76
  admin_description: Administratoren können Benutzer anlegen
74
77
  email: E-Mail
75
- email_description: Deine E-Mail muss eindeutig sein
78
+ email_description: Deine E-Mail Adresse muss eindeutig sein
76
79
  last_logged_in: Zuletzt eingeloggt
77
80
  name: Name
78
81
  name_placeholder: Name
@@ -96,20 +99,21 @@ de:
96
99
  other: Benutzer
97
100
  spina:
98
101
  accounts:
99
- contact_details:
100
- contact_details_description:
101
- couldnt_be_saved:
102
- name_description:
103
- save:
104
- saved:
102
+ contact_details: Kontaktangaben
103
+ contact_details_description: Email und Telefon
104
+ couldnt_be_saved: Konto konnte nicht gespeichert werden
105
+ name_description: Name deiner Webseite
106
+ save: Konto speichern
107
+ saved: Konto wurde gespeichert
105
108
  ago: vor
106
109
  attachments:
107
- choose_attachment:
108
- delete_confirmation_html:
110
+ choose_attachment: Dokument auswählen
111
+ delete_confirmation_html: Bist du sicher? Dieses Dokument <span class='font-semibold'>könnte</span> von einer Seite genutzt werden.
109
112
  insert: Dokument einfügen
110
113
  insert_multiple: Dokumente einfügen
114
+ upload: Dokumente Hochladen
111
115
  cancel: Abbrechen
112
- choose_from_library: Wähle aus Bibliothek
116
+ choose_from_library: In Bibliothek auswählen
113
117
  close: Schließen
114
118
  delete: Löschen
115
119
  delete_confirmation: Bist du sicher, dass du <strong>%{subject}</strong> löschen möchtest?
@@ -124,230 +128,237 @@ de:
124
128
  success: Du kannst dein neues Passwort verwenden
125
129
  unknown_user: Dieser Nutzer existiert nicht
126
130
  images:
127
- all_images:
128
- back:
129
- cannot_be_created:
130
- choose_image:
131
- choose_images:
132
- confirm_selection:
133
- delete:
134
- delete_confirmation_html:
135
- delete_folder:
136
- done_organizing:
137
- insert_image:
138
- insert_photo:
139
- insert_photos:
140
- link:
141
- new_folder:
142
- organize:
143
- remove_image:
144
- upload:
145
- upload_image:
131
+ all_images: Alle Bilder
132
+ back: Zurück
133
+ cannot_be_created: Konnte nicht erstellt werden
134
+ choose_image: Bild auswählen
135
+ choose_images: Bilder auswählen
136
+ confirm_selection: Auswahl bestätigen
137
+ delete: Löschen
138
+ delete_confirmation_html: Bist du sicher, dass du dieses <strong>Bild</strong> löschen möchtest?
139
+ delete_folder: Ordner löschen
140
+ done_organizing: Speichern
141
+ insert_image: Bild einfügen
142
+ insert_photo: Foto einfügen
143
+ insert_photos: Fotos einfügen
144
+ link: Link
145
+ new_folder: Neuer Ordner
146
+ organize: Ordnen
147
+ remove_image: Bild löschen
148
+ upload: Bilder hochladen
149
+ upload_image: Bild hochladen
146
150
  languages:
147
- bg:
148
- de:
151
+ bg: Bulgarisch
152
+ de: Deutsch
149
153
  en: Englisch
150
- es:
151
- fr:
152
- id:
153
- it:
154
+ es: Spanisch
155
+ fr: Französisch
156
+ id: Indonesisch
157
+ it: Italiensich
154
158
  nl: Holländisch
155
- pl:
156
- pt-BR:
157
- ro:
158
- ru:
159
- sv:
160
- th:
161
- tr:
162
- zh-CN:
159
+ pl: Polnisch
160
+ pt-BR: Brasilianisches Portugiesisch
161
+ ro: Rumänisch
162
+ ru: Russisch
163
+ sv: Schwedisch
164
+ th: Thai
165
+ tr: Türkisch
166
+ zh-CN: Vereinfachtes Chinesisch
163
167
  layout:
164
- couldnt_be_saved:
165
- layout:
166
- no_layout_parts:
167
- save:
168
- saved:
168
+ couldnt_be_saved: Layout konnte nicht gespeichert werden
169
+ layout: Layout
170
+ no_layout_parts: Keine Layout Elemente verfügbar
171
+ save: Layout speichern
172
+ saved: Layout gespeichert
169
173
  login: Login
170
174
  logout: Logout
171
175
  main_menu: Hauptmenü
172
176
  media_library:
173
- add_folder:
174
- add_image:
177
+ add_folder: Ordner hinzufügen
178
+ add_image: Bild hinzufügen
175
179
  attachments: Dokumente
176
- back_to_all:
177
- filename:
178
- images:
180
+ back_to_all: Zurück
181
+ filename: Dateiname
182
+ images: Bilder
179
183
  images_count:
180
- insert:
181
- media_folder_delete_confirmation_html:
182
- no_folder:
184
+ one: 1 Bild
185
+ other: "%{count} Bilder"
186
+ insert: Bild einfügen
187
+ media_folder_delete_confirmation_html: Bist du sicher? Die Bilder werden <strong>nicht</strong> gelöscht.
188
+ no_folder: Kein Ordner
183
189
  photos: Bilder
184
- rename_folder:
185
- save_media_folder:
186
- upload_from_device:
187
- uploading:
190
+ rename_folder: Ordner umbenennen
191
+ save_media_folder: Medien-Ordner speichern
192
+ upload_from_device: Von Gerät hochladen
193
+ uploading: Wird hochgeladen...
188
194
  modal:
189
195
  agree: Ja, ich bin sicher
190
196
  cancel: Nein, abbrechen
191
197
  navigations:
192
- add_menu_item:
193
- add_sub_item:
194
- choose_page:
195
- delete_item:
196
- delete_item_confirmation_html:
197
- description:
198
- navigations:
199
- no_navigations:
200
- sorting_saved:
198
+ add_menu_item: Menü-Eintrag hinzufügen
199
+ add_sub_item: Untereintrag hinzufügen
200
+ choose_page: Seite auswählen
201
+ delete_item: Eintrag löschen
202
+ delete_item_confirmation_html: Bist du sicher, dass du diesen Menü-Eintrag <span class='font-semibold'>löschen</span> möchtest?
203
+ description: Füge und sortiere Einträge wie du möchtest. Optional kannst du auch verschachtelte Menü-Einträge hinzufügen.
204
+ navigations: Navigationen
205
+ no_navigations: Diese Webseite hat noch keine Navigationen. Du kannst eine in der Theme Konfiguration erstellen.
206
+ sorting_saved: Reihenfolge gespeichert
201
207
  notifications:
202
- alert: Oops! Etwas ist falsch gelaufen
208
+ alert: Ups! Etwas ist falsch gelaufen
203
209
  information: Information
204
210
  login: Du musst dich zuerst einloggen
205
- wrong_username_or_password: Falsche E-Mail oder Passwort
211
+ wrong_username_or_password: E-Mail oder Passwort falsch
206
212
  options:
207
- choose_option:
213
+ choose_option: Option auswählen
208
214
  pages:
209
- add_page_to:
210
- add_translation:
215
+ add_page_to: 'Seite hinzufügen zu:'
216
+ add_translation: Übersetzung für %{language} hinzufügen
211
217
  advanced: Erweitert
212
- cannot_be_deleted:
218
+ cannot_be_deleted: Seite kann nicht gelöscht werden
213
219
  change_order: Reihenfolge ändern
214
- change_view_template:
215
- change_view_template_confirmation:
220
+ change_view_template: View Template ändern
221
+ change_view_template_confirmation: Bist du sicher, dass du dein view Template ändern möchtest? Inhalte die nicht zum neuen Template passen gehen verloren.
216
222
  concept: Entwurf
217
- create:
218
- create_page: Neu %{template}
219
- delete:
223
+ create: Seite erstellen
224
+ create_page: Neue(s) %{template}
225
+ delete: Seite löschen
220
226
  delete_confirmation: Bist du sicher, dass du die Seite <strong>%{subject}</strong> löschen möchtest?
221
- deleted:
227
+ deleted: Seite gelöscht
222
228
  done_changing_order: Reihenfolge speichern
223
- edit_translation:
229
+ edit_translation: Übersetzung für %{language} editieren
224
230
  invisible_to_search_engines: Deine Website ist für Suchmaschinen nicht sichtbar.
225
231
  invisible_to_search_engines_description: Gehe zu deinen Einstellungen um Suchmaschinen-Support zu aktivieren.
226
- main_collection:
232
+ main_collection: Hauptkollektion
227
233
  materialize_path_confirmation: Bist du sicher, dass du den Pfad für diese Seite neu erzeugen willst?
228
- missing_translations:
229
- move_page:
230
- moved:
234
+ missing_translations: Fehlende Übersetzungen
235
+ move_page: Seite verschieben
236
+ moved: Seite verschoben
231
237
  new: Neue Seite
232
- no_pages_yet:
233
- no_parent_page:
238
+ no_pages_yet: Noch keine Seiten
239
+ no_parent_page: Keine Oberseite
234
240
  page_content: Inhalt
235
241
  page_part: Seiteninhalt
236
242
  page_seo: Suchmaschinen
237
- path:
238
- photo_picker: Wähle Bild
239
- photos_picker: Wähle Bilder
240
- preview:
241
- publish:
242
- published:
243
+ path: 'Pfad:'
244
+ photo_picker: Bild auswählen
245
+ photos_picker: Bilder auswählen
246
+ preview: Vorschau
247
+ publish: Publizieren
248
+ published: Seite publiziert
243
249
  rebuild_materialized_path: Materialisierten Pfad neu erzeugen
244
- recommended:
250
+ recommended: Empfohlen
245
251
  save: Seite speichern
246
- save_changes:
247
- save_draft:
252
+ save_changes: Änderungen speichern
253
+ save_draft: Entwurf speichern
248
254
  saved: Seite gespeichert
249
- saving: Speichert...
250
- search_engines:
255
+ saving: wird gespeichert...
256
+ search_engines: Suchmaschinen
251
257
  show_in_menu: unsichtbar
252
- skip_to_first_child: Springe zur ersten Unterseite
253
- sorting_saved:
258
+ skip_to_first_child: Zur ersten Unterseite weiterleiten
259
+ sorting_saved: Reihenfolge gespeichert
254
260
  permanently_delete: Permanent Löschen
255
261
  photos:
256
262
  cannot_be_created: 'Bild kann nicht verarbeitet werden:'
257
- choose_images: Wähle Bilder aus
258
- delete:
263
+ choose_images: Bilder auswählen
264
+ delete: Löschen
259
265
  delete_confirmation: Bist du sicher, dass du das Bild <strong>%{image}</strong> löschen möchtest?
260
- delete_folder: Lösche Ordner
261
- done_organizing: Organisieren abgeschlossen
266
+ delete_folder: Ordner löschen
267
+ done_organizing: Reihenfolge speichern
262
268
  insert_photo: Bild einfügen
263
- insert_photos: Wähle Bilder aus
269
+ insert_photos: Bilder auswählen
264
270
  link: 'URL des Bildes:'
265
271
  new_folder: Neuer Ordner
266
- organize: Organisiere Bilder
267
- rename_folder:
268
- select_images:
272
+ organize: Bilder sortieren
273
+ rename_folder: Ordner umbenenen
274
+ select_images: Bilder auswählen
269
275
  upload_image: Bild hochladen
270
276
  preferences:
271
- Analytics:
277
+ Analytics: Analytics
272
278
  account: Allgemein
273
279
  account_description: Persönliche Einstellungen
274
280
  account_save: Einstellungen speichern
275
281
  analytics: Analytics und Suchmaschinen
276
- analytics_description: Vernetzte deinen Account für real-time Analysen
282
+ analytics_description: Verknüpfe deinen Account für real-time Analysen
277
283
  analytics_save: Einstellungen speichern
278
284
  domain_name_settings: Domain Einstellungen
279
285
  domain_name_settings_description: Richte deine Domain ein
280
286
  social_media: Social Media
281
287
  social_media_description: Facebook und Twitter Accounts
282
288
  social_media_save: Speichere Social Media
283
- style: Style
284
- style_description: Wähle einen passenden Style
285
- style_save: Style speichern
289
+ style: Stil
290
+ style_description: Wähle einen passenden Stil
291
+ style_save: Stil speichern
286
292
  title: Einstellungen
287
293
  users: Benutzer
288
294
  users_description: Benutzer und Administratoren verwalten
289
295
  preview_website: Vorschau der Webseite
290
296
  resources:
291
- edit:
292
- label_description:
293
- manual_sorting:
294
- no_default_template:
295
- saved:
296
- settings:
297
- settings_description:
297
+ edit: Kollektion editieren
298
+ label_description: Label für diese Seiten Kollektion
299
+ manual_sorting: Manuell sortieren
300
+ no_default_template: Kein Standard-Template
301
+ saved: Kollektion gespeichert
302
+ settings: Einstellungen für %{label}
303
+ settings_description: Alle Seiten in dieser Kollektion haben folgendes Prefix.
298
304
  save: Speichern
299
305
  search: Suchen...
300
306
  settings:
307
+ general: Allgemein
301
308
  save: Einstellungen speichern
302
309
  title: Einstellungen
310
+ users: Benutzer
303
311
  theme:
304
- save:
305
- saved:
306
- theme:
307
- theme_description:
312
+ save: Theme speichern
313
+ saved: Theme gespeichert
314
+ theme: Theme
315
+ theme_description: Konfiguriere dein Theme
308
316
  ui:
309
- cancel:
310
- delete:
311
- load_more:
312
- move_to:
313
- new_entry:
314
- optional:
315
- rename:
316
- save_changes:
317
- saving:
317
+ cancel: Abbrechen
318
+ delete: Löschen
319
+ load_more: Weitere laden
320
+ move_to: Verschieben nach
321
+ new_entry: Neuer Eintrag
322
+ optional: Optional
323
+ rename: Umbenennen
324
+ save_changes: Änderungen speichern
325
+ saving: Speichern...
318
326
  users:
319
- authorization:
320
- authorization_description:
327
+ authorization: Authorisierung
328
+ authorization_description: Administratoren können Benutzer verwalten. Normale Benutzer nicht.
321
329
  cannot_be_created: Der Benutzer kann nicht gespeichert werden
322
- delete:
330
+ delete: Benutzer löschen
323
331
  delete_confirmation_html: Bist du sicher, dass du den Benutzer <strong>%{user}</strong> löschen möchtest?
324
- deleted:
325
- last_login:
326
- never_logged_in:
332
+ deleted: Benutzer gelöscht
333
+ last_login: Letztes Login
334
+ never_logged_in: Noch nie eingeloggt
327
335
  new: Neuer Benutzer
328
- profile:
329
- profile_description:
336
+ profile: Profil
337
+ profile_description: Diese Information wird zur Identifikation des Benutzers verwendet. Benutzer müssen sich mit ihrer Email Adresse anmelden.
330
338
  save: Benutzer speichern
331
- saved:
332
- visit_page:
339
+ saved: Benutzer speichern
340
+ visit_page: Seite besuchen
333
341
  website:
334
342
  all_pages: Alle Seiten
343
+ content: Inhalt
335
344
  documents: Dokumente
336
- images:
345
+ images: Bilder
337
346
  media_library: Medien-Bibliothek
338
347
  media_library_description: Hier findest du alle deine Bilder und Dokumente
339
348
  pages: Seiten
340
349
  pages_description: Alle Seiten deiner Webseite
341
- photos: Bilder
350
+ photos: Fotos
351
+ settings: Einstellungen
352
+ theme: Theme
342
353
  title: Deine Webseite
343
354
  wysiwyg:
344
355
  heading_1: Überschrift 1
345
356
  heading_2: Überschrift 2
346
357
  heading_3: Überschrift 3
347
358
  insert_link: Link einfügen
348
- link:
359
+ link: Link
349
360
  paragraph: Paragraph
350
361
  quote: Zitat
351
- unlink:
352
- url:
353
- url_placeholder:
362
+ unlink: Link löschen
363
+ url: URL
364
+ url_placeholder: URL einfügen