spree_essential_cms 0.3.0.rc1 → 0.4.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.
Files changed (69) hide show
  1. data/.gitignore +8 -0
  2. data/.travis.yml +15 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE +1 -1
  5. data/README.md +64 -5
  6. data/Versionfile +8 -0
  7. data/app/controllers/spree/admin/contents_controller.rb +4 -4
  8. data/app/controllers/spree/admin/pages_controller.rb +6 -12
  9. data/app/controllers/spree/base_controller_decorator.rb +15 -0
  10. data/app/controllers/spree/home_controller_decorator.rb +23 -0
  11. data/app/controllers/spree/pages_controller.rb +2 -11
  12. data/app/models/spree/content.rb +40 -39
  13. data/app/models/spree/page.rb +21 -10
  14. data/app/models/spree/page_image.rb +10 -15
  15. data/app/views/spree/admin/contents/_form.html.erb +9 -4
  16. data/app/views/spree/admin/contents/edit.html.erb +0 -2
  17. data/app/views/spree/admin/contents/index.html.erb +22 -23
  18. data/app/views/spree/admin/contents/new.html.erb +0 -2
  19. data/app/views/spree/admin/contents/show.html.erb +0 -1
  20. data/app/views/spree/admin/page_images/edit.html.erb +1 -3
  21. data/app/views/spree/admin/page_images/index.html.erb +25 -25
  22. data/app/views/spree/admin/page_images/new.html.erb +3 -1
  23. data/app/views/spree/admin/pages/edit.html.erb +0 -2
  24. data/app/views/spree/admin/pages/index.html.erb +26 -26
  25. data/app/views/spree/admin/pages/new.html.erb +1 -1
  26. data/app/views/spree/admin/pages/show.html.erb +0 -2
  27. data/app/views/spree/pages/home.html.erb +10 -0
  28. data/app/views/spree/shared/_main_menu.html.erb +3 -7
  29. data/app/views/spree/shared/_main_menu_items.html.erb +6 -0
  30. data/config/locales/en.yml +1 -0
  31. data/config/locales/it.yml +63 -0
  32. data/config/routes.rb +10 -12
  33. data/{lib/generators/templates/db/migrate/create_pages.rb → db/migrate/20120306185628_create_pages.rb} +0 -0
  34. data/{lib/generators/templates/db/migrate/create_contents.rb → db/migrate/20120306185638_create_contents.rb} +0 -0
  35. data/{lib/generators/templates/db/migrate/add_spree_namespace.rb → db/migrate/20120306185648_add_spree_namespace.rb} +0 -0
  36. data/lib/generators/spree_essentials/cms_generator.rb +3 -8
  37. data/lib/spree_essential_cms.rb +5 -19
  38. data/lib/spree_essential_cms/engine.rb +16 -0
  39. data/lib/spree_essential_cms/version.rb +1 -1
  40. data/lib/tasks/sample.rake +9 -13
  41. data/spree_essential_cms.gemspec +34 -0
  42. data/test/dummy_hooks/after_app_generator.rb +17 -0
  43. data/test/dummy_hooks/after_migrate.rb.sample +1 -0
  44. data/test/dummy_hooks/before_migrate.rb +11 -0
  45. data/test/dummy_hooks/templates/assets/javascripts/admin/all.js +1 -0
  46. data/test/dummy_hooks/templates/assets/javascripts/store/all.js +1 -0
  47. data/test/dummy_hooks/templates/assets/stylesheets/admin/all.css +3 -0
  48. data/test/dummy_hooks/templates/assets/stylesheets/store/all.css +3 -0
  49. data/test/dummy_hooks/templates/assets/stylesheets/store/screen.css +749 -0
  50. data/test/dummy_hooks/templates/initializers/spree_user_error_fix.rb +3 -0
  51. data/test/dummy_hooks/templates/overrides/main_menu.rb +6 -0
  52. data/test/integration/spree/admin/contents_integration_test.rb +116 -0
  53. data/test/integration/spree/admin/page_images_integration_test.rb +94 -0
  54. data/test/integration/spree/admin/pages_integration_test.rb +131 -0
  55. data/test/integration/spree/home_integration_test.rb +54 -0
  56. data/test/integration/spree/pages_integration_test.rb +122 -0
  57. data/test/support/factories.rb +21 -0
  58. data/test/support/files/1.jpg +0 -0
  59. data/test/support/files/2.jpg +0 -0
  60. data/test/support/helpers.rb +13 -0
  61. data/test/test_helper.rb +19 -0
  62. data/test/unit/spree/content_test.rb +39 -0
  63. data/test/unit/spree/essential_test.rb +9 -0
  64. data/test/unit/spree/page_image_test.rb +47 -0
  65. data/test/unit/spree/page_test.rb +53 -0
  66. metadata +117 -48
  67. data/app/assets/stylesheets/essentials/cms.css +0 -39
  68. data/app/controllers/spree/page_controller.rb +0 -20
  69. data/app/controllers/spree/spree_base_controller_decorator.rb +0 -12
@@ -1,27 +1,25 @@
1
1
  class Spree::PossiblePage
2
- def self.matches?(request)
3
- path = request.fullpath
4
- return if path =~ /(^\/(admin|account|cart|checkout|content|login|pg\/|orders|products|s\/|session|signup|shipments|states|t\/|tax_categories|user)+)/
5
- count = Spree::Page.active.where(:path => path.gsub("//","/")).count
6
- 0 < count
2
+ def self.matches?(request)
3
+ return false if request.fullpath =~ /(^\/+(admin|account|cart|checkout|content|login|pg\/|orders|products|s\/|session|signup|shipments|states|t\/|tax_categories|user)+)/
4
+ !Spree::Page.active.find_by_path(request.fullpath).nil?
7
5
  end
