refinerycms-blog 3.0.2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.gitignore +2 -0
  5. data/.travis.yml +1 -3
  6. data/Gemfile +8 -8
  7. data/app/controllers/refinery/blog/admin/categories_controller.rb +2 -2
  8. data/app/controllers/refinery/blog/admin/posts_controller.rb +15 -12
  9. data/app/controllers/refinery/blog/blog_controller.rb +1 -1
  10. data/app/controllers/refinery/blog/posts_controller.rb +15 -13
  11. data/app/helpers/refinery/blog/posts_helper.rb +4 -4
  12. data/app/models/refinery/blog/category.rb +3 -0
  13. data/app/models/refinery/blog/post.rb +43 -16
  14. data/app/views/refinery/blog/admin/categories/_category.html.erb +4 -10
  15. data/app/views/refinery/blog/admin/comments/_comment.html.erb +4 -14
  16. data/app/views/refinery/blog/admin/posts/_form.html.erb +5 -1
  17. data/app/views/refinery/blog/admin/posts/_post.html.erb +7 -12
  18. data/app/views/refinery/blog/posts/_comment.html.erb +3 -3
  19. data/app/views/refinery/blog/posts/_comments.html.erb +6 -6
  20. data/app/views/refinery/blog/posts/_post.html.erb +7 -7
  21. data/app/views/refinery/blog/posts/index.rss.builder +8 -2
  22. data/app/views/refinery/blog/shared/_categories.html.erb +2 -2
  23. data/app/views/refinery/blog/shared/_post.html.erb +9 -7
  24. data/app/views/refinery/blog/shared/_posts.html.erb +1 -1
  25. data/app/views/refinery/blog/shared/_tags.html.erb +1 -1
  26. data/bin/rails +9 -3
  27. data/certs/parndt.pem +25 -0
  28. data/config/locales/ru.yml +1 -1
  29. data/config/locales/uk.yml +172 -0
  30. data/db/migrate/20110803223522_create_blog_structure.rb +1 -1
  31. data/db/migrate/20110803223523_add_user_id_to_blog_posts.rb +1 -1
  32. data/db/migrate/20110803223524_acts_as_taggable_on_migration.rb +1 -1
  33. data/db/migrate/20110803223526_add_cached_slugs.rb +1 -1
  34. data/db/migrate/20110803223527_add_custom_url_field_to_blog_posts.rb +1 -1
  35. data/db/migrate/20110803223528_add_custom_teaser_field_to_blog_posts.rb +1 -1
  36. data/db/migrate/20110803223529_add_primary_key_to_categorizations.rb +1 -1
  37. data/db/migrate/20120103055909_add_source_url_to_blog_posts.rb +2 -2
  38. data/db/migrate/20120223022021_add_access_count_to_posts.rb +4 -4
  39. data/db/migrate/20120227022021_add_slug_to_posts_and_categories.rb +2 -2
  40. data/db/migrate/20120530102901_create_blog_translations.rb +1 -1
  41. data/db/migrate/20120531113632_delete_cached_slugs.rb +1 -1
  42. data/db/migrate/20120601151114_create_category_translations.rb +1 -1
  43. data/db/migrate/20140622132537_add_missing_unique_indices.acts_as_taggable_on_engine.rb +1 -1
  44. data/db/migrate/20140622132538_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb +1 -1
  45. data/db/migrate/20160602042848_add_username_to_blog_posts.rb +5 -0
  46. data/db/migrate/20161223024527_create_multi_user_model.rb +13 -0
  47. data/db/migrate/20180420132008_remove_translated_columns_to_refinery_blog_categories.rb +5 -0
  48. data/lib/generators/refinery/blog/templates/config/initializers/refinery/blog.rb.erb +2 -1
  49. data/lib/refinery/blog.rb +2 -0
  50. data/lib/refinery/blog/configuration.rb +3 -3
  51. data/lib/refinery/blog/engine.rb +1 -0
  52. data/readme.md +2 -2
  53. data/refinerycms-blog.gemspec +15 -8
  54. data/spec/controllers/refinery/blog/admin/comments_controller_spec.rb +10 -14
  55. data/spec/controllers/refinery/blog/admin/posts_controller_spec.rb +5 -5
  56. data/spec/controllers/refinery/blog/posts_controller_spec.rb +4 -4
  57. data/spec/factories/blog_categories.rb +1 -1
  58. data/spec/factories/blog_comments.rb +1 -1
  59. data/spec/factories/blog_posts.rb +6 -2
  60. data/spec/factories/blog_test_users.rb +6 -0
  61. data/spec/features/refinery/blog/admin/categories_spec.rb +3 -3
  62. data/spec/features/refinery/blog/admin/comments_spec.rb +5 -5
  63. data/spec/features/refinery/blog/admin/menu_spec.rb +2 -2
  64. data/spec/features/refinery/blog/admin/posts_spec.rb +34 -20
  65. data/spec/features/refinery/blog/categories_spec.rb +2 -3
  66. data/spec/features/refinery/blog/posts_spec.rb +17 -30
  67. data/spec/models/refinery/blog/category_spec.rb +12 -13
  68. data/spec/models/refinery/blog/comment_spec.rb +1 -1
  69. data/spec/models/refinery/blog/post_spec.rb +38 -31
  70. data/spec/spec_helper.rb +1 -0
  71. data/spec/support/refinery_blog_test_user.rb +2 -0
  72. metadata +85 -33
  73. metadata.gz.sig +0 -0
  74. data/spec/factories/user.rb +0 -27
