georgia 0.7.6 → 0.7.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/images/georgia/content-types/jpeg.jpg +0 -0
- data/app/assets/javascripts/georgia/components/portlets/slide.js.coffee +2 -0
- data/app/controllers/georgia/api/media_controller.rb +2 -7
- data/app/controllers/georgia/api/tags_controller.rb +3 -7
- data/app/controllers/georgia/application_controller.rb +1 -1
- data/app/controllers/georgia/concerns/frontendable.rb +16 -8
- data/app/controllers/georgia/media_controller.rb +1 -1
- data/app/controllers/georgia/revisions_controller.rb +6 -1
- data/app/controllers/georgia/slides_controller.rb +1 -1
- data/app/decorators/georgia/content_decorator.rb +9 -0
- data/app/helpers/georgia/internationalization_helper.rb +13 -0
- data/app/helpers/georgia/pages_helper.rb +8 -0
- data/app/helpers/georgia/ui_helper.rb +0 -8
- data/app/models/georgia/concerns/contentable.rb +2 -2
- data/app/models/georgia/concerns/slugable.rb +2 -0
- data/app/models/georgia/widget.rb +3 -3
- data/app/presenters/georgia/page_actions_presenter.rb +2 -4
- data/app/views/georgia/ckeditor/pictures/_picture.html.erb +1 -1
- data/app/views/georgia/revisions/edit.html.erb +2 -2
- data/app/views/georgia/revisions/fields/_content.html.erb +1 -14
- data/app/views/georgia/slides/new.html.erb +1 -1
- data/app/views/georgia/widgets/_widget.html.erb +4 -3
- data/app/views/georgia/widgets/index.html.erb +2 -0
- data/lib/georgia.rb +0 -1
- data/lib/georgia/engine.rb +2 -0
- data/lib/georgia/indexer.rb +6 -36
- data/lib/georgia/indexer/adapter.rb +44 -0
- data/lib/georgia/indexer/extensions/solr_adapter/acts_as_taggable_on/tag.rb +9 -0
- data/lib/georgia/indexer/extensions/tire_adapter/{acts_as_taggable_on_tag.rb → acts_as_taggable_on/tag.rb} +1 -1
- data/lib/georgia/indexer/extensions/tire_adapter/ckeditor/asset.rb +53 -0
- data/lib/georgia/indexer/extensions/tire_adapter/{georgia_page.rb → georgia/page.rb} +3 -3
- data/lib/georgia/indexer/solr_adapter.rb +9 -4
- data/lib/georgia/indexer/tire_adapter.rb +10 -9
- data/lib/georgia/version.rb +1 -1
- data/lib/tasks/assets.rake +0 -86
- data/lib/tasks/solr.rake +0 -9
- metadata +307 -307
- data/lib/georgia/assets.rb +0 -8
- data/lib/georgia/assets/cloud_files_connection.rb +0 -22
- data/lib/georgia/assets/transferable_picture.rb +0 -51
- data/lib/georgia/indexer/extensions/tire_adapter/ckeditor_asset.rb +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2c023563b6dd7111d22f5caf701b495c27bbeaf
|
4
|
+
data.tar.gz: 2bebca43c34b00820ce9ec89ddcb25bc088c9aff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14d7799b3912e204652a67a1f53b9c75ad63c3d8303927d0a0d272ba8abd858d2c82649beb6e3ac44023a07bc71ef8077bce9a7ac320fea651c637191d10e8c8
|
7
|
+
data.tar.gz: 64a18a2521039fb0ee834dc89781f8d104a92833c0322f7baeb96b0d7d3e7011478f7613edd4911fc3fecfd8eef8ce440e379b9440d1c046127be4d25a39d9c9
|
Binary file
|
@@ -3,13 +3,8 @@ module Georgia
|
|
3
3
|
class MediaController < Georgia::ApplicationController
|
4
4
|
|
5
5
|
def pictures
|
6
|
-
@
|
7
|
-
|
8
|
-
fields(:filename, :tags)
|
9
|
-
end
|
10
|
-
paginate(page: params[:page], per_page: (params[:per] || 12))
|
11
|
-
end
|
12
|
-
@pictures = @search.results
|
6
|
+
@pictures = Georgia::Indexer.search(Ckeditor::Picture, params.merge(per: 12))
|
7
|
+
@pictures = Ckeditor::PictureDecorator.decorate_collection(@pictures)
|
13
8
|
render layout: false
|
14
9
|
end
|
15
10
|
|
@@ -6,14 +6,10 @@ module Georgia
|
|
6
6
|
respond_to :json
|
7
7
|
|
8
8
|
def search
|
9
|
-
@
|
10
|
-
|
11
|
-
fields(:name)
|
12
|
-
end
|
13
|
-
paginate(page: 1, per_page: 10)
|
14
|
-
end
|
9
|
+
@tags = Georgia::Indexer.search(ActsAsTaggableOn::Tag, params)
|
10
|
+
|
15
11
|
# Format for select2
|
16
|
-
@tags = @
|
12
|
+
@tags = @tags.map{|t| {id: t.id, text: t.name}}
|
17
13
|
|
18
14
|
respond_with(results: @tags)
|
19
15
|
end
|
@@ -13,21 +13,29 @@ module Georgia
|
|
13
13
|
# Loads the page according to request url
|
14
14
|
# Restore the latest published revision of the given page
|
15
15
|
def show
|
16
|
-
|
17
|
-
|
16
|
+
if preview?
|
17
|
+
prepare_preview
|
18
|
+
else
|
19
|
+
@page = Georgia::Page.from_url(params[:request_path]).published.first || not_found
|
20
|
+
@page = Georgia::PageDecorator.decorate(@page)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
|
26
|
+
def preview?
|
27
|
+
params[:r].present?
|
18
28
|
end
|
19
29
|
|
20
30
|
# Loads the page according to given id
|
21
31
|
# Temporarily set the given revision to preview as the 'current_revision'
|
22
|
-
def
|
23
|
-
@page = Georgia::Page.
|
24
|
-
@page
|
32
|
+
def prepare_preview
|
33
|
+
@page = Georgia::Page.from_url(params[:request_path]).first || not_found
|
34
|
+
@page = Georgia::PageDecorator.decorate(@page)
|
35
|
+
@page.current_revision = Georgia::Revision.find(params[:r])
|
25
36
|
authorize! :preview, @page
|
26
|
-
render :show
|
27
37
|
end
|
28
38
|
|
29
|
-
protected
|
30
|
-
|
31
39
|
# Triggers a 404 page not found
|
32
40
|
# Use when provided url doesn't match any the Georgia::Pages
|
33
41
|
def not_found
|
@@ -11,7 +11,7 @@ module Georgia
|
|
11
11
|
|
12
12
|
def search
|
13
13
|
@asset = Ckeditor::Asset.new
|
14
|
-
@results = Georgia::Indexer.
|
14
|
+
@results = Georgia::Indexer.search(Ckeditor::Asset, params)
|
15
15
|
@assets = Ckeditor::AssetDecorator.decorate_collection(@results)
|
16
16
|
end
|
17
17
|
|
@@ -38,7 +38,7 @@ module Georgia
|
|
38
38
|
# Sends revision to main_app router
|
39
39
|
# FIXME: bypass this once Georgia will be loaded on root
|
40
40
|
def preview
|
41
|
-
redirect_to
|
41
|
+
redirect_to preview_url
|
42
42
|
end
|
43
43
|
|
44
44
|
def review
|
@@ -81,11 +81,16 @@ module Georgia
|
|
81
81
|
else
|
82
82
|
@content = @revision.content
|
83
83
|
end
|
84
|
+
@content = Georgia::ContentDecorator.decorate(@content)
|
84
85
|
end
|
85
86
|
|
86
87
|
def notify(message, url)
|
87
88
|
Notifier.notify_admins(message, url).deliver
|
88
89
|
end
|
89
90
|
|
91
|
+
def preview_url
|
92
|
+
"#{@page.decorate.url}?r=#{@revision.id}"
|
93
|
+
end
|
94
|
+
|
90
95
|
end
|
91
96
|
end
|
@@ -13,6 +13,19 @@ module Georgia
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
def link_to_available_locales
|
17
|
+
return unless I18n.available_locales.any?
|
18
|
+
links = I18n.available_locales.map do |locale|
|
19
|
+
content_tag(:li, link_to(t("georgia.#{locale}"), locale: locale ))
|
20
|
+
end
|
21
|
+
content_tag(:p, class: 'hint') do
|
22
|
+
content_tag(:div, class: 'dropdown') do
|
23
|
+
link_to("Change language <span class='caret'></span>".html_safe, '#', class: 'btn btn-warning', data: {toggle: 'dropdown'}, role: :button) +
|
24
|
+
content_tag(:ul, links.join('').html_safe, class: 'dropdown-menu', role: 'menu')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
16
29
|
protected
|
17
30
|
|
18
31
|
def link_to_locale_list html_options
|
@@ -18,5 +18,13 @@ module Georgia
|
|
18
18
|
Georgia::WarningMessage.new(self, page, revision, options)
|
19
19
|
end
|
20
20
|
|
21
|
+
def picture_tag picture, options={}
|
22
|
+
return unless picture and picture.url.present?
|
23
|
+
format = options.fetch(:format, :tiny)
|
24
|
+
link_to picture.url_content, class: 'media-link bg-transparent', rel: 'shadowbox[gallery]' do
|
25
|
+
image_tag(picture.url(format), title: picture.data_file_name, class: 'media-image')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
21
29
|
end
|
22
30
|
end
|
@@ -22,14 +22,6 @@ module Georgia
|
|
22
22
|
content_tag :div, icon_tag('spinner fa-spin fa-4x'), options
|
23
23
|
end
|
24
24
|
|
25
|
-
def picture_tag picture, options={}
|
26
|
-
return unless picture and picture.url.present?
|
27
|
-
format = options.fetch(:format, :tiny)
|
28
|
-
link_to picture.url_content, class: 'media-link bg-transparent', rel: 'shadowbox[gallery]' do
|
29
|
-
image_tag(picture.url(format), title: picture.data_file_name, class: 'media-image')
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
25
|
def link_to_back url=:back
|
34
26
|
link_to icon_tag('level-up fa-rotate-270'), url, class: 'btn btn-back'
|
35
27
|
end
|
@@ -10,11 +10,11 @@ module Georgia
|
|
10
10
|
accepts_nested_attributes_for :contents
|
11
11
|
attr_accessible :contents_attributes
|
12
12
|
|
13
|
-
scope :with_locale, lambda {|locale| joins(:contents).where(georgia_contents: {locale: locale})}
|
13
|
+
scope :with_locale, lambda {|locale| joins(:contents).where(georgia_contents: {locale: locale}).uniq}
|
14
14
|
|
15
15
|
def content(locale=nil)
|
16
16
|
locale ||= I18n.locale.to_s
|
17
|
-
@content ||= contents.select{|c| c.locale == locale}.first || Georgia::Content.new
|
17
|
+
@content ||= contents.select{|c| c.locale == locale}.first || Georgia::Content.new(locale: locale)
|
18
18
|
end
|
19
19
|
|
20
20
|
delegate :title, :text, :excerpt, :keywords, :keyword_list, :image, :locale, to: :content
|
@@ -14,6 +14,8 @@ module Georgia
|
|
14
14
|
before_validation :sanitize_slug
|
15
15
|
after_save :update_url
|
16
16
|
|
17
|
+
scope :from_url, -> (path) { where(url: "/#{path}").includes(current_revision: :contents) }
|
18
|
+
|
17
19
|
# Must stay public for #update_url on descendants
|
18
20
|
def set_url
|
19
21
|
self.update_column(:url, '/' + self.ancestry_url)
|
@@ -8,9 +8,9 @@ module Georgia
|
|
8
8
|
has_many :revisions, through: :ui_associations
|
9
9
|
has_many :pages, through: :revisions
|
10
10
|
|
11
|
-
scope :footer, joins(:ui_sections).where(georgia_ui_sections: {name: 'Footer'})
|
12
|
-
scope :submenu, joins(:ui_sections).where(georgia_ui_sections: {name: 'Submenu'})
|
13
|
-
scope :sidebar, joins(:ui_sections).where(georgia_ui_sections: {name: 'Sidebar'})
|
11
|
+
scope :footer, joins(:ui_sections).where(georgia_ui_sections: {name: 'Footer'}).uniq
|
12
|
+
scope :submenu, joins(:ui_sections).where(georgia_ui_sections: {name: 'Submenu'}).uniq
|
13
|
+
scope :sidebar, joins(:ui_sections).where(georgia_ui_sections: {name: 'Sidebar'}).uniq
|
14
14
|
|
15
15
|
validate :content_presence
|
16
16
|
|
@@ -23,10 +23,8 @@ module Georgia
|
|
23
23
|
# html << content_tag(:li, link_to_settings) if can?(:settings, page)
|
24
24
|
html << content_tag(:li, link_to_preview) if can?(:preview, page)
|
25
25
|
html << content_tag(:li, link_to_copy) if can?(:copy, page)
|
26
|
-
if page
|
27
|
-
|
28
|
-
html << content_tag(:li, link_to_unpublish) if can?(:unpublish, page) and page.published?
|
29
|
-
end
|
26
|
+
html << content_tag(:li, link_to_publish) if can?(:publish, page) and !page.published?
|
27
|
+
html << content_tag(:li, link_to_unpublish) if can?(:unpublish, page) and page.published?
|
30
28
|
html << content_tag(:li, link_to_flush_cache) if can?(:flush_cache, page)
|
31
29
|
html << content_tag(:li, link_to_revisions) if can?(:index, Revision)
|
32
30
|
html
|
@@ -21,6 +21,6 @@
|
|
21
21
|
<span class="badge" title="Featured in <%= pluralize(picture.pages.length, 'page') %>"><%= picture.pages.length %></span>
|
22
22
|
</td>
|
23
23
|
<td class='timestamp'>
|
24
|
-
<em><%= picture.
|
24
|
+
<em><%= picture.pretty_updated_at %></em>
|
25
25
|
</td>
|
26
26
|
</tr>
|
@@ -1,13 +1,13 @@
|
|
1
1
|
<%= simple_form_for @revision, as: :revision, url: [@page.becomes(Georgia::Page), @revision], html: {class: 'form-with-helpers js-spin-and-roll js-revision-form'}, defaults: { input_html: { class: "form-control" } } do |f| %>
|
2
2
|
<%= f.simple_fields_for :contents, @content do |c| %>
|
3
|
-
<%= c.hidden_field :locale %>
|
3
|
+
<%= c.hidden_field :locale, data: {locale: current_locale} %>
|
4
4
|
<header class='header-main'>
|
5
5
|
<div class="header-gutter">
|
6
6
|
<%= link_to_back search_pages_path %>
|
7
7
|
</div>
|
8
8
|
<div class="header-title">
|
9
9
|
<h1>
|
10
|
-
<%= link_to
|
10
|
+
<%= link_to @content.title_or_none, '#', class: 'title-truncated' %>
|
11
11
|
<%= icon_tag 'pencil' %>
|
12
12
|
</h1>
|
13
13
|
<%= c.input_field :title, class: 'input-lg form-control', placeholder: 'Title' %>
|
@@ -1,20 +1,7 @@
|
|
1
1
|
<fieldset>
|
2
2
|
<div class="fieldset-help">
|
3
3
|
<legend>Content</legend>
|
4
|
-
|
5
|
-
<p class="hint">
|
6
|
-
<div class='dropdown'>
|
7
|
-
<%= link_to '#', class: 'btn btn-warning', data: {toggle: 'dropdown'}, role: :button do %>
|
8
|
-
Change language <span class="caret"></span>
|
9
|
-
<% end -%>
|
10
|
-
<ul class="dropdown-menu" role="menu">
|
11
|
-
<% I18n.available_locales.each do |locale| %>
|
12
|
-
<li><%= link_to t("georgia.#{locale}"), edit_page_revision_path(@page, @revision, locale: locale) %></li>
|
13
|
-
<% end -%>
|
14
|
-
</ul>
|
15
|
-
</div>
|
16
|
-
</p>
|
17
|
-
<% end -%>
|
4
|
+
<%= link_to_available_locales %>
|
18
5
|
</div>
|
19
6
|
<div class="fieldset-fields">
|
20
7
|
<%= warning_message(@page, @revision) %>
|
@@ -1 +1 @@
|
|
1
|
-
<%= slide_portlet_tag(@slide, content: @
|
1
|
+
<%= slide_portlet_tag(@slide, content: @content) %>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<div class="col-md-3 js-widget">
|
2
2
|
<div class="widget">
|
3
3
|
<div class="widget-show">
|
4
|
-
<div class="widget-header"><h4 class='widget-title--ellipsed'><%= widget.title %></h4></div>
|
5
|
-
<div class="widget-content"><%= widget.text %></div>
|
4
|
+
<div class="widget-header"><h4 class='widget-title--ellipsed'><%= widget.content(current_locale).title %></h4></div>
|
5
|
+
<div class="widget-content"><%= widget.content(current_locale).text %></div>
|
6
6
|
<div class="widget-footer">
|
7
7
|
<% if widget.featured? %>
|
8
8
|
<div class="widget-featured">
|
@@ -15,7 +15,8 @@
|
|
15
15
|
</div>
|
16
16
|
<div class="widget-form hide">
|
17
17
|
<%= simple_form_for widget, remote: true, html: {class: 'js-spin-and-roll'} do |f| %>
|
18
|
-
<%= f.simple_fields_for :contents, widget.content do |c| %>
|
18
|
+
<%= f.simple_fields_for :contents, widget.content(current_locale) do |c| %>
|
19
|
+
<%= c.input :locale, as: :hidden %>
|
19
20
|
<div class="widget-header">
|
20
21
|
<div class="widget-title">
|
21
22
|
<%= c.input_field :title, class: 'form-control' %>
|
data/lib/georgia.rb
CHANGED
data/lib/georgia/engine.rb
CHANGED
data/lib/georgia/indexer.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'active_support/concern'
|
2
|
+
require 'georgia/indexer/adapter'
|
2
3
|
|
3
4
|
module Georgia
|
4
5
|
module Indexer
|
@@ -14,50 +15,19 @@ module Georgia
|
|
14
15
|
adapter.search model, params
|
15
16
|
end
|
16
17
|
|
18
|
+
def self.register_extension indexer, klass
|
19
|
+
return unless indexer == Georgia.indexer
|
20
|
+
Adapter.load_extension(klass)
|
21
|
+
end
|
22
|
+
|
17
23
|
private
|
18
24
|
|
19
25
|
def self.adapter_lookup
|
20
26
|
@adapter_lookup ||= (case Georgia.indexer
|
21
27
|
when :solr then SolrAdapter
|
22
28
|
when :tire then TireAdapter
|
23
|
-
else
|
24
|
-
TireAdapter
|
25
29
|
end)
|
26
30
|
end
|
27
31
|
|
28
|
-
module Adapter
|
29
|
-
|
30
|
-
class << self
|
31
|
-
def included(klass)
|
32
|
-
extension = Extension.new(klass)
|
33
|
-
begin
|
34
|
-
require extension.path
|
35
|
-
klass.send(:include, extension.name)
|
36
|
-
rescue => ex
|
37
|
-
raise "No extension for the #{Georgia.indexer} indexer: #{ex.message}"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
class Extension
|
42
|
-
def initialize klass
|
43
|
-
@klass = klass
|
44
|
-
end
|
45
|
-
|
46
|
-
def name
|
47
|
-
name = @klass.to_s.gsub('::', '') + 'Extension'
|
48
|
-
"#{Georgia::Indexer.adapter}::#{name}".constantize
|
49
|
-
end
|
50
|
-
|
51
|
-
def path
|
52
|
-
"georgia/indexer/extensions/#{Georgia.indexer}_adapter/#{filename}"
|
53
|
-
end
|
54
|
-
|
55
|
-
def filename
|
56
|
-
@klass.to_s.underscore
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
32
|
end
|
63
33
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Georgia
|
2
|
+
module Indexer
|
3
|
+
module Adapter
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def included(klass)
|
8
|
+
load_extension(klass)
|
9
|
+
end
|
10
|
+
|
11
|
+
def load_extension(klass)
|
12
|
+
extension = Extension.new(klass)
|
13
|
+
begin
|
14
|
+
require extension.path
|
15
|
+
klass.send(:include, extension.name)
|
16
|
+
rescue => ex
|
17
|
+
raise "No extension for the #{Georgia.indexer} indexer: #{ex.message}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class Extension
|
22
|
+
|
23
|
+
def initialize klass
|
24
|
+
@klass = klass
|
25
|
+
end
|
26
|
+
|
27
|
+
def name
|
28
|
+
name = @klass.to_s.gsub('::', '') + 'Extension'
|
29
|
+
"#{Georgia::Indexer.adapter}::#{name}".constantize
|
30
|
+
end
|
31
|
+
|
32
|
+
def path
|
33
|
+
"georgia/indexer/extensions/#{Georgia.indexer}_adapter/#{filename}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def filename
|
37
|
+
@klass.to_s.underscore
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|