georgia 0.7.5 → 0.7.6

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.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -2
  3. data/app/controllers/georgia/dashboard_controller.rb +2 -2
  4. data/app/controllers/georgia/revisions_controller.rb +2 -0
  5. data/app/decorators/georgia/application_decorator.rb +15 -0
  6. data/app/models/acts_as_taggable_on/tag.rb +0 -4
  7. data/app/models/ckeditor/asset.rb +0 -4
  8. data/app/models/georgia/concerns/contentable.rb +5 -2
  9. data/app/models/georgia/page.rb +0 -5
  10. data/app/views/georgia/pages/_page.html.erb +1 -1
  11. data/app/views/georgia/revisions/fields/_slides.html.erb +2 -2
  12. data/app/views/georgia/slides/new.html.erb +1 -1
  13. data/lib/generators/georgia/install/install_generator.rb +10 -2
  14. data/lib/generators/georgia/views/templates/app/views/pages/show.html.erb +7 -0
  15. data/lib/generators/georgia/views/templates/app/views/pages/templates/_default.html.erb +1 -0
  16. data/lib/generators/georgia/views/templates/app/views/pages/templates/_one-column.html.erb +1 -0
  17. data/lib/generators/georgia/views/templates/app/views/pages/templates/_sidebar-left.html.erb +24 -0
  18. data/lib/generators/georgia/views/templates/app/views/pages/templates/_sidebar-right.html.erb +24 -0
  19. data/lib/generators/georgia/views/views_generator.rb +17 -0
  20. data/lib/georgia/engine.rb +1 -0
  21. data/lib/georgia/indexer.rb +32 -13
  22. data/lib/georgia/indexer/extensions/solr_adapter/{acts_as_taggable_on_tag.rb → acts_as_taggable_on/tag.rb} +1 -1
  23. data/lib/georgia/indexer/extensions/solr_adapter/{ckeditor_asset.rb → ckeditor/asset.rb} +1 -1
  24. data/lib/georgia/indexer/extensions/solr_adapter/{georgia_page.rb → georgia/page.rb} +1 -1
  25. data/lib/georgia/indexer/solr_adapter.rb +4 -5
  26. data/lib/georgia/indexer/tire_adapter.rb +4 -2
  27. data/lib/georgia/version.rb +1 -1
  28. data/lib/tasks/georgia.rake +0 -15
  29. metadata +11 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4227bcee7bf428523ca796ad7b3bcb89d16b85c
4
- data.tar.gz: fcaa610998dfcb51fb2429ac828b4efd15ce718e
3
+ metadata.gz: 3e6ad208668a7070cb8265fbac2fd21e2216df43
4
+ data.tar.gz: e003d41f4e19d141fcfcb5629335744a5b9eb205
5
5
  SHA512:
6
- metadata.gz: 3eeb73c3ff21b760a31b29b36fab8af91f4e9d06ca98febb45ba09e3728922ab8e8c9a71b8b4194d0a98dcb97c8836e2a98099c87b6955e2234dc61e922bcb8c
7
- data.tar.gz: 166b5c173ebcfae295010b9e114d9d5b1602a6c0f5841ab8f023b487c702e88b41191811021d644ae0706c6d193a2e9c3b4cb4cac22e07f97fd7ee0373131580
6
+ metadata.gz: 4c54848250467dc0896fe3be6077a8082e586c4f69bd262f40891d3eb08a811674fff7bb879407895f4baddb0999ae9e63215c0b99977429ca574030b6d03ab3
7
+ data.tar.gz: 15734547e9bfa5631ef996570349ce563b2fe70c36ff6ad31fc1770403c614a0b7cb7532649905e977ca52809a5659c13d11d686194b52c32c846554f1f95234
data/README.md CHANGED
@@ -29,7 +29,6 @@ Rails. Engine. CMS. Plug-and-play content management system for Ruby on Rails. H
29
29
  * Because it's prettier.
30
30
  * Because the guys on refinerycms did a great job and you should check them out.
31
31
  * Because it's easy to start a website and push to Heroku.
