PixelForce_ComfyBlog 0.0.1

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 +7 -0
  2. data/.github/issue_template.md +22 -0
  3. data/.github/pull_request_template.md +6 -0
  4. data/.gitignore +16 -0
  5. data/.rubocop.yml +96 -0
  6. data/.travis.yml +21 -0
  7. data/CONTRIBUTING.md +32 -0
  8. data/Gemfile +27 -0
  9. data/LICENSE +20 -0
  10. data/README.md +42 -0
  11. data/Rakefile +5 -0
  12. data/app/controllers/comfy/admin/blog/posts_controller.rb +84 -0
  13. data/app/controllers/comfy/admin/blog/revisions/post_controller.rb +30 -0
  14. data/app/controllers/comfy/blog/posts_controller.rb +50 -0
  15. data/app/models/comfy/blog/post.rb +55 -0
  16. data/app/views/comfy/admin/blog/partials/_navigation.html.haml +4 -0
  17. data/app/views/comfy/admin/blog/posts/_form.html.haml +22 -0
  18. data/app/views/comfy/admin/blog/posts/edit.html.haml +9 -0
  19. data/app/views/comfy/admin/blog/posts/index.html.haml +37 -0
  20. data/app/views/comfy/admin/blog/posts/new.html.haml +5 -0
  21. data/app/views/comfy/blog/posts/index.html.haml +28 -0
  22. data/app/views/comfy/blog/posts/index.rss.builder +22 -0
  23. data/app/views/comfy/blog/posts/show.html.haml +8 -0
  24. data/app/views/layouts/comfy/blog/application.html.erb +22 -0
  25. data/bin/bundle +3 -0
  26. data/bin/rails +4 -0
  27. data/bin/rake +4 -0
  28. data/bin/setup +36 -0
  29. data/bin/update +31 -0
  30. data/bin/yarn +11 -0
  31. data/comfy_blog.gemspec +29 -0
  32. data/config.ru +6 -0
  33. data/config/application.rb +39 -0
  34. data/config/blog_routes.rb +8 -0
  35. data/config/boot.rb +7 -0
  36. data/config/database.yml +11 -0
  37. data/config/environment.rb +7 -0
  38. data/config/environments/development.rb +64 -0
  39. data/config/environments/test.rb +51 -0
  40. data/config/initializers/comfy_blog.rb +9 -0
  41. data/config/locales/ca.yml +38 -0
  42. data/config/locales/cs.yml +38 -0
  43. data/config/locales/da.yml +38 -0
  44. data/config/locales/de.yml +38 -0
  45. data/config/locales/en.yml +38 -0
  46. data/config/locales/es.yml +38 -0
  47. data/config/locales/fi.yml +38 -0
  48. data/config/locales/fr.yml +38 -0
  49. data/config/locales/gr.yml +38 -0
  50. data/config/locales/it.yml +38 -0
  51. data/config/locales/ja.yml +38 -0
  52. data/config/locales/nb.yml +38 -0
  53. data/config/locales/nl.yml +38 -0
  54. data/config/locales/pl.yml +38 -0
  55. data/config/locales/pt-BR.yml +38 -0
  56. data/config/locales/ru.yml +38 -0
  57. data/config/locales/sv.yml +38 -0
  58. data/config/locales/tr.yml +38 -0
  59. data/config/locales/uk.yml +38 -0
  60. data/config/locales/zh-CN.yml +38 -0
  61. data/config/locales/zh-TW.yml +38 -0
  62. data/config/storage.yml +35 -0
  63. data/db/migrate/00_create_cms.rb +167 -0
  64. data/db/migrate/01_create_blog.rb +24 -0
  65. data/lib/comfy_blog.rb +29 -0
  66. data/lib/comfy_blog/configuration.rb +24 -0
  67. data/lib/comfy_blog/engine.rb +32 -0
  68. data/lib/comfy_blog/routes/blog.rb +21 -0
  69. data/lib/comfy_blog/routes/blog_admin.rb +23 -0
  70. data/lib/comfy_blog/routing.rb +4 -0
  71. data/lib/comfy_blog/version.rb +7 -0
  72. data/lib/generators/comfy/blog/README +10 -0
  73. data/lib/generators/comfy/blog/blog_generator.rb +53 -0
  74. metadata +129 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 92a0968e7c5f3d75496e7fe2a29c95569c53a39f9079a872f37c95dd5b485f6d
