georgia_blog 0.7.3 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/app/controllers/georgia/blog/posts_controller.rb +29 -0
- data/app/decorators/georgia/blog/post_decorator.rb +6 -0
- data/app/decorators/georgia/blog/posts_decorator.rb +6 -0
- data/app/models/georgia/blog/post.rb +32 -0
- data/app/models/georgia/blog/post_data.rb +18 -0
- data/app/views/georgia/blog/posts/fields/_extra_fields.html.erb +38 -0
- data/app/views/georgia/header/_blog.html.erb +2 -2
- data/app/views/public_activity/georgia_blog_post/_copy.html.erb +1 -0
- data/app/views/public_activity/georgia_blog_post/_create.html.erb +1 -0
- data/app/views/public_activity/georgia_blog_post/_publish.html.erb +1 -0
- data/app/views/public_activity/georgia_blog_post/_unpublish.html.erb +1 -0
- data/app/views/public_activity/georgia_blog_post/_update.html.erb +1 -0
- data/config/routes.rb +3 -27
- data/db/migrate/001_create_georgia_blog_post_data.rb +10 -0
- data/db/migrate/002_add_author_to_georgia_blog_post_data.rb +6 -0
- data/lib/generators/georgia/blog/install/install_generator.rb +20 -0
- data/lib/georgia/blog/engine.rb +10 -0
- data/lib/georgia/blog/version.rb +5 -0
- data/lib/georgia_blog.rb +6 -4
- data/lib/tasks/georgia_blog_tasks.rake +18 -0
- metadata +26 -21
- data/app/controllers/georgia/posts_controller.rb +0 -12
- data/app/decorators/georgia/post_decorator.rb +0 -4
- data/app/decorators/georgia/posts_decorator.rb +0 -4
- data/app/models/georgia/post.rb +0 -19
- data/app/models/georgia/post_data.rb +0 -17
- data/app/views/georgia/posts/fields/_extra-fields.html.erb +0 -15
- data/db/migrate/001_create_georgia_post_data.rb +0 -10
- data/lib/georgia/indexer/extensions/solr_adapter/georgia/post.rb +0 -73
- data/lib/georgia/indexer/extensions/tire_adapter/georgia/post.rb +0 -57
- data/lib/georgia_blog/engine.rb +0 -8
- data/lib/georgia_blog/version.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 823b987e20ebeff992074bc98b59aca5ebed0581
|
4
|
+
data.tar.gz: 231b9eb74b5f3e6a5ca73c442e05d5cb9d13d503
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5582cf470673e0ed8c31496c822ae0076782d1d0ca1952dc4499dfd1006c59bc9f3ff6af71f93608bc21a5ee41dea21f2d30429370347b1d8d81c26745fc5c8
|
7
|
+
data.tar.gz: 15d584d89ac04b13290fd51e616301497286e38efee1ff1faee8ee588d11ed71a1e68aff38e01d1e3b2c4a2d560860ff0766c5f36475a99cbc4e631699f0c9cc
|
data/README.md
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
module Georgia
|
2
|
+
module Blog
|
3
|
+
class PostsController < Georgia::PagesController
|
4
|
+
|
5
|
+
before_filter :prepare_post_data, only: [:update, :settings]
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def prepare_post_data
|
10
|
+
@post_data ||= @page.build_post_data unless @page and @page.post_data
|
11
|
+
end
|
12
|
+
|
13
|
+
def sanitized_params
|
14
|
+
parsed_params = ParseJsonTags.new(post_params).call
|
15
|
+
parsed_params = ParseJsonTags.new(parsed_params, key: :category_list).call
|
16
|
+
parsed_params
|
17
|
+
end
|
18
|
+
|
19
|
+
def post_params
|
20
|
+
params.require(:page).permit(permitted_keys + extra_permitted_keys)
|
21
|
+
end
|
22
|
+
|
23
|
+
def extra_permitted_keys
|
24
|
+
[ :category_list, { post_data_attributes: [:published_at, :author_id] } ]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Georgia
|
2
|
+
module Blog
|
3
|
+
class Post < Georgia::Page
|
4
|
+
|
5
|
+
include Elasticsearch::Model
|
6
|
+
include Elasticsearch::Model::Callbacks
|
7
|
+
index_name "georgai-blog-posts-#{Rails.env}"
|
8
|
+
|
9
|
+
has_one :post_data, foreign_key: :post_id
|
10
|
+
accepts_nested_attributes_for :post_data
|
11
|
+
|
12
|
+
acts_as_taggable_on :categories
|
13
|
+
|
14
|
+
delegate :published_at, :month, :year, to: :post_data, prefix: false, allow_nil: true
|
15
|
+
|
16
|
+
scope :recent, -> { joins(:post_data).order("georgia_post_data.published_at DESC") }
|
17
|
+
scope :by_tag, -> (tags) { tagged_with(tags, on: :tags) }
|
18
|
+
scope :by_category, -> (categories) { tagged_with(categories, on: :categories) }
|
19
|
+
scope :not_postponed, -> (time) { joins(:post_data).where(["georgia_post_data.published_at <= ?", time]).order("georgia_post_data.published_at DESC") }
|
20
|
+
scope :by_year_and_month, -> (year, month) { joins(:post_data).where(["georgia_post_data.published_at >= ? AND georgia_post_data.published_at <= ?", Time.new(year, month), Time.new(year, month)+1.month]).order("georgia_post_data.published_at DESC") }
|
21
|
+
|
22
|
+
class << self
|
23
|
+
alias_method :latest, :recent
|
24
|
+
|
25
|
+
def policy_class
|
26
|
+
Georgia::PagePolicy
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Georgia
|
2
|
+
module Blog
|
3
|
+
class PostData < ActiveRecord::Base
|
4
|
+
|
5
|
+
belongs_to :post
|
6
|
+
belongs_to :author, class_name: Georgia::User
|
7
|
+
|
8
|
+
def month
|
9
|
+
@month ||= published_at.strftime('%B %Y') if published_at.present?
|
10
|
+
end
|
11
|
+
|
12
|
+
def year
|
13
|
+
@year ||= published_at.year if published_at.present?
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<fieldset>
|
2
|
+
<div class="fieldset-help">
|
3
|
+
<legend>Author</legend>
|
4
|
+
</div>
|
5
|
+
<div class="fieldset-fields">
|
6
|
+
<%= f.fields_for :post_data do |pd| %>
|
7
|
+
<%= pd.association :author, label: false %>
|
8
|
+
<% end -%>
|
9
|
+
</div>
|
10
|
+
</fieldset>
|
11
|
+
|
12
|
+
<fieldset>
|
13
|
+
<div class="fieldset-help">
|
14
|
+
<legend>Published Date</legend>
|
15
|
+
</div>
|
16
|
+
<div class="fieldset-fields">
|
17
|
+
<%= f.fields_for :post_data do |pd| %>
|
18
|
+
<div class='input-group date'>
|
19
|
+
<%= pd.input_field :published_at, as: :string, class: "form-control js-datepicker", data: {format: "DD-MM-YYYY HH:mm"}, value: pd.object.try(:published_at).try(:strftime, '%d-%m-%Y %H:%M') %>
|
20
|
+
<span class="input-group-addon">
|
21
|
+
<span class="fa fa-calendar"></span>
|
22
|
+
</span>
|
23
|
+
</div>
|
24
|
+
<% end -%>
|
25
|
+
</div>
|
26
|
+
</fieldset>
|
27
|
+
|
28
|
+
<fieldset>
|
29
|
+
<div class="fieldset-help">
|
30
|
+
<legend>
|
31
|
+
Categories
|
32
|
+
<%= tooltip_tag(icon_tag('info-circle'), "Categories can be used to group similar posts.") %>
|
33
|
+
</legend>
|
34
|
+
</div>
|
35
|
+
<div class="fieldset-fields">
|
36
|
+
<%= f.input :category_list, as: :text, label: false, input_html: {class: 'js-taggable', rows: 1} %>
|
37
|
+
</div>
|
38
|
+
</fieldset>
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<% if
|
2
|
-
<%= sidebar_navigation_link 'Blog', georgia.
|
1
|
+
<% if policy(Georgia::Blog::Post).index? %>
|
2
|
+
<%= sidebar_navigation_link 'Blog', georgia.search_blog_posts_url, controller: 'posts', icon: 'coffee' %>
|
3
3
|
<% end -%>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'public_activity/georgia_page/copy', activity: activity %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'public_activity/georgia_page/create', activity: activity %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'public_activity/georgia_page/publish', activity: activity %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'public_activity/georgia_page/unpublish', activity: activity %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'public_activity/georgia_page/update', activity: activity %>
|
data/config/routes.rb
CHANGED
@@ -1,33 +1,9 @@
|
|
1
1
|
Georgia::Engine.routes.draw do
|
2
2
|
|
3
|
-
|
3
|
+
Georgia::PageableRouteConcern.included(self)
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
post :sort
|
8
|
-
post :publish
|
9
|
-
post :unpublish
|
10
|
-
post 'flush-cache', to: :flush_cache, as: :flush_cache
|
11
|
-
delete '/', to: :destroy
|
12
|
-
end
|
13
|
-
|
14
|
-
member do
|
15
|
-
get :copy
|
16
|
-
get :settings
|
17
|
-
end
|
18
|
-
|
19
|
-
resources :revisions do
|
20
|
-
member do
|
21
|
-
get :preview
|
22
|
-
get :review
|
23
|
-
get :approve
|
24
|
-
get :store
|
25
|
-
get :decline
|
26
|
-
get :restore
|
27
|
-
end
|
28
|
-
end
|
5
|
+
namespace :blog do
|
6
|
+
resources :posts, concerns: [:pageable]
|
29
7
|
end
|
30
8
|
|
31
|
-
resources :posts, concerns: [:pageable]
|
32
|
-
|
33
9
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Georgia
|
2
|
+
module Blog
|
3
|
+
module Generators
|
4
|
+
class InstallGenerator < ::Rails::Generators::Base
|
5
|
+
|
6
|
+
def run_migrations
|
7
|
+
rake "railties:install:migrations"
|
8
|
+
rake "db:migrate"
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_index
|
12
|
+
Georgia::Blog::Post.__elasticsearch__.indices.delete! Georgia::Blog::Post.index_name rescue nil
|
13
|
+
Georgia::Blog::Post.__elasticsearch__.create_index! force: true
|
14
|
+
Georgia::Blog::Post.import
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/georgia_blog.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
require "
|
1
|
+
require "georgia/blog/engine"
|
2
2
|
|
3
|
-
module
|
3
|
+
module Georgia
|
4
|
+
module Blog
|
4
5
|
|
5
|
-
|
6
|
-
|
6
|
+
# Add to Georgia by default
|
7
|
+
Georgia.navigation += %w(blog)
|
7
8
|
|
9
|
+
end
|
8
10
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
namespace :georgia do
|
2
|
+
|
3
|
+
namespace :blog do
|
4
|
+
|
5
|
+
namespace :elasticsearch do
|
6
|
+
|
7
|
+
desc 'Setup ElasticSearch indices'
|
8
|
+
task setup: :environment do
|
9
|
+
Georgia::Blog::Post.__elasticsearch__.client.indices.delete index: Georgia::Blog::Post.index_name rescue nil
|
10
|
+
Georgia::Blog::Post.__elasticsearch__.create_index! force: true
|
11
|
+
Georgia::Blog::Post.import
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
metadata
CHANGED
@@ -1,32 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: georgia_blog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mathieu Gagné
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: georgia
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '0.8'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
description: Adds a blogging engine to
|
26
|
+
version: '0.8'
|
27
|
+
description: Adds a blogging engine to Georgia CMS system.
|
28
28
|
email:
|
29
|
-
- mathieu@motioneleven.com
|
30
29
|
- gagne.mathieu@hotmail.com
|
31
30
|
executables: []
|
32
31
|
extensions: []
|
@@ -35,21 +34,27 @@ files:
|
|
35
34
|
- MIT-LICENSE
|
36
35
|
- README.md
|
37
36
|
- Rakefile
|
38
|
-
- app/controllers/georgia/posts_controller.rb
|
39
|
-
- app/decorators/georgia/post_decorator.rb
|
40
|
-
- app/decorators/georgia/posts_decorator.rb
|
41
|
-
- app/models/georgia/post.rb
|
42
|
-
- app/models/georgia/post_data.rb
|
37
|
+
- app/controllers/georgia/blog/posts_controller.rb
|
38
|
+
- app/decorators/georgia/blog/post_decorator.rb
|
39
|
+
- app/decorators/georgia/blog/posts_decorator.rb
|
40
|
+
- app/models/georgia/blog/post.rb
|
41
|
+
- app/models/georgia/blog/post_data.rb
|
42
|
+
- app/views/georgia/blog/posts/fields/_extra_fields.html.erb
|
43
43
|
- app/views/georgia/header/_blog.html.erb
|
44
|
-
- app/views/
|
44
|
+
- app/views/public_activity/georgia_blog_post/_copy.html.erb
|
45
|
+
- app/views/public_activity/georgia_blog_post/_create.html.erb
|
46
|
+
- app/views/public_activity/georgia_blog_post/_publish.html.erb
|
47
|
+
- app/views/public_activity/georgia_blog_post/_unpublish.html.erb
|
48
|
+
- app/views/public_activity/georgia_blog_post/_update.html.erb
|
45
49
|
- config/routes.rb
|
46
|
-
- db/migrate/
|
47
|
-
-
|
48
|
-
- lib/georgia/
|
50
|
+
- db/migrate/001_create_georgia_blog_post_data.rb
|
51
|
+
- db/migrate/002_add_author_to_georgia_blog_post_data.rb
|
52
|
+
- lib/generators/georgia/blog/install/install_generator.rb
|
53
|
+
- lib/georgia/blog/engine.rb
|
54
|
+
- lib/georgia/blog/version.rb
|
49
55
|
- lib/georgia_blog.rb
|
50
|
-
- lib/
|
51
|
-
|
52
|
-
homepage: https://github.com/georgia-cms/georgia_blog
|
56
|
+
- lib/tasks/georgia_blog_tasks.rake
|
57
|
+
homepage: http://www.georgiacms.org
|
53
58
|
licenses:
|
54
59
|
- MIT
|
55
60
|
metadata: {}
|
@@ -69,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
74
|
version: '0'
|
70
75
|
requirements: []
|
71
76
|
rubyforge_project:
|
72
|
-
rubygems_version: 2.
|
77
|
+
rubygems_version: 2.4.5
|
73
78
|
signing_key:
|
74
79
|
specification_version: 4
|
75
80
|
summary: Blogging Engine - addon to Georgia
|
@@ -1,12 +0,0 @@
|
|
1
|
-
module Georgia
|
2
|
-
class PostsController < Georgia::PagesController
|
3
|
-
|
4
|
-
before_filter :prepare_post_data, only: [:update, :settings]
|
5
|
-
|
6
|
-
private
|
7
|
-
|
8
|
-
def prepare_post_data
|
9
|
-
@post_data ||= @page.build_post_data unless @page and @page.post_data
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
data/app/models/georgia/post.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Georgia
|
2
|
-
class Post < Georgia::Page
|
3
|
-
|
4
|
-
Georgia::Indexer.register_extension(:solr, Georgia::Post)
|
5
|
-
Georgia::Indexer.register_extension(:tire, Georgia::Post)
|
6
|
-
include Georgia::Indexer::Adapter
|
7
|
-
|
8
|
-
has_one :post_data, foreign_key: :post_id
|
9
|
-
accepts_nested_attributes_for :post_data
|
10
|
-
attr_accessible :post_data_attributes
|
11
|
-
|
12
|
-
delegate :published_at, :month, :year, to: :post_data, prefix: false, allow_nil: true
|
13
|
-
|
14
|
-
scope :recent, order("post_data.published_at DESC")
|
15
|
-
class << self
|
16
|
-
alias_method :latest, :recent
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Georgia
|
2
|
-
class PostData < ActiveRecord::Base
|
3
|
-
|
4
|
-
belongs_to :post
|
5
|
-
|
6
|
-
attr_accessible :published_at
|
7
|
-
|
8
|
-
def month
|
9
|
-
@month ||= published_at.strftime('%B %Y') if published_at.present?
|
10
|
-
end
|
11
|
-
|
12
|
-
def year
|
13
|
-
@year ||= published_at.year if published_at.present?
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<fieldset>
|
2
|
-
<div class="fieldset-help">
|
3
|
-
<legend>Published Date</legend>
|
4
|
-
</div>
|
5
|
-
<div class="fieldset-fields">
|
6
|
-
<%= f.fields_for :post_data do |pd| %>
|
7
|
-
<div class='input-group date'>
|
8
|
-
<%= pd.input_field :published_at, as: :string, class: "form-control js-datepicker", data: {format: "DD-MM-YYYY HH:mm"}, value: pd.object.try(:published_at).try(:strftime, '%d-%m-%Y %H:%M') %>
|
9
|
-
<span class="input-group-addon">
|
10
|
-
<span class="fa fa-calendar"></span>
|
11
|
-
</span>
|
12
|
-
</div>
|
13
|
-
<% end -%>
|
14
|
-
</div>
|
15
|
-
</fieldset>
|
@@ -1,73 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module Georgia
|
4
|
-
module Indexer
|
5
|
-
module SolrAdapter
|
6
|
-
module GeorgiaPostExtension
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
included do
|
10
|
-
searchable do
|
11
|
-
text :title, stored: true do
|
12
|
-
revisions.map{|r| r.contents.map(&:title)}.flatten.uniq.join(', ')
|
13
|
-
end
|
14
|
-
text :excerpt, stored: true do
|
15
|
-
revisions.map{|r| r.contents.map(&:excerpt)}.flatten.uniq.join(', ')
|
16
|
-
end
|
17
|
-
text :text do
|
18
|
-
revisions.map{|r| r.contents.map(&:text)}.flatten.uniq.join(', ')
|
19
|
-
end
|
20
|
-
text :keywords do
|
21
|
-
revisions.map{|r| r.contents.map(&:keyword_list)}.flatten.uniq.join(', ')
|
22
|
-
end
|
23
|
-
text :tags do
|
24
|
-
tag_list.join(', ')
|
25
|
-
end
|
26
|
-
text :url
|
27
|
-
text :template
|
28
|
-
string :title
|
29
|
-
string :excerpt
|
30
|
-
string :text
|
31
|
-
string :url
|
32
|
-
string :template
|
33
|
-
string :state do
|
34
|
-
public? ? 'public' : 'private'
|
35
|
-
end
|
36
|
-
string :class_name do
|
37
|
-
self.class.name
|
38
|
-
end
|
39
|
-
string :keywords, stored: true, multiple: true do
|
40
|
-
revisions.map{|r| r.contents.map(&:keyword_list)}.flatten.uniq
|
41
|
-
end
|
42
|
-
string :tag_list, stored: true, multiple: true # Array for facets
|
43
|
-
string :tags, stored: true do # Single list for ordering
|
44
|
-
tag_list.join(', ')
|
45
|
-
end
|
46
|
-
string :month, stored: true
|
47
|
-
string :year, stored: true
|
48
|
-
time :published_at
|
49
|
-
time :updated_at # default order
|
50
|
-
end
|
51
|
-
|
52
|
-
def self.search_index model, params
|
53
|
-
@search = model.search do
|
54
|
-
fulltext params[:query] do
|
55
|
-
fields(:title, :excerpt, :text, :keywords, :tags, :url, :template)
|
56
|
-
end
|
57
|
-
facet :state, :template, :tag_list, :month, :tags
|
58
|
-
with(:class_name, model.to_s)
|
59
|
-
with(:state, params[:s]) unless params[:s].blank?
|
60
|
-
with(:template, params[:t]) unless params[:t].blank?
|
61
|
-
with(:tag_list).all_of(params[:tg]) unless params[:tg].blank?
|
62
|
-
order_by (params[:o] || :updated_at), (params[:dir] || :desc)
|
63
|
-
paginate(page: params[:page], per_page: (params[:per] || 25))
|
64
|
-
with(:month, params[:m]) unless params[:m].blank?
|
65
|
-
with(:tags, params[:c]) unless params[:t].blank?
|
66
|
-
end.results
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module Georgia
|
4
|
-
module Indexer
|
5
|
-
module TireAdapter
|
6
|
-
module GeorgiaPostExtension
|
7
|
-
|
8
|
-
extend ActiveSupport::Concern
|
9
|
-
|
10
|
-
included do
|
11
|
-
|
12
|
-
include ::Tire::Model::Search
|
13
|
-
include ::Tire::Model::Callbacks
|
14
|
-
|
15
|
-
def to_indexed_json
|
16
|
-
keywords = current_revision.present? ? current_revision.contents.map(&:keyword_list).flatten.uniq.join(', ') : ""
|
17
|
-
tags = tag_list.join(', ')
|
18
|
-
class_name = self.class.name
|
19
|
-
|
20
|
-
indexed_hash = {
|
21
|
-
title: title,
|
22
|
-
text: text,
|
23
|
-
excerpt: excerpt,
|
24
|
-
keywords: keywords,
|
25
|
-
url: url,
|
26
|
-
template: template,
|
27
|
-
tags: tags,
|
28
|
-
tag_list: tag_list,
|
29
|
-
publish_state: publish_state,
|
30
|
-
class_name: class_name,
|
31
|
-
updated_at: updated_at.strftime('%F'),
|
32
|
-
revision_id: revision_id,
|
33
|
-
month: month,
|
34
|
-
year: year
|
35
|
-
}
|
36
|
-
indexed_hash.to_json
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.search_index params
|
40
|
-
search(page: (params[:page] || 1), per_page: (params[:per] || 25)) do
|
41
|
-
if params[:query].present?
|
42
|
-
query do
|
43
|
-
boolean do
|
44
|
-
must { string params[:query], default_operator: "AND" }
|
45
|
-
end
|
46
|
-
end
|
47
|
-
sort { by (params[:o] || :updated_at), (params[:dir] || :desc) }
|
48
|
-
end
|
49
|
-
end.results
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
data/lib/georgia_blog/engine.rb
DELETED
data/lib/georgia_blog/version.rb
DELETED