spree_essential_cms 0.1.0 → 0.1.2

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.
data/LICENSE CHANGED
@@ -1,23 +1,27 @@
1
- Redistribution and use in source and binary forms, with or without modification,
1
+ Copyright (c) 2011 Spencer Steffen and Citrus Media Group.
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
2
5
  are permitted provided that the following conditions are met:
3
6
 
4
- * Redistributions of source code must retain the above copyright notice,
7
+ * Redistributions of source code must retain the above copyright notice,
5
8
  this list of conditions and the following disclaimer.
6
- * Redistributions in binary form must reproduce the above copyright notice,
7
- this list of conditions and the following disclaimer in the documentation
9
+
10
+ * Redistributions in binary form must reproduce the above copyright notice,
11
+ this list of conditions and the following disclaimer in the documentation
8
12
  and/or other materials provided with the distribution.
9
- * Neither the name of the Rails Dog LLC nor the names of its
10
- contributors may be used to endorse or promote products derived from this
13
+
14
+ * Neither the name of Citrus Media Group nor the names of its
15
+ contributors may be used to endorse or promote products derived from this
11
16
  software without specific prior written permission.
12
17
 
13
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
17
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
22
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
25
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md CHANGED
@@ -11,10 +11,10 @@ If you don't already have an existing Spree site, [click here](https://gist.gith
11
11
 
12
12
  Otherwise, follow these steps to get up and running with SpreeEssentialCms:
13
13
 
14
- Add the necessary gems to your Gemfile... they haven't been released to Rubygems yet so we'll grab them from git.
14
+ Add the necessary gems to your Gemfile:
15
15
 
16
- gem 'spree_essentials', :git => 'git://github.com/citrus/spree_essentials.git'
17
- gem 'spree_essential_cms', :git => 'git://github.com/citrus/spree_essential_cms.git'
16
+ gem 'spree_essentials', '~> 0.2.3'
17
+ gem 'spree_essential_cms', '~> 0.1.2'
18
18
 
19
19
  Run the generators to create the migration files.
20
20
 
@@ -29,6 +29,67 @@ Boot your server and checkout the admin!
29
29
 
30
30
  rails s
31
31
 
32
+
33
+
34
+ Usage
35
+ -----
36
+
37
+
38
+ #### Contexts
39
+
40
+ Contexts allow you to place different forms of content in various places of a page. A slideshow or a sidebar might be good examples...
41
+
42
+ You can set a content's context (say that ten times fast!) under the 'Optional Fields' tab in the edit content view.
43
+
44
+ In your view you'll be able to grab those bits of content like so:
45
+
46
+
47
+ .slideshow
48
+ - if @slides = @page.for_context('slideshow')
49
+ = render 'shared/content', :content => @slides
50
+
51
+ - if @sidebar = @page.for_context('sidebar').first
52
+ - content_for :sidebar do
53
+ = render 'shared/your_custom_sidebar', :content => @sidebar
54
+
55
+
56
+
57
+
58
+ #### Custom image sizes
59
+
60
+ Use a content decorator when you want different contexts to have their own image sizes:
61
+
62
+
63
+ Content.class_eval do
64
+
65
+ # override default image sizes
66
+ def default_attachment_sizes
67
+ { :mini => '48x48>', :medium => '427x287>' }
68
+ end
69
+
70
+ # or set a custom size for each context
71
+ def attachment_sizes
72
+ case context
73
+ when 'slideshow'
74
+ sizes = default_attachment_sizes.merge(:slide => '955x476#')
75
+ when 'main'
76
+ sizes = default_attachment_sizes.merge(:custom => '580x289#')
77
+ when 'small-top'
78
+ sizes = default_attachment_sizes.merge(:custom => '364x177#')
79
+ when 'small-bottom'
80
+ sizes = default_attachment_sizes.merge(:custom => '364x109#')
81
+ else
82
+ sizes = default_attachment_sizes
83
+ end
84
+ sizes
85
+ end
86
+
87
+ end
88
+
89
+
90
+
91
+
92
+
32
93
 