4
+ data.tar.gz: 25431cac0a35ca13bdc00e16d5da9b3facd780c57c420dc0e975327e8602a897
5
+ SHA512:
6
+ metadata.gz: 19aa7d84d54363052a7732c459d74714ea772511158dbff02096f4fd7d388388f6fb3604a55fc9972f230674602ad379e91d390534b62e5f6f166eb93289c82f
7
+ data.tar.gz: 68c62325aa064a815b35600f89b493a87244ae83b1ef9d141ee3d4d5b8ddf51c2b07cd4cd4f350105c033715e8a971c2e594b60080a2b60bb9fbbd789e4c6673
@@ -0,0 +1,22 @@
1
+ *Note:* For general questions and feature requests please leave a message
2
+ on Gitter: https://gitter.im/comfy/comfortable-mexican-sofa
3
+
4
+ ### Expected behavior
5
+ Tell us what should happen
6
+
7
+ ### Actual behavior
8
+ Tell us what happens instead
9
+
10
+ ### Steps to reproduce
11
+ Things that help:
12
+
13
+ * Describe issue in detail.
14
+ * Add relevant code snippets.
15
+ * Create a failing test case.
16
+
17
+ ### System configuration
18
+ **Rails version**:
19
+
20
+ **CMS version**:
21
+
22
+ **Ruby version**:
@@ -0,0 +1,6 @@
1
+ ### Summary
2
+
3
+ General information about what this PR is all about. If it fixes any issues
4
+ please don't forget to tag them.
5
+
6
+ Thanks for contributing!
data/.gitignore ADDED
@@ -0,0 +1,16 @@
1
+ .bundle
2
+ db/*.sqlite3
3
+ log/*.log
4
+ tmp/**/*
5
+ .DS_Store
6
+ db/schema.rb
7
+ db/development_structure.sql
8
+ pkg
9
+ rdoc
10
+ /tmp
11
+ public/*
12
+ Gemfile.lock
13
+ .rvmrc
14
+ .ruby-version
15
+ /.sass-cache
16
+ coverage/
data/.rubocop.yml ADDED
@@ -0,0 +1,96 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.3
3
+ Exclude:
4
+ - bin/*
5
+ - db/schema.rb
6
+ - db/migrate/**/*
7
+ - test/fixtures/**/*
8
+ - tmp/**/*
9
+
10
+ # -- Performance ---------------------------------------------------------------
11
+ Performance/Casecmp:
12
+ Enabled: false
13
+
14
+ # -- Metrics -------------------------------------------------------------------
15
+ Metrics/PerceivedComplexity:
16
+ Enabled: false
17
+
18
+ Metrics/MethodLength:
19
+ Enabled: false
20
+
21
+ Metrics/MethodLength:
22
+ Enabled: false
23
+
24
+ Metrics/ParameterLists:
25
+ Enabled: false
26
+
27
+ Metrics/LineLength:
28
+ Max: 120
29
+
30
+ Metrics/CyclomaticComplexity:
31
+ Enabled: false
32
+
33
+ Metrics/ClassLength:
34
+ Enabled: false
35
+
36
+ Metrics/BlockLength:
37
+ Enabled: false
38
+
39
+ Metrics/AbcSize:
40
+ Enabled: false
41
+
42
+ # -- Layout --------------------------------------------------------------------
43
+ Layout/MultilineOperationIndentation:
44
+ Enabled: false
45
+
46
+ Layout/MultilineMethodCallIndentation:
47
+ EnforcedStyle: indented
48
+
49
+ Layout/MultilineHashBraceLayout:
50
+ Enabled: false
51
+
52
+ Layout/IndentArray:
53
+ EnforcedStyle: consistent
54
+
55
+ Layout/EmptyLinesAroundModuleBody:
56
+ EnforcedStyle: empty_lines_except_namespace
57
+
58
+ Layout/EmptyLinesAroundExceptionHandlingKeywords:
59
+ Enabled: false
60
+
61
+ Layout/EmptyLinesAroundClassBody:
62
+ EnforcedStyle: empty_lines_except_namespace
63
+
64
+ Layout/AlignParameters:
65
+ Enabled: false
66
+
67
+ Layout/AccessModifierIndentation:
68
+ EnforcedStyle: outdent
69
+
70
+ # -- Style ---------------------------------------------------------------------
71
+ Style/StringLiterals:
72
+ EnforcedStyle: double_quotes
73
+
74
+ Style/RegexpLiteral:
75
+ EnforcedStyle: percent_r
76
+
77
+ Style/Lambda:
78
+ EnforcedStyle: literal
79
+
80
+ Style/IfUnlessModifier:
81
+ Enabled: false
82
+
83
+ Style/GuardClause:
84
+ Enabled: false
85
+
86
+ Style/Documentation:
87
+ Enabled: false
88
+
89
+ Style/DateTime:
90
+ Enabled: false
91
+
92
+ Style/ClassAndModuleChildren:
93
+ Enabled: false
94
+
95
+ Style/AsciiComments:
96
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,21 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3.7
4
+ - 2.4.4
5
+ - 2.5.1
6
+ - ruby-head
7
+ gemfile:
8
+ - test/gemfiles/5.2.gemfile
9
+ branches:
10
+ only:
11
+ - master
12
+ before_install:
13
+ - gem update --system
14
+ - gem update bundler
15
+ script:
16
+ - bundle exec rake db:migrate
17
+ - bundle exec rake test
18
+ - bundle exec rubocop
19
+ matrix:
20
+ allow_failures:
21
+ - rvm: ruby-head
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,32 @@
1
+ # Contributing
2
+
3
+ Contribute your code to ComfyBlog in 5 easy steps:
4
+
5
+ ### 1. Fork it
6
+
7
+ Fork the project. Optionally, create a branch you want to work on.
8
+
9
+ ### 2. Get it running locally
10
+
11
+ - Install gem dependencies with `bundle install`
12
+ - There's nothing to configure, by default database is SQLite so it will be created for you.
13
+ Just run `rake db:migrate`
14
+ - Make sure that existing tests are passing by running `rake test`
15
+ - You should be able to start the app via `rails s` and navigate to http://localhost:3000/admin
16
+
17
+ ### 3. Hack away
18
+
19
+ - Create a few small pull requests instead of a humoungous one. I can merge small stuff faster.
20
+ - When adding new code just make sure it follows the same slyle as the existing code.
21
+ - Avoid adding 3rd party dependencies if you can.
22
+ - Tests please, but nothing complicated. UnitTest / Fixtures all the way. Make sure all tests pass.
23
+ - Run `bundle exec rubocop` and fix any issues raised.
24
+
25
+ ### 4. Make a pull request
26
+
27
+ - If you never done it before read this: https://help.github.com/articles/using-pull-requests
28
+ - When PR is submitted check if TravisCI ran all tests successfully and Rubocop didn't raise any issues
29
+
30
+ ### 5. Done!
31
+
32
+ If everything is good your changes will be merged into master branch. Eventually a new version of gem will be published.
data/Gemfile ADDED
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gemspec
6
+
7
+ # CMS has dependency on prerelease and Bundler chokes on it
8
+ gem "rails", "~> 5.2.0.rc1"
9
+
10
+ group :development, :test do
11
+ gem "byebug", "~> 10.0.0", platforms: %i[mri mingw x64_mingw]
12
+ gem "kaminari", "~> 1.1.1"
13
+ gem "puma", "~> 3.11.2"
14
+ gem "rubocop", "~> 0.55.0", require: false
15
+ gem "sqlite3", "~> 1.3.13"
16
+ end
17
+
18
+ group :development do
19
+ gem "listen", "~> 3.1.5"
20
+ gem "web-console", "~> 3.5.1"
21
+ end
22
+
23
+ group :test do
24
+ gem "coveralls", "~> 0.8.21", require: false
25
+ gem "mocha", "~> 1.3.0", require: false
26
+ gem "rails-controller-testing", "~> 1.0.2"
27
+ end
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2013-2018 Oleg Khabarov
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,42 @@
1
+ # ComfyBlog
2
+
3
+ ComfyBlog is a simple blog management engine for [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa)
4
+
5
+ [![Gem Version](https://img.shields.io/gem/v/comfy_blog.svg?style=flat)](http://rubygems.org/gems/comfy_blog)
6
+ [![Gem Downloads](https://img.shields.io/gem/dt/comfy_blog.svg?style=flat)](http://rubygems.org/gems/comfy_blog)
7
+ [![Build Status](https://img.shields.io/travis/comfy/comfy-blog.svg?style=flat)](https://travis-ci.org/comfy/comfy-blog)
8
+ [![Coverage Status](https://img.shields.io/coveralls/comfy/comfy-blog.svg?style=flat)](https://coveralls.io/r/comfy/comfy-blog?branch=master)
9
+ [![Gitter](https://badges.gitter.im/comfy/comfortable-mexican-sofa.svg)](https://gitter.im/comfy/comfortable-mexican-sofa)
10
+
11
+ ## Dependencies
12
+
13
+ Make sure that you have [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa) installed first.
14
+
15
+ ## Installation
16
+
17
+ Add gem definition to your Gemfile:
18
+
19
+ ```ruby
20
+ gem "comfy_blog", "~> 2.0.0"
21
+ ```
22
+
23
+ Then from the Rails project's root run:
24
+
25
+ bundle install
26
+ rails generate comfy:blog
27
+ rake db:migrate
28
+
29
+ Take a look inside your `config/routes.rb` file and you should see following lines there:
30
+
31
+ ```ruby
32
+ comfy_route :blog_admin, path: "admin"
33
+ comfy_route :blog, path: "blog"
34
+ ```
35
+
36
+ You should also find view templates in `/app/views/blog` folder. Feel free to adjust them as you see fit.
37
+
38
+ ![Admin Area Preview](/doc/preview.jpg)
39
+
40
+ ---
41
+
42
+ Copyright 2009-2018 Oleg Khabarov
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "config/application"
4
+
5
+ Rails.application.load_tasks
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Comfy::Admin::Blog::PostsController < Comfy::Admin::Cms::BaseController
4
+
5
+ before_action :build_post, only: %i[new create]
6
+ before_action :load_post, only: %i[edit update destroy]
7
+ before_action :authorize
8
+
9
+ def index
10
+ return redirect_to action: :new if @site.blog_posts.count.zero?
11
+
12
+ posts_scope = @site.blog_posts
13
+ .includes(:categories)
14
+ .for_category(params[:categories])
15
+ .order(published_at: :desc)
16
+ @posts = comfy_paginate(posts_scope)
17
+ end
18
+
19
+ def new
20
+ render
21
+ end
22
+
23
+ def create
24
+ @post.save!
25
+ flash[:success] = t(".created")
26
+ redirect_to action: :edit, id: @post
27
+
28
+ rescue ActiveRecord::RecordInvalid
29
+ flash.now[:danger] = t(".create_failure")
30
+ render action: :new
31
+ end
32
+
33
+ def edit
34
+ render
35
+ end
36
+
37
+ def update
38
+ @post.update_attributes!(post_params)
39
+ flash[:success] = t(".updated")
40
+ redirect_to action: :edit, id: @post
41
+
42
+ rescue ActiveRecord::RecordInvalid
43
+ flash.now[:danger] = t(".update_failure")
44
+ render action: :edit
45
+ end
46
+
47
+ def destroy
48
+ @post.destroy
49
+ flash[:success] = t(".deleted")
50
+ redirect_to action: :index
51
+ end
52
+
53
+ def form_fragments
54
+ @post = @site.blog_posts.find_by(id: params[:id]) || @site.blog_posts.new
55
+ @post.layout = @site.layouts.find_by(id: params[:layout_id])
56
+
57
+ render(
58
+ partial: "comfy/admin/cms/fragments/form_fragments",
59
+ locals: { record: @post, scope: :post },
60
+ layout: false
61
+ )
62
+ end
63
+
64
+ protected
65
+
66
+ def load_post
67
+ @post = @site.blog_posts.find(params[:id])
68
+ rescue ActiveRecord::RecordNotFound
69
+ flash[:danger] = t(".not_found")
70
+ redirect_to action: :index
71
+ end
72
+
73
+ def build_post
74
+ layout = (@site.blog_posts.order(:created_at).last.try(:layout) || @site.layouts.order(:created_at).first)
75
+ @post = @site.blog_posts.new(post_params)
76
+ @post.published_at ||= Time.zone.now
77
+ @post.layout ||= layout
78
+ end
79
+
80
+ def post_params
81
+ params.fetch(:post, {}).permit!
82
+ end
83
+
84
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Comfy::Admin::Blog::Revisions::PostController < Comfy::Admin::Cms::Revisions::BaseController
4
+
5
+ def show
6
+ @current_content = @record.fragments.each_with_object({}) do |b, c|
7
+ c[b.identifier] = b.content
8
+ end
9
+ @versioned_content = @record.fragments.each_with_object({}) do |b, c|
10
+ data = @revision.data["fragments_attributes"].detect { |r| r[:identifier] == b.identifier }
11
+ c[b.identifier] = data.try(:[], :content)
12
+ end
13
+
14
+ render "comfy/admin/cms/revisions/show"
15
+ end
16
+
17
+ private
18
+
19
+ def load_record
20
+ @record = @site.blog_posts.find(params[:blog_post_id])
21
+ rescue ActiveRecord::RecordNotFound
22
+ flash[:danger] = I18n.t("comfy.admin.cms.revisions.record_not_found")
23
+ redirect_to comfy_admin_blog_posts_path(@site)
24
+ end
25
+
26
+ def record_path
27
+ edit_comfy_admin_blog_post_path(@site, @record)
28
+ end
29
+
30
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Comfy::Blog::PostsController < Comfy::Cms::BaseController
4
+
5
+ include Comfy::Paginate
6
+
7
+ def index
8
+ scope =
9
+ if params[:year]
10
+ scope = @cms_site.blog_posts.published.for_year(params[:year])
11
+ params[:month] ? scope.for_month(params[:month]) : scope
12
+ else
13
+ @cms_site.blog_posts.published
14
+ end
15
+
16
+ scope = scope.for_category(params[:category]) if params[:category]
17
+ scope = scope.order(:published_at).reverse_order
18
+
19
+ @blog_posts = comfy_paginate(scope, per_page: ComfyBlog.config.posts_per_page)
20
+ render layout: ComfyBlog.config.app_layout
21
+ end
22
+
23
+ def show
24
+ load_post
25
+
26
+ render layout: app_layout
27
+
28
+ rescue ActiveRecord::RecordNotFound
29
+ render cms_page: "/404", status: 404
30
+ end
31
+
32
+ private
33
+
34
+ def load_post
35
+ post_scope = @cms_site.blog_posts.published.where(slug: params[:slug])
36
+ @cms_post =
37
+ if params[:year] && params[:month]
38
+ post_scope.where(year: params[:year], month: params[:month]).first!
39
+ else
40
+ post_scope.first!
41
+ end
42
+ @cms_layout = @cms_post.layout
43
+ end
44
+
45
+ def app_layout
46
+ return false unless @cms_layout
47
+ @cms_layout.app_layout.present? ? @cms_layout.app_layout : false
48
+ end
49
+
50
+ end