@@ -27,17 +27,12 @@
27
27
  </span>
28
28
  </span>
29
29
  <span class='actions'>
30
- <%= link_to refinery_icon_tag("application_go.png"), refinery.blog_post_path(post),
31
- :title => t('.view_live_html'),
32
- :target => "_blank" %>
33
- <%= link_to refinery_icon_tag("application_edit.png"), refinery.edit_blog_admin_post_path(post),
34
- :title => t('.edit') %>
35
- <%= link_to refinery_icon_tag("delete.png"), refinery.blog_admin_post_path(post),
36
- :class => "cancel confirm-delete",
37
- :title => t('.delete'),
38
- :method => :delete,
39
- :data => {
40
- :confirm => t('message', :scope => 'refinery.admin.delete', :title => post.title)
41
- } %>
30
+ <%= action_icon(:preview, refinery.blog_post_path(post), t('.view_live_html')) %>
31
+ <%= action_icon(:edit, refinery.edit_blog_admin_post_path(post), t('.edit') ) %>
32
+ <%= action_icon(:delete, refinery.blog_admin_post_path(post), t('.delete'),
33
+ { class: "cancel confirm-delete",
34
+ data: {confirm: t('message', scope: 'refinery.admin.delete', title: post.title)}} ) %>
42
35
  </span>
43
36
  </li>
37
+
38
+
@@ -1,10 +1,10 @@
1
- <article class='blog_comment_message' id='<%= "comment-#{comment.to_param}" %>'>
1
+ <%= content_tag(:article, class: "blog_comment_message", id: ("comment-#{comment.to_param}")) do %>
2
2
  <%= image_tag avatar_url(comment.email), :alt => comment.name, :class => 'avatar' %>
3
3
  <%= simple_format auto_link(comment.message.to_s) %>
4
- <footer class='blog_comment_author'>
4
+ <footer class="blog_comment_author">
5
5
  <p>
6
6
  <%= t('by', :scope => 'refinery.blog.posts.comments', :who => comment.name) %>,
7
7
  <%= t('time_ago', :scope => 'refinery.blog.posts.comments', :time => time_ago_in_words(comment.created_at)) %>
8
8
  </p>
9
9
  </footer>
10
- </article>
10
+ <% end %>
@@ -1,13 +1,13 @@
1
1
  <aside id="comments">
2
2
  <% if (comments = @post.comments.approved).any? %>
3
- <h2><%= t('title', :scope => 'refinery.blog.posts.show.comments') %></h2>
3
+ <h2><%= t('title', :scope => 'refinery.blog.posts.show.comments') %></h2>
4
4
  <%= render :partial => "comment", :collection => comments %>
5
5
  <% end %>
6
6
 
7
7
  <% if Refinery::Blog::Post.comments_allowed? %>
8
8
 
9
9
  <% flash.each do |key, value| %>
10
- <div id='flash' class="flash flash_<%= key %>">
10
+ <div id="flash" class="flash flash_<%= key %>">
11
11
  <%= value %>
12
12
  </div>
