refinerycms-blog 1.1 → 1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/app/controllers/admin/blog/posts_controller.rb +53 -0
  2. data/app/controllers/admin/blog/settings_controller.rb +14 -2
  3. data/app/controllers/blog/posts_controller.rb +18 -7
  4. data/app/helpers/blog_posts_helper.rb +23 -7
  5. data/app/models/blog_category.rb +4 -11
  6. data/app/models/blog_comment.rb +11 -3
  7. data/app/models/blog_post.rb +35 -14
  8. data/app/models/categorization.rb +5 -0
  9. data/app/views/admin/blog/_submenu.html.erb +37 -27
  10. data/app/views/admin/blog/categories/_category.html.erb +3 -3
  11. data/app/views/admin/blog/categories/_form.html.erb +1 -1
  12. data/app/views/admin/blog/categories/index.html.erb +2 -6
  13. data/app/views/admin/blog/comments/_comment.html.erb +2 -2
  14. data/app/views/admin/blog/posts/_form.html.erb +1 -1
  15. data/app/views/admin/blog/posts/_post.html.erb +5 -5
  16. data/app/views/admin/blog/posts/index.html.erb +2 -6
  17. data/app/views/admin/blog/posts/uncategorized.html.erb +26 -0
  18. data/app/views/admin/blog/settings/notification_recipients.html.erb +1 -1
  19. data/app/views/blog/posts/_nav.html.erb +9 -11
  20. data/app/views/blog/posts/_post.html.erb +5 -7
  21. data/app/views/blog/posts/archive.html.erb +8 -6
  22. data/app/views/blog/posts/index.html.erb +10 -7
  23. data/app/views/blog/posts/show.html.erb +5 -4
  24. data/app/views/blog/shared/_categories.html.erb +10 -8
  25. data/app/views/blog/shared/_post.html.erb +9 -7
  26. data/app/views/blog/shared/_posts.html.erb +10 -8
  27. data/app/views/blog/shared/_rss_feed.html.erb +1 -1
  28. data/changelog.md +24 -0
  29. data/config/locales/de.yml +128 -0
  30. data/config/locales/en.yml +17 -3
  31. data/config/locales/es.yml +122 -0
  32. data/config/locales/fr.yml +125 -0
  33. data/config/locales/it.yml +1 -0
  34. data/config/locales/pl.yml +134 -0
  35. data/config/locales/pt-BR.yml +125 -0
  36. data/config/locales/ru.yml +125 -0
  37. data/config/routes.rb +5 -2
  38. data/features/authors.feature +15 -0
  39. data/features/support/factories/blog_categories.rb +1 -1
  40. data/features/support/factories/blog_posts.rb +3 -1
  41. data/features/support/step_definitions/authors_steps.rb +7 -0
  42. data/lib/gemspec.rb +1 -0
  43. data/lib/generators/refinerycms_blog/templates/db/migrate/migration_number_add_user_id_to_blog_posts.rb +11 -0
  44. data/lib/generators/refinerycms_blog_generator.rb +14 -7
  45. data/lib/refinerycms-blog.rb +2 -6
  46. data/public/javascripts/refinery/refinerycms-blog.js +3 -3
  47. data/spec/models/blog_categories_spec.rb +28 -8
  48. data/spec/models/blog_posts_spec.rb +167 -7
  49. metadata +16 -20
  50. data/Gemfile +0 -2
  51. data/Gemfile.lock +0 -11
@@ -1,4 +1,4 @@
1
- <% form_for [:admin, @blog_category] do |f| -%>
1
+ <%= form_for [:admin, @blog_category] do |f| -%>
2
2
  <%= render :partial => "/shared/admin/error_messages",