8
6
  end
9
7
 
10
- Spree::Core::Engine.routes.draw do
11
-
8
+ Spree::Core::Engine.routes.append do
9
+
12
10
  namespace :admin do
13
-
14
- resources :pages do
11
+
12
+ resources :pages, :constraints => { :id => /.*/ } do
15
13
  collection do
16
14
  post :update_positions
17
15
  end
18
-
16
+
19
17
  resources :contents do
20
18
  collection do
21
19
  post :update_positions
22
20
  end
23
21
  end
24
-
22
+
25
23
  resources :images, :controller => "page_images" do
26
24
  collection do
27
25
  post :update_positions
@@ -30,7 +28,7 @@ Spree::Core::Engine.routes.draw do
30
28
  end
31
29
 
32
30
  end
33
-
31
+
34
32
  constraints(Spree::PossiblePage) do
35
33
  get '(:page_path)', :to => 'pages#show', :page_path => /.*/, :as => :page
36
34
  end
@@ -1,16 +1,11 @@
1
- require 'generators/essentials_base'
2
-
3
1
  module SpreeEssentials
4
2
  module Generators
5
- class CmsGenerator < SpreeEssentials::Generators::EssentialsBase
3
+ class CmsGenerator < Rails::Generators::Base
6
4
 
7
5
  desc "Installs required migrations for spree_essentials"
8
- source_root File.expand_path("../../templates/db/migrate", __FILE__)
9
-
6
+
10
7
  def copy_migrations
11
- migration_template "create_pages.rb", "db/migrate/create_pages.rb"
12
- migration_template "create_contents.rb", "db/migrate/create_contents.rb"
13
- migration_template "add_spree_namespace.rb", "db/migrate/add_spree_namespace.rb"
8
+ rake "spree_essential_cms:install:migrations"
14
9
  end
15
10
 
16
11
  end
@@ -1,4 +1,8 @@
1
- require 'spree_essentials'
1
+ require "spree_essentials"
2
+ require "spree_sample" unless Rails.env.production?
3
+
4
+ require "spree_essential_cms/version"
5
+ require "spree_essential_cms/engine"
2
6
 
3
7
  module SpreeEssentialCms
4
8
 
@@ -10,24 +14,6 @@ module SpreeEssentialCms
10
14
  [ :pages, { :match_path => '/pages' }]
11
15
  end
12
16
 
