georgia 0.7.5 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
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