13
13
  <% end %>
@@ -17,19 +17,19 @@
17
17
  <%= render "/refinery/admin/error_messages",
18
18
  :object => f.object,
19
19
  :include_object_name => true %>
20
- <div class='field'>
20
+ <div class="field">
21
21
  <%= f.label :name %>
22
22
  <%= f.text_field :name %>
23
23
  </div>
24
- <div class='field'>
24
+ <div class="field">
25
25
  <%= f.label :email %>
26
26
  <%= f.email_field :email %>
27
27
  </div>
28
- <div class='field message_field'>
28
+ <div class="field message_field">
29
29
  <%= f.label :message %>
30
30
  <%= f.text_area :message, :rows => 6 %>
31
31
  </div>
32
- <div class='field form-actions'>
32
+ <div class="field form-actions">
33
33
  <%= f.submit t('submit', :scope => 'refinery.blog.posts.show') %>
34
34
  </div>
35
35
  <% end %>
@@ -1,24 +1,24 @@
1
1
  <% flash.each do |key, value| %>
2
- <div id='flash' class="flash flash_<%= key %>">
2
+ <div id="flash" class="flash flash_<%= key %>">
3
3
  <%= value %>
4
4
  </div>
5
5
  <% end %>
6
- <article id="blog_post">
6
+ <article class="blog_post">
7
7
  <header>
8
8
  <h1><%= @post.title %></h1>
9
- <section class='details'>
10
- <time datetime="<%=l @post.published_at.to_date, :format => :default %>" class='posted_at'>
9
+ <section class="details">
10
+ <time datetime="<%=l @post.published_at.to_date, :format => :default %>" class="posted_at">
11
11
  <%= t('created_at', :scope => 'refinery.blog.shared.posts', :when => l(@post.published_at.to_date, :format => :short)) %>
12
12
  </time>
13
- <%= content_tag(:div, "#{t('by', :scope => 'refinery.blog.posts.show')} #{@post.author.username}", :class => "blog_author") if @post.author.present? %>
13
+ <%= content_tag(:div, "#{t('by', :scope => 'refinery.blog.posts.show')} #{@post.author_username}", :class => "blog_author") if @post.author_username.present? %>
14
14
  <% if @post.source_url.present? %>
15
- <div class='blog_source'>
15
+ <div class="blog_source">
16
16
  <%= "#{t('source', :scope => 'refinery.blog.posts.show')}: " %>
17
17
  <%= link_to (@post.source_url_title.blank? ? @post.source_url : @post.source_url_title), @post.source_url %>
18
18
  </div>
19
19
  <% end %>
20
20
  <% if (categories = @post.categories).any? %>
21
- <aside class='filled_in'>
21
+ <aside class="filled_in">
22
22
  <%= t('filled_in', :scope => 'refinery.blog.posts.show') %>
23
23
  <% categories.each_with_index do |category, index| %>
24
24
  <%= link_to category.title, refinery.blog_category_path(category) -%><%= ',' if index < ((categories.length) - 1) %>
@@ -1,16 +1,22 @@
1
1
  xml.instruct! :xml, :version => "1.0"
2
- xml.rss :version => "2.0" do
2
+ xml.rss version: "2.0", 'xmlns:atom': 'http://www.w3.org/2005/Atom', 'xmlns:media': 'http://search.yahoo.com/mrss/' do
3
3
  xml.channel do
4
4
  xml.title Refinery::Core.site_name
5
5
  xml.description Refinery::Core.site_name + " Blog Posts"
6
6
  xml.link refinery.blog_root_url
7
+ xml.tag! 'atom:link', href: refinery.blog_rss_feed_url, rel: 'self', type: 'application/rss+xml'
7
8
 
8
9
  @posts.each do |post|
9
10
  xml.item do
10
11
  xml.title post.title
11
- xml.description post.body
12
+ xml.description blog_post_teaser(post)
13
+ xml.category post.categories.map {|x| x.title }.join('/') if post.categories.length > 0
12
14
  xml.pubDate post.published_at.to_s(:rfc822)
13
15
  xml.link refinery.blog_post_url(post)
16
+ xml.guid refinery.blog_post_url(post)
17
+ post.images.each do |image|
18
+ xml.media :content, url: refinery.root_url + image.url, medium: 'image'
19
+ end if post.respond_to?(:images)
14
20
  end