13
- class Engine < Rails::Engine
14
-
15
- config.autoload_paths += %W(#{config.root}/lib)
16
-
17
- config.to_prepare do
18
- #loads application's model / class decorators
19
- Dir.glob File.expand_path("../../app/**/*_decorator.rb", __FILE__) do |c|
20
- Rails.configuration.cache_classes ? require(c) : load(c)
21
- end
22
-
23
- #loads application's deface view overrides
24
- Dir.glob File.expand_path("../../app/overrides/*.rb", __FILE__) do |c|
25
- Rails.application.config.cache_classes ? require(c) : load(c)
26
- end
27
- end
28
-
29
- end
30
-
31
17
  end
32
18
 
33
19
  SpreeEssentials.register :cms, SpreeEssentialCms
@@ -0,0 +1,16 @@
1
+ module SpreeEssentialCms
2
+ class Engine < Rails::Engine
3
+
4
+ engine_name "spree_essential_cms"
5
+
6
+ config.to_prepare do
7
+
8
+ #loads application's model / class decorators
9
+ Dir.glob File.expand_path("../../../app/**/*_decorator.rb", __FILE__) do |c|
10
+ Rails.configuration.cache_classes ? require(c) : load(c)
11
+ end
12
+
13
+ end
14
+
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module SpreeEssentialCms
2
- VERSION = "0.3.0.rc1"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -3,36 +3,32 @@ namespace :db do
3
3
  desc "Create admin username and password"
4
4
  task :cms => :environment do
5
5
 
6
- # dependent on spree_core
7
- require 'faker'
6
+ require 'ffaker'
8
7
 
9
- unless Page.count == 0
8
+ unless Spree::Page.count == 0
10
9
  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
10
+ continue = ask("Sample data will destroy existing data. Continue? [y/n]")
15
11
  exit unless continue =~ /y/i
16
- Page.destroy_all
12
+ Spree::Page.destroy_all
17
13
  end
18
14
 
19
15
  images = Dir[File.expand_path("../sample", __FILE__) + "/*.jpg"]
20
16
 
21
- home = Page.create(:title => "Home", :path => "/")
22
- home.contents.first.update_attributes(:body => FFaker::Lorem.paragraphs().join("\n\n"), :context => "main")
17
+ home = Spree::Page.create(:title => "Home", :path => "/")
18
+ home.contents.first.update_attributes(:body => Faker::Lorem.paragraphs().join("\n\n"), :context => "main")
23
19
  home.contents.create(:title => Faker::Lorem.words(3 + rand(3)).join(" "), :body => Faker::Lorem.sentence, :context => "intro")
24
20
 
25
21
  images.each {|image|
26
- PageImage.create(:viewable => home, :attachment => File.open(image), :alt => "Sailing")
22
+ Spree::PageImage.create(:viewable => home, :attachment => File.open(image), :alt => "Sailing")
27
23
  }
28
24
 
29
25
  %w(About Contact).each do |title|
30
- page = Page.create(:title => title, :path => title.downcase)
26
+ page = Spree::Page.create(:title => title, :path => title.downcase)
31
27
  page.contents.first.update_attributes(:body => Faker::Lorem.paragraphs().join("\n\n"))
32
28
  end
33
29
 
34
30
  puts "done."
35
-
31
+
36
32
  end
37
33
  end
38
34
  end
@@ -0,0 +1,34 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "spree_essential_cms/version"
4
+
5
+ Gem::Specification.new do |s|
6
+
7
+ s.name = "spree_essential_cms"
8
+ s.version = SpreeEssentialCms::VERSION
9
+ s.platform = Gem::Platform::RUBY
10
+ s.authors = ["Spencer Steffen"]
11
+ s.email = ["spencer@citrusme.com"]
12
+ s.homepage = "https://github.com/citrus/spree_essential_cms"
13
+ s.summary = %q{SpreeEssentialCms is a full featured content management system for Spree Commerce.}
14
+ s.description = %q{SpreeEssentialCms is a full featured content management system for Spree Commerce. It's designed to be used with the spree_essentials base.}
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+
19
+ s.require_paths = ['lib']
20
+
21
+ # Spree Essentials
22
+ s.add_runtime_dependency('spree_essentials', '~> 0.5.0')
23
+
24
+ # Development
25
+ s.add_development_dependency('spree_sample', '~> 1.1.0')
26
+ s.add_development_dependency('dummier', '~> 0.3.2')
27
+ s.add_development_dependency('shoulda', '~> 3.0.0')
28
+ s.add_development_dependency('factory_girl', '~> 2.6.0')
29
+ s.add_development_dependency('capybara', '~> 1.1.2')
30
+ s.add_development_dependency('sqlite3', '~> 1.3.5')
31
+ # s.add_development_dependency('simplecov', '~> 0.6.1')
32
+ # s.add_development_dependency('turn', '~> 0.9.3')
33
+
34
+ end
@@ -0,0 +1,17 @@
1
+ # Add our main menu override
2
+ copy_file "overrides/main_menu.rb", "app/overrides/main_menu.rb"
3
+
4
+ # Fix uninitialized constant Spree::User::DestroyWithOrdersError
5
+ template "initializers/spree_user_error_fix.rb", "config/initializers/spree_user_error_fix.rb"
6
+
7
+ # remove all stylesheets except core
8
+ %w(admin store).each do |ns|
9
+ template "assets/javascripts/#{ns}/all.js", "app/assets/javascripts/#{ns}/all.js", :force => true
10
+ template "assets/stylesheets/#{ns}/all.css", "app/assets/stylesheets/#{ns}/all.css", :force => true
11
+ end
12
+
13
+ # Fix sass load error by using the converted css file
14
+ template "assets/stylesheets/store/screen.css", "app/assets/stylesheets/store/screen.css"
15
+
16
+ # Enable forgery_protection since we need AUTH_TOKEN to be defined to avoid JS errors
17
+ gsub_file "config/environments/test.rb", "forgery_protection = false", "forgery_protection = true"
@@ -0,0 +1 @@
1
+ rake "db:migrate db:seed db:sample:cms", :env => "development"
@@ -0,0 +1,11 @@
1
+ # Install spree's migrations
2
+ rake "spree:install:migrations"
3
+
4
+ # Mount the Spree::Core routes
5
+ insert_into_file File.join('config', 'routes.rb'), :after => "Application.routes.draw do\n" do
6
+ " # Mount Spree's routes\n mount Spree::Core::Engine, :at => '/'\n"
7
+ end
8
+
9
+ # Install spree essentials & CMS
10
+ run "bundle exec rails g spree_essentials:install"
11
+ run "bundle exec rails g spree_essentials:cms"
@@ -0,0 +1 @@
1
+ //= require admin/spree_core
@@ -0,0 +1 @@
1
+ //= require store/spree_core
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require admin/spree_core
3
+ */
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require store/spree_core
3
+ */
@@ -0,0 +1,749 @@
1
+ @import url(http://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic,700italic|&subset=latin,cyrillic,greek,greek-ext,latin-ext,cyrillic-ext);
2
+ /*--------------------------------------*/
3
+ /* Colors
4
+ /*--------------------------------------*/
5
+ /* Dark gray */
6
+ /* Mid light gray */
7
+ /* Light blue */
8
+ /* Lighter blue */
9
+ /* Light gray */
10
+ /* Spree green */
11
+ /* Error red */
12
+ /*--------------------------------------*/
13
+ /* Fonts
14
+ /*--------------------------------------*/
15
+ /*--------------------------------------*/
16
+ /* Basic styles
17
+ /*--------------------------------------*/
18
+ body {
19
+ font-family: 'Ubuntu', sans-serif;
20
+ color: #404042;
21
+ line-height: 18px;
22
+ font-size: 12px; }
23
+
24
+ /* Line style */
25
+ hr {
26
+ border-color: #dedede; }
27
+
28
+ /* Custom text-selection colors (remove any text shadows: twitter.com/miketaylr/status/12228805301) */
29
+ ::-moz-selection {
30
+ background: #00adee;
31
+ color: white;
32
+ text-shadow: none; }
33
+
34
+ ::selection {
35
+ background: #00adee;
36
+ color: white;
37
+ text-shadow: none; }
38
+
39
+ /* j.mp/webkit-tap-highlight-color */
40
+ a:link {
41
+ -webkit-tap-highlight-color: #00adee; }
42
+
43
+ ins {
44
+ background-color: #00adee;
45
+ color: white;
46
+ text-decoration: none; }
47
+
48
+ mark {
49
+ background-color: #00adee;
50
+ color: white;
51
+ font-style: italic;
52
+ font-weight: bold; }
53
+
54
+ /*--------------------------------------*/
55
+ /* Links
56
+ /*--------------------------------------*/
57
+ a {
58
+ text-decoration: none;
59
+ color: #404042; }
60
+ a:hover {
61
+ color: #00adee !important; }
62
+
63
+ /*--------------------------------------*/
64
+ /* Lists
65
+ /*--------------------------------------*/
66
+ ul.inline li, ol.inline li {
67
+ display: inline-block; }
68
+
69
+ dl dt, dl dd {
70
+ display: inline-block;
71
+ width: 50%;
72
+ padding: 5px; }
73
+ dl dt.odd, dl dd.odd {
74
+ background-color: #dedede; }
75
+ dl dt {
76
+ font-weight: bold;
77
+ text-transform: uppercase; }
78
+ dl dd {
79
+ margin-left: -23px; }
80
+
81
+ /*--------------------------------------*/
82
+ /* Headers
83
+ /*--------------------------------------*/
84
+ h1, h2, h3, h4, h5, h6 {
85
+ font-weight: bold; }
86
+
87
+ h1 {
88
+ font-size: 24px;
89
+ line-height: 34px; }
90
+
91
+ h2 {
92
+ font-size: 23px;
93
+ line-height: 32px; }
94
+
95
+ h3 {
96
+ font-size: 20px;
97
+ line-height: 30px; }
98
+
99
+ h4 {
100
+ font-size: 18px;
101
+ line-height: 28px; }
102
+
103
+ h5 {
104
+ font-size: 16px;
105
+ line-height: 26px; }
106
+
107
+ h6 {
108
+ font-size: 14px;
109
+ line-height: 24px; }
110
+
111
+ /*--------------------------------------*/
112
+ /* Forms
113
+ /*--------------------------------------*/
114
+ textarea, input[type="date"],
115
+ input[type="datetime"], input[type="datetime-local"],
116
+ input[type="email"], input[type="month"], input[type="number"],
117
+ input[type="password"], input[type="search"], input[type="tel"],
118
+ input[type="text"], input[type="time"], input[type="url"],
119
+ input[type="week"] {
120
+ border: 1px solid #dedede;
121
+ padding: 2px 5px;
122
+ font-family: "Ubuntu", sans-serif; }
123
+ textarea:active, textarea:focus, input[type="date"]:active, input[type="date"]:focus,
124
+ input[type="datetime"]:active,
125
+ input[type="datetime"]:focus, input[type="datetime-local"]:active, input[type="datetime-local"]:focus,
126
+ input[type="email"]:active,
127
+ input[type="email"]:focus, input[type="month"]:active, input[type="month"]:focus, input[type="number"]:active, input[type="number"]:focus,
128
+ input[type="password"]:active,
129
+ input[type="password"]:focus, input[type="search"]:active, input[type="search"]:focus, input[type="tel"]:active, input[type="tel"]:focus,
130
+ input[type="text"]:active,
131
+ input[type="text"]:focus,
132
+ select:active,
133
+ select:focus, input[type="time"]:active, input[type="time"]:focus, input[type="url"]:active, input[type="url"]:focus,
134
+ input[type="week"]:active,
135
+ input[type="week"]:focus {
136
+ border-color: #00adee;
137
+ outline: none;
138
+ -webkit-box-shadow: none;
139
+ -moz-box-shadow: none;
140
+ -o-box-shadow: none;
141
+ box-shadow: none; }
142
+ textarea.error, input[type="date"].error,
143
+ input[type="datetime"].error, input[type="datetime-local"].error,
144
+ input[type="email"].error, input[type="month"].error, input[type="number"].error,
145
+ input[type="password"].error, input[type="search"].error, input[type="tel"].error,
146
+ input[type="text"].error, input[type="time"].error, input[type="url"].error,
147
+ input[type="week"].error {
148
+ border-color: #e45353; }
149
+
150
+ select {
151
+ border: 1px solid #dedede;
152
+ font-family: "Ubuntu", sans-serif;
153
+ background-image: url("select_arrow.gif");
154
+ background-repeat: no-repeat;
155
+ background-position: right center; }
156
+
157
+ label.error {
158
+ display: block;
159
+ font-size: 11px;
160
+ color: #e45353;
161
+ margin-top: 3px; }
162
+
163
+ input[type="submit"], input[type="button"],
164
+ input[type="reset"], button, a.button {
165
+ background-color: #00adee;
166
+ background-image: none;
167
+ text-shadow: none;
168
+ color: white;
169
+ font-weight: bold;
170
+ font-family: "Ubuntu", sans-serif;
171
+ border: 1px solid rgba(0, 138, 189, 0.75);
172
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4);
173
+ -khtml-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4);
174
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4);
175
+ -o-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4);
176
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.4);
177
+ -webkit-border-radius: 0px;
178
+ -khtml-border-radius: 0px;
179
+ -moz-border-radius: 0px;
180
+ -ms-border-radius: 0px;
181
+ -o-border-radius: 0px;
182
+ border-radius: 0px;
183
+ vertical-align: text-top; }
184
+ input[type="submit"].large, input[type="button"].large,
185
+ input[type="reset"].large, button.large, a.button.large {
186
+ padding: 7px 10px;
187
+ font-size: 14px; }
188
+ input[type="submit"]:hover, input[type="button"]:hover,
189
+ input[type="reset"]:hover, button:hover, a.button:hover {
190
+ background-image: none;
191
+ background-color: #404042;
192
+ border-color: #404042;
193
+ color: white !important; }
194
+
195
+ .ie8 a.button {
196
+ line-height: 16px; }
197
+
198
+ input[type="checkbox"], input[type="button"],
199
+ input[type="submit"], input[type="reset"],
200
+ button, label {
201
+ vertical-align: middle; }
202
+
203
+ a.button {
204
+ display: inline-block;
205
+ line-height: 15px;
206
+ margin-top: -2px;
207
+ vertical-align: bottom; }
208
+
209
+ /*--------------------------------------*/
210
+ /* Footer
211
+ /*--------------------------------------*/
212
+ footer#footer {
213
+ padding: 10px 0;
214
+ border-top: 1px solid #dedede; }
215
+
216
+ /*--------------------------------------*/
217
+ /* Paragraphs
218
+ /*--------------------------------------*/
219
+ p {
220
+ padding: 10px 0; }
221
+
222
+ /*--------------------------------------*/
223
+ /* Tables
224
+ /*--------------------------------------*/
225
+ table thead {
226
+ background-color: #dedede;
227
+ text-transform: uppercase; }
228
+ table thead tr th {
229
+ padding: 5px 10px; }
230
+ table tbody tr, table tfoot tr {
231
+ border-bottom: 1px solid #dedede; }
232
+ table tbody tr td, table tfoot tr td {
233
+ vertical-align: middle;
234
+ padding: 5px 10px; }
235
+ table tbody tr.alt, table tbody tr.odd, table tfoot tr.alt, table tfoot tr.odd {
236
+ background-color: #f0f8ff; }
237
+
238
+ /*--------------------------------------*/
239
+ /* Navigation
240
+ /*--------------------------------------*/
241
+ nav#top-nav-bar {
242
+ text-align: right;
243
+ margin-top: 20px; }
244
+ nav#top-nav-bar ul li {
245
+ margin-bottom: 5px;
246
+ padding-left: 10px; }
247
+ nav#top-nav-bar ul li a {
248
+ font-weight: bold;
249
+ font-size: 14px;
250
+ text-transform: uppercase; }
251
+
252
+ nav #main-nav-bar {
253
+ text-transform: uppercase;
254
+ font-weight: bold;
255
+ margin-top: 20px;
256
+ border-bottom: 1px solid #dedede;
257
+ padding-bottom: 6px; }
258
+ nav #main-nav-bar li a {
259
+ font-size: 16px;
260
+ padding: 5px; }
261
+ nav #main-nav-bar li#link-to-cart {
262
+ float: right;
263
+ padding-left: 24px;
264
+ background: url("cart.png") no-repeat left center; }
265
+ nav #main-nav-bar li#link-to-cart:hover {
266
+ border-color: #00adee; }
267
+ nav #main-nav-bar li#link-to-cart:hover .amount {
268
+ border-color: #00adee; }
269
+ nav #main-nav-bar li#link-to-cart a {
270
+ font-weight: normal;
271
+ font-size: 16px;
272
+ color: #00adee; }
273
+ nav #main-nav-bar li#link-to-cart a .amount {
274
+ font-size: 18px;
275
+ font-weight: bold;
276
+ border-left: 1px solid #dedede;
277
+ padding-left: 5px;
278
+ padding-bottom: 5px; }
279
+
280
+ nav#taxonomies .taxonomy-root {
281
+ text-transform: uppercase;
282
+ border-bottom: 1px solid #dedede;
283
+ margin-bottom: 5px;
284
+ color: #00adee; }
285
+ nav#taxonomies .taxons-list {
286
+ padding-left: 20px;
287
+ margin-bottom: 20px;
288
+ list-style: disc outside; }
289
+
290
+ #breadcrumbs {
291
+ border-bottom: 1px solid #dedede;
292
+ padding: 3px 0;
293
+ margin-bottom: 15px; }
294
+ #breadcrumbs li a {
295
+ color: #00adee; }
296
+ #breadcrumbs li span {
297
+ text-transform: uppercase;
298
+ font-weight: bold; }
299
+
300
+ /*--------------------------------------*/
301
+ /* Flash notices & errors
302
+ /*--------------------------------------*/
303
+ .flash, .errorExplanation {
304
+ padding: 10px;
305
+ color: white;
306
+ font-weight: bold;
307
+ margin-bottom: 10px; }
308
+ .flash.notice, .notice.errorExplanation {
309
+ background-color: #00adee; }
310
+ .flash.success, .success.errorExplanation {
311
+ background-color: #8dba53; }
312
+ .flash.error, .errorExplanation, .error.errorExplanation {
313
+ background-color: #e45353; }
314
+
315
+ .errorExplanation p {
316
+ font-weight: normal; }
317
+ .errorExplanation ul {
318
+ list-style: disc outside;
319
+ margin-left: 30px; }
320
+ .errorExplanation ul li {
321
+ font-weight: normal; }
322
+
323
+ /*--------------------------------------*/
324
+ /* Main search bar
325
+ /*--------------------------------------*/
326
+ #search-bar {
327
+ display: block; }
328
+
329
+ /*--------------------------------------*/
330
+ /* Products
331
+ /*--------------------------------------*/
332
+ .product-section-title {
333
+ text-transform: uppercase;
334
+ color: #00adee;
335
+ margin-top: 15px; }
336
+
337
+ .add-to-cart {
338
+ margin-top: 15px; }
339
+ .add-to-cart input[type="number"] {
340
+ width: 60px;
341
+ vertical-align: middle;
342
+ padding: 5px;
343
+ height: 35px; }
344
+
345
+ span.price, #checkout-summary table tr[data-hook="item_total"] td:last-child strong, #checkout-summary table #summary-order-total, #order_details td.price span, #order_details td.total span, #order_summary td.price span, #order_summary td.total span, table#cart-detail tbody#line_items tr td[data-hook="cart_item_price"], table#cart-detail tbody#line_items tr td[data-hook="cart_item_total"], div[data-hook="inside_cart_form"] #subtotal span.order-total {
346
+ font-weight: bold;
347
+ color: #00adee; }
348
+ span.price.selling, #checkout-summary table tr[data-hook="item_total"] td:last-child strong.selling, #checkout-summary table .selling#summary-order-total, #order_details td.price span.selling, #order_details td.total span.selling, #order_summary td.price span.selling, #order_summary td.total span.selling, table#cart-detail tbody#line_items tr td.selling[data-hook="cart_item_price"], table#cart-detail tbody#line_items tr td.selling[data-hook="cart_item_total"], table#cart-detail tbody#line_items tr td[data-hook="cart_item_price"], table#cart-detail tbody#line_items tr td[data-hook="cart_item_total"], div[data-hook="inside_cart_form"] #subtotal span.selling.order-total {
349
+ font-size: 20px; }
350
+ span.price.diff, #checkout-summary table tr[data-hook="item_total"] td:last-child strong.diff, #checkout-summary table .diff#summary-order-total, #order_details td.price span.diff, #order_details td.total span.diff, #order_summary td.price span.diff, #order_summary td.total span.diff, table#cart-detail tbody#line_items tr td.diff[data-hook="cart_item_price"], table#cart-detail tbody#line_items tr td.diff[data-hook="cart_item_total"], div[data-hook="inside_cart_form"] #subtotal span.diff.order-total {
351
+ font-weight: bold; }
352
+
353
+ ul#products {
354
+ margin-left: -10px;
355
+ margin-right: -10px; }
356
+ ul#products li {
357
+ text-align: center;
358
+ font-weight: bold;
359
+ margin-bottom: 20px; }
360
+ ul#products li a {
361
+ display: block; }
362
+ ul#products li a.info {
363
+ height: 35px;
364
+ margin-top: 5px;
365
+ color: #bbbbbb;
366
+ border-bottom: 1px solid #dedede; }
367
+ ul#products li .product-image {
368
+ border: 1px solid #dedede;
369
+ padding: 5px;
370
+ min-height: 110px; }
371
+ ul#products li .product-image:hover {
372
+ border-color: #00adee; }
373
+ ul#products li .price {
374
+ color: #00adee;
375
+ font-size: 16px;
376
+ padding-top: 5px;
377
+ display: block; }
378
+
379
+ .subtaxon-title {
380
+ text-transform: uppercase; }
381
+ .subtaxon-title a {
382
+ color: #00adee; }
383
+
384
+ .search-results-title {
385
+ text-transform: uppercase;
386
+ border-bottom: 1px solid #dedede;
387
+ margin-bottom: 10px; }
388
+
389
+ #sidebar_products_search .navigation {
390
+ margin-bottom: 15px; }
391
+ #sidebar_products_search span.category {
392
+ display: block;
393
+ font-weight: bold;
394
+ text-transform: uppercase;
395
+ border-bottom: 1px solid #ededed;
396
+ margin-bottom: 5px;
397
+ color: #00adee;
398
+ font-size: 14px;
399
+ line-height: 24px; }
400
+
401
+ .taxon {
402
+ overflow: hidden; }
403
+
404
+ #product-images #main-image {
405
+ text-align: center;
406
+ border: 1px solid #dedede; }
407
+
408
+ #product-description .product-title {
409
+ border-bottom: 1px solid #dedede;
410
+ margin-bottom: 15px; }
411
+
412
+ #product-thumbnails {
413
+ margin-top: 10px; }
414
+ #product-thumbnails li {
415
+ margin-right: 6px;
416
+ border: 1px solid #dedede; }
417
+ #product-thumbnails li img {
418
+ padding: 5px; }
419
+ #product-thumbnails li:hover, #product-thumbnails li.selected {
420
+ border-color: #00adee; }
421
+
422
+ #product-properties {
423
+ border: 1px solid #dedede;
424
+ padding: 10px; }
425
+
426
+ #product-variants ul li {
427
+ padding: 5px; }
428
+
429
+ /*--------------------------------------*/
430
+ /* Checkout
431
+ /*--------------------------------------*/
432
+ .progress-steps {
433
+ list-style: decimal inside;
434
+ overflow: auto; }
435
+ .progress-steps li {
436
+ float: left;
437
+ margin-right: 20px;
438
+ font-weight: bold;
439
+ text-transform: uppercase;
440
+ padding: 5px 20px;
441
+ color: #bbbbbb; }
442
+ .progress-steps li.current-first, .progress-steps li.current {
443
+ background-color: #00adee;
444
+ color: white; }
445
+ .progress-steps li.completed-first, .progress-steps li.completed {
446
+ background-color: #dedede;
447
+ color: white; }
448
+ .progress-steps li.completed-first a, .progress-steps li.completed a {
449
+ color: white; }
450
+ .progress-steps li.completed-first:hover, .progress-steps li.completed:hover {
451
+ background-color: #00adee;
452
+ color: white; }
453
+ .progress-steps li.completed-first:hover a, .progress-steps li.completed:hover a {
454
+ color: white; }
455
+ .progress-steps li.completed-first:hover a:hover, .progress-steps li.completed:hover a:hover {
456
+ color: white !important; }
457
+
458
+ #checkout-summary {
459
+ text-align: center;
460
+ border: 1px solid #dedede;
461
+ margin-top: 23px;
462
+ margin-left: 0; }
463
+ #checkout-summary h3 {
464
+ text-transform: uppercase;
465
+ font-size: 14px;
466
+ color: #00adee;
467
+ border-bottom: 1px solid #dedede; }
468
+ #checkout-summary table {
469
+ width: 100%; }
470
+ #checkout-summary table tr[data-hook="order_total"] {
471
+ border-bottom: none; }
472
+ #checkout-summary table #summary-order-total {
473
+ font-size: 14px; }
474
+
475
+ #billing, #shipping, #shipping_method,
476
+ #payment, #order_details, #order_summary {
477
+ margin-top: 10px;
478
+ border: 1px solid #dedede;
479
+ padding: 10px; }
480
+ #billing legend, #shipping legend, #shipping_method legend,
481
+ #payment legend, #order_details legend, #order_summary legend {
482
+ text-transform: uppercase;
483
+ font-weight: bold;
484
+ font-size: 14px;
485
+ color: #00adee;
486
+ padding: 5px;
487
+ margin-left: 15px; }
488
+
489
+ #order_details, #order_summary {
490
+ padding: 0; }
491
+ #order_details div:last-child, #order_summary div:last-child {
492
+ margin-left: -1px; }
493
+ #order_details .payment-info .cc-type img, #order_summary .payment-info .cc-type img {
494
+ vertical-align: middle; }
495
+ #order_details table tfoot, #order_summary table tfoot {
496
+ text-align: right;
497
+ color: #bbbbbb; }
498
+ #order_details table tfoot tr, #order_summary table tfoot tr {
499
+ border: none; }
500
+ #order_details table tfoot#order-total, #order_summary table tfoot#order-total {
501
+ text-transform: uppercase;
502
+ font-size: 16px;
503
+ color: #404042; }
504
+ #order_details table tfoot#order-total tr, #order_summary table tfoot#order-total tr {
505
+ border-top: 1px solid #dedede; }
506
+ #order_details table tfoot#order-total tr td, #order_summary table tfoot#order-total tr td {
507
+ padding: 10px; }
508
+ #order_details .steps-data, #order_summary .steps-data {
509
+ padding: 10px; }
510
+ #order_details .steps-data h6, #order_summary .steps-data h6 {
511
+ border-bottom: 1px solid #dedede;
512
+ margin-bottom: 5px; }
513
+
514
+ #shipping_method p label {
515
+ float: left;
516
+ font-weight: bold;
517
+ font-size: 14px;
518
+ margin-right: 40px;
519
+ padding: 5px; }
520
+
521
+ p[data-hook="use_billing"] {
522
+ float: right;
523
+ margin-top: -38px;
524
+ background-color: white;
525
+ padding: 5px; }
526
+
527
+ /*--------------------------------------*/
528
+ /* Cart
529
+ /*--------------------------------------*/
530
+ table#cart-detail {
531
+ width: 100%; }
532
+ table#cart-detail tbody#line_items tr td[data-hook="cart_item_quantity"] .line_item_quantity {
533
+ width: 40px; }
534
+ table#cart-detail tbody#line_items tr td[data-hook="cart_item_delete"] .delete {
535
+ display: block;
536
+ width: 20px; }
537
+
538
+ div[data-hook="inside_cart_form"] .links {
539
+ margin-top: 15px; }
540
+ div[data-hook="inside_cart_form"] #subtotal {
541
+ text-align: right;
542
+ text-transform: uppercase;
543
+ margin-top: 15px; }
544
+
545
+ #empty-cart {
546
+ margin-top: 15px;
547
+ float: right; }
548
+
549
+ /*--------------------------------------*/
550
+ /* Account
551
+ /*--------------------------------------*/
552
+ #existing-customer h6, #new-customer h6, #forgot-password h6 {
553
+ text-transform: uppercase;
554
+ color: #00adee; }
555
+
556
+ #registration h6 {
557
+ text-transform: uppercase;
558
+ color: #00adee; }
559
+ #registration #existing-customer {
560
+ width: auto;
561
+ text-align: left; }
562
+
563
+ #user-info {
564
+ margin-bottom: 15px;
565
+ border: 1px solid #dedede;
566
+ padding: 10px; }
567
+
568
+ /*--------------------------------------*/
569
+ /* Order
570
+ /*--------------------------------------*/
571
+ #order_summary {
572
+ margin-top: 0; }
573
+
574
+ #order p[data-hook="links"] {
575
+ margin-left: 10px;
576
+ overflow: auto; }
577
+
578
+ table.order-summary tbody tr td {
579
+ width: 10%;
580
+ text-align: center; }
581
+ table.order-summary tbody tr td:first-child a {
582
+ text-transform: uppercase;
583
+ font-weight: bold;
584
+ color: #00adee; }
585
+
586
+ /* #Media Queries
587
+ ================================================== */
588
+ /* Smaller than standard 960 (devices and browsers) */
589
+ /* Tablet Portrait size to standard 960 (devices and browsers) */
590
+ @media only screen and (min-width: 768px) and (max-width: 959px) {
591
+ .container {
592
+ padding-left: 10px;
593
+ width: 758px; }
594
+
595
+ footer#footer {
596
+ width: 748px; }
597
+
598
+ p[data-hook="use_billing"] {
599
+ margin-top: -15px; } }
600
+ /* All Mobile Sizes (devices and browser) */
601
+ @media only screen and (max-width: 767px) {
602
+ html {
603
+ -webkit-text-size-adjust: none; }
604
+
605
+ nav#taxonomies {
606
+ text-align: center; }
607
+ nav#taxonomies ul {
608
+ padding-left: 0 !important;
609
+ list-style: none !important; }
610
+
611
+ ul#nav-bar {
612
+ text-align: center; }
613
+
614
+ .steps-data div.columns {
615
+ margin-bottom: 15px;
616
+ text-align: center; }
617
+
618
+ #order_details table[data-hook="order_details"], #order table[data-hook="order_details"] {
619
+ width: 100%; }
620
+
621
+ #update-cart #subtotal, #update-cart .links {
622
+ width: 50%;
623
+ float: left;
624
+ text-align: left; }
625
+ #update-cart #subtotal {
626
+ text-align: right; } }
627
+ /* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
628
+ @media only screen and (min-width: 480px) and (max-width: 767px) {
629
+ footer#footer {
630
+ width: auto !important; }
631
+
632
+ input, select {
633
+ vertical-align: baseline !important; }
634
+
635
+ figure#logo {
636
+ text-align: center; }
637
+
638
+ #link-to-login {
639
+ display: block;
640
+ text-align: center; }
641
+
642
+ #search-bar {
643
+ display: block;
644
+ text-align: center; }
645
+ #search-bar select {
646
+ margin-bottom: 10px; }
647
+
648
+ ul#products {
649
+ margin-left: 0;
650
+ margin-right: -20px; }
651
+ ul#products li {
652
+ width: 133px;
653
+ margin-right: 10px; }
654
+
655
+ table#cart-detail tbody tr td[data-hook="cart_item_description"], table#cart-detail tbody tr td[data-hook="order_item_description"], table[data-hook="order_details"] tbody tr td[data-hook="cart_item_description"], table[data-hook="order_details"] tbody tr td[data-hook="order_item_description"] {
656
+ font-size: 11px;
657
+ line-height: 15px;
658
+ width: 100px; }
659
+ table#cart-detail tbody tr td[data-hook="cart_item_description"] h4, table#cart-detail tbody tr td[data-hook="order_item_description"] h4, table[data-hook="order_details"] tbody tr td[data-hook="cart_item_description"] h4, table[data-hook="order_details"] tbody tr td[data-hook="order_item_description"] h4 {
660
+ font-size: 14px;
661
+ line-height: 17px;
662
+ margin-bottom: 10px; }
663
+ table#cart-detail tbody tr td[data-hook="cart_item_price"], table#cart-detail tbody tr td[data-hook="cart_item_total"],
664
+ table#cart-detail tbody tr td[data-hook="order_item_price"], table#cart-detail tbody tr td[data-hook="order_item_total"], table[data-hook="order_details"] tbody tr td[data-hook="cart_item_price"], table[data-hook="order_details"] tbody tr td[data-hook="cart_item_total"], table[data-hook="order_details"] tbody tr td[data-hook="order_item_price"], table[data-hook="order_details"] tbody tr td[data-hook="order_item_total"] {
665
+ font-size: 12px !important; }
666
+ table#cart-detail tbody tr td[data-hook="cart_item_image"] img, table#cart-detail tbody tr td[data-hook="order_item_image"] img, table[data-hook="order_details"] tbody tr td[data-hook="cart_item_image"] img, table[data-hook="order_details"] tbody tr td[data-hook="order_item_image"] img {
667
+ width: 70px; } }
668
+ /* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
669
+ @media only screen and (max-width: 479px) {
670
+ .progress-steps li {
671
+ padding: 0;
672
+ margin: 0;
673
+ width: 50%; }
674
+ .progress-steps li span {
675
+ display: block;
676
+ padding: 10px 20px; }
677
+
678
+ #shipping_method p label {
679
+ float: none;
680
+ display: block;
681
+ text-align: center;
682
+ margin-right: 0; }
683
+
684
+ p[data-hook="use_billing"] {
685
+ float: none;
686
+ margin-top: 0; }
687
+
688
+ table#cart-detail tbody tr td[data-hook="cart_item_description"], table#cart-detail tbody tr td[data-hook="order_item_description"], table[data-hook="order_details"] tbody tr td[data-hook="cart_item_description"], table[data-hook="order_details"] tbody tr td[data-hook="order_item_description"] {
689
+ padding: 0 !important;
690
+ text-indent: -9999px; }
691
+ table#cart-detail tbody tr td[data-hook="cart_item_description"] h4, table#cart-detail tbody tr td[data-hook="order_item_description"] h4, table[data-hook="order_details"] tbody tr td[data-hook="cart_item_description"] h4, table[data-hook="order_details"] tbody tr td[data-hook="order_item_description"] h4 {
692
+ display: none; }
693
+ table#cart-detail tbody tr td[data-hook="cart_item_image"] img, table#cart-detail tbody tr td[data-hook="order_item_image"] img, table[data-hook="order_details"] tbody tr td[data-hook="cart_item_image"] img, table[data-hook="order_details"] tbody tr td[data-hook="order_item_image"] img {
694
+ width: 70px; }
695
+ table#cart-detail tbody tr td[data-hook="cart_item_price"], table#cart-detail tbody tr td[data-hook="cart_item_total"], table[data-hook="order_details"] tbody tr td[data-hook="cart_item_price"], table[data-hook="order_details"] tbody tr td[data-hook="cart_item_total"] {
696
+ font-size: 14px !important; }
697
+
698
+ table.order-summary {
699
+ display: block;
700
+ position: relative;
701
+ width: 100%; }
702
+ table.order-summary thead {
703
+ display: block;
704
+ float: left; }
705
+ table.order-summary tbody {
706
+ display: block;
707
+ width: auto;
708
+ position: relative;
709
+ overflow-x: auto;
710
+ white-space: nowrap; }
711
+ table.order-summary thead tr {
712
+ display: block; }
713
+ table.order-summary th {
714
+ display: block; }
715
+ table.order-summary tbody tr {
716
+ display: inline-block;
717
+ vertical-align: top; }
718
+ table.order-summary td {
719
+ display: block;
720
+ min-height: 1.25em; }
721
+
722
+ figure#logo {
723
+ text-align: center; }
724
+
725
+ #link-to-login {
726
+ display: block;
727
+ text-align: center; }
728
+
729
+ #search-bar {
730
+ display: block;
731
+ text-align: center; }
732
+ #search-bar select {
733
+ margin-bottom: 10px; }
734
+
735
+ aside#sidebar {
736
+ text-align: center; }
737
+ aside#sidebar ul {
738
+ padding-left: 0 !important; }
739
+ aside#sidebar ul li {
740
+ list-style-type: none; }
741
+
742
+ ul#products {
743
+ margin-left: 0; }
744
+ ul#products li {
745
+ width: 140px;
746
+ margin-right: 15px; }
747
+
748
+ #content {
749
+ text-align: center; } }