33
94
  Demo
34
95
  ----
@@ -47,6 +108,23 @@ You can easily use the test/dummy app as a demo of spree_essential_cms. Just `cd
47
108
  Change Log
48
109
  ----------
49
110
 
111
+ **0.1.2 - 2012/1/6**
112
+
113
+ * Removed automatic attachment config with SpreeHeroku
114
+
115
+
116
+ **0.1.1 - 2011/6/2**
117
+
118
+ * Added the image_size option `shared/_content.html.erb`
119
+ * Improved documentation
120
+
121
+
122
+ **0.1.0 - 2011/6/1**
123
+
124
+ * Random cleanup
125
+ * Released 0.1.0 to rubygems
126
+
127
+
50
128
  **2011/4/26**
51
129
 
52
130
  * Extracted from the Spree Essentials core.
@@ -56,6 +134,7 @@ To Do
56
134
  -----
57
135
 
58
136
  * more tests... many many more.
137
+ * optimizations
59
138
  * A 'create translation' button that clones the current page's contents into another language
60
139
  * add widgets that you can drop into any page
61
140
  * page and menu caching/sweeping
@@ -1,41 +1,32 @@
1
- class Admin::ContentsController < Admin::BaseController
1
+ class ::Admin::ContentsController < ::Admin::ResourceController
2
2
 
3
- resource_controller
4
- belongs_to :page
5
-
6
- create.response do |wants|
7
- wants.html { redirect_to collection_url }
8
- end
3
+ before_filter :load_resource
4
+ before_filter :parent, :only => :index
9
5
 
10
- update.response do |wants|
11
- wants.html { redirect_to collection_url }
12
- end
6
+ belongs_to :page
13
7
 
14
8
  def update_positions
15
- @page = parent_object
9
+ @page = parent
16
10
  params[:positions].each do |id, index|
17
11
  @page.contents.update_all(['position=?', index], ['id=?', id])
18
12
  end
19
-
20
13
  respond_to do |format|
21
14
  format.html { redirect_to admin_page_contents_url(@oage) }
22
15
  format.js { render :text => 'Ok' }
23
16
  end
24
17
  end
25
-
26
- destroy.success.wants.js { render_js_for_destroy }
27
-
18
+
28
19
  private
29
20
 
30
- def parent_object
31
- @page ||= Page.find_by_path(params[:page_id])
21
+ def parent
22
+ @page ||= Page.find_by_path(params[:page_id])
32
23
  end
33
-
24
+
34
25
  def collection
35
26
  params[:search] ||= {}
36
27
  params[:search][:meta_sort] ||= "page.asc"
37
- @search = end_of_association_chain.metasearch(params[:search])
28
+ @search = parent.contents.metasearch(params[:search])
38
29
  @collection = @search.paginate(:per_page => Spree::Config[:orders_per_page], :page => params[:page])
39
30
  end
40
31
 
41
- end
32
+ end
@@ -10,7 +10,6 @@ class Admin::PageImagesController < Admin::ResourceController
10
10
  params[:positions].each do |id, index|
11
11
  PageImage.update_all(['position=?', index], ['id=?', id])
12
12
  end
13
-
14
13
  respond_to do |format|
15
14
  format.js { render :text => 'Ok' }
16
15
  end
@@ -34,4 +33,4 @@ class Admin::PageImagesController < Admin::ResourceController
34
33
  @viewable = @page_image.viewable
35
34
  end
36
35
 
37
- end
36
+ end
@@ -1,38 +1,41 @@
1
- class Admin::PagesController < Admin::BaseController
2
- resource_controller
3
-
4
- create.response do |wants|
5
- wants.html { redirect_to edit_admin_page_content_path(@page, @page.contents.first) }
1
+ class ::Admin::PagesController < ::Admin::ResourceController
2
+
3
+ before_filter :load_resource
4
+
5
+ def index
6
+ @pages = collection
6
7
  end
7
-
8
- update.response do |wants|
9
- wants.html { redirect_to object_url }
8
+
9
+ def location_after_save
10
+ case params[:action]
11
+ when "create"
12
+ edit_admin_page_content_path(@page, @page.contents.first)
13
+ else
14
+ admin_page_path(@page)
15
+ end
10
16
  end
11
17
 
12
- destroy.success.wants.js { render_js_for_destroy }
13
-
14
18
  def update_positions
15
19
  params[:positions].each do |id, index|
16
20
  Page.update_all(['position=?', index], ['id=?', id])
17
21
  end
18
-
19
22
  respond_to do |format|
20
- format.html { redirect_to admin_pages_url }
23
+ format.html { redirect_to admin_pages_path }
21
24
  format.js { render :text => 'Ok' }
22
25
  end
23
26
  end
24
27
 
25
28
  private
26
29
 
27
- def object
28
- @object ||= Page.find_by_path(params[:id])
30
+ def find_resource
31
+ @page ||= Page.find_by_path(params[:id])
29
32
  end
30
33
 
31
34
  def collection
32
35
  params[:search] ||= {}
33
36
  params[:search][:meta_sort] ||= "page.asc"
34
- @search = end_of_association_chain.metasearch(params[:search])
35
- @collection = @search.order(:position).paginate(:per_page => Spree::Config[:orders_per_page], :page => params[:page])
37
+ @search = Page.metasearch(params[:search])
38
+ @collection = @search.paginate(:per_page => Spree::Config[:orders_per_page], :page => params[:page])
36
39
  end
37
40
 
38
- end
41
+ end
@@ -1,4 +1,4 @@
1
- class PageController < ApplicationController
1
+ class PageController < Spree::BaseController
2
2
 
3
3
  before_filter :get_page, :only => :index
4
4
 
@@ -1,4 +1,4 @@
1
- class PagesController < ApplicationController
1
+ class PagesController < Spree::BaseController
2
2
 
3
3
  before_filter :get_page, :only => :show
4
4
 
@@ -13,8 +13,8 @@ class PagesController < ApplicationController
13
13
  private
14
14
 
15
15
  def get_page
16
- @page = Page.active.find_by_path(page_path) rescue nil
17
- return raise ActionController::RoutingError.new(page_path) unless @page
16
+ @page = Page.includes(:images, :contents).active.find_by_path(page_path) rescue nil
17
+ raise ActionController::RoutingError.new(page_path) if @page.nil?
18
18
  end
19
19
 
20
20
  def page_path
@@ -3,9 +3,10 @@ Spree::BaseController.class_eval do
3
3
  before_filter :get_pages
4
4
 
5
5
  def get_pages
6
- @page = Page.find_by_path(request.path) rescue nil
7
- scope = request.path =~ /^\/admin/ ? Page.scoped : Page.visible
6
+ admin = request.path =~ /^\/admin/
7
+ @page = Page.find_by_path(request.path) rescue nil unless admin
8
+ scope = admin ? Page.scoped : Page.visible
8
9
  @pages = scope.order(:position).all
9
10
  end
10
11
 
11
- end
12
+ end
@@ -4,21 +4,11 @@ class Content < ActiveRecord::Base
4
4
  validates_associated :page
5
5
  validates_presence_of :title
6
6
 
7
+ default_scope order(:position)
7
8
 
8
- if defined?(SpreeHeroku)
9
- has_attached_file :attachment,
10
- :styles => Proc.new{ |clip| clip.instance.attachment_sizes },
11
- :default_style => :preview,
12
- :path => "assets/contents/:id/:style/:basename.:extension",
13
- :storage => "s3",
14
- :s3_credentials => "#{Rails.root}/config/s3.yml"
15
- else
16
- has_attached_file :attachment,
17
- :styles => Proc.new{ |clip| clip.instance.attachment_sizes },
18
- :default_style => :preview,
19
- :url => "/assets/contents/:id/:style/:basename.:extension",
20
- :path => ":rails_root/public/assets/contents/:id/:style/:basename.:extension"
21
- end
9
+ has_attached_file :attachment,
10
+ :styles => Proc.new{ |clip| clip.instance.attachment_sizes },
11
+ :default_style => :preview
22
12
 
23
13
 
24
14
  cattr_reader :per_page
data/app/models/page.rb CHANGED
@@ -1,8 +1,12 @@
1
1
  class Page < ActiveRecord::Base
2
2
 
3
+ alias_attribute :name, :title
4
+
3
5
  validates_presence_of :title
4
6
  validates :path, :presence => true, :uniqueness => { :case_sensitive => false }
5
7
 
8
+ default_scope order(:position)
9
+
6
10
  scope :active, where(:accessible => true)
7
11
  scope :visible, active.where(:visible => true)
8
12
 
@@ -13,12 +17,12 @@ class Page < ActiveRecord::Base
13
17
  after_create :create_default_content
14
18
 
15
19
  def self.find_by_path(_path)
16
- return super("/") if _path == 'home'
17
- super(_path.to_s.sub(/^\/?/, '/').gsub('--', '/'))
20
+ return super('/') if _path == '_home_' && Page.exists?(:path => '/')
21
+ super _path.to_s.sub(/^\/*/, '/').gsub('--', '/')
18
22
  end
19
23
 
20
24
  def to_param
21
- return 'home' if path == '/'
25
+ return '_home_' if path == '/'
22
26
  path.sub(/^\//, '').gsub('/', '--')
23
27
  end
24
28
 
@@ -34,7 +38,7 @@ class Page < ActiveRecord::Base
34
38
  def has_context?(context)
35
39
  contents.where(:context => context).count
36
40
  end
37
-
41
+
38
42
  def matches?(_path)
39
43
  (root? && _path == "/") || (!root? && _path.match(path))
40
44
  end
@@ -47,7 +51,7 @@ class Page < ActiveRecord::Base
47
51
 
48
52
  def set_defaults
49
53
  return if title.blank?
50
- return errors.add(:path, "is reserved. Please use another") if path.to_s =~ /home/
54
+ #return errors.add(:path, "is reserved. Please use another") if path.to_s =~ /home/
51
55
  self.nav_title = title if nav_title.blank?
52
56
  self.path = nav_title.parameterize if path.blank?
53
57
  self.path = "/" + path.sub(/^\//, '')
@@ -1,30 +1,19 @@
1
- class PageImage < Image
1
+ class PageImage < Asset
2
2
 
3
3
  validate :no_attachement_errors
4
4
 
5
- if defined?(SpreeHeroku)
6
- has_attached_file :attachment,
7
- :styles => Proc.new{ |clip| clip.instance.attachment_sizes },
8
- :default_style => :medium,
9
- :path => "assets/posts/:id/:style/:basename.:extension",
10
- :storage => "s3",
11
- :s3_credentials => "#{Rails.root}/config/s3.yml"
12
- else
13
- has_attached_file :attachment,
14
- :styles => Proc.new{ |clip| clip.instance.attachment_sizes },
15
- :default_style => :medium,
16
- :url => "/assets/posts/:id/:style/:basename.:extension",
17
- :path => ":rails_root/public/assets/posts/:id/:style/:basename.:extension"
18
- end
19
-
5
+ has_attached_file :attachment,
6
+ :styles => Proc.new{ |clip| clip.instance.attachment_sizes },
7
+ :default_style => :medium
8
+
20
9
  def image_content?
21
10
  attachment_content_type.match(/\/(jpeg|png|gif|tiff|x-photoshop)/)
22
11
  end
23
-
12
+
24
13
  def attachment_sizes
25
14
  sizes = {}
26
15
  sizes.merge!(:mini => '48x48>', :small => '150x150>', :medium => '420x300>', :large => '900x650>') if image_content?
27
- sizes.merge!(:slide => '950x250#') if viewable.respond_to?(:path) && viewable.path == "/"
16
+ sizes.merge!(:slide => '950x250#') if viewable.respond_to?(:root?) && viewable.root?
28
17
  sizes
29
18
  end
30
19
 
@@ -20,6 +20,12 @@
20
20
 
21
21
  <div class="optional" style="display: none;">
22
22
 
23
+ <%= form.field_container :context do %>
24
+ <%= form.label :context, t('content.context') %><br />
25
+ <%= form.text_field :context, :class => "text" %>
26
+ <%= error_message_on :content, :context %>
27
+ <% end %>
28
+
23
29
  <%= form.field_container :attachment do %>
24
30
  <%= form.label :attachment, t('content.attachment') %><br />
25
31
  <%= form.file_field :attachment %>
@@ -42,12 +48,6 @@
42
48
  <%= error_message_on :content, :link_text %>
43
49
  <% end %>
44
50
 
45
- <%= form.field_container :context do %>
46
- <%= form.label :context, t('content.context') %><br />
47
- <%= form.text_field :context, :class => "text" %>
48
- <%= error_message_on :content, :context %>
49
- <% end %>
50
-
51
51
  <%= form.field_container :hide_title do %>
52
52
  <%= form.check_box :hide_title, :class => "checkbox" %>
53
53
  <%= form.label :hide_title, t('content.hide_title') %><br />
@@ -4,5 +4,5 @@
4
4
  </p>
5
5
  <p>
6
6
  <%= form.label :alt %>:<br/>
7
- <%= form.text_field :alt %>
7
+ <%= form.text_field :alt, :class => 'text' %>
8
8
  </p>
@@ -1,3 +1,5 @@
1
+ <%= render :partial => 'admin/shared/contents_sub_menu' %>
2
+
1
3
  <%= render :partial => 'admin/shared/page_tabs', :locals => {:current => "Images"} %>
2
4
 
3
5
  <table class="index sortable">
@@ -6,7 +6,7 @@
6
6
 
7
7
  <h1><%= t('.new_page') %></h1>
8
8
 
9
- <% form_for([:admin, @page], :html => { :multipart => true }) do |f| %>
9
+ <%= form_for([:admin, @page], :html => { :multipart => true }) do |f| %>
10
10
  <%= render "form", :form => f %>
11
11
 
12
12
  <p class="form-buttons">
@@ -9,7 +9,7 @@
9
9
  <% end %>
10
10
 
11
11
  <div class="left">
12
- <%= render :partial => 'shared/content', :collection => @page.for_context("") %>
12
+ <%= render :partial => 'shared/content', :collection => @page.for_context('main') %>
13
13
  </div>
14
14
 
15
15
  <div class="right">
@@ -1,4 +1,5 @@
1
1
  <% content ||= @content %>
2
+ <% image_size ||= :medium %>
2
3
  <% html ||= false %>
3
4
  <% content_counter ||= 0 %>
4
5
 
@@ -8,7 +9,7 @@
8
9
 
9
10
  <% if content.has_image? %>
10
11
  <div class="content-left">
11
- <%= image_tag content.attachment.url(:medium), :alt => content.title, :class => 'in-content' %>
12
+ <%= image_tag content.attachment.url(image_size), :alt => content.title, :class => 'in-content' %>
12
13
  </div>
13
14
  <% end %>
14
15
 
@@ -30,4 +31,4 @@
30
31
 
31
32
  <br class="clear"/>
32
33
 
33
- <% end %>
34
+ <% end %>
@@ -1,5 +1,6 @@
1
1
  en:
2
2
  page:
3
+ model_name: Page
3
4
  contents: Contents
4
5
  title: Title
5
6
  nav_title: Navigation Title
@@ -13,6 +14,7 @@ en:
13
14
  explain_visible: visible pages will show up in the main menu.
14
15
 
15
16
  content:
17
+ model_name: Content
16
18
  page_title: Page Title
17
19
  page: Page
18
20
  title: Title
data/config/routes.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  class PossiblePage
2
2
  def self.matches?(request)
3
3
  path = request.fullpath
4
- return false if path =~ /(^\/(admin|account|cart|checkout|content|login|pg\/|orders|products|s\/|session|signup|shipments|states|t\/|tax_categories|user))/
4
+ return if path =~ /(^\/(admin|account|cart|checkout|content|login|pg\/|orders|products|s\/|session|signup|shipments|states|t\/|tax_categories|user)+)/
5
5
  count = Page.active.where(:path => path).count
6
6
  0 < count
7
7
  end
@@ -3,11 +3,11 @@ require 'spree_essentials'
3
3
  module SpreeEssentialCms
4
4
 
5
5
  def self.tab
6
- [:pages, { :route => :admin_pages_index }]
6
+ [ :pages ]
7
7
  end
8
8
 
9
9
  def self.sub_tab
10
- [:pages, { :route => :admin_pages_index, :label => 'admin.subnav.pages', :match_path => '/pages' }]
10
+ [ :pages, { :match_path => '/pages' }]
11
11
  end
12
12
 
13
13
  def self.independent?
@@ -1,3 +1,3 @@
1
1
  module SpreeEssentialCms
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -0,0 +1,36 @@
1
+ namespace :db do
2
+ namespace :sample do
3
+ desc "Create admin username and password"
4
+ task :cms => :environment do
5
+
6
+ # dependent on spree_core
7
+ require 'faker'
8
+
9
+ unless Page.count == 0
10
+ require 'highline/import'
11
+ continue = ask("Sample data will destroy existing data. Continue? [y/n]", String) do |q|
12
+ q.echo = true
13
+ q.whitespace = :strip
14
+ end
15
+ exit unless continue =~ /y/i
16
+ Page.destroy_all
17
+ end
18
+
19
+ images = Dir[File.expand_path("../sample", __FILE__) + "/*.jpg"]
20
+
21
+ home = Page.create(:title => "Home", :path => "/")
22
+ home.contents.first.update_attributes(:body => Faker::Lorem.paragraphs().join("\n\n"), :context => "main")
23
+ home.contents.create(:title => Faker::Lorem.words(3 + rand(3)).join(" "), :body => Faker::Lorem.sentence, :context => "intro")
24
+
25
+ images.each {|image| home.images.create(:attachment => File.open(image), :alt => "Sailing") }
26
+
27
+ %w(About Contact).each do |title|
28
+ page = Page.create(:title => title, :path => title.downcase)
29
+ page.contents.first.update_attributes(:body => Faker::Lorem.paragraphs().join("\n\n"))
30
+ end
31
+
32
+ puts "done."
33
+
34
+ end
35
+ end
36
+ end
Binary file
Binary file
Binary file
@@ -0,0 +1,39 @@
1
+ /* ==========================================
2
+ Main Menu
3
+ */
4
+
5
+ ul#main-menu {
6
+ list-style: none;
7
+ margin: 0;
8
+ padding: 0;
9
+ }
10
+ ul#main-menu li {
11
+ list-style: none;
12
+ display: block;
13
+ float: left;
14
+ margin-right: 10px;
15
+ font-size: 14px;
16
+ }
17
+ ul#main-menu li.active a {
18
+ color: #fff;
19
+ }
20
+
21
+
22
+ /* ==========================================
23
+ Slideshow
24
+ */
25
+
26
+ body.one-col #content {
27
+ position: relative;
28
+ }
29
+
30
+ .slideshow img {
31
+ position: absolute;
32
+ left: 0;
33
+ top: 0;
34
+ }
35
+
36
+ .slideshow.slide {
37
+ width: 950px;
38
+ height: 250px;
39
+ }
metadata CHANGED
@@ -1,173 +1,137 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: spree_essential_cms
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
4
5
  prerelease:
5
- version: 0.1.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Spencer Steffen
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-01 00:00:00 -07:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-06 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: spree_essentials
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70280302826960 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 0.1.0
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.2.3
24
22
  type: :runtime
25
23
  prerelease: false
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *70280302826960
25
+ - !ruby/object:Gem::Dependency
28
26
  name: spree_sample
29
- requirement: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &70280302826460 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: 0.30.0
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 0.60.0
35
33
  type: :development
36
34
  prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *70280302826460
36
+ - !ruby/object:Gem::Dependency
39
37
  name: dummier
40
- requirement: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &70280302825700 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: 0.1.1
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: 0.2.4
46
44
  type: :development
47
45
  prerelease: false
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
46
+ version_requirements: *70280302825700
47
+ - !ruby/object:Gem::Dependency
50
48
  name: shoulda
51
- requirement: &id004 !ruby/object:Gem::Requirement
49
+ requirement: &70280302825240 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
56
54
  version: 2.11.3
57
55
  type: :development
58
56
  prerelease: false
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
57
+ version_requirements: *70280302825240
58
+ - !ruby/object:Gem::Dependency
61
59
  name: factory_girl
62
- requirement: &id005 !ruby/object:Gem::Requirement
60
+ requirement: &70280302824780 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: 2.0.0.beta2
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: 2.0.0.beta4
68
66
  type: :development
69
67
  prerelease: false
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
72
- name: cucumber
73
- requirement: &id006 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 0.10.2
79
- type: :development
80
- prerelease: false
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
68
+ version_requirements: *70280302824780
69
+ - !ruby/object:Gem::Dependency
83
70
  name: capybara
84
- requirement: &id007 !ruby/object:Gem::Requirement
71
+ requirement: &70280302824320 !ruby/object:Gem::Requirement
85
72
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: 0.4.1
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: 1.0.0
90
77
  type: :development
91
78
  prerelease: false
92
- version_requirements: *id007
93
- - !ruby/object:Gem::Dependency
94
- name: selenium-webdriver
95
- requirement: &id008 !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: 0.1.3
101
- type: :development
102
- prerelease: false
103
- version_requirements: *id008
104
- - !ruby/object:Gem::Dependency
79
+ version_requirements: *70280302824320
80
+ - !ruby/object:Gem::Dependency
105
81
  name: sqlite3
106
- requirement: &id009 !ruby/object:Gem::Requirement
82
+ requirement: &70280302823860 !ruby/object:Gem::Requirement
107
83
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
111
87
  version: 1.3.3
112
88
  type: :development
113
89
  prerelease: false
114
- version_requirements: *id009
115
- - !ruby/object:Gem::Dependency
116
- name: faker
117
- requirement: &id010 !ruby/object:Gem::Requirement
118
- none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- version: 0.9.5
123
- type: :development
124
- prerelease: false
125
- version_requirements: *id010
126
- - !ruby/object:Gem::Dependency
90
+ version_requirements: *70280302823860
91
+ - !ruby/object:Gem::Dependency
127
92
  name: spork
128
- requirement: &id011 !ruby/object:Gem::Requirement
93
+ requirement: &70280302823400 !ruby/object:Gem::Requirement
129
94
  none: false
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- version: 0.9.0.rc8
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: 0.9.0.rc9
134
99
  type: :development
135
100
  prerelease: false
136
- version_requirements: *id011
137
- - !ruby/object:Gem::Dependency
101
+ version_requirements: *70280302823400
102
+ - !ruby/object:Gem::Dependency
138
103
  name: spork-testunit
139
- requirement: &id012 !ruby/object:Gem::Requirement
104
+ requirement: &70280302822940 !ruby/object:Gem::Requirement
140
105
  none: false
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
144
109
  version: 0.0.5
145
110
  type: :development
146
111
  prerelease: false
147
- version_requirements: *id012
148
- description: SpreeEssentialCms is a full featured content management system for Spree Commerce. It's designed to be used with the spree_essentials base.
149
- email:
112
+ version_requirements: *70280302822940
113
+ description: SpreeEssentialCms is a full featured content management system for Spree
114
+ Commerce. It's designed to be used with the spree_essentials base.
115
+ email:
150
116
  - spencer@citrusme.com
151
117
  executables: []
152
-
153
118
  extensions: []
154
-
155
119
  extra_rdoc_files: []
156
-
157
- files:
120
+ files:
158
121
  - README.md
159
122
  - LICENSE
160
123
  - config/locales/en.yml
161
124
  - config/routes.rb
162
- - lib/dummy_hooks/after_migrate.rb
163
- - lib/dummy_hooks/after_migrate.rb.sample
164
- - lib/dummy_hooks/before_migrate.rb
165
125
  - lib/generators/essentials_base.rb
166
126
  - lib/generators/spree_essentials/cms_generator.rb
167
127
  - lib/generators/templates/db/migrate/create_contents.rb
168
128
  - lib/generators/templates/db/migrate/create_pages.rb
169
129
  - lib/spree_essential_cms/version.rb
170
130
  - lib/spree_essential_cms.rb
131
+ - lib/tasks/sample/sailing.jpg
132
+ - lib/tasks/sample/sailing2.jpg
133
+ - lib/tasks/sample/sailing3.jpg
134
+ - lib/tasks/sample.rake
171
135
  - app/controllers/admin/contents_controller.rb
172
136
  - app/controllers/admin/page_images_controller.rb
173
137
  - app/controllers/admin/pages_controller.rb
@@ -197,40 +161,37 @@ files:
197
161
  - app/views/shared/_content.html.erb
198
162
  - app/views/shared/_main_menu.html.erb
199
163
  - app/views/shared/_slideshow.html.erb
164
+ - public/stylesheets/essentials/cms.css
200
165
  - Rakefile
201
- has_rdoc: true
202
166
  homepage: http://github.com/citrus/spree_essential_cms
203
167
  licenses: []
204
-
205
168
  post_install_message:
206
169
  rdoc_options: []
207
-
208
- require_paths:
170
+ require_paths:
209
171
  - lib
210
- required_ruby_version: !ruby/object:Gem::Requirement
172
+ required_ruby_version: !ruby/object:Gem::Requirement
211
173
  none: false
212
- requirements:
213
- - - ">="
214
- - !ruby/object:Gem::Version
215
- hash: 444937849195505617
216
- segments:
174
+ requirements:
175
+ - - ! '>='
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ segments:
217
179
  - 0
218
- version: "0"
219
- required_rubygems_version: !ruby/object:Gem::Requirement
180
+ hash: 239260853434187353
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
220
182
  none: false
221
- requirements:
222
- - - ">="
223
- - !ruby/object:Gem::Version
224
- hash: 444937849195505617
225
- segments:
183
+ requirements:
184
+ - - ! '>='
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ segments:
226
188
  - 0
227
- version: "0"
189
+ hash: 239260853434187353
228
190
  requirements: []
229
-
230
191
  rubyforge_project:
231
- rubygems_version: 1.6.2
192
+ rubygems_version: 1.8.10
232
193
  signing_key:
233
194
  specification_version: 3
234
- summary: SpreeEssentialCms is a full featured content management system for Spree Commerce.
195
+ summary: SpreeEssentialCms is a full featured content management system for Spree
196
+ Commerce.
235
197
  test_files: []
236
-
@@ -1 +0,0 @@
1
- rake "db:migrate db:seed db:admin:create", :env => "development"
@@ -1 +0,0 @@
1
- rake "db:migrate db:seed db:admin:create", :env => "development"
@@ -1,6 +0,0 @@
1
- say_status "installing", "spree_core, spree_auth"
2
- rake "spree_core:install spree_auth:install"
3
-
4
- say_status "installing", "spree_essentials and spree_essential_cms"
5
- run "rails g spree_essentials:install"
6
- run "rails g spree_essentials:cms"