15
21
  end
16
22
  end
@@ -2,9 +2,9 @@
2
2
  <h2><%= t('.title') %></h2>
3
3
  <ul id="categories">
4
4
  <% @categories.each do |category| %>
5
- <li<%== ' class="selected"' if @category.present? && @category.id == category.id %>>
5
+ <%= content_tag(:li, class: ('selected' if @category.present? && @category.id == category.id)) do %>
6
6
  <%= link_to "#{category.title} (#{category.post_count})", refinery.blog_category_path(category) %>
7
- </li>
7
+ <% end %>
8
8
  <% end %>
9
9
  </ul>
10
10
  <% end %>
@@ -2,26 +2,28 @@
2
2
  <article class="blog_post" id="<%= dom_id(post) %>">
3
3
  <header>
4
4
  <h1><%= link_to post.title, refinery.blog_post_path(post) %></h1>
5
- <section class='details'>
6
- <time datetime="<%=l post.published_at.to_date, :format => :default %>" class='posted_at'>
5
+ <section class="details">
6
+ <time datetime="<%=l post.published_at.to_date, :format => :default %>" class="posted_at">
7
7
  <%= t('created_at', :scope => 'refinery.blog.shared.posts', :when => l(post.published_at.to_date, :format => :short)) %>
8
8
  </time>
9
- <%= "#{t('by', :scope => 'refinery.blog.posts.show')} #{post.author.username}" if post.author.present? %>.
9
+
10
+ <%= content_tag(:div, "#{t('by', :scope => 'refinery.blog.posts.show')} #{post.author_username}", :class => "blog_author") if post.author_username.present? %>
11
+
10
12
  <% if (categories = post.categories.translated).any? %>
11
- <aside class='filled_in'>
13
+ <aside class="filled_in">
12
14
  <%= t('filled_in', :scope => 'refinery.blog.posts.show') %>
13
15
  <%=raw categories.collect { |category| link_to category.title, refinery.blog_category_path(category) }.to_sentence %>
14
16
  </aside>
15
17
  <% end %>
16
18
  <% if (tags = post.tags).any? %>
17
- <aside class='tagged'>
19
+ <aside class="tagged">
18
20
  <%= t('tagged', :scope => 'refinery.blog.posts.show') %>
19
21
  <%=raw tags.collect { |tag| link_to tag, refinery.blog_tagged_posts_path(tag.id, tag.name.parameterize) }.to_sentence %>
20
22
  </aside>
21
23
  <% end %>
22
24
  </section>
23
25
  </header>
24
- <section class='clearfix'>
26
+ <section class="clearfix">
25
27
  <% if blog_post_teaser_enabled? %>
26
28
  <%= blog_post_teaser(post) %>
27
29
  <% else %>
@@ -35,7 +37,7 @@
35
37
  <% end %>
36
38
  </p>
37
39
  <% if Refinery::Blog::Post.comments_allowed? %>
38
- <aside class='comment_count'>
40
+ <aside class="comment_count">
39
41
  <%= link_to "#{t('title', :scope => 'refinery.blog.posts.show.comments')} (#{post.comments.approved.count})", refinery.blog_post_path(post) << '#comments' %>
40
42
  </aside>
41
43
  <% end %>
@@ -2,7 +2,7 @@
2
2
  <h2><%= t('.other') %></h2>
3
3
  <ul id="blog_posts">
4
4
  <% @posts.each do |blog_post| %>
5
- <li class='clearfix'>
5
+ <li class="clearfix">
6
6
  <%= link_to blog_post.title, refinery.blog_post_path(blog_post) %>
7
7
  </li>
8
8
  <% end %>
@@ -1,6 +1,6 @@
1
1
  <% if @tags.any? %>
2
2
  <h2><%= t('.title') %></h2>
3
- <nav id='tags'>
3
+ <nav id="tags">
4
4
  <% tag_cloud(@tags, %w(tag1 tag2 tag3 tag4)) do |tag, css_class| %>
5
5
  <%= link_to tag.name, refinery.blog_tagged_posts_path(tag.id, tag.name.parameterize), :class => css_class %>
6
6
  <% end %>