3
3
  :locals => {
4
4
  :object => f.object,
@@ -10,15 +10,11 @@
10
10
  <% end %>
11
11
  <% else %>
12
12
  <% if @blog_categories.any? %>
13
- <%= will_paginate @blog_categories,
14
- :previous_label => '&laquo;',
15
- :next_label => '&raquo;' %>
13
+ <%= will_paginate @blog_categories %>
16
14
 
17
15
  <%= render :partial => "sortable_list" %>
18
16
 
19
- <%= will_paginate @blog_categories,
20
- :previous_label => '&laquo;',
21
- :next_label => '&raquo;' %>
17
+ <%= will_paginate @blog_categories %>
22
18
  <% else %>
23
19
  <p>
24
20
  <strong>
@@ -1,12 +1,12 @@
1
1
  <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= "comment-#{comment.to_param}" -%>">
2
2
  <span class='title'>
3
- <%=h comment.name %>
3
+ <%= comment.name %>
4
4
  <span class="preview"> - <%= truncate(comment.message, :length => 75) %></span>
5
5
  </span>
6
6
  <span class='actions'>
7
7
  <%= link_to refinery_icon_tag("application_go.png"),
8
8
  blog_post_url(comment.post, :anchor => "comment-#{comment.to_param}"),
9
- :title => t('.view_live'),
9
+ :title => t('.view_live_html'),
10
10
  :target => "_blank" unless comment.unmoderated? %>
11
11
  <%= link_to refinery_icon_tag('zoom.png'), admin_blog_comment_path(comment),
12
12
  :title => t('.read') %>
@@ -1,4 +1,4 @@
1
- <% form_for [:admin, @blog_post] do |f| -%>
1
+ <%= form_for [:admin, @blog_post] do |f| -%>
2
2
  <%= render :partial => "/shared/admin/error_messages",
3
3
  :locals => {
4
4
  :object => f.object,
@@ -1,18 +1,18 @@
1
1
  <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(post) -%>">
2
2
  <span class='title'>
3
- <%=h post.title %>
4
- <span class="preview">&nbsp;</span>
3
+ <%= post.title %>
4
+ <span class="preview"><%= post.published_at.try(:strftime, '%b %d, %Y') || 'draft' %><%= " by #{post.author.username}" if post.author.present? %></span>
5
5
  </span>
6
6
  <span class='actions'>
7
7
  <%= link_to refinery_icon_tag("application_go.png"), blog_post_url(post),
8
- :title => t('.view_live'),
8
+ :title => t('.view_live_html'),
9
9
  :target => "_blank" %>
10
10
  <%= link_to refinery_icon_tag("application_edit.png"), edit_admin_blog_post_path(post),
11
11
  :title => t('.edit') %>
12
12
  <%= link_to refinery_icon_tag("delete.png"), admin_blog_post_path(post),
13
13
  :class => "cancel confirm-delete",
14
14
  :title => t('.delete'),
15
- :'data-method' => 'delete',
16
- :'data-confirm' => t('shared.admin.delete.message', :title => post.title) %>
15
+ :method => :delete,
16
+ :confirm => t('shared.admin.delete.message', :title => post.title) %>
17
17
  </span>
18
18
  </li>
@@ -10,15 +10,11 @@
10
10
  <% end %>
11
11
  <% else %>
12
12
  <% if @blog_posts.any? %>
13
- <%= will_paginate @blog_posts,
14
- :previous_label => '&laquo;',
15
- :next_label => '&raquo;' %>
13
+ <%= will_paginate @blog_posts %>
16
14
 
17
15
  <%= render :partial => "sortable_list" %>
18
16
 
19
- <%= will_paginate @blog_posts,
20
- :previous_label => '&laquo;',
21
- :next_label => '&raquo;' %>
17
+ <%= will_paginate @blog_posts %>
22
18
  <% else %>
23
19
  <p>
24
20
  <strong>
@@ -0,0 +1,26 @@
1
+ <%= render :partial => '/admin/blog/submenu' %>
2
+ <div id='records'>
3
+ <% if searching? %>
4
+ <h2><%= t('shared.admin.search.results_for', :query => params[:search]) %></h2>
5
+ <% if @blog_posts.any? %>
6
+ <%= render :partial => "blog_posts",
7
+ :collection => @blog_posts %>
8
+ <% else %>
9
+ <p><%= t('admin.search_no_results') %></p>
10
+ <% end %>
11
+ <% else %>
12
+ <% if @blog_posts.any? %>
13
+ <%= will_paginate @blog_posts %>
14
+
15
+ <%= render :partial => "sortable_list" %>
16
+
17
+ <%= will_paginate @blog_posts %>
18
+ <% else %>
19
+ <p>
20
+ <strong>
21
+ <%= t('.no_items_yet', :create => t('admin.blog.submenu.posts.new')) %>
22
+ </strong>
23
+ </p>
24
+ <% end %>
25
+ <% end %>
26
+ </div>
@@ -1,4 +1,4 @@
1
- <% form_tag do %>
1
+ <%= form_tag do %>
2
2
 
3
3
  <div class='field'>
4
4
  <span class='label_with_help'>
@@ -1,13 +1,11 @@
1
- <% if next_or_previous?(@blog_post) -%>
2
- <nav id="next_prev_article">
3
- <% if @blog_post.next.present? -%>
4
- <%= link_to raw(truncate(@blog_post.next.title) + "&nbsp;&#187;"), @blog_post.next, :class => 'next' %>
5
- <% end -%>
1
+ <nav id="next_prev_article">
2
+ <% if @blog_post.next.present? -%>
3
+ <%= link_to (truncate(@blog_post.next.title) + " &#187;").html_safe, @blog_post.next, :class => 'next' %>
4
+ <% end -%>
6
5
 
7
- <%= link_to 'Blog Home', blog_root_path, :class => 'home' %>
6
+ <%= link_to t('blog.posts.show.blog_home'), blog_root_path, :class => 'home' %>
8
7
 
9
- <% if @blog_post.prev.present? -%>
10
- <%= link_to "&#171;&nbsp;".html_safe + truncate(@blog_post.prev.title), @blog_post.prev, :class => 'prev' %>
11
- <% end -%>
12
- </nav><!-- /next_prev_article -->
13
- <% end -%>
8
+ <% if @blog_post.prev.present? -%>
9
+ <%= link_to ("&#171; " + truncate(@blog_post.prev.title)).html_safe, @blog_post.prev, :class => 'prev' %>
10
+ <% end -%>
11
+ </nav><!-- /next_prev_article -->
@@ -7,12 +7,12 @@
7
7
  <header>
8
8
  <h1><%= @blog_post.title %></h1>
9
9
  <details>
10
- <time datetime="<%= @blog_post.published_at.strftime('%Y-%m-%d') %>" class='posted_at'>
11
- <%= t('blog.shared.posts.created_at', :when => @blog_post.published_at.strftime('%d %B %Y')) %>.
12
- </time>
10
+ <time datetime="<%=l @blog_post.published_at.to_date, :format => :default %>" class='posted_at'>
11
+ <%= t('blog.shared.posts.created_at', :when => l(@blog_post.published_at.to_date, :format => :short)) %>.
12
+ </time><%= " by #{@blog_post.author.username}" if @blog_post.author.present? %>
13
13
  <% if (categories = @blog_post.categories).any? %>
14
14
  <aside class='filed_in'>
15
- <%= t('.filed_in') %>
15
+ <%= t('blog.posts.show.filed_in') %>
16
16
  <% categories.each_with_index do |category, index| %>
17
17
  <%= link_to category.title, blog_category_url(category) -%><%= ',' if index < ((categories.length) - 1) %>
18
18
  <% end %>
@@ -28,7 +28,5 @@
28
28
  </article>
29
29
  <%= render :partial => '/shared/draft_page_message' unless @blog_post.nil? or @blog_post.live? -%>
30
30
  <% if next_or_previous?(@blog_post) -%>
31
- <nav id="next_prev_article">
32
- <%= render 'nav' %>
33
- </nav><!-- /next_prev_article -->
31
+ <%= render 'nav' %>
34
32
  <% end -%>
@@ -1,11 +1,13 @@
1
1
  <% content_for :body_content_left do %>
2
2
  <%= @page[Page.default_parts.first.to_sym] %>
3
- <h1>Blog Archive for <%= @archive_date.strftime('%B %Y') %></h1>
4
- <section id="blog_posts">
5
- <%= render :partial => "/blog/shared/post", :collection => @blog_posts %>
6
- </section>
7
- <%= "There are no blog articles posted for #{@archive_date.strftime('%B %Y')}. Stay tuned." unless @blog_posts.any? %>
8
- <%# TODO: Add locale logic here - hubble is a n00b at that %>
3
+ <h1><%= t('.blog_archive_for', :date => @archive_date.strftime('%B %Y')) %></h1>
4
+ <% if @blog_posts.any? %>
5
+ <section id="blog_posts">
6
+ <%= render :partial => "/blog/shared/post", :collection => @blog_posts %>
7
+ </section>
8
+ <% else %>
9
+ <p><%= t('.no_blog_articles_posted', :date => @archive_date.strftime('%B %Y')) %></p>
10
+ <% end %>
9
11
  <% end %>
10
12
 
11
13
  <% content_for :body_content_right do %>
@@ -1,15 +1,18 @@
1
1
  <% content_for :body_content_left do %>
2
- <%= @page[Page.default_parts.first.to_sym] %>
2
+ <%=raw @page[Page.default_parts.first.to_sym] if Page.default_parts.any? %>
3
3
 
4
- <section id="blog_posts">
5
- <%= render :partial => "/blog/shared/post", :collection => @blog_posts %>
6
- </section>
7
- <%= "<p>There are no blog articles posted yet. Stay tuned.</p>".html_safe unless @blog_posts.any? %>
8
- <%# TODO: Add locale logic here - hubble is a n00b at that %>
4
+ <% if @blog_posts.any? %>
5
+ <section id="blog_posts">
6
+ <%= render :partial => "/blog/shared/post", :collection => @blog_posts %>
7
+ <%= will_paginate @blog_posts %>
8
+ </section>
9
+ <% else %>
10
+ <p><%= t('.no_blog_articles_yet') %></p>
11
+ <% end %>
9
12
  <% end %>
10
13
 
11
14
  <% content_for :body_content_right do %>
12
- <%= @page[Page.default_parts.second.to_sym] %>
15
+ <%=raw @page[Page.default_parts.second.to_sym] if Page.default_parts.many? %>
13
16
 
14
17
  <%= render :partial => "/blog/shared/categories" %>
15
18
  <%= render :partial => "/blog/shared/rss_feed" %>
@@ -6,7 +6,6 @@
6
6
  <% if BlogPost.comments_allowed? %>
7
7
  <aside id="comments">
8
8
  <h2><%= t('.comments.title') %></h2>
9
-
10
9
  <% if (comments = @blog_post.comments.approved).any? %>
11
10
  <%= render :partial => "comment", :collection => comments %>
12
11
  <% else %>
@@ -22,7 +21,7 @@
22
21
  <% end %>
23
22
 
24
23
  <h2><%= t('.comments.add') %></h2>
25
- <% form_for [:blog_post, @blog_comment] do |f| %>
24
+ <%= form_for [:blog_post, @blog_comment] do |f| %>
26
25
  <%= render :partial => "/shared/admin/error_messages",
27
26
  :locals => {
28
27
  :object => f.object,
@@ -61,7 +60,8 @@
61
60
  <% content_for :head_libraries, jquery_include_tags(:jquery_ui => false) %>
62
61
  <% content_for :head do %>
63
62
  <%= stylesheet_link_tag 'refinerycms-blog' %>
64
- <%= javascript_include_tag('refinerycms-blog') %>
63
+ <%# enable AJAX'd post nav at your own risk until html5 history API implemented. %>
64
+ <%#= javascript_include_tag('refinerycms-blog') %>
65
65
  <% if BlogPost::ShareThis.enabled? %>
66
66
  <script src="http://w.sharethis.com/button/buttons.js"></script>
67
67
  <script>stLight.options({publisher:'<%= BlogPost::ShareThis.key %>'});</script>
@@ -71,7 +71,8 @@
71
71
  <% content_for :stylesheets, stylesheet_link_tag('refinerycms-blog') %>
72
72
  <% content_for :before_javascript_libraries, jquery_include_tags(:jquery_ui => false) %>
73
73
  <% content_for :javascripts do %>
74
- <%= javascript_include_tag 'refinerycms-blog' %>
74
+ <%# enable AJAX'd post nav at your own risk until html5 history API implemented. %>
75
+ <%#= javascript_include_tag('refinerycms-blog') %>
75
76
  <script src="http://w.sharethis.com/button/buttons.js"></script>
76
77
  <script>stLight.options({publisher:'<%= BlogPost::ShareThis.key %>'});</script>
77
78
  <% end if BlogPost::ShareThis.enabled? %>
@@ -1,8 +1,10 @@
1
- <h2><%= t('.title') %></h2>
2
- <ul id='categories'>
3
- <% @blog_categories.each do |category| %>
4
- <li<%= " class='selected'" if @category.present? and @category.id == category.id %>>
5
- <%= link_to "#{category.title} (#{category.post_count})", blog_category_url(category) %>
6
- </li>
7
- <% end %>
8
- </ul>
1
+ <% if @blog_categories.any? %>
2
+ <h2><%= t('.title') %></h2>
3
+ <ul id='categories'>
4
+ <% @blog_categories.each do |category| %>
5
+ <li<%= " class='selected'" if @category.present? and @category.id == category.id %>>
6
+ <%= link_to "#{category.title} (#{category.post_count})", blog_category_url(category) %>
7
+ </li>
8
+ <% end %>
9
+ </ul>
10
+ <% end %>
@@ -3,9 +3,9 @@
3
3
  <header>
4
4
  <h1><%= link_to post.title, blog_post_url(post) %></h1>
5
5
  <details>
6
- <time datetime="<%= post.published_at.strftime('%Y-%m-%d') %>" class='posted_at'>
7
- <%= t('blog.shared.posts.created_at', :when => post.published_at.strftime('%d %B %Y')) %>.
8
- </time>
6
+ <time datetime="<%=l post.published_at.to_date, :format => :default %>" class='posted_at'>
7
+ <%= t('blog.shared.posts.created_at', :when => l(post.published_at.to_date, :format => :short)) %>.
8
+ </time><%= " by #{post.author.username}" if post.author.present? %>
9
9
  <% if (categories = post.categories).any? %>
10
10
  <aside class='filed_in'>
11
11
  <%= t('filed_in', :scope => 'blog.posts.show') %>
@@ -26,10 +26,12 @@
26
26
  <%= link_to t('blog.shared.posts.read_more'), blog_post_url(post) %>
27
27
 
28
28
  <aside class='comment_count'>
29
- <% if post.comments.any? %>
30
- (<%= pluralize(post.comments.approved.count, t('blog.shared.comments.singular')) %>)
31
- <% else %>
32
- (<%= t('blog.shared.comments.none') %>)
29
+ <% if BlogPost.comments_allowed? %>
30
+ <% if post.comments.any? %>
31
+ (<%= pluralize(post.comments.approved.count, t('blog.shared.comments.singular')) %>)
32
+ <% else %>
33
+ (<%= t('blog.shared.comments.none') %>)
34
+ <% end %>
33
35
  <% end %>
34
36
  </aside>
35
37
  </p>
@@ -1,8 +1,10 @@
1
- <h2><%= t('.other') %></h2>
2
- <ul id="blog_posts">
3
- <% @blog_posts.each do |blog_post| %>
4
- <li class='clearfix'>
5
- <%= link_to blog_post.title, blog_post_url(blog_post) %>
6
- </li>
7
- <% end %>
8
- </ul>
1
+ <% if @blog_posts.many? %>
2
+ <h2><%= t('.other') %></h2>
3
+ <ul id="blog_posts">
4
+ <% @blog_posts.each do |blog_post| %>
5
+ <li class='clearfix'>
6
+ <%= link_to blog_post.title, blog_post_url(blog_post) %>
7
+ </li>
8
+ <% end %>
9
+ </ul>
10
+ <% end %>
@@ -1,2 +1,2 @@
1
1
  <h2><%= t('.title') %></h2>
2
- <%= link_to "Subscribe", blog_rss_feed_url, :id => "rss_feed_subscribe"%>
2
+ <%= link_to t('.subscribe'), blog_rss_feed_url, :id => "rss_feed_subscribe"%>
data/changelog.md ADDED
@@ -0,0 +1,24 @@
1
+ ## 1.2 [01 March 2011]
2
+
3
+ * Posts can be authored [joemsak](https://github.com/joemsak)
4
+ * Front-end pagination [joemsak](https://github.com/joemsak)
5
+ * Archives start grouping by year after 2 years [joemsak](https://github.com/joemsak)
6
+ * Removed ajax blog post navigation [joemsak](https://github.com/joemsak)
7
+ * Administrate uncategorized posts [joemsak](https://github.com/joemsak)
8
+ * Categories in has_many :through relationship [joemsak](https://github.com/joemsak)
9
+ * General bug fixing & test coverage [parndt](https://github.com/parndt) [joemsak](https://github.com/joemsak)
10
+ * Russian translation [iband](https://github.com/iband)
11
+ * French translation [AdrienGiboire](https://github.com/AdrienGiboire)
12
+ * Polish translation [murbanski](https://github.com/murbanski)
13
+ * German translation [gern](https://github.com/gern)
14
+ * Spanish translation help [xavib](https://github.com/xavib)
15
+ * Rails 3 cleanup & optimization [ugisozols](https://github.com/ugisozols)
16
+ * [See full list](https://github.com/resolve/refinerycms-blog/compare/1.1...1.2)
17
+
18
+
19
+ ## 1.1 [02 December 2010]
20
+
21
+ * Rails 3 Support
22
+ * Archives
23
+ * Categories
24
+ * [See full list](https://github.com/resolve/refinerycms-blog/compare/1.0...1.1)
@@ -0,0 +1,128 @@
1
+ de:
2
+ plugins:
3
+ refinerycms_blog:
4
+ title: Blog
5
+ admin:
6
+ blog:
7
+ categories:
8
+ category:
9
+ edit: Diese Kategorie bearbeiten
10
+ delete: Diese Kategorie dauerhaft entfernen
11
+ index:
12
+ no_items_yet: 'Es sind noch keine Kategorien vorhanden. Klicken Sie auf "%{create}", um Ihre erste Kategorie hinzuzufügen.'
13
+ comments:
14
+ approved: 'Der Kommentar von "%{author}" wurde genehmigt.'
15
+ comment:
16
+ view_live: Diesen Kommentar live betrachten <br/><em>(öffnet sich in einem neuen Fenster)</em>
17
+ read: Kommentar lesen
18
+ reject: Kommentar ablehnen
19
+ approve: Kommentar genehmigen
20
+ rejected: 'Der Kommentar von "%{author}" wurde abgelehnt.'
21
+ index:
22
+ no_items_yet: 'Es sind keine %{type}en Kommentare vorhanden.'
23
+ show:
24
+ comment: Kommentar
25
+ blog_post: Artikel
26
+ from: Verfasst von
27
+ date: Verfasst am
28
+ message: Kommentar
29
+ details: Details
30
+ age: Alter
31
+ actions: Aktionen
32
+ back: Zurück zu allen Kommentaren
33
+ reject: Kommentar ablehnen
34
+ approve: Kommentar genehmigen
35
+ posts:
36
+ form:
37
+ advanced_options: Erweiterte Optionen
38
+ toggle_advanced_options: Klicken, um auf Meta-Tag-Einstellungen und Menüoptionen zuzugreifen
39
+ save_as_draft: Als Entwurf speichern
40
+ published_at: Veröffentlichungsdatum
41
+ index:
42
+ no_items_yet: 'Es sind noch keine Artikel vorhanden. Klicken Sie auf "%{create}", um Ihren ersten Artikel hinzuzufügen.'
43
+ uncategorized:
44
+ no_items_yet: 'Es sind keine unkategorisierten Artikel vorhanden.'
45
+ post:
46
+ view_live: Diesen Artikel live betrachten <br/><em>(öffnet sich in einem neuen Fenster)</em>
47
+ edit: Diesen Artikel bearbeiten
48
+ delete: Diesen Artikel dauerhaft entfernen
49
+ settings:
50
+ notification_recipients:
51
+ value: Sende Benachrichtigungen an
52
+ explanation: 'Jedes Mal, wenn jemand einen Artikel kommentiert, sendet Refinery eine E-Mail Benachrichtigung aus, um über den neuen Kommentar zu informieren.'
53
+ hint: 'Refinery sendet eine E-Mail Benachrichtigung an Sie, wenn ein neuer Kommentar hinzugefügt wurde.'
54
+ example: "Geben Sie Ihre E-Mail-Adresse(n) wie folgt ein: jack@work.com, jill@office.com"
55
+ updated: 'Empfänger für Benachrichtigungen wurden auf "%{recipients}" gesetzt'
56
+ submenu:
57
+ categories:
58
+ title: Kategorien
59
+ manage: Verwalten
60
+ new: Neue Kategorie anlegen
61
+ comments:
62
+ title: Kommentare
63
+ title_with_count: 'Kommentare (%{new_count} neu)'
64
+ new: Neu
65
+ unmoderated: Neu
66
+ approved: Genehmigt
67
+ rejected: Abgelehnt
68
+ posts:
69
+ title: Artikel
70
+ manage: Artikel verwalten
71
+ new: Neuen Artikel anlegen
72
+ uncategorized: Unkategorisierte Artikel
73
+ settings:
74
+ title: Einstellungen
75
+ moderation: Moderation
76
+ update_notified: Empfänger für Benachrichtigungen bearbeiten
77
+ comments: Kommentare
78
+ blog:
79
+ comment_mailer:
80
+ notification:
81
+ greeting: Hallo
82
+ you_recieved_new_comment: Auf Ihrer Website wurde soeben ein neuer Kommentar hinzugefügt.
83
+ comment_starts: --- Kommentar beginnt ---
84
+ comment_ends: --- Kommentar endet ---
85
+ from: Von
86
+ email: E-Mail
87
+ message: Nachricht
88
+ closing_line: Mit besten Grüßen
89
+ ps: P.S. Alle Kommentare sind im "Blog" Abschnitt von Refinery - im Untermenü "Kommentare" - gespeichert, falls Sie diese später dort lesen möchten.
90
+ shared:
91
+ categories:
92
+ title: Kategorien
93
+ rss_feed:
94
+ title: RSS Feed
95
+ subscribe: Abonnieren
96
+ posts:
97
+ other: Andere Artikel
98
+ created_at: 'Verfasst am %{when}'
99
+ read_more: Mehr lesen
100
+ comments:
101
+ singular: Kommentar
102
+ none: Keine Kommentare
103
+ archives: Archiv
104
+ categories:
105
+ show:
106
+ no_posts: Es sind noch keine Artikel vorhanden.
107
+ posts:
108
+ post:
109
+ filed_in: Gespeichert unter
110
+ comment: Kommentar
111
+ comments:
112
+ by: 'Verfasst von %{who}'
113
+ time_ago: 'vor %{time}'
114
+ thank_you: 'Danke für den Kommentar.'
115
+ thank_you_moderated: 'Danke für den Kommentar. Die Nachricht wurde in die Warteschlange der Moderation gestellt und erscheint in Kürze.'
116
+ index:
117
+ no_blog_articles_yet: Es wurden noch keine Artikel verfasst.
118
+ show:
119
+ blog_home: Blog Startseite
120
+ comments:
121
+ title: Kommentare
122
+ add: Neuen Kommentar hinzufügen
123
+ other: Andere Artikel
124
+ filed_in: Gespeichert unter
125
+ submit: Kommentar senden
126
+ archive:
127
+ blog_archive_for: Blog Archiv für %{date}
128
+ no_blog_articles_posted: Für %{date} wurden keine Artikel verfasst.