├── app ├── views │ ├── .gitkeep │ └── refinery │ │ ├── blog │ │ ├── admin │ │ │ ├── comments │ │ │ │ ├── approve.html.erb │ │ │ │ ├── _sortable_list.html.erb │ │ │ │ ├── index.html.erb │ │ │ │ ├── _comment.html.erb │ │ │ │ └── show.html.erb │ │ │ ├── posts │ │ │ │ ├── new.html.erb │ │ │ │ ├── edit.html.erb │ │ │ │ ├── _form_part.html.erb │ │ │ │ ├── _sortable_list.html.erb │ │ │ │ ├── _teaser_part.html.erb │ │ │ │ ├── uncategorized.html.erb │ │ │ │ ├── index.html.erb │ │ │ │ ├── _post.html.erb │ │ │ │ └── _form.html.erb │ │ │ ├── categories │ │ │ │ ├── new.html.erb │ │ │ │ ├── edit.html.erb │ │ │ │ ├── _sortable_list.html.erb │ │ │ │ ├── _form.html.erb │ │ │ │ ├── index.html.erb │ │ │ │ └── _category.html.erb │ │ │ ├── shared │ │ │ │ └── _locale_picker.html.erb │ │ │ ├── settings │ │ │ │ └── notification_recipients.html.erb │ │ │ └── _submenu.html.erb │ │ ├── shared │ │ │ ├── _rss_feed.html.erb │ │ │ ├── _posts.html.erb │ │ │ ├── _tags.html.erb │ │ │ ├── _body_content_right.html.erb │ │ │ ├── _categories.html.erb │ │ │ └── _post.html.erb │ │ ├── widgets │ │ │ └── _blog_archive.html.erb │ │ ├── posts │ │ │ ├── index.rss.builder │ │ │ ├── _comment.html.erb │ │ │ ├── _nav.html.erb │ │ │ ├── archive.html.erb │ │ │ ├── tagged.html.erb │ │ │ ├── show.html.erb │ │ │ ├── index.html.erb │ │ │ ├── _comments.html.erb │ │ │ └── _post.html.erb │ │ ├── categories │ │ │ └── show.html.erb │ │ └── comment_mailer │ │ │ └── notification.html.erb │ │ └── shared │ │ └── admin │ │ └── _autocomplete.html.erb ├── helpers │ ├── .gitkeep │ └── refinery │ │ └── blog │ │ ├── controller_helper.rb │ │ └── posts_helper.rb ├── models │ ├── .gitkeep │ └── refinery │ │ ├── categorization.rb │ │ └── blog │ │ ├── category.rb │ │ ├── comment.rb │ │ └── post.rb ├── controllers │ ├── .gitkeep │ └── refinery │ │ └── blog │ │ ├── admin │ │ ├── categories_controller.rb │ │ ├── comments_controller.rb │ │ ├── settings_controller.rb │ │ └── posts_controller.rb │ │ ├── categories_controller.rb │ │ ├── blog_controller.rb │ │ └── posts_controller.rb ├── assets │ ├── images │ │ └── refinery │ │ │ └── blog │ │ │ ├── icons │ │ │ ├── cog.png │ │ │ ├── down.gif │ │ │ ├── page.png │ │ │ ├── up.gif │ │ │ ├── folder.png │ │ │ ├── comment.png │ │ │ ├── comments.png │ │ │ ├── page_add.png │ │ │ ├── page_copy.png │ │ │ ├── folder_add.png │ │ │ ├── folder_edit.png │ │ │ ├── comment_cross.png │ │ │ └── comment_tick.png │ │ │ └── rss-feed.png │ ├── stylesheets │ │ └── refinery │ │ │ └── blog │ │ │ ├── ui-lightness │ │ │ └── images │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ ├── ui-icons_228ef1_256x240.png │ │ │ │ ├── ui-icons_ef8c08_256x240.png │ │ │ │ ├── ui-icons_ffd27a_256x240.png │ │ │ │ ├── ui-icons_ffffff_256x240.png │ │ │ │ ├── ui-bg_flat_10_000000_40x100.png │ │ │ │ ├── ui-bg_glass_65_ffffff_1x400.png │ │ │ │ ├── ui-bg_glass_100_f6f6f6_1x400.png │ │ │ │ ├── ui-bg_glass_100_fdf5ce_1x400.png │ │ │ │ ├── ui-bg_gloss-wave_35_f6a828_500x100.png │ │ │ │ ├── ui-bg_diagonals-thick_18_b81900_40x40.png │ │ │ │ ├── ui-bg_diagonals-thick_20_666666_40x40.png │ │ │ │ ├── ui-bg_highlight-soft_100_eeeeee_1x100.png │ │ │ │ └── ui-bg_highlight-soft_75_ffe45c_1x100.png │ │ │ ├── backend.css.scss │ │ │ └── frontend.css.scss │ └── javascripts │ │ └── refinery │ │ └── blog │ │ ├── frontend.js │ │ └── backend.js └── mailers │ └── refinery │ └── blog │ └── comment_mailer.rb ├── .rspec ├── lib ├── refinerycms-blog.rb ├── refinery │ ├── blog │ │ ├── version.rb │ │ ├── configuration.rb │ │ ├── tabs.rb │ │ └── engine.rb │ └── blog.rb └── generators │ └── refinery │ └── blog │ ├── templates │ └── config │ │ └── initializers │ │ └── refinery │ │ └── blog.rb.erb │ └── blog_generator.rb ├── tasks └── rspec.rake ├── todo.md ├── spec ├── factories │ ├── blog_categories.rb │ ├── blog_posts.rb │ └── blog_comments.rb ├── requests │ └── refinery │ │ └── blog │ │ ├── admin │ │ ├── menu_spec.rb │ │ ├── categories_spec.rb │ │ └── comments_spec.rb │ │ ├── categories_spec.rb │ │ └── posts_spec.rb ├── models │ └── refinery │ │ └── blog │ │ ├── comment_spec.rb │ │ └── category_spec.rb ├── lib │ └── refinery │ │ └── blog │ │ └── engine_spec.rb ├── spec_helper.rb ├── controllers │ └── refinery │ │ └── blog │ │ └── admin │ │ └── comments_controller_spec.rb └── helpers │ └── refinery │ └── blog │ └── posts_helper_spec.rb ├── db ├── migrate │ ├── 20110803223523_add_user_id_to_blog_posts.rb │ ├── 20110803223527_add_custom_url_field_to_blog_posts.rb │ ├── 20110803223528_add_custom_teaser_field_to_blog_posts.rb │ ├── 20120531113632_delete_cached_slugs.rb │ ├── 20110803223526_add_cached_slugs.rb │ ├── 20120103055909_add_source_url_to_blog_posts.rb │ ├── 20120223022021_add_access_count_to_posts.rb │ ├── 20120227022021_add_slug_to_posts_and_categories.rb │ ├── 20120601151114_create_category_translations.rb │ ├── 20110803223529_add_primary_key_to_categorizations.rb │ ├── 20120530102901_create_blog_translations.rb │ ├── 20110803223524_acts_as_taggable_on_migration.rb │ └── 20110803223522_create_blog_structure.rb └── seeds.rb ├── script └── rails ├── .travis.yml ├── Rakefile ├── .gitignore ├── Guardfile ├── refinerycms-blog.gemspec ├── config ├── locales │ ├── nb.yml │ ├── zh-CN.yml │ ├── cs.yml │ ├── ja.yml │ ├── ru.yml │ ├── pl.yml │ ├── es.yml │ ├── pt-BR.yml │ ├── nl.yml │ ├── fr.yml │ ├── bg.yml │ ├── de.yml │ ├── it.yml │ └── sv.yml ├── routes.rb └── initializers │ └── url_validator.rb ├── readme.md ├── Gemfile └── changelog.md /app/views/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --colour 2 | -------------------------------------------------------------------------------- /app/helpers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/models/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/controllers/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/refinerycms-blog.rb: -------------------------------------------------------------------------------- 1 | require 'refinery/blog' 2 | -------------------------------------------------------------------------------- /app/views/refinery/blog/admin/comments/approve.html.erb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/refinery/blog/admin/posts/new.html.erb: -------------------------------------------------------------------------------- 1 | <%= render "form" %> 2 | -------------------------------------------------------------------------------- /app/views/refinery/blog/admin/categories/new.html.erb: -------------------------------------------------------------------------------- 1 | <%= render "form" %> 2 | -------------------------------------------------------------------------------- /app/views/refinery/blog/admin/posts/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= render "form" %> 2 | -------------------------------------------------------------------------------- /app/views/refinery/blog/admin/categories/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= render "form" %> 2 | -------------------------------------------------------------------------------- /tasks/rspec.rake: -------------------------------------------------------------------------------- 1 | require 'rspec/core/rake_task' 2 | 3 | desc "Run specs" 4 | RSpec::Core::RakeTask.new 5 | -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/cog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/cog.png -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/down.gif -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/page.png -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/up.gif -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/rss-feed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/rss-feed.png -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/folder.png -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/comment.png -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/comments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/comments.png -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/page_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/page_add.png -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/page_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/page_copy.png -------------------------------------------------------------------------------- /app/views/refinery/shared/admin/_autocomplete.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :stylesheets, stylesheet_link_tag("refinery/blog/ui-lightness/jquery-ui-1.8.13.custom") %> 2 | -------------------------------------------------------------------------------- /todo.md: -------------------------------------------------------------------------------- 1 | ## Why not, let's get this list going, eh? 2 | 3 | * Replace comments with disqus? 4 | * Facebook/twitter login for comments? 5 | * What else? Add your ideas... -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/folder_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/folder_add.png -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/folder_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/folder_edit.png -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/comment_cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/comment_cross.png -------------------------------------------------------------------------------- /app/assets/images/refinery/blog/icons/comment_tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/progressbar/refinerycms-blog/master/app/assets/images/refinery/blog/icons/comment_tick.png -------------------------------------------------------------------------------- /app/views/refinery/blog/admin/posts/_form_part.html.erb: -------------------------------------------------------------------------------- 1 |
11 | <%= t('.no_posts') %> 12 |
13 | <% end %> 14 | <% end %> 15 | 16 | <% content_for :side_body do %> 17 | <%= render "/refinery/blog/shared/categories" %> 18 | <% end %> 19 | 20 | <%= render "/refinery/content_page" %> 21 | <% content_for :stylesheets, stylesheet_link_tag('refinery/blog/frontend') %> 22 | -------------------------------------------------------------------------------- /db/seeds.rb: -------------------------------------------------------------------------------- 1 | Refinery::User.all.each do |user| 2 | if user.plugins.where(:name => 'refinerycms_blog').blank? 3 | user.plugins.create(:name => "refinerycms_blog", 4 | :position => (user.plugins.maximum(:position) || -1) +1) 5 | end 6 | end if defined?(Refinery::User) 7 | 8 | if defined?(Refinery::Page) and !Refinery::Page.exists?(:link_url => '/blog') 9 | page = Refinery::Page.create( 10 | :title => "Blog", 11 | :link_url => "/blog", 12 | :deletable => false, 13 | :menu_match => "^/blogs?(\/|\/.+?|)$" 14 | ) 15 | 16 | Refinery::Pages.default_parts.each do |default_page_part| 17 | page.parts.create(:title => default_page_part, :body => nil) 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /app/views/refinery/blog/posts/_nav.html.erb: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /app/views/refinery/blog/admin/settings/notification_recipients.html.erb: -------------------------------------------------------------------------------- 1 | <%= form_tag refinery.notification_recipients_blog_admin_settings_path do %> 2 | 3 |11 | <%= t('.hint') %> 12 |
13 |14 | <%= t('.example') %> 15 |
16 | 17 | <%= render "/refinery/admin/form_actions", 18 | :f => nil, 19 | :continue_editing => false, 20 | :cancel_url => refinery.blog_admin_posts_url, 21 | :hide_delete => true %> 22 | <% end %> 23 | -------------------------------------------------------------------------------- /app/views/refinery/blog/comment_mailer/notification.html.erb: -------------------------------------------------------------------------------- 1 | <%=raw t('.greeting') %>, 2 | 3 | <%=raw t('.you_recieved_new_comment') %> 4 | 5 | <%=raw t('.comment_starts') %> 6 | 7 | <%=raw t('.from') %>: <%= @comment.name %> 8 | <%=raw t('.email') %>: <%= @comment.email %> 9 | <%=raw t('.message') %>: 10 | <%=simple_format strip_tags(@comment.body) %> 11 | 12 | <%=raw t('.comment_ends') %> 13 | 14 | <%=raw link_to t('.approve'), refinery.approve_blog_admin_comment_url(@comment) -%> 15 | <%=raw t('.or') -%> 16 | <%=raw link_to t('.reject'), refinery.reject_blog_admin_comment_url(@comment) -%> 17 | <%=raw t('.this_comment') %> 18 | 19 | <%=raw t('.closing_line') %>, 20 | <%=raw Refinery::Core.site_name %> 21 | 22 | <%=raw t('.ps') %> 23 | -------------------------------------------------------------------------------- /spec/lib/refinery/blog/engine_spec.rb: -------------------------------------------------------------------------------- 1 | require 'spec_helper' 2 | 3 | module Refinery 4 | module Blog 5 | describe Engine do 6 | describe "plugin activity" do 7 | let(:activity) do 8 | Refinery::Plugins.registered.find_by_name("refinerycms_blog").activity.first 9 | end 10 | 11 | it "sets the correct path for activity entries" do 12 | activity.url.should eq("refinery.edit_blog_admin_post_path") 13 | end 14 | end 15 | 16 | describe ".load_seed" do 17 | it "is idempotent" do 18 | Engine.load_seed 19 | Engine.load_seed 20 | 21 | Refinery::Page.where(:link_url => '/blog').count.should eq(1) 22 | end 23 | end 24 | end 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /app/views/refinery/blog/posts/archive.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "#{t('.blog_archive_for', :date => @archive_date.strftime('%B %Y'))}" %> 2 | 3 | <% content_for :body do %> 4 |<%= t('.no_blog_articles_posted', :date => @archive_date.strftime('%B %Y')) %>
11 | <% end %> 12 | <% end %> 13 | 14 | <%= render '/refinery/blog/shared/body_content_right' %> 15 | 16 | <%= render "/refinery/content_page" %> 17 | <% content_for :stylesheets, stylesheet_link_tag('refinery/blog/frontend') %> 18 | -------------------------------------------------------------------------------- /app/views/refinery/blog/posts/tagged.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :title, "#{t('.posts_tagged')} “#{h(@tag_name.titleize)}”".html_safe %> 2 | 3 | <% content_for :body_content_title, "#{t('.posts_tagged')} “#{h(@tag_name.titleize)}”".html_safe -%> 4 | 5 | <% content_for :body do %> 6 | <% if @posts.any? %> 7 |<%= t('.no_blog_articles_yet') %>
13 | <% end %> 14 | <% end %> 15 | 16 | <%= render '/refinery/blog/shared/body_content_right' %> 17 | 18 | <%= render "/refinery/content_page" %> 19 | <% content_for :stylesheets, stylesheet_link_tag('refinery/blog/frontend') %> 20 | -------------------------------------------------------------------------------- /app/views/refinery/blog/admin/categories/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= form_for [refinery, :blog_admin, @category] do |f| -%> 2 | <%= render "/refinery/admin/error_messages", 3 | :object => f.object, 4 | :include_object_name => true %> 5 | 6 | <%= render "/refinery/blog/admin/shared/locale_picker", 7 | :current_locale => Thread.current[:globalize_locale] if Refinery.i18n_enabled? %> 8 | 9 |<%= t('.no_blog_articles_yet') %>
11 | <% end %> 12 | <% end %> 13 | 14 | <% content_for :side_body_prepend do -%> 15 | <%= raw @page.content_for(Refinery::Pages.default_parts.second.to_sym) %> 16 | <% end if Refinery::Pages.default_parts.many? -%> 17 | <%= render '/refinery/blog/shared/body_content_right' %> 18 | 19 | <%= render "/refinery/content_page" %> 20 | <% content_for :stylesheets, stylesheet_link_tag('refinery/blog/frontend') %> 21 | -------------------------------------------------------------------------------- /app/views/refinery/blog/admin/posts/uncategorized.html.erb: -------------------------------------------------------------------------------- 1 | <%= render '/refinery/blog/admin/submenu' %> 2 |<%= t('no_results', :scope => 'refinery.admin.search') %>
11 | <% end %> 12 | <% else %> 13 | <% if @posts.any? %> 14 | <%= will_paginate @posts %> 15 | 16 | <%= render "sortable_list" %> 17 | 18 | <%= will_paginate @posts %> 19 | <% else %> 20 |21 | 22 | <%= t('.no_items_yet') %> 23 | 24 |
25 | <% end %> 26 | <% end %> 27 |<%= t('no_results', :scope => 'refinery.admin.search') %>
11 | <% end %> 12 | <% else %> 13 | <% if @posts.any? %> 14 | <%= will_paginate @posts %> 15 | 16 | <%= render "sortable_list" %> 17 | 18 | <%= will_paginate @posts %> 19 | <% else %> 20 |21 | 22 | <%= t('.no_items_yet', :create => t('new', :scope => 'refinery.blog.admin.submenu.posts')) %> 23 | 24 |
25 | <% end %> 26 | <% end %> 27 |<%= t('no_results', :scope => 'refinery.admin.search') %>
11 | <% end %> 12 | <% else %> 13 | <% if @categories.any? %> 14 | <%= will_paginate @categories %> 15 | 16 | <%= render "sortable_list" %> 17 | 18 | <%= will_paginate @categories %> 19 | <% else %> 20 |21 | 22 | <%= t('.no_items_yet', :create => t('new', :scope => 'refinery.blog.admin.submenu.categories')) %> 23 | 24 |
25 | <% end %> 26 | <% end %> 27 |<%= t('search_no_results', :scope => 'admin') %>
16 | <% end %> 17 | <% else %> 18 | <% if @comments.any? %> 19 | <%= will_paginate @comments %> 20 | 21 | <%= render "sortable_list" %> 22 | 23 | <%= will_paginate @comments %> 24 | <% else %> 25 |4 | <%= t('.age') %>: <%= time_ago_in_words(@comment.created_at) %> 5 |
6 || 28 | <%= t('.blog_post') %> 29 | | 30 |31 | <%= link_to @comment.post.title, 32 | refinery.blog_post_path(@comment.post, :anchor => "comment-#{@comment.to_param}"), 33 | :target => '_blank' %> 34 | | 35 |
| 38 | <%= t('.from') %> 39 | | 40 |41 | <%= @comment.name %> [<%= mail_to @comment.email, @comment.email, {:title => t('.click_to_email')} %>] 42 | | 43 |
| 46 | <%= t('.date') %> 47 | | 48 |49 | <%= l(Date.parse(@comment.created_at.to_s), :format => :long) %> 50 | | 51 |
| 54 | <%= t('.message') %> 55 | | 56 |
57 | 58 | <%= @comment.message.gsub("\r\n\r\n", "\r\n").gsub("\r\n", " ") %> 59 | 60 | |
61 |