data/bin/rails CHANGED
@@ -1,5 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
- # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
2
+ # This command will automatically be run when you run "rails" with Rails gems
3
+ # installed from the root of your application.
3
4
 
4
- ENGINE_PATH = File.expand_path('../..', __FILE__)
5
- load File.expand_path('../../spec/dummy/bin/rails', __FILE__)
5
+ begin
6
+ load File.join(File.expand_path('../../', __FILE__), 'spec/dummy/bin/rails')
7
+ rescue LoadError => load_error
8
+ warn "No dummy Rails application found! \n" \
9
+ "To create one in spec/dummy, please run: \n\n" \
10
+ " rake refinery:testing:dummy_app"
11
+ end
@@ -0,0 +1,25 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEMjCCApqgAwIBAgIBATANBgkqhkiG9w0BAQsFADAjMSEwHwYDVQQDDBhnZW1z
3
+ L0RDPXAvREM9YXJuZHQvREM9aW8wHhcNMjAwNTEwMjIxOTQ2WhcNMjEwNTEwMjIx
4
+ OTQ2WjAjMSEwHwYDVQQDDBhnZW1zL0RDPXAvREM9YXJuZHQvREM9aW8wggGiMA0G
5
+ CSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDT+JzHYPGMYJt9ct2DCsbIymn1uJJp
6
+ HnDkQESfsGe40jTC90oF2iVbVOkaacNc1N3CSWUZvZjuygUuS86P6/kpBILGdO2+
7
+ bkXXKtfGC2YGGx9TdNLpCb4925vQHvdFeKXGpQDZdDw1SNC6zraZou47CvOE1cl2
8
+ Bp+1QMZuGRZ4+5CzOEWDWurjqce3O1jUEbyBB7z5H0h/YEaxfXipxhL1Dhi0sgkH
9
+ qP/e6SxzifdifdZCksJFQ06a1ji9hJY6eM23qbv/aaluVHAZSVBAQBS7rYniLo+N
10
+ G4vpFhoubQO5u8UluUtCaPUpI/qOvVcSaZn3ZkzlMwC8b1RwAeXBQmtFE2wnrv2i
11
+ ovTwoN7rHchwhgaHbkuFh4Wr92wGbrWL7J+X8rWKk1f8RF4kvtNE/NA6YrkxTpVh
12
+ QMyDmekt7rTxvcq2NneLGroWIUVCx/JID+Jw492LKQ6Sl1/P2TRzdEDtqZAZL0gt
13
+ xlWeMUfGG2D/gLnhs5qnaFaWQwGTmBnTgHcCAwEAAaNxMG8wCQYDVR0TBAIwADAL
14
+ BgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEqtAyQVxPgKsrgoTQ1YmaIu/fmvMBoGA1Ud
15
+ EQQTMBGBD2dlbXNAcC5hcm5kdC5pbzAaBgNVHRIEEzARgQ9nZW1zQHAuYXJuZHQu
16
+ aW8wDQYJKoZIhvcNAQELBQADggGBALu2HM50B8xqlAXkCwavJDvWWtV9pG1igFUg
17
+ friZRWprUQ5nTaNmAd8p8qbJQwaIK2gt+DfYWfB9LtKnQTfbhLRBbmJ7zYw8LjKY
18
+ PwCs4RWjDAiuyCO3ppfsz+1bsMUXPLgWlaUkXsUy3nr2NruEFTO9zu3wGYQQ93Tt
19
+ vYSHOnP35UB4QjsjNrOO7FBaQfy6O909PP+GnVcJ62s9c26voJz63RSolwY7Jydw
20
+ XUlG68jjJKSoDHRzVTmNB7sX8rs8P2kvYkpIUXPHyls3mWBWjBWbdEYWESZrxI2x
21
+ dS7jY3AnfqhvsWra2pSREb2IDqPnJrHVOejnEI/zuuufUxLwDx3AC6SMdsyWkZ7V
22
+ 9OmLt2rg75Sct6h2220lO5ySqYtqAXuOMBDGv5L0zLalx1g8LACA7uILTKVWh8B8
23
+ Hsej0MQ3drCB1eA4c9OXdCUQJnY2aLTq3uNvTbZvoTgWK55eq3KLBJ4zzoKZ4tBX
24
+ /HIFI/fEwYlI1Ji3oikUrHkc4rWgaQ==
25
+ -----END CERTIFICATE-----
@@ -44,7 +44,7 @@ ru:
44
44
  source_url_title: Название источника сообщения