32
- * Rails 4 compatible.. almost.
33
32
 
34
33
  ### Getting started
35
34
 
@@ -43,6 +42,10 @@ Then run the generator to mount routes, run migrations & setup initial instances
43
42
 
44
43
  rails generate georgia:install
45
44
 
45
+ We built Georgia to help you quickly develop an application with a CMS (Content Management System). However, we don't want to be in your way when you need to customize it.
46
+
47
+ rails generate georgia:views
48
+
46
49
  Start your server (`rails server`) and go to [http://localhost:3000/admin](http://localhost:3000/admin) to get started.
47
50
 
48
51
  ### Heroku
@@ -56,9 +59,13 @@ Add `config/initializers/bonsai.rb` with:
56
59
 
57
60
  ENV['ELASTICSEARCH_URL'] = ENV['BONSAI_URL']
58
61
 
59
- Finally, create your indices with these commands:
62
+ Create your indices with these commands:
60
63
 
61
64
  heroku run rake environment tire:import CLASS=Georgia::Page FORCE=true
62
65
  heroku run rake environment tire:import CLASS=Ckeditor::Asset FORCE=true
63
66
 
67
+ Finally, create your first admin user to access to web panel:
68
+
69
+ heroku run rake georgia:seed
70
+
64
71
  For more information, you can also follow these [instructions](https://gist.github.com/nz/2041121) to setup bonsai.io. More [here](https://devcenter.heroku.com/articles/bonsai) on heroku.com
@@ -6,8 +6,8 @@ module Georgia
6
6
  @awaiting_revisions = Georgia::Revision.reviews.select{|r| r.revisionable.present?}
7
7
  end
8
8
  if defined? GeorgiaMailer::Message
9
- if can?(:index, Georgia::Message)
10
- @messages = Georgia::Message.ham.latest.limit(5).decorate
9
+ if can?(:index, GeorgiaMailer::Message)
10
+ @messages = GeorgiaMailer::Message.ham.latest.limit(5).decorate
11
11
  end
12
12
  end
13
13
  end
@@ -16,6 +16,8 @@ module Georgia
16
16
  end
17
17
 
18
18
  def edit
19
+ locale = params.fetch(:locale, current_locale)
20
+ @slides = @revision.slides.ordered.with_locale(locale)
19
21
  @ui_sections = Georgia::UiSection.all
20
22
  end
21
23
 
@@ -2,5 +2,20 @@ module Georgia
2
2
  class ApplicationDecorator < Draper::Decorator
3
3
  delegate_all
4
4
 
5
+
6
+ def pretty_created_at
7
+ prettify_date(created_at)
8
+ end
9
+
10
+ def pretty_updated_at
11
+ prettify_date(updated_at)
12
+ end
13
+
14
+ private
15
+
16
+ def prettify_date date
17
+ date.is_a?(String) ? date : date.try(:strftime, '%F')
18
+ end
19
+
5
20
  end
6
21
  end
@@ -1,9 +1,5 @@
1
1
  ActsAsTaggableOn::Tag.class_eval do
2
2
 
3
3
  include Georgia::Indexer::Adapter
4
- is_searchable({
5
- solr: Georgia::Indexer::SolrAdapter::ActsAsTaggableOnTagExtension,
6
- tire: Georgia::Indexer::TireAdapter::ActsAsTaggableOnTagExtension,
7
- })
8
4
 
9
5
  end
@@ -1,10 +1,6 @@
1
1
  class Ckeditor::Asset < ActiveRecord::Base
2
2
 
3
3
  include Georgia::Indexer::Adapter
4
- is_searchable({
5
- solr: Georgia::Indexer::SolrAdapter::CkeditorAssetExtension,
6
- tire: Georgia::Indexer::TireAdapter::CkeditorAssetExtension,
7
- })
8
4
 
9
5
  # to allow media_path in to_jq_upload
10
6
  include Georgia::Engine.routes.url_helpers
@@ -10,8 +10,11 @@ module Georgia
10
10
  accepts_nested_attributes_for :contents
11
11
  attr_accessible :contents_attributes
12
12
 
13
- def content
14
- @content ||= contents.select{|c| c.locale == I18n.locale.to_s}.first || Georgia::Content.new
13
+ scope :with_locale, lambda {|locale| joins(:contents).where(georgia_contents: {locale: locale})}
14
+
15
+ def content(locale=nil)
16
+ locale ||= I18n.locale.to_s
17
+ @content ||= contents.select{|c| c.locale == locale}.first || Georgia::Content.new
15
18
  end
16
19
 
17
20
  delegate :title, :text, :excerpt, :keywords, :keyword_list, :image, :locale, to: :content
@@ -2,11 +2,6 @@ module Georgia
2
2
  class Page < ActiveRecord::Base
3
3
 
4
4
  include Georgia::Indexer::Adapter
5
- is_searchable({
6
- solr: Georgia::Indexer::SolrAdapter::GeorgiaPageExtension,
7
- tire: Georgia::Indexer::TireAdapter::GeorgiaPageExtension
8
- })
9
-
10
5
  include Georgia::Concerns::Taggable
11
6
  include Georgia::Concerns::Orderable
12
7
  include Georgia::Concerns::Slugable
@@ -14,6 +14,6 @@
14
14
  <%= facet_tag(page.template, :t) %>
15
15
  </td>
16
16
  <td class='timestamp'>
17
- <em><%= page.updated_at %></em>
17
+ <em><%= page.pretty_updated_at %></em>
18
18
  </td>
19
19
  </tr>
@@ -9,8 +9,8 @@
9
9
  <div class="control-group">
10
10
  <div class="slides js-slides">
11
11
  <ul class="nav-list js-sortable">
12
- <% @revision.slides.each do |slide| %>
13
- <%= slide_portlet_tag(slide) %>
12
+ <% @slides.each do |slide| %>
13
+ <%= slide_portlet_tag(slide, content: slide.content(params[:locale])) %>
14
14
  <% end -%>
15
15
  </ul>
16
16
  </div>
@@ -1 +1 @@
1
- <%= slide_portlet_tag(@slide, content: @slide.contents.first) %>
1
+ <%= slide_portlet_tag(@slide, content: @slide.content(params[:locale])) %>
@@ -39,8 +39,16 @@ module Georgia
39
39
  end
40
40
 
41
41
  def copy_templates
42
- template "config/initializers/georgia.rb"
43
- template "app/controllers/pages_controller.rb"
42
+ copy_file "config/initializers/georgia.rb"
43
+ copy_file "app/controllers/pages_controller.rb"
44
+ end
45
+
46
+ def create_indices
47
+ if defined? Tire
48
+ say("Creating elasticsearch indices", :yellow)
49
+ rake "environment tire:import CLASS=Georgia::Page FORCE=true"
50
+ rake "environment tire:import CLASS=Ckeditor::Asset FORCE=true"
51
+ end
44
52
  end
45
53
 
46
54
  def show_readme
@@ -0,0 +1,7 @@
1
+ <%= content_for :head do %>
2
+ <%= meta_title @page.try(:title) %>
3
+ <%= meta_keywords @page.try(:keywords) %>
4
+ <%= meta_description @page.try(:excerpt) %>
5
+ <% end -%>
6
+
7
+ <%= render @page.template_path, page: @page %>
@@ -0,0 +1 @@
1
+ <%= render 'pages/templates/one-column' %>
@@ -0,0 +1,24 @@
1
+ <section id="main">
2
+ <div class='container'>
3
+
4
+ <div class="row">
5
+
6
+ <aside id="sidebar-left" class="col-md-3">
7
+ <% @page.widgets.each do |widget| %>
8
+ <div class="widget">
9
+ <h4><%= widget.title %></h4>
10
+ <p>
11
+ <%= widget.text.html_safe %>
12
+ </p>
13
+ </div>
14
+ <% end -%>
15
+ </aside>
16
+
17
+ <div id='content' class="col-md-9">
18
+ <%= @page.text.html_safe %>
19
+ </div>
20
+
21
+ </div>
22
+
23
+ </div>
24
+ </section>
@@ -0,0 +1,24 @@
1
+ <section id="main">
2
+ <div class='container'>
3
+
4
+ <div class="row">
5
+
6
+ <div id='content' class="col-md-9">
7
+ <%= @page.text.html_safe %>
8
+ </div>
9
+
10
+ <aside id="sidebar-right" class="col-md-3">
11
+ <% @page.widgets.each do |widget| %>
12
+ <div class="widget">
13
+ <h4><%= widget.title %></h4>
14
+ <p>
15
+ <%= widget.text.html_safe %>
16
+ </p>
17
+ </div>
18
+ <% end -%>
19
+ </aside>
20
+
21
+ </div>
22
+
23
+ </div>
24
+ </section>
@@ -0,0 +1,17 @@
1
+ module Georgia
2
+ module Generators
3
+ class ViewsGenerator < ::Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ def copy_pages_views
7
+ copy_file "app/views/pages/show.html.erb"
8
+ copy_file "app/views/pages/templates/_default.html.erb"
9
+ copy_file "app/views/pages/templates/_one-column.html.erb"
10
+ copy_file "app/views/pages/templates/_sidebar-left.html.erb"
11
+ copy_file "app/views/pages/templates/_sidebar-right.html.erb"
12
+ say("Successfully copied Georgia default templates to your application views.", :green)
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -34,6 +34,7 @@ module Georgia
34
34
  ActiveSupport.on_load :action_controller do
35
35
  helper Georgia::MetaTagsHelper
36
36
  helper Georgia::InternationalizationHelper
37
+ helper Georgia::MenusHelper
37
38
  end
38
39
  end
39
40
 
@@ -14,28 +14,47 @@ module Georgia
14
14
  adapter.search model, params
15
15
  end
16
16
 
17
- def self.searching model, extension
18
- adapter.searching model, extension
19
- end
20
-
21
17
  private
22
18
 
23
19
  def self.adapter_lookup
24
- (case Georgia.indexer
25
- when :solr then SolrAdapter.new
26
- when :tire then TireAdapter.new
20
+ @adapter_lookup ||= (case Georgia.indexer
21
+ when :solr then SolrAdapter
22
+ when :tire then TireAdapter
27
23
  else
28
- TireAdapter.new
24
+ TireAdapter
29
25
  end)
30
26
  end
31
27
 
32
28
  module Adapter
33
- extend ActiveSupport::Concern
34
29
 
35
- included do
36
- def self.is_searchable extensions={}
37
- raise "No extension for the #{Georgia.indexer} indexer" unless extensions[Georgia.indexer].present?
38
- self.send(:include, extensions[Georgia.indexer])
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
39
58
  end
40
59
  end
41
60
  end
@@ -2,7 +2,7 @@ require 'active_support/concern'
2
2
 
3
3
  module Georgia
4
4
  module Indexer
5
- class SolrAdapter
5
+ module SolrAdapter
6
6
  module ActsAsTaggableOnTagExtension
7
7
 
8
8
  extend ActiveSupport::Concern
@@ -2,7 +2,7 @@ require 'active_support/concern'
2
2
 
3
3
  module Georgia
4
4
  module Indexer
5
- class SolrAdapter
5
+ module SolrAdapter
6
6
  module CkeditorAssetExtension
7
7
 
8
8
  extend ActiveSupport::Concern
@@ -2,7 +2,7 @@ require 'active_support/concern'
2
2
 
3
3
  module Georgia
4
4
  module Indexer
5
- class SolrAdapter
5
+ module SolrAdapter
6
6
  module GeorgiaPageExtension
7
7
 
8
8
  extend ActiveSupport::Concern
@@ -1,13 +1,12 @@
1
- require 'sunspot_rails' if defined?(Sunspot)
2
- Dir[File.join(File.dirname(__FILE__), 'extensions', 'solr_adapter', '*.rb')].each {|file| require file }
3
-
4
1
  module Georgia
5
2
  module Indexer
6
- class SolrAdapter
3
+ module SolrAdapter
4
+
5
+ require 'sunspot_rails' if defined?(Sunspot)
7
6
 
8
7
  # Delegate search_index to the model
9
8
  # Search method is taken by Sunspot
10
- def search model, params
9
+ def self.search model, params
11
10
  model.search_index model, params
12
11
  end
13
12
 
@@ -1,5 +1,7 @@
1
- require 'tire' if defined?(Tire)
2
- Dir[File.join(File.dirname(__FILE__), 'extensions', 'tire_adapter', '*.rb')].each {|file| require file }
1
+ if defined?(Tire)
2
+ require 'tire'
3
+ Dir[File.join(File.dirname(__FILE__), 'extensions', 'tire_adapter', '*.rb')].each {|file| require file }
4
+ end
3
5
 
4
6
  module Georgia
5
7
  module Indexer
@@ -1,3 +1,3 @@
1
1
  module Georgia
2
- VERSION = "0.7.5"
2
+ VERSION = "0.7.6"
3
3
  end
@@ -11,19 +11,4 @@ namespace :georgia do
11
11
  end
12
12
  end
13
13
 
14
- namespace :messages do
15
-
16
- desc "Send to Akismet all unverified messages"
17
- task verify: :environment do
18
- puts "Check for spam. Currently have #{Georgia::Message.spam.count} spam and #{Georgia::Message.ham.count} ham messages."
19
- puts "Checking #{Georgia::Message.where(verified_at: nil).count} unverified messages."
20
- Georgia::Message.where(verified_at: nil).find_each do |message|
21
- message.update_attributes(spam: message.spam?, verified_at: Time.zone.now)
22
- end
23
- puts "Check completed. #{Georgia::Message.spam.count} spam. #{Georgia::Message.ham.count} ham."
24
- end
25
-
26
- end
27
-
28
-
29
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: georgia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.5
4
+ version: 0.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mathieu Gagné
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-03 00:00:00.000000000 Z
11
+ date: 2014-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -719,6 +719,12 @@ files:
719
719
  - lib/tasks/georgia.rake
720
720
  - lib/tasks/upgrade.rake
721
721
  - lib/tasks/assets.rake
722
+ - lib/generators/georgia/views/templates/app/views/pages/templates/_one-column.html.erb
723
+ - lib/generators/georgia/views/templates/app/views/pages/templates/_default.html.erb
724
+ - lib/generators/georgia/views/templates/app/views/pages/templates/_sidebar-right.html.erb
725
+ - lib/generators/georgia/views/templates/app/views/pages/templates/_sidebar-left.html.erb
726
+ - lib/generators/georgia/views/templates/app/views/pages/show.html.erb
727
+ - lib/generators/georgia/views/views_generator.rb
722
728
  - lib/generators/georgia/install/templates/Procfile
723
729
  - lib/generators/georgia/install/templates/app/controllers/pages_controller.rb
724
730
  - lib/generators/georgia/install/templates/config/initializers/georgia.rb
@@ -735,9 +741,9 @@ files:
735
741
  - lib/georgia/assets.rb
736
742
  - lib/georgia/indexer/tire_adapter.rb
737
743
  - lib/georgia/indexer/solr_adapter.rb
738
- - lib/georgia/indexer/extensions/solr_adapter/georgia_page.rb
739
- - lib/georgia/indexer/extensions/solr_adapter/ckeditor_asset.rb
740
- - lib/georgia/indexer/extensions/solr_adapter/acts_as_taggable_on_tag.rb
744
+ - lib/georgia/indexer/extensions/solr_adapter/georgia/page.rb
745
+ - lib/georgia/indexer/extensions/solr_adapter/acts_as_taggable_on/tag.rb
746
+ - lib/georgia/indexer/extensions/solr_adapter/ckeditor/asset.rb
741
747
  - lib/georgia/indexer/extensions/tire_adapter/georgia_page.rb
742
748
  - lib/georgia/indexer/extensions/tire_adapter/ckeditor_asset.rb
743
749
  - lib/georgia/indexer/extensions/tire_adapter/acts_as_taggable_on_tag.rb