georgia_blog 0.7.3 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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