45
45
  source_url_title_help: Название источника сообщения в посте.
46
46
  author: Автор
47
- author_help: 'Установить, какой пользователь будет покажан как автор записи.'
47
+ author_help: 'Установить, какой пользователь будет показан как автор записи.'
48
48
  copy_body: Копировать основное сообщение в краткое
49
49
  copy_body_help: 'Копирует основное сообщение в краткое. Оставьте краткое сообщение пустым, чтобы Refinery составлял его автоматически.'
50
50
  index:
@@ -0,0 +1,172 @@
1
+ uk:
2
+ refinery:
3
+ plugins:
4
+ refinerycms_blog:
5
+ title: Блог
6
+ blog:
7
+ admin:
8
+ categories:
9
+ category:
10
+ edit: Редагувати цю категорію
11
+ delete: Видалити цю категорію назавжди
12
+ index:
13
+ no_items_yet: 'Категорії досі не створені. Натисніть "%{create}", щоб додати вашу першу категорію.'
14
+ comments:
15
+ approved: 'Коментар від "%{author}" було опубліковано.'
16
+ comment:
17
+ view_live_html: Дивитись коментар на сайті <br/><em>(відкриється у новому вікні)</em>
18
+ read: Прочитати кометар
19
+ reject: Відхилити коментар
20
+ approve: Прийняти коментар
21
+ rejected: 'Коментар від "%{author}" було відхилено.'
22
+ index:
23
+ no_items_yet: '%{type} коментарів: немає.'
24
+ show:
25
+ comment: Коментар
26
+ blog_post: Запис у блозі
27
+ from: Опублікував(ла)
28
+ date: Опубліковано
29
+ message: Коментар
30
+ details: Деталі
31
+ age: Вік
32
+ actions: Дії
33
+ back: Повернутися до списку коментарів
34
+ reject: Відхилити цей коментар
35
+ approve: Прийняти цей коментар
36
+ posts:
37
+ form:
38
+ toggle_advanced_options: 'Натисніть, щоб отримати доступ до налаштувать мета-тегів та меню'
39
+ published_at: Дата публікації
40
+ custom_url: Переадресувати на інший сайт або сторінку
41
+ custom_url_help: "Посилання буде взята з цього поля, замість генерації із назви запису."
42
+ source_url: URL джерела
43
+ source_url_help: Джерело матеріалу цього запису.
44
+ source_url_title: Назва джерела повідомлення
45
+ source_url_title_help: Назва джерела повідомлення у пості.
46
+ author: Автор
47
+ author_help: 'Встановіть, який користувач буде показаний як автор запису.'
48
+ copy_body: Копіювати основне повідомлення в коротке
49
+ copy_body_help: 'Копіює основне повідомлення в коротке. Залиште коротке повідомлення пустим, щоб Refinery склав його автоматично.'
50
+ index:
51
+ no_items_yet: 'Нема записів у блозі. Натисніть "%{create}", щоб додати перший запис.'
52
+ uncategorized:
53
+ no_items_yet: 'Нема записів без категорій.'
54
+ post:
55
+ view_live_html: Дивитися запис на сайті <br/><em>(відкриється в новому вікні)</em>
56
+ edit: Редагувати запис
57
+ delete: Видалити запис
58
+ delete_translation: Видалити цей переклад
59
+ delete_translation_confirmation: Ви дійсно бажаєте назавжди видалити цей переклад?
60
+ delete_translation_success: Переклад було успішно видалено.
61
+ draft: Чорнетка
62
+ settings:
63
+ notification_recipients:
64
+ value: Відправляти сповіщення
65
+ explanation: 'При появі нових коментарів Refinery надішле сповіщення на email.'
66
+ hint: 'При появі нових коментарів Refinery надішле сповіщення на email.'
67
+ example: "Введіть адреси ел. пошти, например: jack@work.com, jill@office.com"
68
+ updated: 'Одержувачем сповіщень є "%{recipients}"'
69
+ submenu:
70
+ categories:
71
+ title: Категорії
72
+ manage: Редагувати категорії
73
+ new: Створити нову категорію
74
+ comments:
75
+ title: Коментарі
76
+ title_with_count: 'Коментарі (%{new_count} нових)'
77
+ new: Нові
78
+ unmoderated: Немодеровані
79
+ approved: Прийняті
80
+ rejected: Відхилені
81
+ posts:
82
+ title: Записи
83
+ manage: Редагувати запис
84
+ new: Створити новий запис
85
+ uncategorized: Записи без категорій
86
+ settings:
87
+ title: Налаштування
88
+ moderation: Модерування
89
+ update_notified: Налаштувати сповіщення
90
+ comments: Коментарі
91
+ teasers: Короткі змісти
92
+ comment_mailer:
93
+ notification:
94
+ greeting: Вітаємо
95
+ you_recieved_new_comment: Новий коментар було опубліковано на вашому сайті.
96
+ comment_starts: --- початок коментаря ---
97
+ comment_ends: --- кінець коментаря ---
98
+ from: Від
99
+ email: Ел. пошта
100
+ message: Повідомлення
101
+ approve: Підтвердіть
102
+ or: " або "
103
+ reject: відхилите
104
+ this_comment: " цей коментар."
105
+ closing_line: З повагою
106
+ ps: P.S. Усі коментарі знаходятся в розділі "Блог" Refinery CMS у подменю "Коментарі".
107
+ shared:
108
+ categories:
109
+ title: Категорії
110
+ rss_feed:
111
+ title: RSS-стрічка
112
+ subscribe: Підписатися
113
+ posts:
114
+ other: Інші записи
115
+ created_at: 'Опубліковано %{when}'
116
+ read_more: Читати далі
117
+ tags:
118
+ title: "Теги"
119
+ comments:
120
+ singular: коментар
121
+ none: нема коментарів
122
+ archives: Архіви
123
+ categories:
124
+ show:
125
+ no_posts: Записів поки що немає.
126
+ posts:
127
+ post:
128
+ filled_in: Категорія
129
+ comment: коментар
130
+ comments:
131
+ by: 'Опублікував(ла) %{who}'
132
+ time_ago: '%{time} назад'
133
+ thank_you: 'Дякуємо за коментар.'
134
+ thank_you_moderated: 'Дякуємо за коментар. Ваше повідомлення модерується і скоро з’явиться на сайті.'
135
+ index:
136
+ no_blog_articles_yet: Поки що жодного запису не опубліковано. Слідкуйте за новинами.
137
+ show:
138
+ blog_home: Повернутися до списку записів
139
+ comments:
140
+ title: Коментарі
141
+ add: Написати коментар
142
+ other: Інші записи
143
+ filled_in: Категорія
144
+ tagged: Теги
145
+ submit: Відправити коментар
146
+ name: Ім’я
147
+ email: Пошта
148
+ message: Повідомлення
149
+ by: Автор
150
+ source: Джерело
151
+ tagged:
152
+ no_blog_articles_yet: Поки що жодного запису не опубліковано. Слідкуйте за новинами.
153
+ posts_tagged: Записи з тегом
154
+ archive:
155
+ blog_archive_for: 'Архів %{date}'
156
+ no_blog_articles_posted: 'Жодного запису за %{date} не опубліковано. Слідкуйте за новинами.'
157
+ activerecord:
158
+ models:
159
+ refinery/blog/category: Категорія
160
+ refinery/blog/comment: Коментарі
161
+ refinery/blog/post: Запис у блозі
162
+ attributes:
163
+ refinery/blog/category:
164
+ title: Назва
165
+ refinery/blog/comment:
166
+ name: Ім’я
167
+ email: Email
168
+ message: Повідомлення
169
+ refinery/blog/post:
170
+ title: Назва
171
+ body: Основне повідомлення
172
+ teaser: Короткий зміст
@@ -1,4 +1,4 @@
1
- class CreateBlogStructure < ActiveRecord::Migration
1
+ class CreateBlogStructure < ActiveRecord::Migration[4.2]
2
2
 
3
3
  def up
4
4
  create_table :refinery_blog_posts do |t|
@@ -1,4 +1,4 @@
1
- class AddUserIdToBlogPosts < ActiveRecord::Migration
1
+ class AddUserIdToBlogPosts < ActiveRecord::Migration[4.2]
2
2
 
3
3
  def change
4
4
  add_column :refinery_blog_posts, :user_id, :integer