diff --git a/.gitignore b/.gitignore index f2cff3d9..694efd4f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,11 +12,18 @@ db/sample9 .bundle config/deploy config/deploy/* -Gemfile.lock -Gemfile.lock +public/shops/staging public/shops/development +public/shops/aliyun_development public/shops/test +public/*.dalianshops.com config/deploy/production.rb db/full_sql rdoc .settings +.project +.ruby-version +db/*.sqlite3 +*.bak +.byebug_history +aliyun_sdk.log diff --git a/.project b/.project deleted file mode 100644 index afe77ae7..00000000 --- a/.project +++ /dev/null @@ -1,11 +0,0 @@ - - - spree_abc - - - - - - - - diff --git a/.rspec b/.rspec index 53607ea5..83e16f80 100644 --- a/.rspec +++ b/.rspec @@ -1 +1,2 @@ ---colour +--color +--require spec_helper diff --git a/Gemfile b/Gemfile index 861f4b06..ea514e7c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,99 +1,137 @@ -#source 'http://rubygems.org' -source 'http://ruby.taobao.org/' -# Bundle edge Rails instead: -ruby '1.9.3' - -gem 'rails', '4.1.8' - -gem 'mysql2' - -# Use SCSS for stylesheets -gem 'sass-rails', '~> 4.0.2' - -# Use Uglifier as compressor for JavaScript assets -gem 'uglifier', '>= 1.3.0' - -# Use CoffeeScript for .js.coffee assets and views -gem 'coffee-rails', '~> 4.0.0' - -#gem 'jquery-rails' - -# To use ActiveModel has_secure_password -# gem 'bcrypt-ruby', '~> 3.0.0' - -# Use unicorn as the web server -# gem 'unicorn' - -# Deploy with Capistrano -# gem 'capistrano' - -# To use debugger -# gem 'ruby-debug19', :require => 'ruby-debug' -#group :test, :development do -# gem "rspec-rails", "~> 2.0" -# gem "capybara" -#end - -gem 'ruby-hmac' #http://ryanbigg.com/2009/07/no-such-file-to-load-hmac-sha1/ - -gem 'spree', '~>2.4' - -# bundle config --local local.spree_simple_dash ../spree_simple_dash, using local for development -# :path => '../spree_simple_dash' -# replace Spree Analytics -# gem 'spree_simple_dash', :github=>"RuanShan/spree_simple_dash", :branch=>"1-2-stable" - -# referer to https://github.com/spree/spree/issues/2013 -gem 'spree_auth_devise', :github => "spree/spree_auth_devise", :branch => "2-4-stable" -#support rich_editor -gem 'spree_editor', :github => "spree/spree_editor", :branch=>"2-4-stable" -gem 'tinymce-rails-langs' -#gem 'daemons' -#gem 'delayed_job_active_record' -#'bundle update spree_multi_site' to update gem -# bundle config require specified branch, or warning message as below -# Cannot use local override for spree_multi_site at ../spree_multi_site because :branch is not specified in Gemfile. Specify a branch or use `bundle config --delete` to remove the local override - -gem 'spree_multi_site', :path => './spree_multi_site' - -gem "friendly_id" # spree_theme require it. -gem 'spree_theme', :path => './spree_theme' - -#only specify it here, then could use ActiveMerchant::Billing::Integrations::Alipay::Helper directly -gem 'offsite_payments' -gem 'activemerchant_patch_for_china', github:'RuanShan/activemerchant_patch_for_china', branch:'for_offsite_payments' -gem 'spree_alipay', :github => "RuanShan/spree_alipay", :branch=>"master" - -gem 'spree_china_checkout', :path => './spree_china_checkout' - -gem 'spree_essential_blog', :path => './spree_essential_blog' - -# copy from https://github.com/RuanShan/spree_flexi_variants/tree/2-1-stable -gem 'spree_flexi_variants', :path => './spree_flexi_variants' - -# copy from https://github.com/spree-contrib/spree_comments/tree/2-0-stable -gem 'spree_comments', :path => './spree_comments' - -group :test, :development do - gem 'mail_view' #, :git => 'https://github.com/37signals/mail_view.git' -end - -group :test do - gem 'rspec-rails' - gem 'database_cleaner' - gem 'factory_girl' - gem 'capybara' - gem 'capybara-accessible' - gem 'webmock' -end -#execjs need js runtime -gem 'therubyracer' - -group :development do - gem 'capistrano' - gem 'capistrano-rails', '~> 1.1.0' - gem 'capistrano-rvm', '~> 0.1.0' - gem "rails-erd" -end - - +source 'https://gems.ruby-china.org' +#source 'https://rubygems.org' +git_source(:github) do |repo_name| + repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/") + "https://github.com/#{repo_name}.git" +end + +# Bundle edge Rails instead: +# ruby '2.2.4' + +gem 'rails', '~>5.1' + +gem 'mysql2' + +# Use Puma as the app server +gem 'puma', '~> 3.7' +# Use SCSS for stylesheets +gem 'sass-rails', '~> 5.0' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier', '>= 1.3.0' + +#gem 'jquery-rails' + +# To use ActiveModel has_secure_password +# gem 'bcrypt-ruby', '~> 3.0.0' + +# Deploy with Capistrano +# gem 'capistrano' + +gem 'turbolinks', '~> 5.0.0' + +eval(File.read(File.dirname(__FILE__) + '/common_spree_dependencies.rb')) +#support rich_editor +gem 'ckeditor' +gem 'spree_editor', github: "spree/spree_editor", branch: "master" + +#gem 'spree_related_products', github: 'RuanShan/spree_related_products', branch: "3-1-stable" +# gem 'sprangular', path: './sprangular' +#'bundle update spree_multi_site' to update gem +# bundle config require specified branch, or warning message as below +# Cannot use local override for spree_multi_site at ../spree_multi_site because :branch is not specified in Gemfile. Specify a branch or use `bundle config --delete` to remove the local override + +#gem 'spree_multi_site', path: './spree_multi_site' + +# Use SCSS for stylesheets, spree_theme/spree_devise_auth required +#gem 'spree_multi_site', path: './spree_multi_site' +gem 'kaminari' +gem "acts_as_commentable" +gem 'acts-as-taggable-on' +gem 'useragent' +gem "font-awesome-rails" +gem 'spree_theme', path: './spree_theme' + +#activemerchant_patch_for_china requried +gem 'ruby-hmac' #http://ryanbigg.com/2009/07/no-such-file-to-load-hmac-sha1/ +#only specify it here, then could use ActiveMerchant::Billing::Integrations::Alipay::Helper directly +gem 'alipay' +#gem 'offsite_payments' +#gem 'spree_alipay', github: "RuanShan/spree_alipay", branch: "master" + +# Use CoffeeScript for .coffee assets and views +gem 'coffee-rails', '~> 4.2' +gem 'spree_china_checkout', path: './spree_china_checkout' +#gem 'spree_essential_blog', path: './spree_essential_blog' + +#gem 'spree_pingpp', path: './spree_pingpp' + +gem 'wechat' +#gem 'spree_omniauth', path: './spree_omniauth' + +# copy from https://github.com/RuanShan/spree_flexi_variants/tree/2-1-stable +# gem 'spree_flexi_variants', path: './spree_flexi_variants' + +# copy from https://github.com/spree-contrib/spree_comments/tree/2-0-stable +#gem 'spree_comments', path: './spree_comments' # it is moved into spree_theme +gem 'paperclip_oss_storage', github: 'RuanShan/paperclip_oss_storage', branch: 'master' + +gem 'spree_mail_settings', github: 'RuanShan/spree_mail_settings', branch: 'master' +# +gem 'bootstrap-sass', '~> 3.3.6' +gem 'autoprefixer-rails' + +gem 'activerecord-session_store' + +#gem 'proclaimer', github: 'RuanShan/proclaimer', branch: 'master' +#gem 'sidekiq' +gem 'exception_notification' +#gem 'spree_social', github: 'spree-contrib/spree_social', branch: 'master' +#gem 'omniauth' +#gem "omniauth-wechat-oauth2", git: 'git@github.com:yangsr/omniauth-wechat-oauth2.git' + +# memcached 1.4+ +# Dalli, kgio is for Dalli +#gem 'kgio' +#gem 'dalli' +gem 'sitemap_generator' + + +group :test, :development do + gem 'sqlite3' + #gem 'mail_view' #, :git => 'https://github.com/37signals/mail_view.git' +end + +group :test do + gem 'capybara', '~> 2.4' + gem 'database_cleaner', '~> 1.3' + gem 'email_spec' + gem 'factory_girl_rails', '~> 4.5.0' + gem 'launchy' + gem 'rspec-activemodel-mocks' + gem 'rspec-collection_matchers' + gem 'rspec-its' + gem 'rspec-rails', '~> 3.1.0' + gem 'selenium-webdriver' + gem 'simplecov' + gem 'webmock', '1.8.11' + gem 'poltergeist', '1.5.0' + gem 'timecop' + gem 'with_model' +end + +group :development do + gem 'pry-rails' + gem 'listen', '>= 3.0.5', '< 3.2' + gem 'byebug' + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'spring' + gem 'spring-watcher-listen', '~> 2.0.0' +end + + +#gem 'aliyun-oss-sync', github: 'qhwa/aliyun-oss-sync', branch: 'master' + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] +gem 'wdm', '>= 0.1.0', platforms: [:mingw, :mswin, :x64_mingw, :jruby] +gem 'aliyun-sdk', github: 'luluhongxu/aliyun-oss-ruby-sdk', branch: 'master' diff --git a/Gemfile.lock b/Gemfile.lock index 092ac376..21b91b80 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,315 +1,366 @@ GIT - remote: git://github.com/RuanShan/activemerchant_patch_for_china.git - revision: ead71ea3bb7f67eef6f95036dfdb4b58686773eb - branch: for_offsite_payments + remote: https://github.com/RuanShan/paperclip_oss_storage.git + revision: c2df34ed4fc242bea415c9eceaf999e46bc650da + branch: master specs: - activemerchant_patch_for_china (0.2.0) + paperclip_oss_storage (0.0.4) + paperclip (>= 3.5.2) + rest-client (>= 1.6.7) GIT - remote: git://github.com/RuanShan/spree_alipay.git - revision: a109adf38722a64b91b28f3f1eb7f79b57397a8d + remote: https://github.com/RuanShan/spree_mail_settings.git + revision: 4e818ac162fbf9c7932ff06cd0cb0bb2e89b8a1f branch: master specs: - spree_alipay (2.4.0) - spree_core (~> 2.4.0) + spree_mail_settings (3.0.0) GIT - remote: git://github.com/spree/spree_auth_devise.git - revision: 9d51f3d65a1ae6bd5aa1a48b649a1c57e52107a5 - branch: 2-4-stable + remote: https://github.com/luluhongxu/aliyun-oss-ruby-sdk.git + revision: 6e898034e5e2c8d4ff19f864a114d3e95267b4b9 + branch: master specs: - spree_auth_devise (2.2.0) - cancan (~> 1.6.10) - devise (~> 3.2.3) - devise-encryptable (= 0.1.2) - json - multi_json - spree_core (~> 2.4.0) + aliyun-sdk (0.6.0) + nokogiri (~> 1.6) + rest-client (~> 2.0.2) GIT - remote: git://github.com/spree/spree_editor.git - revision: 08a3a9383bbc28fe380186e6ed47d5444ea78f30 - branch: 2-4-stable - specs: - spree_editor (2.2.1) - ckeditor (~> 4.0.11) - spree_backend (~> 2.4.0) - tinymce-rails (~> 4.0.16) - -PATH - remote: ./spree_china_checkout - specs: - spree_china_checkout (2.4.0) - spree_core (~> 2.4.0) - -PATH - remote: ./spree_comments - specs: - spree_comments (2.4.0) - acts_as_commentable (= 3.0.1) - spree_api - spree_backend - spree_core (>= 2.4.0) - -PATH - remote: ./spree_essential_blog - specs: - spree_essential_blog (2.4.0) - acts-as-taggable-on (~> 3.1) - spree_core (~> 2.4.0) - -PATH - remote: ./spree_flexi_variants + remote: https://github.com/spree/spree_editor.git + revision: 9b2aa109b983b0f9dcc5804f88982b8e760b00b7 + branch: master specs: - spree_flexi_variants (2.4.0) - carrierwave - mini_magick - spree (>= 2.4.0) + spree_editor (3.3.2) + ckeditor (~> 4.2.0) + spree_backend (>= 3.1.0, < 4.0) + spree_core (>= 3.1.0, < 4.0) + spree_extension + tinymce-rails (~> 4.2.5) PATH - remote: ./spree_multi_site + remote: spree_china_checkout specs: - spree_multi_site (2.4.0) - spree_core (~> 2.4.0) + spree_china_checkout (3.0.0) + spree_core PATH - remote: ./spree_theme + remote: spree_theme specs: - spree_theme (2.4.0) + spree_theme (3.1.0) + acts-as-taggable-on + acts_as_commentable + erubis + font-awesome-rails (~> 4.7.0) friendly_id - spree_core (~> 2.4.0) + sitemap_generator + useragent GEM - remote: http://ruby.taobao.org/ + remote: https://gems.ruby-china.org/ specs: - actionmailer (4.1.8) - actionpack (= 4.1.8) - actionview (= 4.1.8) + actioncable (5.1.4) + actionpack (= 5.1.4) + nio4r (~> 2.0) + websocket-driver (~> 0.6.1) + actionmailer (5.1.4) + actionpack (= 5.1.4) + actionview (= 5.1.4) + activejob (= 5.1.4) mail (~> 2.5, >= 2.5.4) - actionpack (4.1.8) - actionview (= 4.1.8) - activesupport (= 4.1.8) - rack (~> 1.5.2) - rack-test (~> 0.6.2) - actionview (4.1.8) - activesupport (= 4.1.8) + rails-dom-testing (~> 2.0) + actionpack (5.1.4) + actionview (= 5.1.4) + activesupport (= 5.1.4) + rack (~> 2.0) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.1.4) + activesupport (= 5.1.4) builder (~> 3.1) - erubis (~> 2.7.0) - active_utils (2.2.3) - activesupport (>= 2.3.11) - i18n - activemerchant (1.44.1) - active_utils (~> 2.2.0) - activesupport (>= 3.2.14, < 5.0.0) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (5.1.4) + activesupport (= 5.1.4) + globalid (>= 0.3.6) + activemerchant (1.75.0) + activesupport (>= 3.2.14, < 6.x) builder (>= 2.1.2, < 4.0.0) i18n (>= 0.6.9) - json (~> 1.7) nokogiri (~> 1.4) - offsite_payments (~> 2.0.0) - activemodel (4.1.8) - activesupport (= 4.1.8) - builder (~> 3.1) - activerecord (4.1.8) - activemodel (= 4.1.8) - activesupport (= 4.1.8) - arel (~> 5.0.0) - activesupport (4.1.8) - i18n (~> 0.6, >= 0.6.9) - json (~> 1.7, >= 1.7.7) + activemodel (5.1.4) + activesupport (= 5.1.4) + activerecord (5.1.4) + activemodel (= 5.1.4) + activesupport (= 5.1.4) + arel (~> 8.0) + activerecord-session_store (1.1.0) + actionpack (>= 4.0, < 5.2) + activerecord (>= 4.0, < 5.2) + multi_json (~> 1.11, >= 1.11.2) + rack (>= 1.5.2, < 3) + railties (>= 4.0, < 5.2) + activesupport (5.1.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (~> 0.7) minitest (~> 5.1) - thread_safe (~> 0.1) tzinfo (~> 1.1) - acts-as-taggable-on (3.4.2) - activerecord (>= 3.2, < 5) - acts_as_commentable (3.0.1) - acts_as_list (0.3.0) + acts-as-taggable-on (5.0.0) + activerecord (>= 4.2.8) + acts_as_commentable (4.0.2) + acts_as_list (0.9.10) activerecord (>= 3.0) - addressable (2.3.6) - arel (5.0.1.20140414130214) - awesome_nested_set (3.0.1) - activerecord (>= 4.0.0, < 5) - bcrypt (3.1.9) - builder (3.2.2) - camertron-eprun (1.1.0) - cancan (1.6.10) - cancancan (1.9.2) - canonical-rails (0.0.7) - rails (>= 3.1, < 5.0) - capistrano (3.3.5) - capistrano-stats (~> 1.1.0) - i18n - rake (>= 10.0.0) - sshkit (~> 1.3) - capistrano-bundler (1.1.3) - capistrano (~> 3.1) - sshkit (~> 1.2) - capistrano-rails (1.1.2) - capistrano (~> 3.1) - capistrano-bundler (~> 1.1) - capistrano-rvm (0.1.2) - capistrano (~> 3.0) - sshkit (~> 1.2) - capistrano-stats (1.1.1) - capybara (2.4.4) - mime-types (>= 1.16) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + alipay (0.15.0) + arel (8.0.0) + autoprefixer-rails (7.2.3) + execjs + awesome_nested_set (3.1.3) + activerecord (>= 4.0.0, < 5.2) + bcrypt (3.1.11) + bcrypt (3.1.11-x86-mingw32) + bootstrap-sass (3.3.7) + autoprefixer-rails (>= 5.2.1) + sass (>= 3.3.4) + builder (3.2.3) + byebug (9.1.0) + camertron-eprun (1.1.1) + cancancan (2.1.2) + canonical-rails (0.2.1) + rails (>= 4.1, < 5.2) + capybara (2.16.1) + addressable + mini_mime (>= 0.1.3) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) - capybara-accessible (0.2.1) - capybara (~> 2.0) - carmen (1.0.1) - unicode_utils (~> 1.4.0) - carrierwave (0.10.0) - activemodel (>= 3.2.0) - activesupport (>= 3.2.0) - json (>= 1.7) - mime-types (>= 1.16) - choice (0.1.6) - ckeditor (4.0.11) - mime-types + carmen (1.0.2) + activesupport (>= 3.0.0) + childprocess (0.8.0) + ffi (~> 1.0, >= 1.0.11) + ckeditor (4.2.4) + cocaine orm_adapter (~> 0.5.0) - cldr-plurals-runtime-rb (1.0.0) - climate_control (0.0.3) - activesupport (>= 3.0) - cocaine (0.5.5) + cldr-plurals-runtime-rb (1.0.1) + climate_control (0.2.0) + cliver (0.3.2) + cocaine (0.5.8) climate_control (>= 0.0.3, < 1.0) - coffee-rails (4.0.1) + coderay (1.1.2) + coffee-rails (4.2.2) coffee-script (>= 2.2.0) - railties (>= 4.0.0, < 5.0) - coffee-script (2.3.0) + railties (>= 4.0.0) + coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.8.0) - colorize (0.7.4) - crack (0.4.2) + coffee-script-source (1.12.2) + concurrent-ruby (1.0.5) + crack (0.4.3) safe_yaml (~> 1.0.0) - css_parser (1.3.5) + crass (1.0.3) + css_parser (1.6.0) addressable - database_cleaner (1.3.0) - deface (1.0.1) - colorize (>= 0.5.8) - nokogiri (~> 1.6.0) + database_cleaner (1.6.2) + deface (1.3.0) + nokogiri (~> 1.6) polyglot - rails (>= 3.1) - devise (3.2.4) + rails (>= 4.1) + rainbow (>= 2.1.0) + devise (4.3.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 3.2.6, < 5) - thread_safe (~> 0.1) + railties (>= 4.1.0, < 5.2) + responders warden (~> 1.2.3) - devise-encryptable (0.1.2) + devise-encryptable (0.2.0) devise (>= 2.1.0) - diff-lcs (1.2.5) + diff-lcs (1.3) + docile (1.1.5) + domain_name (0.5.20170404) + unf (>= 0.0.5, < 1.0.0) + email_spec (2.1.1) + htmlentities (~> 4.3.3) + launchy (~> 2.1) + mail (~> 2.6) + erubi (1.7.0) erubis (2.7.0) - execjs (2.2.2) + exception_notification (4.2.2) + actionmailer (>= 4.0, < 6) + activesupport (>= 4.0, < 6) + execjs (2.7.0) factory_girl (4.5.0) activesupport (>= 3.0.0) - ffaker (1.25.0) - font-awesome-rails (4.2.0.0) - railties (>= 3.2, < 5.0) - friendly_id (5.0.4) + factory_girl_rails (4.5.0) + factory_girl (~> 4.5.0) + railties (>= 3.0.0) + ffaker (2.7.0) + ffi (1.9.18) + ffi (1.9.18-x86-mingw32) + font-awesome-rails (4.7.0.2) + railties (>= 3.2, < 5.2) + friendly_id (5.2.3) activerecord (>= 4.0.0) + globalid (0.4.1) + activesupport (>= 4.2.0) highline (1.6.21) - hike (1.2.3) - htmlentities (4.3.2) - httparty (0.13.3) - json (~> 1.8) - multi_xml (>= 0.5.2) - i18n (0.6.11) - jquery-rails (3.1.2) - railties (>= 3.0, < 5.0) + htmlentities (4.3.4) + http (2.2.2) + addressable (~> 2.3) + http-cookie (~> 1.0) + http-form_data (~> 1.0.1) + http_parser.rb (~> 0.6.0) + http-cookie (1.0.3) + domain_name (~> 0.5) + http-form_data (1.0.3) + http_parser.rb (0.6.0) + i18n (0.9.1) + concurrent-ruby (~> 1.0) + jquery-rails (4.3.1) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) thor (>= 0.14, < 2.0) - jquery-ui-rails (5.0.3) + jquery-ui-rails (6.0.1) railties (>= 3.2.16) - json (1.8.1) - kaminari (0.16.1) - actionpack (>= 3.0.0) - activesupport (>= 3.0.0) - libv8 (3.16.14.7) - mail (2.6.3) - mime-types (>= 1.16, < 3) - mail_view (2.0.4) - tilt - mime-types (2.4.3) - mini_magick (4.0.1) - mini_portile (0.6.1) - minitest (5.5.0) - monetize (1.0.0) - money (~> 6.4.0) - money (6.4.0) - i18n (>= 0.6.4, <= 0.7.0.beta1) - multi_json (1.10.1) - multi_xml (0.5.5) - mysql2 (0.3.17) - net-scp (1.2.1) - net-ssh (>= 2.6.5) - net-ssh (2.9.1) - nokogiri (1.6.5) - mini_portile (~> 0.6.0) - offsite_payments (2.0.1) - active_utils (~> 2.2.0) - activesupport (>= 3.2.14, < 5.0.0) - builder (>= 2.1.2, < 4.0.0) - i18n (~> 0.5) - json (~> 1.7) - money (< 7.0.0) - nokogiri (~> 1.4) + json (2.1.0) + kaminari (1.0.1) + activesupport (>= 4.1.0) + kaminari-actionview (= 1.0.1) + kaminari-activerecord (= 1.0.1) + kaminari-core (= 1.0.1) + kaminari-actionview (1.0.1) + actionview + kaminari-core (= 1.0.1) + kaminari-activerecord (1.0.1) + activerecord + kaminari-core (= 1.0.1) + kaminari-core (1.0.1) + launchy (2.4.3) + addressable (~> 2.3) + listen (3.1.5) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + ruby_dep (~> 1.2) + loofah (2.1.1) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + mail (2.7.0) + mini_mime (>= 0.1.1) + method_source (0.9.0) + mime-types (2.99.3) + mimemagic (0.3.2) + mini_mime (1.0.0) + mini_portile2 (2.3.0) + minitest (5.10.3) + monetize (1.7.0) + money (~> 6.9) + money (6.10.0) + i18n (>= 0.6.4, < 1.0) + multi_json (1.12.2) + mysql2 (0.4.10) + mysql2 (0.4.10-x86-mingw32) + netrc (0.11.0) + nio4r (2.1.0) + nokogiri (1.8.1) + mini_portile2 (~> 2.3.0) + nokogiri (1.8.1-x86-mingw32) + mini_portile2 (~> 2.3.0) orm_adapter (0.5.0) - paperclip (4.2.1) - activemodel (>= 3.0.0) - activesupport (>= 3.0.0) - cocaine (~> 0.5.3) + paperclip (5.1.0) + activemodel (>= 4.2.0) + activesupport (>= 4.2.0) + cocaine (~> 0.5.5) mime-types - paranoia (2.0.4) - activerecord (~> 4.0) - polyamorous (1.1.0) + mimemagic (~> 0.3.0) + paranoia (2.3.1) + activerecord (>= 4.0, < 5.2) + poltergeist (1.5.0) + capybara (~> 2.1) + cliver (~> 0.3.1) + multi_json (~> 1.0) + websocket-driver (>= 0.2.0) + polyamorous (1.3.1) activerecord (>= 3.0) polyglot (0.3.5) - premailer (1.8.2) - css_parser (>= 1.3.5) + premailer (1.11.1) + addressable + css_parser (>= 1.6.0) htmlentities (>= 4.0.0) - premailer-rails (1.8.0) - actionmailer (>= 3, < 5) + premailer-rails (1.10.1) + actionmailer (>= 3, < 6) premailer (~> 1.7, >= 1.7.9) - rabl (0.9.4.pre1) + pry (0.11.3) + coderay (~> 1.1.0) + method_source (~> 0.9.0) + pry-rails (0.3.6) + pry (>= 0.10.4) + public_suffix (3.0.1) + puma (3.11.0) + rabl (0.13.1) activesupport (>= 2.3.14) - rack (1.5.2) - rack-test (0.6.2) - rack (>= 1.0) - rails (4.1.8) - actionmailer (= 4.1.8) - actionpack (= 4.1.8) - actionview (= 4.1.8) - activemodel (= 4.1.8) - activerecord (= 4.1.8) - activesupport (= 4.1.8) - bundler (>= 1.3.0, < 2.0) - railties (= 4.1.8) - sprockets-rails (~> 2.0) - rails-erd (1.1.0) - activerecord (>= 3.0) - activesupport (>= 3.0) - choice (~> 0.1.6) - ruby-graphviz (~> 1.0.4) - railties (4.1.8) - actionpack (= 4.1.8) - activesupport (= 4.1.8) + rack (2.0.3) + rack-test (0.8.2) + rack (>= 1.0, < 3) + rails (5.1.4) + actioncable (= 5.1.4) + actionmailer (= 5.1.4) + actionpack (= 5.1.4) + actionview (= 5.1.4) + activejob (= 5.1.4) + activemodel (= 5.1.4) + activerecord (= 5.1.4) + activesupport (= 5.1.4) + bundler (>= 1.3.0) + railties (= 5.1.4) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.0.3) + loofah (~> 2.0) + railties (5.1.4) + actionpack (= 5.1.4) + activesupport (= 5.1.4) + method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rake (10.4.2) - ransack (1.4.1) + rainbow (3.0.0) + rake (12.3.0) + ransack (1.8.4) actionpack (>= 3.0) activerecord (>= 3.0) activesupport (>= 3.0) i18n - polyamorous (~> 1.1) - ref (1.0.5) + polyamorous (~> 1.3) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + responders (2.4.0) + actionpack (>= 4.2.0, < 5.3) + railties (>= 4.2.0, < 5.3) + rest-client (2.0.2) + http-cookie (>= 1.0.2, < 2.0) + mime-types (>= 1.16, < 4.0) + netrc (~> 0.8) + rest-client (2.0.2-x86-mingw32) + ffi (~> 1.9) + http-cookie (>= 1.0.2, < 2.0) + mime-types (>= 1.16, < 4.0) + netrc (~> 0.8) + rspec-activemodel-mocks (1.0.3) + activemodel (>= 3.0) + activesupport (>= 3.0) + rspec-mocks (>= 2.99, < 4.0) + rspec-collection_matchers (1.1.3) + rspec-expectations (>= 2.99.0.beta1) rspec-core (3.1.7) rspec-support (~> 3.1.0) rspec-expectations (3.1.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.1.0) + rspec-its (1.2.0) + rspec-core (>= 3.0.0) + rspec-expectations (>= 3.0.0) rspec-mocks (3.1.3) rspec-support (~> 3.1.0) rspec-rails (3.1.0) @@ -321,150 +372,218 @@ GEM rspec-mocks (~> 3.1.0) rspec-support (~> 3.1.0) rspec-support (3.1.2) - ruby-graphviz (1.0.9) ruby-hmac (0.4.0) + ruby_dep (1.5.0) + rubyzip (1.2.1) safe_yaml (1.0.4) - sass (3.2.19) - sass-rails (4.0.5) - railties (>= 4.0.0, < 5.0) - sass (~> 3.2.2) - sprockets (~> 2.8, < 3.0) - sprockets-rails (~> 2.0) + sass (3.5.3) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sass-rails (5.0.7) + railties (>= 4.0.0, < 6) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) select2-rails (3.5.9.1) thor (~> 0.14) - spree (2.4.2) - spree_api (= 2.4.2) - spree_backend (= 2.4.2) - spree_cmd (= 2.4.2) - spree_core (= 2.4.2) - spree_frontend (= 2.4.2) - spree_sample (= 2.4.2) - spree_api (2.4.2) - rabl (~> 0.9.4.pre1) - spree_core (= 2.4.2) - versioncake (~> 2.3.1) - spree_backend (2.4.2) - jquery-rails (~> 3.1.2) - jquery-ui-rails (~> 5.0.0) - select2-rails (~> 3.5.0) - spree_api (= 2.4.2) - spree_core (= 2.4.2) - spree_cmd (2.4.2) + selenium-webdriver (3.8.0) + childprocess (~> 0.5) + rubyzip (~> 1.0) + simplecov (0.15.1) + docile (~> 1.1.0) + json (>= 1.8, < 3) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.2) + sitemap_generator (6.0.0) + builder (~> 3.0) + spree (3.4.4) + spree_api (= 3.4.4) + spree_backend (= 3.4.4) + spree_cmd (= 3.4.4) + spree_core (= 3.4.4) + spree_frontend (= 3.4.4) + spree_sample (= 3.4.4) + spree_api (3.4.4) + rabl (~> 0.13.1) + spree_core (= 3.4.4) + versioncake (~> 3.3.0) + spree_auth_devise (3.3.1) + devise (~> 4.3.0) + devise-encryptable (= 0.2.0) + spree_core (>= 3.1.0, < 4.0) + spree_extension + spree_backend (3.4.4) + bootstrap-sass (~> 3.3) + jquery-rails (~> 4.3) + jquery-ui-rails (~> 6.0.1) + select2-rails (= 3.5.9.1) + spree_api (= 3.4.4) + spree_core (= 3.4.4) + spree_cmd (3.4.4) thor (~> 0.14) - spree_core (2.4.2) - activemerchant (~> 1.44.1) - acts_as_list (= 0.3.0) - awesome_nested_set (~> 3.0.1) - cancancan (~> 1.9.2) + spree_core (3.4.4) + activemerchant (~> 1.67) + acts-as-taggable-on (~> 5.0) + acts_as_list (~> 0.8) + awesome_nested_set (~> 3.1.3) + cancancan (~> 2.0) carmen (~> 1.0.0) - deface (~> 1.0.0) - ffaker (~> 1.16) - font-awesome-rails (~> 4.0) - friendly_id (~> 5.0.4) + deface (~> 1.0) + ffaker (~> 2.2) + friendly_id (~> 5.2.1) highline (~> 1.6.18) - httparty (~> 0.11) - json (~> 1.7) - kaminari (~> 0.15, >= 0.15.1) - monetize - paperclip (~> 4.2.0) - paranoia (~> 2.0) + kaminari (~> 1.0.1) + monetize (~> 1.1) + paperclip (~> 5.1.0) + paranoia (~> 2.3.0) premailer-rails - rails (~> 4.1.8) - ransack (~> 1.4.1) - state_machine (= 1.2.0) - stringex (~> 1.5.1) - truncate_html (= 0.9.2) - twitter_cldr (~> 3.0) - spree_frontend (2.4.2) - canonical-rails (~> 0.0.4) - jquery-rails (~> 3.1.2) - spree_api (= 2.4.2) - spree_core (= 2.4.2) - spree_sample (2.4.2) - spree_core (= 2.4.2) - sprockets (2.12.3) - hike (~> 1.2) - multi_json (~> 1.0) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sprockets-rails (2.2.2) - actionpack (>= 3.0) - activesupport (>= 3.0) - sprockets (>= 2.8, < 4.0) - sshkit (1.5.1) - colorize - net-scp (>= 1.1.2) - net-ssh (>= 2.8.0) - state_machine (1.2.0) - stringex (1.5.1) - therubyracer (0.12.1) - libv8 (~> 3.16.14.0) - ref - thor (0.19.1) - thread_safe (0.3.4) - tilt (1.4.1) - tinymce-rails (4.0.28.2) + rails (~> 5.1.4) + ransack (~> 1.8.0) + responders + sprockets-rails + state_machines-activerecord (~> 0.5) + stringex + twitter_cldr (~> 4.3) + spree_extension (0.0.5) + activerecord (>= 4.2) + spree_frontend (3.4.4) + bootstrap-sass (>= 3.3.5.1, < 3.4) + canonical-rails (~> 0.2.0) + jquery-rails (~> 4.3) + spree_api (= 3.4.4) + spree_core (= 3.4.4) + spree_sample (3.4.4) + spree_core (= 3.4.4) + spring (2.0.2) + activesupport (>= 4.2) + spring-watcher-listen (2.0.1) + listen (>= 2.7, < 4.0) + spring (>= 1.2, < 3.0) + sprockets (3.7.1) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.2.1) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + sqlite3 (1.3.13) + sqlite3 (1.3.13-x86-mingw32) + state_machines (0.5.0) + state_machines-activemodel (0.5.0) + activemodel (>= 4.1, < 5.2) + state_machines (>= 0.5.0) + state_machines-activerecord (0.5.0) + activerecord (>= 4.1, < 5.2) + state_machines-activemodel (>= 0.5.0) + stringex (2.8.1) + thor (0.20.0) + thread_safe (0.3.6) + tilt (2.0.8) + timecop (0.9.1) + tinymce-rails (4.2.8) railties (>= 3.1.1) - tinymce-rails-langs (4.20140129) - tinymce-rails (~> 4.0) - truncate_html (0.9.2) - twitter_cldr (3.1.0) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.1.0) + twitter_cldr (4.4.2) camertron-eprun - cldr-plurals-runtime-rb (~> 1.0.0) - json + cldr-plurals-runtime-rb (~> 1.0) tzinfo - tzinfo (1.2.2) + tzinfo (1.2.4) thread_safe (~> 0.1) - uglifier (2.6.0) - execjs (>= 0.3.0) - json (>= 1.8.0) - unicode_utils (1.4.0) - versioncake (2.3.1) + tzinfo-data (1.2017.3) + tzinfo (>= 1.0.0) + uglifier (4.0.2) + execjs (>= 0.3.0, < 3) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.4) + unf_ext (0.0.7.4-x86-mingw32) + useragent (0.16.8) + versioncake (3.3.0) actionpack (>= 3.2) activesupport (>= 3.2) railties (>= 3.2) tzinfo - warden (1.2.3) + warden (1.2.7) rack (>= 1.0) - webmock (1.20.4) - addressable (>= 2.3.6) - crack (>= 0.3.2) - xpath (2.0.0) + wdm (0.1.1) + webmock (1.8.11) + addressable (>= 2.2.7) + crack (>= 0.1.7) + websocket-driver (0.6.5) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.3) + wechat (0.8.12) + activesupport (>= 3.2, <= 5.2) + http (>= 1.0.4, < 3) + nokogiri (>= 1.6.0) + thor + with_model (2.0.0) + activerecord (>= 4.2) + xpath (2.1.0) nokogiri (~> 1.3) PLATFORMS ruby + x86-mingw32 DEPENDENCIES - activemerchant_patch_for_china! - capistrano - capistrano-rails (~> 1.1.0) - capistrano-rvm (~> 0.1.0) - capybara - capybara-accessible - coffee-rails (~> 4.0.0) - database_cleaner - factory_girl - friendly_id - mail_view + activerecord-session_store + acts-as-taggable-on + acts_as_commentable + alipay + aliyun-sdk! + autoprefixer-rails + bootstrap-sass (~> 3.3.6) + byebug + capybara (~> 2.4) + ckeditor + coffee-rails (~> 4.2) + database_cleaner (~> 1.3) + email_spec + exception_notification + factory_girl_rails (~> 4.5.0) + font-awesome-rails + kaminari + launchy + listen (>= 3.0.5, < 3.2) mysql2 - offsite_payments - rails (= 4.1.8) - rails-erd - rspec-rails + paperclip_oss_storage! + poltergeist (= 1.5.0) + pry-rails + puma (~> 3.7) + rails (~> 5.1) + rspec-activemodel-mocks + rspec-collection_matchers + rspec-its + rspec-rails (~> 3.1.0) ruby-hmac - sass-rails (~> 4.0.2) - spree (~> 2.4) - spree_alipay! - spree_auth_devise! + sass-rails (~> 5.0) + selenium-webdriver + simplecov + sitemap_generator + spree (~> 3.4.0) + spree_auth_devise (~> 3.3.0) spree_china_checkout! - spree_comments! spree_editor! - spree_essential_blog! - spree_flexi_variants! - spree_multi_site! + spree_mail_settings! spree_theme! - therubyracer - tinymce-rails-langs + spring + spring-watcher-listen (~> 2.0.0) + sqlite3 + timecop + turbolinks (~> 5.0.0) + tzinfo-data uglifier (>= 1.3.0) - webmock + useragent + wdm (>= 0.1.0) + webmock (= 1.8.11) + wechat + with_model + +BUNDLED WITH + 1.16.0 diff --git a/README.md b/README.md index 36c14634..132f6f6d 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,44 @@ -Welcome to SpreeABC -=================== +#Welcome to SpreeABC Introduction goes here. SpreeABC is e-commerce solution based on spree. Difference is that you could create many websites, it is more like shopify and for china user. - -Development -=========== - install migrations - rm db/migrate -Rf - bundle exec rake railties:install:migrations - -Deployment -========== + __It is working in progress__. + +##Project structure + +####external gems +* spree - basic e-commerce solution +* spree_editor - rich text editor with file uploading inplace +* spree_alipay - payment method alipay + +####internal gems +* spree_essential_blog - support articles +* spree_flexi_variants - create product variants as-needed, option value has image. +* spree_comments - comments to product/article +* spree_multi_site - support multiple separated website +* spree_theme - frontend template system +* spree_china_checkout - improve checkout flow for china user. + +##Development + bundle + rake db:create + rake db:migrate + rake db:seed + +##Deployment bundle install --deloyment bundle exec rake db:reset RAILS_ENV=production bundle exec rake assets:precompile RAILS_ENV=production - useful links: - [A Capistrano Rails Guide]( https://gist.github.com/jrochkind/2161449 ) +####Helpful links for deployment + +####Helpful command for deployent + bundle exec rake railties:install:migrations iptables -A INPUT -p tcp -s 127.0.0.1 --dport 8080 -j ACCEPT sestatus -b | grep httpd togglesebool httpd_can_network_connection -Testing -------- - -Be sure to bundle your dependencies and then create a dummy test app for the specs to run against. +##Testing Copyright (c) 2012 [david,hui], released under the New BSD License diff --git a/public/favicon.ico b/app/assets/images/favicon.ico similarity index 100% rename from public/favicon.ico rename to app/assets/images/favicon.ico diff --git a/app/assets/images/noimage/large.png b/app/assets/images/noimage/large.png new file mode 100644 index 00000000..8bd3ccb6 Binary files /dev/null and b/app/assets/images/noimage/large.png differ diff --git a/app/assets/images/noimage/medium.png b/app/assets/images/noimage/medium.png new file mode 100644 index 00000000..6e5d9e1a Binary files /dev/null and b/app/assets/images/noimage/medium.png differ diff --git a/app/assets/images/noimage/medium2.png b/app/assets/images/noimage/medium2.png new file mode 100644 index 00000000..8bd3ccb6 Binary files /dev/null and b/app/assets/images/noimage/medium2.png differ diff --git a/app/assets/images/noimage/mini.png b/app/assets/images/noimage/mini.png new file mode 100644 index 00000000..96112ed2 Binary files /dev/null and b/app/assets/images/noimage/mini.png differ diff --git a/app/assets/images/noimage/post_large.png b/app/assets/images/noimage/post_large.png new file mode 100644 index 00000000..3a704c61 Binary files /dev/null and b/app/assets/images/noimage/post_large.png differ diff --git a/app/assets/images/noimage/post_medium.png b/app/assets/images/noimage/post_medium.png new file mode 100644 index 00000000..c7d33d32 Binary files /dev/null and b/app/assets/images/noimage/post_medium.png differ diff --git a/app/assets/images/noimage/post_mini.png b/app/assets/images/noimage/post_mini.png new file mode 100644 index 00000000..bc95cb60 Binary files /dev/null and b/app/assets/images/noimage/post_mini.png differ diff --git a/app/assets/images/noimage/post_small.png b/app/assets/images/noimage/post_small.png new file mode 100644 index 00000000..06f5bbb1 Binary files /dev/null and b/app/assets/images/noimage/post_small.png differ diff --git a/app/assets/images/noimage/product.png b/app/assets/images/noimage/product.png new file mode 100644 index 00000000..8bd3ccb6 Binary files /dev/null and b/app/assets/images/noimage/product.png differ diff --git a/app/assets/images/noimage/small.png b/app/assets/images/noimage/small.png new file mode 100644 index 00000000..4fb13eaa Binary files /dev/null and b/app/assets/images/noimage/small.png differ diff --git a/app/assets/javascripts/ckeditor/config.js b/app/assets/javascripts/ckeditor/config.js new file mode 100644 index 00000000..435fdc7d --- /dev/null +++ b/app/assets/javascripts/ckeditor/config.js @@ -0,0 +1,132 @@ +// it caused tool item icon massed up in staging env. + +CKEDITOR.editorConfig = function( config ) { + // copied from original config.js ckeditor 4.0.11 + + // Define changes to default configuration here. For example: + // config.language = 'fr'; + // config.uiColor = '#AADC6E'; + + /* Filebrowser routes */ + // The location of an external file browser, that should be launched when "Browse Server" button is pressed. + config.filebrowserBrowseUrl = "/ckeditor/attachment_files"; + + // The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Flash dialog. + config.filebrowserFlashBrowseUrl = "/ckeditor/attachment_files"; + + // The location of a script that handles file uploads in the Flash dialog. + config.filebrowserFlashUploadUrl = "/ckeditor/attachment_files"; + + // The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Link tab of Image dialog. + config.filebrowserImageBrowseLinkUrl = "/ckeditor/pictures"; + + // The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Image dialog. + config.filebrowserImageBrowseUrl = "/ckeditor/pictures"; + + // The location of a script that handles file uploads in the Image dialog. + config.filebrowserImageUploadUrl = "/ckeditor/pictures"; + + // The location of a script that handles file uploads. + config.filebrowserUploadUrl = "/ckeditor/attachment_files"; + + // Rails CSRF token + config.filebrowserParams = function(){ + var csrf_token, csrf_param, meta, + metas = document.getElementsByTagName('meta'), + params = new Object(); + + for ( var i = 0 ; i < metas.length ; i++ ){ + meta = metas[i]; + + switch(meta.name) { + case "csrf-token": + csrf_token = meta.content; + break; + case "csrf-param": + csrf_param = meta.content; + break; + default: + continue; + } + } + + if (csrf_param !== undefined && csrf_token !== undefined) { + params[csrf_param] = csrf_token; + } + + return params; + }; + + config.addQueryString = function( url, params ){ + var queryString = []; + + if ( !params ) { + return url; + } else { + for ( var i in params ) + queryString.push( i + "=" + encodeURIComponent( params[ i ] ) ); + } + + return url + ( ( url.indexOf( "?" ) != -1 ) ? "&" : "?" ) + queryString.join( "&" ); + }; + + // Integrate Rails CSRF token into file upload dialogs (link, image, attachment and flash) + CKEDITOR.on( 'dialogDefinition', function( ev ){ + // Take the dialog name and its definition from the event data. + var dialogName = ev.data.name; + var dialogDefinition = ev.data.definition; + var content, upload; + + if (CKEDITOR.tools.indexOf(['link', 'image', 'attachment', 'flash'], dialogName) > -1) { + content = (dialogDefinition.getContents('Upload') || dialogDefinition.getContents('upload')); + upload = (content == null ? null : content.get('upload')); + + if (upload && upload.filebrowser && upload.filebrowser['params'] === undefined) { + upload.filebrowser['params'] = config.filebrowserParams(); + upload.action = config.addQueryString(upload.action, upload.filebrowser['params']); + } + } + }); + + config.language = 'zh-cn'; + // Default setting. + //config.toolbarGroups = [ + // { name: 'document', groups: [ 'mode', 'document' ] }, + // { name: 'clipboard', groups: [ 'clipboard', 'undo' ] }, + // //{ name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ] }, + // //{ name: 'forms' }, + // //'/', + // //{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] }, + // //{ name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] }, + // { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align' ] }, + // { name: 'links' }, + // { name: 'insert' },{ name: 'tools' }, + // '/', + // { name: 'styles' }, + // { name: 'colors' }, + // { name: 'others' }, + // //{ name: 'about' } + //]; + + config.toolbar_Full = [  +     { name: 'document', items : [ 'Source','-','NewPage','DocProps','Preview','Templates' ] }, +      { name: 'clipboard', items : [ 'Cut','Copy','Paste','PasteText','PasteFromWord','-','Undo','Redo' ] },  +     //{ name: 'editing', items : [ 'Find','Replace','-','SelectAll','-','SpellChecker', 'Scayt' ] }, + //{ name: 'forms', items : [ 'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton','HiddenField' ] }, + { name: 'links', items : [ 'Link','Unlink' ] },      + //{ name: 'insert', items : [ 'Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak','Iframe' ] }, + { name: 'insert', items : [ 'Image','Flash','Table','HorizontalRule' ] }, + { name: 'tools', items : [ 'Maximize', 'ShowBlocks' ] }, +      //'/', +     { name: 'basicstyles', items : [ 'Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat' ] }, +      { name: 'paragraph', items : [ 'NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote','CreateDiv', '-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','BidiLtr','BidiRtl' ] }, +      //'/',  +     { name: 'styles', items : [ 'Styles','Format','Font','FontSize' ] },      + { name: 'colors', items : [ 'TextColor','BGColor' ] },  +     //{ name: 'tools', items : [ 'Maximize', 'ShowBlocks','-','About' ] }  + + ]; + config.toolbar = 'Full';    + //http://sdk.ckeditor.com/samples/acf.html + config.extraAllowedContent = 'a[class,style,href,target,title,data-*](*){*};p[id](*){*}'; +}; diff --git a/app/assets/javascripts/html5shiv.js b/app/assets/javascripts/html5shiv.js new file mode 100644 index 00000000..7857c93a --- /dev/null +++ b/app/assets/javascripts/html5shiv.js @@ -0,0 +1,326 @@ +/** +* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +;(function(window, document) { +/*jshint evil:true */ + /** version */ + var version = '3.7.3-pre'; + + /** Preset options */ + var options = window.html5 || {}; + + /** Used to skip problem elements */ + var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; + + /** Not all elements can be cloned in IE **/ + var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; + + /** Detect whether the browser supports default html5 styles */ + var supportsHtml5Styles; + + /** Name of the expando, to work with multiple documents or to re-shiv one document */ + var expando = '_html5shiv'; + + /** The id for the the documents expando */ + var expanID = 0; + + /** Cached data for each document */ + var expandoData = {}; + + /** Detect whether the browser supports unknown elements */ + var supportsUnknownElements; + + (function() { + try { + var a = document.createElement('a'); + a.innerHTML = ''; + //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles + supportsHtml5Styles = ('hidden' in a); + + supportsUnknownElements = a.childNodes.length == 1 || (function() { + // assign a false positive if unable to shiv + (document.createElement)('a'); + var frag = document.createDocumentFragment(); + return ( + typeof frag.cloneNode == 'undefined' || + typeof frag.createDocumentFragment == 'undefined' || + typeof frag.createElement == 'undefined' + ); + }()); + } catch(e) { + // assign a false positive if detection fails => unable to shiv + supportsHtml5Styles = true; + supportsUnknownElements = true; + } + + }()); + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a style sheet with the given CSS text and adds it to the document. + * @private + * @param {Document} ownerDocument The document. + * @param {String} cssText The CSS text. + * @returns {StyleSheet} The style element. + */ + function addStyleSheet(ownerDocument, cssText) { + var p = ownerDocument.createElement('p'), + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; + + p.innerHTML = 'x'; + return parent.insertBefore(p.lastChild, parent.firstChild); + } + + /** + * Returns the value of `html5.elements` as an array. + * @private + * @returns {Array} An array of shived element node names. + */ + function getElements() { + var elements = html5.elements; + return typeof elements == 'string' ? elements.split(' ') : elements; + } + + /** + * Extends the built-in list of html5 elements + * @memberOf html5 + * @param {String|Array} newElements whitespace separated list or array of new element names to shiv + * @param {Document} ownerDocument The context document. + */ + function addElements(newElements, ownerDocument) { + var elements = html5.elements; + if(typeof elements != 'string'){ + elements = elements.join(' '); + } + if(typeof newElements != 'string'){ + newElements = newElements.join(' '); + } + html5.elements = elements +' '+ newElements; + shivDocument(ownerDocument); + } + + /** + * Returns the data associated to the given document + * @private + * @param {Document} ownerDocument The document. + * @returns {Object} An object of data. + */ + function getExpandoData(ownerDocument) { + var data = expandoData[ownerDocument[expando]]; + if (!data) { + data = {}; + expanID++; + ownerDocument[expando] = expanID; + expandoData[expanID] = data; + } + return data; + } + + /** + * returns a shived element for the given nodeName and document + * @memberOf html5 + * @param {String} nodeName name of the element + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived element. + */ + function createElement(nodeName, ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createElement(nodeName); + } + if (!data) { + data = getExpandoData(ownerDocument); + } + var node; + + if (data.cache[nodeName]) { + node = data.cache[nodeName].cloneNode(); + } else if (saveClones.test(nodeName)) { + node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); + } else { + node = data.createElem(nodeName); + } + + // Avoid adding some elements to fragments in IE < 9 because + // * Attributes like `name` or `type` cannot be set/changed once an element + // is inserted into a document/fragment + // * Link elements with `src` attributes that are inaccessible, as with + // a 403 response, will cause the tab/window to crash + // * Script elements appended to fragments will execute when their `src` + // or `text` property is set + return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; + } + + /** + * returns a shived DocumentFragment for the given document + * @memberOf html5 + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived DocumentFragment. + */ + function createDocumentFragment(ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createDocumentFragment(); + } + data = data || getExpandoData(ownerDocument); + var clone = data.frag.cloneNode(), + i = 0, + elems = getElements(), + l = elems.length; + for(;i= IE7.compat) return; + +var MSIE5 = appVersion < 6; + +var Undefined = K(); +var documentElement = document.documentElement, body, viewport; +var ANON = "!"; +var HEADER = ":link{ie7-link:link}:visited{ie7-link:visited}"; + +// ----------------------------------------------------------------------- +// external +// ----------------------------------------------------------------------- + +var RELATIVE = /^[\w\.]+[^:]*$/; +function makePath(href, path) { + if (RELATIVE.test(href)) href = (path || "") + href; + return href; +}; + +function getPath(href, path) { + href = makePath(href, path); + return href.slice(0, href.lastIndexOf("/") + 1); +}; + +// Get the path to this script +var script = document.scripts[document.scripts.length - 1]; +var path = getPath(script.src); + +// Use microsoft's http request object to load external files +try { + var httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); +} catch (ex) { + // ActiveX disabled +} + +var fileCache = {}; +function loadFile(href, path) { + try { + href = makePath(href, path); + if (!fileCache[href]) { + httpRequest.open("GET", href, false); + httpRequest.send(); + if (httpRequest.status == 0 || httpRequest.status == 200) { + fileCache[href] = httpRequest.responseText; + } + } + } catch (ex) { + // ignore errors + } + return fileCache[href] || ""; +}; + +// ----------------------------------------------------------------------- +// OO support +// ----------------------------------------------------------------------- + + +// This is a cut-down version of base2 (http://code.google.com/p/base2/) + +var _slice = Array.prototype.slice; + +// private +var _FORMAT = /%([1-9])/g; +var _LTRIM = /^\s\s*/; +var _RTRIM = /\s\s*$/; +var _RESCAPE = /([\/()[\]{}|*+-.,^$?\\])/g; // safe regular expressions +var _BASE = /\bbase\b/; +var _HIDDEN = ["constructor", "toString"]; // only override these when prototyping + +var prototyping; + +function Base(){}; +Base.extend = function(_instance, _static) { + // Build the prototype. + prototyping = true; + var _prototype = new this; + extend(_prototype, _instance); + prototyping = false; + + // Create the wrapper for the constructor function. + var _constructor = _prototype.constructor; + function klass() { + // Don't call the constructor function when prototyping. + if (!prototyping) _constructor.apply(this, arguments); + }; + _prototype.constructor = klass; + + // Build the static interface. + klass.extend = arguments.callee; + extend(klass, _static); + klass.prototype = _prototype; + return klass; +}; +Base.prototype.extend = function(source) { + return extend(this, source); +}; + + +// A collection of regular expressions and their associated replacement values. +// A Base class for creating parsers. + +var HASH = "#"; +var ITEMS = "#"; +var KEYS = "."; +var COMPILED = "/"; + +var REGGRP_BACK_REF = /\\(\d+)/g, + REGGRP_ESCAPE_COUNT = /\[(\\.|[^\]\\])+\]|\\.|\(\?/g, + REGGRP_PAREN = /\(/g, + REGGRP_LOOKUP = /\$(\d+)/, + REGGRP_LOOKUP_SIMPLE = /^\$\d+$/, + REGGRP_LOOKUPS = /(\[(\\.|[^\]\\])+\]|\\.|\(\?)|\(/g, + REGGRP_DICT_ENTRY = /^<#\w+>$/, + REGGRP_DICT_ENTRIES = /<#(\w+)>/g; + +var RegGrp = Base.extend({ + constructor: function(values) { + this[KEYS] = []; + this[ITEMS] = {}; + this.merge(values); + }, + + //dictionary: null, + //ignoreCase: false, + + add: function(expression, replacement) { + delete this[COMPILED]; + if (expression instanceof RegExp) { + expression = expression.source; + } + if (!this[HASH + expression]) this[KEYS].push(String(expression)); + return this[ITEMS][HASH + expression] = new RegGrp.Item(expression, replacement, this); + }, + + compile: function(recompile) { + if (recompile || !this[COMPILED]) { + this[COMPILED] = new RegExp(this, this.ignoreCase ? "gi" : "g"); + } + return this[COMPILED]; + }, + + merge: function(values) { + for (var i in values) this.add(i, values[i]); + }, + + exec: function(string) { + var group = this, + patterns = group[KEYS], + items = group[ITEMS], item; + var result = this.compile(true).exec(string); + if (result) { + // Loop through the RegGrp items. + var i = 0, offset = 1; + while ((item = items[HASH + patterns[i++]])) { + var next = offset + item.length + 1; + if (result[offset]) { // do we have a result? + if (item.replacement === 0) { + return group.exec(string); + } else { + var args = result.slice(offset, next), j = args.length; + while (--j) args[j] = args[j] || ""; // some platforms return null/undefined for non-matching sub-expressions + args[0] = {match: args[0], item: item}; + return args; + } + } + offset = next; + } + } + return null; + }, + + parse: function(string) { + string += ""; // type safe + var group = this, + patterns = group[KEYS], + items = group[ITEMS]; + return string.replace(this.compile(), function(match) { + var args = [], item, offset = 1, i = arguments.length; + while (--i) args[i] = arguments[i] || ""; // some platforms return null/undefined for non-matching sub-expressions + // Loop through the RegGrp items. + while ((item = items[HASH + patterns[i++]])) { + var next = offset + item.length + 1; + if (args[offset]) { // do we have a result? + var replacement = item.replacement; + switch (typeof replacement) { + case "function": + return replacement.apply(group, args.slice(offset, next)); + case "number": + return args[offset + replacement]; + default: + return replacement; + } + } + offset = next; + } + return match; + }); + }, + + toString: function() { + var strings = [], + keys = this[KEYS], + items = this[ITEMS], item; + for (var i = 0; item = items[HASH + keys[i]]; i++) { + strings[i] = item.source; + } + return "(" + strings.join(")|(") + ")"; + } +}, { + IGNORE: null, // a null replacement value means that there is no replacement. + + Item: Base.extend({ + constructor: function(source, replacement, owner) { + var length = source.indexOf("(") === -1 ? 0 : RegGrp.count(source); + + var dictionary = owner.dictionary; + if (dictionary && source.indexOf("<#") !== -1) { + if (REGGRP_DICT_ENTRY.test(source)) { + var entry = dictionary[ITEMS][HASH + source.slice(2, -1)]; + source = entry.replacement; + length = entry._length; + } else { + source = dictionary.parse(source); + } + } + + if (typeof replacement == "number") replacement = String(replacement); + else if (replacement == null) replacement = 0; + + // Does the expression use sub-expression lookups? + if (typeof replacement == "string" && REGGRP_LOOKUP.test(replacement)) { + if (REGGRP_LOOKUP_SIMPLE.test(replacement)) { // A simple lookup? (e.g. "$2"). + // Store the index (used for fast retrieval of matched strings). + var index = replacement.slice(1) - 0; + if (index && index <= length) replacement = index; + } else { + // A complicated lookup (e.g. "Hello $2 $1."). + var lookup = replacement, regexp; + replacement = function(match) { + if (!regexp) { + regexp = new RegExp(source, "g" + (this.ignoreCase ? "i": "")); + } + return match.replace(regexp, lookup); + }; + } + } + + this.length = length; + this.source = String(source); + this.replacement = replacement; + } + }), + + count: function(expression) { + return (String(expression).replace(REGGRP_ESCAPE_COUNT, "").match(REGGRP_PAREN) || "").length; + } +}); + +var Dictionary = RegGrp.extend({ + parse: function(phrase) { + // Prevent sub-expressions in dictionary entries from capturing. + var entries = this[ITEMS]; + return phrase.replace(REGGRP_DICT_ENTRIES, function(match, entry) { + entry = entries[HASH + entry]; + return entry ? entry._nonCapturing : match; + }); + }, + + add: function(expression, replacement) { + // Get the underlying replacement value. + if (replacement instanceof RegExp) { + replacement = replacement.source; + } + // Translate the replacement. + // The result is the original replacement recursively parsed by this dictionary. + var nonCapturing = replacement.replace(REGGRP_LOOKUPS, _nonCapture); + if (replacement.indexOf("(") !== -1) { + var realLength = RegGrp.count(replacement); + } + if (replacement.indexOf("<#") !== -1) { + replacement = this.parse(replacement); + nonCapturing = this.parse(nonCapturing); + } + var item = this.base(expression, replacement); + item._nonCapturing = nonCapturing; + item._length = realLength || item.length; // underlying number of sub-groups + return item; + }, + + toString: function() { + return "(<#" + this[PATTERNS].join(">)|(<#") + ">)"; + } +}); + +function _nonCapture(match, escaped) { + return escaped || "(?:"; // non-capturing +}; + +// ========================================================================= +// lang/extend.js +// ========================================================================= + +function extend(object, source) { // or extend(object, key, value) + if (object && source) { + var proto = (typeof source == "function" ? Function : Object).prototype; + // Add constructor, toString etc + var i = _HIDDEN.length, key; + if (prototyping) while (key = _HIDDEN[--i]) { + var value = source[key]; + if (value != proto[key]) { + if (_BASE.test(value)) { + _override(object, key, value) + } else { + object[key] = value; + } + } + } + // Copy each of the source object's properties to the target object. + for (key in source) if (typeof proto[key] == "undefined") { + var value = source[key]; + // Check for method overriding. + if (object[key] && typeof value == "function" && _BASE.test(value)) { + _override(object, key, value); + } else { + object[key] = value; + } + } + } + return object; +}; + +function _override(object, name, method) { + // Override an existing method. + var ancestor = object[name]; + object[name] = function() { + var previous = this.base; + this.base = ancestor; + var returnValue = method.apply(this, arguments); + this.base = previous; + return returnValue; + }; +}; + +function combine(keys, values) { + // Combine two arrays to make a hash. + if (!values) values = keys; + var hash = {}; + for (var i in keys) hash[i] = values[i]; + return hash; +}; + +function format(string) { + // Replace %n with arguments[n]. + // e.g. format("%1 %2%3 %2a %1%3", "she", "se", "lls"); + // ==> "she sells sea shells" + // Only %1 - %9 supported. + var args = arguments; + var _FORMAT = new RegExp("%([1-" + arguments.length + "])", "g"); + return String(string).replace(_FORMAT, function(match, index) { + return index < args.length ? args[index] : match; + }); +}; + +function match(string, expression) { + // Same as String.match() except that this function will return an empty + // array if there is no match. + return String(string).match(expression) || []; +}; + +function rescape(string) { + // Make a string safe for creating a RegExp. + return String(string).replace(_RESCAPE, "\\$1"); +}; + +// http://blog.stevenlevithan.com/archives/faster-trim-javascript +function trim(string) { + return String(string).replace(_LTRIM, "").replace(_RTRIM, ""); +}; + +function K(k) { + return function() { + return k; + }; +}; + +// ----------------------------------------------------------------------- +// parsing +// ----------------------------------------------------------------------- + +var Parser = RegGrp.extend({ignoreCase: true}); + +var SINGLE_QUOTES = /'/g, + ESCAPED = /'(\d+)'/g, + ESCAPE = /\\/g, + UNESCAPE = /\\([nrtf'"])/g; + +var strings = []; + +var encoder = new Parser({ + // comments + "": "", + "\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/": "", + // get rid + "@(namespace|import)[^;\\n]+[;\\n]": "", + // strings + "'(\\\\.|[^'\\\\])*'": encodeString, + '"(\\\\.|[^"\\\\])*"': encodeString, + // white space + "\\s+": " " +}); + +function encode(selector) { + return encoder.parse(selector).replace(UNESCAPE, "$1"); +}; + +function decode(query) { + // put string values back + return query.replace(ESCAPED, decodeString); +}; + +function encodeString(string) { + var index = strings.length; + strings[index] = string.slice(1, -1) + .replace(UNESCAPE, "$1") + .replace(SINGLE_QUOTES, "\\'"); + return "'" + index + "'"; +}; + +function decodeString(match, index) { + var string = strings[index]; + if (string == null) return match; + return "'" + strings[index] + "'"; +}; + +function getString(value) { + return value.indexOf("'") === 0 ? strings[value.slice(1, - 1)] : value; +}; + +// clone a "width" function to create a "height" function +var rotater = new RegGrp({ + Width: "Height", + width: "height", + Left: "Top", + left: "top", + Right: "Bottom", + right: "bottom", + onX: "onY" +}); + +function rotate(fn) { + return rotater.parse(fn); +}; + +// ----------------------------------------------------------------------- +// event handling +// ----------------------------------------------------------------------- + +var eventHandlers = []; + +function addResize(handler) { + addRecalc(handler); + addEventHandler(window, "onresize", handler); +}; + +// add an event handler (function) to an element +function addEventHandler(element, type, handler) { + element.attachEvent(type, handler); + // store the handler so it can be detached later + eventHandlers.push(arguments); +}; + +// remove an event handler assigned to an element by IE7 +function removeEventHandler(element, type, handler) { + try { + element.detachEvent(type, handler); + } catch (ex) { + // write a letter of complaint to microsoft.. + } +}; + +// remove event handlers (they eat memory) +addEventHandler(window, "onunload", function() { + var handler; + while (handler = eventHandlers.pop()) { + removeEventHandler(handler[0], handler[1], handler[2]); + } +}); + +function register(handler, element, condition) { // -@DRE + //var set = handler[element.uniqueID]; + if (!handler.elements) handler.elements = {}; + if (condition) handler.elements[element.uniqueID] = element; + else delete handler.elements[element.uniqueID]; + //return !set && condition; + return condition; +}; + +addEventHandler(window, "onbeforeprint", function() { + if (!IE7.CSS.print) new StyleSheet("print"); + IE7.CSS.print.recalc(); +}); + +// ----------------------------------------------------------------------- +// pixel conversion +// ----------------------------------------------------------------------- + +// this is handy because it means that web developers can mix and match +// measurement units in their style sheets. it is not uncommon to +// express something like padding in "em" units whilst border thickness +// is most often expressed in pixels. + +var PIXEL = /^\d+(px)?$/i; +var PERCENT = /^\d+%$/; +var getPixelValue = function(element, value) { + if (PIXEL.test(value)) return parseInt(value); + var style = element.style.left; + var runtimeStyle = element.runtimeStyle.left; + element.runtimeStyle.left = element.currentStyle.left; + element.style.left = value || 0; + value = element.style.pixelLeft; + element.style.left = style; + element.runtimeStyle.left = runtimeStyle; + return value; +}; + +// ----------------------------------------------------------------------- +// generic +// ----------------------------------------------------------------------- + +var $IE7 = "ie7-"; + +var Fix = Base.extend({ + constructor: function() { + this.fixes = []; + this.recalcs = []; + }, + init: Undefined +}); + +// a store for functions that will be called when refreshing IE7 +var recalcs = []; +function addRecalc(recalc) { + recalcs.push(recalc); +}; + +IE7.recalc = function() { + IE7.HTML.recalc(); + // re-apply style sheet rules (re-calculate ie7 classes) + IE7.CSS.recalc(); + // apply global fixes to the document + for (var i = 0; i < recalcs.length; i++) recalcs[i](); +}; + +function isFixed(element) { + return element.currentStyle["ie7-position"] == "fixed"; +}; + +// original style +function getDefinedStyle(element, propertyName) { + return element.currentStyle[$IE7 + propertyName] || element.currentStyle[propertyName]; +}; + +function setOverrideStyle(element, propertyName, value) { + if (element.currentStyle[$IE7 + propertyName] == null) { + element.runtimeStyle[$IE7 + propertyName] = element.currentStyle[propertyName]; + } + element.runtimeStyle[propertyName] = value; +}; + +// Create a temporary element which is used to inherit styles +// from the target element. +function createTempElement(tagName) { + var element = document.createElement(tagName || "object"); + element.style.cssText = "position:absolute;padding:0;display:block;border:none;clip:rect(0 0 0 0);left:-9999"; + element.ie7_anon = true; + return element; +}; + + +// ========================================================================= +// ie7-css.js +// ========================================================================= + +var NEXT_SIBLING = "(e.nextSibling&&IE7._getElementSibling(e,'next'))", + PREVIOUS_SIBLING = NEXT_SIBLING.replace(/next/g, "previous"), + IS_ELEMENT = "e.nodeName>'@'", + IF_ELEMENT = "if(" + IS_ELEMENT + "){"; + +var ID_ATTRIBUTE = "(e.nodeName==='FORM'?IE7._getAttribute(e,'id'):e.id)"; + +var HYPERLINK = /a(#[\w-]+)?(\.[\w-]+)?:(hover|active)/i; +var FIRST_LINE_LETTER = /(.*)(:first-(line|letter))/; +var SPACE = /\s/; +var RULE = /((?:\\.|[^{\\])+)\{((?:\\.|[^}\\])+)\}/g; +var SELECTOR = /(?:\\.|[^,\\])+/g; + +var styleSheets = document.styleSheets; + +var inheritedProperties = []; + +IE7.CSS = new (Fix.extend({ // single instance + parser: new Parser, + screen: "", + print: "", + styles: [], + rules: [], + pseudoClasses: appVersion < 7 ? "first\\-child" : "", + dynamicPseudoClasses: { + toString: function() { + var strings = []; + for (var pseudoClass in this) strings.push(pseudoClass); + return strings.join("|"); + } + }, + + init: function() { + var NONE = "^\x01$"; + var CLASS = "\\[class=?[^\\]]*\\]"; + var pseudoClasses = []; + if (this.pseudoClasses) pseudoClasses.push(this.pseudoClasses); + var dynamicPseudoClasses = this.dynamicPseudoClasses.toString(); + if (dynamicPseudoClasses) pseudoClasses.push(dynamicPseudoClasses); + pseudoClasses = pseudoClasses.join("|"); + var unknown = appVersion < 7 ? ["[>+~\\[(]|([:.])[\\w-]+\\1"] : [CLASS]; + if (pseudoClasses) unknown.push(":(" + pseudoClasses + ")"); + this.UNKNOWN = new RegExp(unknown.join("|") || NONE, "i"); + var complex = appVersion < 7 ? ["\\[[^\\]]+\\]|[^\\s(\\[]+\\s*[+~]"] : [CLASS]; + var complexRule = complex.concat(); + if (pseudoClasses) complexRule.push(":(" + pseudoClasses + ")"); + Rule.COMPLEX = new RegExp(complexRule.join("|") || NONE, "ig"); + if (this.pseudoClasses) complex.push(":(" + this.pseudoClasses + ")"); + DynamicRule.COMPLEX = new RegExp(complex.join("|") || NONE, "i"); + dynamicPseudoClasses = "not\\(:" + dynamicPseudoClasses.split("|").join("\\)|not\\(:") + "\\)|" + dynamicPseudoClasses; + DynamicRule.MATCH = new RegExp(dynamicPseudoClasses ? "(.*?):(" + dynamicPseudoClasses + ")(.*)" : NONE, "i"); + + this.createStyleSheet(); + this.refresh(); + }, + + addEventHandler: function() { + addEventHandler.apply(null, arguments); + }, + + addFix: function(expression, replacement) { + this.parser.add(expression, replacement); + }, + + addRecalc: function(propertyName, test, handler, replacement) { + // recalcs occur whenever the document is refreshed using document.recalc() + propertyName = propertyName.source || propertyName; + test = new RegExp("([{;\\s])" + propertyName + "\\s*:\\s*" + test + "[^;}]*"); + var id = this.recalcs.length; + if (typeof replacement == "string") replacement = propertyName + ":" + replacement; + this.addFix(test, function(match) { + if (typeof replacement == "function") replacement = replacement(match); + return (replacement ? replacement : match) + ";ie7-" + match.slice(1) + ";ie7_recalc" + id + ":1"; + }); + this.recalcs.push(arguments); + return id; + }, + + apply: function() { + this.getInlineCSS(); + new StyleSheet("screen"); + this.trash(); + }, + + createStyleSheet: function() { + // create the IE7 style sheet + document.getElementsByTagName("head")[0].appendChild(document.createElement("style")); + this.styleSheet = styleSheets[styleSheets.length - 1]; + // flag it so we can ignore it during parsing + this.styleSheet.ie7 = true; + this.styleSheet.owningElement.ie7 = true; + this.styleSheet.cssText = HEADER; + }, + + getInlineCSS: function() {// load inline styles + var styleSheets = document.getElementsByTagName("style"), styleSheet; + for (var i = styleSheets.length - 1; styleSheet = styleSheets[i]; i--) { + if (!styleSheet.disabled && !styleSheet.ie7) { + styleSheet._cssText = styleSheet.innerHTML; + } + } + }, + + getText: function(styleSheet, path) { + // Internet Explorer will trash unknown selectors (it converts them to "UNKNOWN"). + // So we must reload external style sheets (internal style sheets can have their text + // extracted through the innerHTML property). + + // load the style sheet text from an external file + try { + var cssText = styleSheet.cssText; + } catch (e) { + cssText = ""; + } + if (httpRequest) cssText = loadFile(styleSheet.href, path) || cssText; + return cssText; + }, + + recalc: function() { + this.screen.recalc(); + // we're going to read through all style rules. + // certain rules have had ie7 properties added to them. + // e.g. p{top:0; ie7_recalc2:1; left:0} + // this flags a property in the rule as needing a fix. + // the selector text is then used to query the document. + // we can then loop through the results of the query + // and fix the elements. + // we ignore the IE7 rules - so count them in the header + var RECALCS = /ie7_recalc\d+/g; + var start = HEADER.match(/[{,]/g).length; + // only calculate screen fixes. print fixes don't show up anyway + var rules = this.styleSheet.rules, rule; + var calcs, calc, elements, element, i, j, k, id; + // loop through all rules + for (i = start; rule = rules[i]; i++) { + var cssText = rule.style.cssText; + // search for the "ie7_recalc" flag (there may be more than one) + if (calcs = cssText.match(RECALCS)) { + // use the selector text to query the document + elements = cssQuery(rule.selectorText); + // if there are matching elements then loop + // through the recalc functions and apply them + // to each element + if (elements.length) for (j = 0; j < calcs.length; j++) { + // get the matching flag (e.g. ie7_recalc3) + id = calcs[j]; + // extract the numeric id from the end of the flag + // and use it to index the collection of recalc + // functions + calc = IE7.CSS.recalcs[id.slice(10)][2]; + for (k = 0; (element = elements[k]); k++) { + // apply the fix + if (element.currentStyle[id]) calc(element, cssText); + } + } + } + } + }, + + refresh: function() { + this.styleSheet.cssText = HEADER + this.screen + this.print; + }, + + trash: function() { + // trash the old style sheets + for (var i = 0; i < styleSheets.length; i++) { + if (!styleSheets[i].ie7) { + try { + var cssText = styleSheets[i].cssText; + } catch (e) { + cssText = ""; + } + if (cssText) styleSheets[i].cssText = ""; + } + } + } +})); + +// ----------------------------------------------------------------------- +// IE7 StyleSheet class +// ----------------------------------------------------------------------- + +var StyleSheet = Base.extend({ + constructor: function(media) { + this.media = media; + this.load(); + IE7.CSS[media] = this; + IE7.CSS.refresh(); + }, + + createRule: function(selector, cssText) { + var match; + if (PseudoElement && (match = selector.match(PseudoElement.MATCH))) { + return new PseudoElement(match[1], match[2], cssText); + } else if (match = selector.match(DynamicRule.MATCH)) { + if (!HYPERLINK.test(match[0]) || DynamicRule.COMPLEX.test(match[0])) { + return new DynamicRule(selector, match[1], match[2], match[3], cssText); + } + } else { + return new Rule(selector, cssText); + } + return selector + " {" + cssText + "}"; + }, + + getText: function() { + // store for style sheet text + // parse media decalarations + var MEDIA = /@media\s+([^{]+?)\s*\{([^@]+\})\s*\}/gi; + var IMPORTS = /@import[^;\n]+/gi; + var TRIM_IMPORTS = /@import\s+url\s*\(\s*["']?|["']?\s*\)\s*/gi; + var URL = /(url\s*\(\s*['"]?)([\w\.]+[^:\)]*['"]?\))/gi; + + var self = this; + + // Store loaded cssText URLs + var fileCache = {}; + + function getCSSText(styleSheet, path, media, level) { + var cssText = ""; + if (!level) { + media = toSimpleMedia(styleSheet.media); + level = 0; + } + if (media === "none") { + styleSheet.disabled = true; + return ""; + } + if (media === "all" || media === self.media) { + // IE only allows importing style sheets three levels deep. + // it will crash if you try to access a level below this + try { + var canAcess = !!styleSheet.cssText; + } catch (exe) {} + if (level < 3 && canAcess) { + var hrefs = styleSheet.cssText.match(IMPORTS); + // loop through imported style sheets + for (var i = 0, imported; i < styleSheet.imports.length; i++) { + var imported = styleSheet.imports[i]; + var href = styleSheet._href || styleSheet.href; + imported._href = hrefs[i].replace(TRIM_IMPORTS, ""); + // call this function recursively to get all imported style sheets + cssText += getCSSText(imported, getPath(href, path), media, level + 1); + } + } + // retrieve inline style or load an external style sheet + cssText += encode(styleSheet.href ? loadStyleSheet(styleSheet, path) : styleSheet.owningElement._cssText); + cssText = parseMedia(cssText, self.media); + } + return cssText; + }; + + // Load all style sheets in the document + for (var i = 0; i < styleSheets.length; i++) { + var styleSheet = styleSheets[i]; + if (!styleSheet.disabled && !styleSheet.ie7) this.cssText += getCSSText(styleSheet); + } + + // helper functions + function parseMedia(cssText, media) { + filterMedia.value = media; + return cssText.replace(MEDIA, filterMedia); + }; + + function filterMedia(match, media, cssText) { + media = toSimpleMedia(media); + switch (media) { + case "screen": + case "print": + if (media !== filterMedia.value) return ""; + case "all": + return cssText; + } + return ""; + }; + + function toSimpleMedia(media) { + if (!media) return "all"; + var split = media.toLowerCase().split(/\s*,\s*/); + media = "none"; + for (var i = 0; i < split.length; i++) { + if (split[i] === "all") return "all"; + if (split[i] === "screen") { + if (media === "print") return "all"; + media = "screen"; + } else if (split[i] === "print") { + if (media === "screen") return "all"; + media = "print"; + } + } + return media; + }; + + // Load an external style sheet + function loadStyleSheet(styleSheet, path) { + var href = styleSheet._href || styleSheet.href; + var url = makePath(href, path); + // If the style sheet has already loaded then don't reload it + if (fileCache[url]) return ""; + // Load from source + fileCache[url] = styleSheet.disabled ? "" : + fixUrls(IE7.CSS.getText(styleSheet, path), getPath(href, path)); + return fileCache[url]; + }; + + // Fix CSS paths. + // We're lumping all css text into one big style sheet so relative + // paths have to be fixed. This is necessary anyway because of other + // Internet Explorer bugs. + function fixUrls(cssText, pathname) { + // hack & slash + return cssText.replace(URL, "$1" + pathname.slice(0, pathname.lastIndexOf("/") + 1) + "$2"); + }; + }, + + load: function() { + this.cssText = ""; + this.getText(); + this.parse(); + if (inheritedProperties.length) { + this.cssText = parseInherited(this.cssText); + } + this.cssText = decode(this.cssText); + fileCache = {}; + }, + + parse: function() { + var cssText = IE7.CSS.parser.parse(this.cssText); + + var declarations = ""; + this.cssText = cssText.replace(/@charset[^;]+;|@font\-face[^\}]+\}/g, function(match) { + declarations += match + "\n"; + return ""; + }); + this.declarations = decode(declarations); + + // Parse the style sheet + var offset = IE7.CSS.rules.length; + var rules = [], rule; + while ((rule = RULE.exec(this.cssText))) { + var cssText = rule[2]; + if (cssText) { + var fixDescendants = appVersion < 7 && cssText.indexOf("AlphaImageLoader") !== -1; + var selectors = rule[1].match(SELECTOR), selector; + for (var i = 0; selector = selectors[i]; i++) { + selector = trim(selector); + var isUnknown = IE7.CSS.UNKNOWN.test(selector); + selectors[i] = isUnknown ? this.createRule(selector, cssText) : selector + "{" + cssText + "}"; + if (fixDescendants) selectors[i] += this.createRule(selector + ">*", "position:relative"); + } + rules.push(selectors.join("\n")); + } + } + this.cssText = rules.join("\n"); + this.rules = IE7.CSS.rules.slice(offset); + }, + + recalc: function() { + var rule, i; + for (i = 0; (rule = this.rules[i]); i++) rule.recalc(); + }, + + toString: function() { + return this.declarations + "@media " + this.media + "{" + this.cssText + "}"; + } +}); + +var PseudoElement; + +// ----------------------------------------------------------------------- +// IE7 style rules +// ----------------------------------------------------------------------- + +var Rule = IE7.Rule = Base.extend({ + constructor: function(selector, cssText) { + this.id = IE7.CSS.rules.length; + this.className = Rule.PREFIX + this.id; + var pseudoElement = selector.match(FIRST_LINE_LETTER); + this.selector = (pseudoElement ? pseudoElement[1] : selector) || "*"; + this.selectorText = this.parse(this.selector) + (pseudoElement ? pseudoElement[2] : ""); + this.cssText = cssText; + this.MATCH = new RegExp("\\s" + this.className + "(\\s|$)", "g"); + IE7.CSS.rules.push(this); + this.init(); + }, + + init: Undefined, + + add: function(element) { + // allocate this class + element.className += " " + this.className; + }, + + recalc: function() { + // execute the underlying css query for this class + var match = cssQuery(this.selector); + // add the class name for all matching elements + for (var i = 0; i < match.length; i++) this.add(match[i]); + }, + + parse: function(selector) { + // attempt to preserve specificity for "loose" parsing by + // removing unknown tokens from a css selector but keep as + // much as we can.. + var simple = selector.replace(Rule.CHILD, " ").replace(Rule.COMPLEX, ""); + if (appVersion < 7) simple = simple.replace(Rule.MULTI, ""); + var tags = match(simple, Rule.TAGS).length - match(selector, Rule.TAGS).length; + var classes = match(simple, Rule.CLASSES).length - match(selector, Rule.CLASSES).length + 1; + while (classes > 0 && Rule.CLASS.test(simple)) { + simple = simple.replace(Rule.CLASS, ""); + classes--; + } + while (tags > 0 && Rule.TAG.test(simple)) { + simple = simple.replace(Rule.TAG, "$1*"); + tags--; + } + simple += "." + this.className; + classes = Math.min(classes, 2); + tags = Math.min(tags, 2); + var score = -10 * classes - tags; + if (score > 0) { + simple = simple + "," + Rule.MAP[score] + " " + simple; + } + return simple; + }, + + remove: function(element) { + // deallocate this class + element.className = element.className.replace(this.MATCH, "$1"); + }, + + toString: function() { + return format("%1 {%2}", this.selectorText, this.cssText); + } +}, { + CHILD: />/g, + CLASS: /\.[\w-]+/, + CLASSES: /[.:\[]/g, + MULTI: /(\.[\w-]+)+/g, + PREFIX: "ie7_class", + TAG: /^\w+|([\s>+~])\w+/, + TAGS: /^\w|[\s>+~]\w/g, + MAP: { + "1": "html", + "2": "html body", + "10": ".ie7_html", + "11": "html.ie7_html", + "12": "html.ie7_html body", + "20": ".ie7_html .ie7_body", + "21": "html.ie7_html .ie7_body", + "22": "html.ie7_html body.ie7_body" + } +}); + +// ----------------------------------------------------------------------- +// IE7 dynamic style +// ----------------------------------------------------------------------- + +// object properties: +// attach: the element that an event handler will be attached to +// target: the element that will have the IE7 class applied + +var DynamicRule = Rule.extend({ + // properties + constructor: function(selector, attach, dynamicPseudoClass, target, cssText) { + this.negated = dynamicPseudoClass.indexOf("not") === 0; + if (this.negated) dynamicPseudoClass = dynamicPseudoClass.slice(5, -1); + // initialise object properties + this.attach = attach || "*"; + this.dynamicPseudoClass = IE7.CSS.dynamicPseudoClasses[dynamicPseudoClass]; + this.target = target; + this.base(selector, cssText); + }, + + recalc: function() { + // execute the underlying css query for this class + var attaches = cssQuery(this.attach), attach; + // process results + for (var i = 0; attach = attaches[i]; i++) { + // retrieve the event handler's target element(s) + var target = this.target ? cssQuery(this.target, attach) : [attach]; + // attach event handlers for dynamic pseudo-classes + if (target.length) this.dynamicPseudoClass.apply(attach, target, this); + } + } +}); + +// ----------------------------------------------------------------------- +// IE7 dynamic pseudo-classes +// ----------------------------------------------------------------------- + +var DynamicPseudoClass = Base.extend({ + constructor: function(name, apply) { + this.name = name; + this.apply = apply; + this.instances = {}; + IE7.CSS.dynamicPseudoClasses[name] = this; + }, + + register: function(instance, negated) { + // an "instance" is actually an Arguments object + var _class = instance[2]; + if (!negated && _class.negated) { + this.unregister(instance, true); + } else { + instance.id = _class.id + instance[0].uniqueID; + if (!this.instances[instance.id]) { + var target = instance[1], j; + for (j = 0; j < target.length; j++) _class.add(target[j]); + this.instances[instance.id] = instance; + } + } + }, + + unregister: function(instance, negated) { + var _class = instance[2]; + if (!negated && _class.negated) { + this.register(instance, true); + } else { + if (this.instances[instance.id]) { + var target = instance[1], j; + for (j = 0; j < target.length; j++) _class.remove(target[j]); + delete this.instances[instance.id]; + } + } + } +}); + +// ----------------------------------------------------------------------- +// dynamic pseudo-classes +// ----------------------------------------------------------------------- + +var Hover = new DynamicPseudoClass("hover", function(element) { + var instance = arguments; + IE7.CSS.addEventHandler(element, "onmouseenter", function() { + Hover.register(instance); + }); + IE7.CSS.addEventHandler(element, "onmouseleave", function() { + Hover.unregister(instance); + }); +}); + +// globally trap the mouseup event (thanks Martijn!) +addEventHandler(document, "onmouseup", function() { + var instances = Hover.instances; + for (var i in instances) + if (!instances[i][0].contains(event.srcElement)) + Hover.unregister(instances[i]); +}); + +var ATTR = { + "=": "%1==='%2'", // "[@%1='%2']" + "~=": "(' '+%1+' ').indexOf(' %2 ')!==-1", // "[contains(concat(' ',@%1,' '),' %2 ')]", + "|=": "%1==='%2'||%1.indexOf('%2-')===0", // "[@%1='%2' or starts-with(@%1,'%2-')]", + "^=": "%1.indexOf('%2')===0", // "[starts-with(@%1,'%2')]", + "$=": "%1.slice(-'%2'.length)==='%2'", // "[ends-with(@%1,'%2')]", + "*=": "%1.indexOf('%2')!==-1" // "[contains(@%1,'%2')]" +}; +ATTR[""] = "%1!=null"; // "[@%1]" + +var FILTER = { + "<#attr>": function(match, name, operator, value) { + var attr = "IE7._getAttribute(e,'" + name + "')"; + value = getString(value); + if (operator.length > 1) { + if (!value || operator === "~=" && SPACE.test(value)) { + return "false&&"; + } + attr = "(" + attr + "||'')"; + } + return "(" + format(ATTR[operator], attr, value) + ")&&"; + }, + + "<#id>": ID_ATTRIBUTE + "==='$1'&&", + + "<#class>": "e.className&&(' '+e.className+' ').indexOf(' $1 ')!==-1&&", + + // PSEDUO + ":first-child": "!" + PREVIOUS_SIBLING + "&&", + ":link": "e.currentStyle['ie7-link']=='link'&&", + ":visited": "e.currentStyle['ie7-link']=='visited'&&" +}; + +// ========================================================================= +// ie7-html.js +// ========================================================================= + +// default font-sizes +//HEADER += "h1{font-size:2em}h2{font-size:1.5em;}h3{font-size:1.17em;}h4{font-size:1em}h5{font-size:.83em}h6{font-size:.67em}"; + +IE7.HTML = new (Fix.extend({ // single instance + fixed: {}, + + init: Undefined, + + addFix: function() { + // fixes are a one-off, they are applied when the document is loaded + this.fixes.push(arguments); + }, + + apply: function() { + for (var i = 0; i < this.fixes.length; i++) { + var match = cssQuery(this.fixes[i][0]); + var fix = this.fixes[i][1]; + for (var j = 0; j < match.length; j++) fix(match[j]); + } + }, + + addRecalc: function() { + // recalcs occur whenever the document is refreshed using document.recalc() + this.recalcs.push(arguments); + }, + + recalc: function() { + // loop through the fixes + for (var i = 0; i < this.recalcs.length; i++) { + var match = cssQuery(this.recalcs[i][0]); + var recalc = this.recalcs[i][1], element; + var key = Math.pow(2, i); + for (var j = 0; (element = match[j]); j++) { + var uniqueID = element.uniqueID; + if ((this.fixed[uniqueID] & key) === 0) { + element = recalc(element) || element; + this.fixed[uniqueID] |= key; + } + } + } + } +})); + +if (appVersion < 7) { + // provide support for the tag. + document.createElement("abbr"); + + // bind to the first child control + IE7.HTML.addRecalc("label", function(label) { + if (!label.htmlFor) { + var firstChildControl = cssQuery("input,textarea", label, true); + if (firstChildControl) { + addEventHandler(label, "onclick", function() { + firstChildControl.click(); + }); + } + } + }); +} + +// ========================================================================= +// ie7-layout.js +// ========================================================================= + +var NUMERIC = "[.\\d]"; + +(function() { + var layout = IE7.Layout = {}; + + // big, ugly box-model hack + min/max stuff + + // #tantek > #erik > #dean { voice-family: hacker; } + + // ----------------------------------------------------------------------- + // "layout" + // ----------------------------------------------------------------------- + + HEADER += "*{boxSizing:content-box}"; + + // give an element "layout" + layout.boxSizing = function(element) { + if (!element.currentStyle.hasLayout) { + //# element.runtimeStyle.fixedHeight = + element.style.height = "0cm"; + if (element.currentStyle.verticalAlign === "auto") + element.runtimeStyle.verticalAlign = "top"; + // when an element acquires "layout", margins no longer collapse correctly + collapseMargins(element); + } + }; + + // ----------------------------------------------------------------------- + // Margin Collapse + // ----------------------------------------------------------------------- + + function collapseMargins(element) { + if (element != viewport && element.currentStyle.position !== "absolute") { + collapseMargin(element, "marginTop"); + collapseMargin(element, "marginBottom"); + } + }; + + function collapseMargin(element, type) { + if (!element.runtimeStyle[type]) { + var parentElement = element.parentElement; + var isTopMargin = type === "marginTop"; + if (parentElement && parentElement.currentStyle.hasLayout && !IE7._getElementSibling(element, isTopMargin ? "previous" : "next")) return; + var child = element[isTopMargin ? "firstChild" : "lastChild"]; + if (child && child.nodeName < "@") child = IE7._getElementSibling(child, isTopMargin ? "next" : "previous"); + if (child && child.currentStyle.styleFloat === "none" && child.currentStyle.hasLayout) { + collapseMargin(child, type); + margin = _getMargin(element, element.currentStyle[type]); + childMargin = _getMargin(child, child.currentStyle[type]); + if (margin < 0 || childMargin < 0) { + element.runtimeStyle[type] = margin + childMargin; + } else { + element.runtimeStyle[type] = Math.max(childMargin, margin); + } + child.runtimeStyle[type] = "0px"; + } + } + }; + + function _getMargin(element, value) { + return value === "auto" ? 0 : getPixelValue(element, value); + }; + + // ----------------------------------------------------------------------- + // box-model + // ----------------------------------------------------------------------- + + // constants + var UNIT = /^[.\d][\w]*$/, AUTO = /^(auto|0cm)$/; + + var apply = {}; + layout.borderBox = function(element){ + apply.Width(element); + apply.Height(element); + }; + + var _fixWidth = function(HEIGHT) { + apply.Width = function(element) { + if (!PERCENT.test(element.currentStyle.width)) _fixWidth(element); + if (HEIGHT) collapseMargins(element); + }; + + function _fixWidth(element, value) { + if (!element.runtimeStyle.fixedWidth) { + if (!value) value = element.currentStyle.width; + element.runtimeStyle.fixedWidth = UNIT.test(value) ? Math.max(0, getFixedWidth(element, value)) + "px" : value; + setOverrideStyle(element, "width", element.runtimeStyle.fixedWidth); + } + }; + + function layoutWidth(element) { + if (!isFixed(element)) { + var layoutParent = element.offsetParent; + while (layoutParent && !layoutParent.currentStyle.hasLayout) layoutParent = layoutParent.offsetParent; + } + return (layoutParent || viewport).clientWidth; + }; + + function getPixelWidth(element, value) { + if (PERCENT.test(value)) return parseInt(parseFloat(value) / 100 * layoutWidth(element)); + return getPixelValue(element, value); + }; + + var getFixedWidth = function(element, value) { + var borderBox = element.currentStyle["ie7-box-sizing"] === "border-box"; + var adjustment = 0; + if (MSIE5 && !borderBox) + adjustment += getBorderWidth(element) + getWidth(element, "padding"); + else if (!MSIE5 && borderBox) + adjustment -= getBorderWidth(element) + getWidth(element, "padding"); + return getPixelWidth(element, value) + adjustment; + }; + + // easy way to get border thickness for elements with "layout" + function getBorderWidth(element) { + return element.offsetWidth - element.clientWidth; + }; + + // have to do some pixel conversion to get padding/margin thickness :-( + function getWidth(element, type) { + return getPixelWidth(element, element.currentStyle[type + "Left"]) + getPixelWidth(element, element.currentStyle[type + "Right"]); + }; + + // ----------------------------------------------------------------------- + // min/max + // ----------------------------------------------------------------------- + + HEADER += "*{minWidth:none;maxWidth:none;min-width:none;max-width:none}"; + + // handle min-width property + layout.minWidth = function(element) { + // IE6 supports min-height so we frig it here + //#if (element.currentStyle.minHeight === "auto") element.runtimeStyle.minHeight = 0; + if (element.currentStyle["min-width"] != null) { + element.style.minWidth = element.currentStyle["min-width"]; + } + if (register(arguments.callee, element, element.currentStyle.minWidth !== "none")) { + layout.boxSizing(element); + _fixWidth(element); + resizeWidth(element); + } + }; + + // clone the minWidth function to make a maxWidth function + eval("IE7.Layout.maxWidth=" + String(layout.minWidth).replace(/min/g, "max")); + + // apply min/max restrictions + function resizeWidth(element) { + // check boundaries + if (element == document.body) { + var width = element.clientWidth; + } else { + var rect = element.getBoundingClientRect(); + width = rect.right - rect.left; + } + if (element.currentStyle.minWidth !== "none" && width < getFixedWidth(element, element.currentStyle.minWidth)) { + element.runtimeStyle.width = element.currentStyle.minWidth; + } else if (element.currentStyle.maxWidth !== "none" && width >= getFixedWidth(element, element.currentStyle.maxWidth)) { + element.runtimeStyle.width = element.currentStyle.maxWidth; + } else { + element.runtimeStyle.width = element.runtimeStyle.fixedWidth; + } + }; + + // ----------------------------------------------------------------------- + // right/bottom + // ----------------------------------------------------------------------- + + function fixRight(element) { + if (register(fixRight, element, /^(fixed|absolute)$/.test(element.currentStyle.position) && + getDefinedStyle(element, "left") !== "auto" && + getDefinedStyle(element, "right") !== "auto" && + AUTO.test(getDefinedStyle(element, "width")))) { + resizeRight(element); + layout.boxSizing(element); + } + }; + layout.fixRight = fixRight; + + function resizeRight(element) { + var left = getPixelWidth(element, element.runtimeStyle._left || element.currentStyle.left); + var width = layoutWidth(element) - getPixelWidth(element, element.currentStyle.right) - left - getWidth(element, "margin"); + if (parseInt(element.runtimeStyle.width) === width) return; + element.runtimeStyle.width = ""; + if (isFixed(element) || HEIGHT || element.offsetWidth < width) { + if (!MSIE5) width -= getBorderWidth(element) + getWidth(element, "padding"); + if (width < 0) width = 0; + element.runtimeStyle.fixedWidth = width; + setOverrideStyle(element, "width", width); + } + }; + + // ----------------------------------------------------------------------- + // window.onresize + // ----------------------------------------------------------------------- + + // handle window resize + var clientWidth = 0; + addResize(function() { + if (!viewport) return; + var i, wider = (clientWidth < viewport.clientWidth); + clientWidth = viewport.clientWidth; + // resize elements with "min-width" set + var elements = layout.minWidth.elements; + for (i in elements) { + var element = elements[i]; + var fixedWidth = (parseInt(element.runtimeStyle.width) === getFixedWidth(element, element.currentStyle.minWidth)); + if (wider && fixedWidth) element.runtimeStyle.width = ""; + if (wider == fixedWidth) resizeWidth(element); + } + // resize elements with "max-width" set + var elements = layout.maxWidth.elements; + for (i in elements) { + var element = elements[i]; + var fixedWidth = (parseInt(element.runtimeStyle.width) === getFixedWidth(element, element.currentStyle.maxWidth)); + if (!wider && fixedWidth) element.runtimeStyle.width = ""; + if (wider !== fixedWidth) resizeWidth(element); + } + // resize elements with "right" set + for (i in fixRight.elements) resizeRight(fixRight.elements[i]); + }); + + // ----------------------------------------------------------------------- + // fix CSS + // ----------------------------------------------------------------------- + if (MSIE5) { + IE7.CSS.addRecalc("width", NUMERIC, apply.Width); + } + if (appVersion < 7) { + IE7.CSS.addRecalc("max-width", NUMERIC, layout.maxWidth); + IE7.CSS.addRecalc("right", NUMERIC, fixRight); + } else if (appVersion == 7) { + if (HEIGHT) IE7.CSS.addRecalc("height", "[\\d.]+%", function(element) { + element.runtimeStyle.pixelHeight = parseInt(layoutWidth(element) * element.currentStyle["ie7-height"].slice(0, -1) / 100); + }); + } + }; + + eval("var _fixHeight=" + rotate(_fixWidth)); + + // apply box-model + min/max fixes + _fixWidth(); + _fixHeight(true); + + if (appVersion < 7) { + IE7.CSS.addRecalc("min-width", NUMERIC, layout.minWidth); + IE7.CSS.addFix(/\bmin-height\s*/, "height"); + } +})(); + +// ========================================================================= +// ie7-graphics.js +// ========================================================================= + +// a small transparent image used as a placeholder +var BLANK_GIF = makePath("blank.gif", path); + +var ALPHA_IMAGE_LOADER = "DXImageTransform.Microsoft.AlphaImageLoader"; +var PNG_FILTER = "progid:" + ALPHA_IMAGE_LOADER + "(src='%1',sizingMethod='%2')"; + +// regular expression version of the above +var PNG; + +var filtered = []; + +function fixImage(element) { + if (PNG.test(element.src)) { + // we have to preserve width and height + var image = new Image(element.width, element.height); + image.onload = function() { + element.width = image.width; + element.height = image.height; + image = null; + }; + image.src = element.src; + // store the original url (we'll put it back when it's printed) + element.pngSrc = element.src; + // add the AlphaImageLoader thingy + addFilter(element); + } +}; + +if (appVersion < 7) { + // ** IE7 VARIABLE + // e.g. apply the hack to all files ending in ".png" + // IE7_PNG_SUFFIX = ".png"; + // You can also set it to a RegExp + // IE7_PNG_SUFFIX = /\d+\.png$/; + + // replace background(-image): url(..) .. with background(-image): .. ;filter: ..; + IE7.CSS.addFix(/background(-image)?\s*:\s*([^};]*)?url\(([^\)]+)\)([^;}]*)?/, function(match, $1, $2, url, $4) { + url = getString(url); + return PNG.test(url) ? "filter:" + format(PNG_FILTER, url, $4.indexOf("no-repeat") === -1 ? "scale" : "crop") + + ";zoom:1;background" + ($1||"") + ":" + ($2||"") + "none" + ($4||"") : match; + }); + + // list-style-image + IE7.CSS.addRecalc(/list\-style(\-image)?/, "[^};]*url", function(element) { + var url = element.currentStyle.listStyleImage.slice(5, -2); + if (PNG.test(url)) { + if (element.nodeName === "LI") { + fixListStyleImage(element, url) + } else if (element.nodeName === "UL") { + for (var i = 0, li; li = element.childNodes[i]; i++) { + if (li.nodeName === "LI") fixListStyleImage(li, url); + } + } + } + }); + + function fixListStyleImage(element, src) { + var style = element.runtimeStyle; + var originalHeight = element.offsetHeight; + var image = new Image; + image.onload = function() { + var paddingLeft = element.currentStyle.paddingLeft; + paddingLeft = paddingLeft === "0px" ? 0 : getPixelValue(element, paddingLeft); + style.paddingLeft = (paddingLeft + this.width) + "px"; + style.marginLeft = -this.width + "px"; + style.listStyleType = "none"; + style.listStyleImage = "none"; + style.paddingTop = Math.max(originalHeight - element.offsetHeight, 0) + "px"; + addFilter(element, "crop", src); + element.style.zoom = "100%"; + }; + image.src = src; + }; + + // ----------------------------------------------------------------------- + // fix PNG transparency (HTML images) + // ----------------------------------------------------------------------- + + IE7.HTML.addRecalc("img,input", function(element) { + if (element.nodeName === "INPUT" && element.type !== "image") return; + fixImage(element); + addEventHandler(element, "onpropertychange", function() { + if (!printing && event.propertyName === "src" && + element.src.indexOf(BLANK_GIF) === -1) fixImage(element); + }); + }); + + // assume that background images should not be printed + // (if they are not transparent then they'll just obscure content) + // but we'll put foreground images back... + var printing = false; + addEventHandler(window, "onbeforeprint", function() { + printing = true; + for (var i = 0; i < filtered.length; i++) removeFilter(filtered[i]); + }); + addEventHandler(window, "onafterprint", function() { + for (var i = 0; i < filtered.length; i++) addFilter(filtered[i]); + printing = false; + }); +} + +// apply a filter +function addFilter(element, sizingMethod, src) { + var filter = element.filters[ALPHA_IMAGE_LOADER]; + if (filter) { + filter.src = src || element.src; + filter.enabled = true; + } else { + element.runtimeStyle.filter = format(PNG_FILTER, src || element.src, sizingMethod || "scale"); + filtered.push(element); + } + // remove the real image + element.src = BLANK_GIF; +}; + +function removeFilter(element) { + element.src = element.pngSrc; + element.filters[ALPHA_IMAGE_LOADER].enabled = false; +}; + +// ========================================================================= +// ie7-fixed.js +// ========================================================================= + +(function() { + if (appVersion >= 7) return; + + // some things to consider for this hack. + // the document body requires a fixed background. even if + // it is just a blank image. + // you have to use setExpression instead of onscroll, this + // together with a fixed body background helps avoid the + // annoying screen flicker of other solutions. + + IE7.CSS.addRecalc("position", "fixed", _positionFixed, "absolute"); + IE7.CSS.addRecalc("background(-attachment)?", "[^};]*fixed", _backgroundFixed); + + // scrolling is relative to the documentElement (HTML tag) when in + // standards mode, otherwise it's relative to the document body + var $viewport = MSIE5 ? "body" : "documentElement"; + + function _fixBackground() { + // this is required by both position:fixed and background-attachment:fixed. + // it is necessary for the document to also have a fixed background image. + // we can fake this with a blank image if necessary + if (body.currentStyle.backgroundAttachment !== "fixed") { + if (body.currentStyle.backgroundImage === "none") { + body.runtimeStyle.backgroundRepeat = "no-repeat"; + body.runtimeStyle.backgroundImage = "url(" + BLANK_GIF + ")"; // dummy + } + body.runtimeStyle.backgroundAttachment = "fixed"; + } + _fixBackground = Undefined; + }; + + var _tmp = createTempElement("img"); + + function _isFixed(element) { + return element ? isFixed(element) || _isFixed(element.parentElement) : false; + }; + + function _setExpression(element, propertyName, expression) { + setTimeout("document.all." + element.uniqueID + ".runtimeStyle.setExpression('" + propertyName + "','" + expression + "')", 0); + }; + + // ----------------------------------------------------------------------- + // backgroundAttachment: fixed + // ----------------------------------------------------------------------- + + function _backgroundFixed(element) { + if (register(_backgroundFixed, element, element.currentStyle.backgroundAttachment === "fixed" && !element.contains(body))) { + _fixBackground(); + util.bgLeft(element); + util.bgTop(element); + _backgroundPosition(element); + } + }; + + function _backgroundPosition(element) { + _tmp.src = element.currentStyle.backgroundImage.slice(5, -2); + var parentElement = element.canHaveChildren ? element : element.parentElement; + parentElement.appendChild(_tmp); + util.setOffsetLeft(element); + util.setOffsetTop(element); + parentElement.removeChild(_tmp); + }; + + // ----------------------------------------------------------------------- + // position: fixed + // ----------------------------------------------------------------------- + + function _positionFixed(element) { + if (register(_positionFixed, element, isFixed(element))) { + setOverrideStyle(element, "position", "absolute"); + setOverrideStyle(element, "left", element.currentStyle.left); + setOverrideStyle(element, "top", element.currentStyle.top); + _fixBackground(); + IE7.Layout.fixRight(element); + //IE7.Layout.fixBottom(element); + _foregroundPosition(element); + } + }; + + function _foregroundPosition(element, recalc) { + document.body.getBoundingClientRect(); // force a reflow + util.positionTop(element, recalc); + util.positionLeft(element, recalc, true); + if (!element.runtimeStyle.autoLeft && element.currentStyle.marginLeft === "auto" && + element.currentStyle.right !== "auto") { + var left = viewport.clientWidth - util.getPixelWidth(element, element.currentStyle.right) - + util.getPixelWidth(element, element.runtimeStyle._left) - element.clientWidth; + if (element.currentStyle.marginRight === "auto") left = parseInt(left / 2); + if (_isFixed(element.offsetParent)) element.runtimeStyle.pixelLeft += left; + else element.runtimeStyle.shiftLeft = left; + } + if (!element.runtimeStyle.fixedWidth) util.clipWidth(element); + if (!element.runtimeStyle.fixedHeight) util.clipHeight(element); + }; + + // ----------------------------------------------------------------------- + // capture window resize + // ----------------------------------------------------------------------- + + function _resize() { + // if the window has been resized then some positions need to be + // recalculated (especially those aligned to "right" or "top" + var elements = _backgroundFixed.elements; + for (var i in elements) _backgroundPosition(elements[i]); + elements = _positionFixed.elements; + for (i in elements) { + _foregroundPosition(elements[i], true); + _foregroundPosition(elements[i], true); + } + _timer = 0; + }; + + // use a timer (sometimes this is a good way to prevent resize loops) + var _timer; + addResize(function() { + if (!_timer) _timer = setTimeout(_resize, 100); + }); + + // ----------------------------------------------------------------------- + // rotated + // ----------------------------------------------------------------------- + + var util = {}; + + var _horizontal = function(util) { + util.bgLeft = function(element) { + element.style.backgroundPositionX = element.currentStyle.backgroundPositionX; + if (!_isFixed(element)) { + _setExpression(element, "backgroundPositionX", "(parseInt(runtimeStyle.offsetLeft)+document." + $viewport + ".scrollLeft)||0"); + } + }; + + util.setOffsetLeft = function(element) { + var propertyName = _isFixed(element) ? "backgroundPositionX" : "offsetLeft"; + element.runtimeStyle[propertyName] = + util.getOffsetLeft(element, element.style.backgroundPositionX) - + element.getBoundingClientRect().left - element.clientLeft + 2; + }; + + util.getOffsetLeft = function(element, position) { + switch (position) { + case "left": + case "top": + return 0; + case "right": + case "bottom": + return viewport.clientWidth - _tmp.offsetWidth; + case "center": + return (viewport.clientWidth - _tmp.offsetWidth) / 2; + default: + if (PERCENT.test(position)) { + return parseInt((viewport.clientWidth - _tmp.offsetWidth) * parseFloat(position) / 100); + } + _tmp.style.left = position; + return _tmp.offsetLeft; + } + }; + + util.clipWidth = function(element) { + var fixWidth = element.runtimeStyle.fixWidth; + element.runtimeStyle.borderRightWidth = ""; + element.runtimeStyle.width = fixWidth ? util.getPixelWidth(element, fixWidth) + "px" : ""; + if (element.currentStyle.width !== "auto") { + var rect = element.getBoundingClientRect(); + var width = element.offsetWidth - viewport.clientWidth + rect.left - 2; + if (width >= 0) { + element.runtimeStyle.borderRightWidth = "0px"; + width = Math.max(getPixelValue(element, element.currentStyle.width) - width, 0); + setOverrideStyle(element, "width", width); + return width; + } + } + }; + + util.positionLeft = function(element, recalc) { + // if the element's width is in % units then it must be recalculated + // with respect to the viewport + if (!recalc && PERCENT.test(element.currentStyle.width)) { + element.runtimeStyle.fixWidth = element.currentStyle.width; + } + if (element.runtimeStyle.fixWidth) { + element.runtimeStyle.width = util.getPixelWidth(element, element.runtimeStyle.fixWidth); + } + //if (recalc) { + // // if the element is fixed on the right then no need to recalculate + // if (!element.runtimeStyle.autoLeft) return; + //} else { + element.runtimeStyle.shiftLeft = 0; + element.runtimeStyle._left = element.currentStyle.left; + // is the element fixed on the right? + element.runtimeStyle.autoLeft = element.currentStyle.right !== "auto" && element.currentStyle.left === "auto"; + //} + // reset the element's "left" value and get it's natural position + element.runtimeStyle.left = ""; + element.runtimeStyle.screenLeft = util.getScreenLeft(element); + element.runtimeStyle.pixelLeft = element.runtimeStyle.screenLeft; + // if the element is contained by another fixed element then there is no need to + // continually recalculate it's left position + if (!recalc && !_isFixed(element.offsetParent)) { + // onsrcoll produces jerky movement, so we use an expression + _setExpression(element, "pixelLeft", "runtimeStyle.screenLeft+runtimeStyle.shiftLeft+document." + $viewport + ".scrollLeft"); + } + }; + + // I've forgotten how this works... + util.getScreenLeft = function(element) { // thanks to kevin newman (captainn) + var screenLeft = element.offsetLeft, nested = 1; + if (element.runtimeStyle.autoLeft) { + screenLeft = viewport.clientWidth - element.offsetWidth - util.getPixelWidth(element, element.currentStyle.right); + } + // accommodate margins + if (element.currentStyle.marginLeft !== "auto") { + screenLeft -= util.getPixelWidth(element, element.currentStyle.marginLeft); + } + while (element = element.offsetParent) { + if (element.currentStyle.position !== "static") nested = -1; + screenLeft += element.offsetLeft * nested; + } + return screenLeft; + }; + + util.getPixelWidth = function(element, value) { + return PERCENT.test(value) ? parseInt(parseFloat(value) / 100 * viewport.clientWidth) : getPixelValue(element, value); + }; + }; + eval("var _vertical=" + rotate(_horizontal)); + _horizontal(util); + _vertical(util); +})(); + +// ========================================================================= +// ie7-oveflow.js +// ========================================================================= + +/* --------------------------------------------------------------------- + + This module alters the structure of the document. + It may adversely affect other CSS rules. Be warned. + +--------------------------------------------------------------------- */ + +if (appVersion < 7) { + var WRAPPER_STYLE = { + backgroundColor: "transparent", + backgroundImage: "none", + backgroundPositionX: null, + backgroundPositionY: null, + backgroundRepeat: null, + borderTopWidth: 0, + borderRightWidth: 0, + borderBottomWidth: 0, + borderLeftStyle: "none", + borderTopStyle: "none", + borderRightStyle: "none", + borderBottomStyle: "none", + borderLeftWidth: 0, + borderLeftColor: "#000", + borderTopColor: "#000", + borderRightColor: "#000", + borderBottomColor: "#000", + height: null, + marginTop: 0, + marginBottom: 0, + marginRight: 0, + marginLeft: 0, + width: "100%" + }; + + IE7.CSS.addRecalc("overflow", "visible", function(element) { + if (element.currentStyle.position === "absolute") return; + + // don't do this again + if (element.parentNode.ie7_wrapped) return; + + // if max-height is applied, makes sure it gets applied first + if (IE7.Layout && element.currentStyle["max-height"] !== "auto") { + IE7.Layout.maxHeight(element); + } + + if (element.currentStyle.marginLeft === "auto") element.style.marginLeft = 0; + if (element.currentStyle.marginRight === "auto") element.style.marginRight = 0; + + var wrapper = document.createElement(ANON); + wrapper.ie7_wrapped = element; + for (var propertyName in WRAPPER_STYLE) { + wrapper.style[propertyName] = element.currentStyle[propertyName]; + if (WRAPPER_STYLE[propertyName] != null) { + element.runtimeStyle[propertyName] = WRAPPER_STYLE[propertyName]; + } + } + wrapper.style.display = "block"; + wrapper.style.position = "relative"; + element.runtimeStyle.position = "absolute"; + element.parentNode.insertBefore(wrapper, element); + wrapper.appendChild(element); + }); +} + +// ========================================================================= +// ie7-quirks.js +// ========================================================================= + +function ie7Quirks() { + var FONT_SIZES = "xx-small,x-small,small,medium,large,x-large,xx-large".split(","); + for (var i = 0; i < FONT_SIZES.length; i++) { + FONT_SIZES[FONT_SIZES[i]] = FONT_SIZES[i - 1] || "0.67em"; + } + + IE7.CSS.addFix(/(font(-size)?\s*:\s*)([\w.-]+)/, function(match, label, size, value) { + return label + (FONT_SIZES[value] || value); + }); + + var NEGATIVE = /^\-/, LENGTH = /(em|ex)$/i; + var EM = /em$/i, EX = /ex$/i; + + getPixelValue = function(element, value) { + if (PIXEL.test(value)) return parseInt(value)||0; + var scale = NEGATIVE.test(value)? -1 : 1; + if (LENGTH.test(value)) scale *= getFontScale(element); + temp.style.width = scale < 0 ? value.slice(1) : value; + body.appendChild(temp); + // retrieve pixel width + value = scale * temp.offsetWidth; + // remove the temporary element + temp.removeNode(); + return parseInt(value); + }; + + var temp = createTempElement(); + function getFontScale(element) { + var scale = 1; + temp.style.fontFamily = element.currentStyle.fontFamily; + temp.style.lineHeight = element.currentStyle.lineHeight; + //temp.style.fontSize = ""; + while (element != body) { + var fontSize = element.currentStyle["ie7-font-size"]; + if (fontSize) { + if (EM.test(fontSize)) scale *= parseFloat(fontSize); + else if (PERCENT.test(fontSize)) scale *= (parseFloat(fontSize) / 100); + else if (EX.test(fontSize)) scale *= (parseFloat(fontSize) / 2); + else { + temp.style.fontSize = fontSize; + return 1; + } + } + element = element.parentElement; + } + return scale; + }; + + // cursor:pointer (IE5.x) + IE7.CSS.addFix(/cursor\s*:\s*pointer/, "cursor:hand"); + // display:list-item (IE5.x) + IE7.CSS.addFix(/display\s*:\s*list-item/, "display:block"); + + // ----------------------------------------------------------------------- + // margin:auto + // ----------------------------------------------------------------------- + + function fixMargin(element) { + var parent = element.parentElement; + var margin = parent.offsetWidth - element.offsetWidth - getPaddingWidth(parent); + var autoRight = (element.currentStyle["ie7-margin"] && element.currentStyle.marginRight === "auto") || + element.currentStyle["ie7-margin-right"] === "auto"; + switch (parent.currentStyle.textAlign) { + case "right": + margin = autoRight ? parseInt(margin / 2) : 0; + element.runtimeStyle.marginRight = margin + "px"; + break; + case "center": + if (autoRight) margin = 0; + default: + if (autoRight) margin /= 2; + element.runtimeStyle.marginLeft = parseInt(margin) + "px"; + } + }; + + function getPaddingWidth(element) { + return getPixelValue(element, element.currentStyle.paddingLeft) + + getPixelValue(element, element.currentStyle.paddingRight); + }; + + IE7.CSS.addRecalc("margin(-left|-right)?", "[^};]*auto", function(element) { + if (register(fixMargin, element, + element.parentElement && + element.currentStyle.display === "block" && + element.currentStyle.marginLeft === "auto" && + element.currentStyle.position !== "absolute")) { + fixMargin(element); + } + }); + + addResize(function() { + for (var i in fixMargin.elements) { + var element = fixMargin.elements[i]; + element.runtimeStyle.marginLeft = + element.runtimeStyle.marginRight = ""; + fixMargin(element); + } + }); +}; + + +var MATCHER; + +var cssQuery = (function() { + var CONTEXT = /^[>+~]/; + + var useContext = false; + + // This is not a selector engine in the strictest sense. So it's best to silently error. + function cssQuery(selector, context, single) { + selector = trim(selector); + if (!context) context = document; + var ref = context; + useContext = CONTEXT.test(selector); + if (useContext) { + context = context.parentNode; + selector = "*" + selector; + } + try { + return selectQuery.create(selector, useContext)(context, single ? null : [], ref); + } catch (ex) { + return single ? null : []; + } + }; + + var VALID_SELECTOR = /^(\\.|[' >+~#.\[\]:*(),\w-\^|$=]|[^\x00-\xa0])+$/; + + var _EVALUATED = /^(href|src)$/; + var _ATTRIBUTES = { + "class": "className", + "for": "htmlFor" + }; + + var IE7_CLASS_NAMES = /\sie7_\w+/g; + + var USE_IFLAG = /^(action|cite|codebase|data|dynsrc|href|longdesc|lowsrc|src|usemap|url)$/i; + + IE7._getAttribute = function(element, name) { + if (element.getAttributeNode) { + var attribute = element.getAttributeNode(name); + } + name = _ATTRIBUTES[name.toLowerCase()] || name; + if (!attribute) attribute = element.attributes[name]; + var specified = attribute && attribute.specified; + + if (element[name] && typeof element[name] == "boolean") return name.toLowerCase(); + if ((specified && USE_IFLAG.test(name)) || (!attribute && MSIE5) || name === "value" || name === "type") { + return element.getAttribute(name, 2); + } + if (name === "style") return element.style.cssText.toLowerCase() || null; + + return specified ? String(attribute.nodeValue) : null; + }; + + var names = "colSpan,rowSpan,vAlign,dateTime,accessKey,tabIndex,encType,maxLength,readOnly,longDesc"; + // Convert the list of strings to a hash, mapping the lowercase name to the camelCase name. + extend(_ATTRIBUTES, combine(names.toLowerCase().split(","), names.split(","))); + + IE7._getElementSibling = function(node, direction) { + direction += "Sibling"; + do { + node = node[direction]; + if (node && node.nodeName > "@") break; + } while (node); + return node; + }; + + var IMPLIED_ASTERISK = /(^|[, >+~])([#.:\[])/g, + BLOCKS = /\)\{/g, + COMMA = /,/, + QUOTED = /^['"]/, + HEX_ESCAPE = /\\([\da-f]{2,2})/gi, + LAST_CHILD = /last/i; + + IE7._byId = function(document, id) { + var result = document.all[id] || null; + // Returns a single element or a collection. + if (!result || (result.nodeType && IE7._getAttribute(result, "id") === id)) return result; + // document.all has returned a collection of elements with name/id + for (var i = 0; i < result.length; i++) { + if (IE7._getAttribute(result[i], "id") === id) return result[i]; + } + return null; + }; + + // ========================================================================= + // dom/selectors-api/CSSSelectorParser.js + // ========================================================================= + + // http://www.w3.org/TR/css3-selectors/#w3cselgrammar (kinda) + var CSSSelectorParser = RegGrp.extend({ + dictionary: new Dictionary({ + ident: /\-?(\\.|[_a-z]|[^\x00-\xa0])(\\.|[\w-]|[^\x00-\xa0])*/, + combinator: /[\s>+~]/, + operator: /[\^~|$*]?=/, + nth_arg: /[+-]?\d+|[+-]?\d*n(?:\s*[+-]\s*\d+)?|even|odd/, + tag: /\*|<#ident>/, + id: /#(<#ident>)/, + 'class': /\.(<#ident>)/, + pseudo: /\:([\w-]+)(?:\(([^)]+)\))?/, + attr: /\[(<#ident>)(?:(<#operator>)((?:\\.|[^\[\]#.:])+))?\]/, + negation: /:not\((<#tag>|<#id>|<#class>|<#attr>|<#pseudo>)\)/, + sequence: /(\\.|[~*]=|\+\d|\+?\d*n\s*\+\s*\d|[^\s>+~,\*])+/, + filter: /[#.:\[]<#sequence>/, + selector: /[^>+~](\\.|[^,])*?/, + grammar: /^(<#selector>)((,<#selector>)*)$/ + }), + + ignoreCase: true + }); + + var normalizer = new CSSSelectorParser({ + "\\\\.|[~*]\\s+=|\\+\\s+\\d": RegGrp.IGNORE, + "\\[\\s+": "[", + "\\(\\s+": "(", + "\\s+\\)": ")", + "\\s+\\]": "]", + "\\s*([,>+~]|<#operator>)\\s*": "$1", + "\\s+$": "", + "\\s+": " " + }); + + function normalize(selector) { + selector = normalizer.parse(selector.replace(HEX_ESCAPE, "\\x$1")) + .replace(UNESCAPE, "$1") + .replace(IMPLIED_ASTERISK, "$1*$2"); + if (!VALID_SELECTOR.test(selector)) throwSelectorError(); + return selector; + }; + + function unescape(query) { + // put string values back + return query.replace(ESCAPED, unescapeString); + }; + + function unescapeString(match, index) { + return strings[index]; + }; + + var BRACES = /\{/g, BRACES_ESCAPED = /\\{/g; + + function closeBlock(group) { + return Array((group.replace(BRACES_ESCAPED, "").match(BRACES) || "").length + 1).join("}"); + }; + + FILTER = new CSSSelectorParser(FILTER); + + var TARGET = /:target/i, ROOT = /:root/i; + + function getConstants(selector) { + var constants = ""; + if (ROOT.test(selector)) constants += ",R=d.documentElement"; + if (TARGET.test(selector)) constants += ",H=d.location;H=H&&H.hash.replace('#','')"; + if (constants || selector.indexOf("#") !== -1) { + constants = ",t=c.nodeType,d=t===9?c:c.ownerDocument||(c.document||c).parentWindow.document" + constants; + } + return "var ii" + constants + ";"; + }; + + var COMBINATOR = { + " ": ";while(e!=s&&(e=e.parentNode)&&e.nodeType===1){", + ">": ".parentElement;if(e){", + "+": ";while((e=e.previousSibling)&&!(" + IS_ELEMENT + "))continue;if(e){", + "~": ";while((e=e.previousSibling)){" + IF_ELEMENT + }; + + var TOKEN = /\be\b/g; + + MATCHER = new CSSSelectorParser({ + "(?:(<#selector>)(<#combinator>))?(<#tag>)(<#filter>)?$": function(match, before, combinator, tag, filters) { + var group = ""; + if (tag !== "*") { + var TAG = tag.toUpperCase(); + group += "if(e.nodeName==='" + TAG + (TAG === tag ? "" : "'||e.nodeName==='" + tag) + "'){"; + } + if (filters) { + group += "if(" + FILTER.parse(filters).slice(0, -2) + "){"; + } + group = group.replace(TOKEN, "e" + this.index); + if (combinator) { + group += "var e=e" + (this.index++) + COMBINATOR[combinator]; + group = group.replace(TOKEN, "e" + this.index); + } + if (before) { + group += this.parse(before); + } + return group; + } + }); + + var BY_ID = "e0=IE7._byId(d,'%1');if(e0){", + BY_TAG_NAME = "var n=c.getElementsByTagName('%1');", + STORE = "if(r==null)return e0;r[k++]=e0;"; + + var TAG_NAME = 1; + + var SELECTOR = new CSSSelectorParser({ + "^((?:<#selector>)?(?:<#combinator>))(<#tag>)(<#filter>)?$": true + }); + + var cache = {}; + + var selectById = new CSSSelectorParser({ + "^(<#tag>)#(<#ident>)(<#filter>)?( [^,]*)?$": function(match, tagName, id, filters, after) { + var block = format(BY_ID, id), endBlock = "}"; + if (filters) { + block += MATCHER.parse(tagName + filters); + endBlock = closeBlock(block); + } + if (after) { + block += "s=c=e0;" + selectQuery.parse("*" + after); + } else { + block += STORE; + } + return block + endBlock; + }, + + "^([^#,]+)#(<#ident>)(<#filter>)?$": function(match, before, id, filters) { + var block = format(BY_ID, id); + if (before === "*") { + block += STORE; + } else { + block += MATCHER.parse(before + filters) + STORE + "break"; + } + return block + closeBlock(block); + }, + + "^.*$": "" + }); + + var selectQuery = new CSSSelectorParser({ + "<#grammar>": function(match, selector, remainingSelectors) { + if (!this.groups) this.groups = []; + + var group = SELECTOR.exec(" " + selector); + + if (!group) throwSelectorError(); + + this.groups.push(group.slice(1)); + + if (remainingSelectors) { + return this.parse(remainingSelectors.replace(COMMA, "")); + } + + var groups = this.groups, + tagName = groups[0][TAG_NAME]; // first tag name + + for (var i = 1; group = groups[i]; i++) { // search tag names + if (tagName !== group[TAG_NAME]) { + tagName = "*"; // mixed tag names, so use "*" + break; + } + } + + var matcher = "", store = STORE + "continue filtering;"; + + for (var i = 0; group = groups[i]; i++) { + MATCHER.index = 0; + if (tagName !== "*") group[TAG_NAME] = "*"; // we are already filtering by tagName + group = group.join(""); + if (group === " *") { // select all + matcher = store; + break; + } else { + group = MATCHER.parse(group); + if (useContext) group += "if(e" + MATCHER.index + "==s){"; + matcher += group + store + closeBlock(group); + } + } + + // reduce to a single loop + var isWild = tagName === "*"; + return (isWild ? "var n=c.all;" : format(BY_TAG_NAME, tagName)) + + "filtering:while((e0=n[i++]))" + + (isWild ? IF_ELEMENT.replace(TOKEN, "e0") : "{") + + matcher + + "}"; + }, + + "^.*$": throwSelectorError + }); + + var REDUNDANT_NODETYPE_CHECKS = /\&\&(e\d+)\.nodeType===1(\)\{\s*if\(\1\.nodeName=)/g; + + selectQuery.create = function(selector) { + if (!cache[selector]) { + selector = normalize(selector); + this.groups = null; + MATCHER.index = 0; + var block = this.parse(selector); + this.groups = null; + MATCHER.index = 0; + if (selector.indexOf("#") !== -1) { + var byId = selectById.parse(selector); + if (byId) { + block = + "if(t===1||t===11|!c.getElementById){" + + block + + "}else{" + + byId + + "}"; + } + } + // remove redundant nodeType==1 checks + block = block.replace(REDUNDANT_NODETYPE_CHECKS, "$2"); + block = getConstants(selector) + decode(block); + cache[selector] = new Function("return function(c,r,s){var i=0,k=0,e0;" + block + "return r}")(); + } + return cache[selector]; + }; + + return cssQuery; +})(); + +function throwSelectorError() { + throw new SyntaxError("Invalid selector."); +}; + +// ----------------------------------------------------------------------- +// initialisation +// ----------------------------------------------------------------------- + +IE7.loaded = true; + +(function() { + try { + // http://javascript.nwbox.com/IEContentLoaded/ + if (!document.body) throw "continue"; + documentElement.doScroll("left"); + } catch (ex) { + setTimeout(arguments.callee, 1); + return; + } + // execute the inner text of the IE7 script + try { + eval(script.innerHTML); + } catch (ex) { + // ignore errors + } + if (typeof IE7_PNG_SUFFIX == "object") { + PNG = IE7_PNG_SUFFIX; + } else { + PNG = new RegExp(rescape(window.IE7_PNG_SUFFIX || "-trans.png") + "(\\?.*)?$", "i"); + } + + // frequently used references + body = document.body; + viewport = MSIE5 ? body : documentElement; + + // classes + body.className += " ie7_body"; + documentElement.className += " ie7_html"; + + if (MSIE5) ie7Quirks(); + + IE7.CSS.init(); + IE7.HTML.init(); + + IE7.HTML.apply(); + IE7.CSS.apply(); + + IE7.recalc(); +})(); + +})(this, document); diff --git a/app/assets/javascripts/ie/ie8.js b/app/assets/javascripts/ie/ie8.js new file mode 100644 index 00000000..b1ed5d52 --- /dev/null +++ b/app/assets/javascripts/ie/ie8.js @@ -0,0 +1,2688 @@ +/* + IE7/IE8/IE9.js - copyright 2004-2010, Dean Edwards + http://code.google.com/p/ie7-js/ + http://www.opensource.org/licenses/mit-license.php +*/ + +/* W3C compliance for Microsoft Internet Explorer */ + +/* credits/thanks: + Shaggy, Martijn Wargers, Jimmy Cerra, Mark D Anderson, + Lars Dieckow, Erik Arvidsson, Gellrt Gyuris, James Denny, + Unknown W Brackets, Benjamin Westfarer, Rob Eberhardt, + Bill Edney, Kevin Newman, James Crompton, Matthew Mastracci, + Doug Wright, Richard York, Kenneth Kolano, MegaZone, + Thomas Verelst, Mark 'Tarquin' Wilton-Jones, Rainer hlfors, + David Zulaica, Ken Kolano, Kevin Newman, Sjoerd Visscher, + Ingo Chao +*/ + +// timestamp: Fri, 30 Apr 2010 20:59:18 + +(function(window, document) { + +var IE7 = window.IE7 = { + version: "2.1(beta4)", + toString: K("[IE7]") +}; +IE7.compat = 8; +var appVersion = IE7.appVersion = navigator.appVersion.match(/MSIE (\d\.\d)/)[1] - 0; + +if (/ie7_off/.test(top.location.search) || appVersion < 5.5 || appVersion >= IE7.compat) return; + +var MSIE5 = appVersion < 6; + +var Undefined = K(); +var documentElement = document.documentElement, body, viewport; +var ANON = "!"; +var HEADER = ":link{ie7-link:link}:visited{ie7-link:visited}"; + +// ----------------------------------------------------------------------- +// external +// ----------------------------------------------------------------------- + +var RELATIVE = /^[\w\.]+[^:]*$/; +function makePath(href, path) { + if (RELATIVE.test(href)) href = (path || "") + href; + return href; +}; + +function getPath(href, path) { + href = makePath(href, path); + return href.slice(0, href.lastIndexOf("/") + 1); +}; + +// Get the path to this script +var script = document.scripts[document.scripts.length - 1]; +var path = getPath(script.src); + +// Use microsoft's http request object to load external files +try { + var httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); +} catch (ex) { + // ActiveX disabled +} + +var fileCache = {}; +function loadFile(href, path) { + try { + href = makePath(href, path); + if (!fileCache[href]) { + httpRequest.open("GET", href, false); + httpRequest.send(); + if (httpRequest.status == 0 || httpRequest.status == 200) { + fileCache[href] = httpRequest.responseText; + } + } + } catch (ex) { + // ignore errors + } + return fileCache[href] || ""; +}; + +// ----------------------------------------------------------------------- +// OO support +// ----------------------------------------------------------------------- + + +// This is a cut-down version of base2 (http://code.google.com/p/base2/) + +var _slice = Array.prototype.slice; + +// private +var _FORMAT = /%([1-9])/g; +var _LTRIM = /^\s\s*/; +var _RTRIM = /\s\s*$/; +var _RESCAPE = /([\/()[\]{}|*+-.,^$?\\])/g; // safe regular expressions +var _BASE = /\bbase\b/; +var _HIDDEN = ["constructor", "toString"]; // only override these when prototyping + +var prototyping; + +function Base(){}; +Base.extend = function(_instance, _static) { + // Build the prototype. + prototyping = true; + var _prototype = new this; + extend(_prototype, _instance); + prototyping = false; + + // Create the wrapper for the constructor function. + var _constructor = _prototype.constructor; + function klass() { + // Don't call the constructor function when prototyping. + if (!prototyping) _constructor.apply(this, arguments); + }; + _prototype.constructor = klass; + + // Build the static interface. + klass.extend = arguments.callee; + extend(klass, _static); + klass.prototype = _prototype; + return klass; +}; +Base.prototype.extend = function(source) { + return extend(this, source); +}; + + +// A collection of regular expressions and their associated replacement values. +// A Base class for creating parsers. + +var HASH = "#"; +var ITEMS = "#"; +var KEYS = "."; +var COMPILED = "/"; + +var REGGRP_BACK_REF = /\\(\d+)/g, + REGGRP_ESCAPE_COUNT = /\[(\\.|[^\]\\])+\]|\\.|\(\?/g, + REGGRP_PAREN = /\(/g, + REGGRP_LOOKUP = /\$(\d+)/, + REGGRP_LOOKUP_SIMPLE = /^\$\d+$/, + REGGRP_LOOKUPS = /(\[(\\.|[^\]\\])+\]|\\.|\(\?)|\(/g, + REGGRP_DICT_ENTRY = /^<#\w+>$/, + REGGRP_DICT_ENTRIES = /<#(\w+)>/g; + +var RegGrp = Base.extend({ + constructor: function(values) { + this[KEYS] = []; + this[ITEMS] = {}; + this.merge(values); + }, + + //dictionary: null, + //ignoreCase: false, + + add: function(expression, replacement) { + delete this[COMPILED]; + if (expression instanceof RegExp) { + expression = expression.source; + } + if (!this[HASH + expression]) this[KEYS].push(String(expression)); + return this[ITEMS][HASH + expression] = new RegGrp.Item(expression, replacement, this); + }, + + compile: function(recompile) { + if (recompile || !this[COMPILED]) { + this[COMPILED] = new RegExp(this, this.ignoreCase ? "gi" : "g"); + } + return this[COMPILED]; + }, + + merge: function(values) { + for (var i in values) this.add(i, values[i]); + }, + + exec: function(string) { + var group = this, + patterns = group[KEYS], + items = group[ITEMS], item; + var result = this.compile(true).exec(string); + if (result) { + // Loop through the RegGrp items. + var i = 0, offset = 1; + while ((item = items[HASH + patterns[i++]])) { + var next = offset + item.length + 1; + if (result[offset]) { // do we have a result? + if (item.replacement === 0) { + return group.exec(string); + } else { + var args = result.slice(offset, next), j = args.length; + while (--j) args[j] = args[j] || ""; // some platforms return null/undefined for non-matching sub-expressions + args[0] = {match: args[0], item: item}; + return args; + } + } + offset = next; + } + } + return null; + }, + + parse: function(string) { + string += ""; // type safe + var group = this, + patterns = group[KEYS], + items = group[ITEMS]; + return string.replace(this.compile(), function(match) { + var args = [], item, offset = 1, i = arguments.length; + while (--i) args[i] = arguments[i] || ""; // some platforms return null/undefined for non-matching sub-expressions + // Loop through the RegGrp items. + while ((item = items[HASH + patterns[i++]])) { + var next = offset + item.length + 1; + if (args[offset]) { // do we have a result? + var replacement = item.replacement; + switch (typeof replacement) { + case "function": + return replacement.apply(group, args.slice(offset, next)); + case "number": + return args[offset + replacement]; + default: + return replacement; + } + } + offset = next; + } + return match; + }); + }, + + toString: function() { + var strings = [], + keys = this[KEYS], + items = this[ITEMS], item; + for (var i = 0; item = items[HASH + keys[i]]; i++) { + strings[i] = item.source; + } + return "(" + strings.join(")|(") + ")"; + } +}, { + IGNORE: null, // a null replacement value means that there is no replacement. + + Item: Base.extend({ + constructor: function(source, replacement, owner) { + var length = source.indexOf("(") === -1 ? 0 : RegGrp.count(source); + + var dictionary = owner.dictionary; + if (dictionary && source.indexOf("<#") !== -1) { + if (REGGRP_DICT_ENTRY.test(source)) { + var entry = dictionary[ITEMS][HASH + source.slice(2, -1)]; + source = entry.replacement; + length = entry._length; + } else { + source = dictionary.parse(source); + } + } + + if (typeof replacement == "number") replacement = String(replacement); + else if (replacement == null) replacement = 0; + + // Does the expression use sub-expression lookups? + if (typeof replacement == "string" && REGGRP_LOOKUP.test(replacement)) { + if (REGGRP_LOOKUP_SIMPLE.test(replacement)) { // A simple lookup? (e.g. "$2"). + // Store the index (used for fast retrieval of matched strings). + var index = replacement.slice(1) - 0; + if (index && index <= length) replacement = index; + } else { + // A complicated lookup (e.g. "Hello $2 $1."). + var lookup = replacement, regexp; + replacement = function(match) { + if (!regexp) { + regexp = new RegExp(source, "g" + (this.ignoreCase ? "i": "")); + } + return match.replace(regexp, lookup); + }; + } + } + + this.length = length; + this.source = String(source); + this.replacement = replacement; + } + }), + + count: function(expression) { + return (String(expression).replace(REGGRP_ESCAPE_COUNT, "").match(REGGRP_PAREN) || "").length; + } +}); + +var Dictionary = RegGrp.extend({ + parse: function(phrase) { + // Prevent sub-expressions in dictionary entries from capturing. + var entries = this[ITEMS]; + return phrase.replace(REGGRP_DICT_ENTRIES, function(match, entry) { + entry = entries[HASH + entry]; + return entry ? entry._nonCapturing : match; + }); + }, + + add: function(expression, replacement) { + // Get the underlying replacement value. + if (replacement instanceof RegExp) { + replacement = replacement.source; + } + // Translate the replacement. + // The result is the original replacement recursively parsed by this dictionary. + var nonCapturing = replacement.replace(REGGRP_LOOKUPS, _nonCapture); + if (replacement.indexOf("(") !== -1) { + var realLength = RegGrp.count(replacement); + } + if (replacement.indexOf("<#") !== -1) { + replacement = this.parse(replacement); + nonCapturing = this.parse(nonCapturing); + } + var item = this.base(expression, replacement); + item._nonCapturing = nonCapturing; + item._length = realLength || item.length; // underlying number of sub-groups + return item; + }, + + toString: function() { + return "(<#" + this[PATTERNS].join(">)|(<#") + ">)"; + } +}); + +function _nonCapture(match, escaped) { + return escaped || "(?:"; // non-capturing +}; + +// ========================================================================= +// lang/extend.js +// ========================================================================= + +function extend(object, source) { // or extend(object, key, value) + if (object && source) { + var proto = (typeof source == "function" ? Function : Object).prototype; + // Add constructor, toString etc + var i = _HIDDEN.length, key; + if (prototyping) while (key = _HIDDEN[--i]) { + var value = source[key]; + if (value != proto[key]) { + if (_BASE.test(value)) { + _override(object, key, value) + } else { + object[key] = value; + } + } + } + // Copy each of the source object's properties to the target object. + for (key in source) if (typeof proto[key] == "undefined") { + var value = source[key]; + // Check for method overriding. + if (object[key] && typeof value == "function" && _BASE.test(value)) { + _override(object, key, value); + } else { + object[key] = value; + } + } + } + return object; +}; + +function _override(object, name, method) { + // Override an existing method. + var ancestor = object[name]; + object[name] = function() { + var previous = this.base; + this.base = ancestor; + var returnValue = method.apply(this, arguments); + this.base = previous; + return returnValue; + }; +}; + +function combine(keys, values) { + // Combine two arrays to make a hash. + if (!values) values = keys; + var hash = {}; + for (var i in keys) hash[i] = values[i]; + return hash; +}; + +function format(string) { + // Replace %n with arguments[n]. + // e.g. format("%1 %2%3 %2a %1%3", "she", "se", "lls"); + // ==> "she sells sea shells" + // Only %1 - %9 supported. + var args = arguments; + var _FORMAT = new RegExp("%([1-" + arguments.length + "])", "g"); + return String(string).replace(_FORMAT, function(match, index) { + return index < args.length ? args[index] : match; + }); +}; + +function match(string, expression) { + // Same as String.match() except that this function will return an empty + // array if there is no match. + return String(string).match(expression) || []; +}; + +function rescape(string) { + // Make a string safe for creating a RegExp. + return String(string).replace(_RESCAPE, "\\$1"); +}; + +// http://blog.stevenlevithan.com/archives/faster-trim-javascript +function trim(string) { + return String(string).replace(_LTRIM, "").replace(_RTRIM, ""); +}; + +function K(k) { + return function() { + return k; + }; +}; + +// ----------------------------------------------------------------------- +// parsing +// ----------------------------------------------------------------------- + +var Parser = RegGrp.extend({ignoreCase: true}); + +var SINGLE_QUOTES = /'/g, + ESCAPED = /'(\d+)'/g, + ESCAPE = /\\/g, + UNESCAPE = /\\([nrtf'"])/g; + +var strings = []; + +var encoder = new Parser({ + // comments + "": "", + "\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/": "", + // get rid + "@(namespace|import)[^;\\n]+[;\\n]": "", + // strings + "'(\\\\.|[^'\\\\])*'": encodeString, + '"(\\\\.|[^"\\\\])*"': encodeString, + // white space + "\\s+": " " +}); + +function encode(selector) { + return encoder.parse(selector).replace(UNESCAPE, "$1"); +}; + +function decode(query) { + // put string values back + return query.replace(ESCAPED, decodeString); +}; + +function encodeString(string) { + var index = strings.length; + strings[index] = string.slice(1, -1) + .replace(UNESCAPE, "$1") + .replace(SINGLE_QUOTES, "\\'"); + return "'" + index + "'"; +}; + +function decodeString(match, index) { + var string = strings[index]; + if (string == null) return match; + return "'" + strings[index] + "'"; +}; + +function getString(value) { + return value.indexOf("'") === 0 ? strings[value.slice(1, - 1)] : value; +}; + +// clone a "width" function to create a "height" function +var rotater = new RegGrp({ + Width: "Height", + width: "height", + Left: "Top", + left: "top", + Right: "Bottom", + right: "bottom", + onX: "onY" +}); + +function rotate(fn) { + return rotater.parse(fn); +}; + +// ----------------------------------------------------------------------- +// event handling +// ----------------------------------------------------------------------- + +var eventHandlers = []; + +function addResize(handler) { + addRecalc(handler); + addEventHandler(window, "onresize", handler); +}; + +// add an event handler (function) to an element +function addEventHandler(element, type, handler) { + element.attachEvent(type, handler); + // store the handler so it can be detached later + eventHandlers.push(arguments); +}; + +// remove an event handler assigned to an element by IE7 +function removeEventHandler(element, type, handler) { + try { + element.detachEvent(type, handler); + } catch (ex) { + // write a letter of complaint to microsoft.. + } +}; + +// remove event handlers (they eat memory) +addEventHandler(window, "onunload", function() { + var handler; + while (handler = eventHandlers.pop()) { + removeEventHandler(handler[0], handler[1], handler[2]); + } +}); + +function register(handler, element, condition) { // -@DRE + //var set = handler[element.uniqueID]; + if (!handler.elements) handler.elements = {}; + if (condition) handler.elements[element.uniqueID] = element; + else delete handler.elements[element.uniqueID]; + //return !set && condition; + return condition; +}; + +addEventHandler(window, "onbeforeprint", function() { + if (!IE7.CSS.print) new StyleSheet("print"); + IE7.CSS.print.recalc(); +}); + +// ----------------------------------------------------------------------- +// pixel conversion +// ----------------------------------------------------------------------- + +// this is handy because it means that web developers can mix and match +// measurement units in their style sheets. it is not uncommon to +// express something like padding in "em" units whilst border thickness +// is most often expressed in pixels. + +var PIXEL = /^\d+(px)?$/i; +var PERCENT = /^\d+%$/; +var getPixelValue = function(element, value) { + if (PIXEL.test(value)) return parseInt(value); + var style = element.style.left; + var runtimeStyle = element.runtimeStyle.left; + element.runtimeStyle.left = element.currentStyle.left; + element.style.left = value || 0; + value = element.style.pixelLeft; + element.style.left = style; + element.runtimeStyle.left = runtimeStyle; + return value; +}; + +// ----------------------------------------------------------------------- +// generic +// ----------------------------------------------------------------------- + +var $IE7 = "ie7-"; + +var Fix = Base.extend({ + constructor: function() { + this.fixes = []; + this.recalcs = []; + }, + init: Undefined +}); + +// a store for functions that will be called when refreshing IE7 +var recalcs = []; +function addRecalc(recalc) { + recalcs.push(recalc); +}; + +IE7.recalc = function() { + IE7.HTML.recalc(); + // re-apply style sheet rules (re-calculate ie7 classes) + IE7.CSS.recalc(); + // apply global fixes to the document + for (var i = 0; i < recalcs.length; i++) recalcs[i](); +}; + +function isFixed(element) { + return element.currentStyle["ie7-position"] == "fixed"; +}; + +// original style +function getDefinedStyle(element, propertyName) { + return element.currentStyle[$IE7 + propertyName] || element.currentStyle[propertyName]; +}; + +function setOverrideStyle(element, propertyName, value) { + if (element.currentStyle[$IE7 + propertyName] == null) { + element.runtimeStyle[$IE7 + propertyName] = element.currentStyle[propertyName]; + } + element.runtimeStyle[propertyName] = value; +}; + +// Create a temporary element which is used to inherit styles +// from the target element. +function createTempElement(tagName) { + var element = document.createElement(tagName || "object"); + element.style.cssText = "position:absolute;padding:0;display:block;border:none;clip:rect(0 0 0 0);left:-9999"; + element.ie7_anon = true; + return element; +}; + + +// ========================================================================= +// ie7-css.js +// ========================================================================= + +var NEXT_SIBLING = "(e.nextSibling&&IE7._getElementSibling(e,'next'))", + PREVIOUS_SIBLING = NEXT_SIBLING.replace(/next/g, "previous"), + IS_ELEMENT = "e.nodeName>'@'", + IF_ELEMENT = "if(" + IS_ELEMENT + "){"; + +var ID_ATTRIBUTE = "(e.nodeName==='FORM'?IE7._getAttribute(e,'id'):e.id)"; + +var HYPERLINK = /a(#[\w-]+)?(\.[\w-]+)?:(hover|active)/i; +var FIRST_LINE_LETTER = /(.*)(:first-(line|letter))/; +var SPACE = /\s/; +var RULE = /((?:\\.|[^{\\])+)\{((?:\\.|[^}\\])+)\}/g; +var SELECTOR = /(?:\\.|[^,\\])+/g; + +var styleSheets = document.styleSheets; + +var inheritedProperties = []; + +IE7.CSS = new (Fix.extend({ // single instance + parser: new Parser, + screen: "", + print: "", + styles: [], + rules: [], + pseudoClasses: appVersion < 7 ? "first\\-child" : "", + dynamicPseudoClasses: { + toString: function() { + var strings = []; + for (var pseudoClass in this) strings.push(pseudoClass); + return strings.join("|"); + } + }, + + init: function() { + var NONE = "^\x01$"; + var CLASS = "\\[class=?[^\\]]*\\]"; + var pseudoClasses = []; + if (this.pseudoClasses) pseudoClasses.push(this.pseudoClasses); + var dynamicPseudoClasses = this.dynamicPseudoClasses.toString(); + if (dynamicPseudoClasses) pseudoClasses.push(dynamicPseudoClasses); + pseudoClasses = pseudoClasses.join("|"); + var unknown = appVersion < 7 ? ["[>+~\\[(]|([:.])[\\w-]+\\1"] : [CLASS]; + if (pseudoClasses) unknown.push(":(" + pseudoClasses + ")"); + this.UNKNOWN = new RegExp(unknown.join("|") || NONE, "i"); + var complex = appVersion < 7 ? ["\\[[^\\]]+\\]|[^\\s(\\[]+\\s*[+~]"] : [CLASS]; + var complexRule = complex.concat(); + if (pseudoClasses) complexRule.push(":(" + pseudoClasses + ")"); + Rule.COMPLEX = new RegExp(complexRule.join("|") || NONE, "ig"); + if (this.pseudoClasses) complex.push(":(" + this.pseudoClasses + ")"); + DynamicRule.COMPLEX = new RegExp(complex.join("|") || NONE, "i"); + dynamicPseudoClasses = "not\\(:" + dynamicPseudoClasses.split("|").join("\\)|not\\(:") + "\\)|" + dynamicPseudoClasses; + DynamicRule.MATCH = new RegExp(dynamicPseudoClasses ? "(.*?):(" + dynamicPseudoClasses + ")(.*)" : NONE, "i"); + + this.createStyleSheet(); + this.refresh(); + }, + + addEventHandler: function() { + addEventHandler.apply(null, arguments); + }, + + addFix: function(expression, replacement) { + this.parser.add(expression, replacement); + }, + + addRecalc: function(propertyName, test, handler, replacement) { + // recalcs occur whenever the document is refreshed using document.recalc() + propertyName = propertyName.source || propertyName; + test = new RegExp("([{;\\s])" + propertyName + "\\s*:\\s*" + test + "[^;}]*"); + var id = this.recalcs.length; + if (typeof replacement == "string") replacement = propertyName + ":" + replacement; + this.addFix(test, function(match) { + if (typeof replacement == "function") replacement = replacement(match); + return (replacement ? replacement : match) + ";ie7-" + match.slice(1) + ";ie7_recalc" + id + ":1"; + }); + this.recalcs.push(arguments); + return id; + }, + + apply: function() { + this.getInlineCSS(); + new StyleSheet("screen"); + this.trash(); + }, + + createStyleSheet: function() { + // create the IE7 style sheet + document.getElementsByTagName("head")[0].appendChild(document.createElement("style")); + this.styleSheet = styleSheets[styleSheets.length - 1]; + // flag it so we can ignore it during parsing + this.styleSheet.ie7 = true; + this.styleSheet.owningElement.ie7 = true; + this.styleSheet.cssText = HEADER; + }, + + getInlineCSS: function() {// load inline styles + var styleSheets = document.getElementsByTagName("style"), styleSheet; + for (var i = styleSheets.length - 1; styleSheet = styleSheets[i]; i--) { + if (!styleSheet.disabled && !styleSheet.ie7) { + styleSheet._cssText = styleSheet.innerHTML; + } + } + }, + + getText: function(styleSheet, path) { + // Internet Explorer will trash unknown selectors (it converts them to "UNKNOWN"). + // So we must reload external style sheets (internal style sheets can have their text + // extracted through the innerHTML property). + + // load the style sheet text from an external file + try { + var cssText = styleSheet.cssText; + } catch (e) { + cssText = ""; + } + if (httpRequest) cssText = loadFile(styleSheet.href, path) || cssText; + return cssText; + }, + + recalc: function() { + this.screen.recalc(); + // we're going to read through all style rules. + // certain rules have had ie7 properties added to them. + // e.g. p{top:0; ie7_recalc2:1; left:0} + // this flags a property in the rule as needing a fix. + // the selector text is then used to query the document. + // we can then loop through the results of the query + // and fix the elements. + // we ignore the IE7 rules - so count them in the header + var RECALCS = /ie7_recalc\d+/g; + var start = HEADER.match(/[{,]/g).length; + // only calculate screen fixes. print fixes don't show up anyway + var rules = this.styleSheet.rules, rule; + var calcs, calc, elements, element, i, j, k, id; + // loop through all rules + for (i = start; rule = rules[i]; i++) { + var cssText = rule.style.cssText; + // search for the "ie7_recalc" flag (there may be more than one) + if (calcs = cssText.match(RECALCS)) { + // use the selector text to query the document + elements = cssQuery(rule.selectorText); + // if there are matching elements then loop + // through the recalc functions and apply them + // to each element + if (elements.length) for (j = 0; j < calcs.length; j++) { + // get the matching flag (e.g. ie7_recalc3) + id = calcs[j]; + // extract the numeric id from the end of the flag + // and use it to index the collection of recalc + // functions + calc = IE7.CSS.recalcs[id.slice(10)][2]; + for (k = 0; (element = elements[k]); k++) { + // apply the fix + if (element.currentStyle[id]) calc(element, cssText); + } + } + } + } + }, + + refresh: function() { + this.styleSheet.cssText = HEADER + this.screen + this.print; + }, + + trash: function() { + // trash the old style sheets + for (var i = 0; i < styleSheets.length; i++) { + if (!styleSheets[i].ie7) { + try { + var cssText = styleSheets[i].cssText; + } catch (e) { + cssText = ""; + } + if (cssText) styleSheets[i].cssText = ""; + } + } + } +})); + +// ----------------------------------------------------------------------- +// IE7 StyleSheet class +// ----------------------------------------------------------------------- + +var StyleSheet = Base.extend({ + constructor: function(media) { + this.media = media; + this.load(); + IE7.CSS[media] = this; + IE7.CSS.refresh(); + }, + + createRule: function(selector, cssText) { + var match; + if (PseudoElement && (match = selector.match(PseudoElement.MATCH))) { + return new PseudoElement(match[1], match[2], cssText); + } else if (match = selector.match(DynamicRule.MATCH)) { + if (!HYPERLINK.test(match[0]) || DynamicRule.COMPLEX.test(match[0])) { + return new DynamicRule(selector, match[1], match[2], match[3], cssText); + } + } else { + return new Rule(selector, cssText); + } + return selector + " {" + cssText + "}"; + }, + + getText: function() { + // store for style sheet text + // parse media decalarations + var MEDIA = /@media\s+([^{]+?)\s*\{([^@]+\})\s*\}/gi; + var IMPORTS = /@import[^;\n]+/gi; + var TRIM_IMPORTS = /@import\s+url\s*\(\s*["']?|["']?\s*\)\s*/gi; + var URL = /(url\s*\(\s*['"]?)([\w\.]+[^:\)]*['"]?\))/gi; + + var self = this; + + // Store loaded cssText URLs + var fileCache = {}; + + function getCSSText(styleSheet, path, media, level) { + var cssText = ""; + if (!level) { + media = toSimpleMedia(styleSheet.media); + level = 0; + } + if (media === "none") { + styleSheet.disabled = true; + return ""; + } + if (media === "all" || media === self.media) { + // IE only allows importing style sheets three levels deep. + // it will crash if you try to access a level below this + try { + var canAcess = !!styleSheet.cssText; + } catch (exe) {} + if (level < 3 && canAcess) { + var hrefs = styleSheet.cssText.match(IMPORTS); + // loop through imported style sheets + for (var i = 0, imported; i < styleSheet.imports.length; i++) { + var imported = styleSheet.imports[i]; + var href = styleSheet._href || styleSheet.href; + imported._href = hrefs[i].replace(TRIM_IMPORTS, ""); + // call this function recursively to get all imported style sheets + cssText += getCSSText(imported, getPath(href, path), media, level + 1); + } + } + // retrieve inline style or load an external style sheet + cssText += encode(styleSheet.href ? loadStyleSheet(styleSheet, path) : styleSheet.owningElement._cssText); + cssText = parseMedia(cssText, self.media); + } + return cssText; + }; + + // Load all style sheets in the document + for (var i = 0; i < styleSheets.length; i++) { + var styleSheet = styleSheets[i]; + if (!styleSheet.disabled && !styleSheet.ie7) this.cssText += getCSSText(styleSheet); + } + + // helper functions + function parseMedia(cssText, media) { + filterMedia.value = media; + return cssText.replace(MEDIA, filterMedia); + }; + + function filterMedia(match, media, cssText) { + media = toSimpleMedia(media); + switch (media) { + case "screen": + case "print": + if (media !== filterMedia.value) return ""; + case "all": + return cssText; + } + return ""; + }; + + function toSimpleMedia(media) { + if (!media) return "all"; + var split = media.toLowerCase().split(/\s*,\s*/); + media = "none"; + for (var i = 0; i < split.length; i++) { + if (split[i] === "all") return "all"; + if (split[i] === "screen") { + if (media === "print") return "all"; + media = "screen"; + } else if (split[i] === "print") { + if (media === "screen") return "all"; + media = "print"; + } + } + return media; + }; + + // Load an external style sheet + function loadStyleSheet(styleSheet, path) { + var href = styleSheet._href || styleSheet.href; + var url = makePath(href, path); + // If the style sheet has already loaded then don't reload it + if (fileCache[url]) return ""; + // Load from source + fileCache[url] = styleSheet.disabled ? "" : + fixUrls(IE7.CSS.getText(styleSheet, path), getPath(href, path)); + return fileCache[url]; + }; + + // Fix CSS paths. + // We're lumping all css text into one big style sheet so relative + // paths have to be fixed. This is necessary anyway because of other + // Internet Explorer bugs. + function fixUrls(cssText, pathname) { + // hack & slash + return cssText.replace(URL, "$1" + pathname.slice(0, pathname.lastIndexOf("/") + 1) + "$2"); + }; + }, + + load: function() { + this.cssText = ""; + this.getText(); + this.parse(); + if (inheritedProperties.length) { + this.cssText = parseInherited(this.cssText); + } + this.cssText = decode(this.cssText); + fileCache = {}; + }, + + parse: function() { + var cssText = IE7.CSS.parser.parse(this.cssText); + + var declarations = ""; + this.cssText = cssText.replace(/@charset[^;]+;|@font\-face[^\}]+\}/g, function(match) { + declarations += match + "\n"; + return ""; + }); + this.declarations = decode(declarations); + + // Parse the style sheet + var offset = IE7.CSS.rules.length; + var rules = [], rule; + while ((rule = RULE.exec(this.cssText))) { + var cssText = rule[2]; + if (cssText) { + var fixDescendants = appVersion < 7 && cssText.indexOf("AlphaImageLoader") !== -1; + var selectors = rule[1].match(SELECTOR), selector; + for (var i = 0; selector = selectors[i]; i++) { + selector = trim(selector); + var isUnknown = IE7.CSS.UNKNOWN.test(selector); + selectors[i] = isUnknown ? this.createRule(selector, cssText) : selector + "{" + cssText + "}"; + if (fixDescendants) selectors[i] += this.createRule(selector + ">*", "position:relative"); + } + rules.push(selectors.join("\n")); + } + } + this.cssText = rules.join("\n"); + this.rules = IE7.CSS.rules.slice(offset); + }, + + recalc: function() { + var rule, i; + for (i = 0; (rule = this.rules[i]); i++) rule.recalc(); + }, + + toString: function() { + return this.declarations + "@media " + this.media + "{" + this.cssText + "}"; + } +}); + +var PseudoElement; + +// ----------------------------------------------------------------------- +// IE7 style rules +// ----------------------------------------------------------------------- + +var Rule = IE7.Rule = Base.extend({ + constructor: function(selector, cssText) { + this.id = IE7.CSS.rules.length; + this.className = Rule.PREFIX + this.id; + var pseudoElement = selector.match(FIRST_LINE_LETTER); + this.selector = (pseudoElement ? pseudoElement[1] : selector) || "*"; + this.selectorText = this.parse(this.selector) + (pseudoElement ? pseudoElement[2] : ""); + this.cssText = cssText; + this.MATCH = new RegExp("\\s" + this.className + "(\\s|$)", "g"); + IE7.CSS.rules.push(this); + this.init(); + }, + + init: Undefined, + + add: function(element) { + // allocate this class + element.className += " " + this.className; + }, + + recalc: function() { + // execute the underlying css query for this class + var match = cssQuery(this.selector); + // add the class name for all matching elements + for (var i = 0; i < match.length; i++) this.add(match[i]); + }, + + parse: function(selector) { + // attempt to preserve specificity for "loose" parsing by + // removing unknown tokens from a css selector but keep as + // much as we can.. + var simple = selector.replace(Rule.CHILD, " ").replace(Rule.COMPLEX, ""); + if (appVersion < 7) simple = simple.replace(Rule.MULTI, ""); + var tags = match(simple, Rule.TAGS).length - match(selector, Rule.TAGS).length; + var classes = match(simple, Rule.CLASSES).length - match(selector, Rule.CLASSES).length + 1; + while (classes > 0 && Rule.CLASS.test(simple)) { + simple = simple.replace(Rule.CLASS, ""); + classes--; + } + while (tags > 0 && Rule.TAG.test(simple)) { + simple = simple.replace(Rule.TAG, "$1*"); + tags--; + } + simple += "." + this.className; + classes = Math.min(classes, 2); + tags = Math.min(tags, 2); + var score = -10 * classes - tags; + if (score > 0) { + simple = simple + "," + Rule.MAP[score] + " " + simple; + } + return simple; + }, + + remove: function(element) { + // deallocate this class + element.className = element.className.replace(this.MATCH, "$1"); + }, + + toString: function() { + return format("%1 {%2}", this.selectorText, this.cssText); + } +}, { + CHILD: />/g, + CLASS: /\.[\w-]+/, + CLASSES: /[.:\[]/g, + MULTI: /(\.[\w-]+)+/g, + PREFIX: "ie7_class", + TAG: /^\w+|([\s>+~])\w+/, + TAGS: /^\w|[\s>+~]\w/g, + MAP: { + "1": "html", + "2": "html body", + "10": ".ie7_html", + "11": "html.ie7_html", + "12": "html.ie7_html body", + "20": ".ie7_html .ie7_body", + "21": "html.ie7_html .ie7_body", + "22": "html.ie7_html body.ie7_body" + } +}); + +// ----------------------------------------------------------------------- +// IE7 dynamic style +// ----------------------------------------------------------------------- + +// object properties: +// attach: the element that an event handler will be attached to +// target: the element that will have the IE7 class applied + +var DynamicRule = Rule.extend({ + // properties + constructor: function(selector, attach, dynamicPseudoClass, target, cssText) { + this.negated = dynamicPseudoClass.indexOf("not") === 0; + if (this.negated) dynamicPseudoClass = dynamicPseudoClass.slice(5, -1); + // initialise object properties + this.attach = attach || "*"; + this.dynamicPseudoClass = IE7.CSS.dynamicPseudoClasses[dynamicPseudoClass]; + this.target = target; + this.base(selector, cssText); + }, + + recalc: function() { + // execute the underlying css query for this class + var attaches = cssQuery(this.attach), attach; + // process results + for (var i = 0; attach = attaches[i]; i++) { + // retrieve the event handler's target element(s) + var target = this.target ? cssQuery(this.target, attach) : [attach]; + // attach event handlers for dynamic pseudo-classes + if (target.length) this.dynamicPseudoClass.apply(attach, target, this); + } + } +}); + +// ----------------------------------------------------------------------- +// IE7 dynamic pseudo-classes +// ----------------------------------------------------------------------- + +var DynamicPseudoClass = Base.extend({ + constructor: function(name, apply) { + this.name = name; + this.apply = apply; + this.instances = {}; + IE7.CSS.dynamicPseudoClasses[name] = this; + }, + + register: function(instance, negated) { + // an "instance" is actually an Arguments object + var _class = instance[2]; + if (!negated && _class.negated) { + this.unregister(instance, true); + } else { + instance.id = _class.id + instance[0].uniqueID; + if (!this.instances[instance.id]) { + var target = instance[1], j; + for (j = 0; j < target.length; j++) _class.add(target[j]); + this.instances[instance.id] = instance; + } + } + }, + + unregister: function(instance, negated) { + var _class = instance[2]; + if (!negated && _class.negated) { + this.register(instance, true); + } else { + if (this.instances[instance.id]) { + var target = instance[1], j; + for (j = 0; j < target.length; j++) _class.remove(target[j]); + delete this.instances[instance.id]; + } + } + } +}); + +// ----------------------------------------------------------------------- +// dynamic pseudo-classes +// ----------------------------------------------------------------------- + +var Hover = new DynamicPseudoClass("hover", function(element) { + var instance = arguments; + IE7.CSS.addEventHandler(element, "onmouseenter", function() { + Hover.register(instance); + }); + IE7.CSS.addEventHandler(element, "onmouseleave", function() { + Hover.unregister(instance); + }); +}); + +// globally trap the mouseup event (thanks Martijn!) +addEventHandler(document, "onmouseup", function() { + var instances = Hover.instances; + for (var i in instances) + if (!instances[i][0].contains(event.srcElement)) + Hover.unregister(instances[i]); +}); + +var ATTR = { + "=": "%1==='%2'", // "[@%1='%2']" + "~=": "(' '+%1+' ').indexOf(' %2 ')!==-1", // "[contains(concat(' ',@%1,' '),' %2 ')]", + "|=": "%1==='%2'||%1.indexOf('%2-')===0", // "[@%1='%2' or starts-with(@%1,'%2-')]", + "^=": "%1.indexOf('%2')===0", // "[starts-with(@%1,'%2')]", + "$=": "%1.slice(-'%2'.length)==='%2'", // "[ends-with(@%1,'%2')]", + "*=": "%1.indexOf('%2')!==-1" // "[contains(@%1,'%2')]" +}; +ATTR[""] = "%1!=null"; // "[@%1]" + +var FILTER = { + "<#attr>": function(match, name, operator, value) { + var attr = "IE7._getAttribute(e,'" + name + "')"; + value = getString(value); + if (operator.length > 1) { + if (!value || operator === "~=" && SPACE.test(value)) { + return "false&&"; + } + attr = "(" + attr + "||'')"; + } + return "(" + format(ATTR[operator], attr, value) + ")&&"; + }, + + "<#id>": ID_ATTRIBUTE + "==='$1'&&", + + "<#class>": "e.className&&(' '+e.className+' ').indexOf(' $1 ')!==-1&&", + + // PSEDUO + ":first-child": "!" + PREVIOUS_SIBLING + "&&", + ":link": "e.currentStyle['ie7-link']=='link'&&", + ":visited": "e.currentStyle['ie7-link']=='visited'&&" +}; + +// ========================================================================= +// ie7-html.js +// ========================================================================= + +// default font-sizes +//HEADER += "h1{font-size:2em}h2{font-size:1.5em;}h3{font-size:1.17em;}h4{font-size:1em}h5{font-size:.83em}h6{font-size:.67em}"; + +IE7.HTML = new (Fix.extend({ // single instance + fixed: {}, + + init: Undefined, + + addFix: function() { + // fixes are a one-off, they are applied when the document is loaded + this.fixes.push(arguments); + }, + + apply: function() { + for (var i = 0; i < this.fixes.length; i++) { + var match = cssQuery(this.fixes[i][0]); + var fix = this.fixes[i][1]; + for (var j = 0; j < match.length; j++) fix(match[j]); + } + }, + + addRecalc: function() { + // recalcs occur whenever the document is refreshed using document.recalc() + this.recalcs.push(arguments); + }, + + recalc: function() { + // loop through the fixes + for (var i = 0; i < this.recalcs.length; i++) { + var match = cssQuery(this.recalcs[i][0]); + var recalc = this.recalcs[i][1], element; + var key = Math.pow(2, i); + for (var j = 0; (element = match[j]); j++) { + var uniqueID = element.uniqueID; + if ((this.fixed[uniqueID] & key) === 0) { + element = recalc(element) || element; + this.fixed[uniqueID] |= key; + } + } + } + } +})); + +if (appVersion < 7) { + // provide support for the tag. + document.createElement("abbr"); + + // bind to the first child control + IE7.HTML.addRecalc("label", function(label) { + if (!label.htmlFor) { + var firstChildControl = cssQuery("input,textarea", label, true); + if (firstChildControl) { + addEventHandler(label, "onclick", function() { + firstChildControl.click(); + }); + } + } + }); +} + +// ========================================================================= +// ie7-layout.js +// ========================================================================= + +var NUMERIC = "[.\\d]"; + +(function() { + var layout = IE7.Layout = {}; + + // big, ugly box-model hack + min/max stuff + + // #tantek > #erik > #dean { voice-family: hacker; } + + // ----------------------------------------------------------------------- + // "layout" + // ----------------------------------------------------------------------- + + HEADER += "*{boxSizing:content-box}"; + + // give an element "layout" + layout.boxSizing = function(element) { + if (!element.currentStyle.hasLayout) { + //# element.runtimeStyle.fixedHeight = + element.style.height = "0cm"; + if (element.currentStyle.verticalAlign === "auto") + element.runtimeStyle.verticalAlign = "top"; + // when an element acquires "layout", margins no longer collapse correctly + collapseMargins(element); + } + }; + + // ----------------------------------------------------------------------- + // Margin Collapse + // ----------------------------------------------------------------------- + + function collapseMargins(element) { + if (element != viewport && element.currentStyle.position !== "absolute") { + collapseMargin(element, "marginTop"); + collapseMargin(element, "marginBottom"); + } + }; + + function collapseMargin(element, type) { + if (!element.runtimeStyle[type]) { + var parentElement = element.parentElement; + var isTopMargin = type === "marginTop"; + if (parentElement && parentElement.currentStyle.hasLayout && !IE7._getElementSibling(element, isTopMargin ? "previous" : "next")) return; + var child = element[isTopMargin ? "firstChild" : "lastChild"]; + if (child && child.nodeName < "@") child = IE7._getElementSibling(child, isTopMargin ? "next" : "previous"); + if (child && child.currentStyle.styleFloat === "none" && child.currentStyle.hasLayout) { + collapseMargin(child, type); + margin = _getMargin(element, element.currentStyle[type]); + childMargin = _getMargin(child, child.currentStyle[type]); + if (margin < 0 || childMargin < 0) { + element.runtimeStyle[type] = margin + childMargin; + } else { + element.runtimeStyle[type] = Math.max(childMargin, margin); + } + child.runtimeStyle[type] = "0px"; + } + } + }; + + function _getMargin(element, value) { + return value === "auto" ? 0 : getPixelValue(element, value); + }; + + // ----------------------------------------------------------------------- + // box-model + // ----------------------------------------------------------------------- + + // constants + var UNIT = /^[.\d][\w]*$/, AUTO = /^(auto|0cm)$/; + + var apply = {}; + layout.borderBox = function(element){ + apply.Width(element); + apply.Height(element); + }; + + var _fixWidth = function(HEIGHT) { + apply.Width = function(element) { + if (!PERCENT.test(element.currentStyle.width)) _fixWidth(element); + if (HEIGHT) collapseMargins(element); + }; + + function _fixWidth(element, value) { + if (!element.runtimeStyle.fixedWidth) { + if (!value) value = element.currentStyle.width; + element.runtimeStyle.fixedWidth = UNIT.test(value) ? Math.max(0, getFixedWidth(element, value)) + "px" : value; + setOverrideStyle(element, "width", element.runtimeStyle.fixedWidth); + } + }; + + function layoutWidth(element) { + if (!isFixed(element)) { + var layoutParent = element.offsetParent; + while (layoutParent && !layoutParent.currentStyle.hasLayout) layoutParent = layoutParent.offsetParent; + } + return (layoutParent || viewport).clientWidth; + }; + + function getPixelWidth(element, value) { + if (PERCENT.test(value)) return parseInt(parseFloat(value) / 100 * layoutWidth(element)); + return getPixelValue(element, value); + }; + + var getFixedWidth = function(element, value) { + var borderBox = element.currentStyle["ie7-box-sizing"] === "border-box"; + var adjustment = 0; + if (MSIE5 && !borderBox) + adjustment += getBorderWidth(element) + getWidth(element, "padding"); + else if (!MSIE5 && borderBox) + adjustment -= getBorderWidth(element) + getWidth(element, "padding"); + return getPixelWidth(element, value) + adjustment; + }; + + // easy way to get border thickness for elements with "layout" + function getBorderWidth(element) { + return element.offsetWidth - element.clientWidth; + }; + + // have to do some pixel conversion to get padding/margin thickness :-( + function getWidth(element, type) { + return getPixelWidth(element, element.currentStyle[type + "Left"]) + getPixelWidth(element, element.currentStyle[type + "Right"]); + }; + + // ----------------------------------------------------------------------- + // min/max + // ----------------------------------------------------------------------- + + HEADER += "*{minWidth:none;maxWidth:none;min-width:none;max-width:none}"; + + // handle min-width property + layout.minWidth = function(element) { + // IE6 supports min-height so we frig it here + //#if (element.currentStyle.minHeight === "auto") element.runtimeStyle.minHeight = 0; + if (element.currentStyle["min-width"] != null) { + element.style.minWidth = element.currentStyle["min-width"]; + } + if (register(arguments.callee, element, element.currentStyle.minWidth !== "none")) { + layout.boxSizing(element); + _fixWidth(element); + resizeWidth(element); + } + }; + + // clone the minWidth function to make a maxWidth function + eval("IE7.Layout.maxWidth=" + String(layout.minWidth).replace(/min/g, "max")); + + // apply min/max restrictions + function resizeWidth(element) { + // check boundaries + if (element == document.body) { + var width = element.clientWidth; + } else { + var rect = element.getBoundingClientRect(); + width = rect.right - rect.left; + } + if (element.currentStyle.minWidth !== "none" && width < getFixedWidth(element, element.currentStyle.minWidth)) { + element.runtimeStyle.width = element.currentStyle.minWidth; + } else if (element.currentStyle.maxWidth !== "none" && width >= getFixedWidth(element, element.currentStyle.maxWidth)) { + element.runtimeStyle.width = element.currentStyle.maxWidth; + } else { + element.runtimeStyle.width = element.runtimeStyle.fixedWidth; + } + }; + + // ----------------------------------------------------------------------- + // right/bottom + // ----------------------------------------------------------------------- + + function fixRight(element) { + if (register(fixRight, element, /^(fixed|absolute)$/.test(element.currentStyle.position) && + getDefinedStyle(element, "left") !== "auto" && + getDefinedStyle(element, "right") !== "auto" && + AUTO.test(getDefinedStyle(element, "width")))) { + resizeRight(element); + layout.boxSizing(element); + } + }; + layout.fixRight = fixRight; + + function resizeRight(element) { + var left = getPixelWidth(element, element.runtimeStyle._left || element.currentStyle.left); + var width = layoutWidth(element) - getPixelWidth(element, element.currentStyle.right) - left - getWidth(element, "margin"); + if (parseInt(element.runtimeStyle.width) === width) return; + element.runtimeStyle.width = ""; + if (isFixed(element) || HEIGHT || element.offsetWidth < width) { + if (!MSIE5) width -= getBorderWidth(element) + getWidth(element, "padding"); + if (width < 0) width = 0; + element.runtimeStyle.fixedWidth = width; + setOverrideStyle(element, "width", width); + } + }; + + // ----------------------------------------------------------------------- + // window.onresize + // ----------------------------------------------------------------------- + + // handle window resize + var clientWidth = 0; + addResize(function() { + if (!viewport) return; + var i, wider = (clientWidth < viewport.clientWidth); + clientWidth = viewport.clientWidth; + // resize elements with "min-width" set + var elements = layout.minWidth.elements; + for (i in elements) { + var element = elements[i]; + var fixedWidth = (parseInt(element.runtimeStyle.width) === getFixedWidth(element, element.currentStyle.minWidth)); + if (wider && fixedWidth) element.runtimeStyle.width = ""; + if (wider == fixedWidth) resizeWidth(element); + } + // resize elements with "max-width" set + var elements = layout.maxWidth.elements; + for (i in elements) { + var element = elements[i]; + var fixedWidth = (parseInt(element.runtimeStyle.width) === getFixedWidth(element, element.currentStyle.maxWidth)); + if (!wider && fixedWidth) element.runtimeStyle.width = ""; + if (wider !== fixedWidth) resizeWidth(element); + } + // resize elements with "right" set + for (i in fixRight.elements) resizeRight(fixRight.elements[i]); + }); + + // ----------------------------------------------------------------------- + // fix CSS + // ----------------------------------------------------------------------- + if (MSIE5) { + IE7.CSS.addRecalc("width", NUMERIC, apply.Width); + } + if (appVersion < 7) { + IE7.CSS.addRecalc("max-width", NUMERIC, layout.maxWidth); + IE7.CSS.addRecalc("right", NUMERIC, fixRight); + } else if (appVersion == 7) { + if (HEIGHT) IE7.CSS.addRecalc("height", "[\\d.]+%", function(element) { + element.runtimeStyle.pixelHeight = parseInt(layoutWidth(element) * element.currentStyle["ie7-height"].slice(0, -1) / 100); + }); + } + }; + + eval("var _fixHeight=" + rotate(_fixWidth)); + + // apply box-model + min/max fixes + _fixWidth(); + _fixHeight(true); + + if (appVersion < 7) { + IE7.CSS.addRecalc("min-width", NUMERIC, layout.minWidth); + IE7.CSS.addFix(/\bmin-height\s*/, "height"); + } +})(); + +// ========================================================================= +// ie7-graphics.js +// ========================================================================= + +// a small transparent image used as a placeholder +var BLANK_GIF = makePath("blank.gif", path); + +var ALPHA_IMAGE_LOADER = "DXImageTransform.Microsoft.AlphaImageLoader"; +var PNG_FILTER = "progid:" + ALPHA_IMAGE_LOADER + "(src='%1',sizingMethod='%2')"; + +// regular expression version of the above +var PNG; + +var filtered = []; + +function fixImage(element) { + if (PNG.test(element.src)) { + // we have to preserve width and height + var image = new Image(element.width, element.height); + image.onload = function() { + element.width = image.width; + element.height = image.height; + image = null; + }; + image.src = element.src; + // store the original url (we'll put it back when it's printed) + element.pngSrc = element.src; + // add the AlphaImageLoader thingy + addFilter(element); + } +}; + +if (appVersion < 7) { + // ** IE7 VARIABLE + // e.g. apply the hack to all files ending in ".png" + // IE7_PNG_SUFFIX = ".png"; + // You can also set it to a RegExp + // IE7_PNG_SUFFIX = /\d+\.png$/; + + // replace background(-image): url(..) .. with background(-image): .. ;filter: ..; + IE7.CSS.addFix(/background(-image)?\s*:\s*([^};]*)?url\(([^\)]+)\)([^;}]*)?/, function(match, $1, $2, url, $4) { + url = getString(url); + return PNG.test(url) ? "filter:" + format(PNG_FILTER, url, $4.indexOf("no-repeat") === -1 ? "scale" : "crop") + + ";zoom:1;background" + ($1||"") + ":" + ($2||"") + "none" + ($4||"") : match; + }); + + // list-style-image + IE7.CSS.addRecalc(/list\-style(\-image)?/, "[^};]*url", function(element) { + var url = element.currentStyle.listStyleImage.slice(5, -2); + if (PNG.test(url)) { + if (element.nodeName === "LI") { + fixListStyleImage(element, url) + } else if (element.nodeName === "UL") { + for (var i = 0, li; li = element.childNodes[i]; i++) { + if (li.nodeName === "LI") fixListStyleImage(li, url); + } + } + } + }); + + function fixListStyleImage(element, src) { + var style = element.runtimeStyle; + var originalHeight = element.offsetHeight; + var image = new Image; + image.onload = function() { + var paddingLeft = element.currentStyle.paddingLeft; + paddingLeft = paddingLeft === "0px" ? 0 : getPixelValue(element, paddingLeft); + style.paddingLeft = (paddingLeft + this.width) + "px"; + style.marginLeft = -this.width + "px"; + style.listStyleType = "none"; + style.listStyleImage = "none"; + style.paddingTop = Math.max(originalHeight - element.offsetHeight, 0) + "px"; + addFilter(element, "crop", src); + element.style.zoom = "100%"; + }; + image.src = src; + }; + + // ----------------------------------------------------------------------- + // fix PNG transparency (HTML images) + // ----------------------------------------------------------------------- + + IE7.HTML.addRecalc("img,input", function(element) { + if (element.nodeName === "INPUT" && element.type !== "image") return; + fixImage(element); + addEventHandler(element, "onpropertychange", function() { + if (!printing && event.propertyName === "src" && + element.src.indexOf(BLANK_GIF) === -1) fixImage(element); + }); + }); + + // assume that background images should not be printed + // (if they are not transparent then they'll just obscure content) + // but we'll put foreground images back... + var printing = false; + addEventHandler(window, "onbeforeprint", function() { + printing = true; + for (var i = 0; i < filtered.length; i++) removeFilter(filtered[i]); + }); + addEventHandler(window, "onafterprint", function() { + for (var i = 0; i < filtered.length; i++) addFilter(filtered[i]); + printing = false; + }); +} + +// apply a filter +function addFilter(element, sizingMethod, src) { + var filter = element.filters[ALPHA_IMAGE_LOADER]; + if (filter) { + filter.src = src || element.src; + filter.enabled = true; + } else { + element.runtimeStyle.filter = format(PNG_FILTER, src || element.src, sizingMethod || "scale"); + filtered.push(element); + } + // remove the real image + element.src = BLANK_GIF; +}; + +function removeFilter(element) { + element.src = element.pngSrc; + element.filters[ALPHA_IMAGE_LOADER].enabled = false; +}; + +// ========================================================================= +// ie7-fixed.js +// ========================================================================= + +(function() { + if (appVersion >= 7) return; + + // some things to consider for this hack. + // the document body requires a fixed background. even if + // it is just a blank image. + // you have to use setExpression instead of onscroll, this + // together with a fixed body background helps avoid the + // annoying screen flicker of other solutions. + + IE7.CSS.addRecalc("position", "fixed", _positionFixed, "absolute"); + IE7.CSS.addRecalc("background(-attachment)?", "[^};]*fixed", _backgroundFixed); + + // scrolling is relative to the documentElement (HTML tag) when in + // standards mode, otherwise it's relative to the document body + var $viewport = MSIE5 ? "body" : "documentElement"; + + function _fixBackground() { + // this is required by both position:fixed and background-attachment:fixed. + // it is necessary for the document to also have a fixed background image. + // we can fake this with a blank image if necessary + if (body.currentStyle.backgroundAttachment !== "fixed") { + if (body.currentStyle.backgroundImage === "none") { + body.runtimeStyle.backgroundRepeat = "no-repeat"; + body.runtimeStyle.backgroundImage = "url(" + BLANK_GIF + ")"; // dummy + } + body.runtimeStyle.backgroundAttachment = "fixed"; + } + _fixBackground = Undefined; + }; + + var _tmp = createTempElement("img"); + + function _isFixed(element) { + return element ? isFixed(element) || _isFixed(element.parentElement) : false; + }; + + function _setExpression(element, propertyName, expression) { + setTimeout("document.all." + element.uniqueID + ".runtimeStyle.setExpression('" + propertyName + "','" + expression + "')", 0); + }; + + // ----------------------------------------------------------------------- + // backgroundAttachment: fixed + // ----------------------------------------------------------------------- + + function _backgroundFixed(element) { + if (register(_backgroundFixed, element, element.currentStyle.backgroundAttachment === "fixed" && !element.contains(body))) { + _fixBackground(); + util.bgLeft(element); + util.bgTop(element); + _backgroundPosition(element); + } + }; + + function _backgroundPosition(element) { + _tmp.src = element.currentStyle.backgroundImage.slice(5, -2); + var parentElement = element.canHaveChildren ? element : element.parentElement; + parentElement.appendChild(_tmp); + util.setOffsetLeft(element); + util.setOffsetTop(element); + parentElement.removeChild(_tmp); + }; + + // ----------------------------------------------------------------------- + // position: fixed + // ----------------------------------------------------------------------- + + function _positionFixed(element) { + if (register(_positionFixed, element, isFixed(element))) { + setOverrideStyle(element, "position", "absolute"); + setOverrideStyle(element, "left", element.currentStyle.left); + setOverrideStyle(element, "top", element.currentStyle.top); + _fixBackground(); + IE7.Layout.fixRight(element); + //IE7.Layout.fixBottom(element); + _foregroundPosition(element); + } + }; + + function _foregroundPosition(element, recalc) { + document.body.getBoundingClientRect(); // force a reflow + util.positionTop(element, recalc); + util.positionLeft(element, recalc, true); + if (!element.runtimeStyle.autoLeft && element.currentStyle.marginLeft === "auto" && + element.currentStyle.right !== "auto") { + var left = viewport.clientWidth - util.getPixelWidth(element, element.currentStyle.right) - + util.getPixelWidth(element, element.runtimeStyle._left) - element.clientWidth; + if (element.currentStyle.marginRight === "auto") left = parseInt(left / 2); + if (_isFixed(element.offsetParent)) element.runtimeStyle.pixelLeft += left; + else element.runtimeStyle.shiftLeft = left; + } + if (!element.runtimeStyle.fixedWidth) util.clipWidth(element); + if (!element.runtimeStyle.fixedHeight) util.clipHeight(element); + }; + + // ----------------------------------------------------------------------- + // capture window resize + // ----------------------------------------------------------------------- + + function _resize() { + // if the window has been resized then some positions need to be + // recalculated (especially those aligned to "right" or "top" + var elements = _backgroundFixed.elements; + for (var i in elements) _backgroundPosition(elements[i]); + elements = _positionFixed.elements; + for (i in elements) { + _foregroundPosition(elements[i], true); + _foregroundPosition(elements[i], true); + } + _timer = 0; + }; + + // use a timer (sometimes this is a good way to prevent resize loops) + var _timer; + addResize(function() { + if (!_timer) _timer = setTimeout(_resize, 100); + }); + + // ----------------------------------------------------------------------- + // rotated + // ----------------------------------------------------------------------- + + var util = {}; + + var _horizontal = function(util) { + util.bgLeft = function(element) { + element.style.backgroundPositionX = element.currentStyle.backgroundPositionX; + if (!_isFixed(element)) { + _setExpression(element, "backgroundPositionX", "(parseInt(runtimeStyle.offsetLeft)+document." + $viewport + ".scrollLeft)||0"); + } + }; + + util.setOffsetLeft = function(element) { + var propertyName = _isFixed(element) ? "backgroundPositionX" : "offsetLeft"; + element.runtimeStyle[propertyName] = + util.getOffsetLeft(element, element.style.backgroundPositionX) - + element.getBoundingClientRect().left - element.clientLeft + 2; + }; + + util.getOffsetLeft = function(element, position) { + switch (position) { + case "left": + case "top": + return 0; + case "right": + case "bottom": + return viewport.clientWidth - _tmp.offsetWidth; + case "center": + return (viewport.clientWidth - _tmp.offsetWidth) / 2; + default: + if (PERCENT.test(position)) { + return parseInt((viewport.clientWidth - _tmp.offsetWidth) * parseFloat(position) / 100); + } + _tmp.style.left = position; + return _tmp.offsetLeft; + } + }; + + util.clipWidth = function(element) { + var fixWidth = element.runtimeStyle.fixWidth; + element.runtimeStyle.borderRightWidth = ""; + element.runtimeStyle.width = fixWidth ? util.getPixelWidth(element, fixWidth) + "px" : ""; + if (element.currentStyle.width !== "auto") { + var rect = element.getBoundingClientRect(); + var width = element.offsetWidth - viewport.clientWidth + rect.left - 2; + if (width >= 0) { + element.runtimeStyle.borderRightWidth = "0px"; + width = Math.max(getPixelValue(element, element.currentStyle.width) - width, 0); + setOverrideStyle(element, "width", width); + return width; + } + } + }; + + util.positionLeft = function(element, recalc) { + // if the element's width is in % units then it must be recalculated + // with respect to the viewport + if (!recalc && PERCENT.test(element.currentStyle.width)) { + element.runtimeStyle.fixWidth = element.currentStyle.width; + } + if (element.runtimeStyle.fixWidth) { + element.runtimeStyle.width = util.getPixelWidth(element, element.runtimeStyle.fixWidth); + } + //if (recalc) { + // // if the element is fixed on the right then no need to recalculate + // if (!element.runtimeStyle.autoLeft) return; + //} else { + element.runtimeStyle.shiftLeft = 0; + element.runtimeStyle._left = element.currentStyle.left; + // is the element fixed on the right? + element.runtimeStyle.autoLeft = element.currentStyle.right !== "auto" && element.currentStyle.left === "auto"; + //} + // reset the element's "left" value and get it's natural position + element.runtimeStyle.left = ""; + element.runtimeStyle.screenLeft = util.getScreenLeft(element); + element.runtimeStyle.pixelLeft = element.runtimeStyle.screenLeft; + // if the element is contained by another fixed element then there is no need to + // continually recalculate it's left position + if (!recalc && !_isFixed(element.offsetParent)) { + // onsrcoll produces jerky movement, so we use an expression + _setExpression(element, "pixelLeft", "runtimeStyle.screenLeft+runtimeStyle.shiftLeft+document." + $viewport + ".scrollLeft"); + } + }; + + // I've forgotten how this works... + util.getScreenLeft = function(element) { // thanks to kevin newman (captainn) + var screenLeft = element.offsetLeft, nested = 1; + if (element.runtimeStyle.autoLeft) { + screenLeft = viewport.clientWidth - element.offsetWidth - util.getPixelWidth(element, element.currentStyle.right); + } + // accommodate margins + if (element.currentStyle.marginLeft !== "auto") { + screenLeft -= util.getPixelWidth(element, element.currentStyle.marginLeft); + } + while (element = element.offsetParent) { + if (element.currentStyle.position !== "static") nested = -1; + screenLeft += element.offsetLeft * nested; + } + return screenLeft; + }; + + util.getPixelWidth = function(element, value) { + return PERCENT.test(value) ? parseInt(parseFloat(value) / 100 * viewport.clientWidth) : getPixelValue(element, value); + }; + }; + eval("var _vertical=" + rotate(_horizontal)); + _horizontal(util); + _vertical(util); +})(); + +// ========================================================================= +// ie7-oveflow.js +// ========================================================================= + +/* --------------------------------------------------------------------- + + This module alters the structure of the document. + It may adversely affect other CSS rules. Be warned. + +--------------------------------------------------------------------- */ + +if (appVersion < 7) { + var WRAPPER_STYLE = { + backgroundColor: "transparent", + backgroundImage: "none", + backgroundPositionX: null, + backgroundPositionY: null, + backgroundRepeat: null, + borderTopWidth: 0, + borderRightWidth: 0, + borderBottomWidth: 0, + borderLeftStyle: "none", + borderTopStyle: "none", + borderRightStyle: "none", + borderBottomStyle: "none", + borderLeftWidth: 0, + borderLeftColor: "#000", + borderTopColor: "#000", + borderRightColor: "#000", + borderBottomColor: "#000", + height: null, + marginTop: 0, + marginBottom: 0, + marginRight: 0, + marginLeft: 0, + width: "100%" + }; + + IE7.CSS.addRecalc("overflow", "visible", function(element) { + if (element.currentStyle.position === "absolute") return; + + // don't do this again + if (element.parentNode.ie7_wrapped) return; + + // if max-height is applied, makes sure it gets applied first + if (IE7.Layout && element.currentStyle["max-height"] !== "auto") { + IE7.Layout.maxHeight(element); + } + + if (element.currentStyle.marginLeft === "auto") element.style.marginLeft = 0; + if (element.currentStyle.marginRight === "auto") element.style.marginRight = 0; + + var wrapper = document.createElement(ANON); + wrapper.ie7_wrapped = element; + for (var propertyName in WRAPPER_STYLE) { + wrapper.style[propertyName] = element.currentStyle[propertyName]; + if (WRAPPER_STYLE[propertyName] != null) { + element.runtimeStyle[propertyName] = WRAPPER_STYLE[propertyName]; + } + } + wrapper.style.display = "block"; + wrapper.style.position = "relative"; + element.runtimeStyle.position = "absolute"; + element.parentNode.insertBefore(wrapper, element); + wrapper.appendChild(element); + }); +} + +// ========================================================================= +// ie7-quirks.js +// ========================================================================= + +function ie7Quirks() { + var FONT_SIZES = "xx-small,x-small,small,medium,large,x-large,xx-large".split(","); + for (var i = 0; i < FONT_SIZES.length; i++) { + FONT_SIZES[FONT_SIZES[i]] = FONT_SIZES[i - 1] || "0.67em"; + } + + IE7.CSS.addFix(/(font(-size)?\s*:\s*)([\w.-]+)/, function(match, label, size, value) { + return label + (FONT_SIZES[value] || value); + }); + + var NEGATIVE = /^\-/, LENGTH = /(em|ex)$/i; + var EM = /em$/i, EX = /ex$/i; + + getPixelValue = function(element, value) { + if (PIXEL.test(value)) return parseInt(value)||0; + var scale = NEGATIVE.test(value)? -1 : 1; + if (LENGTH.test(value)) scale *= getFontScale(element); + temp.style.width = scale < 0 ? value.slice(1) : value; + body.appendChild(temp); + // retrieve pixel width + value = scale * temp.offsetWidth; + // remove the temporary element + temp.removeNode(); + return parseInt(value); + }; + + var temp = createTempElement(); + function getFontScale(element) { + var scale = 1; + temp.style.fontFamily = element.currentStyle.fontFamily; + temp.style.lineHeight = element.currentStyle.lineHeight; + //temp.style.fontSize = ""; + while (element != body) { + var fontSize = element.currentStyle["ie7-font-size"]; + if (fontSize) { + if (EM.test(fontSize)) scale *= parseFloat(fontSize); + else if (PERCENT.test(fontSize)) scale *= (parseFloat(fontSize) / 100); + else if (EX.test(fontSize)) scale *= (parseFloat(fontSize) / 2); + else { + temp.style.fontSize = fontSize; + return 1; + } + } + element = element.parentElement; + } + return scale; + }; + + // cursor:pointer (IE5.x) + IE7.CSS.addFix(/cursor\s*:\s*pointer/, "cursor:hand"); + // display:list-item (IE5.x) + IE7.CSS.addFix(/display\s*:\s*list-item/, "display:block"); + + // ----------------------------------------------------------------------- + // margin:auto + // ----------------------------------------------------------------------- + + function fixMargin(element) { + var parent = element.parentElement; + var margin = parent.offsetWidth - element.offsetWidth - getPaddingWidth(parent); + var autoRight = (element.currentStyle["ie7-margin"] && element.currentStyle.marginRight === "auto") || + element.currentStyle["ie7-margin-right"] === "auto"; + switch (parent.currentStyle.textAlign) { + case "right": + margin = autoRight ? parseInt(margin / 2) : 0; + element.runtimeStyle.marginRight = margin + "px"; + break; + case "center": + if (autoRight) margin = 0; + default: + if (autoRight) margin /= 2; + element.runtimeStyle.marginLeft = parseInt(margin) + "px"; + } + }; + + function getPaddingWidth(element) { + return getPixelValue(element, element.currentStyle.paddingLeft) + + getPixelValue(element, element.currentStyle.paddingRight); + }; + + IE7.CSS.addRecalc("margin(-left|-right)?", "[^};]*auto", function(element) { + if (register(fixMargin, element, + element.parentElement && + element.currentStyle.display === "block" && + element.currentStyle.marginLeft === "auto" && + element.currentStyle.position !== "absolute")) { + fixMargin(element); + } + }); + + addResize(function() { + for (var i in fixMargin.elements) { + var element = fixMargin.elements[i]; + element.runtimeStyle.marginLeft = + element.runtimeStyle.marginRight = ""; + fixMargin(element); + } + }); +}; + + +// ========================================================================= +// ie8-css.js +// ========================================================================= + +var BRACKETS = "\\([^)]+\\)"; + +// pseudo-elements can be declared with a double colon +encoder.add(/::(before|after)/, ":$1"); + +if (appVersion < 8) { + + if (IE7.CSS.pseudoClasses) IE7.CSS.pseudoClasses += "|"; + IE7.CSS.pseudoClasses += "before|after|lang" + BRACKETS; + + // ----------------------------------------------------------------------- + // propertyName: inherit; + // ----------------------------------------------------------------------- + + function parseInherited(cssText) { + return cssText.replace(new RegExp("([{;\\s])(" + inheritedProperties.join("|") + ")\\s*:\\s*([^;}]+)", "g"), "$1$2:$3;ie7-$2:$3"); + }; + + var INHERITED = /[\w-]+\s*:\s*inherit/g; + var STRIP_IE7_FLAGS = /ie7\-|\s*:\s*inherit/g; + var DASH_LOWER = /\-([a-z])/g; + function toUpper(match, chr) {return chr.toUpperCase()}; + + IE7.CSS.addRecalc("[\\w-]+", "inherit", function(element, cssText) { + if (element.parentElement) { + var inherited = cssText.match(INHERITED); + for (var i = 0; i < inherited.length; i++) { + var propertyName = inherited[i].replace(STRIP_IE7_FLAGS, ""); + if (element.currentStyle["ie7-" + propertyName] === "inherit") { + propertyName = propertyName.replace(DASH_LOWER, toUpper); + element.runtimeStyle[propertyName] = element.parentElement.currentStyle[propertyName]; + } + } + } + }, function(match) { + inheritedProperties.push(rescape(match.slice(1).split(":")[0])); + return match; + }); + + // ----------------------------------------------------------------------- + // dynamic pseudo-classes + // ----------------------------------------------------------------------- + + var Focus = new DynamicPseudoClass("focus", function(element) { + var instance = arguments; + + IE7.CSS.addEventHandler(element, "onfocus", function() { + Focus.unregister(instance); // in case it starts with focus + Focus.register(instance); + }); + + IE7.CSS.addEventHandler(element, "onblur", function() { + Focus.unregister(instance); + }); + + // check the active element for initial state + if (element == document.activeElement) { + Focus.register(instance) + } + }); + + var Active = new DynamicPseudoClass("active", function(element) { + var instance = arguments; + IE7.CSS.addEventHandler(element, "onmousedown", function() { + Active.register(instance); + }); + }); + + // globally trap the mouseup event (thanks Martijn!) + addEventHandler(document, "onmouseup", function() { + var instances = Active.instances; + for (var i in instances) Active.unregister(instances[i]); + }); + + // ----------------------------------------------------------------------- + // IE7 pseudo elements + // ----------------------------------------------------------------------- + + // constants + var URL = /^url\s*\(\s*([^)]*)\)$/; + var POSITION_MAP = { + before0: "beforeBegin", + before1: "afterBegin", + after0: "afterEnd", + after1: "beforeEnd" + }; + + var PseudoElement = IE7.PseudoElement = Rule.extend({ + constructor: function(selector, position, cssText) { + // initialise object properties + this.position = position; + var content = cssText.match(PseudoElement.CONTENT), match, entity; + if (content) { + content = content[1]; + match = content.split(/\s+/); + for (var i = 0; (entity = match[i]); i++) { + match[i] = /^attr/.test(entity) ? {attr: entity.slice(5, -1)} : + entity.charAt(0) === "'" ? getString(entity) : decode(entity); + } + content = match; + } + this.content = content; + // CSS text needs to be decoded immediately + this.base(selector, decode(cssText)); + }, + + init: function() { + // execute the underlying css query for this class + this.match = cssQuery(this.selector); + for (var i = 0; i < this.match.length; i++) { + var runtimeStyle = this.match[i].runtimeStyle; + if (!runtimeStyle[this.position]) runtimeStyle[this.position] = {cssText:""}; + runtimeStyle[this.position].cssText += ";" + this.cssText; + if (this.content != null) runtimeStyle[this.position].content = this.content; + } + }, + + create: function(target) { + var generated = target.runtimeStyle[this.position]; + if (generated) { + // copy the array of values + var content = [].concat(generated.content || ""); + for (var j = 0; j < content.length; j++) { + if (typeof content[j] == "object") { + content[j] = target.getAttribute(content[j].attr); + } + } + content = content.join(""); + var url = content.match(URL); + var cssText = "overflow:hidden;" + generated.cssText.replace(/'/g, '"'); + var position = POSITION_MAP[this.position + Number(target.canHaveChildren)]; + var id = 'ie7_pseudo' + PseudoElement.count++; + target.insertAdjacentHTML(position, format(PseudoElement.ANON, this.className, id, cssText, url ? "" : content)); + if (url) { + var src = getString(url[1]); + var pseudoElement = document.getElementById(id); + pseudoElement.src = src; + addFilter(pseudoElement, "crop"); + var targetIsFloated = target.currentStyle.styleFloat !== "none"; + if (pseudoElement.currentStyle.display === "inline" || targetIsFloated) { + if (appVersion < 7 && targetIsFloated && target.canHaveChildren) { + target.runtimeStyle.display = "inline"; + target.runtimeStyle.position = "relative"; + pseudoElement.runtimeStyle.position = "absolute"; + } + pseudoElement.style.display = "inline-block"; + if (target.currentStyle.styleFloat !== "none") { + pseudoElement.style.pixelWidth = target.offsetWidth; + } + var image = new Image; + image.onload = function() { + pseudoElement.style.pixelWidth = this.width; + pseudoElement.style.pixelHeight = Math.max(this.height, pseudoElement.offsetHeight); + }; + image.src = src; + } + } + target.runtimeStyle[this.position] = null; + } + }, + + recalc: function() { + if (this.content == null) return; + for (var i = 0; i < this.match.length; i++) { + this.create(this.match[i]); + } + }, + + toString: function() { + return "." + this.className + "{display:inline}"; + } + }, { + CONTENT: /content\s*:\s*([^;]*)(;|$)/, + ANON: "%4", + MATCH: /(.*):(before|after).*/, + + count: 0 + }); + + IE7._getLang = function(element) { + var lang = ""; + while (element && element.nodeType === 1) { + lang = element.lang || element.getAttribute("lang") || ""; + if (lang) break; + element = element.parentNode; + } + return lang; + }; + + FILTER = extend(FILTER, { + ":lang\\(([^)]+)\\)": "((ii=IE7._getLang(e))==='$1'||ii.indexOf('$1-')===0)&&" + }); +} + +// ========================================================================= +// ie8-html.js +// ========================================================================= + +var UNSUCCESSFUL = /^(submit|reset|button)$/; + +// ----------------------------------------------------------------------- +// + <% end %> +

+

返回选择其他支付方式

+ diff --git a/spree_china_checkout/app/views/spree/checkout/edit.html.erb b/spree_china_checkout/app/views/spree/checkout/edit.html.erb new file mode 100644 index 00000000..3212b503 --- /dev/null +++ b/spree_china_checkout/app/views/spree/checkout/edit.html.erb @@ -0,0 +1 @@ +<%= render :partial => "spree/checkout/edit" %> diff --git a/spree_china_checkout/app/views/spree/checkout/edit.js.coffee b/spree_china_checkout/app/views/spree/checkout/edit.js.coffee new file mode 100644 index 00000000..c55f9ce5 --- /dev/null +++ b/spree_china_checkout/app/views/spree/checkout/edit.js.coffee @@ -0,0 +1,20 @@ +# add feature, show address/delivery summary + +previous_partials = {} +<% checkout_step_index = @order.checkout_step_index(@order.state) %> +<% if checkout_step_index >0 %> + <% last_step = @order.checkout_steps[checkout_step_index-1] %> +previous_partials.<%= last_step%> = "<%=j( render :partial => "#{last_step}_summary", :format => :html, :locals => { :state => last_step, :order => @order } ) %>" +<% end %> +partial = "<%=j render :partial => (@client_info.is_mobile ? 'form_wrapper_bootstrap':'form_wrapper'), :format => :html, :locals => { :state => @order.state, :order => @order } %>" +$step = ($ '#checkout_<%= @order.state %>') +error = "<%= flash[:error] %>" + +stepHandler = new SinglePageCheckout.StepHandler $step, partial, error, previous_partials +stepHandler.replaceCheckoutStep() + +$step.find('button.previous').click (event)-> + SinglePageCheckout.StepHandler.enableStep $step.prev() + +# if order.complete? redirect_to thankyou page, ex. pay by check +# if payment is alipay, spree_alipay should support ajax? diff --git a/spree_china_checkout/app/views/spree/shared/_order_details.html.erb b/spree_china_checkout/app/views/spree/shared/_order_details.html.erb deleted file mode 100644 index 23d2c2ae..00000000 --- a/spree_china_checkout/app/views/spree/shared/_order_details.html.erb +++ /dev/null @@ -1,103 +0,0 @@ -<% # @theme - show order detail - # copy from spree/core/app/views/shared/_order_details.html.erb - # just removed bill_address -%> -
-
- <% if order.has_step?("address") %> -
<%= Spree.t(:shipping_address) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:address) unless @order.completed? %>
-
- <%= render :partial => 'spree/shared/address', :locals => { :address => order.ship_address } %> -
- - <% if @order.has_step?("delivery") %> -
<%= Spree.t(:shipping_method) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:delivery) unless @order.completed? %>
-
- <% order.shipments.each do |shipment| %> -
- <%= shipment.stock_location.name %> - <%= shipment.shipping_method.name %> -
- <% end %> -
- <% end %> - <% end %> - -
<%= Spree.t(:payment_information) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:payment) unless @order.completed? %>
-
- <% order.payments.valid.each do |payment| %> -
<%= render payment%>
- <% end %> -
-
-
- - - - - - - - - - - - - - - - - - - <% @order.line_items.each do |item| %> - - - - - - - - <% end %> - - - - - - - - <% if order.price_adjustment_totals.present? %> - - <% @order.price_adjustment_totals.keys.each do |key| %> - - - - - <% end %> - - <% end %> - - - - - - - - <% @order.adjustments.eligible.each do |adjustment| %> - <% next if (adjustment.originator_type == 'Spree::TaxRate') and (adjustment.amount == 0) %> - - - - - <% end %> - -
<%= Spree.t(:item) %><%= Spree.t(:price) %><%= Spree.t(:qty) %><%= Spree.t(:total) %>
- <% if item.variant.images.length == 0 %> - <%= link_to small_image(item.variant.product), item.variant.product %> - <% else %> - <%= link_to image_tag(item.variant.images.first.attachment.url(:small)), item.variant.product %> - <% end %> - -

<%= item.variant.product.name %>

- <%= truncated_product_description(item.variant.product) %> - <%= "(" + variant_options(item.variant) + ")" unless item.variant .option_values.empty? %> -
<%= money item.price %><%= item.quantity %><%= money(item.price * item.quantity) %>
<%= Spree.t(:order_total) %>:<%= money @order.total %>
<%= key %><%= money @order.price_adjustment_totals[key] %>
<%= Spree.t(:subtotal) %>:<%= money @order.item_total %>
<%= adjustment.label %><%= money adjustment.amount %>
diff --git a/spree_china_checkout/config/initializers/rabl_extra.rb b/spree_china_checkout/config/initializers/rabl_extra.rb index fe4f4738..d9d81712 100644 --- a/spree_china_checkout/config/initializers/rabl_extra.rb +++ b/spree_china_checkout/config/initializers/rabl_extra.rb @@ -1,3 +1,3 @@ -Rabl.configure do |config| - config.view_paths << File.expand_path("../../app/views", File.dirname(__FILE__)) -end \ No newline at end of file +#Rabl.configure do |config| +# config.view_paths << File.expand_path("../../app/views", File.dirname(__FILE__)) +#end diff --git a/spree_china_checkout/config/routes.rb b/spree_china_checkout/config/routes.rb index 035c005e..396ded53 100644 --- a/spree_china_checkout/config/routes.rb +++ b/spree_china_checkout/config/routes.rb @@ -1,6 +1,8 @@ -Spree::Core::Engine.routes.draw do +Spree::Core::Engine.add_routes do + # Add your extension routes here namespace :api, :defaults => { :format => 'json' } do resources :cities, :only => :index + resources :districts, :only => :index end end diff --git a/spree_china_checkout/db/migrate/20151209144424_create_districts.rb b/spree_china_checkout/db/migrate/20151209144424_create_districts.rb new file mode 100644 index 00000000..36690433 --- /dev/null +++ b/spree_china_checkout/db/migrate/20151209144424_create_districts.rb @@ -0,0 +1,16 @@ +class CreateDistricts < ActiveRecord::Migration + def up + create_table :spree_districts do |t| + t.string :name + t.string :abbr + t.references :city + end + add_column 'spree_addresses', :district_id, :integer, :default=>0 + + end + + def down + drop_table :spree_districts + remove_column 'spree_addresses', :district_id + end +end diff --git a/spree_china_checkout/db/migrate/20160220144424_add_available_addresses.rb b/spree_china_checkout/db/migrate/20160220144424_add_available_addresses.rb new file mode 100644 index 00000000..46fb2b61 --- /dev/null +++ b/spree_china_checkout/db/migrate/20160220144424_add_available_addresses.rb @@ -0,0 +1,8 @@ +class AddAvailableAddresses < ActiveRecord::Migration + def change + # use bill address only for china customer, disable ship address + add_column :spree_stores, :available_addresses, :integer, :default=>0 + end + + +end diff --git a/spree_china_checkout/db/seeds/areas.json b/spree_china_checkout/db/seeds/areas.json new file mode 100644 index 00000000..6920c595 --- /dev/null +++ b/spree_china_checkout/db/seeds/areas.json @@ -0,0 +1,4449 @@ +{ + "整理者": { + "Sean.C": [ + "cnluzhang@outlook.com" + ], + "semooncun": [ + "xuwenchun396@gmail.com" + ], + "cashlee": [ + "cashlee96347@gmail.com" + ], + "Celery Qin": [ + "celerysoft@gmail.com" + ] + }, + "北京市": { + "北京市": [ + "昌平区", + "朝阳区", + "大兴区", + "东城区", + "房山区", + "丰台区", + "海淀区", + "怀柔区", + "平谷区", + "顺义区", + "通州区", + "西城区", + "门头沟区", + "石景山区", + "密云县", + "延庆县" + ] + }, + "天津市": { + "天津市": [ + "宝坻区", + "北辰区", + "东丽区", + "汉沽区", + "和平区", + "河北区", + "河东区", + "河西区", + "红桥区", + "津南区", + "南开区", + "塘沽区", + "武清区", + "西青区", + "蓟县", + "静海县", + "宁河县", + "滨海新区" + ] + }, + "河北省": { + "石家庄市": [ + "藁城市", + "晋州市", + "鹿泉市", + "辛集市", + "新乐市", + "高新区", + "桥东区", + "桥西区", + "新华区", + "裕华区", + "长安区", + "赵县", + "高邑县", + "行唐县", + "井陉县", + "灵寿县", + "栾城县", + "平山县", + "深泽县", + "无极县", + "元氏县", + "赞皇县", + "正定县", + "井陉矿区", + "石家庄经济技术开发区" + ], + "保定市": [ + "安国市", + "定州市", + "涿州市", + "高碑店市", + "北市区", + "南市区", + "新市区", + "蠡县", + "唐县", + "雄县", + "易县", + "安新县", + "博野县", + "定兴县", + "阜平县", + "高阳县", + "涞水县", + "涞源县", + "满城县", + "清苑县", + "曲阳县", + "容城县", + "顺平县", + "望都县", + "徐水县" + ], + "沧州市": [ + "泊头市", + "河间市", + "黄骅市", + "任丘市", + "新华区", + "运河区", + "沧县", + "青县", + "献县", + "东光县", + "海兴县", + "南皮县", + "肃宁县", + "吴桥县", + "盐山县", + "孟村回族自治县" + ], + "承德市": [ + "双滦区", + "双桥区", + "大学城", + "承德县", + "隆化县", + "滦平县", + "平泉县", + "兴隆县", + "丰宁满族自治县", + "宽城满族自治县", + "围场满族蒙古族自治县", + "开发东区", + "开发西区", + "鹰手营子矿区", + "承德高教园区" + ], + "邯郸市": [ + "武安市", + "丛台区", + "复兴区", + "邯山区", + "磁县", + "邱县", + "涉县", + "魏县", + "成安县", + "大名县", + "肥乡县", + "馆陶县", + "广平县", + "邯郸县", + "鸡泽县", + "临漳县", + "曲周县", + "永年县", + "峰峰矿区", + "邯郸经济开发区", + "马头生态工业园" + ], + "衡水市": [ + "冀州市", + "深州市", + "桃城区", + "景县", + "安平县", + "阜城县", + "故城县", + "饶阳县", + "武强县", + "武邑县", + "枣强县", + "路北新区", + "衡水高新技术开发区" + ], + "廊坊市": [ + "霸州市", + "三河市", + "安次区", + "广阳区", + "大城县", + "固安县", + "文安县", + "香河县", + "永清县", + "大厂回族自治县" + ], + "唐山市": [ + "迁安市", + "遵化市", + "丰南区", + "丰润区", + "古冶区", + "开平区", + "路北区", + "路南区", + "曹妃甸区", + "滦县", + "乐亭县", + "滦南县", + "迁西县", + "玉田县", + "高新技术开发区" + ], + "邢台市": [ + "南宫市", + "沙河市", + "高开区", + "桥东区", + "桥西区", + "任县", + "威县", + "柏乡县", + "广宗县", + "巨鹿县", + "临城县", + "临西县", + "隆尧县", + "南和县", + "内丘县", + "宁晋县", + "平乡县", + "清河县", + "新河县", + "邢台县" + ], + "秦皇岛市": [ + "海港区", + "北戴河区", + "山海关区", + "昌黎县", + "抚宁县", + "卢龙县", + "青龙满族自治县" + ], + "张家口市": [ + "桥东区", + "桥西区", + "宣化区", + "下花园区", + "蔚县", + "赤城县", + "崇礼县", + "沽源县", + "怀安县", + "怀来县", + "康保县", + "尚义县", + "万全县", + "宣化县", + "阳原县", + "张北县", + "涿鹿县", + "察北管理区", + "塞北管理区", + "高新技术开发区" + ] + }, + "山西省": { + "太原市": [ + "古交市", + "晋源区", + "小店区", + "迎泽区", + "尖草坪区", + "万柏林区", + "杏花岭区", + "娄烦县", + "清徐县", + "阳曲县" + ], + "长治市": [ + "潞城市", + "城区", + "郊区", + "沁县", + "壶关县", + "黎城县", + "沁源县", + "屯留县", + "武乡县", + "襄垣县", + "长治县", + "长子县", + "高新技术开发区" + ], + "大同市": [ + "城区", + "矿区", + "南郊区", + "新荣区", + "大同县", + "广灵县", + "浑源县", + "灵丘县", + "天镇县", + "阳高县", + "左云县" + ], + "晋城市": [ + "高平市", + "城区", + "陵川县", + "沁水县", + "阳城县", + "泽州县" + ], + "晋中市": [ + "介休市", + "榆次区", + "祁县", + "和顺县", + "灵石县", + "平遥县", + "寿阳县", + "太谷县", + "昔阳县", + "榆社县", + "左权县" + ], + "临汾市": [ + "侯马市", + "霍州市", + "尧都区", + "古县", + "吉县", + "蒲县", + "隰县", + "安泽县", + "大宁县", + "汾西县", + "浮山县", + "洪洞县", + "曲沃县", + "乡宁县", + "襄汾县", + "翼城县", + "永和县" + ], + "吕梁市": [ + "汾阳市", + "孝义市", + "离石区", + "岚县", + "临县", + "兴县", + "方山县", + "交城县", + "交口县", + "柳林县", + "石楼县", + "文水县", + "中阳县" + ], + "朔州市": [ + "平鲁区", + "朔城区", + "应县", + "怀仁县", + "山阴县", + "右玉县" + ], + "忻州市": [ + "原平市", + "忻府区", + "代县", + "保德县", + "定襄县", + "繁峙县", + "河曲县", + "静乐县", + "岢岚县", + "宁武县", + "偏关县", + "神池县", + "五台县", + "五寨县" + ], + "阳泉市": [ + "城区", + "郊区", + "矿区", + "盂县", + "平定县" + ], + "运城市": [ + "河津市", + "永济市", + "盐湖区", + "绛县", + "夏县", + "稷山县", + "临猗县", + "平陆县", + "芮城县", + "万荣县", + "闻喜县", + "新绛县", + "垣曲县", + "空港新区", + "禹都经济技术开发区" + ] + }, + "内蒙古自治区": { + "呼和浩特市": [ + "回民区", + "赛罕区", + "新城区", + "玉泉区", + "武川县", + "清水河县", + "托克托县", + "和林格尔县", + "土默特左旗" + ], + "包头市": [ + "东河区", + "九原区", + "青山区", + "石拐区", + "昆都仑区", + "白云鄂博矿区", + "固阳县", + "土默特右旗", + "达尔罕茂明安联合旗" + ], + "赤峰市": [ + "红山区", + "松山区", + "元宝山区", + "林西县", + "宁城县", + "敖汉旗", + "巴林右旗", + "巴林左旗", + "喀喇沁旗", + "翁牛特旗", + "克什克腾旗", + "阿鲁科尔沁旗" + ], + "通辽市": [ + "霍林郭勒市", + "科尔沁区", + "开鲁县", + "库伦旗", + "奈曼旗", + "扎鲁特旗", + "科尔沁左翼中旗", + "科尔沁左翼后旗" + ], + "乌海市": [ + "海南区", + "乌达区", + "海勃湾区" + ], + "巴彦淖尔市": [ + "临河区", + "磴口县", + "五原县", + "杭锦后旗", + "乌拉特后旗", + "乌拉特前旗", + "乌拉特中旗" + ], + "鄂尔多斯市": [ + "东胜区", + "杭锦旗", + "乌审旗", + "达拉特旗", + "鄂托克旗", + "准格尔旗", + "鄂托克前旗", + "伊金霍洛旗" + ], + "呼伦贝尔市": [ + "根河市", + "满洲里市", + "牙克石市", + "扎兰屯市", + "额尔古纳市", + "海拉尔区", + "阿荣旗", + "陈巴尔虎旗", + "鄂伦春自治旗", + "新巴尔虎右旗", + "新巴尔虎左旗", + "鄂温克族自治旗", + "莫力达瓦达斡尔族自治旗" + ], + "乌兰察布市": [ + "丰镇市", + "集宁区", + "化德县", + "凉城县", + "商都县", + "兴和县", + "卓资县", + "四子王旗", + "察哈尔右翼后旗", + "察哈尔右翼前旗", + "察哈尔右翼中旗" + ], + "兴安盟": [ + "阿尔山市", + "乌兰浩特市", + "突泉县", + "扎赉特旗", + "科尔沁右翼前旗", + "科尔沁右翼中旗" + ], + "阿拉善盟": [ + "额济纳旗", + "阿拉善右旗", + "阿拉善左旗" + ], + "锡林郭勒盟": [ + "二连浩特市", + "锡林浩特市", + "多伦县", + "镶黄旗", + "正蓝旗", + "阿巴嘎旗", + "太仆寺旗", + "正镶白旗", + "苏尼特右旗", + "苏尼特左旗", + "东乌珠穆沁旗", + "西乌珠穆沁旗" + ] + }, + "辽宁省": { + "沈阳市": [ + "新民市", + "大东区", + "东陵区", + "和平区", + "皇姑区", + "沈河区", + "铁西区", + "于洪区", + "苏家屯区", + "法库县", + "康平县", + "辽中县", + "浑南新区", + "沈北新区" + ], + "大连市": [ + "庄河市", + "普兰店市", + "瓦房店市", + "长海县", + "金州区", + "西岗区", + "中山区", + "甘井子区", + "旅顺口区", + "沙河口区", + "高新园区" + ], + "鞍山市": [ + "海城市", + "立山区", + "千山区", + "铁东区", + "铁西区", + "台安县", + "岫岩满族自治县", + "鞍山经济开发区", + "鞍山经济开发区西区" + ], + "本溪市": [ + "明山区", + "南芬区", + "平山区", + "溪湖区", + "本溪满族自治县", + "桓仁满族自治县" + ], + "朝阳市": [ + "北票市", + "凌源市", + "龙城区", + "双塔区", + "朝阳县", + "建平县", + "喀喇沁左翼蒙古族自治县" + ], + "丹东市": [ + "东港市", + "凤城市", + "元宝区", + "振安区", + "振兴区", + "宽甸满族自治县" + ], + "抚顺市": [ + "东洲区", + "顺城区", + "望花区", + "新抚区", + "抚顺县", + "清原满族自治县", + "新宾满族自治县", + "高湾开发区" + ], + "阜新市": [ + "海州区", + "太平区", + "细河区", + "新邱区", + "清河门区", + "彰武县", + "阜新蒙古族自治县" + ], + "锦州市": [ + "北镇市", + "凌海市", + "古塔区", + "凌河区", + "太和区", + "义县", + "黑山县", + "经济技术开发区" + ], + "辽阳市": [ + "灯塔市", + "白塔区", + "宏伟区", + "文圣区", + "弓长岭区", + "太子河区", + "辽阳县" + ], + "盘锦市": [ + "双台子区", + "兴隆台区", + "大洼县", + "盘山县" + ], + "铁岭市": [ + "开原市", + "调兵山市", + "清河区", + "银州区", + "昌图县", + "铁岭县", + "西丰县", + "凡河新区" + ], + "营口市": [ + "盖州市", + "大石桥市", + "老边区", + "西市区", + "站前区", + "鲅鱼圈区" + ], + "葫芦岛市": [ + "兴城市", + "连山区", + "龙港区", + "南票区", + "建昌县", + "绥中县" + ] + }, + "吉林省": { + "长春市": [ + "德惠市", + "九台市", + "榆树市", + "朝阳区", + "二道区", + "宽城区", + "绿园区", + "南关区", + "双阳区", + "农安县", + "高新技术产业开发区", + "经济技术产业开发区", + "长春汽车产业开发区", + "净月潭旅游经济开发区" + ], + "白城市": [ + "大安市", + "洮南市", + "洮北区", + "通榆县", + "镇赉县" + ], + "白山市": [ + "临江市", + "浑江区", + "江源区", + "抚松县", + "靖宇县", + "长白朝鲜族自治县" + ], + "吉林市": [ + "桦甸市", + "蛟河市", + "磐石市", + "舒兰市", + "昌邑区", + "船营区", + "丰满区", + "龙潭区", + "永吉县" + ], + "辽源市": [ + "龙山区", + "西安区", + "东丰县", + "东辽县" + ], + "四平市": [ + "双辽市", + "公主岭市", + "铁东区", + "铁西区", + "梨树县", + "伊通满族自治县" + ], + "松原市": [ + "扶余市", + "宁江区", + "乾安县", + "长岭县", + "前郭尔罗斯蒙古自治县" + ], + "通化市": [ + "集安市", + "梅河口市", + "东昌区", + "二道江区", + "辉南县", + "柳河县", + "通化县" + ], + "延边朝鲜族自治州": [ + "敦化市", + "和龙市", + "珲春市", + "龙井市", + "图们市", + "延吉市", + "安图县", + "汪清县" + ] + }, + "黑龙江省": { + "哈尔滨市": [ + "尚志市", + "双城市", + "五常市", + "阿城区", + "道里区", + "道外区", + "呼兰区", + "南岗区", + "平房区", + "松北区", + "香坊区", + "宾县", + "巴彦县", + "方正县", + "木兰县", + "通河县", + "延寿县", + "依兰县" + ], + "大庆市": [ + "大同区", + "红岗区", + "龙凤区", + "让胡路区", + "萨尔图区", + "林甸县", + "肇源县", + "肇州县", + "杜尔伯特蒙古族自治县", + "乙烯地区" + ], + "鹤岗市": [ + "东山区", + "工农区", + "南山区", + "向阳区", + "兴安区", + "兴山区", + "萝北县", + "绥滨县" + ], + "黑河市": [ + "北安市", + "五大连池市", + "爱辉区", + "嫩江县", + "孙吴县", + "逊克县" + ], + "绥化市": [ + "安达市", + "海伦市", + "肇东市", + "北林区", + "兰西县", + "明水县", + "青冈县", + "庆安县", + "绥棱县", + "望奎县" + ], + "鸡西市": [ + "虎林市", + "密山市", + "滴道区", + "恒山区", + "鸡冠区", + "梨树区", + "麻山区", + "城子河区", + "鸡东县" + ], + "伊春市": [ + "铁力市", + "翠峦区", + "带岭区", + "红星区", + "美溪区", + "南岔区", + "五营区", + "西林区", + "新青区", + "伊春区", + "友好区", + "金山屯区", + "上甘岭区", + "汤旺河区", + "乌马河区", + "乌伊岭区", + "嘉荫县" + ], + "佳木斯市": [ + "富锦市", + "同江市", + "郊区", + "东风区", + "前进区", + "向阳区", + "抚远县", + "桦川县", + "桦南县", + "汤原县" + ], + "牡丹江市": [ + "海林市", + "穆棱市", + "宁安市", + "绥芬河市", + "爱民区", + "东安区", + "西安区", + "阳明区", + "东宁县", + "林口县" + ], + "七台河市": [ + "桃山区", + "新兴区", + "茄子河区", + "勃利县" + ], + "双鸭山市": [ + "宝山区", + "尖山区", + "岭东区", + "四方台区", + "宝清县", + "集贤县", + "饶河县", + "友谊县" + ], + "齐齐哈尔市": [ + "讷河市", + "建华区", + "龙沙区", + "铁锋区", + "昂昂溪区", + "碾子山区", + "富拉尔基区", + "拜泉县", + "富裕县", + "甘南县", + "克东县", + "克山县", + "龙江县", + "泰来县", + "依安县", + "梅里斯达斡尔族区" + ], + "大兴安岭地区": [ + "呼中区", + "松岭区", + "新林区", + "加格达奇区", + "呼玛县", + "漠河县", + "塔河县" + ] + }, + "上海市": { + "上海市": [ + "宝山区", + "奉贤区", + "虹口区", + "黄浦区", + "嘉定区", + "金山区", + "静安区", + "闵行区", + "普陀区", + "青浦区", + "松江区", + "徐汇区", + "杨浦区", + "闸北区", + "长宁区", + "浦东新区", + "崇明县" + ] + }, + "江苏省": { + "南京市": [ + "白下区", + "高淳区", + "鼓楼区", + "建邺区", + "江宁区", + "溧水区", + "六合区", + "浦口区", + "栖霞区", + "秦淮区", + "下关区", + "玄武区", + "雨花台区" + ], + "常州市": [ + "金坛市", + "溧阳市", + "天宁区", + "武进区", + "新北区", + "钟楼区", + "戚墅堰区" + ], + "淮安市": [ + "淮安区", + "淮阴区", + "清河区", + "清浦区", + "洪泽县", + "金湖县", + "涟水县", + "盱眙县", + "经济开发区" + ], + "南通市": [ + "海门市", + "启东市", + "如皋市", + "崇川区", + "港闸区", + "开发区", + "通州区", + "海安县", + "如东县", + "南通经济技术开发区" + ], + "苏州市": [ + "常熟市", + "昆山市", + "太仓市", + "张家港市", + "姑苏区", + "虎丘区", + "吴江区", + "吴中区", + "相城区", + "工业园" + ], + "宿迁市": [ + "宿城区", + "宿豫区", + "沭阳县", + "泗洪县", + "泗阳县" + ], + "泰州市": [ + "靖江市", + "泰兴市", + "兴化市", + "高港区", + "海陵区", + "姜堰区", + "开发区", + "滨江工业园" + ], + "无锡市": [ + "江阴市", + "宜兴市", + "新区", + "北塘区", + "滨湖区", + "崇安区", + "惠山区", + "南长区", + "锡山区" + ], + "徐州市": [ + "邳州市", + "新沂市", + "鼓楼区", + "贾汪区", + "泉山区", + "铜山区", + "云龙区", + "丰县", + "沛县", + "睢宁县" + ], + "盐城市": [ + "大丰市", + "东台市", + "亭湖区", + "盐都区", + "滨海县", + "阜宁县", + "建湖县", + "射阳县", + "响水县" + ], + "扬州市": [ + "高邮市", + "仪征市", + "广陵区", + "邗江区", + "江都区", + "开发区", + "宝应县" + ], + "镇江市": [ + "丹阳市", + "句容市", + "扬中市", + "丹徒区", + "京口区", + "润州区" + ], + "连云港市": [ + "海州区", + "连云区", + "新浦区", + "东海县", + "赣榆县", + "灌南县", + "灌云县" + ] + }, + "浙江省": { + "杭州市": [ + "建德市", + "临安市", + "滨江区", + "富阳区", + "拱墅区", + "江干区", + "上城区", + "西湖区", + "下城区", + "萧山区", + "余杭区", + "淳安县", + "桐庐县" + ], + "湖州市": [ + "南浔区", + "吴兴区", + "安吉县", + "德清县", + "长兴县" + ], + "嘉兴市": [ + "海宁市", + "平湖市", + "桐乡市", + "南湖区", + "秀洲区", + "海盐县", + "嘉善县" + ], + "金华市": [ + "东阳市", + "兰溪市", + "义乌市", + "永康市", + "金东区", + "婺城区", + "磐安县", + "浦江县", + "武义县" + ], + "丽水市": [ + "龙泉市", + "莲都区", + "缙云县", + "青田县", + "庆元县", + "松阳县", + "遂昌县", + "云和县", + "景宁畲族自治县" + ], + "宁波市": [ + "慈溪市", + "奉化市", + "余姚市", + "北仑区", + "海曙区", + "江北区", + "江东区", + "鄞州区", + "镇海区", + "宁海县", + "象山县" + ], + "绍兴市": [ + "嵊州市", + "诸暨市", + "柯桥区", + "上虞区", + "越城区", + "新昌县" + ], + "台州市": [ + "临海市", + "温岭市", + "黄岩区", + "椒江区", + "路桥区", + "三门县", + "天台县", + "仙居县", + "玉环县" + ], + "温州市": [ + "乐清市", + "瑞安市", + "龙湾区", + "鹿城区", + "瓯海区", + "苍南县", + "洞头县", + "平阳县", + "泰顺县", + "文成县", + "永嘉县" + ], + "舟山市": [ + "定海区", + "普陀区", + "岱山县", + "嵊泗县" + ], + "衢州市": [ + "江山市", + "柯城区", + "衢江区", + "常山县", + "开化县", + "龙游县" + ] + }, + "安徽省": { + "合肥市": [ + "巢湖市", + "包河区", + "庐阳区", + "蜀山区", + "瑶海区", + "肥东县", + "肥西县", + "庐江县", + "长丰县", + "滨湖新区" + ], + "安庆市": [ + "桐城市", + "大观区", + "宜秀区", + "迎江区", + "枞阳县", + "怀宁县", + "潜山县", + "太湖县", + "望江县", + "宿松县", + "岳西县" + ], + "蚌埠市": [ + "蚌山区", + "淮上区", + "禹会区", + "龙子湖区", + "固镇县", + "怀远县", + "五河县", + "高新技术开发区", + "高新技术产业开发区" + ], + "池州市": [ + "贵池区", + "东至县", + "青阳县", + "石台县" + ], + "滁州市": [ + "明光市", + "天长市", + "琅琊区", + "南谯区", + "定远县", + "凤阳县", + "来安县", + "全椒县" + ], + "阜阳市": [ + "界首市", + "颍东区", + "颍泉区", + "颍州区", + "阜南县", + "临泉县", + "太和县", + "颍上县", + "阜阳经济技术开发区" + ], + "淮北市": [ + "杜集区", + "烈山区", + "相山区", + "濉溪县" + ], + "淮南市": [ + "大通区", + "潘集区", + "八公山区", + "田家庵区", + "谢家集区", + "凤台县", + "高新技术产业开发区" + ], + "黄山市": [ + "黄山区", + "徽州区", + "屯溪区", + "歙县", + "黟县", + "祁门县", + "休宁县" + ], + "六安市": [ + "金安区", + "裕安区", + "寿县", + "霍邱县", + "霍山县", + "金寨县", + "舒城县" + ], + "宿州市": [ + "埇桥区", + "泗县", + "萧县", + "砀山县", + "灵璧县" + ], + "铜陵市": [ + "新城区", + "狮子山区", + "铜官山区", + "铜陵县" + ], + "芜湖市": [ + "镜湖区", + "鸠江区", + "三山区", + "弋江区", + "繁昌县", + "南陵县", + "无为县", + "芜湖县", + "经济开发区", + "经济技术开发区" + ], + "宣城市": [ + "宁国市", + "宣州区", + "泾县", + "广德县", + "绩溪县", + "旌德县", + "郎溪县" + ], + "亳州市": [ + "谯城区", + "利辛县", + "蒙城县", + "涡阳县" + ], + "马鞍山市": [ + "博望区", + "花山区", + "雨山区", + "和县", + "当涂县", + "含山县" + ] + }, + "福建省": { + "福州市": [ + "福清市", + "长乐市", + "仓山区", + "鼓楼区", + "晋安区", + "马尾区", + "台江区", + "连江县", + "罗源县", + "闽侯县", + "闽清县", + "平潭县", + "永泰县" + ], + "龙岩市": [ + "漳平市", + "新罗区", + "连城县", + "上杭县", + "武平县", + "永定县", + "长汀县" + ], + "南平市": [ + "建瓯市", + "建阳市", + "邵武市", + "武夷山市", + "延平区", + "光泽县", + "浦城县", + "顺昌县", + "松溪县", + "政和县" + ], + "宁德市": [ + "福安市", + "福鼎市", + "蕉城区", + "古田县", + "屏南县", + "寿宁县", + "霞浦县", + "柘荣县", + "周宁县" + ], + "莆田市": [ + "城厢区", + "涵江区", + "荔城区", + "秀屿区", + "仙游县" + ], + "泉州市": [ + "晋江市", + "南安市", + "石狮市", + "丰泽区", + "鲤城区", + "洛江区", + "泉港区", + "安溪县", + "德化县", + "惠安县", + "永春县" + ], + "三明市": [ + "永安市", + "梅列区", + "三元区", + "沙县", + "大田县", + "建宁县", + "将乐县", + "明溪县", + "宁化县", + "清流县", + "泰宁县", + "尤溪县" + ], + "厦门市": [ + "海沧区", + "湖里区", + "集美区", + "思明区", + "同安区", + "翔安区" + ], + "漳州市": [ + "龙海市", + "龙文区", + "芗城区", + "东山县", + "华安县", + "南靖县", + "平和县", + "云霄县", + "漳浦县", + "长泰县", + "诏安县" + ] + }, + "江西省": { + "南昌市": [ + "东湖区", + "湾里区", + "西湖区", + "青山湖区", + "青云谱区", + "安义县", + "进贤县", + "南昌县", + "新建县", + "红谷滩新区", + "昌北经济技术开发区", + "南昌高新技术开发区" + ], + "抚州市": [ + "临川区", + "崇仁县", + "东乡县", + "广昌县", + "金溪县", + "乐安县", + "黎川县", + "南城县", + "南丰县", + "宜黄县", + "资溪县", + "金巢经济开发区" + ], + "赣州市": [ + "南康市", + "瑞金市", + "章贡区", + "赣县", + "安远县", + "崇义县", + "大余县", + "定南县", + "会昌县", + "龙南县", + "宁都县", + "全南县", + "上犹县", + "石城县", + "信丰县", + "兴国县", + "寻乌县", + "于都县", + "章江新区", + "赣州市经济技术开发区" + ], + "吉安市": [ + "井冈山市", + "吉州区", + "青原区", + "安福县", + "吉安县", + "吉水县", + "遂川县", + "泰和县", + "万安县", + "峡江县", + "新干县", + "永丰县", + "永新县" + ], + "九江市": [ + "瑞昌市", + "共青城市", + "庐山区", + "浔阳区", + "德安县", + "都昌县", + "湖口县", + "九江县", + "彭泽县", + "武宁县", + "星子县", + "修水县", + "永修县", + "城西港区", + "九江经济开发区" + ], + "萍乡市": [ + "安源区", + "湘东区", + "莲花县", + "芦溪县", + "上栗县", + "萍乡高新技术工业园区" + ], + "上饶市": [ + "德兴市", + "信州区", + "广丰县", + "横峰县", + "鄱阳县", + "铅山县", + "上饶县", + "万年县", + "婺源县", + "弋阳县", + "余干县", + "玉山县", + "上饶经济技术开发区" + ], + "新余市": [ + "渝水区", + "分宜县", + "高新经济技术开发区" + ], + "宜春市": [ + "丰城市", + "高安市", + "樟树市", + "袁州区", + "奉新县", + "靖安县", + "上高县", + "铜鼓县", + "万载县", + "宜丰县", + "马王塘经济开发区" + ], + "鹰潭市": [ + "贵溪市", + "月湖区", + "余江县", + "鹰潭工业园" + ], + "景德镇市": [ + "乐平市", + "昌江区", + "珠山区", + "浮梁县" + ] + }, + "山东省": { + "济南市": [ + "章丘市", + "槐荫区", + "历城区", + "历下区", + "市中区", + "天桥区", + "长清区", + "济阳县", + "平阴县", + "商河县", + "高新技术开发区" + ], + "滨州市": [ + "滨城区", + "博兴县", + "惠民县", + "无棣县", + "阳信县", + "沾化县", + "邹平县", + "滨州高新区", + "滨州经济开发区" + ], + "德州市": [ + "乐陵市", + "禹城市", + "德城区", + "陵县", + "临邑县", + "宁津县", + "平原县", + "齐河县", + "庆云县", + "武城县", + "夏津县", + "天衢工业园", + "商贸开发区", + "经济开发区" + ], + "东营市": [ + "东营区", + "河口区", + "广饶县", + "垦利县", + "利津县" + ], + "菏泽市": [ + "牡丹区", + "曹县", + "单县", + "成武县", + "定陶县", + "东明县", + "巨野县", + "鄄城县", + "郓城县" + ], + "济宁市": [ + "曲阜市", + "兖州市", + "邹城市", + "任城区", + "市中区", + "嘉祥县", + "金乡县", + "梁山县", + "泗水县", + "微山县", + "汶上县", + "鱼台县" + ], + "莱芜市": [ + "钢城区", + "莱城区" + ], + "聊城市": [ + "临清市", + "东昌府区", + "冠县", + "莘县", + "茌平县", + "东阿县", + "高唐县", + "阳谷县", + "经济技术开发区", + "聊城经济技术开发区" + ], + "临沂市": [ + "河东区", + "兰山区", + "罗庄区", + "费县", + "苍山县", + "莒南县", + "临沭县", + "蒙阴县", + "平邑县", + "郯城县", + "沂南县", + "沂水县" + ], + "青岛市": [ + "即墨市", + "胶州市", + "莱西市", + "平度市", + "城阳区", + "黄岛区", + "崂山区", + "李沧区", + "市北区", + "市南区" + ], + "日照市": [ + "东港区", + "岚山区", + "莒县", + "五莲县" + ], + "泰安市": [ + "肥城市", + "新泰市", + "岱岳区", + "泰山区", + "东平县", + "宁阳县" + ], + "威海市": [ + "荣成市", + "乳山市", + "文登市", + "环翠区", + "高新技术开发区", + "经济技术开发区", + "高新技术产业开发区" + ], + "潍坊市": [ + "安丘市", + "昌邑市", + "高密市", + "青州市", + "寿光市", + "诸城市", + "坊子区", + "寒亭区", + "奎文区", + "潍城区", + "昌乐县", + "临朐县", + "高新技术开发区", + "经济技术开发区", + "高新技术产业开发区" + ], + "烟台市": [ + "海阳市", + "莱阳市", + "莱州市", + "龙口市", + "蓬莱市", + "栖霞市", + "招远市", + "长岛县", + "福山区", + "高新区", + "莱山区", + "牟平区", + "芝罘区" + ], + "枣庄市": [ + "滕州市", + "高新区", + "山亭区", + "市中区", + "薛城区", + "峄城区", + "台儿庄区" + ], + "淄博市": [ + "博山区", + "临淄区", + "张店区", + "周村区", + "淄川区", + "高青县", + "桓台县", + "沂源县" + ] + }, + "河南省": { + "郑州市": [ + "登封市", + "巩义市", + "新密市", + "新郑市", + "荥阳市", + "二七区", + "高新区", + "惠济区", + "金水区", + "上街区", + "中原区", + "管城回族区", + "中牟县", + "郑东新区", + "经济技术开发区" + ], + "安阳市": [ + "林州市", + "北关区", + "龙安区", + "文峰区", + "殷都区", + "滑县", + "安阳县", + "内黄县", + "汤阴县" + ], + "鹤壁市": [ + "鹤山区", + "淇滨区", + "山城区", + "浚县", + "淇县", + "金山工业开发区" + ], + "焦作市": [ + "孟州市", + "沁阳市", + "解放区", + "马村区", + "山阳区", + "中站区", + "温县", + "博爱县", + "武陟县", + "修武县" + ], + "济源市": [ + "北海街道", + "济水街道", + "沁园街道", + "天坛街道", + "五龙口镇", + "玉泉街道", + "承留镇", + "大峪", + "克井镇", + "梨林镇", + "坡头镇", + "邵原镇", + "思礼镇", + "王屋镇", + "下冶镇", + "轵城镇" + ], + "开封市": [ + "鼓楼区", + "金明区", + "龙亭区", + "禹王台区", + "顺河回族区", + "杞县", + "开封县", + "兰考县", + "通许县", + "尉氏县" + ], + "洛阳市": [ + "偃师市", + "吉利区", + "涧西区", + "老城区", + "洛龙区", + "西工区", + "瀍河回族区", + "嵩县", + "栾川县", + "洛宁县", + "孟津县", + "汝阳县", + "新安县", + "伊川县", + "宜阳县", + "高新技术开发区", + "经济技术开发区" + ], + "南阳市": [ + "邓州市", + "高新区", + "宛城区", + "卧龙区", + "方城县", + "南召县", + "内乡县", + "社旗县", + "唐河县", + "桐柏县", + "西峡县", + "淅川县", + "新野县", + "镇平县" + ], + "商丘市": [ + "永城市", + "梁园区", + "睢阳区", + "睢县", + "民权县", + "宁陵县", + "夏邑县", + "虞城县", + "柘城县" + ], + "新乡市": [ + "辉县市", + "卫辉市", + "凤泉区", + "红旗区", + "牧野区", + "卫滨区", + "封丘县", + "获嘉县", + "新乡县", + "延津县", + "原阳县", + "长垣县" + ], + "信阳市": [ + "平桥区", + "浉河区", + "息县", + "新县", + "固始县", + "光山县", + "淮滨县", + "潢川县", + "罗山县", + "商城县", + "羊山新区" + ], + "许昌市": [ + "禹州市", + "长葛市", + "魏都区", + "襄城县", + "许昌县", + "鄢陵县" + ], + "周口市": [ + "项城市", + "川汇区", + "郸城县", + "扶沟县", + "淮阳县", + "鹿邑县", + "商水县", + "沈丘县", + "太康县", + "西华县", + "经济技术开发区" + ], + "漯河市": [ + "郾城区", + "源汇区", + "召陵区", + "临颍县", + "舞阳县" + ], + "濮阳市": [ + "华龙区", + "范县", + "南乐县", + "濮阳县", + "清丰县", + "台前县" + ], + "三门峡市": [ + "灵宝市", + "义马市", + "湖滨区", + "陕县", + "卢氏县", + "渑池县" + ], + "平顶山市": [ + "汝州市", + "舞钢市", + "石龙区", + "卫东区", + "新城区", + "新华区", + "湛河区", + "郏县", + "叶县", + "宝丰县", + "鲁山县", + "高新技术开发区" + ], + "驻马店市": [ + "驿城区", + "泌阳县", + "平舆县", + "确山县", + "汝南县", + "上蔡县", + "遂平县", + "西平县", + "新蔡县", + "正阳县", + "高新技术开发区" + ] + }, + "湖北省": { + "武汉市": [ + "蔡甸区", + "汉南区", + "汉阳区", + "洪山区", + "黄陂区", + "江岸区", + "江汉区", + "江夏区", + "硚口区", + "青山区", + "武昌区", + "新洲区", + "东西湖区", + "东湖新技术开发区", + "武汉经济技术开发区", + "武汉吴家山经济技术开发区" + ], + "鄂州市": [ + "鄂城区", + "华容区", + "梁子湖区", + "葛店经济技术开发区" + ], + "黄冈市": [ + "麻城市", + "武穴市", + "黄州区", + "红安县", + "黄梅县", + "罗田县", + "蕲春县", + "团风县", + "浠水县", + "英山县" + ], + "黄石市": [ + "大冶市", + "铁山区", + "下陆区", + "黄石港区", + "西塞山区", + "阳新县" + ], + "荆门市": [ + "钟祥市", + "东宝区", + "掇刀区", + "京山县", + "沙洋县" + ], + "荆州市": [ + "洪湖市", + "石首市", + "松滋市", + "荆州区", + "沙市区", + "公安县", + "监利县", + "江陵县" + ], + "十堰市": [ + "丹江口市", + "茅箭区", + "张湾区", + "房县", + "郧县", + "郧西县", + "竹山县", + "竹溪县" + ], + "随州市": [ + "广水市", + "曾都区", + "随县" + ], + "咸宁市": [ + "赤壁市", + "咸安区", + "崇阳县", + "嘉鱼县", + "通城县", + "通山县" + ], + "襄阳市": [ + "宜城市", + "枣阳市", + "老河口市", + "襄城区", + "襄州区", + "樊城区", + "保康县", + "谷城县", + "南漳县" + ], + "孝感市": [ + "安陆市", + "汉川市", + "应城市", + "孝南区", + "大悟县", + "孝昌县", + "云梦县" + ], + "宜昌市": [ + "当阳市", + "宜都市", + "枝江市", + "点军区", + "西陵区", + "猇亭区", + "夷陵区", + "伍家岗区", + "兴山县", + "远安县", + "秭归县", + "长阳土家族自治县", + "五峰土家族自治县" + ], + "神农架林区": [ + "红坪镇", + "木鱼镇", + "松柏镇", + "新华镇", + "阳日镇", + "九湖乡", + "宋洛乡", + "下谷坪土家族乡" + ], + "潜江市": [ + "浩口镇", + "老新镇", + "龙湾镇", + "王场镇", + "熊口镇", + "渔洋镇", + "张金镇", + "高石碑镇", + "积玉口镇", + "竹根滩镇", + "园林高新技术开发区" + ], + "天门市": [ + "竟陵街道", + "杨林街道", + "多宝镇", + "多祥镇", + "干驿镇", + "横林镇", + "胡市镇", + "黄潭镇", + "九真镇", + "麻洋镇", + "马湾镇", + "彭市镇", + "石河镇", + "拖市镇", + "汪场镇", + "渔薪镇", + "皂市镇", + "张港镇", + "佛子山镇", + "天门侨乡经济技术开发区" + ], + "仙桃市": [ + "沙嘴街道", + "干河街道", + "龙华山街道", + "陈场镇", + "剅河镇", + "郭河镇", + "彭场镇", + "沙湖镇", + "郑场镇", + "通海口镇", + "西流河镇", + "长埫口镇", + "沔城回族镇" + ], + "恩施土家族苗族自治州": [ + "恩施市", + "利川市", + "巴东县", + "鹤峰县", + "建始县", + "来凤县", + "咸丰县", + "宣恩县" + ] + }, + "湖南省": { + "长沙市": [ + "浏阳市", + "芙蓉区", + "开福区", + "天心区", + "望城区", + "雨花区", + "岳麓区", + "长沙县", + "宁乡县" + ], + "常德市": [ + "津市市", + "鼎城区", + "武陵区", + "澧县", + "安乡县", + "汉寿县", + "临澧县", + "石门县", + "桃源县", + "西洞庭管理区" + ], + "郴州市": [ + "资兴市", + "北湖区", + "苏仙区", + "安仁县", + "桂东县", + "桂阳县", + "嘉禾县", + "临武县", + "汝城县", + "宜章县", + "永兴县" + ], + "衡阳市": [ + "常宁市", + "耒阳市", + "南岳区", + "石鼓区", + "雁峰区", + "蒸湘区", + "珠晖区", + "衡东县", + "衡南县", + "衡山县", + "衡阳县", + "祁东县" + ], + "怀化市": [ + "洪江市", + "鹤城区", + "洪江区", + "辰溪县", + "会同县", + "溆浦县", + "沅陵县", + "中方县", + "麻阳苗族自治县", + "通道侗族自治县", + "新晃侗族自治县", + "芷江侗族自治县", + "靖州苗族侗族自治县" + ], + "娄底市": [ + "涟源市", + "冷水江市", + "娄星区", + "双峰县", + "新化县", + "娄底经济开发区" + ], + "邵阳市": [ + "武冈市", + "北塔区", + "大祥区", + "双清区", + "洞口县", + "隆回县", + "邵东县", + "邵阳县", + "绥宁县", + "新宁县", + "新邵县", + "城步苗族自治县" + ], + "湘潭市": [ + "韶山市", + "湘乡市", + "雨湖区", + "岳塘区", + "湘潭县" + ], + "益阳市": [ + "沅江市", + "赫山区", + "资阳区", + "南县", + "安化县", + "桃江县" + ], + "永州市": [ + "零陵区", + "冷水滩区", + "道县", + "东安县", + "江永县", + "蓝山县", + "宁远县", + "祁阳县", + "双牌县", + "新田县", + "江华瑶族自治县" + ], + "岳阳市": [ + "临湘市", + "汨罗市", + "君山区", + "岳阳楼区", + "云溪区", + "华容县", + "平江县", + "湘阴县", + "岳阳县", + "屈原管理区", + "洞庭湖旅游度假区", + "岳阳经济技术开发区" + ], + "株洲市": [ + "醴陵市", + "荷塘区", + "芦淞区", + "石峰区", + "天元区", + "攸县", + "茶陵县", + "炎陵县", + "株洲县", + "云龙示范区" + ], + "张家界市": [ + "永定区", + "武陵源区", + "慈利县", + "桑植县" + ], + "湘西土家族苗族自治州": [ + "吉首市", + "保靖县", + "凤凰县", + "古丈县", + "花垣县", + "龙山县", + "泸溪县", + "永顺县" + ] + }, + "广东省": { + "广州市": [ + "白云区", + "从化区", + "番禺区", + "海珠区", + "花都区", + "黄埔区", + "荔湾区", + "萝岗区", + "南沙区", + "天河区", + "越秀区", + "增城区" + ], + "东莞市": [ + "东城街道", + "莞城街道", + "南城街道", + "万江街道", + "茶山镇", + "常平镇", + "大朗镇", + "道滘镇", + "东坑镇", + "凤岗镇", + "高埗镇", + "横沥镇", + "洪梅镇", + "厚街镇", + "虎门镇", + "黄江镇", + "寮步镇", + "麻涌镇", + "企石镇", + "桥头镇", + "清溪镇", + "沙田镇", + "石碣镇", + "石龙镇", + "石排镇", + "塘厦镇", + "谢岗镇", + "长安镇", + "中堂镇", + "大岭山镇", + "望牛墩镇", + "樟木头镇" + ], + "潮州市": [ + "枫溪区", + "湘桥区", + "潮安县", + "饶平县" + ], + "佛山市": [ + "禅城区", + "高明区", + "南海区", + "三水区", + "顺德区" + ], + "河源市": [ + "高新区", + "源城区", + "东源县", + "和平县", + "连平县", + "龙川县", + "紫金县", + "高新技术开发区" + ], + "惠州市": [ + "惠城区", + "惠阳区", + "大亚湾区", + "博罗县", + "惠东县", + "龙门县" + ], + "江门市": [ + "恩平市", + "鹤山市", + "开平市", + "台山市", + "江海区", + "蓬江区", + "新会区" + ], + "揭阳市": [ + "普宁市", + "东山区", + "揭东区", + "普侨区", + "榕城区", + "大南山区", + "惠来县", + "揭西县", + "试验区", + "渔湖经济开发试验区" + ], + "茂名市": [ + "高州市", + "化州市", + "信宜市", + "茂港区", + "茂南区", + "电白县" + ], + "梅州市": [ + "兴宁市", + "梅江区", + "梅县", + "大埔县", + "丰顺县", + "蕉岭县", + "平远县", + "五华县" + ], + "清远市": [ + "连州市", + "英德市", + "清城区", + "清新区", + "佛冈县", + "阳山县", + "连南瑶族自治县", + "连山壮族瑶族自治县" + ], + "汕头市": [ + "潮南区", + "潮阳区", + "澄海区", + "濠江区", + "金平区", + "龙湖区", + "南澳县" + ], + "汕尾市": [ + "陆丰市", + "城区", + "华侨区", + "红海湾区", + "海丰县", + "陆河县" + ], + "韶关市": [ + "乐昌市", + "南雄市", + "曲江区", + "武江区", + "浈江区", + "仁化县", + "始兴县", + "翁源县", + "新丰县", + "乳源瑶族自治县" + ], + "深圳市": [ + "宝安区", + "福田区", + "龙岗区", + "罗湖区", + "南山区", + "盐田区", + "光明新区" + ], + "阳江市": [ + "阳春市", + "江城区", + "阳东县", + "阳西县", + "海陵岛经济开发试验区" + ], + "云浮市": [ + "罗定市", + "云城区", + "新兴县", + "郁南县", + "云安县" + ], + "湛江市": [ + "雷州市", + "廉江市", + "吴川市", + "赤坎区", + "麻章区", + "坡头区", + "霞山区", + "遂溪县", + "徐闻县", + "湛江经济技术开发区" + ], + "肇庆市": [ + "高要市", + "四会市", + "鼎湖区", + "端州区", + "德庆县", + "封开县", + "广宁县", + "怀集县", + "大旺高新技术开发区" + ], + "中山市": [ + "石岐区", + "东区街道", + "南区街道", + "西区街道", + "五桂山街道", + "板芙镇", + "大涌镇", + "东凤镇", + "东升镇", + "阜沙镇", + "港口镇", + "古镇镇", + "横栏镇", + "黄圃镇", + "民众镇", + "南朗镇", + "南头镇", + "三角镇", + "三乡镇", + "沙溪镇", + "神湾镇", + "坦洲镇", + "小榄镇", + "火炬开发区" + ], + "珠海市": [ + "斗门区", + "金湾区", + "香洲区" + ] + }, + "广西壮族自治区": { + "南宁市": [ + "江南区", + "良庆区", + "青秀区", + "兴宁区", + "邕宁区", + "西乡塘区", + "横县", + "宾阳县", + "隆安县", + "马山县", + "上林县", + "武鸣县" + ], + "百色市": [ + "右江区", + "德保县", + "靖西县", + "乐业县", + "凌云县", + "那坡县", + "平果县", + "田东县", + "田林县", + "田阳县", + "西林县", + "隆林各族自治县" + ], + "北海市": [ + "海城区", + "银海区", + "铁山港区", + "合浦县" + ], + "崇左市": [ + "凭祥市", + "江洲区", + "大新县", + "扶绥县", + "龙州县", + "宁明县", + "天等县" + ], + "桂林市": [ + "叠彩区", + "临桂区", + "七星区", + "象山区", + "秀峰区", + "雁山区", + "灌阳县", + "荔蒲县", + "灵川县", + "平乐县", + "全州县", + "兴安县", + "阳朔县", + "永福县", + "资源县", + "恭城瑶族自治县", + "龙胜各族自治县" + ], + "贵港市": [ + "桂平市", + "港北区", + "港南区", + "覃塘区", + "平南县" + ], + "河池市": [ + "宜州市", + "金城江区", + "东兰县", + "凤山县", + "南丹县", + "天峨县", + "巴马瑶族自治县", + "大化瑶族自治县", + "都安瑶族自治县", + "环江毛南族自治县", + "罗城仫佬族自治县" + ], + "贺州市": [ + "八步区", + "昭平县", + "钟山县", + "富川瑶族自治县", + "平桂管理区" + ], + "来宾市": [ + "合山市", + "兴宾区", + "武宣县", + "象州县", + "忻城县", + "金秀瑶族自治县" + ], + "柳州市": [ + "城中区", + "柳北区", + "柳南区", + "鱼峰区", + "柳城县", + "柳江县", + "鹿寨县", + "融安县", + "融水苗族自治县", + "三江侗族自治县" + ], + "钦州市": [ + "钦北区", + "钦南区", + "灵山县", + "浦北县", + "钦州港经济技术开发区" + ], + "梧州市": [ + "岑溪市", + "蝶山区", + "龙圩区", + "万秀区", + "长洲区", + "藤县", + "苍梧县", + "蒙山县" + ], + "玉林市": [ + "北流市", + "福绵区", + "玉州区", + "容县", + "博白县", + "陆川县", + "兴业县" + ], + "防城港市": [ + "东兴市", + "防城区", + "港口区", + "上思县", + "行政中心区" + ] + }, + "海南省": { + "海口市": [ + "龙华区", + "美兰区", + "琼山区", + "秀英区" + ], + "三亚市": [ + "河东区", + "河西区", + "凤凰镇", + "吉阳镇", + "海棠湾镇" + ], + "白沙黎族自治县": [ + "牙叉镇", + "其它" + ], + "保亭黎族苗族自治县": [ + "保城镇", + "其它" + ], + "昌江黎族自治县": [ + "石碌镇", + "其它" + ], + "澄迈县": [ + "金江镇", + "老城镇", + "其它" + ], + "儋州市": [ + "大成镇", + "海头镇", + "和庆镇", + "那大镇", + "南丰镇", + "王五镇", + "洋浦经济开发区", + "其它" + ], + "定安县": [ + "定城镇", + "翰林镇", + "龙河镇", + "龙门镇", + "其它" + ], + "东方市": [ + "八所镇", + "其它" + ], + "乐东黎族自治县": [ + "抱由镇", + "其它" + ], + "临高县": [ + "波莲镇", + "博厚镇", + "东英镇", + "多文镇", + "和舍镇", + "皇桐镇", + "临城镇", + "南宝镇", + "调楼镇", + "新盈镇", + "其它" + ], + "陵水黎族自治县": [ + "本号镇", + "椰林镇", + "英州镇", + "群英乡", + "提蒙乡", + "其它" + ], + "琼海市": [ + "博鳌镇", + "嘉积镇", + "其它" + ], + "琼中黎族苗族自治县": [ + "营根镇", + "其它" + ], + "屯昌县": [ + "屯昌镇", + "屯城镇", + "其它" + ], + "万宁市": [ + "万城镇", + "兴隆镇", + "其它" + ], + "文昌市": [ + "昌洒镇", + "会文镇", + "锦山镇", + "铺前镇", + "清澜镇", + "潭牛镇", + "文城镇", + "翁田镇", + "其它" + ], + "五指山市": [ + "冲山镇", + "其它" + ], + "三沙市": [ + "南沙群岛的岛礁及其海域", + "西沙群岛的岛礁及其海域", + "中沙群岛的岛礁及其海域" + ] + }, + "重庆市": { + "重庆市": [ + "巴南区", + "北碚区", + "大足区", + "涪陵区", + "高新区", + "合川区", + "江北区", + "江津区", + "南岸区", + "南川区", + "綦江区", + "黔江区", + "双桥区", + "万盛区", + "万州区", + "永川区", + "渝北区", + "渝中区", + "长寿区", + "大渡口区", + "九龙坡区", + "沙坪坝区", + "开县", + "忠县", + "璧山县", + "城口县", + "垫江县", + "丰都县", + "奉节县", + "梁平县", + "荣昌县", + "铜梁县", + "潼南县", + "巫山县", + "巫溪县", + "武隆县", + "云阳县", + "石柱土家族自治县", + "彭水苗族土家族自治县", + "秀山土家族苗族自治县", + "酉阳土家族苗族自治县" + ] + }, + "四川省": { + "成都市": [ + "崇州市", + "彭州市", + "邛崃市", + "都江堰市", + "成华区", + "高新区", + "金牛区", + "锦江区", + "青羊区", + "温江区", + "武侯区", + "新都区", + "高新西区", + "龙泉驿区", + "青白江区", + "郫县", + "大邑县", + "金堂县", + "蒲江县", + "双流县", + "新津县" + ], + "巴中市": [ + "巴州区", + "恩阳区", + "南江县", + "平昌县", + "通江县" + ], + "达州市": [ + "万源市", + "通川区", + "达县", + "渠县", + "大竹县", + "开江县", + "宣汉县" + ], + "德阳市": [ + "广汉市", + "绵竹市", + "什邡市", + "旌阳区", + "罗江县", + "中江县" + ], + "广安市": [ + "华蓥市", + "广安区", + "前锋区", + "邻水县", + "武胜县", + "岳池县" + ], + "广元市": [ + "朝天区", + "利州区", + "昭化区", + "苍溪县", + "剑阁县", + "青川县", + "旺苍县" + ], + "乐山市": [ + "峨眉山市", + "沙湾区", + "市中区", + "金口河区", + "五通桥区", + "夹江县", + "犍为县", + "井研县", + "沐川县", + "峨边彝族自治县", + "马边彝族自治县" + ], + "眉山市": [ + "东坡区", + "丹棱县", + "洪雅县", + "彭山县", + "青神县", + "仁寿县" + ], + "绵阳市": [ + "江油市", + "涪城区", + "游仙区", + "安县", + "平武县", + "三台县", + "盐亭县", + "梓潼县", + "北川羌族自治县", + "高新技术开发区" + ], + "南充市": [ + "阆中市", + "高坪区", + "嘉陵区", + "顺庆区", + "南部县", + "蓬安县", + "西充县", + "仪陇县", + "营山县" + ], + "内江市": [ + "东兴区", + "市中区", + "隆昌县", + "威远县", + "资中县" + ], + "遂宁市": [ + "安居区", + "船山区", + "河东新区", + "大英县", + "蓬溪县", + "射洪县" + ], + "雅安市": [ + "名山区", + "雨城区", + "宝兴县", + "汉源县", + "芦山县", + "石棉县", + "天全县", + "荥经县" + ], + "宜宾市": [ + "翠屏区", + "南溪区", + "高县", + "珙县", + "江安县", + "筠连县", + "屏山县", + "兴文县", + "宜宾县", + "长宁县" + ], + "资阳市": [ + "简阳市", + "雁江区", + "安岳县", + "乐至县" + ], + "自贡市": [ + "大安区", + "贡井区", + "沿滩区", + "自流井区", + "荣县", + "富顺县", + "汇东新区" + ], + "泸州市": [ + "江阳区", + "纳溪区", + "龙马潭区", + "泸县", + "古蔺县", + "合江县", + "叙永县" + ], + "攀枝花市": [ + "东区", + "西区", + "仁和区", + "米易县", + "盐边县" + ], + "甘孜藏族自治州": [ + "巴塘县", + "白玉县", + "丹巴县", + "道孚县", + "稻城县", + "得荣县", + "德格县", + "甘孜县", + "九龙县", + "康定县", + "理塘县", + "炉霍县", + "泸定县", + "色达县", + "石渠县", + "乡城县", + "新龙县", + "雅江县" + ], + "凉山彝族自治州": [ + "西昌市", + "布拖县", + "德昌县", + "甘洛县", + "会东县", + "会理县", + "金阳县", + "雷波县", + "美姑县", + "冕宁县", + "宁南县", + "普格县", + "喜德县", + "盐源县", + "越西县", + "昭觉县", + "木里藏族自治县" + ], + "阿坝藏族羌族自治州": [ + "理县", + "茂县", + "阿坝县", + "黑水县", + "红原县", + "金川县", + "壤塘县", + "松潘县", + "汶川县", + "小金县", + "九寨沟县", + "马尔康县", + "若尔盖县" + ] + }, + "贵州省": { + "贵阳市": [ + "清镇市", + "白云区", + "花溪区", + "南明区", + "乌当区", + "云岩区", + "开阳县", + "息烽县", + "修文县", + "金阳新区" + ], + "安顺市": [ + "开发区", + "西秀区", + "平坝县", + "普定县", + "关岭布依族苗族自治县", + "镇宁布依族苗族自治县", + "紫云苗族布依族自治县" + ], + "遵义市": [ + "赤水市", + "仁怀市", + "汇川区", + "红花岗区", + "凤冈县", + "湄潭县", + "绥阳县", + "桐梓县", + "习水县", + "余庆县", + "正安县", + "遵义县", + "道真仡佬族苗族自治县", + "务川仡佬族苗族自治县" + ], + "六盘水市": [ + "钟山区", + "六枝特区", + "盘县", + "水城县", + "红桥新区" + ], + "铜仁市": [ + "碧江区", + "万山区", + "德江县", + "江口县", + "石阡县", + "思南县", + "松桃苗族自治县", + "玉屏侗族自治县", + "沿河土家族自治县", + "印江土家族苗族自治县" + ], + "毕节市": [ + "七星关区", + "大方县", + "金沙县", + "纳雍县", + "黔西县", + "织金县", + "威宁彝族回族苗族自治县" + ], + "黔东南苗族侗族自治州": [ + "凯里市", + "岑巩县", + "从江县", + "丹寨县", + "黄平县", + "剑河县", + "锦屏县", + "雷山县", + "黎平县", + "麻江县", + "榕江县", + "三穗县", + "施秉县", + "台江县", + "天柱县", + "镇远县" + ], + "黔南布依族苗族自治州": [ + "都匀市", + "福泉市", + "独山县", + "贵定县", + "惠水县", + "荔波县", + "龙里县", + "罗甸县", + "平塘县", + "瓮安县", + "长顺县", + "三都水族自治县" + ], + "黔西南布依族苗族自治州": [ + "兴义市", + "安龙县", + "册亨县", + "普安县", + "晴隆县", + "望谟县", + "兴仁县", + "贞丰县" + ] + }, + "云南省": { + "昆明市": [ + "安宁市", + "呈贡区", + "东川区", + "官渡区", + "盘龙区", + "五华区", + "西山区", + "富民县", + "晋宁县", + "嵩明县", + "宜良县", + "石林彝族自治县", + "禄劝彝族苗族自治县", + "寻甸回族彝族自治县" + ], + "保山市": [ + "隆阳区", + "昌宁县", + "龙陵县", + "施甸县", + "腾冲县" + ], + "丽江市": [ + "古城区", + "华坪县", + "永胜县", + "宁蒗彝族自治县", + "玉龙纳西族自治县" + ], + "普洱市": [ + "思茅区", + "景东彝族自治县", + "西盟佤族自治县", + "宁蒗彝族自治县", + "墨江哈尼族自治县", + "景谷傣族彝族自治县", + "江城哈尼族彝族自治县", + "宁洱哈尼族彝族自治县", + "孟连傣族拉祜族佤族自治县", + "镇沅彝族哈尼族拉祜族自治县" + ], + "临沧市": [ + "临翔区", + "云县", + "凤庆县", + "永德县", + "镇康县", + "沧源佤族自治县", + "耿马傣族佤族自治县", + "双江拉祜族佤族布朗族傣族自治县" + ], + "曲靖市": [ + "宣威市", + "麒麟区", + "富源县", + "会泽县", + "陆良县", + "罗平县", + "马龙县", + "师宗县", + "沾益县" + ], + "玉溪市": [ + "红塔区", + "澄江县", + "华宁县", + "江川县", + "通海县", + "易门县", + "峨山彝族自治县", + "新平彝族傣族自治县", + "元江哈尼族彝族傣族自治县" + ], + "昭通市": [ + "昭阳区", + "大关县", + "鲁甸县", + "巧家县", + "水富县", + "绥江县", + "威信县", + "盐津县", + "彝良县", + "永善县", + "镇雄县" + ], + "楚雄彝族自治州": [ + "楚雄市", + "大姚县", + "禄丰县", + "牟定县", + "南华县", + "双柏县", + "武定县", + "姚安县", + "永仁县", + "元谋县" + ], + "迪庆藏族自治州": [ + "德钦县", + "香格里拉县", + "维西傈僳族自治县" + ], + "大理白族自治州": [ + "大理市", + "宾川县", + "洱源县", + "鹤庆县", + "剑川县", + "弥渡县", + "祥云县", + "永平县", + "云龙县", + "漾濞彝族自治县", + "南涧彝族自治县", + "巍山彝族回族自治县" + ], + "文山壮族苗族自治州": [ + "文山市", + "富宁县", + "广南县", + "马关县", + "丘北县", + "西畴县", + "砚山县", + "麻栗坡县" + ], + "怒江傈僳族自治州": [ + "福贡县", + "泸水县", + "贡山独龙族怒族自治县", + "兰坪白族普米族自治县" + ], + "西双版纳傣族自治州": [ + "景洪市", + "勐海县", + "勐腊县" + ], + "德宏傣族景颇族自治州": [ + "芒市", + "瑞丽市", + "梁河县", + "陇川县", + "盈江县" + ], + "红河哈尼族彝族自治州": [ + "个旧市", + "开远市", + "蒙自市", + "红河县", + "建水县", + "泸西县", + "绿春县", + "弥勒县", + "石屏县", + "元阳县", + "河口瑶族自治县", + "屏边苗族自治县", + "金平苗族瑶族傣族自治县" + ] + }, + "西藏自治区": { + "拉萨市": [ + "城关区", + "达孜县", + "当雄县", + "林周县", + "尼木县", + "曲水县", + "堆龙德庆县", + "墨竹工卡县" + ], + "阿里地区": [ + "措勤县", + "噶尔县", + "改则县", + "革吉县", + "普兰县", + "日土县", + "札达县" + ], + "昌都市": [ + "卡若区", + "八宿县", + "边坝县", + "察雅县", + "丁青县", + "贡觉县", + "江达县", + "洛隆县", + "芒康县", + "左贡县", + "类乌齐县" + ], + "林芝地区": [ + "朗县", + "波密县", + "察隅县", + "林芝县", + "米林县", + "墨脱县", + "工布江达县" + ], + "那曲地区": [ + "索县", + "安多县", + "巴青县", + "班戈县", + "比如县", + "嘉黎县", + "那曲县", + "尼玛县", + "聂荣县", + "申扎县" + ], + "山南地区": [ + "措美县", + "错那县", + "贡嘎县", + "加查县", + "隆子县", + "洛扎县", + "乃东县", + "琼结县", + "曲松县", + "桑日县", + "扎囊县", + "浪卡子县" + ], + "日喀则市": [ + "桑珠孜区", + "昂仁县", + "白朗县", + "定结县", + "定日县", + "岗巴县", + "吉隆县", + "江孜县", + "康马县", + "拉孜县", + "仁布县", + "萨嘎县", + "萨迦县", + "亚东县", + "仲巴县", + "南木林县", + "聂拉木县", + "谢通门县" + ] + }, + "陕西省": { + "西安市": [ + "灞桥区", + "碑林区", + "莲湖区", + "临潼区", + "未央区", + "新城区", + "阎良区", + "雁塔区", + "长安区", + "户县", + "高陵县", + "蓝田县", + "周至县", + "高新技术开发区", + "西安经济技术开发区" + ], + "宝鸡市": [ + "陈仓区", + "金台区", + "渭滨区", + "凤县", + "陇县", + "眉县", + "凤翔县", + "扶风县", + "麟游县", + "岐山县", + "千阳县", + "太白县", + "高新技术产业开发区" + ], + "安康市": [ + "汉滨区", + "白河县", + "汉阴县", + "岚皋县", + "宁陕县", + "平利县", + "石泉县", + "旬阳县", + "镇坪县", + "紫阳县" + ], + "汉中市": [ + "汉台区", + "勉县", + "洋县", + "城固县", + "佛坪县", + "留坝县", + "略阳县", + "南郑县", + "宁强县", + "西乡县", + "镇巴县", + "北开发区" + ], + "商洛市": [ + "商州区", + "丹凤县", + "洛南县", + "山阳县", + "商南县", + "柞水县", + "镇安县" + ], + "铜川市": [ + "王益区", + "耀州区", + "印台区", + "宜君县", + "铜川新区" + ], + "渭南市": [ + "韩城市", + "华阴市", + "临渭区", + "华县", + "白水县", + "澄城县", + "大荔县", + "富平县", + "合阳县", + "蒲城县", + "潼关县", + "高新经济开发区" + ], + "咸阳市": [ + "兴平市", + "秦都区", + "渭城区", + "杨陵区", + "彬县", + "乾县", + "淳化县", + "泾阳县", + "礼泉县", + "三原县", + "武功县", + "旬邑县", + "永寿县", + "长武县" + ], + "延安市": [ + "宝塔区", + "富县", + "安塞县", + "甘泉县", + "黄陵县", + "黄龙县", + "洛川县", + "吴起县", + "延川县", + "延长县", + "宜川县", + "志丹县", + "子长县" + ], + "榆林市": [ + "榆阳区", + "佳县", + "定边县", + "府谷县", + "横山县", + "靖边县", + "米脂县", + "清涧县", + "神木县", + "绥德县", + "吴堡县", + "子洲县" + ] + }, + "甘肃省": { + "兰州市": [ + "安宁区", + "城关区", + "红古区", + "西固区", + "七里河区", + "皋兰县", + "永登县", + "榆中县" + ], + "白银市": [ + "白银区", + "平川区", + "会宁县", + "景泰县", + "靖远县" + ], + "定西市": [ + "安定区", + "岷县", + "漳县", + "临洮县", + "陇西县", + "通渭县", + "渭源县" + ], + "陇南市": [ + "武都区", + "成县", + "徽县", + "康县", + "礼县", + "文县", + "宕昌县", + "两当县", + "西和县" + ], + "金昌市": [ + "金川区", + "永昌县" + ], + "酒泉市": [ + "敦煌市", + "玉门市", + "肃州区", + "瓜州县", + "金塔县", + "肃北蒙古族自治县", + "阿克塞哈萨克族自治县" + ], + "庆阳市": [ + "西峰区", + "环县", + "宁县", + "合水县", + "华池县", + "庆城县", + "镇原县", + "正宁县" + ], + "天水市": [ + "北道区", + "秦城区", + "甘谷县", + "秦安县", + "清水县", + "武山县", + "张家川回族自治县" + ], + "武威市": [ + "凉州区", + "古浪县", + "民勤县", + "天祝藏族自治县" + ], + "张掖市": [ + "甘州区", + "高台县", + "临泽县", + "民乐县", + "山丹县", + "肃南裕固族自治县" + ], + "平凉市": [ + "崆峒区", + "崇信县", + "华亭县", + "泾川县", + "静宁县", + "灵台县", + "庄浪县" + ], + "嘉峪关市": [ + "朝阳街道", + "建设街道", + "前进街道", + "胜利街道", + "五一街道", + "新华街道", + "峪苑街道" + ], + "临夏回族自治州": [ + "临夏市", + "广河县", + "和政县", + "康乐县", + "临夏县", + "永靖县", + "东乡族自治县", + "积石山保安族东乡族撒拉族自治县" + ], + "甘南藏族自治州": [ + "合作市", + "迭部县", + "临潭县", + "碌曲县", + "玛曲县", + "夏河县", + "舟曲县", + "卓尼县" + ] + }, + "青海省": { + "西宁市": [ + "城北区", + "城东区", + "城西区", + "城中区", + "湟源县", + "湟中县", + "大通回族土族自治县" + ], + "海东市": [ + "乐都县", + "平安县", + "互助土族自治县", + "化隆回族自治县", + "循化撒拉族自治县", + "民和回族土族自治县" + ], + "果洛藏族自治州": [ + "班玛县", + "达日县", + "甘德县", + "久治县", + "玛多县", + "玛沁县" + ], + "海北藏族自治州": [ + "刚察县", + "海晏县", + "祁连县", + "门源回族自治县" + ], + "海南藏族自治州": [ + "共和县", + "贵德县", + "贵南县", + "同德县", + "兴海县" + ], + "黄南藏族自治州": [ + "尖扎县", + "同仁县", + "泽库县", + "河南蒙古族自治县" + ], + "玉树藏族自治州": [ + "玉树市", + "称多县", + "囊谦县", + "杂多县", + "治多县", + "曲麻莱县" + ], + "海西蒙古族藏族自治州": [ + "德令哈市", + "格尔木市", + "都兰县", + "天峻县", + "乌兰县", + "冷湖行政区", + "茫崖行政区", + "大柴旦行政区" + ] + }, + "宁夏回族自治区": { + "银川市": [ + "灵武市", + "金凤区", + "西夏区", + "兴庆区", + "贺兰县", + "永宁县" + ], + "固原市": [ + "原州区", + "泾源县", + "隆德县", + "彭阳县", + "西吉县" + ], + "吴忠市": [ + "青铜峡市", + "利通区", + "红寺堡区", + "同心县", + "盐池县" + ], + "中卫市": [ + "沙坡头区", + "海原县", + "中宁县" + ], + "石嘴山市": [ + "惠农区", + "大武口区", + "平罗县" + ] + }, + "新疆维吾尔自治区": { + "乌鲁木齐市": [ + "米东区", + "天山区", + "新市区", + "达坂城区", + "水磨沟区", + "头屯河区", + "沙依巴克区", + "乌鲁木齐县", + "经济技术开发区" + ], + "石河子市": [ + "东城街道", + "红山街道", + "老街街道", + "向阳街道", + "其它" + ], + "克拉玛依市": [ + "白碱滩区", + "独山子区", + "乌尔禾区", + "克拉玛依区" + ], + "哈密地区": [ + "哈密市", + "伊吾县", + "巴里坤哈萨克自治县" + ], + "和田地区": [ + "和田市", + "策勒县", + "和田县", + "洛浦县", + "民丰县", + "墨玉县", + "皮山县", + "于田县" + ], + "塔城地区": [ + "塔城市", + "乌苏市", + "额敏县", + "沙湾县", + "托里县", + "裕民县", + "和布克赛尔蒙古自治县" + ], + "喀什地区": [ + "喀什市", + "巴楚县", + "伽师县", + "莎车县", + "疏附县", + "疏勒县", + "叶城县", + "泽普县", + "麦盖提县", + "英吉沙县", + "岳普湖县", + "塔什库尔干塔吉克自治县" + ], + "阿克苏地区": [ + "阿克苏市", + "拜城县", + "柯坪县", + "库车县", + "沙雅县", + "温宿县", + "乌什县", + "新和县", + "阿瓦提县" + ], + "阿勒泰地区": [ + "阿勒泰市", + "福海县", + "富蕴县", + "青河县", + "布尔津县", + "哈巴河县", + "吉木乃县" + ], + "吐鲁番地区": [ + "吐鲁番市", + "鄯善县", + "托克逊县" + ], + "阿拉尔市": [ + "其它" + ], + "五家渠市": [ + "军垦路街道", + "人民路街道", + "其它" + ], + "图木舒克市": [ + "其它" + ], + "北屯市": [ + "其它" + ], + "铁门关市": [ + "其它" + ], + "双河市": [ + "其它" + ], + "昌吉回族自治州": [ + "昌吉市", + "阜康市", + "奇台县", + "呼图壁县", + "玛纳斯县", + "吉木萨尔县", + "木垒哈萨克自治县" + ], + "伊犁哈萨克自治州": [ + "奎屯市", + "伊宁市", + "霍尔果斯市", + "巩留县", + "霍城县", + "新源县", + "新源县", + "昭苏县", + "尼勒克县", + "特克斯县", + "察布查尔锡伯自治县" + ], + "巴音郭楞蒙古自治州": [ + "库尔勒市", + "博湖县", + "和静县", + "和硕县", + "轮台县", + "且末县", + "若羌县", + "尉犁县", + "焉耆回族自治县" + ], + "博尔塔拉蒙古自治州": [ + "博乐市", + "阿拉山口市", + "精河县", + "温泉县" + ], + "克孜勒苏柯尔克孜自治州": [ + "阿图什市", + "乌恰县", + "阿合奇县", + "阿克陶县" + ] + }, + "香港特别行政区": { + "香港特别行政区": [ + "中西区", + "东区", + "九龙城区", + "观塘区", + "南区", + "深水涉区", + "黄大仙区", + "湾仔区", + "油尖旺区", + "离岛区", + "葵青区", + "北区", + "西贡区", + "沙田区", + "屯门区", + "大埔区", + "荃湾区", + "元朗区" + ] + }, + "澳门特别行政区": { + "澳门特别行政区": [ + "花地玛堂区", + "圣安多尼堂区", + "大堂区", + "望德堂区", + "风顺堂区", + "氹仔", + "路环", + "路氹城" + ] + }, + "台湾": { + "台北市": [ + "大安区", + "大同区", + "内湖区", + "南港区", + "松山区", + "万华区", + "文山区", + "信义区", + "中山区", + "中正区", + "北投区", + "士林区" + ], + "新北市": [ + "林口区", + "莺歌区", + "八里区", + "板桥区", + "淡水区", + "芦洲区", + "三重区", + "深坑区", + "树林区", + "泰山区", + "土城区", + "五股区", + "新庄区", + "永和区", + "中和区", + "万里区", + "金山区", + "石碇区", + "瑞芳区", + "贡寮区", + "坪林区", + "乌来区", + "三芝区", + "石门区", + "平溪区", + "双溪区", + "三峡区", + "汐止区", + "新店区" + ], + "台中市": [ + "北区", + "北屯区", + "大安区", + "大肚区", + "大甲区", + "大里区", + "大雅区", + "东区", + "丰原区", + "后里区", + "龙井区", + "南区", + "南屯区", + "清水区", + "三义乡", + "沙鹿区", + "神冈区", + "石冈区", + "潭子区", + "通宵镇", + "外埔区", + "乌日区", + "梧栖区", + "西区", + "西屯区", + "苑里镇", + "中区", + "太平区", + "雾峰区", + "东势镇", + "和平乡", + "新社乡" + ], + "台南市": [ + "安定区", + "安南区", + "安平区", + "北区", + "东区", + "永康区", + "归仁区", + "仁德区", + "关庙区", + "官田区", + "佳里区", + "六甲区", + "麻豆区", + "南区山", + "上区", + "善化区", + "西港区", + "西区", + "新市区", + "中区", + "新化区", + "新营区", + "左镇区", + "玉井区", + "南化区", + "楠西区", + "龙崎区", + "七股区", + "将军区", + "学甲区", + "北门区", + "后壁区", + "白河区", + "东山区", + "下营区", + "柳营区", + "盐水区", + "大内区" + ], + "高雄市": [ + "阿莲区", + "大寮区", + "大社区", + "大树区", + "凤山区", + "冈山区", + "鼓山区", + "湖内区", + "林园区", + "苓雅区", + "路竹区", + "楠梓区", + "鸟松区", + "旗津区", + "前金区", + "前镇区", + "桥头区", + "仁武区", + "三民区", + "小港区", + "新兴区", + "盐埕区", + "燕巢区", + "永安区", + "梓官区", + "左营区", + "田寮乡", + "六龟乡", + "内门乡", + "茂林乡", + "桃源乡", + "甲仙乡", + "弥陀乡", + "旗山镇", + "美浓镇", + "那玛夏乡", + "茄萣乡", + "杉林乡" + ], + "基隆市": [ + "七堵区", + "中山区", + "中正区", + "仁爱区", + "信义区", + "安乐区", + "暖暖区" + ], + "新竹市": [ + "东区", + "北区", + "香山区" + ], + "嘉义市": [ + "东区", + "西区" + ], + "桃园县": [ + "桃园市", + "中坜市", + "平镇市", + "八德市", + "大溪镇", + "大园乡", + "观音乡", + "龟山乡", + "复兴乡", + "龙潭乡", + "芦竹乡", + "新屋乡", + "杨梅市" + ], + "新竹县": [ + "竹北市", + "湖口乡", + "新丰乡", + "新埔镇", + "关西镇", + "芎林乡", + "竹东镇", + "峨眉乡", + "宝山乡", + "五峰乡", + "横山乡", + "北埔乡", + "尖石乡" + ], + "苗栗县": [ + "竹南镇", + "头份镇", + "三湾乡", + "后龙镇", + "通霄镇", + "苑里镇", + "苗栗市", + "造桥乡", + "头屋乡", + "公馆乡", + "铜锣乡", + "三义乡", + "西湖乡", + "南庄乡", + "狮潭乡", + "大湖乡", + "泰安乡", + "卓兰镇" + ], + "彰化县": [ + "北斗镇", + "草屯镇", + "大村乡", + "二水乡", + "芳苑乡", + "芬园乡", + "福兴乡", + "和美镇", + "花坛乡", + "鹿港镇", + "南投市", + "埤头乡", + "埔心乡", + "埔盐乡", + "社头乡", + "伸港乡", + "田尾乡", + "田中镇", + "溪湖镇", + "线西乡", + "秀水乡", + "永靖乡", + "员林镇", + "彰化市", + "二林镇", + "大城乡", + "竹塘乡", + "溪州乡" + ], + "南投县": [ + "埔里镇", + "竹山镇", + "集集镇", + "名间乡", + "鹿谷乡", + "中寮乡", + "鱼池乡", + "国姓乡", + "水里乡", + "信义乡", + "仁爱乡", + "南投巿", + "草屯镇", + "琉球乡" + ], + "云林县": [ + "大埤乡", + "土库镇", + "林内乡", + "莿桐乡", + "西螺镇", + "仑背乡", + "古坑乡", + "褒忠乡", + "东势乡", + "台西乡", + "麦寮乡", + "二仑乡", + "北港镇", + "水林乡", + "口湖乡", + "四湖乡", + "元长乡", + "斗六市", + "斗南镇", + "虎尾镇" + ], + "嘉义县": [ + "竹崎乡", + "番路乡", + "梅山乡", + "阿里山乡", + "东石乡", + "大埔乡", + "溪口乡", + "义竹乡", + "布袋镇", + "大林镇", + "六脚乡", + "鹿草乡", + "民雄乡", + "朴子市", + "水上乡", + "太保市", + "新港乡", + "中埔乡" + ], + "屏东县": [ + "屏东市", + "万丹乡", + "长治乡", + "内埔乡", + "潮州镇", + "三地门乡", + "来义乡", + "狮子乡", + "牡丹乡", + "高树乡", + "满州乡", + "万峦乡", + "春日乡", + "雾台乡", + "泰武乡", + "玛家乡", + "恒春镇", + "枋寮乡", + "东港镇", + "林边乡", + "枋山乡", + "里港乡", + "车城乡", + "盐埔乡", + "九如乡", + "新园乡", + "新埤乡", + "佳冬乡", + "竹田乡", + "南州乡", + "崁顶乡", + "麟洛乡" + ], + "宜兰县": [ + "头城镇", + "宜兰市", + "礁溪乡", + "壮围乡", + "五结乡", + "罗东镇", + "员山乡", + "南澳乡", + "冬山乡", + "大同乡", + "三星乡", + "苏澳镇" + ], + "花莲县": [ + "花莲巿", + "光复乡", + "玉里镇", + "新城乡", + "吉安乡", + "寿丰乡", + "凤林镇", + "丰滨乡", + "瑞穗乡", + "富里乡", + "秀林乡", + "万荣乡", + "卓溪乡" + ], + "台东县": [ + "台东巿", + "成功镇", + "关山镇", + "卑南乡", + "大武乡", + "太麻里乡", + "东河乡", + "长滨乡", + "鹿野乡", + "池上乡", + "延平乡", + "海端乡", + "达仁乡", + "金峰乡" + ], + "澎湖县": [ + "马公市", + "湖西乡", + "白沙乡", + "西屿乡", + "望安乡", + "七美乡" + ], + "金门县": [ + "金城镇", + "金湖镇", + "金沙镇", + "金宁乡", + "烈屿乡", + "乌丘乡" + ], + "连江县": [ + "南竿乡", + "北竿乡", + "莒光乡", + "东引乡" + ] + }, + "海外": { + "其它": [ + "其它" + ] + } +} diff --git a/spree_china_checkout/db/seeds/countries.rb b/spree_china_checkout/db/seeds/countries.rb new file mode 100644 index 00000000..89c7f0f0 --- /dev/null +++ b/spree_china_checkout/db/seeds/countries.rb @@ -0,0 +1,32 @@ +Spree::Country.connection.truncate :spree_countries +Spree::Country.connection.truncate :spree_states +Spree::Country.connection.truncate :spree_cities +Spree::Country.connection.truncate :spree_districts + +Spree::Country.create!({"name"=>"中国", "iso3"=>"CHN", "iso"=>"CN", "iso_name"=>"CHINA", "numcode"=>"156"}) +country = Spree::Country.find_by_iso("CN") +#Spree::Config[:default_country_id] = country.id +# load states.yml, cities.yml + +states = YAML::load(File.read( File.join(File.dirname(__FILE__),'states.yml'))) +states.each_pair{|key,state| + Spree::State.create!({id: state['id'], name: state["name"], abbr: state["abbr"], country: country}) +} + + +path = File.join(SpreeChinaCheckout::Engine.root,'db', 'seeds', 'areas.json') +json_string = File.read(path) +json = JSON.parse json_string + +# add cities and districts for provice +Spree::State.all.each{|state| + cities = json[state.name] + raise "missing cities for provice #{ state.name} " unless cities.present? + + cities.each{ |city_name, districts| + city = Spree::City.create!({ name: city_name, state: state}) + districts.each{|district| + Spree::District.create!({ name: district, city: city}) + } + } +} diff --git a/spree_china_checkout/db/seeds/roles.rb b/spree_china_checkout/db/seeds/roles.rb new file mode 100644 index 00000000..d12e30d4 --- /dev/null +++ b/spree_china_checkout/db/seeds/roles.rb @@ -0,0 +1,2 @@ +Spree::Role.create!(:name => "admin") +Spree::Role.create!(:name => "user") diff --git a/spree_china_checkout/db/seeds/states.yml b/spree_china_checkout/db/seeds/states.yml new file mode 100644 index 00000000..e8ba4433 --- /dev/null +++ b/spree_china_checkout/db/seeds/states.yml @@ -0,0 +1,186 @@ +# 北京市(京) 天津市(津) 上海市(沪) 重庆市(渝) +# 河北省(冀)山西省(晋)内蒙古自治区(内蒙古) +# 辽宁省(辽)吉林省(吉)黑龙江省(黑) +# 江苏省(苏) 浙江省(浙)安徽省(皖)福建(闽)江西省(赣)山东省(鲁) +# 河南省(豫)湖北省(鄂)湖南省(湘)广东省(粤)广西壮族自治区(桂)海南省(琼) +# 四川省(川、蜀)贵州省(黔、贵)云南省(滇、云)西藏自治区(藏) +# 陕西省(陕、秦)甘肃省(甘、陇)青海省(青)宁夏回族自治区(宁)新疆维吾尔自治区(新) +# 香港特别行政区(港) 澳门特别行政区(澳) 台湾省(台) +--- +states_001: + name: "北京市" + country_id: "41" + id: "1" + abbr: BJ +states_002: + name: "天津市" + country_id: "41" + id: "2" + abbr: TJ +states_003: + name: "上海市" + country_id: "41" + id: "3" + abbr: SH +states_004: + name: "重庆市" + country_id: "41" + id: "4" + abbr: CQ +# 河北省(冀)山西省(晋)内蒙古自治区(内蒙古) +states_005: + name: "河北省" + country_id: "41" + id: "5" + abbr: HB +states_006: + name: "山西省" + country_id: "41" + id: "6" + abbr: Jin +states_007: + name: "内蒙古自治区" + country_id: "41" + id: "7" + abbr: NMG +# 辽宁省(辽)吉林省(吉)黑龙江省(黑) +states_008: + name: "辽宁省" + country_id: "41" + id: "8" + abbr: LN +states_009: + name: "吉林省" + country_id: "41" + id: "9" + abbr: JL +states_010: + name: "黑龙江省" + country_id: "41" + id: "10" + abbr: HLJ +# 江苏省(苏) 浙江省(浙)安徽省(皖)福建(闽)江西省(赣)山东省(鲁) +states_011: + name: "江苏省" + country_id: "41" + id: "11" + abbr: JS +states_012: + name: "浙江省" + country_id: "41" + id: "12" + abbr: ZJ +states_013: + name: "安徽省" + country_id: "41" + id: "13" + abbr: AH +states_014: + name: "福建省" + country_id: "41" + id: "14" + abbr: FJ +states_015: + name: "江西省" + country_id: "41" + id: "15" + abbr: JX +states_016: + name: "山东省" + country_id: "41" + id: "16" + abbr: SD +# 河南省(豫)湖北省(鄂)湖南省(湘)广东省(粤)广西壮族自治区(桂)海南省(琼) +states_017: + name: "河南省" + country_id: "41" + id: "17" + abbr: HeNan +states_018: + name: "湖北省" + country_id: "41" + id: "18" + abbr: HuBei +states_019: + name: "湖南省" + country_id: "41" + id: "19" + abbr: HN +states_020: + name: "广东省" + country_id: "41" + id: "20" + abbr: GD +states_021: + name: "广西壮族自治区" + country_id: "41" + id: "21" + abbr: GX +states_022: + name: "海南省" + country_id: "41" + id: "22" + abbr: HaiNan +# 四川省(川、蜀)贵州省(黔、贵)云南省(滇、云)西藏自治区(藏) +states_023: + name: "四川省" + country_id: "41" + id: "23" + abbr: SC +states_024: + name: "贵州省" + country_id: "41" + id: "24" + abbr: GZ +states_025: + name: "云南省" + country_id: "41" + id: "25" + abbr: YN +states_026: + name: "西藏自治区" + country_id: "41" + id: "26" + abbr: XZ +# 陕西省(陕、秦)甘肃省(甘、陇)青海省(青)宁夏回族自治区(宁)新疆维吾尔自治区(新) +states_027: + name: "陕西省" + country_id: "41" + id: "27" + abbr: SX +states_028: + name: "甘肃省" + country_id: "41" + id: "28" + abbr: GS +states_029: + name: "青海省" + country_id: "41" + id: "29" + abbr: QH +states_030: + name: "宁夏回族自治区" + country_id: "41" + id: "30" + abbr: NX +states_031: + name: "新疆维吾尔自治区" + country_id: "41" + id: "31" + abbr: XJ +# 香港特别行政区(港) 澳门特别行政区(澳) 台湾省(台) +states_032: + name: "香港特别行政区" + country_id: "41" + id: "32" + abbr: HK +states_033: + name: "澳门特别行政区" + country_id: "41" + id: "33" + abbr: Macau +states_034: + name: "台湾" + country_id: "41" + id: "34" + abbr: TV diff --git a/spree_china_checkout/lib/spree_china_checkout/permitted_attributes_for_checkout.rb b/spree_china_checkout/lib/spree_china_checkout/permitted_attributes_for_checkout.rb index 33a57168..d0006f92 100644 --- a/spree_china_checkout/lib/spree_china_checkout/permitted_attributes_for_checkout.rb +++ b/spree_china_checkout/lib/spree_china_checkout/permitted_attributes_for_checkout.rb @@ -4,6 +4,6 @@ module PermittedAttributes mattr_reader *ATTRIBUTES_FOR_CHECKOUT @@city_attributes = [:name, :abbr] - @@address_attributes += [:city_name, :city_id] + @@address_attributes += [:city_id, :district_id] end -end \ No newline at end of file +end diff --git a/spree_china_checkout/lib/tasks/spree_china_checkout.rake b/spree_china_checkout/lib/tasks/spree_china_checkout.rake new file mode 100644 index 00000000..cd6355e9 --- /dev/null +++ b/spree_china_checkout/lib/tasks/spree_china_checkout.rake @@ -0,0 +1,7 @@ +namespace :spree_china_checkout do + desc "load china addresses, include provice/city/district" + task :reload_countries => :environment do + seed_path = File.join(SpreeChinaCheckout::Engine.root,'db', 'seeds', 'countries.rb') + load seed_path + end +end diff --git a/spree_china_checkout/spree_china_checkout.gemspec b/spree_china_checkout/spree_china_checkout.gemspec index 4cef19f0..939a212f 100644 --- a/spree_china_checkout/spree_china_checkout.gemspec +++ b/spree_china_checkout/spree_china_checkout.gemspec @@ -2,21 +2,20 @@ Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = 'spree_china_checkout' - s.version = '2.4.0' + s.version = '3.0.0' s.summary = 'spree china checkout' s.description = 'spree china checkout for spree_abc' - s.required_ruby_version = '>= 1.9.3' + s.required_ruby_version = '>= 2.1.0' s.author = 'qinghe' s.email = 'areq22@gmail.com' - s.homepage = 'http://www.dalianshops.com' + s.homepage = 'http://www.getstore.cn' #s.files = `git ls-files`.split("\n") #s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") s.require_path = 'lib' s.requirements << 'none' - - s.add_dependency 'spree_core', '~> 2.4.0' + s.add_dependency 'spree_core' s.add_development_dependency 'capybara', '~> 2.4' s.add_development_dependency 'coffee-rails' diff --git a/spree_comments/app/controllers/spree/admin/shipments_controller_decorator.rb b/spree_comments/app/controllers/spree/admin/shipments_controller_decorator.rb deleted file mode 100644 index 93cc1915..00000000 --- a/spree_comments/app/controllers/spree/admin/shipments_controller_decorator.rb +++ /dev/null @@ -1,6 +0,0 @@ -Spree::Api::ShipmentsController.class_eval do - def comments - shipment - @comment_types = Spree::CommentType.where(:applies_to => "Shipment") - end -end diff --git a/spree_comments/app/models/spree/order_decorator.rb b/spree_comments/app/models/spree/order_decorator.rb deleted file mode 100644 index 774cfb4a..00000000 --- a/spree_comments/app/models/spree/order_decorator.rb +++ /dev/null @@ -1,3 +0,0 @@ -Spree::Order.class_eval do - acts_as_commentable -end \ No newline at end of file diff --git a/spree_comments/app/models/spree/shipment_decorator.rb b/spree_comments/app/models/spree/shipment_decorator.rb deleted file mode 100644 index 2aa0a3bb..00000000 --- a/spree_comments/app/models/spree/shipment_decorator.rb +++ /dev/null @@ -1,3 +0,0 @@ -Spree::Shipment.class_eval do - acts_as_commentable -end \ No newline at end of file diff --git a/spree_comments/app/models/spree/site_decorator.rb b/spree_comments/app/models/spree/site_decorator.rb deleted file mode 100644 index 1b327bcb..00000000 --- a/spree_comments/app/models/spree/site_decorator.rb +++ /dev/null @@ -1,3 +0,0 @@ -Spree::Site.class_eval do - acts_as_commentable -end \ No newline at end of file diff --git a/spree_comments/app/models/spree/template_theme_decorator.rb b/spree_comments/app/models/spree/template_theme_decorator.rb deleted file mode 100644 index 8beb6b0f..00000000 --- a/spree_comments/app/models/spree/template_theme_decorator.rb +++ /dev/null @@ -1,3 +0,0 @@ -Spree::TemplateTheme.class_eval do - acts_as_commentable -end \ No newline at end of file diff --git a/spree_comments/app/overrides/add_comment_configuration.rb b/spree_comments/app/overrides/add_comment_configuration.rb deleted file mode 100644 index 7fc50e65..00000000 --- a/spree_comments/app/overrides/add_comment_configuration.rb +++ /dev/null @@ -1,5 +0,0 @@ -#Deface::Override.new(:virtual_path => "spree/admin/shared/_configuration_menu", -# :name => "converted_admin_configurations_menu_468573024", -# :insert_bottom => "[data-hook='admin_configurations_sidebar_menu']", -# :text => "<%= configurations_sidebar_menu_item t(:comment_types), admin_comment_types_path %>", -# :disabled => false) \ No newline at end of file diff --git a/spree_comments/app/overrides/add_comment_to_admin_orders_tabs.rb b/spree_comments/app/overrides/add_comment_to_admin_orders_tabs.rb deleted file mode 100644 index 3dcf7ade..00000000 --- a/spree_comments/app/overrides/add_comment_to_admin_orders_tabs.rb +++ /dev/null @@ -1,5 +0,0 @@ -#Deface::Override.new(:virtual_path => "spree/admin/shared/_order_tabs", -# :name => "converted_admin_order_tabs_472794197", -# :insert_bottom => "[data-hook='admin_order_tabs'], #admin_order_tabs[data-hook]", -# :partial => "spree/admin/orders/tab", -# :disabled => false) \ No newline at end of file diff --git a/spree_comments/app/views/spree/admin/comment_types/index.html.erb b/spree_comments/app/views/spree/admin/comment_types/index.html.erb deleted file mode 100644 index 9daf5051..00000000 --- a/spree_comments/app/views/spree/admin/comment_types/index.html.erb +++ /dev/null @@ -1,40 +0,0 @@ -<%= render :partial => 'spree/admin/shared/configuration_menu' %> - -<% content_for :page_title do %> - <%= Spree.t(:comment_types) %> -<% end %> - -<% content_for :page_actions do %> -
  • - <%= button_link_to Spree.t(:new_comment_type), new_object_url, :icon => 'icon-plus', :id => 'admin_new_comment_type_link' %> -
  • -<% end %> - - - - - - - - - - - - - - - - <% @comment_types.each do |comment_type| %> - - - - - - - <% end %> - -
    <%= Spree.t(:name) %><%= Spree.t(:applies_to) %>
    <%= comment_type.name %><%= comment_type.applies_to %> - <%= link_to_edit comment_type, :no_text => true %> - <%= link_to_delete comment_type, :no_text => true %> -
    - diff --git a/spree_comments/app/views/spree/admin/comment_types/new.html.erb b/spree_comments/app/views/spree/admin/comment_types/new.html.erb deleted file mode 100644 index 41c5f088..00000000 --- a/spree_comments/app/views/spree/admin/comment_types/new.html.erb +++ /dev/null @@ -1,22 +0,0 @@ -<%= render :partial => 'spree/admin/shared/configuration_menu' %> - -<% content_for :page_title do %> - <%= Spree.t(:new_comment_type) %> -<% end %> - -<% content_for :page_actions do %> -
  • - <%= button_link_to Spree.t(:back_to_comment_types_list), admin_comment_types_path, :icon => 'icon-arrow-left' %> -
  • -<% end %> - -<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @comment_type } %> - -<%= form_for(:comment_type, :url => collection_url) do |f| %> -
    - <%= render :partial => 'form', :locals => { :f => f } %> -
    - <%= button Spree.t(:create), 'icon-ok' %> -
    -
    -<% end %> diff --git a/spree_comments/db/migrate/20141202082639_create_comments.rb b/spree_comments/db/migrate/20141202082639_create_comments.rb deleted file mode 100644 index 4a145de4..00000000 --- a/spree_comments/db/migrate/20141202082639_create_comments.rb +++ /dev/null @@ -1,31 +0,0 @@ -class CreateComments < ActiveRecord::Migration - def self.up - create_table :spree_comments do |t| - t.string :title, :limit => 50, :default => "" - t.text :comment, :default => "" - t.references :commentable, :polymorphic => true - t.references :user - #for unlogged customer, we store email and cellphone for later touch - t.string :email, :limit => 50, :default => "" - t.string :cellphone, :limit => 50, :default => "" - t.integer :comment_type_id - t.timestamps - end - - add_index :spree_comments, :commentable_type - add_index :spree_comments, :commentable_id - add_index :spree_comments, :user_id - - create_table :spree_comment_types do |t| - t.string :name - t.string :applies_to - t.timestamps - end - - end - - def self.down - drop_table :spree_comments - drop_table :spree_comment_types - end -end diff --git a/spree_comments/spree_comments.gemspec b/spree_comments/spree_comments.gemspec index 61e9bdc0..e9f8b9d9 100644 --- a/spree_comments/spree_comments.gemspec +++ b/spree_comments/spree_comments.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = 'spree_comments' - s.version = '2.4.0' + s.version = '3.0.0' s.summary = 'Comments for orders and shipments' s.required_ruby_version = '>= 1.8.7' @@ -15,11 +15,9 @@ Gem::Specification.new do |s| s.require_path = 'lib' s.requirements << 'none' - s.add_dependency 'spree_api' - s.add_dependency 'spree_backend' - s.add_dependency 'spree_core', '>= 2.4.0' - s.add_dependency 'acts_as_commentable', '3.0.1' - + s.add_dependency 'spree_core' + s.add_dependency 'acts_as_commentable' + s.add_development_dependency 'capybara', '~> 2.4' s.add_development_dependency 'coffee-rails' s.add_development_dependency 'database_cleaner' @@ -30,4 +28,4 @@ Gem::Specification.new do |s| s.add_development_dependency 'selenium-webdriver' s.add_development_dependency 'simplecov' s.add_development_dependency 'sqlite3' -end \ No newline at end of file +end diff --git a/spree_essential_blog/app/assets/javascripts/admin/taxon_autocomplete_for_blog.js.erb b/spree_essential_blog/app/assets/javascripts/admin/taxon_autocomplete_for_blog.js.erb index 9895b6a4..6279cf5a 100644 --- a/spree_essential_blog/app/assets/javascripts/admin/taxon_autocomplete_for_blog.js.erb +++ b/spree_essential_blog/app/assets/javascripts/admin/taxon_autocomplete_for_blog.js.erb @@ -22,7 +22,8 @@ $(document).ready(function () { page: page, q: { name_cont: term - } + }, + token: Spree.api_key }; }, results: function (data, page) { @@ -42,4 +43,4 @@ $(document).ready(function () { } }); } -}); \ No newline at end of file +}); diff --git a/spree_essential_blog/app/assets/javascripts/store/spree_essential_blog.js b/spree_essential_blog/app/assets/javascripts/store/spree_essential_blog.js index d10fba7f..fa0a16ee 100644 --- a/spree_essential_blog/app/assets/javascripts/store/spree_essential_blog.js +++ b/spree_essential_blog/app/assets/javascripts/store/spree_essential_blog.js @@ -1 +1 @@ -//= require store/spree_frontend +//= require spree/frontend diff --git a/spree_essential_blog/app/controllers/pages_controller_decorator.rb b/spree_essential_blog/app/controllers/pages_controller_decorator.rb index 9e2a7bd2..71cadb57 100644 --- a/spree_essential_blog/app/controllers/pages_controller_decorator.rb +++ b/spree_essential_blog/app/controllers/pages_controller_decorator.rb @@ -1,5 +1,5 @@ if defined?(Spree::PagesController) Spree::PagesController.instance_eval do - helper 'spree/blogs/posts' - end + helper 'spree/posts' + end end diff --git a/spree_essential_blog/app/controllers/spree/admin/blogs_controller.rb b/spree_essential_blog/app/controllers/spree/admin/blogs_controller.rb new file mode 100644 index 00000000..ad371eb0 --- /dev/null +++ b/spree_essential_blog/app/controllers/spree/admin/blogs_controller.rb @@ -0,0 +1,20 @@ +class Spree::Admin::BlogsController < Spree::Admin::ResourceController + + def show + redirect_to admin_blogs_path + end + +private + + def find_resource + Spree::Blog.find_by_permalink!(params[:id]) + end + + def collection + params[:search] ||= {} + params[:search][:meta_sort] ||= "name.asc" + @search = Spree::Blog.search(params[:q]) + @collection = @search.result.page(params[:page]).per(Spree::Config[:admin_orders_per_page]) + end + +end diff --git a/spree_essential_blog/app/controllers/spree/admin/disqus_settings_controller.rb b/spree_essential_blog/app/controllers/spree/admin/disqus_settings_controller.rb new file mode 100644 index 00000000..6cfa3456 --- /dev/null +++ b/spree_essential_blog/app/controllers/spree/admin/disqus_settings_controller.rb @@ -0,0 +1,24 @@ +class Spree::Admin::DisqusSettingsController < Spree::Admin::BaseController + + def show + @preferences = ['disqus_shortname'] + @config = Spree::BlogConfiguration.new + end + + def edit + @preferences = ['disqus_shortname'] + @config = Spree::BlogConfiguration.new + end + + def update + config = Spree::BlogConfiguration.new + + params.each do |name, value| + next unless config.has_preference? name + config[name] = value + end + + redirect_to admin_disqus_settings_path + end + +end diff --git a/spree_essential_blog/app/controllers/spree/admin/post_categories_controller.rb b/spree_essential_blog/app/controllers/spree/admin/post_categories_controller.rb new file mode 100644 index 00000000..e37c38f4 --- /dev/null +++ b/spree_essential_blog/app/controllers/spree/admin/post_categories_controller.rb @@ -0,0 +1,16 @@ +class Spree::Admin::PostCategoriesController < Spree::Admin::ResourceController + + before_action :load_data + + private + + def location_after_save + admin_post_categories_url(@post) + end + + def load_data + @post = Spree::Post.find_by_path(params[:post_id]) + @post_categories = Spree::PostCategory.all + end + +end diff --git a/spree_essential_blog/app/controllers/spree/admin/post_files_controller.rb b/spree_essential_blog/app/controllers/spree/admin/post_files_controller.rb new file mode 100644 index 00000000..17348763 --- /dev/null +++ b/spree_essential_blog/app/controllers/spree/admin/post_files_controller.rb @@ -0,0 +1,27 @@ +class Spree::Admin::PostFilesController < Spree::Admin::ResourceController + + before_action :load_data + + create.before :set_viewable + update.before :set_viewable + destroy.before :destroy_before + + private + + def location_after_save + admin_post_files_url(@post) + end + + def load_data + @post = Spree::Post.friendly.find(params[:post_id]) + end + + def set_viewable + @post_file.viewable = @post + end + + def destroy_before + @viewable = @post_file.viewable + end + +end diff --git a/spree_essential_blog/app/controllers/spree/admin/post_products_controller.rb b/spree_essential_blog/app/controllers/spree/admin/post_products_controller.rb new file mode 100644 index 00000000..0a39db8c --- /dev/null +++ b/spree_essential_blog/app/controllers/spree/admin/post_products_controller.rb @@ -0,0 +1,25 @@ +class Spree::Admin::PostProductsController < Spree::Admin::BaseController + + before_action :load_data + + def create + position = @post.products.count + @product = Spree::Variant.find(params[:variant_id]).product + Spree::PostProduct.create(:post_id => @post.id, :product_id => @product.id, :position => position) + render :partial => "spree/admin/post_products/related_products_table", :locals => { :post => @post }, :layout => false + end + + def destroy + @related = Spree::PostProduct.find(params[:id]) + if @related.destroy + render_js_for_destroy + end + end + + private + + def load_data + @post = Spree::Post.find_by_path(params[:post_id]) + end + +end diff --git a/spree_essential_blog/app/controllers/spree/admin/posts_controller.rb b/spree_essential_blog/app/controllers/spree/admin/posts_controller.rb new file mode 100644 index 00000000..70cbfe07 --- /dev/null +++ b/spree_essential_blog/app/controllers/spree/admin/posts_controller.rb @@ -0,0 +1,41 @@ + +class Spree::Admin::PostsController < Spree::Admin::ResourceController + + update.before :set_category_ids + + def index + session[:return_to] = request.url + respond_with(@collection) + end + + def new + @post = Spree::Post.new + @post.posted_at ||= Time.now + end + +private + + def set_category_ids + if params[:post] && params[:post][:taxon_ids].present? + params[:post][:taxon_ids] = params[:post][:taxon_ids].split(',') + end + end + + def location_after_save + #in this way keep current page of posts after save. + admin_posts_url + end + + def find_resource + Spree::Post.friendly.find(params[:id]) + end + + def collection + return @collection if @collection.present? + params[:search] ||= {} + params[:search][:meta_sort] ||= "posted_at.desc" + @search = Spree::Post.search(params[:q]) + @collection = @search.result.page(params[:page]).per( params[:per_page] || Spree::Config[:admin_orders_per_page]) + end + +end diff --git a/spree_essential_blog/app/controllers/spree/blogs/admin/blogs_controller.rb b/spree_essential_blog/app/controllers/spree/blogs/admin/blogs_controller.rb deleted file mode 100644 index 3607e203..00000000 --- a/spree_essential_blog/app/controllers/spree/blogs/admin/blogs_controller.rb +++ /dev/null @@ -1,20 +0,0 @@ -class Spree::Blogs::Admin::BlogsController < Spree::Admin::ResourceController - - def show - redirect_to admin_blogs_path - end - -private - - def find_resource - Spree::Blog.find_by_permalink!(params[:id]) - end - - def collection - params[:search] ||= {} - params[:search][:meta_sort] ||= "name.asc" - @search = Spree::Blog.search(params[:q]) - @collection = @search.result.page(params[:page]).per(Spree::Config[:orders_per_page]) - end - -end diff --git a/spree_essential_blog/app/controllers/spree/blogs/admin/disqus_settings_controller.rb b/spree_essential_blog/app/controllers/spree/blogs/admin/disqus_settings_controller.rb deleted file mode 100644 index 89dd9293..00000000 --- a/spree_essential_blog/app/controllers/spree/blogs/admin/disqus_settings_controller.rb +++ /dev/null @@ -1,24 +0,0 @@ -class Spree::Blogs::Admin::DisqusSettingsController < Spree::Admin::BaseController - - def show - @preferences = ['disqus_shortname'] - @config = Spree::BlogConfiguration.new - end - - def edit - @preferences = ['disqus_shortname'] - @config = Spree::BlogConfiguration.new - end - - def update - config = Spree::BlogConfiguration.new - - params.each do |name, value| - next unless config.has_preference? name - config[name] = value - end - - redirect_to admin_disqus_settings_path - end - -end diff --git a/spree_essential_blog/app/controllers/spree/blogs/admin/post_categories_controller.rb b/spree_essential_blog/app/controllers/spree/blogs/admin/post_categories_controller.rb deleted file mode 100644 index 4bc9ceae..00000000 --- a/spree_essential_blog/app/controllers/spree/blogs/admin/post_categories_controller.rb +++ /dev/null @@ -1,16 +0,0 @@ -class Spree::Blogs::Admin::PostCategoriesController < Spree::Admin::ResourceController - - before_filter :load_data - - private - - def location_after_save - admin_post_categories_url(@post) - end - - def load_data - @post = Spree::Post.find_by_path(params[:post_id]) - @post_categories = Spree::PostCategory.all - end - -end diff --git a/spree_essential_blog/app/controllers/spree/blogs/admin/post_images_controller.rb b/spree_essential_blog/app/controllers/spree/blogs/admin/post_images_controller.rb deleted file mode 100644 index 683c7c73..00000000 --- a/spree_essential_blog/app/controllers/spree/blogs/admin/post_images_controller.rb +++ /dev/null @@ -1,37 +0,0 @@ -class Spree::Blogs::Admin::PostImagesController < Spree::Admin::ResourceController - - before_filter :load_data - - create.before :set_viewable - update.before :set_viewable - destroy.before :destroy_before - - def update_positions - params[:positions].each do |id, index| - Spree::PostImage.update_all(['position=?', index], ['id=?', id]) - end - - respond_to do |format| - format.js { render :text => 'Ok' } - end - end - - private - - def location_after_save - admin_post_images_url(@post) - end - - def load_data - @post = Spree::Post.find_by_path(params[:post_id]) - end - - def set_viewable - @post_image.viewable = @post - end - - def destroy_before - @viewable = @post_image.viewable - end - -end \ No newline at end of file diff --git a/spree_essential_blog/app/controllers/spree/blogs/admin/post_products_controller.rb b/spree_essential_blog/app/controllers/spree/blogs/admin/post_products_controller.rb deleted file mode 100644 index 14b45757..00000000 --- a/spree_essential_blog/app/controllers/spree/blogs/admin/post_products_controller.rb +++ /dev/null @@ -1,25 +0,0 @@ -class Spree::Blogs::Admin::PostProductsController < Spree::Admin::BaseController - - before_filter :load_data - - def create - position = @post.products.count - @product = Spree::Variant.find(params[:variant_id]).product - Spree::PostProduct.create(:post_id => @post.id, :product_id => @product.id, :position => position) - render :partial => "spree/blogs/admin/post_products/related_products_table", :locals => { :post => @post }, :layout => false - end - - def destroy - @related = Spree::PostProduct.find(params[:id]) - if @related.destroy - render_js_for_destroy - end - end - - private - - def load_data - @post = Spree::Post.find_by_path(params[:post_id]) - end - -end \ No newline at end of file diff --git a/spree_essential_blog/app/controllers/spree/blogs/admin/posts_controller.rb b/spree_essential_blog/app/controllers/spree/blogs/admin/posts_controller.rb deleted file mode 100644 index c4bd3ac0..00000000 --- a/spree_essential_blog/app/controllers/spree/blogs/admin/posts_controller.rb +++ /dev/null @@ -1,33 +0,0 @@ -class Spree::Blogs::Admin::PostsController < Spree::Admin::ResourceController - - update.before :set_category_ids - - def new - @post = Spree::Post.new - @post.posted_at ||= Time.now - end - -private - - def set_category_ids - if params[:post] && params[:post][:taxon_ids].present? - params[:post][:taxon_ids] = params[:post][:taxon_ids].split(',') - end - end - - def location_after_save - admin_posts_url - end - - def find_resource - @object ||= Spree::Post.find_by_permalink!(params[:id]) - end - - def collection - params[:search] ||= {} - params[:search][:meta_sort] ||= "posted_at.desc" - @search = Spree::Post.search(params[:q]) - @collection = @search.result.page(params[:page]).per(Spree::Config[:orders_per_page]) - end - -end diff --git a/spree_essential_blog/app/controllers/spree/blogs/post_categories_controller.rb b/spree_essential_blog/app/controllers/spree/blogs/post_categories_controller.rb deleted file mode 100644 index 44a3e667..00000000 --- a/spree_essential_blog/app/controllers/spree/blogs/post_categories_controller.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Spree::Blogs::PostCategoriesController < Spree::BaseController - - include SpreeEssentialBlog::PostsControllerHelper - - before_filter :get_sidebar, :only => [:index, :search, :show] - - def show - @category = Spree::PostCategory.find_by_permalink(params[:id]) - @posts = @category.posts.live - @posts = @posts.page(params[:page]).per(Spree::Post.per_page) - end - -end diff --git a/spree_essential_blog/app/controllers/spree/blogs/posts_controller.rb b/spree_essential_blog/app/controllers/spree/blogs/posts_controller.rb deleted file mode 100644 index 03cf1ae3..00000000 --- a/spree_essential_blog/app/controllers/spree/blogs/posts_controller.rb +++ /dev/null @@ -1,51 +0,0 @@ -class Spree::Blogs::PostsController < Spree::BaseController - - include SpreeEssentialBlog::PostsControllerHelper - - helper "spree/products" - - before_filter :get_sidebar, :only => [:index, :search, :show] - - def index - @posts_by_month = default_scope.limit(50).group_by { |post| post.posted_at.strftime("%B %Y") } - scope = default_scope - if params[:year].present? - year = params[:year].to_i - month = 1 - day = 1 - if has_month = params[:month].present? - if has_day = params[:day].present? - day = params[:day].to_i - end - month = params[:month].to_i - end - start = Date.new(year, month, day) - stop = start + 1.year - if has_month - stop = start + 1.month - if has_day - stop = start + 1.day - end - end - scope = scope.where("posted_at >= ? AND posted_at <= ?", start, stop) - end - @posts = scope.page(params[:page]).per(Spree::Post.per_page) - end - - def search - query = params[:query].gsub(/%46/, '.') - @posts = default_scope.tagged_with(query).page(params[:page]).per(Spree::Post.per_page) - get_tags - render :template => 'spree/blogs/posts/index' - end - - def show - @post = default_scope.includes(:tags, :images, :products).find_by_path(params[:id]) rescue nil - return redirect_to archive_posts_path unless @post - end - - def archive - @posts = default_scope.all - end - -end diff --git a/spree_essential_blog/app/controllers/spree/post_categories_controller.rb b/spree_essential_blog/app/controllers/spree/post_categories_controller.rb new file mode 100644 index 00000000..01eed819 --- /dev/null +++ b/spree_essential_blog/app/controllers/spree/post_categories_controller.rb @@ -0,0 +1,13 @@ +class Spree::PostCategoriesController < Spree::BaseController + + include SpreeEssentialBlog::PostsControllerHelper + + before_action :get_sidebar, :only => [:index, :search, :show] + + def show + @category = Spree::PostCategory.find_by_permalink(params[:id]) + @posts = @category.posts.live + @posts = @posts.page(params[:page]).per(Spree::Post.per_page) + end + +end diff --git a/spree_essential_blog/app/controllers/spree/posts_controller.rb b/spree_essential_blog/app/controllers/spree/posts_controller.rb new file mode 100644 index 00000000..2ea4603b --- /dev/null +++ b/spree_essential_blog/app/controllers/spree/posts_controller.rb @@ -0,0 +1,51 @@ +class Spree::PostsController < Spree::BaseController + + include SpreeEssentialBlog::PostsControllerHelper + + helper "spree/products" + + before_action :get_sidebar, :only => [:index, :search, :show] + + def index + @posts_by_month = default_scope.limit(50).group_by { |post| post.posted_at.strftime("%B %Y") } + scope = default_scope + if params[:year].present? + year = params[:year].to_i + month = 1 + day = 1 + if has_month = params[:month].present? + if has_day = params[:day].present? + day = params[:day].to_i + end + month = params[:month].to_i + end + start = Date.new(year, month, day) + stop = start + 1.year + if has_month + stop = start + 1.month + if has_day + stop = start + 1.day + end + end + scope = scope.where("posted_at >= ? AND posted_at <= ?", start, stop) + end + @posts = scope.page(params[:page]).per(Spree::Post.per_page) + end + + def search + query = params[:query].gsub(/%46/, '.') + @posts = default_scope.tagged_with(query).page(params[:page]).per(Spree::Post.per_page) + get_tags + render :template => 'spree/posts/index' + end + + def show + @post = default_scope.includes(:tags, :images, :products).find_by_path(params[:id]) rescue nil + return redirect_to archive_posts_path unless @post + end + + def archive + @posts = default_scope.all + end + +end diff --git a/spree_essential_blog/app/helpers/spree/admin/spree_essentials_helper.rb b/spree_essential_blog/app/helpers/spree/admin/spree_essentials_helper.rb index 5c921c2a..7d80c9ec 100644 --- a/spree_essential_blog/app/helpers/spree/admin/spree_essentials_helper.rb +++ b/spree_essential_blog/app/helpers/spree/admin/spree_essentials_helper.rb @@ -10,6 +10,16 @@ def contents_tab end end + def mini_cover( post ) + options = {:alt=> 'post mini image'} + if post.cover.present? + image_tag post.cover.url(:mini), options + else + image_tag "noimage/mini.png", options + end + + end + private def extension_routes diff --git a/spree_essential_blog/app/helpers/spree/blogs/posts_helper.rb b/spree_essential_blog/app/helpers/spree/blogs/posts_helper.rb deleted file mode 100644 index 2ed8e9c3..00000000 --- a/spree_essential_blog/app/helpers/spree/blogs/posts_helper.rb +++ /dev/null @@ -1,20 +0,0 @@ -module Spree::Blogs::PostsHelper - - def post_seo_path(blog, post) - spree.full_post_path(blog, post.year, post.month, post.day, post.to_param) - end - - def post_seo_url(blog, post) - spree.full_post_url(blog, post.year, post.month, post.day, post.to_param) - end - - def post_rss(post) - output = [] - post.images.each do |image| - output << image_tag(image.attachment.url, :alt => image.alt) - end - output << post.rendered_body - output.join("\n").html_safe - end - -end diff --git a/spree_essential_blog/app/helpers/spree/posts_helper.rb b/spree_essential_blog/app/helpers/spree/posts_helper.rb new file mode 100644 index 00000000..57a41600 --- /dev/null +++ b/spree_essential_blog/app/helpers/spree/posts_helper.rb @@ -0,0 +1,20 @@ +module Spree::PostsHelper + + def post_seo_path(blog, post) + spree.full_post_path(blog, post.year, post.month, post.day, post.to_param) + end + + def post_seo_url(blog, post) + spree.full_post_url(blog, post.year, post.month, post.day, post.to_param) + end + + def post_rss(post) + output = [] + post.images.each do |image| + output << image_tag(image.attachment.url, :alt => image.alt) + end + output << post.rendered_body + output.join("\n").html_safe + end + +end diff --git a/spree_essential_blog/app/models/decorators/taxon_has_many_posts_decorator.rb b/spree_essential_blog/app/models/decorators/taxon_has_many_posts_decorator.rb new file mode 100644 index 00000000..37373553 --- /dev/null +++ b/spree_essential_blog/app/models/decorators/taxon_has_many_posts_decorator.rb @@ -0,0 +1,4 @@ +Spree::Taxon.class_eval do + has_many :post_classifications, dependent: :delete_all, inverse_of: :post + has_many :posts, through: :post_classifications +end diff --git a/spree_essential_blog/app/models/spree/blog.rb b/spree_essential_blog/app/models/spree/blog.rb index 9b55422a..5b7c6a73 100644 --- a/spree_essential_blog/app/models/spree/blog.rb +++ b/spree_essential_blog/app/models/spree/blog.rb @@ -3,10 +3,10 @@ class Spree::Blog < ActiveRecord::Base #attr_accessible :name, :permalink has_many :posts, :class_name => "Spree::Post", :dependent => :destroy - has_many :categories, :through => :posts, :source => :post_categories, :uniq => true + has_many :categories, :through => :posts, :source => :post_categories validates :name, :presence => true - validates :permalink, :uniqueness => true, :format => { :with => /^[a-z0-9\-\_\/]+$/i }, :length => { :within => 3..40 } + validates :permalink, :uniqueness => true, :format => { :with => /\A[a-z0-9\-\_\/]+\z/i }, :length => { :within => 3..40 } before_validation :normalize_permalink diff --git a/spree_essential_blog/app/models/spree/post.rb b/spree_essential_blog/app/models/spree/post.rb index 5f2655dd..2764cb18 100644 --- a/spree_essential_blog/app/models/spree/post.rb +++ b/spree_essential_blog/app/models/spree/post.rb @@ -1,39 +1,53 @@ module Spree class Post < ActiveRecord::Base - #attr_accessible :title, :cover, :teaser, :body, :posted_at, :author, :live, :tag_list, :taxon_ids, :product_ids_string - + extend FriendlyId + friendly_id :slug_candidates, :use => :slugged + acts_as_taggable - - # for flash messages + # for flash messages alias_attribute :name, :title - - has_and_belongs_to_many :taxons, :join_table => "spree_posts_taxons", :class_name => "Spree::Taxon" + + has_many :post_classifications, dependent: :delete_all, inverse_of: :post + has_many :taxons, through: :post_classifications + #has_and_belongs_to_many :taxons, :join_table => "spree_posts_taxons", :class_name => "Spree::Taxon" alias_attribute :categories, :taxons - + #belongs_to :blog, :class_name => "Spree::Taxon" #has_many :taxons, :dependent => :destroy has_many :products, :through => :post_products - + has_many :files, :as => :viewable, :class_name => "Spree::PostFile", :dependent => :destroy + #validates :blog_id, :title, :presence => true - validates :permalink, :presence => true, :uniqueness =>{ :scope=>:site_id }, :if => proc{ |record| !record.title.blank? } + #validates :permalink, :presence => true, :uniqueness =>{ :scope=>:site_id }, :if => proc{ |record| !record.title.blank? } + validates :slug, length: { minimum: 3 } + validates :body, :presence => true validates :posted_at, :datetime => true + #has_attached_file :cover, + # styles: { small: '180x120>', normal: '280x190>', big: '670x370>'}, + # default_style: :normal, + # url: '/spree/posts/:id/:style/:basename.:extension', + # path: ':rails_root/public/spree/posts/:id/:style/:basename.:extension', + # default_url: '/assets/default_post.png' has_attached_file :cover, - styles: { small: '180x120>', normal: '280x190>', big: '670x370>'}, - default_style: :normal, - url: '/spree/posts/:id/:style/:basename.:extension', - path: ':rails_root/public/spree/posts/:id/:style/:basename.:extension', + styles: { :mini => '60x60>', small: '180x120>', medium: '280x190>', large: '670x370>'}, + default_style: :mini, + url: '/shops/:rails_env/:site/posts/:id/:basename_:style.:extension', + path: ':rails_root/public/shops/:rails_env/:site/posts/:id/:basename_:style.:extension', default_url: '/assets/default_post.png' - + + validates_attachment :cover, + content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] } + scope :ordered, -> { order("posted_at DESC") } scope :future, -> { where("posted_at > ?", Time.now).order("posted_at ASC") } scope :past, -> { where("posted_at <= ?", Time.now).ordered } scope :live, -> { where(:live => true ) } - - make_permalink - + + #make_permalink + # add search related cattr_accessor :searcher_class do SpreeEssentialBlog::Search @@ -41,7 +55,7 @@ class Post < ActiveRecord::Base cattr_accessor :search_scopes do [] end - + def self.add_search_scope(name, &block) self.singleton_class.send(:define_method, name.to_sym, &block) search_scopes << name.to_sym @@ -54,56 +68,74 @@ def self.add_search_scope(name, &block) where( Taxon.table_name => { :id => taxon.self_and_descendants.pluck(:id) }) ) end - # end search - + # end search + # Creates date-part accessors for the posted_at timestamp for grouping purposes. %w(day month year).each do |method| define_method method do self.posted_at.send(method) end end - - # all post belongs to taxon which context is blog, in this way, we cuold list all post of website. ex. page blogs list recent posts + + # all post belongs to taxon which context is blog, in this way, we cuold list all post of website. ex. page blogs list recent posts def taxon - + end - + alias_method :blog, :taxon - + + def summary( truncate_at=100) + #copy from Action View Sanitize Helpers + Rails::Html::FullSanitizer.new.sanitize( body ).truncate( truncate_at ) + end + def rendered_preview preview = body.split("")[0] render(preview) end - + def rendered_body render(body.gsub("", "")) end - + def preview_image - images.first if has_images? + images.first if has_images? end - + def has_images? images && !images.empty? end - - + + def live? live && live == true end - + def product_ids_string product_ids.join(',') end - + def product_ids_string=(s) self.product_ids = s.to_s.split(',').map(&:strip) end - + def to_param - permalink.present? ? permalink : (permalink_was || title.to_s.to_url) + slug + end + + def slug_candidates + [ + :title_to_url, + [:title_to_url, :site_id], + ] + end + + # make title as slug candidate, + # "女性穿内衣的6大误区".to_url => "nu-xing-chuan-nei-yi-de-6da-wu-qu" + def title_to_url + title.to_url end end - -end \ No newline at end of file + +end diff --git a/spree_essential_blog/app/models/spree/post_classification.rb b/spree_essential_blog/app/models/spree/post_classification.rb index a532c2bf..d5c4777a 100644 --- a/spree_essential_blog/app/models/spree/post_classification.rb +++ b/spree_essential_blog/app/models/spree/post_classification.rb @@ -2,8 +2,9 @@ module Spree class PostClassification < ActiveRecord::Base self.table_name = 'spree_posts_taxons' - belongs_to :post, class_name: "Spree::Post" - belongs_to :taxon, class_name: "Spree::Taxon" + acts_as_list scope: :taxon + belongs_to :post, class_name: "Spree::Post", inverse_of: :post_classifications, touch: true + belongs_to :taxon, class_name: "Spree::Taxon", touch: true # For #3494 validates_uniqueness_of :taxon_id, :scope => :post_id, :message => :already_linked diff --git a/spree_essential_blog/app/models/spree/post_file.rb b/spree_essential_blog/app/models/spree/post_file.rb new file mode 100644 index 00000000..e91c127d --- /dev/null +++ b/spree_essential_blog/app/models/spree/post_file.rb @@ -0,0 +1,17 @@ +# a post could have several attachments +class Spree::PostFile < Spree::Asset + + #attr_accessible :alt, :attachment + + has_attached_file :attachment, + :url => "/shops/:rails_env/:class/:id/:filename", + :path => ":rails_root/public/shops/:rails_env/:class/:id/:filename" + + validates_attachment :attachment, presence: true, + content_type: { content_type: %w(image/jpeg image/gif image/png text/plain application/vnd.ms-powerpoint application/msword aplication/zip application/pdf) }, + size: { in: 0..20.megabytes } + + def url_thumb + @url_thumb ||= Ckeditor::Utils.filethumb(attachment_file_name) + end +end diff --git a/spree_essential_blog/app/models/spree/post_image.rb b/spree_essential_blog/app/models/spree/post_image.rb index 8444d09a..9604856c 100644 --- a/spree_essential_blog/app/models/spree/post_image.rb +++ b/spree_essential_blog/app/models/spree/post_image.rb @@ -1,23 +1,14 @@ +# a post could have several attachments class Spree::PostImage < Spree::Asset #attr_accessible :alt, :attachment - validates_attachment_presence :attachment - has_attached_file :attachment, - :styles => Proc.new{ |clip| clip.instance.attachment_sizes }, - :default_style => :medium, - :url => '/spree/posts/:id/:style/:basename.:extension', - :path => ':rails_root/public/spree/posts/:id/:style/:basename.:extension' + :url => '/shops/:rails_env/:site/:class/:id/:basename_:style.:extension', + :path => ':rails_root/public/shops/:rails_env/:site/:class/:id/:basename_:style.:extension' + validates_attachment :attachment, + :presence => true, + :content_type => { :content_type => %w(image/jpeg image/jpg image/png image/gif) } + - def image_content? - attachment_content_type.to_s.match(/\/(jpeg|png|gif|tiff|x-photoshop)/) - end - - def attachment_sizes - hash = {} - hash.merge!(:mini => '48x48>', :small => '150x150>', :medium => '600x600>', :large => '950x700>') if image_content? - hash - end - end diff --git a/spree_essential_blog/app/overrides/spree_essential_blog.rb b/spree_essential_blog/app/overrides/spree_essential_blog.rb deleted file mode 100644 index 85567522..00000000 --- a/spree_essential_blog/app/overrides/spree_essential_blog.rb +++ /dev/null @@ -1,5 +0,0 @@ -Deface::Override.new(:virtual_path => "spree/admin/configurations/index", - :name => "blog_disqus_admin_configurations_menu", - :insert_bottom => "[data-hook='admin_configurations_menu'], #admin_configurations_menu[data-hook]", - :partial => "spree/blogs/admin/shared/blog_config", - :disabled => false) diff --git a/spree_essential_blog/app/views/spree/blogs/admin/blogs/_form.html.erb b/spree_essential_blog/app/views/spree/admin/blogs/_form.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/admin/blogs/_form.html.erb rename to spree_essential_blog/app/views/spree/admin/blogs/_form.html.erb diff --git a/spree_essential_blog/app/views/spree/blogs/admin/blogs/edit.html.erb b/spree_essential_blog/app/views/spree/admin/blogs/edit.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/admin/blogs/edit.html.erb rename to spree_essential_blog/app/views/spree/admin/blogs/edit.html.erb diff --git a/spree_essential_blog/app/views/spree/blogs/admin/blogs/index.html.erb b/spree_essential_blog/app/views/spree/admin/blogs/index.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/admin/blogs/index.html.erb rename to spree_essential_blog/app/views/spree/admin/blogs/index.html.erb diff --git a/spree_essential_blog/app/views/spree/blogs/admin/blogs/new.html.erb b/spree_essential_blog/app/views/spree/admin/blogs/new.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/admin/blogs/new.html.erb rename to spree_essential_blog/app/views/spree/admin/blogs/new.html.erb diff --git a/spree_essential_blog/app/views/spree/admin/disqus_settings/edit.html.erb b/spree_essential_blog/app/views/spree/admin/disqus_settings/edit.html.erb new file mode 100644 index 00000000..b7100d6a --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/disqus_settings/edit.html.erb @@ -0,0 +1,19 @@ +<%= render :partial => 'spree/admin/shared/configuration_menu' %> + +

    <%= t('spree.blogs.settings.disqus') %>

    + +<%= form_tag admin_disqus_settings_path, :method => :put do |form| %> + <% @preferences.each do |key| + type = @config.preference_type(key) %> + <%= label_tag(key, t("spree.blogs.settings.#{key}") + ': ') + tag(:br) if type != :boolean %> + <%= preference_field_tag(key, @config[key], :type => type) %> + <%= label_tag(key, t(key)) + tag(:br) if type == :boolean %> + <% end %> + +

    + <%= button t('update') %> + <%= t("or") %> <%= link_to t("cancel"), admin_disqus_settings_url %> +

    +<% end %> + +<%= render "spree/admin/shared/select_configuration_tab" unless request.xhr? %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/disqus_settings/show.html.erb b/spree_essential_blog/app/views/spree/admin/disqus_settings/show.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/admin/disqus_settings/show.html.erb rename to spree_essential_blog/app/views/spree/admin/disqus_settings/show.html.erb diff --git a/spree_essential_blog/app/views/spree/blogs/admin/post_categories/_form.html.erb b/spree_essential_blog/app/views/spree/admin/post_categories/_form.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/admin/post_categories/_form.html.erb rename to spree_essential_blog/app/views/spree/admin/post_categories/_form.html.erb diff --git a/spree_essential_blog/app/views/spree/admin/post_categories/edit.html.erb b/spree_essential_blog/app/views/spree/admin/post_categories/edit.html.erb new file mode 100644 index 00000000..a7f61023 --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/post_categories/edit.html.erb @@ -0,0 +1,15 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Categories"} %> + +

    <%= t(".edit_category") %>

    + +<% if @post_category.try(:errors).present? %> + <%= render 'spree/shared/error_messages', :target => @post_category %> +<% end %> + +<%= form_for([:admin, @post, @post_category], :url => admin_post_category_path(@post, @post_category.id)) do |form| %> + <%= render "form", :form => form %> +

    + <%= hidden_field_tag :post_id, @post.path, :class => 'hidden' %> + <%= button t("update") %> +

    +<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/post_categories/index.html.erb b/spree_essential_blog/app/views/spree/admin/post_categories/index.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/admin/post_categories/index.html.erb rename to spree_essential_blog/app/views/spree/admin/post_categories/index.html.erb diff --git a/spree_essential_blog/app/views/spree/admin/post_categories/new.html.erb b/spree_essential_blog/app/views/spree/admin/post_categories/new.html.erb new file mode 100644 index 00000000..9ebdcee1 --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/post_categories/new.html.erb @@ -0,0 +1,14 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Categories"} unless request.xhr? %> + +

    <%= t("new_category") %>

    + +<% if @post_category.try(:errors).present? %> + <%= render 'spree/shared/error_messages', :target => @post_category %> +<% end %> + +<%= form_for(@post_category, :url => admin_post_categories_path(@post)) do |form| %> + <%= render "form", :form => form %> +

    + <%= button t("create") %> +

    +<% end %> diff --git a/spree_essential_blog/app/views/spree/admin/post_files/_form.html.erb b/spree_essential_blog/app/views/spree/admin/post_files/_form.html.erb new file mode 100644 index 00000000..ca8fa09b --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/post_files/_form.html.erb @@ -0,0 +1,18 @@ + +
    +
    +
    + <%= f.label :attachment, Spree.t(:filename) %>
    + <%= f.file_field :attachment %> +
    +
    + +
    +
    + <%= f.label :alt, Spree.t(:alt_text) %>
    + <%= f.text_area :alt, rows: 4, class: 'form-control' %> +
    +
    +
    + +
    diff --git a/spree_essential_blog/app/views/spree/admin/post_files/edit.html.erb b/spree_essential_blog/app/views/spree/admin/post_files/edit.html.erb new file mode 100644 index 00000000..30ca4404 --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/post_files/edit.html.erb @@ -0,0 +1,26 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Post Files"} %> + +<% if @post_file.try(:errors).present? %> + <%= render 'spree/shared/error_messages', :target => @post_file %> +<% end %> + +<%= form_for([:admin, @post.id, @post_file], :url => admin_post_file_url(@post, @post_file), :html => { :multipart => true }) do |f| %> + +
    + <%= @post_file.attachment_file_name%> +
    + <%= f.label Spree.t(:thumbnail) %>
    + <%= link_to image_tag(@post_file.url_thumb), @post_file.attachment.url() %> +
    + +
    + <%= render :partial => 'form', :locals => { :f => f } %> +
    +
    +
    + <%= button Spree.t('actions.update'), 'refresh' %> + <%= Spree.t(:or) %> + <%= link_to Spree.t('actions.cancel'), admin_product_images_url(@post), :id => 'cancel_link', :class => 'button remove' %> +
    +
    +<% end %> diff --git a/spree_essential_blog/app/views/spree/admin/post_files/index.html.erb b/spree_essential_blog/app/views/spree/admin/post_files/index.html.erb new file mode 100644 index 00000000..d4123f3d --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/post_files/index.html.erb @@ -0,0 +1,46 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Post Files"} %> + +<% content_for :page_actions do %> + <%= button_link_to( Spree.t(:new_post_file), new_admin_post_file_url(@post), :id => 'new_image_link', :class => "btn-success",:icon => 'plus' ) %> +<% end %> + + +<% unless @post.files.any? %> +
    + <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/post_file')) %> +
    +<% else %> + + + + + + + + + + + + + + + + + + <% @post.files.each do |image| %> + + + + + + + <% end %> + +
    <%= Spree.t(:thumbnail) %><%= Spree.t("alt_text") %>
    + + <%= link_to(image_tag(image.url_thumb), image.attachment.url ) %> <%= image.alt %> + <%= link_to_edit image, { url: edit_admin_post_file_url(@post, image), :no_text => true } %> + <%= link_to_delete image, { url: admin_post_file_url(@post, image), :no_text => true }%> +
    + +<% end %> diff --git a/spree_essential_blog/app/views/spree/admin/post_files/new.html.erb b/spree_essential_blog/app/views/spree/admin/post_files/new.html.erb new file mode 100644 index 00000000..dc2abe7a --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/post_files/new.html.erb @@ -0,0 +1,13 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Post Files"} unless request.xhr? %> + +<%= render 'spree/shared/error_messages', :target => @post_file %> + +<%= form_for(@post_file, :url => admin_post_files_path(@post), :html => { :multipart => true }) do |f| %> +
    + <%= render :partial => 'form', :locals => { :f => f } %> + + <%= render :partial => 'spree/admin/shared/new_resource_links' %> + +
    + +<% end %> diff --git a/spree_essential_blog/app/views/spree/admin/post_products/index.html.erb b/spree_essential_blog/app/views/spree/admin/post_products/index.html.erb new file mode 100644 index 00000000..55e78f47 --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/post_products/index.html.erb @@ -0,0 +1,19 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Related Products"} %> + +

    Related Products

    + +<%= form_for [:admin, @post ] do |f| %> + +

    + +

    + +

    + <%= hidden_field_tag :redirect_to, request.url, :class => "hidden" %> + <%= button t("update") %> +

    + +<% end %> diff --git a/spree_essential_blog/app/views/spree/admin/posts/_form.html.erb b/spree_essential_blog/app/views/spree/admin/posts/_form.html.erb new file mode 100644 index 00000000..2df6f602 --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/posts/_form.html.erb @@ -0,0 +1,64 @@ +
    + <%= form.field_container :title, class: ['form-group'] do %> + <%= form.label :title %> + <%= form.text_field :title, :class => 'form-control title ' %> + <%= error_message_on :post, :title %> + <% end %> +
    +
    +
    + <%= form.field_container :author, class: ['form-group'] do %> + <%= form.label :author %> + <%= form.text_field :author, :class => 'form-control' %> + <%= error_message_on :post, :author %> + <% end %> +
    + +
    + <%= form.field_container :posted_at, class: ['form-group'] do %> + <%= form.label :posted_at %> + <%= form.text_field :posted_at, value: datepicker_field_value(@post.posted_at), class: 'datepicker form-control' %> + <%= error_message_on :post, :posted_at %> + <% end %> +
    +
    +<%= form.field_container :cover, class: ['form-group'] do %> + <%= form.label :cover, Spree.t(:icon) %> + <%= form.file_field :cover %> + <%= error_message_on :post, :cover %> +<% end %> + +<%= form.field_container :body, class: ['form-group'] do %> + <%= form.label :body %> + <%= form.text_area :body, :class => 'fullwidth' %> + <%= error_message_on :post, :body %> +<% end %> + +<%= form.field_container :tag_list, class: ['form-group'] do %> + <%= form.label :tags %> + <%= form.text_field :tag_list, :class => 'form-control' %> + <%= error_message_on :post, :tag_list %> +<% end %> + +<%= form.field_container :taxons, class: ['form-group'] do %> + <%= form.label :taxon_ids, Spree.t('taxons') %>
    + <%= form.hidden_field :taxon_ids, :value => @post.taxon_ids.join(','), :class => 'text fullwidth' %> +<% end %> + +
    + <%= form.field_container :meta_keywords , class: ['form-group'] do %> + <%= form.label :meta_keywords, Spree.t(:meta_keywords) %> + <%= form.text_field :meta_keywords, :class => 'form-control' %> + <% end %> +
    + +
    + <%= form.field_container :meta_description , class: ['form-group'] do %> + <%= form.label :meta_description, Spree.t(:meta_description) %> + <%= form.text_field :meta_description, :class => 'form-control' %> + <% end %> +
    + +<%= form.field_container :live, class: ['form-group'] do %> + <%= form.check_box :live %> <%= form.label :live %> +<% end %> diff --git a/spree_essential_blog/app/views/spree/admin/posts/edit.html.erb b/spree_essential_blog/app/views/spree/admin/posts/edit.html.erb new file mode 100644 index 00000000..35dbbafa --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/posts/edit.html.erb @@ -0,0 +1,13 @@ +<%= render partial: 'spree/admin/shared/post_tabs', locals: {current: 'Post Details'} %> + +<% content_for :page_actions do %> + <% if can?(:create, Spree::Product) %> + <%= button_link_to Spree.t(:new_post), new_object_url, { class: "btn-success", :icon => 'plus', :id => 'admin_new_post' } %> + <% end %> +<% end %> +<%= render partial: 'spree/admin/shared/error_messages', locals: { target: @post } %> + +<%= form_for([:admin, @post]) do |f| %> + <%= render "form", :form => f %> + <%= render :partial => 'spree/admin/shared/edit_resource_links' %> +<% end %> diff --git a/spree_essential_blog/app/views/spree/admin/posts/index.html.erb b/spree_essential_blog/app/views/spree/admin/posts/index.html.erb new file mode 100644 index 00000000..8ab44a15 --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/posts/index.html.erb @@ -0,0 +1,78 @@ +<% content_for :page_title do %> + <%= Spree.t(:post_list) %> +<% end %> + +<% content_for :page_actions do %> + <%= button_link_to Spree.t('new_post'), new_admin_post_url, { :class => "btn-success",:icon => 'add', :id => 'admin_new_post' }%> +<% end if can? :create, Spree::Post %> + +<% content_for :table_filter_title do %> + <%= Spree.t(:search) %> +<% end %> + +<% content_for :table_filter do %> +
    + + <%= search_form_for [:admin, @search] do |f| %> + +
    +
    +
    + <%= f.label :title_cont, Spree.t("title") %>
    + <%= f.text_field :title_cont, :size => 25 %> +
    +
    +
    + +
    + +
    + <%= button Spree.t(:search), 'search' %> +
    + <% end %> +
    +<% end %> + +<%= paginate @collection %> + +<% if @collection.any? %> + + + + + + + + + + + + + + + + + + + <%- @collection.each do |post|%> + + + + + + + + <% end %> + +
    <%= sort_link @search, :title, Spree.t("title") %><%= sort_link @search, :posted_at, t("activerecord.attributes.spree/post.posted_at") %><%= sort_link @search, :live, t("activerecord.attributes.spree/post.live") %>
    <%= mini_cover(post) %><%= post.title %><%= pretty_time post.posted_at %><%= post.live ? Spree.t('say_yes') : Spree.t('not') %> + <%= link_to_edit post, :no_text => true, :class => 'edit' if can?(:edit, post) %> + <%= link_to_delete post, :no_text => true if can?(:delete, post) %> +
    +<% else %> +
    + <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/post')) %>, + <%= link_to Spree.t(:add_one), spree.new_admin_post_path %>! +
    +<% end %> + +<%= paginate @collection %> diff --git a/spree_essential_blog/app/views/spree/admin/posts/new.html.erb b/spree_essential_blog/app/views/spree/admin/posts/new.html.erb new file mode 100644 index 00000000..0b2de696 --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/posts/new.html.erb @@ -0,0 +1,16 @@ +<% content_for :page_title do %> + <%= Spree.t("new_post") %> +<% end %> + +<% content_for :page_actions do %> + <%= button_link_to Spree.t(:back_to_post_list), session[:return_to] || admin_posts_url, { class: "btn-success", :icon => 'arrow-left' } %> +<% end %> + +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @post } %> + +<%= form_for([:admin, @post]) do |f| %> +
    + <%= render "form", :form => f %> + <%= render :partial => 'spree/admin/shared/new_resource_links' %> +
    +<% end %> diff --git a/spree_essential_blog/app/views/spree/admin/posts/show.html.erb b/spree_essential_blog/app/views/spree/admin/posts/show.html.erb new file mode 100644 index 00000000..dfaff5d8 --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/posts/show.html.erb @@ -0,0 +1,20 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Post Details"} %> +

    <%= h(l @post.posted_at, :format => :detailed).gsub(/\s0/, ' ') %>

    +
    + +<% for image in @post.images do %> + <%= image_tag image.attachment.url(:small), :alt => @post.title %> +<% end %> + +<%= @post.body.html_safe %> + +
    + +
    + <%= button_link_to Spree.t('actions.edit'), edit_object_url(@post) , :icon => 'edit' %> + <%= Spree.t(:or) %> + <%= button_link_to Spree.t('actions.list'), collection_url, :icon => 'arrow-left' %> + <%= Spree.t(:or) %> + <%= button_link_to Spree.t('actions.delete'), collection_url, :icon => 'remove' %> + +
    diff --git a/spree_essential_blog/app/views/spree/blogs/admin/shared/_blog_config.html.erb b/spree_essential_blog/app/views/spree/admin/shared/_blog_config.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/admin/shared/_blog_config.html.erb rename to spree_essential_blog/app/views/spree/admin/shared/_blog_config.html.erb diff --git a/spree_essential_blog/app/views/spree/admin/shared/_post_tabs.html.erb b/spree_essential_blog/app/views/spree/admin/shared/_post_tabs.html.erb new file mode 100644 index 00000000..45d4e167 --- /dev/null +++ b/spree_essential_blog/app/views/spree/admin/shared/_post_tabs.html.erb @@ -0,0 +1,17 @@ +<% content_for :page_title do %> + <%= link_to Spree.t("posts"), admin_posts_path %> / <%= @post.name %> +<% end %> + +<% content_for :sidebar do %> + + +<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/shared/_select_configuration_tab.html.erb b/spree_essential_blog/app/views/spree/admin/shared/_select_configuration_tab.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/admin/shared/_select_configuration_tab.html.erb rename to spree_essential_blog/app/views/spree/admin/shared/_select_configuration_tab.html.erb diff --git a/spree_essential_blog/app/views/spree/blogs/admin/disqus_settings/edit.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/disqus_settings/edit.html.erb deleted file mode 100644 index 856126dc..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/disqus_settings/edit.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -<%= render :partial => 'spree/admin/shared/configuration_menu' %> - -

    <%= t('spree.blogs.settings.disqus') %>

    - -<%= form_tag admin_disqus_settings_path, :method => :put do |form| %> - <% @preferences.each do |key| - type = @config.preference_type(key) %> - <%= label_tag(key, t("spree.blogs.settings.#{key}") + ': ') + tag(:br) if type != :boolean %> - <%= preference_field_tag(key, @config[key], :type => type) %> - <%= label_tag(key, t(key)) + tag(:br) if type == :boolean %> - <% end %> - -

    - <%= button t('update') %> - <%= t("or") %> <%= link_to t("cancel"), admin_disqus_settings_url %> -

    -<% end %> - -<%= render "spree/blogs/admin/shared/select_configuration_tab" unless request.xhr? %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/post_categories/edit.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/post_categories/edit.html.erb deleted file mode 100644 index b0f21a1d..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/post_categories/edit.html.erb +++ /dev/null @@ -1,15 +0,0 @@ -<%= render :partial => 'spree/blogs/admin/shared/post_tabs', :locals => {:current => "Categories"} %> - -

    <%= t(".edit_category") %>

    - -<% if @post_category.try(:errors).present? %> - <%= render 'spree/shared/error_messages', :target => @post_category %> -<% end %> - -<%= form_for([:admin, @post, @post_category], :url => admin_post_category_path(@post, @post_category.id)) do |form| %> - <%= render "form", :form => form %> -

    - <%= hidden_field_tag :post_id, @post.path, :class => 'hidden' %> - <%= button t("update") %> -

    -<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/post_categories/new.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/post_categories/new.html.erb deleted file mode 100644 index f6c007f0..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/post_categories/new.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -<%= render :partial => 'spree/blogs/admin/shared/post_tabs', :locals => {:current => "Categories"} unless request.xhr? %> - -

    <%= t("new_category") %>

    - -<% if @post_category.try(:errors).present? %> - <%= render 'spree/shared/error_messages', :target => @post_category %> -<% end %> - -<%= form_for(@post_category, :url => admin_post_categories_path(@post)) do |form| %> - <%= render "form", :form => form %> -

    - <%= button t("create") %> -

    -<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/post_images/_form.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/post_images/_form.html.erb deleted file mode 100644 index beeb23f3..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/post_images/_form.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -

    - <%= form.label :attachment %>:
    - <%= form.file_field :attachment %> -

    -

    - <%= form.label :alt %>:
    - <%= form.text_field :alt, :class => 'text' %> -

    diff --git a/spree_essential_blog/app/views/spree/blogs/admin/post_images/edit.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/post_images/edit.html.erb deleted file mode 100644 index b944af8e..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/post_images/edit.html.erb +++ /dev/null @@ -1,18 +0,0 @@ -<%= render :partial => 'spree/blogs/admin/shared/post_tabs', :locals => {:current => "Images"} %> - -<% if @post_image.try(:errors).present? %> - <%= render 'spree/shared/error_messages', :target => @post_image %> -<% end %> - -<%= form_for([:admin, @post.id, @post_image], :url => admin_post_image_url(@post, @post_image), :html => { :multipart => true }) do |f| %> -

    - <%= label_tag ("thumbnail") %>:
    - <%= link_to(image_tag(@post_image.attachment.url(:mini)), @post_image.attachment.url(:product)) %> -

    - <%= render "form", :form => f %> - -

    - <%= button t("update") %> - or <%= link_to t("cancel"), admin_post_images_url(@post), :id => "cancel_link" %> -

    -<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/post_images/index.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/post_images/index.html.erb deleted file mode 100644 index 01b14235..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/post_images/index.html.erb +++ /dev/null @@ -1,44 +0,0 @@ -<%= render :partial => 'spree/blogs/admin/shared/post_tabs', :locals => {:current => "Images"} %> - - - - - - - - - - - <% @post.images.each do |image| %> - - - - - - <% end %> - -
    <%= t("thumbnail") %><%= t("alt_text") %><%= t("action") %>
       <%= link_to(image_tag(image.attachment.url(:mini)), image.attachment.url(:large)) %><%= image.alt %> - <%= link_to_with_icon('edit', t("edit"), edit_admin_post_image_url(@post, image)) %> -   - <%= link_to_delete image, {:url => admin_post_image_url(@post, image) }%> -
    - -
    -
    -

    - <%= link_to icon('add') + ' ' + t("new_image"), new_admin_post_image_url(@post), :id => "new_image_link" %> -

    - -<% content_for :head do %> - -<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/post_images/new.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/post_images/new.html.erb deleted file mode 100644 index d8e582a8..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/post_images/new.html.erb +++ /dev/null @@ -1,22 +0,0 @@ -<%= render :partial => 'spree/blogs/admin/shared/post_tabs', :locals => {:current => "Images"} unless request.xhr? %> - -

    <%= t("new_image") %>

    - -<%= render 'spree/shared/error_messages', :target => @post_image %> - -<%= form_for(@post_image, :url => admin_post_images_path(@post), :html => { :multipart => true }) do |form| %> - - <%= render "form", :form => form %> -
    -

    - <%= button t("create") %> - or <%= link_to t("cancel"), "#", :id => "cancel_link" %> -

    -<% end %> - - diff --git a/spree_essential_blog/app/views/spree/blogs/admin/post_products/index.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/post_products/index.html.erb deleted file mode 100644 index 7f19e030..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/post_products/index.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -<%= render :partial => 'spree/blogs/admin/shared/post_tabs', :locals => {:current => "Related Products"} %> - -

    Related Products

    - -<%= form_for [:admin, @post ] do |f| %> - -

    - -

    - -

    - <%= hidden_field_tag :redirect_to, request.url, :class => "hidden" %> - <%= button t("update") %> -

    - -<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/posts/_form.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/posts/_form.html.erb deleted file mode 100644 index 3569ebbb..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/posts/_form.html.erb +++ /dev/null @@ -1,41 +0,0 @@ -<%= form.field_container :title do %> - <%= form.label :title, t("activerecord.attributes.post.title") %>
    - <%= form.text_field :title, :class => 'title fullwidth' %> - <%= error_message_on :post, :title %> -<% end %> - -<%= form.field_container :posted_at do %> - <%= form.label :posted_at, t("activerecord.attributes.post.posted_at") %>
    - <%= form.text_field :posted_at, :class => 'datetime fullwidth' %> - - <%= error_message_on :post, :posted_at %> -<% end %> - -<%= form.field_container :cover do %> - <%= form.label :cover, Spree.t(:icon) %>
    - <%= form.file_field :cover %> - <%= error_message_on :post, :cover %> -<% end %> - -<%= form.field_container :body do %> - <%= form.label :body, t("activerecord.attributes.post.body") %>
    - <%= form.text_area :body, :class => 'fullwidth' %> - <%= error_message_on :post, :body %> -<% end %> - -<%= form.field_container :tag_list do %> - <%= form.label :tag_list, t("activerecord.attributes.post.tags") %>
    - <%= form.text_field :tag_list, :class => 'text fullwidth' %>
    - <%= error_message_on :post, :tag_list %> -<% end %> - -<%= form.field_container :taxons do %> - <%= form.label :taxon_ids, Spree.t('taxons') %>
    - <%= form.hidden_field :taxon_ids, :value => @post.taxon_ids.join(','), :class => 'text fullwidth' %> -<% end %> - - -<%= form.field_container :live do %> - <%= form.check_box :live %> <%= form.label :live, t("activerecord.attributes.post.live") %>
    -<% end %> - diff --git a/spree_essential_blog/app/views/spree/blogs/admin/posts/edit.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/posts/edit.html.erb deleted file mode 100644 index 3cd6f7c4..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/posts/edit.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -<% content_for :page_title do %> - <%= Spree.t("edit_post") %> “<%= @post.title %>” -<% end %> - -<% content_for :page_actions do %> -
  • <%= button_link_to Spree.t(:back_to_post_list), admin_posts_url, :icon => 'icon-arrow-left' %>
  • - <% if can?(:create, Spree::Product) %> -
  • - <%= button_link_to Spree.t(:new_post), new_object_url, { :icon => 'icon-plus', :id => 'admin_new_post' } %> -
  • - <% end %> -<% end %> - -<% if @post.try(:errors).present? %> - <%= render 'spree/shared/error_messages', :target => @post %> -<% end %> - -<%= form_for([:admin, @post]) do |f| %> - <%= render "form", :form => f %> - - <%= render :partial => 'spree/admin/shared/edit_resource_links' %> - -<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/posts/index.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/posts/index.html.erb deleted file mode 100644 index 85b5f465..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/posts/index.html.erb +++ /dev/null @@ -1,80 +0,0 @@ -<% content_for :page_title do %> - <%= Spree.t('post_list') %> -<% end %> - -<% content_for :page_actions do %> -
  • - <%= button_link_to Spree.t('new_post'), new_admin_post_url, :icon => 'icon-plus', :id => 'admin_new_post' %> -
  • -<% end if can? :edit, Spree::Post.new %> - -<% content_for :table_filter_title do %> - <%= Spree.t(:search) %> -<% end %> - -<% content_for :table_filter do %> -
    - - <%= search_form_for [:admin, @search] do |f| %> - -
    -
    -
    - <%= f.label :title_cont, t("activerecord.attributes.post.title") %>
    - <%= f.text_field :title_cont, :size => 25 %> -
    -
    -
    - -
    - -
    - <%= button Spree.t(:search), 'icon-search' %> -
    - <% end %> -
    -<% end %> - -<%= paginate @collection %> - -<% if @collection.any? %> - - - - - - - - - - - - - - - - - - <%- @collection.each do |post|%> - - - - - - - <% end %> - -
    <%= sort_link @search, :title, t("activerecord.attributes.post.title") %><%= sort_link @search, :posted_at, t("activerecord.attributes.post.posted_at") %><%= sort_link @search, :live, t("activerecord.attributes.post.live") %>
    <%= post.title %><%= pretty_time post.posted_at %><%= post.live ? Spree.t('say_yes') : Spree.t('not') %> - <%= link_to_edit post, :no_text => true, :class => 'edit' if can?(:edit, post) %> -   - <%= link_to_delete post, :no_text => true if can?(:delete, post) %> -
    -<% else %> -
    - <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/post')) %>, - <%= link_to Spree.t(:add_one), spree.new_admin_post_path %>! -
    -<% end %> - -<%= paginate @collection %> - diff --git a/spree_essential_blog/app/views/spree/blogs/admin/posts/new.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/posts/new.html.erb deleted file mode 100644 index 61047fb9..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/posts/new.html.erb +++ /dev/null @@ -1,17 +0,0 @@ -<% content_for :page_title do %> - <%= Spree.t("post.new") %> -<% end %> - -<% content_for :page_actions do %> -
  • <%= button_link_to Spree.t(:back_to_post_list), admin_posts_url, :icon => 'icon-arrow-left' %>
  • -<% end %> - -<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @post } %> - -<%= form_for([:admin, @post]) do |f| %> - - <%= render "form", :form => f %> - - <%= render :partial => 'spree/admin/shared/new_resource_links' %> - -<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/admin/posts/show.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/posts/show.html.erb deleted file mode 100644 index 3dadb2d7..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/posts/show.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<%= render :partial => 'spree/blogs/admin/shared/post_tabs', :locals => {:current => "Post Details"} %> -

    <%= h(l @post.posted_at, :format => :detailed).gsub(/\s0/, ' ') %>

    -
    - -<% for image in @post.images do %> - <%= image_tag image.attachment.url(:small), :alt => @post.title %> -<% end %> - -<%= @post.body.html_safe %> - -
    - -
    - <%= button_link_to Spree.t('actions.edit'), edit_object_url(@post) , :icon => 'icon-edit' %> - <%= Spree.t(:or) %> - <%= button_link_to Spree.t('actions.list'), collection_url, :icon => 'icon-arrow-left' %> - <%= Spree.t(:or) %> - <%= button_link_to Spree.t('actions.delete'), collection_url, :icon => 'icon-remove' %> - -
    - diff --git a/spree_essential_blog/app/views/spree/blogs/admin/shared/_post_tabs.html.erb b/spree_essential_blog/app/views/spree/blogs/admin/shared/_post_tabs.html.erb deleted file mode 100644 index dfb8da93..00000000 --- a/spree_essential_blog/app/views/spree/blogs/admin/shared/_post_tabs.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -

    <%== t(".editing_post") + " “#{@post.title}”".html_safe %>

    - -<% content_for :sidebar do %> - -

    <%= @post.title %><%= l (@post.posted_at || Time.now), :format => :date_only %>

    -
    - -
      - > - <%= link_to t(".post_details"), edit_admin_post_url(@post) %> - - > - <%= link_to t(".related_products"), admin_post_products_url(@post) %> - - > - <%= link_to t(".post_categories"), admin_post_categories_url(@post) %> - -
    -
    - -<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/post_categories/show.html.erb b/spree_essential_blog/app/views/spree/blogs/post_categories/show.html.erb deleted file mode 100644 index 2214039e..00000000 --- a/spree_essential_blog/app/views/spree/blogs/post_categories/show.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -
    - <%= render :partial => 'spree/blogs/shared/preview', :collection => @posts, :as => :post %> - -
    - - <%= paginate @posts %> - -
    - -<% content_for :sidebar do %> - <%= render :partial => 'spree/blogs/shared/sidebar' %> -<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/posts/index.html.erb b/spree_essential_blog/app/views/spree/blogs/posts/index.html.erb deleted file mode 100644 index 9c474d6b..00000000 --- a/spree_essential_blog/app/views/spree/blogs/posts/index.html.erb +++ /dev/null @@ -1,19 +0,0 @@ -
    - <% if @posts.blank? %> -

    <%= t('spree.blogs.no_posts') %>

    - <% else %> - <%= render :partial => 'spree/blogs/shared/preview', :collection => @posts, :as => :post %> - <% end %> -
    - - <%= link_to blog_posts_path(@blog, :format => 'rss'), :id => "posts-rss" do %> - <%= image_tag 'blog/rss.png', :alt => t('spree.blogs.posts.index.rss') %> - <%= t('spree.blogs.posts.index.rss') %> - <% end %> - <%= paginate @posts %> - -
    - -<% content_for :sidebar do %> - <%= render :partial => 'spree/blogs/shared/sidebar' %> -<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/posts/show.html.erb b/spree_essential_blog/app/views/spree/blogs/posts/show.html.erb deleted file mode 100644 index cd101fdf..00000000 --- a/spree_essential_blog/app/views/spree/blogs/posts/show.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -<% content_for :sidebar do %> - <%= render :partial => 'spree/blogs/shared/sidebar' %> -<% end %> - -
    - -
    -
    <%= h l(@post.posted_at, :format => :date_full).gsub(/\s0/, ' ') %>
    -

    <%=h @post.title %>

    -
    - - <% if @post.has_images? %> -
    - <% @post.images.each_with_index do |image, index| %> -

    <%= link_to image_tag(image.attachment.url(:medium), :alt => image.has_alt? ? image.alt : "#{@post.title} - Photo #{index + 1}"), image.attachment.url(:large), :id => "photo_#{index}" %>

    - <% end %> -
    - <% end %> - - <%= @post.rendered_body %> - -
    - - - - <% unless @post.products.empty? %> -
    - <%= render 'spree/shared/products', :products => @post.products %> -
    - <% end %> - - <%= render "spree/blogs/shared/disqus_comments" %> - -
    diff --git a/spree_essential_blog/app/views/spree/blogs/shared/_sidebar.html.erb b/spree_essential_blog/app/views/spree/blogs/shared/_sidebar.html.erb deleted file mode 100644 index 3bd26672..00000000 --- a/spree_essential_blog/app/views/spree/blogs/shared/_sidebar.html.erb +++ /dev/null @@ -1,26 +0,0 @@ - diff --git a/spree_essential_blog/app/views/spree/post_categories/show.html.erb b/spree_essential_blog/app/views/spree/post_categories/show.html.erb new file mode 100644 index 00000000..0af89bbc --- /dev/null +++ b/spree_essential_blog/app/views/spree/post_categories/show.html.erb @@ -0,0 +1,12 @@ +
    + <%= render :partial => 'spree/shared/preview', :collection => @posts, :as => :post %> + +
    + + <%= paginate @posts %> + +
    + +<% content_for :sidebar do %> + <%= render :partial => 'spree/shared/sidebar' %> +<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/posts/archive.html.erb b/spree_essential_blog/app/views/spree/posts/archive.html.erb similarity index 84% rename from spree_essential_blog/app/views/spree/blogs/posts/archive.html.erb rename to spree_essential_blog/app/views/spree/posts/archive.html.erb index 0f270eea..d6631668 100644 --- a/spree_essential_blog/app/views/spree/blogs/posts/archive.html.erb +++ b/spree_essential_blog/app/views/spree/posts/archive.html.erb @@ -2,7 +2,7 @@
    - <%= render 'spree/blogs/shared/archive', :posts => @posts %> + <%= render 'spree/shared/archive', :posts => @posts %>

    <%= t('.where_to_next') %>

    diff --git a/spree_essential_blog/app/views/spree/posts/index.html.erb b/spree_essential_blog/app/views/spree/posts/index.html.erb new file mode 100644 index 00000000..69a44600 --- /dev/null +++ b/spree_essential_blog/app/views/spree/posts/index.html.erb @@ -0,0 +1,19 @@ +

    + <% if @posts.blank? %> +

    <%= t('spree.blogs.no_posts') %>

    + <% else %> + <%= render :partial => 'spree/shared/preview', :collection => @posts, :as => :post %> + <% end %> +
    + + <%= link_to blog_posts_path(@blog, :format => 'rss'), :id => "posts-rss" do %> + <%= image_tag 'blog/rss.png', :alt => t('spree.blogs.posts.index.rss') %> + <%= t('spree.blogs.posts.index.rss') %> + <% end %> + <%= paginate @posts %> + +
    + +<% content_for :sidebar do %> + <%= render :partial => 'spree/shared/sidebar' %> +<% end %> diff --git a/spree_essential_blog/app/views/spree/blogs/posts/index.rss.builder b/spree_essential_blog/app/views/spree/posts/index.rss.builder similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/posts/index.rss.builder rename to spree_essential_blog/app/views/spree/posts/index.rss.builder diff --git a/spree_essential_blog/app/views/spree/posts/show.html.erb b/spree_essential_blog/app/views/spree/posts/show.html.erb new file mode 100644 index 00000000..5d24e779 --- /dev/null +++ b/spree_essential_blog/app/views/spree/posts/show.html.erb @@ -0,0 +1,37 @@ +<% content_for :sidebar do %> + <%= render :partial => 'spree/shared/sidebar' %> +<% end %> + +
    + +
    +
    <%= h l(@post.posted_at, :format => :date_full).gsub(/\s0/, ' ') %>
    +

    <%=h @post.title %>

    +
    + + <% if @post.has_images? %> +
    + <% @post.images.each_with_index do |image, index| %> +

    <%= link_to image_tag(image.attachment.url(:medium), :alt => image.has_alt? ? image.alt : "#{@post.title} - Photo #{index + 1}"), image.attachment.url(:large), :id => "photo_#{index}" %>

    + <% end %> +
    + <% end %> + + <%= @post.rendered_body %> + +
    + + + + <% unless @post.products.empty? %> +
    + <%= render 'spree/shared/products', :products => @post.products %> +
    + <% end %> + + <%= render "spree/shared/disqus_comments" %> + +
    diff --git a/spree_essential_blog/app/views/spree/blogs/shared/_archive.html.erb b/spree_essential_blog/app/views/spree/shared/_archive.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/shared/_archive.html.erb rename to spree_essential_blog/app/views/spree/shared/_archive.html.erb diff --git a/spree_essential_blog/app/views/spree/blogs/shared/_disqus_comments.html.erb b/spree_essential_blog/app/views/spree/shared/_disqus_comments.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/shared/_disqus_comments.html.erb rename to spree_essential_blog/app/views/spree/shared/_disqus_comments.html.erb diff --git a/spree_essential_blog/app/views/spree/blogs/shared/_preview.html.erb b/spree_essential_blog/app/views/spree/shared/_preview.html.erb similarity index 100% rename from spree_essential_blog/app/views/spree/blogs/shared/_preview.html.erb rename to spree_essential_blog/app/views/spree/shared/_preview.html.erb diff --git a/spree_essential_blog/app/views/spree/shared/_sidebar.html.erbx b/spree_essential_blog/app/views/spree/shared/_sidebar.html.erbx new file mode 100644 index 00000000..fbc430de --- /dev/null +++ b/spree_essential_blog/app/views/spree/shared/_sidebar.html.erbx @@ -0,0 +1,26 @@ + diff --git a/spree_essential_blog/config/locales/en.yml b/spree_essential_blog/config/locales/en.yml index 74f2a894..249b922e 100644 --- a/spree_essential_blog/config/locales/en.yml +++ b/spree_essential_blog/config/locales/en.yml @@ -8,7 +8,6 @@ en: blog: model_name: Blog name: Name - permalink: Permalink post: model_name: Post title: Title @@ -16,10 +15,10 @@ en: body: Body live: Published tags: Tags + author: Author post_category: model_name: Category name: Name - permalink: Permalink models: spree/post: one: post diff --git a/spree_essential_blog/config/locales/zh-CN.yml b/spree_essential_blog/config/locales/zh-CN.yml index 8cfe5fad..a89b0a18 100644 --- a/spree_essential_blog/config/locales/zh-CN.yml +++ b/spree_essential_blog/config/locales/zh-CN.yml @@ -6,28 +6,31 @@ zh-CN: blog: model_name: Blog name: Name - permalink: Permalink - post: + spree/post: model_name: 文章 title: 标题 posted_at: 发布时间 body: 正文 + cover: 图片 live: 是否发布 tags: 标签 + author: 作者 post_category: model_name: Category name: Name - permalink: Permalink models: spree/post: one: 文章 other: 文章 + spree/post_file: + one: 文件 + other: 文件 spree: back_to_post_list: 回到文章列表 post_list: 文章列表 new_post: 新建文章 - edit_post: 编辑文章 + edit_post: 编辑文章 admin: tab: posts: 文章 @@ -39,10 +42,10 @@ zh-CN: post: index: post_list: 文章列表 - new: + new: new_post: 新建文章 edit: - edit_post: 编辑文章 + edit_post: 编辑文章 post_products: index: add_related_product: Add Related Products @@ -59,7 +62,10 @@ zh-CN: home: title: Recent Posts archive: Blog Archive + files: 文件 + new_post_file: 新建文件 no_posts: No posts found! + no_post_files_found: 找不到任何文件! posts: 文章 post: index: @@ -72,6 +78,8 @@ zh-CN: back_to_posts: "Back to the blog" show: tagged: Tagged + post_details: 文章详细 + post_files: 文件 settings: blogs: Manage Blogs explain_blogs: Add or Edit Blogs for posts. @@ -94,6 +102,7 @@ zh-CN: post_categories: Categories subnav: posts: Blog Posts + title: 标题 time: formats: diff --git a/spree_essential_blog/config/routes.rb b/spree_essential_blog/config/routes.rb index f3ef4975..e82d35c3 100644 --- a/spree_essential_blog/config/routes.rb +++ b/spree_essential_blog/config/routes.rb @@ -1,40 +1,43 @@ Spree::Core::Engine.routes.append do - scope(:module => "blogs") do - namespace :admin do - resources :posts do + namespace :admin do + resources :posts do + resources :files, :controller => "post_files" do + collection do + post :update_positions + end + end resources :products, :controller => "post_products" resources :categories, :controller => "post_categories" end - end - end + end # scope(:module => "blogs") do -# namespace :admin do -# resources :blogs, :constraints => { :id => /[a-z0-9\-\_\/]{3,}/ } -# resources :posts do -# resources :images, :controller => "post_images" do +# namespace :admin do +# resources :blogs, :constraints => { :id => /[a-z0-9\-\_\/]{3,}/ } +# resources :posts do +# resources :images, :controller => "post_files" do # collection do # post :update_positions # end # end # resources :products, :controller => "post_products" # resources :categories, :controller => "post_categories" -# end -# resource :disqus_settings -# end -# constraints :blog_id => /([a-z0-9\-\_\/]{3,})/ do +# end +# resource :disqus_settings +# end +# constraints :blog_id => /([a-z0-9\-\_\/]{3,})/ do # constraints( # :year => /\d{4}/, # :month => /\d{1,2}/, # :day => /\d{1,2}/ -# ) do +# ) do # get ":blog_id/:year(/:month(/:day))" => "posts#index", :as => :post_date # get ":blog_id/:year/:month/:day/:id" => "posts#show", :as => :full_post -# end +# end # get ":blog_id/category/:id" => "post_categories#show", :as => :post_category, :constraints => { :id => /.*/ } # get ":blog_id/search/:query" => "posts#search", :as => :search_posts, :query => /.*/ # get ":blog_id/archive" => "posts#archive", :as => :archive_posts -# get ":blog_id" => "posts#index", :as => :blog_posts -# end +# get ":blog_id" => "posts#index", :as => :blog_posts +# end # end end diff --git a/spree_essential_blog/db/migrate/20140806185750_acts_as_taggable_on_posts.rb b/spree_essential_blog/db/migrate/20140806185750_acts_as_taggable_on_posts.rb deleted file mode 100644 index c94cfefa..00000000 --- a/spree_essential_blog/db/migrate/20140806185750_acts_as_taggable_on_posts.rb +++ /dev/null @@ -1,30 +0,0 @@ -class ActsAsTaggableOnPosts < ActiveRecord::Migration - def self.up - #table tags, tagings are part of gem acts-as-taggable-on, no spree namespace - return if table_exists? :tags - - create_table :tags do |t| - t.string :name - end - - create_table :taggings do |t| - t.references :tag - # You should make sure that the column created is - # long enough to store the required class names. - t.references :taggable, :polymorphic => true - t.references :tagger, :polymorphic => true - t.string :context - t.datetime :created_at - end - - add_index :taggings, :tag_id - add_index :taggings, [:taggable_id, :taggable_type, :context], :name=>"taggings_id_type_context" - end - - def self.down - return unless table_exists? :tags - drop_table :tags - drop_table :taggings - end - -end diff --git a/spree_essential_blog/db/migrate/20140806185700_create_posts.rb b/spree_essential_blog/db/migrate/20171208185700_create_posts.rb similarity index 100% rename from spree_essential_blog/db/migrate/20140806185700_create_posts.rb rename to spree_essential_blog/db/migrate/20171208185700_create_posts.rb diff --git a/spree_essential_blog/db/migrate/20140806185720_create_taxons_posts.rb b/spree_essential_blog/db/migrate/20171208185720_create_taxons_posts.rb similarity index 100% rename from spree_essential_blog/db/migrate/20140806185720_create_taxons_posts.rb rename to spree_essential_blog/db/migrate/20171208185720_create_taxons_posts.rb diff --git a/spree_essential_blog/db/migrate/20140806185730_create_post_products.rb b/spree_essential_blog/db/migrate/20171208185730_create_post_products.rb similarity index 100% rename from spree_essential_blog/db/migrate/20140806185730_create_post_products.rb rename to spree_essential_blog/db/migrate/20171208185730_create_post_products.rb diff --git a/spree_essential_blog/db/migrate/20171208185750_acts_as_taggable_on_posts.rb b/spree_essential_blog/db/migrate/20171208185750_acts_as_taggable_on_posts.rb new file mode 100644 index 00000000..5d8af0ba --- /dev/null +++ b/spree_essential_blog/db/migrate/20171208185750_acts_as_taggable_on_posts.rb @@ -0,0 +1,32 @@ +class ActsAsTaggableOnPosts < ActiveRecord::Migration + def self.up + #table tags, tagings are part of gem acts-as-taggable-on, no spree namespace + return if table_exists? :tags + + create_table :tags do |t| + t.string :name + end + + create_table :taggings do |t| + t.references :tag + # You should make sure that the column created is + # long enough to store the required class names. + t.references :taggable, :polymorphic => true + t.references :tagger, :polymorphic => true + # Limit is created to prevent MySQL error on index + # length for MyISAM table type: http://bit.ly/vgW2Ql + t.string :context, limit: 128 + t.datetime :created_at + end + + add_index :taggings, :tag_id + add_index :taggings, [:taggable_id, :taggable_type, :context], :name=>"taggings_id_type_context" + end + + def self.down + return unless table_exists? :tags + drop_table :tags + drop_table :taggings + end + +end diff --git a/spree_essential_blog/db/migrate/20140808074440_add_cover_to_post.rb b/spree_essential_blog/db/migrate/20171208194440_add_cover_to_post.rb similarity index 100% rename from spree_essential_blog/db/migrate/20140808074440_add_cover_to_post.rb rename to spree_essential_blog/db/migrate/20171208194440_add_cover_to_post.rb diff --git a/spree_essential_blog/db/migrate/20171208204372_add_position_to_posts_taxons.spree.rb b/spree_essential_blog/db/migrate/20171208204372_add_position_to_posts_taxons.spree.rb new file mode 100644 index 00000000..72c627dd --- /dev/null +++ b/spree_essential_blog/db/migrate/20171208204372_add_position_to_posts_taxons.spree.rb @@ -0,0 +1,10 @@ +# This migration comes from spree (originally 20131127001002) +class AddPositionToPostsTaxons < ActiveRecord::Migration + def change + add_column :spree_posts_taxons, :id, :primary_key + add_column :spree_posts_taxons, :position, :integer + Spree::PostClassification.all.reverse.each{|classfication| + classfication.insert_at( ) + } + end +end diff --git a/spree_essential_blog/db/migrate/20171208205253_add_seo_metas_to_posts.rb b/spree_essential_blog/db/migrate/20171208205253_add_seo_metas_to_posts.rb new file mode 100644 index 00000000..15a28195 --- /dev/null +++ b/spree_essential_blog/db/migrate/20171208205253_add_seo_metas_to_posts.rb @@ -0,0 +1,9 @@ +class AddSeoMetasToPosts < ActiveRecord::Migration + def change + change_table :spree_posts do |t| + t.string :meta_title + t.string :meta_description + t.string :meta_keywords + end + end +end diff --git a/spree_essential_blog/db/migrate/20171208220001_rename_permalink_to_slug_for_posts.rb b/spree_essential_blog/db/migrate/20171208220001_rename_permalink_to_slug_for_posts.rb new file mode 100644 index 00000000..62a8d051 --- /dev/null +++ b/spree_essential_blog/db/migrate/20171208220001_rename_permalink_to_slug_for_posts.rb @@ -0,0 +1,5 @@ +class RenamePermalinkToSlugForPosts < ActiveRecord::Migration + def change + rename_column :spree_posts, :permalink, :slug + end +end diff --git a/spree_essential_blog/lib/spree_essential_blog.rb b/spree_essential_blog/lib/spree_essential_blog.rb index 85f7fe30..2dd71e5a 100644 --- a/spree_essential_blog/lib/spree_essential_blog.rb +++ b/spree_essential_blog/lib/spree_essential_blog.rb @@ -5,6 +5,7 @@ require "spree_essential_blog/engine" require "spree_essential_blog/search" require "spree_essential_blog/permitted_attributes_for_blog" +require "spree_essential_blog/paper_clip_interpolate_site" module SpreeEssentialBlog mattr_accessor :site_class, :taxon_class diff --git a/spree_essential_blog/lib/spree_essential_blog/paper_clip_interpolate_site.rb b/spree_essential_blog/lib/spree_essential_blog/paper_clip_interpolate_site.rb new file mode 100644 index 00000000..09139da1 --- /dev/null +++ b/spree_essential_blog/lib/spree_essential_blog/paper_clip_interpolate_site.rb @@ -0,0 +1,5 @@ +unless Paperclip::Interpolations.all.include? :site + Paperclip.interpolates :site do |attachment, style_name| + attachment.instance.site_id # site.current do not work anymore, since we assign theme product to taxon of shop1. + end +end \ No newline at end of file diff --git a/spree_essential_blog/lib/spree_essential_blog/permitted_attributes_for_blog.rb b/spree_essential_blog/lib/spree_essential_blog/permitted_attributes_for_blog.rb index 6ee79353..fe536cba 100644 --- a/spree_essential_blog/lib/spree_essential_blog/permitted_attributes_for_blog.rb +++ b/spree_essential_blog/lib/spree_essential_blog/permitted_attributes_for_blog.rb @@ -1,11 +1,11 @@ module Spree module PermittedAttributes - ATTRIBUTES_FOR_BLOG=[:blog_attributes, :post_attributes, :post_image_attributes, :post_product_attributes] + ATTRIBUTES_FOR_BLOG=[:blog_attributes, :post_attributes, :post_file_attributes, :post_product_attributes] mattr_reader *ATTRIBUTES_FOR_BLOG @@blog_attributes = [:name, :permalink] - @@post_attributes = [ :title, :cover, :teaser, :body, :posted_at, :author, :live, :tag_list, :taxon_ids, :product_ids_string] - @@post_image_attributes = [:alt, :attachment] + @@post_attributes = [ :title, :cover, :teaser, :body, :posted_at, :author, :live, :tag_list, :taxon_ids, :product_ids_string, :meta_keywords, :meta_description] + @@post_file_attributes = [:alt, :attachment] @@post_product_attributes = [:post_id, :product_id, :position] end end \ No newline at end of file diff --git a/spree_essential_blog/lib/spree_essential_blog/posts_controller_helper.rb b/spree_essential_blog/lib/spree_essential_blog/posts_controller_helper.rb index 78a108b4..79b50dbb 100644 --- a/spree_essential_blog/lib/spree_essential_blog/posts_controller_helper.rb +++ b/spree_essential_blog/lib/spree_essential_blog/posts_controller_helper.rb @@ -3,22 +3,22 @@ module SpreeEssentialBlog::PostsControllerHelper extend ActiveSupport::Concern included do - helper 'spree/blogs/posts' - before_filter :get_blog + helper 'spree/posts' + before_action :get_blog end - + private - + def default_scope @blog.posts.live end - + def get_sidebar @archive_posts = default_scope.limit(10) @post_categories = @blog.categories.order(:name).all get_tags end - + def get_tags @tags = default_scope.tag_counts.order('count DESC').limit(25) end @@ -26,5 +26,5 @@ def get_tags def get_blog @blog = Spree::Blog.find_by_permalink!(params[:blog_id]) end - + end diff --git a/spree_essential_blog/spec/models/post_spec.rb b/spree_essential_blog/spec/models/post_spec.rb index dd272adc..55b396a9 100644 --- a/spree_essential_blog/spec/models/post_spec.rb +++ b/spree_essential_blog/spec/models/post_spec.rb @@ -3,12 +3,12 @@ describe Spree::Post do let(:post) { FactoryGirl.build(:post) } - - + + it "new post" do post.title = "中文标题" post.should be_valid - post.permalink.should be_present + post.friendly_id.should be_present end - + end diff --git a/spree_essential_blog/spree_essential_blog.gemspec b/spree_essential_blog/spree_essential_blog.gemspec index df4458a3..255753c9 100644 --- a/spree_essential_blog/spree_essential_blog.gemspec +++ b/spree_essential_blog/spree_essential_blog.gemspec @@ -2,23 +2,23 @@ Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = 'spree_essential_blog' - s.version = '2.4.0' + s.version = '3.0.0' s.summary = 'blog feature for spree_abc' s.description = 'blog feature for spree_abc' - s.required_ruby_version = '>= 1.9.3' + s.required_ruby_version = '>= 2.0.0' s.author = 'qinghe' s.email = 'areq22@gmail.com' - s.homepage = 'http://www.dalianshops.com' + s.homepage = 'http://www.getstore.cn' #s.files = `git ls-files`.split("\n") #s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") s.require_path = 'lib' s.requirements << 'none' - s.add_dependency 'spree_core', '~> 2.4.0' - s.add_dependency('acts-as-taggable-on', '~> 3.1') - + #s.add_dependency 'spree_core', '3.1.0.rc3' + s.add_dependency'acts-as-taggable-on', '~> 3.1' + s.add_development_dependency 'capybara', '~> 2.4' s.add_development_dependency 'coffee-rails' s.add_development_dependency 'database_cleaner' diff --git a/spree_essential_blog/test/integration/spree/blogs/admin/blogs_integration_test.rb b/spree_essential_blog/test/integration/spree/blogs/admin/blogs_integration_test.rb index d8215d52..95854122 100644 --- a/spree_essential_blog/test/integration/spree/blogs/admin/blogs_integration_test.rb +++ b/spree_essential_blog/test/integration/spree/blogs/admin/blogs_integration_test.rb @@ -3,7 +3,7 @@ require 'test_helper' -class Spree::Blogs::Admin::BlogsIntegrationTest < SpreeEssentials::IntegrationCase +class Spree::Admin::BlogsIntegrationTest < SpreeEssentials::IntegrationCase setup do Spree::Blog.destroy_all diff --git a/spree_essential_blog/test/integration/spree/blogs/admin/disqus_integration_test.rb b/spree_essential_blog/test/integration/spree/blogs/admin/disqus_integration_test.rb index a7a77769..2985be4c 100644 --- a/spree_essential_blog/test/integration/spree/blogs/admin/disqus_integration_test.rb +++ b/spree_essential_blog/test/integration/spree/blogs/admin/disqus_integration_test.rb @@ -3,7 +3,7 @@ require 'test_helper' -class Spree::Blogs::Admin::DisqusIntegrationTest < SpreeEssentials::IntegrationCase +class Spree::Admin::DisqusIntegrationTest < SpreeEssentials::IntegrationCase should "have a link to disqus config" do visit spree.admin_configurations_path diff --git a/spree_essential_blog/test/integration/spree/blogs/admin/post_category_integration_test.rb b/spree_essential_blog/test/integration/spree/blogs/admin/post_category_integration_test.rb index 38ce2876..487d31f1 100644 --- a/spree_essential_blog/test/integration/spree/blogs/admin/post_category_integration_test.rb +++ b/spree_essential_blog/test/integration/spree/blogs/admin/post_category_integration_test.rb @@ -3,7 +3,7 @@ require 'test_helper' -class Spree::Blogs::Admin::PostCategoryIntegrationTest < SpreeEssentials::IntegrationCase +class Spree::Admin::PostCategoryIntegrationTest < SpreeEssentials::IntegrationCase def setup Spree::Post.destroy_all diff --git a/spree_essential_blog/test/integration/spree/blogs/admin/post_images_integration_test.rb b/spree_essential_blog/test/integration/spree/blogs/admin/post_images_integration_test.rb index db9fc256..c7428da5 100644 --- a/spree_essential_blog/test/integration/spree/blogs/admin/post_images_integration_test.rb +++ b/spree_essential_blog/test/integration/spree/blogs/admin/post_images_integration_test.rb @@ -1,30 +1,30 @@ require 'test_helper' -class Spree::Admin::PostImagesIntegrationTest < SpreeEssentials::IntegrationCase +class Spree::Admin::PostFilesIntegrationTest < SpreeEssentials::IntegrationCase setup do - Spree::PostImage.destroy_all + Spree::PostFile.destroy_all @post = Spree::Post.first || Factory.create(:spree_post) end should "have a link to new post image" do - visit spree.admin_post_images_path(@post) + visit spree.admin_post_files_path(@post) btn = find("#new_image_link").native - assert_match /#{spree.new_admin_post_image_path(@post)}$/, btn.attribute('href') + assert_match /#{spree.new_admin_post_file_path(@post)}$/, btn.attribute('href') assert_equal "New Image", btn.text end should "get new post image" do - visit spree.new_admin_post_image_path(@post) + visit spree.new_admin_post_file_path(@post) assert_seen "New Image" - within "#new_post_image" do + within "#new_post_file" do assert has_field?("Attachment") assert has_field?("Alt") end end should "validate post image" do - visit spree.new_admin_post_image_path(@post) + visit spree.new_admin_post_file_path(@post) click_button "Create" within "#errorExplanation" do assert_seen "2 errors prohibited this record from being saved:" @@ -34,35 +34,35 @@ class Spree::Admin::PostImagesIntegrationTest < SpreeEssentials::IntegrationCase end should "create post image" do - visit spree.admin_post_images_path(@post) + visit spree.admin_post_files_path(@post) click_link "New Image" - within "#new_post_image" do + within "#new_post_file" do attach_file "Attachment", sample_image_path fill_in "Alt", :with => "alt text!" end click_button "Create" - assert_equal spree.admin_post_images_path(@post), current_path + assert_equal spree.admin_post_files_path(@post), current_path assert_flash :notice, "Post image has been successfully created!" end context "existing post image" do setup do - @post_image = Factory.create(:spree_post_image, :viewable => @post) + @post_file = Factory.create(:spree_post_file, :viewable => @post) end should "edit and update" do - visit spree.edit_admin_post_image_path(@post, @post_image) - within "#edit_post_image_#{@post_image.id}" do + visit spree.edit_admin_post_file_path(@post, @post_file) + within "#edit_post_file_#{@post_file.id}" do attach_file "Attachment", sample_image_path("2.jpg") fill_in "Alt", :with => "omg!" end click_button "Update" - assert_equal spree.admin_post_images_path(@post), current_path + assert_equal spree.admin_post_files_path(@post), current_path assert_flash :notice, "Post image has been successfully updated!" end should "get destroyed" do - visit spree.admin_post_images_path(@post) + visit spree.admin_post_files_path(@post) within "table.index" do find("a[href='#']").click end @@ -74,17 +74,17 @@ class Spree::Admin::PostImagesIntegrationTest < SpreeEssentials::IntegrationCase context "several post images" do setup do - setup_action_controller_behaviour(Spree::Blogs::Admin::PostImagesController) - @post_images = Array.new(2) {|i| Factory(:spree_post_image, :alt => "Image ##{i + 1}", :viewable => @post, :position => i) } + setup_action_controller_behaviour(Spree::Admin::PostFilesController) + @post_files = Array.new(2) {|i| Factory(:spree_post_file, :alt => "Image ##{i + 1}", :viewable => @post, :position => i) } end should "update positions" do - positions = Hash[@post_images.map{|i| [i.id, 2 - i.position ]}] - visit spree.admin_post_images_path(@post) + positions = Hash[@post_files.map{|i| [i.id, 2 - i.position ]}] + visit spree.admin_post_files_path(@post) assert_seen "Image #1", :within => "tbody tr:first" assert_seen "Image #2", :within => "tbody tr:last" xhr :post, :update_positions, { :post_id => @post.to_param, :positions => positions } - visit spree.admin_post_images_path(@post) + visit spree.admin_post_files_path(@post) assert_seen "Image #2", :within => "tbody tr:first" assert_seen "Image #1", :within => "tbody tr:last" end diff --git a/spree_essential_blog/test/integration/spree/blogs/admin/post_integration_test.rb b/spree_essential_blog/test/integration/spree/blogs/admin/post_integration_test.rb index b6480204..806d3642 100644 --- a/spree_essential_blog/test/integration/spree/blogs/admin/post_integration_test.rb +++ b/spree_essential_blog/test/integration/spree/blogs/admin/post_integration_test.rb @@ -3,7 +3,7 @@ require 'test_helper' -class Spree::Blogs::Admin::PostIntegrationTest < SpreeEssentials::IntegrationCase +class Spree::Admin::PostIntegrationTest < SpreeEssentials::IntegrationCase setup do Spree::Post.destroy_all diff --git a/spree_essential_blog/test/integration/spree/blogs/post_category_integration_test.rb b/spree_essential_blog/test/integration/spree/blogs/post_category_integration_test.rb index 32faae73..d704cacf 100644 --- a/spree_essential_blog/test/integration/spree/blogs/post_category_integration_test.rb +++ b/spree_essential_blog/test/integration/spree/blogs/post_category_integration_test.rb @@ -3,9 +3,9 @@ require 'test_helper' -class Spree::Blogs::PostCategoryIntegrationTest < SpreeEssentials::IntegrationCase +class Spree::PostCategoryIntegrationTest < SpreeEssentials::IntegrationCase - include Spree::Blogs::PostsHelper + include Spree::PostsHelper def setup Spree::Blog.destroy_all diff --git a/spree_essential_blog/test/integration/spree/blogs/post_integration_test.rb b/spree_essential_blog/test/integration/spree/blogs/post_integration_test.rb index 33d1d6ba..36a32d57 100644 --- a/spree_essential_blog/test/integration/spree/blogs/post_integration_test.rb +++ b/spree_essential_blog/test/integration/spree/blogs/post_integration_test.rb @@ -4,10 +4,10 @@ require 'test_helper' -class Spree::Blogs::PostIntegrationTest < SpreeEssentials::IntegrationCase +class Spree::PostIntegrationTest < SpreeEssentials::IntegrationCase - include Spree::Blogs::PostsHelper + include Spree::PostsHelper def setup Spree::Blog.destroy_all diff --git a/spree_essential_blog/test/support/factories.rb b/spree_essential_blog/test/support/factories.rb index c4b68923..12435d31 100644 --- a/spree_essential_blog/test/support/factories.rb +++ b/spree_essential_blog/test/support/factories.rb @@ -17,7 +17,7 @@ name "Jellies" end - factory :spree_post_image, :class => Spree::PostImage do + factory :spree_post_file, :class => Spree::PostFile do viewable { Spree::Post.first } attachment { sample_image } end diff --git a/spree_essential_blog/test/unit/spree/post_image_test.rb b/spree_essential_blog/test/unit/spree/post_image_test.rb index a0bef48a..48ec98b5 100644 --- a/spree_essential_blog/test/unit/spree/post_image_test.rb +++ b/spree_essential_blog/test/unit/spree/post_image_test.rb @@ -1,9 +1,9 @@ require 'test_helper' -class Spree::PostImageTest < ActiveSupport::TestCase +class Spree::PostFileTest < ActiveSupport::TestCase setup do - @post_image = Spree::PostImage.new + @post_file = Spree::PostFile.new end should belong_to(:viewable) @@ -11,28 +11,28 @@ class Spree::PostImageTest < ActiveSupport::TestCase %w(image/jpeg image/gif image/png image/tiff).each do |mime| should "return true for #{mime} as image content" do - @post_image.attachment_content_type = mime - assert @post_image.image_content? + @post_file.attachment_content_type = mime + assert @post_file.image_content? end end %w(application/pdf text/css).each do |mime| should "return false for #{mime} as image content" do - @post_image.attachment_content_type = mime - assert !@post_image.image_content? + @post_file.attachment_content_type = mime + assert !@post_file.image_content? end end should "have blank attachment sizes hash if post is not image content" do hash = {} - assert_equal hash, @post_image.attachment_sizes + assert_equal hash, @post_file.attachment_sizes end %w(image/jpeg image/gif image/png image/tiff).each do |mime| should "have attachment sizes hash for #{mime}" do - @post_image.attachment_content_type = mime + @post_file.attachment_content_type = mime hash = { :mini => '48x48>', :small => '150x150>', :medium => '600x600>', :large => '950x700>' } - assert_equal hash, @post_image.attachment_sizes + assert_equal hash, @post_file.attachment_sizes end end diff --git a/spree_flexi_variants/app/assets/javascripts/store/spree_flexi_variants.js b/spree_flexi_variants/app/assets/javascripts/store/spree_flexi_variants.js index 5d4322d7..db7cab81 100644 --- a/spree_flexi_variants/app/assets/javascripts/store/spree_flexi_variants.js +++ b/spree_flexi_variants/app/assets/javascripts/store/spree_flexi_variants.js @@ -1,4 +1,4 @@ -//= require store/spree_frontend +//= require spree/frontend //= require jquery.formatCurrency-1.4.0.min //= require i18n/jquery.formatCurrency.all //= require_self diff --git a/spree_flexi_variants/app/assets/stylesheets/store/spree_flexi_variants.css b/spree_flexi_variants/app/assets/stylesheets/store/spree_flexi_variants.css index b6e718b5..2a711634 100644 --- a/spree_flexi_variants/app/assets/stylesheets/store/spree_flexi_variants.css +++ b/spree_flexi_variants/app/assets/stylesheets/store/spree_flexi_variants.css @@ -1,4 +1,4 @@ /* - *= require store/spree_frontend + *= require spree/frontend *= require_self */ diff --git a/spree_flexi_variants/app/controllers/spree/admin/ad_hoc_option_types_controller.rb b/spree_flexi_variants/app/controllers/spree/admin/ad_hoc_option_types_controller.rb index 972ca4ca..efeac686 100644 --- a/spree_flexi_variants/app/controllers/spree/admin/ad_hoc_option_types_controller.rb +++ b/spree_flexi_variants/app/controllers/spree/admin/ad_hoc_option_types_controller.rb @@ -1,8 +1,8 @@ module Spree class Admin::AdHocOptionTypesController < Admin::ResourceController - before_filter :load_product, :only => [:selected] - before_filter :load_available_option_values, :only => [:edit] + before_action :load_product, :only => [:selected] + before_action :load_available_option_values, :only => [:edit] def selected @option_types = @product.ad_hoc_option_types diff --git a/spree_flexi_variants/app/controllers/spree/admin/ad_hoc_variant_exclusions_controller.rb b/spree_flexi_variants/app/controllers/spree/admin/ad_hoc_variant_exclusions_controller.rb index 8cd339cb..dbb99fe6 100644 --- a/spree_flexi_variants/app/controllers/spree/admin/ad_hoc_variant_exclusions_controller.rb +++ b/spree_flexi_variants/app/controllers/spree/admin/ad_hoc_variant_exclusions_controller.rb @@ -1,7 +1,7 @@ module Spree class Admin::AdHocVariantExclusionsController < Admin::ResourceController - before_filter :load_product, :only => [:index, :new, :create] + before_action :load_product, :only => [:index, :new, :create] def create diff --git a/spree_flexi_variants/app/controllers/spree/admin/option_types_controller_decorator.rb b/spree_flexi_variants/app/controllers/spree/admin/option_types_controller_decorator.rb index bc080d99..98289023 100644 --- a/spree_flexi_variants/app/controllers/spree/admin/option_types_controller_decorator.rb +++ b/spree_flexi_variants/app/controllers/spree/admin/option_types_controller_decorator.rb @@ -1,7 +1,7 @@ module Spree Admin::OptionTypesController.class_eval do - # not sure if I have to repeat the 'before_filter' for the original option_types account - before_filter :load_product_decorator, :only => [:select_ad_hoc, :available_ad_hoc] + # not sure if I have to repeat the 'before_action' for the original option_types account + before_action :load_product_decorator, :only => [:select_ad_hoc, :available_ad_hoc] def available_ad_hoc set_available_ad_hoc_option_types diff --git a/spree_flexi_variants/app/controllers/spree/admin/product_customization_types_controller.rb b/spree_flexi_variants/app/controllers/spree/admin/product_customization_types_controller.rb index a85b6127..41ec4dba 100644 --- a/spree_flexi_variants/app/controllers/spree/admin/product_customization_types_controller.rb +++ b/spree_flexi_variants/app/controllers/spree/admin/product_customization_types_controller.rb @@ -1,7 +1,7 @@ module Spree class Admin::ProductCustomizationTypesController < Admin::ResourceController - before_filter :load_product, :only => [:selected, :available, :remove] - before_filter :load_calculators, :only => [:new, :edit] + before_action :load_product, :only => [:selected, :available, :remove] + before_action :load_calculators, :only => [:new, :edit] def edit @product_customization_type= ProductCustomizationType.find(params[:id]) diff --git a/spree_flexi_variants/app/controllers/spree/orders_controller_decorator.rb b/spree_flexi_variants/app/controllers/spree/orders_controller_decorator.rb index a33c200e..f9c9d3d4 100644 --- a/spree_flexi_variants/app/controllers/spree/orders_controller_decorator.rb +++ b/spree_flexi_variants/app/controllers/spree/orders_controller_decorator.rb @@ -10,22 +10,18 @@ module Spree # needs to occur in the cart partial for this to be done 'right' # # Adds a new item to the order (creating a new order if none already exists) - def populate - populator = Spree::OrderPopulator.new(current_order(create_order_if_necessary: true), current_currency) - flexi_hash = {ad_hoc_option_value_ids: ad_hoc_option_value_ids, product_customizations: product_customizations} - - if populator.populate(params.slice(:products, :variants, :quantity).merge(flexi_hash)) - current_order.ensure_updated_shipments - - fire_event('spree.cart.add') - fire_event('spree.order.contents_changed') - respond_with(@order) do |format| - format.html { redirect_to cart_path } - end - else - flash[:error] = populator.errors.full_messages.join(" ") - redirect_to :back - end - end +# def populate +# populator = Spree::OrderPopulator.new(current_order(create_order_if_necessary: true), current_currency) +# flexi_hash = {ad_hoc_option_value_ids: ad_hoc_option_value_ids, product_customizations: product_customizations} +# +# if populator.populate(params.slice(:products, :variants, :quantity).merge(flexi_hash)) +# respond_with(@order) do |format| +# format.html { redirect_to cart_path } +# end +# else +# flash[:error] = populator.errors.full_messages.join(" ") +# redirect_to :back +# end +# end end end diff --git a/spree_flexi_variants/app/models/spree/ad_hoc_option_type.rb b/spree_flexi_variants/app/models/spree/ad_hoc_option_type.rb index 086dcae5..873f70dc 100644 --- a/spree_flexi_variants/app/models/spree/ad_hoc_option_type.rb +++ b/spree_flexi_variants/app/models/spree/ad_hoc_option_type.rb @@ -10,7 +10,7 @@ class AdHocOptionType < ActiveRecord::Base # currently no controller for normal users present #attr_accessible :is_required, :ad_hoc_option_values_attributes, :product_id, :option_type_id, :position - default_scope order(:position) + default_scope { order(:position) } # price_modifier_type # is_required diff --git a/spree_flexi_variants/app/models/spree/ad_hoc_option_value.rb b/spree_flexi_variants/app/models/spree/ad_hoc_option_value.rb index 4720d406..53d5d6ae 100644 --- a/spree_flexi_variants/app/models/spree/ad_hoc_option_value.rb +++ b/spree_flexi_variants/app/models/spree/ad_hoc_option_value.rb @@ -6,7 +6,7 @@ class AdHocOptionValue < ActiveRecord::Base has_many :excluded_ad_hoc_option_values, :dependent => :destroy # currently no controller for normal users present - attr_accessible :price_modifier, :ad_hoc_option_type_id, :option_value_id, :selected, :cost_price_modifier + #attr_accessible :price_modifier, :ad_hoc_option_type_id, :option_value_id, :selected, :cost_price_modifier # this opens up a can of worms..deleting option values and having historical data still intact...ugh...what to do?...add 'deleted_at' somewhere along the chain? # has_many :ad_hoc_option_values_line_items, :dependent => :destroy @@ -14,7 +14,7 @@ class AdHocOptionValue < ActiveRecord::Base # price_modifier alias :option_type :ad_hoc_option_type acts_as_list :scope => :ad_hoc_option_type - default_scope order("position asc") + default_scope { order("position asc") } delegate :name, :to => :option_value delegate :presentation, :to => :option_value diff --git a/spree_flexi_variants/app/models/spree/line_item_decorator.rb b/spree_flexi_variants/app/models/spree/decorators/line_item_decorator.rb similarity index 100% rename from spree_flexi_variants/app/models/spree/line_item_decorator.rb rename to spree_flexi_variants/app/models/spree/decorators/line_item_decorator.rb diff --git a/spree_flexi_variants/app/models/spree/option_type_decorator.rb b/spree_flexi_variants/app/models/spree/decorators/option_type_decorator.rb similarity index 100% rename from spree_flexi_variants/app/models/spree/option_type_decorator.rb rename to spree_flexi_variants/app/models/spree/decorators/option_type_decorator.rb diff --git a/spree_flexi_variants/app/models/spree/option_value_decorator.rb b/spree_flexi_variants/app/models/spree/decorators/option_value_decorator.rb similarity index 100% rename from spree_flexi_variants/app/models/spree/option_value_decorator.rb rename to spree_flexi_variants/app/models/spree/decorators/option_value_decorator.rb diff --git a/spree_flexi_variants/app/models/spree/decorators/order_contents_decorator.rb b/spree_flexi_variants/app/models/spree/decorators/order_contents_decorator.rb new file mode 100644 index 00000000..e79a91c2 --- /dev/null +++ b/spree_flexi_variants/app/models/spree/decorators/order_contents_decorator.rb @@ -0,0 +1,67 @@ +module Spree + OrderContents.class_eval do + # Get current line item for variant if exists + # Add variant qty to line_item + def add(variant, quantity = 1, currency = nil, shipment = nil, ad_hoc_option_value_ids = [], product_customizations = []) + line_item = add_to_line_item(variant, quantity, currency, shipment, ad_hoc_option_value_ids, product_customizations) + reload_totals + PromotionHandler::Cart.new(order, line_item).activate + ItemAdjustments.new(line_item).update + reload_totals + line_item + end + + private + def add_to_line_item(variant, quantity, currency=nil, shipment=nil, ad_hoc_option_value_ids = [], product_customizations = []) + line_item = grab_line_item_by_variant(variant, false, ad_hoc_option_value_ids, product_customizations) + + if line_item + line_item.target_shipment = shipment + line_item.quantity += quantity.to_i + line_item.currency = currency unless currency.nil? + else + line_item = order.line_items.new(quantity: quantity, variant: variant) + line_item.target_shipment = shipment + + line_item.product_customizations = product_customizations + product_customizations.each {|pc| pc.line_item = line_item} + + product_customizations.map(&:save) # it is now safe to save the customizations we built + + # find, and add the configurations, if any. these have not been fetched from the db yet. line_items.first.variant_id + # we postponed it (performance reasons) until we actaully knew we needed them + povs=[] + ad_hoc_option_value_ids.each do |cid| + povs << AdHocOptionValue.find(cid) + end + line_item.ad_hoc_option_values = povs + + offset_price = povs.map(&:price_modifier).compact.sum + product_customizations.map {|pc| pc.price(variant)}.sum +Rails.logger.debug "start to get price...." +a = variant.price_in(currency) +b = variant.price_in(currency).amount + Rails.logger.debug "currency=#{currency.inspect},#{currency}, a = #{a.inspect}, b=#{b.inspect}, offset_price=#{offset_price} variant.price_in(currency)=#{variant.price_in(currency)}" + + if currency + line_item.currency = currency unless currency.nil? + line_item.price = variant.price_in(currency).amount + offset_price + else + line_item.price = variant.price + offset_price + end + end + + line_item.save + line_item + end + + def grab_line_item_by_variant(variant, raise_error = false, ad_hoc_option_value_ids = [], product_customizations = []) + line_item = order.find_line_item_by_variant(variant, ad_hoc_option_value_ids, product_customizations) + + if !line_item.present? && raise_error + raise ActiveRecord::RecordNotFound, "Line item not found for variant #{variant.sku}" + end + + line_item + end + end +end diff --git a/spree_flexi_variants/app/models/spree/decorators/order_decorator.rb b/spree_flexi_variants/app/models/spree/decorators/order_decorator.rb new file mode 100644 index 00000000..08b5567e --- /dev/null +++ b/spree_flexi_variants/app/models/spree/decorators/order_decorator.rb @@ -0,0 +1,90 @@ +module Spree + Order.class_eval do + def add_variant(variant, quantity = 1, ad_hoc_option_value_ids=[], product_customizations=[]) + current_item = find_line_item_by_variant(variant, ad_hoc_option_value_ids, product_customizations) + if current_item + current_item.quantity += quantity + current_item.save + else + current_item = LineItem.new(:quantity => quantity) + current_item.variant = variant + + # add the product_customizations, if any + # TODO: is this an unnecessary step? + product_customizations.map(&:save) # it is now safe to save the customizations we created in the OrdersController.populate + + current_item.product_customizations = product_customizations + + # find, and add the configurations, if any. these have not been fetched from the db yet. line_items.first.variant_id + # we postponed it (performance reasons) until we actaully knew we needed them + povs=[] + ad_hoc_option_value_ids.each do |cid| + povs << AdHocOptionValue.find(cid) + end + current_item.ad_hoc_option_values = povs + + current_item.price = variant.price + povs.map(&:price_modifier).compact.sum + product_customizations.map {|pc| pc.price(variant)}.sum + self.line_items << current_item + end + current_item + end + + def contains?(variant, ad_hoc_option_value_ids, product_customizations) + find_line_item_by_variant(variant, ad_hoc_option_value_ids, product_customizations).present? + end + + def find_line_item_by_variant(variant, ad_hoc_option_value_ids, product_customizations) + line_items.detect do |li| + li.variant_id == variant.id && + matching_configurations(li.ad_hoc_option_values,ad_hoc_option_value_ids) && + matching_customizations(li.product_customizations,product_customizations) + end + end + + def merge!(order, user = nil) + order.line_items.each do |line_item| + self.add_variant(line_item.variant, line_item.quantity, line_item.ad_hoc_option_value_ids, line_item.product_customizations) + end + + self.associate_user!(user) if !self.user && !user.blank? + + # So that the destroy doesn't take out line items which may have been re-assigned + order.line_items.reload + order.destroy + end + + private + + # produces a list of [customizable_product_option.id,value] pairs for subsequent comparison + def customization_pairs(product_customizations) + pairs= product_customizations.map(&:customized_product_options).flatten.map do |m| + [m.customizable_product_option.id, m.value.present? ? m.value : m.customization_image.to_s ] + end + + Set.new pairs + end + + def matching_configurations(existing_povs,new_povs) + # if there aren't any povs, there's a 'match' + return true if existing_povs.empty? && new_povs.empty? + + existing_povs.map(&:id).sort == new_povs.map(&:to_i).sort + end + + def matching_customizations(existing_customizations,new_customizations) + + # if there aren't any customizations, there's a 'match' + return true if existing_customizations.empty? && new_customizations.empty? + + # exact match of all customization types? + return false unless existing_customizations.map(&:product_customization_type_id).sort == new_customizations.map(&:product_customization_type_id).sort + + # get a list of [customizable_product_option.id,value] pairs + existing_vals = customization_pairs existing_customizations + new_vals = customization_pairs new_customizations + + # do a set-compare here + existing_vals == new_vals + end + end +end diff --git a/spree_flexi_variants/app/models/spree/order_populator_decorator.rb b/spree_flexi_variants/app/models/spree/decorators/order_populator_decorator.rb similarity index 100% rename from spree_flexi_variants/app/models/spree/order_populator_decorator.rb rename to spree_flexi_variants/app/models/spree/decorators/order_populator_decorator.rb diff --git a/spree_flexi_variants/app/models/spree/product_decorator.rb b/spree_flexi_variants/app/models/spree/decorators/product_decorator.rb similarity index 100% rename from spree_flexi_variants/app/models/spree/product_decorator.rb rename to spree_flexi_variants/app/models/spree/decorators/product_decorator.rb diff --git a/spree_flexi_variants/app/models/spree/excluded_ad_hoc_option_value.rb b/spree_flexi_variants/app/models/spree/excluded_ad_hoc_option_value.rb index 46259d47..f150bf77 100644 --- a/spree_flexi_variants/app/models/spree/excluded_ad_hoc_option_value.rb +++ b/spree_flexi_variants/app/models/spree/excluded_ad_hoc_option_value.rb @@ -3,6 +3,6 @@ class ExcludedAdHocOptionValue < ActiveRecord::Base belongs_to :ad_hoc_variant_exclusion belongs_to :ad_hoc_option_value - attr_accessible :ad_hoc_variant_exclusion, :ad_hoc_option_value_id + #attr_accessible :ad_hoc_variant_exclusion, :ad_hoc_option_value_id end end diff --git a/spree_flexi_variants/app/models/spree/order_contents_decorator.rb b/spree_flexi_variants/app/models/spree/order_contents_decorator.rb deleted file mode 100644 index 2a70709d..00000000 --- a/spree_flexi_variants/app/models/spree/order_contents_decorator.rb +++ /dev/null @@ -1,49 +0,0 @@ -module Spree - OrderContents.class_eval do - # Get current line item for variant if exists - # Add variant qty to line_item - def add(variant, quantity = 1, currency = nil, shipment = nil, ad_hoc_option_value_ids = [], product_customizations = []) - line_item = order.find_line_item_by_variant(variant, ad_hoc_option_value_ids, product_customizations) - add_to_line_item(line_item, variant, quantity, currency, shipment, ad_hoc_option_value_ids, product_customizations) - end - - private - def add_to_line_item(line_item, variant, quantity, currency=nil, shipment=nil, ad_hoc_option_value_ids = [], product_customizations = []) - if line_item - line_item.target_shipment = shipment - line_item.quantity += quantity.to_i - line_item.currency = currency unless currency.nil? - else - line_item = order.line_items.new(quantity: quantity, variant_id: variant.id) - line_item.target_shipment = shipment - - product_customizations.map(&:save) # it is now safe to save the customizations we built - - line_item.product_customizations = product_customizations - - # find, and add the configurations, if any. these have not been fetched from the db yet. line_items.first.variant_id - # we postponed it (performance reasons) until we actaully knew we needed them - povs=[] - ad_hoc_option_value_ids.each do |cid| - povs << AdHocOptionValue.find(cid) - end - line_item.ad_hoc_option_values = povs - - offset_price = povs.map(&:price_modifier).compact.sum + product_customizations.map {|pc| pc.price(variant)}.sum - - if currency - line_item.currency = currency unless currency.nil? - line_item.price = variant.price_in(currency).amount + offset_price - else - line_item.price = variant.price + adjusted_price - end - end - - line_item.save - order.reload - - line_item - end - - end -end diff --git a/spree_flexi_variants/app/models/spree/order_decorator.rb b/spree_flexi_variants/app/models/spree/order_decorator.rb deleted file mode 100644 index b25b2b87..00000000 --- a/spree_flexi_variants/app/models/spree/order_decorator.rb +++ /dev/null @@ -1,68 +0,0 @@ -module Spree - Order.class_eval do - - def find_line_item_by_variant(variant, ad_hoc_option_value_ids=[], product_customizations=[]) - line_items.detect do |li| - li.variant_id == variant.id && - matching_configurations(li.ad_hoc_option_values,ad_hoc_option_value_ids) && - matching_customizations(li.product_customizations,product_customizations) - end - end - - # copy original method merge! here, only change the way get current_line_item - def merge!(order, user = nil) - order.line_items.each do |line_item| - next unless line_item.currency == currency - # change the way get current_line_item - current_line_item = find_line_item_by_variant( line_item.variant, line_item.ad_hoc_option_value_ids, line_item.product_customizations ) - if current_line_item - current_line_item.quantity += line_item.quantity - current_line_item.save - else - line_item.order_id = self.id - line_item.save - end - end - - self.associate_user!(user) if !self.user && !user.blank? - - # So that the destroy doesn't take out line items which may have been re-assigned - order.line_items.reload - order.destroy - end - - private - - # produces a list of [customizable_product_option.id,value] pairs for subsequent comparison - def customization_pairs(product_customizations) - pairs= product_customizations.map(&:customized_product_options).flatten.map do |m| - [m.customizable_product_option.id, m.value.present? ? m.value : m.customization_image.to_s ] - end - - Set.new pairs - end - - def matching_configurations(existing_povs,new_povs) - # if there aren't any povs, there's a 'match' - return true if existing_povs.empty? && new_povs.empty? - - existing_povs.map(&:id).sort == new_povs.map(&:to_i).sort - end - - def matching_customizations(existing_customizations,new_customizations) - - # if there aren't any customizations, there's a 'match' - return true if existing_customizations.empty? && new_customizations.empty? - - # exact match of all customization types? - return false unless existing_customizations.map(&:product_customization_type_id).sort == new_customizations.map(&:product_customization_type_id).sort - - # get a list of [customizable_product_option.id,value] pairs - existing_vals = customization_pairs existing_customizations - new_vals = customization_pairs new_customizations - - # do a set-compare here - existing_vals == new_vals - end - end -end diff --git a/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/_option_value_fields.html.erb b/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/_option_value_fields.html.erb index 8ba37c67..ca0dc33c 100644 --- a/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/_option_value_fields.html.erb +++ b/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/_option_value_fields.html.erb @@ -8,7 +8,7 @@ <%#link_to_remove_nested_fields t("remove"), f, :no_text => true, :nest => "ad_hoc_option_type" %> <%= link_to_with_icon( - 'icon-trash', '', + 'trash', '', admin_ad_hoc_option_value_path(f.object), :method => :delete, :class => "remove_fields no-text with-tip" diff --git a/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/_selected.html.erb b/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/_selected.html.erb index d7db851d..147054ff 100644 --- a/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/_selected.html.erb +++ b/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/_selected.html.erb @@ -38,5 +38,5 @@
    - <%= button_link_to t("add_option_type"), available_ad_hoc_admin_product_option_types_url(@product), :remote => :true, :class => 'iconlink', :icon => 'icon-plus' %> + <%= button_link_to t("add_option_type"), available_ad_hoc_admin_product_option_types_url(@product), :remote => :true, :class => 'iconlink', :icon => 'plus' %> diff --git a/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/edit.html.erb b/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/edit.html.erb index 6a0273df..5bb5db28 100644 --- a/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/edit.html.erb +++ b/spree_flexi_variants/app/views/spree/admin/ad_hoc_option_types/edit.html.erb @@ -42,9 +42,9 @@ <% end %>
    - <%= button t("update"), 'icon-refresh' %> + <%= button t("update"), 'refresh' %> <%= t("or") %> - <%= button_link_to t("cancel"), selected_admin_product_ad_hoc_option_types_url(@ad_hoc_option_type.product), :icon => 'icon-remove' %> + <%= button_link_to t("cancel"), selected_admin_product_ad_hoc_option_types_url(@ad_hoc_option_type.product), :icon => 'remove' %>
    <% end %> diff --git a/spree_flexi_variants/app/views/spree/admin/option_types/_available_ad_hoc.html.erb b/spree_flexi_variants/app/views/spree/admin/option_types/_available_ad_hoc.html.erb index e4d785f9..465a96be 100644 --- a/spree_flexi_variants/app/views/spree/admin/option_types/_available_ad_hoc.html.erb +++ b/spree_flexi_variants/app/views/spree/admin/option_types/_available_ad_hoc.html.erb @@ -12,10 +12,10 @@ <%=ot.name %> <%=ot.presentation %> - <%= link_to_with_icon 'icon-plus', t("select"), + <%= link_to_with_icon 'plus', t("select"), url_for(:controller => "admin/option_types", :id => ot, - :product_id => @product.permalink, + :product_id => @product.friendly_id, :action => "select_ad_hoc", :option_type_id => ot), :class => 'iconlink' %> diff --git a/spree_flexi_variants/app/views/spree/admin/product_customization_types/_available.html.erb b/spree_flexi_variants/app/views/spree/admin/product_customization_types/_available.html.erb index 94091bb7..3aaf59c3 100644 --- a/spree_flexi_variants/app/views/spree/admin/product_customization_types/_available.html.erb +++ b/spree_flexi_variants/app/views/spree/admin/product_customization_types/_available.html.erb @@ -14,7 +14,7 @@ <%= link_to icon('add') + ' ' + t("select"), url_for(:controller => "admin/product_customization_types", :id => ct, - :product_id => @product.permalink, + :product_id => @product.friendly_id, :action => "select", :product_customization_type_id => ct), :remote => true, :class => 'iconlink' %> diff --git a/spree_flexi_variants/app/views/spree/admin/product_customization_types/edit.html.erb b/spree_flexi_variants/app/views/spree/admin/product_customization_types/edit.html.erb index ccbf1f2a..76729356 100644 --- a/spree_flexi_variants/app/views/spree/admin/product_customization_types/edit.html.erb +++ b/spree_flexi_variants/app/views/spree/admin/product_customization_types/edit.html.erb @@ -6,7 +6,7 @@ <% content_for :page_actions do %>
  • - <%= button_link_to Spree.t(:product_customization_types_list), spree.admin_product_customization_types_path, :icon => 'icon-arrow-left' %> + <%= button_link_to Spree.t(:product_customization_types_list), spree.admin_product_customization_types_path, :icon => 'arrow-left' %>
  • <% end %> diff --git a/spree_flexi_variants/app/views/spree/admin/product_customization_types/index.html.erb b/spree_flexi_variants/app/views/spree/admin/product_customization_types/index.html.erb index f78fe76c..ca7b06ea 100644 --- a/spree_flexi_variants/app/views/spree/admin/product_customization_types/index.html.erb +++ b/spree_flexi_variants/app/views/spree/admin/product_customization_types/index.html.erb @@ -3,7 +3,7 @@ <% content_for(:page_title, Spree.t("product_customization_types")) %> <% content_for(:page_actions) do %> <% end %> diff --git a/spree_multi_site/Gemfile b/spree_multi_site/Gemfile index 5581d11c..b9484863 100644 --- a/spree_multi_site/Gemfile +++ b/spree_multi_site/Gemfile @@ -1,13 +1,6 @@ -source 'http://ruby.taobao.org' +source 'https://ruby.taobao.org' #source 'http://rubygems.org' - - -group :development,:test do - gem 'mail_view' - # Provides basic authentication functionality for testing parts of your engine - gem 'spree', '~>2.4' # required to create dummy - #gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: '2-0-stable' -end +#do not inlucde spree_devise_auth, or spec has to skip authorization +#eval(File.read(File.dirname(__FILE__) + '/../common_spree_dependencies.rb')) gemspec - diff --git a/spree_multi_site/README.md b/spree_multi_site/README.md index 72bde69a..0e347105 100644 --- a/spree_multi_site/README.md +++ b/spree_multi_site/README.md @@ -5,26 +5,26 @@ Introduction goes here. # set site sample_path, default is Rails.application.root/db/sample # copy it into config/initializers/spree.rb Spree::Site.sample_path = File.join(Rails.application.root, "db", 'sample') - # url for site admin + # url for site admin http://localhost:3000/admin/sites - - # create new site + + # create new site http://localhost:3000/new_site - + # it is using delayed_job to load sample when create site vie above url # Start a delayed_job worker. rake jobs:work want more about delayed_job, please go to https://github.com/collectiveidea/delayed_job - - # a site load the sample data in console + + # a site load the sample data in console $> rails r "Spree::Site.first.load_sample" - - # a site remove sample data in console + + # a site remove sample data in console $> rails r "Spree::Site.first.load_sample(false)" - + # login shop by localhost for test please set cookies key :abc_development_domain=your-site-domain. - + Example ======= @@ -38,9 +38,9 @@ Be sure to bundle your dependencies and then create a dummy test app for the spe $ bundle $ bundle exec rake test app $ bundle exec rspec spec - # modify spec/dummy/db/seeds, add next line,comment out other lines + # modify spec/dummy/db/seeds, add next line,comment out other lines # SpreeMultiSite::Engine.load_seed if defined?(SpreeMultiSite) - + # if you delete all migrations in db/migrate, try all belows to recovery bundle exec rake spree:install:migrations bundle exec rake spree_api:install:migrations @@ -50,13 +50,13 @@ Be sure to bundle your dependencies and then create a dummy test app for the spe # load default data, no sample $ rake db:test:clone $ rake db:seed RAILS_ENV=test - + After load default&first seeds, you could test manually by providing those parameters or cookies, - params[:n]: n is 'short_name.dalianshops.com' - cookies[:abc_development_short_name]: abc_development_short_name is site's short_name + params[:n]: n is '#{n}.tld' + cookies[:abc_development_short_name]: abc_development_short_name is site's short_name Todos ======= fix db index, add site_id into index - + Copyright (c) 2012 [david,hui], released under the New BSD License diff --git a/spree_multi_site/app/assets/javascripts/spree/backend/spree_multi_site.js b/spree_multi_site/app/assets/javascripts/spree/backend/spree_multi_site.js new file mode 100644 index 00000000..1424ae2d --- /dev/null +++ b/spree_multi_site/app/assets/javascripts/spree/backend/spree_multi_site.js @@ -0,0 +1 @@ +//= require spree/backend diff --git a/spree_multi_site/app/assets/javascripts/spree/frontend/spree_multi_site.js b/spree_multi_site/app/assets/javascripts/spree/frontend/spree_multi_site.js new file mode 100644 index 00000000..fa0a16ee --- /dev/null +++ b/spree_multi_site/app/assets/javascripts/spree/frontend/spree_multi_site.js @@ -0,0 +1 @@ +//= require spree/frontend diff --git a/spree_multi_site/app/assets/javascripts/store/spree_multi_site.js b/spree_multi_site/app/assets/javascripts/store/spree_multi_site.js deleted file mode 100644 index d10fba7f..00000000 --- a/spree_multi_site/app/assets/javascripts/store/spree_multi_site.js +++ /dev/null @@ -1 +0,0 @@ -//= require store/spree_frontend diff --git a/spree_multi_site/app/assets/stylesheets/spree/backend/spree_multi_site.css b/spree_multi_site/app/assets/stylesheets/spree/backend/spree_multi_site.css new file mode 100644 index 00000000..a5cec986 --- /dev/null +++ b/spree_multi_site/app/assets/stylesheets/spree/backend/spree_multi_site.css @@ -0,0 +1,3 @@ +/* + *= require spree/backend +*/ diff --git a/spree_multi_site/app/assets/stylesheets/spree/frontend/spree_multi_site.css b/spree_multi_site/app/assets/stylesheets/spree/frontend/spree_multi_site.css new file mode 100644 index 00000000..ad7db303 --- /dev/null +++ b/spree_multi_site/app/assets/stylesheets/spree/frontend/spree_multi_site.css @@ -0,0 +1,3 @@ +/* + *= require spree/frontend +*/ diff --git a/spree_multi_site/app/assets/stylesheets/store/spree_multi_site.css b/spree_multi_site/app/assets/stylesheets/store/spree_multi_site.css deleted file mode 100644 index bce0f84f..00000000 --- a/spree_multi_site/app/assets/stylesheets/store/spree_multi_site.css +++ /dev/null @@ -1,3 +0,0 @@ -/* - *= require store/spree_frontend -*/ diff --git a/spree_multi_site/app/controllers/spree/admin/general_settings_controller_decorator.rb b/spree_multi_site/app/controllers/spree/admin/general_settings_controller_decorator.rb index 94e6da54..cd02d25b 100644 --- a/spree_multi_site/app/controllers/spree/admin/general_settings_controller_decorator.rb +++ b/spree_multi_site/app/controllers/spree/admin/general_settings_controller_decorator.rb @@ -1,18 +1,28 @@ Spree::Admin::GeneralSettingsController.class_eval do #override original, update site model + def edit + @preferences_security = [:allow_ssl_in_production, + :allow_ssl_in_staging, :allow_ssl_in_development_and_test, + :check_for_spree_alerts] + @preferences_currency = [:display_currency, :hide_cents] + end + + def update - params.each do |name, value| - next unless Spree::Config.has_preference? name - Spree::Config[name] = value - if name =='site_name' - Spree::Site.current.update_attribute(:name, value) - end - if name =='site_url' - Spree::Site.current.update_attribute(:domain, value) - end - end - flash[:success] = Spree.t(:successfully_updated, :resource => Spree.t(:general_settings)) + #params.each do |name, value| + # next unless Spree::Config.has_preference? name + # Spree::Config[name] = value + #end + current_store.update_attributes store_params + + current_store.site.update_attributes site_params + flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:general_settings)) redirect_to edit_admin_general_settings_path end - end \ No newline at end of file + + def site_params + params.require(:site).permit(Spree::PermittedAttributes.site_attributes) + end + + end diff --git a/spree_multi_site/app/controllers/spree/admin/images_controller_decorator.rb b/spree_multi_site/app/controllers/spree/admin/images_controller_decorator.rb index af1212d3..e65ebeee 100644 --- a/spree_multi_site/app/controllers/spree/admin/images_controller_decorator.rb +++ b/spree_multi_site/app/controllers/spree/admin/images_controller_decorator.rb @@ -1,24 +1,24 @@ Spree::Admin::ImagesController.class_eval do - create.before :update_paperclip_settings - update.before :update_paperclip_settings + #create.before :update_paperclip_settings + #update.before :update_paperclip_settings private + # we do not support this feature now. # copy from image_settings_controller # by default Spree::Image.attachment_definitions is set before site initialize, we need reset it after get site. - def update_paperclip_settings - if Spree::Config[:use_s3] - s3_creds = { :access_key_id => Spree::Config[:s3_access_key], :secret_access_key => Spree::Config[:s3_secret], :bucket => Spree::Config[:s3_bucket] } - Spree::Image.attachment_definitions[:attachment][:storage] = :s3 - Spree::Image.attachment_definitions[:attachment][:s3_credentials] = s3_creds - Spree::Image.attachment_definitions[:attachment][:s3_headers] = ActiveSupport::JSON.decode(Spree::Config[:s3_headers]) - Spree::Image.attachment_definitions[:attachment][:bucket] = Spree::Config[:s3_bucket] - else - Spree::Image.attachment_definitions[:attachment].delete :storage - end - - Spree::Image.attachment_definitions[:attachment][:styles] = ActiveSupport::JSON.decode(Spree::Config[:attachment_styles]).symbolize_keys! - Spree::Image.attachment_definitions[:attachment][:path] = Spree::Config[:attachment_path] - Spree::Image.attachment_definitions[:attachment][:default_url] = Spree::Config[:attachment_default_url] - Spree::Image.attachment_definitions[:attachment][:default_style] = Spree::Config[:attachment_default_style] - end + #def update_paperclip_settings + # if Spree::Config[:use_s3] + # s3_creds = { :access_key_id => Spree::Config[:s3_access_key], :secret_access_key => Spree::Config[:s3_secret], :bucket => Spree::Config[:s3_bucket] } + # Spree::Image.attachment_definitions[:attachment][:storage] = :s3 + # Spree::Image.attachment_definitions[:attachment][:s3_credentials] = s3_creds + # Spree::Image.attachment_definitions[:attachment][:s3_headers] = ActiveSupport::JSON.decode(Spree::Config[:s3_headers]) + # Spree::Image.attachment_definitions[:attachment][:bucket] = Spree::Config[:s3_bucket] + # else + # Spree::Image.attachment_definitions[:attachment].delete :storage + # end + # Spree::Image.attachment_definitions[:attachment][:styles] = ActiveSupport::JSON.decode(Spree::Config[:attachment_styles]).symbolize_keys! + # Spree::Image.attachment_definitions[:attachment][:path] = Spree::Config[:attachment_path] + # Spree::Image.attachment_definitions[:attachment][:default_url] = Spree::Config[:attachment_default_url] + # Spree::Image.attachment_definitions[:attachment][:default_style] = Spree::Config[:attachment_default_style] + #end end diff --git a/spree_multi_site/app/controllers/spree/admin/products_controller_decorator.rb b/spree_multi_site/app/controllers/spree/admin/products_controller_decorator.rb index c8a2f691..d1921d8a 100644 --- a/spree_multi_site/app/controllers/spree/admin/products_controller_decorator.rb +++ b/spree_multi_site/app/controllers/spree/admin/products_controller_decorator.rb @@ -1,21 +1,18 @@ Spree::Admin::ProductsController.class_eval do update.before :prepare_more_params create.before :prepare_more_params - around_filter :only=>[:create,:edit, :update, :destroy] do |controller, action_block| - Spree::MultiSiteSystem.with_context_admin_site_product{ - action_block.call + around_action :only=>[:create,:edit, :update, :destroy] do |controller, action_block| + Spree::MultiSiteSystem.with_context_free_taxon{ + action_block.call } end - - + + private def prepare_more_params if params[:product][:global_taxon_ids].present? params[:product][:global_taxon_ids] = params[:product][:global_taxon_ids].split(',') end - end - - #def prepare_multi_site_context - # Spree::MultiSiteSystem.setup_context('admin_site_product') - #end - end \ No newline at end of file + end + + end diff --git a/spree_multi_site/app/controllers/spree/admin/sites_controller.rb b/spree_multi_site/app/controllers/spree/admin/sites_controller.rb index 62743966..e4dbdbda 100644 --- a/spree_multi_site/app/controllers/spree/admin/sites_controller.rb +++ b/spree_multi_site/app/controllers/spree/admin/sites_controller.rb @@ -1,27 +1,27 @@ module Spree module Admin class SitesController< Spree::Admin::ResourceController - before_filter :ensure_access_allowed + before_action :ensure_access_allowed #resource_controller self.create.after( :create_after ) - + def index @sites = Site.ransack(params[:q]).result.page(params[:page]).per(params[:per_page]) end - + def new @user = @site.users.build - super + super end - + def create @user = Spree.user_class.new(params[:user]) @site.users << @user super end - + def create_after - @site.users.first.roles << Role.find_by_name("admin") + @site.users.first.roles << Role.find_by_name("admin") # should not add @site.name as suffix of role.name, User.admin require :name="admin" if @site.has_sample? @site.load_sample @@ -30,13 +30,14 @@ def create_after #Delayed::Job.enqueue SampleSeedJob.new( @site ) end end - + private def ensure_access_allowed - unless Spree::Site.current.dalianshops? - redirect_to Spree::Site.current.admin_url + unless Spree::Store.current.god? + raise CanCan::AccessDenied.new("Not authorized!", :access, Site) + #redirect_to Spree::Site.current.admin_url end end end end -end \ No newline at end of file +end diff --git a/spree_multi_site/app/controllers/spree/api/v1/variants_controller_decorator.rb b/spree_multi_site/app/controllers/spree/api/v1/variants_controller_decorator.rb new file mode 100644 index 00000000..16134ef8 --- /dev/null +++ b/spree_multi_site/app/controllers/spree/api/v1/variants_controller_decorator.rb @@ -0,0 +1,8 @@ +Spree::Api::V1::VariantsController.class_eval do + def index + # since variant have no site_id, we should join product here + @variants = scope.joins(:product).includes({ option_values: :option_type }, :product, :default_price, :images, { stock_items: :stock_location }) + .ransack(params[:q]).result.page(params[:page]).per(params[:per_page]) + respond_with(@variants) + end +end diff --git a/spree_multi_site/app/controllers/spree/sites_controller.rb b/spree_multi_site/app/controllers/spree/sites_controller.rb index 248521e0..0e408c35 100644 --- a/spree_multi_site/app/controllers/spree/sites_controller.rb +++ b/spree_multi_site/app/controllers/spree/sites_controller.rb @@ -1,69 +1,78 @@ -#encoding: utf-8 module Spree class SitesController< StoreController - respond_to :html,:js - + #respond_to :html,:js + + def one_click_trial + @site = Site.new + end + def new if params[:template_theme_id].present? - @template_theme = Spree::TemplateTheme.foreign.find params[:template_theme_id] + @template_theme = Spree::TemplateTheme.foreign.find params[:template_theme_id] end - @site = Site.new + @site = Site.new @user = @site.users.build + @store = @site.stores.build end - - # called from dalianshops home page + + # called from www.tld home page def quick_lunch - params[:user][:password_confirmation] = params[:user][:password] - @site = create_site( params[:site], params[:user] ) + + @site = create_site( permitted_resource_params ) if @site.persisted? redirect_to @site.admin_url else - redirect_to root_path() - end + redirect_to root_path() + end end - + def show @site = Site.find(params[:id]) render :after_new end - + def create - @site = create_site( params[:site], params[:user] ) + @site = create_site( permitted_resource_params ) if @site.persisted? flash[:success] = Spree.t(:site_successfully_opened, :site_name => @site.name) #redirect_to @site.admin_url, format: 'js', status: 303 respond_with(@site) do |format| format.html { redirect_to @site.admin_url } format.js { render :js => "window.location = '#{@site.admin_url}'" } - end + end else respond_with(@site) do |format| format.js { render :action => 'new'} - end + end end end - - # options - def create_site( site_params, user_params, options= {}) - site = Site.new(site_params) - user = Spree.user_class.new(user_params) - site.users << user + + # options + def create_site( permitted_site_params) + site = Site.new(permitted_site_params) if site.save - site.users.first.spree_roles << Spree::Role.find_by_name('admin') - shipping_category = site.shipping_categories.create!( :name=>Spree.t(:default)) # should not add @site.name as suffix of role.name, User.admin require :name="admin" if site.has_sample? site.load_sample #@site.update_attributes!(:loading_sample=>true) # add job to load sample #Delayed::Job.enqueue SampleSeedJob.new( @site ) - end + end else flash[:error] = Spree.t('errors.messages.could_not_create_site') - end + end site end - + + private + def permitted_resource_params + params[object_name].present? ? params.require(object_name).permit! : ActionController::Parameters.new + end + + def object_name + 'site' + end + end - -end \ No newline at end of file + +end diff --git a/spree_multi_site/app/helpers/spree/base_helper_decorator.rb b/spree_multi_site/app/helpers/spree/base_helper_decorator.rb new file mode 100644 index 00000000..e75ded08 --- /dev/null +++ b/spree_multi_site/app/helpers/spree/base_helper_decorator.rb @@ -0,0 +1,15 @@ +module Spree + module BaseHelper + private + # override original, always return style for feature :aliyun_oss + # Returns style of image or nil + def image_style_from_method_name(method_name) + if method_name.to_s.match(/_image$/) && style = method_name.to_s.sub(/_image$/, '') + #possible_styles = Spree::Image.attachment_definitions[:attachment][:styles] + #style if style.in? possible_styles.with_indifferent_access + style + end + end + + end +end diff --git a/spree_multi_site/app/jobs/sample_seed_job.rb b/spree_multi_site/app/jobs/sample_seed_job.rb index df3fd168..7efe4e38 100644 --- a/spree_multi_site/app/jobs/sample_seed_job.rb +++ b/spree_multi_site/app/jobs/sample_seed_job.rb @@ -1,14 +1,13 @@ class SampleSeedJob < Struct.new(:site) def perform - Spree::Site.current = site + Spree::Site.current = site #site.users.first, it require `spree_users`.`site_id` =current_site.id admin_user = site.users.first - site.load_sample -Rails.logger.info "user=#{admin_user.id}" + site.load_sample Spree::UserMailer.load_sample(admin_user).deliver end def success(job) site.update_attributes!(:loading_sample=>false) end -end \ No newline at end of file +end diff --git a/spree_multi_site/app/models/spree/decorator/taxon_decorator.rb b/spree_multi_site/app/models/spree/decorator/taxon_decorator.rb new file mode 100644 index 00000000..076290b8 --- /dev/null +++ b/spree_multi_site/app/models/spree/decorator/taxon_decorator.rb @@ -0,0 +1,3 @@ +Spree::Taxon.class_eval do + +end diff --git a/spree_multi_site/app/models/spree/image_decorator.rb b/spree_multi_site/app/models/spree/image_decorator.rb index d35777c6..6b4fa1aa 100644 --- a/spree_multi_site/app/models/spree/image_decorator.rb +++ b/spree_multi_site/app/models/spree/image_decorator.rb @@ -1,30 +1,46 @@ Spree::Image.class_eval do -#override attachement[:path] - Spree::Image.attachment_definitions[:attachment][:url] = '/shops/:rails_env/:site/products/:id/:basename_:style.:extension' - Spree::Image.attachment_definitions[:attachment][:path] = ':rails_root/public/shops/:rails_env/:site/products/:id/:basename_:style.:extension' + #override attachement[:path] + attachment_definitions[:attachment][:url] = '/shops/:rails_env/:site/products/:id/:basename_:style.:extension' + attachment_definitions[:attachment][:path] = ':rails_root/public/shops/:rails_env/:site/products/:id/:basename_:style.:extension' + attachment_definitions[:attachment][:styles] = { mini: '48x48>', small: '100x100>', product: '240x240>', medium: '350x350>', large: '600x600>' } - Spree::Image.attachment_definitions[:attachment][:styles] = { mini: '48x48>', small: '100x100>', product: '240x240>', medium: '350x350>', large: '600x600>' } + extend SpreeMultiSite::PaperclipAliyunOssHelper end Spree::Taxon.class_eval do - #override attachement[:path] + #override attachement[:path] attachment_definitions[:icon][:url] = '/shops/:rails_env/:site/taxons/:id/:style/:basename.:extension' attachment_definitions[:icon][:path] = ':rails_root/public/shops/:rails_env/:site/taxons/:id/:style/:basename.:extension' + + extend SpreeMultiSite::PaperclipAliyunOssHelper end #Spree::Post.class_eval do -# #override attachement[:path] -# attachment_definitions[:cover][:url] = '/shops/:rails_env/:site/posts/:id/:style/:basename.:extension' -# attachment_definitions[:cover][:path] = ':rails_root/public/shops/:rails_env/:site/posts/:id/:style/:basename.:extension' +# #override attachement[:path] +# attachment_definitions[:cover][:url] = '/shops/:rails_env/:site/posts/:id/:basename_:style.:extension' +# attachment_definitions[:cover][:path] = ':rails_root/public/shops/:rails_env/:site/posts/:id/:basename_:style.:extension' +# extend SpreeMultiSite::PaperclipAliyunOssHelper #end -Rails.application.config.spree_multi_site.site_scope_required_classes_with_image_from_other_gems.each do |attachement_name_symbol, extra_class| - extra_class.class_eval do - include Spree::MultiSiteSystem - # Spree::Post => 'posts' - attachment_definitions[attachement_name_symbol][:url] = "/shops/:rails_env/:site/#{extra_class.to_s.demodulize.underscore.pluralize}/:id/:style/:basename.:extension" - attachment_definitions[attachement_name_symbol][:path] = ':rails_root/public/shops/:rails_env/:site/#{extra_class.to_s.demodulize.underscore.pluralize}/:id/:style/:basename.:extension' +#Spree::TemplateFile.class_eval do +# attachment_definitions[:attachment][:url] = "/shops/:rails_env/:site/:class/:id/:basename_:style.:extension" +# attachment_definitions[:attachment][:path] = ":rails_root/public/shops/:rails_env/:site/:class/:id/:basename_:style.:extension" +# extend SpreeMultiSite::PaperclipAliyunOssHelper +#end - end +# these class do not define in spree and spree_multi_site, we should specify in +# site_scope_required_classes_with_image_from_other_gems, or cause error uninitialized constant +# eventhough spree_multi_site is in spree_abc, tests in spree_multi_site would not work. +# [['Spree::Post',:cover],['Spree::TemplateFile',:attachment]] +Rails.application.config.spree_multi_site.site_scope_required_classes_with_image_from_other_gems.each do | klass, attachement_name_symbol| +# extra_class.class_eval do +# include Spree::MultiSiteSystem +# end + klass.constantize.class_eval do + # Spree::Post => 'posts' class.to_s.demodulize.underscore.pluralize + attachment_definitions[attachement_name_symbol][:url] = "/shops/:rails_env/:site/:class/:id/:basename_:style.:extension" + attachment_definitions[attachement_name_symbol][:path] = ':rails_root/public/shops/:rails_env/:site/:class/:id/:basename_:style.:extension' + extend SpreeMultiSite::PaperclipAliyunOssHelper + end end diff --git a/spree_multi_site/app/models/spree/multi_site_configuration.rb b/spree_multi_site/app/models/spree/multi_site_configuration.rb index dd2cac21..524d2ac0 100644 --- a/spree_multi_site/app/models/spree/multi_site_configuration.rb +++ b/spree_multi_site/app/models/spree/multi_site_configuration.rb @@ -1,10 +1,4 @@ -# I have to create own configuration class, -# because that app_configuration_decorator is loaded after initialize, -# so in config/initializers/spree.rb, could not get seed_dir -# this new class would work module Spree class MultiSiteConfiguration < Preferences::Configuration - #description start with global means it is for whole application, not just one site - preference :seed_dir, :string, :default => File.join(SpreeMultiSite::Engine.root,'db') end end diff --git a/spree_multi_site/app/models/spree/preferences/preferable_decorator.rb b/spree_multi_site/app/models/spree/preferences/preferable_decorator.rb index c9165ff6..f0f82899 100644 --- a/spree_multi_site/app/models/spree/preferences/preferable_decorator.rb +++ b/spree_multi_site/app/models/spree/preferences/preferable_decorator.rb @@ -1,8 +1,8 @@ -Spree::Preferences::Preferable.class_eval do - #replace original :preference_cache_key, add current_site.id as part of key - #fix error Duplicate entry 'spree/calculator/flat_rate/amount/1' - def preference_cache_key(name) - return unless id - [self.class.name, name, id, Spree::Site.current.id].join('::').underscore - end -end \ No newline at end of file +#Spree::Preferences::Preferable.class_eval do +# #replace original :preference_cache_key, add current_site.id as part of key +# #fix error Duplicate entry 'spree/calculator/flat_rate/amount/1' +# def preference_cache_key(name) +# return unless id +# [self.class.name, name, id, Spree::Site.current.id].join('::').underscore +# end +#end diff --git a/spree_multi_site/app/models/spree/site.rb b/spree_multi_site/app/models/spree/site.rb index 6ba7c129..df08cf02 100644 --- a/spree_multi_site/app/models/spree/site.rb +++ b/spree_multi_site/app/models/spree/site.rb @@ -1,13 +1,14 @@ #encoding: utf-8 class Spree::Site < ActiveRecord::Base - cattr_accessor :unknown,:subdomain_regexp, :loading_fake_order_with_sample + cattr_accessor :subdomain_regexp + has_many :taxonomies,:inverse_of =>:site,:dependent=>:destroy has_many :products,:inverse_of =>:site,:dependent=>:destroy has_many :orders,:inverse_of =>:site,:dependent=>:destroy - has_many :users,:dependent=>:destroy, :class_name=>"Spree::User" #Spree.user_class.to_s - #FIXME,:inverse_of =>:site, it cause uninitialized constant Spree::Site::, + has_many :users,:dependent=>:destroy, :class_name=>Spree.user_class.to_s + #FIXME,:inverse_of =>:site, it cause uninitialized constant Spree::Site::, has_many :tax_categories,:inverse_of =>:site,:dependent=>:destroy - + has_many :shipping_categories,:dependent=>:destroy has_many :shipping_methods,:dependent=>:destroy has_many :prototypes,:dependent=>:destroy @@ -16,62 +17,66 @@ class Spree::Site < ActiveRecord::Base has_many :payment_methods,:dependent=>:destroy has_many :assets,:dependent=>:destroy has_many :zones,:dependent=>:destroy - has_many :state_changes,:dependent=>:destroy + has_many :state_changes,:dependent=>:destroy + + has_many :stores, :dependent=>:destroy #acts_as_nested_set + accepts_nested_attributes_for :stores accepts_nested_attributes_for :users - - #app_configuration require site_id - self.unknown = Struct.new(:id).new(0) + # it is load before create site table. self.new would trigger error "Table spree_sites' doesn't exist" # db/migrate/some_migration is using Spree::Product, it has default_scope using Site.current.id # so it require a default value. self.subdomain_regexp = /\A([a-z0-9\-])*\Z/ - self.loading_fake_order_with_sample = false + + enum status: { active: 0, inactive: 1 } + #these attr is only used when create site, it is unavailabe in other case. + attr_accessor :email, :password, :password_confirmation + validates :name, length: 4..32 #"中国".length=> 2 - validates :short_name, uniqueness: true, presence: true, length: 4..32, format: {with: subdomain_regexp} #, unless: "domain.blank?" - validates_uniqueness_of :domain, :allow_blank=>true + # do not allow user set short_name, it is generated by name, length can be 3..32, allow 'www' for test. + validates :short_name, uniqueness: true, presence: true, length: 3..32, format: {with: subdomain_regexp} #, unless: "domain.blank?" + validates_uniqueness_of :domain, :allow_blank=>true #attr_accessible :name, :domain, :short_name, :has_sample #generate short name fro name before_validation :set_short_name - + after_create :add_default_data + + after_save :fix_status_of_stores + class << self - def dalianshops - #in development, we may change site domain - find_by_short_name('first')#find_by_domain - end - + def current - ::Thread.current[:spree_site] || self.unknown + Spree::Store.current.site end - + def current=(some_site) - ::Thread.current[:spree_site] = some_site + if some_site # durring test, add_default_data cause some_site nil + Spree::Store.current = Spree::Store.unscoped.where( site_id: some_site.id ).first + end + some_site end - + # execute block with given site def with_site(new_site) original_current = self.current begin self.current = new_site - yield + yield( new_site ) ensure - self.current = original_current + self.current = original_current end end + + def system_top_domain + Rails.application.config.spree_multi_site.system_top_domain + end end - - def dalianshops? - self == self.class.dalianshops - end - + def current? self == self.class.current end - - def unknown? - !(self.id>0) - end - + def load_sample( ) require 'ffaker' # global tables @@ -85,7 +90,7 @@ def load_sample( ) # [properties(site), prototypes(site)] -> properties_prototypes # , option_types(site)] ->option_type_prototypes # ->products(site)->variants(site?)->assets(site) - # payment_methods(site)->payments->adjustments + # payment_methods(site)->payments->adjustments # ->payment_capture_events # ->alipay_transactions( source ) # preference(site) @@ -95,36 +100,36 @@ def load_sample( ) # to be confirm # spree_tracker, state_changes # return_authorizations - # mail_methods, + # mail_methods, # friendly_id_slugs # promotion_categories -> promotions -> promotion_rules - # -> promotion_actions - # product_promotion_rules, taxons_promotion_rules, - # + # -> promotion_actions + # product_promotion_rules, taxons_promotion_rules, + # # stores #:spree_refunds #:spree_return_authorization_inventory_units #:spree_return_authorizations #:spree_refund_reasons #:spree_customer_returns - + #:spree_reimbursements #:spree_reimbursement_types #:spree_reimbursement_credits #:spree_taxons_prototypes - + # unused table # credit_cards(site?), gateways(site?) # raise "exists products" if self.products.any? - self.class.with_site( self ) do - load_sample_products + self.class.with_site( self ) do + load_sample_products end self end - + def unload_sample - self.class.with_site( self ) do + self.class.with_site( self ) do self.orders.each{|order| order.state_changes.clear order.inventory_units.clear @@ -145,12 +150,12 @@ def unload_sample taxonomy.root.destroy # remove taxons taxonomy.destroy } - + self.zones.each{|zone| zone.destroy } self.shipping_methods.clear - + #TODO fix taxons.taconomy_id self.users.includes(:ship_address,:bill_address).offset(1).each{|user| user.bill_address.destroy @@ -160,43 +165,62 @@ def unload_sample #shipping_method, calculator, creditcard, inventory_units, state_change,tokenized_permission #TODO remove image files self.assets.clear - #FIXME seems it do not work - self.clear_preferences #remove preferences #TODO clear those tables # creditcarts,preferences - self.state_changes.clear + self.state_changes.clear end self end - - # current site'subdomain => short_name.dalianshops.com + + # current site'subdomain => short_name.tld def subdomain - return self.domain if dalianshops? #fix: first.dalianshops.com - ([self.short_name] + self.class.dalianshops.domain.split('.')[1..-1]).join('.') + #for debug at localhost + return self.class.system_top_domain if self.class.system_top_domain == 'localhost' + short_name + '.' + self.class.system_top_domain end - + def admin_url "http://"+subdomain+"/admin" end - + private + + def add_default_data + #current site is first, self is another. + self.class.with_site( self ) do| site | + site.stores.create!( name: site.name, code: site.short_name ) + user_attributes = { email: site.email, password: site.password, password_confirmation: password_confirmation } + user = site.users.create!(user_attributes) + user.spree_roles << Spree::Role.find_by_name('admin') + site.shipping_categories.create!( name: Spree.t(:default) ) + end + end + def load_sample_products - file = Pathname.new(File.join(SpreeMultiSite::Config.seed_dir, 'samples', "seed.rb")) + file = File.join( Rails.application.root, 'db', 'samples', "seed.rb") load file end - + def load_sample_orders - file = Pathname.new(File.join(SpreeMultiSite::Config.seed_dir, 'fake_order', "seed.rb")) + file = File.join( Rails.application.root, 'db', 'fake_order', "seed.rb") load file end - + def set_short_name if short_name.blank? - self.short_name = name.to_url + self.short_name = name.to_url if self.class.exists?(:short_name=> self.short_name) self.short_name << "-#{(self.class.last.id+1).to_s}" end end end + + def fix_status_of_stores + if active? + self.stores.update_all( is_public: true ) + else + self.stores.update_all( is_public: false ) + end + end end diff --git a/spree_multi_site/app/models/spree/site_decorator.rb b/spree_multi_site/app/models/spree/site_decorator.rb index 41a4ee28..f8dfbfb6 100644 --- a/spree_multi_site/app/models/spree/site_decorator.rb +++ b/spree_multi_site/app/models/spree/site_decorator.rb @@ -3,19 +3,25 @@ Spree::Asset.class_eval do include Spree::MultiSiteSystem end -Spree::Configuration.class_eval do - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } -end + +#Spree::Configuration.class_eval do +# belongs_to :site +# default_scope { where(:site_id => Spree::Site.current.id) } +#end + Spree::LogEntry.class_eval do belongs_to :site default_scope { where(:site_id => Spree::Site.current.id) } -end +end Spree::OptionType.class_eval do belongs_to :site default_scope { where(:site_id => Spree::Site.current.id) } -end + clear_validators! + # Add new validates_uniqueness_of with correct scope + validates :name, :uniqueness => { :scope => [:site_id] } + +end Spree::Order.class_eval do include Spree::MultiSiteSystem @@ -23,56 +29,61 @@ # we should never call LineItem.find or LineItem.new # use @order.line_items, @order.add_variant instead -Spree::LineItem.class_eval do - #this cause ActiveRecord::ReadOnlyRecord, while modify lineitem - #default_scope :joins => :order - #default_scope {where("spree_orders.site_id=?", Spree::Site.current.id)} -end Spree::Prototype.class_eval do - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } -end + include Spree::MultiSiteSystem +end Spree::Preference.class_eval do - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } -end + include Spree::MultiSiteSystem +end Spree::PaymentMethod.class_eval do - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } -end + include Spree::MultiSiteSystem +end Spree::Product.class_eval do include Spree::MultiSiteSystem include Spree::ProductExtraScope - - has_many :global_classifications, dependent: :delete_all - has_many :global_taxons, through: :global_classifications, source: :taxon + #has_many :global_classifications, dependent: :delete_all + #has_many :global_taxons, through: :global_classifications, source: :taxon + + + # Try building a slug based on the following fields in increasing order of specificity. + def slug_candidates + [ + :name_to_url, + [:name_to_url, :sku], + [:name_to_url, :sku, :site_id] + ] + end + + def name_to_url + name.to_url + end end Spree::Property.class_eval do - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } + include Spree::MultiSiteSystem end #TODO add site_id into shipments? Spree::ShippingCategory.class_eval do - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } + include Spree::MultiSiteSystem + clear_validators! + validates :name, presence: true, uniqueness: { allow_blank: true, scope: :site_id } end Spree::ShippingMethod.class_eval do - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } + include Spree::MultiSiteSystem + end + Spree::Taxonomy.class_eval do - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } + include Spree::MultiSiteSystem end @@ -81,54 +92,69 @@ has_many :global_classifications, dependent: :delete_all has_many :global_products, through: :global_classifications, source: :product - + end Spree::TaxCategory.class_eval do - + belongs_to :site default_scope { where(:site_id => Spree::Site.current.id) } clear_validators! # Add new validates_uniqueness_of with correct scope - validates :name, :uniqueness => { :scope => [:site_id,:deleted_at] } + validates :name, :uniqueness => { scope: [:site_id,:deleted_at], allow_blank: true } end # TaxRate is join table, include tax_catory_id and zone_id # in TaxRate.match it called method :all, so we have to add joins=>tax_category -# in fact, we should never use TaxRate in spree_abc for now. +# in fact, we should never use TaxRate in spree_abc for now. Spree::TaxRate.class_eval do default_scope { joins( :tax_category). where("spree_tax_categories.site_id=?", Spree::Site.current.id) } end Spree::Tracker.class_eval do - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } + include Spree::MultiSiteSystem + + def self.current + tracker = where(active: true).first + tracker.analytics_id.present? ? tracker : nil if tracker + end end Spree.user_class.class_eval do # user.email validation is unique, it is defined in devise/lib/models/validatable.rb - # 1. we required dalianshops user have unique email, + # 1. we required user have unique email, # 2. we allow user modify their password after sign up. # fix unique with scope [site_id] would conflict with 1 - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } + include Spree::MultiSiteSystem +end + +Spree::Variant.class_eval do + clear_validators! + # copy original validates + #validate :check_price + + validates :cost_price, numericality: { greater_than_or_equal_to: 0, allow_nil: true } + validates :price, numericality: { greater_than_or_equal_to: 0, allow_nil: true } + # disable uniqueness_of :sku + validates_uniqueness_of :sku, allow_blank: true, conditions: -> { joins(:product).where( spree_variants: { deleted_at: nil}, spree_products: {site_id: Spree::Site.current.id } ) } + end Spree::Zone.class_eval do - belongs_to :site - default_scope { where(:site_id => Spree::Site.current.id) } - + include Spree::MultiSiteSystem + clear_validators! # Add new validates_uniqueness_of with correct scope validates :name, :presence => true, :uniqueness => { :scope => [:site_id] } -end +end + Rails.application.config.spree_multi_site.site_scope_required_classes_from_other_gems.each do |extra_class| - extra_class.class_eval do + extra_class.constantize.class_eval do belongs_to :site default_scope { where(:site_id => Spree::Site.current.id) } - end + end end diff --git a/spree_multi_site/app/models/spree/store_decorator.rb b/spree_multi_site/app/models/spree/store_decorator.rb new file mode 100644 index 00000000..a961b1f2 --- /dev/null +++ b/spree_multi_site/app/models/spree/store_decorator.rb @@ -0,0 +1,65 @@ +Spree::Store.class_eval do + # Do not use default_scope, in view template_theme/foreign, we want to get store of template_theme. + # include Spree::MultiSiteSystem + belongs_to :site + + clear_validators! + class << self + #override original current + def current(domain = nil) + #UnknownStore.instance is for test only + ::Thread.current[:spree_store] || UnknownStore.instance + end + + def current=(some_store) + ::Thread.current[:spree_store] = some_store + end + + def by_domain( domain ) + current_store = if domain.is_a? String + if domain.end_with? Spree::Site.system_top_domain + short_name = domain.split('.').first + self.find_by_code(short_name) + else + self.by_url(domain).first + end + else + self.default + end + current_store + end + + # we can not easily modify cookies except firefox, we'll add default_site for debug page on other browser. + # we could set default site for missing site as well. + def default + where( default: true ).first + end + + def god + where( code: 'www' ).first + end + end + + # current site'subdomain => short_name.tld + def subdomain + code + '.' + Spree::Site.system_top_domain + end + + # it is god(first) store + def god? + self == self.class.god + end + + #app_configuration require site_id + class UnknownStore + include Singleton + def id + 0 + end + + def site + #app_configuration require site_id + Struct.new(:id).new(0) + end + end +end diff --git a/spree_multi_site/app/views/spree/admin/general_settings/edit.html.erb b/spree_multi_site/app/views/spree/admin/general_settings/edit.html.erb new file mode 100644 index 00000000..2c36b861 --- /dev/null +++ b/spree_multi_site/app/views/spree/admin/general_settings/edit.html.erb @@ -0,0 +1,125 @@ +<% content_for :page_title do %> + <%= Spree.t(:general_settings) %> +<% end %> + +<%= form_tag admin_general_settings_path, method: :put, enctype: 'multipart/form-data' do %> +
    + +
    + + <%= fields_for :store do |f| %> +
    +
    +
    + <%= f.label :name %> + <%= f.text_field :name, class: 'form-control' %> +
    +
    + +
    +
    + <%= f.label :seo_title %> + <%= f.text_field :seo_title, class: 'form-control' %> +
    +
    + +
    +
    + <%= f.label :meta_keywords %> + <%= f.text_field :meta_keywords, class: 'form-control' %> +
    +
    + +
    +
    + <%= f.label :meta_description %> + <%= f.text_area :meta_description, class: 'form-control' %> +
    +
    + +
    +
    + <%= f.label :url %> + <%= f.text_field :url, class: 'form-control' %> +
    +
    + +
    + <%#-------------------------------------------------%> + <%# logo settings FIXME for aliyun oss %> + <%#-------------------------------------------------%> + +
    +
    + <% end %> + +
    + + <%= fields_for :site, @store.site do |f| %> +
    + + <%#-------------------------------------------------%> + <%# Currency Settings %> + <%#-------------------------------------------------%> +
    +
    +

    + <%= Spree.t(:currency_settings)%> +

    +
    + +
    +
    + <%= label_tag :currency, Spree.t(:choose_currency) %> + <%= f.select :currency, currency_options %> +
    +
    +
    +
    + <% end %> +
    + +
    + <%= button Spree.t('actions.update'), 'save' %> + <%= Spree.t(:or) %> + <%= button_link_to Spree.t('actions.cancel'), edit_admin_general_settings_url, icon: 'delete' %> +
    + +
    + +
    + +<% end %> + + diff --git a/spree_multi_site/app/views/spree/admin/sites/_form.html.erb b/spree_multi_site/app/views/spree/admin/sites/_form.html.erb index 270895ca..e82a15e8 100644 --- a/spree_multi_site/app/views/spree/admin/sites/_form.html.erb +++ b/spree_multi_site/app/views/spree/admin/sites/_form.html.erb @@ -1,37 +1,17 @@ -
    -
    -
    - <%= f.field_container :name do %> - <%= f.label :name, t(:site_name) %> *
    - <%= f.text_field :name, :class => 'fullwidth title' %> - <%= f.error_message_on :name %> - <% end %> - <%= f.field_container :domain do %> - <%= f.label :domain, t(:site_domain) %>
    - <%= f.text_field :domain, :class => 'fullwidth title' %> - <%= f.error_message_on :domain %> - <% end %> - <%= f.field_container :short_name do %> - <%= f.label :short_name, t(:site_short_name) %> *
    - <%= f.text_field :short_name, :class => 'fullwidth title' %> - <%= f.error_message_on :short_name %> - <% end %> - <%= f.field_container :layout do %> - <%= f.label :layout, t(:site_layout) %>
    - <%= f.text_field :layout, :class => 'fullwidth title' %> - <%= f.error_message_on :layout %> - <% end %> +
    +
    + <%= f.label :name, Spree.t(:name) %> + <%= f.text_field :name, :class => 'form-control' %> +
    +
    + <%= f.label :domain %> + <%= f.text_field :domain, :class => 'form-control' %> +
    - <%= f.field_container :has_sample do %> - <%= f.label :has_sample, t(:site_has_sample) %>
    - <%= f.check_box :has_sample, :class => 'fullwidth title' %> - <%= f.error_message_on :has_sample %> - <% end %> - <% if @site.new_record? %> - - <%= render :partial => 'spree/admin/sites/user', :locals => { :user => @user } %> - - <% end %> -
    +
    + <%= f.label :status %> + + <%= f.select :status, Spree::Site.statuses.to_a.map { |w| [w[0].humanize, w[0]] }, {}, :class => 'select2' %>
    +
    diff --git a/spree_multi_site/app/views/spree/admin/sites/edit.html.erb b/spree_multi_site/app/views/spree/admin/sites/edit.html.erb index 3c91f2ff..7f71d206 100644 --- a/spree_multi_site/app/views/spree/admin/sites/edit.html.erb +++ b/spree_multi_site/app/views/spree/admin/sites/edit.html.erb @@ -1,8 +1,12 @@ -

    <%= t("editing_site") %>

    - +<% content_for :page_title do %> + <%= Spree.t(:editing_resource, resource: Spree::Site.model_name.human) %> +<% end %> + +<%= render :partial => 'spree/admin/shared/error_messages', :locals => { :target => @site } %> + <%= form_for [:admin, @site] do |f| %> - <%= render :partial => "form", :locals => { :f => f } %> -

    - <%= button t(:update) %> <%= t(:or) %> <%= link_to t(:cancel), admin_sites_path %> -

    +
    + <%= render :partial => 'form', :locals => { :f => f } %> + <%= render :partial => 'spree/admin/shared/edit_resource_links' %> +
    <% end %> diff --git a/spree_multi_site/app/views/spree/admin/sites/index.html.erb b/spree_multi_site/app/views/spree/admin/sites/index.html.erb index 14ac1442..f66c2296 100644 --- a/spree_multi_site/app/views/spree/admin/sites/index.html.erb +++ b/spree_multi_site/app/views/spree/admin/sites/index.html.erb @@ -1,36 +1,40 @@ <% content_for :page_title do %> - <%= Spree.t('site.index') %> + <%= Spree.t('site.index') %> <% end %> - +
    - - - + + + + + + + <%- @sites.each do |site|%> - + + <% end %>
    <%= Spree::Site.human_attribute_name(:name) %> <%= Spree::Site.human_attribute_name(:domain) %> <%= Spree.user_class.human_attribute_name(:email) %><%= Spree::Site.human_attribute_name(:status) %> <%= Spree::Site.human_attribute_name(:created_at) %>
    <%= site.name %> <%= site.subdomain %><%= site.users.admin.first.email %> + <%= Spree::MultiSiteSystem.with_context_admin_sites{ site.users.admin.first.email }%> + <%= site.status %> <%= pretty_time site.created_at %> - <%= link_to_with_icon 'icon-eye', Spree.t(:admin_store), site.admin_url, {:target=>'_blank',:no_text => true} %> - + <%= link_to_with_icon('edit', Spree.t(:edit), spree.edit_admin_site_url(site), class: 'btn btn-primary btn-sm', no_text: true, data: { action: 'edit' }) if can? :edit, site %> + <%= link_to_with_icon 'eye-open', Spree.t(:admin_store), site.admin_url, {class: 'btn btn-primary btn-sm', target: '_blank', no_text: true} %>
    - -<%= paginate @sites %> - - +<%= paginate @sites %> diff --git a/spree_multi_site/app/views/spree/sites/_form.html.erb b/spree_multi_site/app/views/spree/sites/_form.html.erb index 83b2c9d5..23099edd 100644 --- a/spree_multi_site/app/views/spree/sites/_form.html.erb +++ b/spree_multi_site/app/views/spree/sites/_form.html.erb @@ -3,25 +3,25 @@

    <%= f.label :name %>
    - <%= f.text_field :name, :class => 'fullwidth title', :minlength=>4, :maxlength=>30, :required=>"" %> + <%= f.text_field :name, :minlength=>4, :maxlength=>30, :required=>true %>

    -

    - <%= f.label :short_name %>
    - <%= f.text_field :short_name, :class => 'fullwidth title', :minlength=>4, :maxlength=>30, :required=>"" %> - .dalianshops.com -

    - - <% if @site.new_record? %> - <%= render :partial => 'spree/sites/user', :locals => { :user => @user } %> - <% end %> +

    + <%= f.label :email, Spree.t(:email) %>
    + <%= f.email_field :email, size: 30 %> +

    + +

    + <%= f.label :password, Spree.t(:password) %>
    + <%= f.password_field :password, :minlength=>6, :maxlength=>30, :required=>"" %> +

    <% if @template_theme.present? %>

    <%= f.label :foreign_theme_id %>
    - <%= f.hidden_field :foreign_theme_id, :value=>@template_theme.id %> - <%= text_field_tag :template_theme_name, @template_theme.title, :class => 'fullwidth title', :readonly=>true, :size=>30 %> -

    + <%= f.hidden_field :foreign_theme_id, :value=>@template_theme.id %> + <%= text_field_tag :template_theme_name, @template_theme.title, :readonly=>true, :size=>30 %> +

    <% end %>
    diff --git a/spree_multi_site/app/views/spree/sites/_form_for_spree_theme.html.erb b/spree_multi_site/app/views/spree/sites/_form_for_spree_theme.html.erb deleted file mode 100644 index 2b164f0d..00000000 --- a/spree_multi_site/app/views/spree/sites/_form_for_spree_theme.html.erb +++ /dev/null @@ -1,37 +0,0 @@ -<% - @site ||= SpreeTheme.site_class.new - @user ||= @site.users.build -%> -<%= form_for :site, :url => quick_lunch_path, :html=>{:id=>"site_form"} do |f| %> -
    -

    - <%= f.text_field :name, :class => 'fullwidth title', :placeholder => Spree.t(:name_store), :minlength=>4, :maxlength=>24, :required=>"" %> -

    -

    - <%= email_field :user, :email, :placeholder => Spree.t(:email)%> -

    -

    - <%= password_field :user,:password, :placeholder=>Spree.t(:password), :minlength=>6, :maxlength=>24, :required=>"" %> -

    -

    <%= f.button Spree.t(:new_site), :class => 'button primary' %>

    -
    -<% end %> - diff --git a/spree_multi_site/app/views/spree/sites/after_new.html.erb b/spree_multi_site/app/views/spree/sites/after_new.html.erb index 68adf890..06d56629 100644 --- a/spree_multi_site/app/views/spree/sites/after_new.html.erb +++ b/spree_multi_site/app/views/spree/sites/after_new.html.erb @@ -1,6 +1,6 @@ <%= t 'successfully_created',:resource=> "#{t('site')}:#{@site.name} "%>
    -网站地址 <%=link_to @site.subdomain, :host=>@site.subdomain,:controller=>"home"%>
    +网站地址 <%=link_to @site.subdomain, :host=>@site.subdomain %>
    管理地址 <%=link_to @site.subdomain+'/admin', 'http://'+@site.subdomain+'/admin' %> <% if @site.loading_sample? %> <%= t :loading_sample %> diff --git a/spree_multi_site/app/views/spree/sites/new.html.erb b/spree_multi_site/app/views/spree/sites/new.html.erb index 02fd1cec..07bffd71 100644 --- a/spree_multi_site/app/views/spree/sites/new.html.erb +++ b/spree_multi_site/app/views/spree/sites/new.html.erb @@ -1,7 +1,7 @@ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @site } %>
    <%= t(:new_site) %>
    -<%= form_for :site, :url => new_site_path do |f| %> +<%= form_for @site, :url => create_site_path do |f| %> <%= render :partial => "form", :locals => { :f => f } %>

    <%= f.submit Spree.t(:create), :class => 'button primary' %>

    <% end %> diff --git a/spree_multi_site/config/locales/zh-CN.yml b/spree_multi_site/config/locales/zh-CN.yml index 34df2ca1..52d47269 100644 --- a/spree_multi_site/config/locales/zh-CN.yml +++ b/spree_multi_site/config/locales/zh-CN.yml @@ -1,22 +1,27 @@ ---- +--- zh-CN: site_account: Site Account site_layout: Site Layout site: 网络商店 site_has_sample: 填充示例数据 - load_sample: + load_sample: test_mailer: test_email: load_sample: 载入示例数据 loading_sample: 系统正在为您加载示例产品信息, 请您登录注册使用的邮箱查询我们的邮件通知! - activerecord: - attributes: - spree/site: + activerecord: + attributes: + spree/site: name: 网店名字 short_name: 二级域名 domain: 网店域名 created_at: 创建时间 + status: 状态 foreign_theme_id: 模板 + spree/site/users: + email: 电子邮箱 + password: 密码 + password_confirmation: 密码 spree: admin_store: 管理商店 errors: @@ -28,4 +33,4 @@ zh-CN: site: index: 商店列表 new: - site_successfully_opened: ! 您的商店'%{site_name}'创建成功了。 \ No newline at end of file + site_successfully_opened: ! 您的商店'%{site_name}'创建成功了。 diff --git a/spree_multi_site/config/routes.rb b/spree_multi_site/config/routes.rb index ee7f3074..671e5a17 100644 --- a/spree_multi_site/config/routes.rb +++ b/spree_multi_site/config/routes.rb @@ -3,12 +3,18 @@ namespace :admin do resources :sites end - post '/quick_lunch',:to => 'sites#quick_lunch', :as => :quick_lunch + # one click get form to trial + get 'one_click_trial' => 'sites#one_click_trial', :as => :one_click_trial + + # bottom signup form + post 'quick_lunch',:to => 'sites#quick_lunch', :as => :quick_lunch + + # create site with template_theme get 'new_site' => 'sites#new', :as => :new_site post 'create_site' => 'sites#create', :as => :create_site resources :sites, :only => [:show] - if Rails.env.development? - mount Spree::UserMailer::Preview => 'mail_view' - end + #if Rails.env.development? + # mount Spree::UserMailer::Preview => 'mail_view' + #end end diff --git a/spree_multi_site/db/default/spree/countries.rb b/spree_multi_site/db/default/spree/countries.rb index 32483fac..da6c4ba1 100644 --- a/spree_multi_site/db/default/spree/countries.rb +++ b/spree_multi_site/db/default/spree/countries.rb @@ -1,229 +1,229 @@ -Spree::Country.create!({"name"=>"Chad", "iso3"=>"TCD", "iso"=>"TD", "iso_name"=>"CHAD", "numcode"=>"148"}, :without_protection => true) -Spree::Country.create!({"name"=>"Faroe Islands", "iso3"=>"FRO", "iso"=>"FO", "iso_name"=>"FAROE ISLANDS", "numcode"=>"234"}, :without_protection => true) -Spree::Country.create!({"name"=>"India", "iso3"=>"IND", "iso"=>"IN", "iso_name"=>"INDIA", "numcode"=>"356"}, :without_protection => true) -Spree::Country.create!({"name"=>"Nicaragua", "iso3"=>"NIC", "iso"=>"NI", "iso_name"=>"NICARAGUA", "numcode"=>"558"}, :without_protection => true) -Spree::Country.create!({"name"=>"Saint Lucia", "iso3"=>"LCA", "iso"=>"LC", "iso_name"=>"SAINT LUCIA", "numcode"=>"662"}, :without_protection => true) -Spree::Country.create!({"name"=>"Fiji", "iso3"=>"FJI", "iso"=>"FJ", "iso_name"=>"FIJI", "numcode"=>"242"}, :without_protection => true) -Spree::Country.create!({"name"=>"Indonesia", "iso3"=>"IDN", "iso"=>"ID", "iso_name"=>"INDONESIA", "numcode"=>"360"}, :without_protection => true) -Spree::Country.create!({"name"=>"Niger", "iso3"=>"NER", "iso"=>"NE", "iso_name"=>"NIGER", "numcode"=>"562"}, :without_protection => true) -Spree::Country.create!({"name"=>"Saint Pierre and Miquelon", "iso3"=>"SPM", "iso"=>"PM", "iso_name"=>"SAINT PIERRE AND MIQUELON", "numcode"=>"666"}, :without_protection => true) -Spree::Country.create!({"name"=>"Finland", "iso3"=>"FIN", "iso"=>"FI", "iso_name"=>"FINLAND", "numcode"=>"246"}, :without_protection => true) -Spree::Country.create!({"name"=>"Nigeria", "iso3"=>"NGA", "iso"=>"NG", "iso_name"=>"NIGERIA", "numcode"=>"566"}, :without_protection => true) -Spree::Country.create!({"name"=>"Saint Vincent and the Grenadines", "iso3"=>"VCT", "iso"=>"VC", "iso_name"=>"SAINT VINCENT AND THE GRENADINES", "numcode"=>"670"}, :without_protection => true) -Spree::Country.create!({"name"=>"France", "iso3"=>"FRA", "iso"=>"FR", "iso_name"=>"FRANCE", "numcode"=>"250"}, :without_protection => true) -Spree::Country.create!({"name"=>"Iran, Islamic Republic of", "iso3"=>"IRN", "iso"=>"IR", "iso_name"=>"IRAN, ISLAMIC REPUBLIC OF", "numcode"=>"364"}, :without_protection => true) -Spree::Country.create!({"name"=>"Niue", "iso3"=>"NIU", "iso"=>"NU", "iso_name"=>"NIUE", "numcode"=>"570"}, :without_protection => true) -Spree::Country.create!({"name"=>"Samoa", "iso3"=>"WSM", "iso"=>"WS", "iso_name"=>"SAMOA", "numcode"=>"882"}, :without_protection => true) -Spree::Country.create!({"name"=>"French Guiana", "iso3"=>"GUF", "iso"=>"GF", "iso_name"=>"FRENCH GUIANA", "numcode"=>"254"}, :without_protection => true) -Spree::Country.create!({"name"=>"Iraq", "iso3"=>"IRQ", "iso"=>"IQ", "iso_name"=>"IRAQ", "numcode"=>"368"}, :without_protection => true) -Spree::Country.create!({"name"=>"San Marino", "iso3"=>"SMR", "iso"=>"SM", "iso_name"=>"SAN MARINO", "numcode"=>"674"}, :without_protection => true) -Spree::Country.create!({"name"=>"Ireland", "iso3"=>"IRL", "iso"=>"IE", "iso_name"=>"IRELAND", "numcode"=>"372"}, :without_protection => true) -Spree::Country.create!({"name"=>"Sao Tome and Principe", "iso3"=>"STP", "iso"=>"ST", "iso_name"=>"SAO TOME AND PRINCIPE", "numcode"=>"678"}, :without_protection => true) -Spree::Country.create!({"name"=>"Israel", "iso3"=>"ISR", "iso"=>"IL", "iso_name"=>"ISRAEL", "numcode"=>"376"}, :without_protection => true) -Spree::Country.create!({"name"=>"Saudi Arabia", "iso3"=>"SAU", "iso"=>"SA", "iso_name"=>"SAUDI ARABIA", "numcode"=>"682"}, :without_protection => true) -Spree::Country.create!({"name"=>"Italy", "iso3"=>"ITA", "iso"=>"IT", "iso_name"=>"ITALY", "numcode"=>"380"}, :without_protection => true) -Spree::Country.create!({"name"=>"Senegal", "iso3"=>"SEN", "iso"=>"SN", "iso_name"=>"SENEGAL", "numcode"=>"686"}, :without_protection => true) -Spree::Country.create!({"name"=>"Jamaica", "iso3"=>"JAM", "iso"=>"JM", "iso_name"=>"JAMAICA", "numcode"=>"388"}, :without_protection => true) -Spree::Country.create!({"name"=>"Japan", "iso3"=>"JPN", "iso"=>"JP", "iso_name"=>"JAPAN", "numcode"=>"392"}, :without_protection => true) -Spree::Country.create!({"name"=>"Jordan", "iso3"=>"JOR", "iso"=>"JO", "iso_name"=>"JORDAN", "numcode"=>"400"}, :without_protection => true) -Spree::Country.create!({"name"=>"Belgium", "iso3"=>"BEL", "iso"=>"BE", "iso_name"=>"BELGIUM", "numcode"=>"56"}, :without_protection => true) -Spree::Country.create!({"name"=>"Belize", "iso3"=>"BLZ", "iso"=>"BZ", "iso_name"=>"BELIZE", "numcode"=>"84"}, :without_protection => true) -Spree::Country.create!({"name"=>"Kazakhstan", "iso3"=>"KAZ", "iso"=>"KZ", "iso_name"=>"KAZAKHSTAN", "numcode"=>"398"}, :without_protection => true) -Spree::Country.create!({"name"=>"Uganda", "iso3"=>"UGA", "iso"=>"UG", "iso_name"=>"UGANDA", "numcode"=>"800"}, :without_protection => true) -Spree::Country.create!({"name"=>"Benin", "iso3"=>"BEN", "iso"=>"BJ", "iso_name"=>"BENIN", "numcode"=>"204"}, :without_protection => true) -Spree::Country.create!({"name"=>"Kenya", "iso3"=>"KEN", "iso"=>"KE", "iso_name"=>"KENYA", "numcode"=>"404"}, :without_protection => true) -Spree::Country.create!({"name"=>"Ukraine", "iso3"=>"UKR", "iso"=>"UA", "iso_name"=>"UKRAINE", "numcode"=>"804"}, :without_protection => true) -Spree::Country.create!({"name"=>"Bermuda", "iso3"=>"BMU", "iso"=>"BM", "iso_name"=>"BERMUDA", "numcode"=>"60"}, :without_protection => true) -Spree::Country.create!({"name"=>"Kiribati", "iso3"=>"KIR", "iso"=>"KI", "iso_name"=>"KIRIBATI", "numcode"=>"296"}, :without_protection => true) -Spree::Country.create!({"name"=>"Mexico", "iso3"=>"MEX", "iso"=>"MX", "iso_name"=>"MEXICO", "numcode"=>"484"}, :without_protection => true) -Spree::Country.create!({"name"=>"United Arab Emirates", "iso3"=>"ARE", "iso"=>"AE", "iso_name"=>"UNITED ARAB EMIRATES", "numcode"=>"784"}, :without_protection => true) -Spree::Country.create!({"name"=>"Bhutan", "iso3"=>"BTN", "iso"=>"BT", "iso_name"=>"BHUTAN", "numcode"=>"64"}, :without_protection => true) -Spree::Country.create!({"name"=>"Cuba", "iso3"=>"CUB", "iso"=>"CU", "iso_name"=>"CUBA", "numcode"=>"192"}, :without_protection => true) -Spree::Country.create!({"name"=>"North Korea", "iso3"=>"PRK", "iso"=>"KP", "iso_name"=>"KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF", "numcode"=>"408"}, :without_protection => true) -Spree::Country.create!({"name"=>"Micronesia, Federated States of", "iso3"=>"FSM", "iso"=>"FM", "iso_name"=>"MICRONESIA, FEDERATED STATES OF", "numcode"=>"583"}, :without_protection => true) -Spree::Country.create!({"name"=>"United Kingdom", "iso3"=>"GBR", "iso"=>"GB", "iso_name"=>"UNITED KINGDOM", "numcode"=>"826"}, :without_protection => true) -Spree::Country.create!({"name"=>"Bolivia", "iso3"=>"BOL", "iso"=>"BO", "iso_name"=>"BOLIVIA", "numcode"=>"68"}, :without_protection => true) -Spree::Country.create!({"name"=>"Cyprus", "iso3"=>"CYP", "iso"=>"CY", "iso_name"=>"CYPRUS", "numcode"=>"196"}, :without_protection => true) -Spree::Country.create!({"name"=>"South Korea", "iso3"=>"KOR", "iso"=>"KR", "iso_name"=>"KOREA, REPUBLIC OF", "numcode"=>"410"}, :without_protection => true) -Spree::Country.create!({"name"=>"Moldova, Republic of", "iso3"=>"MDA", "iso"=>"MD", "iso_name"=>"MOLDOVA, REPUBLIC OF", "numcode"=>"498"}, :without_protection => true) -Spree::Country.create!({"name"=>"United States", "iso3"=>"USA", "iso"=>"US", "iso_name"=>"UNITED STATES", "numcode"=>"840"}, :without_protection => true) -Spree::Country.create!({"name"=>"Bosnia and Herzegovina", "iso3"=>"BIH", "iso"=>"BA", "iso_name"=>"BOSNIA AND HERZEGOVINA", "numcode"=>"70"}, :without_protection => true) -Spree::Country.create!({"name"=>"Czech Republic", "iso3"=>"CZE", "iso"=>"CZ", "iso_name"=>"CZECH REPUBLIC", "numcode"=>"203"}, :without_protection => true) -Spree::Country.create!({"name"=>"Kuwait", "iso3"=>"KWT", "iso"=>"KW", "iso_name"=>"KUWAIT", "numcode"=>"414"}, :without_protection => true) -Spree::Country.create!({"name"=>"Monaco", "iso3"=>"MCO", "iso"=>"MC", "iso_name"=>"MONACO", "numcode"=>"492"}, :without_protection => true) -Spree::Country.create!({"name"=>"Uruguay", "iso3"=>"URY", "iso"=>"UY", "iso_name"=>"URUGUAY", "numcode"=>"858"}, :without_protection => true) -Spree::Country.create!({"name"=>"Botswana", "iso3"=>"BWA", "iso"=>"BW", "iso_name"=>"BOTSWANA", "numcode"=>"72"}, :without_protection => true) -Spree::Country.create!({"name"=>"Denmark", "iso3"=>"DNK", "iso"=>"DK", "iso_name"=>"DENMARK", "numcode"=>"208"}, :without_protection => true) -Spree::Country.create!({"name"=>"Guadeloupe", "iso3"=>"GLP", "iso"=>"GP", "iso_name"=>"GUADELOUPE", "numcode"=>"312"}, :without_protection => true) -Spree::Country.create!({"name"=>"Kyrgyzstan", "iso3"=>"KGZ", "iso"=>"KG", "iso_name"=>"KYRGYZSTAN", "numcode"=>"417"}, :without_protection => true) -Spree::Country.create!({"name"=>"Mongolia", "iso3"=>"MNG", "iso"=>"MN", "iso_name"=>"MONGOLIA", "numcode"=>"496"}, :without_protection => true) -Spree::Country.create!({"name"=>"Philippines", "iso3"=>"PHL", "iso"=>"PH", "iso_name"=>"PHILIPPINES", "numcode"=>"608"}, :without_protection => true) -Spree::Country.create!({"name"=>"Brazil", "iso3"=>"BRA", "iso"=>"BR", "iso_name"=>"BRAZIL", "numcode"=>"76"}, :without_protection => true) -Spree::Country.create!({"name"=>"Djibouti", "iso3"=>"DJI", "iso"=>"DJ", "iso_name"=>"DJIBOUTI", "numcode"=>"262"}, :without_protection => true) -Spree::Country.create!({"name"=>"Guam", "iso3"=>"GUM", "iso"=>"GU", "iso_name"=>"GUAM", "numcode"=>"316"}, :without_protection => true) -Spree::Country.create!({"name"=>"Lao People's Democratic Republic", "iso3"=>"LAO", "iso"=>"LA", "iso_name"=>"LAO PEOPLE'S DEMOCRATIC REPUBLIC", "numcode"=>"418"}, :without_protection => true) -Spree::Country.create!({"name"=>"Montserrat", "iso3"=>"MSR", "iso"=>"MS", "iso_name"=>"MONTSERRAT", "numcode"=>"500"}, :without_protection => true) -Spree::Country.create!({"name"=>"Pitcairn", "iso3"=>"PCN", "iso"=>"PN", "iso_name"=>"PITCAIRN", "numcode"=>"612"}, :without_protection => true) -Spree::Country.create!({"name"=>"Uzbekistan", "iso3"=>"UZB", "iso"=>"UZ", "iso_name"=>"UZBEKISTAN", "numcode"=>"860"}, :without_protection => true) -Spree::Country.create!({"name"=>"Brunei Darussalam", "iso3"=>"BRN", "iso"=>"BN", "iso_name"=>"BRUNEI DARUSSALAM", "numcode"=>"96"}, :without_protection => true) -Spree::Country.create!({"name"=>"Dominica", "iso3"=>"DMA", "iso"=>"DM", "iso_name"=>"DOMINICA", "numcode"=>"212"}, :without_protection => true) -Spree::Country.create!({"name"=>"Guatemala", "iso3"=>"GTM", "iso"=>"GT", "iso_name"=>"GUATEMALA", "numcode"=>"320"}, :without_protection => true) -Spree::Country.create!({"name"=>"Morocco", "iso3"=>"MAR", "iso"=>"MA", "iso_name"=>"MOROCCO", "numcode"=>"504"}, :without_protection => true) -Spree::Country.create!({"name"=>"Poland", "iso3"=>"POL", "iso"=>"PL", "iso_name"=>"POLAND", "numcode"=>"616"}, :without_protection => true) -Spree::Country.create!({"name"=>"Vanuatu", "iso3"=>"VUT", "iso"=>"VU", "iso_name"=>"VANUATU", "numcode"=>"548"}, :without_protection => true) -Spree::Country.create!({"name"=>"Dominican Republic", "iso3"=>"DOM", "iso"=>"DO", "iso_name"=>"DOMINICAN REPUBLIC", "numcode"=>"214"}, :without_protection => true) -Spree::Country.create!({"name"=>"Mozambique", "iso3"=>"MOZ", "iso"=>"MZ", "iso_name"=>"MOZAMBIQUE", "numcode"=>"508"}, :without_protection => true) -Spree::Country.create!({"name"=>"Portugal", "iso3"=>"PRT", "iso"=>"PT", "iso_name"=>"PORTUGAL", "numcode"=>"620"}, :without_protection => true) -Spree::Country.create!({"name"=>"Sudan", "iso3"=>"SDN", "iso"=>"SD", "iso_name"=>"SUDAN", "numcode"=>"736"}, :without_protection => true) -Spree::Country.create!({"name"=>"Venezuela", "iso3"=>"VEN", "iso"=>"VE", "iso_name"=>"VENEZUELA", "numcode"=>"862"}, :without_protection => true) -Spree::Country.create!({"name"=>"Ecuador", "iso3"=>"ECU", "iso"=>"EC", "iso_name"=>"ECUADOR", "numcode"=>"218"}, :without_protection => true) -Spree::Country.create!({"name"=>"Guinea", "iso3"=>"GIN", "iso"=>"GN", "iso_name"=>"GUINEA", "numcode"=>"324"}, :without_protection => true) -Spree::Country.create!({"name"=>"Myanmar", "iso3"=>"MMR", "iso"=>"MM", "iso_name"=>"MYANMAR", "numcode"=>"104"}, :without_protection => true) -Spree::Country.create!({"name"=>"Puerto Rico", "iso3"=>"PRI", "iso"=>"PR", "iso_name"=>"PUERTO RICO", "numcode"=>"630"}, :without_protection => true) -Spree::Country.create!({"name"=>"Suriname", "iso3"=>"SUR", "iso"=>"SR", "iso_name"=>"SURINAME", "numcode"=>"740"}, :without_protection => true) -Spree::Country.create!({"name"=>"Viet Nam", "iso3"=>"VNM", "iso"=>"VN", "iso_name"=>"VIET NAM", "numcode"=>"704"}, :without_protection => true) -Spree::Country.create!({"name"=>"Egypt", "iso3"=>"EGY", "iso"=>"EG", "iso_name"=>"EGYPT", "numcode"=>"818"}, :without_protection => true) -Spree::Country.create!({"name"=>"Guinea-Bissau", "iso3"=>"GNB", "iso"=>"GW", "iso_name"=>"GUINEA-BISSAU", "numcode"=>"624"}, :without_protection => true) -Spree::Country.create!({"name"=>"Namibia", "iso3"=>"NAM", "iso"=>"NA", "iso_name"=>"NAMIBIA", "numcode"=>"516"}, :without_protection => true) -Spree::Country.create!({"name"=>"Qatar", "iso3"=>"QAT", "iso"=>"QA", "iso_name"=>"QATAR", "numcode"=>"634"}, :without_protection => true) -Spree::Country.create!({"name"=>"Svalbard and Jan Mayen", "iso3"=>"SJM", "iso"=>"SJ", "iso_name"=>"SVALBARD AND JAN MAYEN", "numcode"=>"744"}, :without_protection => true) -Spree::Country.create!({"name"=>"El Salvador", "iso3"=>"SLV", "iso"=>"SV", "iso_name"=>"EL SALVADOR", "numcode"=>"222"}, :without_protection => true) -Spree::Country.create!({"name"=>"Guyana", "iso3"=>"GUY", "iso"=>"GY", "iso_name"=>"GUYANA", "numcode"=>"328"}, :without_protection => true) -Spree::Country.create!({"name"=>"Reunion", "iso3"=>"REU", "iso"=>"RE", "iso_name"=>"REUNION", "numcode"=>"638"}, :without_protection => true) -Spree::Country.create!({"name"=>"Haiti", "iso3"=>"HTI", "iso"=>"HT", "iso_name"=>"HAITI", "numcode"=>"332"}, :without_protection => true) -Spree::Country.create!({"name"=>"Romania", "iso3"=>"ROM", "iso"=>"RO", "iso_name"=>"ROMANIA", "numcode"=>"642"}, :without_protection => true) -Spree::Country.create!({"name"=>"Swaziland", "iso3"=>"SWZ", "iso"=>"SZ", "iso_name"=>"SWAZILAND", "numcode"=>"748"}, :without_protection => true) -Spree::Country.create!({"name"=>"Holy See (Vatican City State)", "iso3"=>"VAT", "iso"=>"VA", "iso_name"=>"HOLY SEE (VATICAN CITY STATE)", "numcode"=>"336"}, :without_protection => true) -Spree::Country.create!({"name"=>"Russian Federation", "iso3"=>"RUS", "iso"=>"RU", "iso_name"=>"RUSSIAN FEDERATION", "numcode"=>"643"}, :without_protection => true) -Spree::Country.create!({"name"=>"Sweden", "iso3"=>"SWE", "iso"=>"SE", "iso_name"=>"SWEDEN", "numcode"=>"752"}, :without_protection => true) -Spree::Country.create!({"name"=>"Honduras", "iso3"=>"HND", "iso"=>"HN", "iso_name"=>"HONDURAS", "numcode"=>"340"}, :without_protection => true) -Spree::Country.create!({"name"=>"Rwanda", "iso3"=>"RWA", "iso"=>"RW", "iso_name"=>"RWANDA", "numcode"=>"646"}, :without_protection => true) -Spree::Country.create!({"name"=>"Switzerland", "iso3"=>"CHE", "iso"=>"CH", "iso_name"=>"SWITZERLAND", "numcode"=>"756"}, :without_protection => true) -Spree::Country.create!({"name"=>"Hong Kong", "iso3"=>"HKG", "iso"=>"HK", "iso_name"=>"HONG KONG", "numcode"=>"344"}, :without_protection => true) -Spree::Country.create!({"name"=>"Syrian Arab Republic", "iso3"=>"SYR", "iso"=>"SY", "iso_name"=>"SYRIAN ARAB REPUBLIC", "numcode"=>"760"}, :without_protection => true) -Spree::Country.create!({"name"=>"Taiwan", "iso3"=>"TWN", "iso"=>"TW", "iso_name"=>"TAIWAN, PROVINCE OF CHINA", "numcode"=>"158"}, :without_protection => true) -Spree::Country.create!({"name"=>"Tajikistan", "iso3"=>"TJK", "iso"=>"TJ", "iso_name"=>"TAJIKISTAN", "numcode"=>"762"}, :without_protection => true) -Spree::Country.create!({"name"=>"Tanzania, United Republic of", "iso3"=>"TZA", "iso"=>"TZ", "iso_name"=>"TANZANIA, UNITED REPUBLIC OF", "numcode"=>"834"}, :without_protection => true) -Spree::Country.create!({"name"=>"Armenia", "iso3"=>"ARM", "iso"=>"AM", "iso_name"=>"ARMENIA", "numcode"=>"51"}, :without_protection => true) -Spree::Country.create!({"name"=>"Aruba", "iso3"=>"ABW", "iso"=>"AW", "iso_name"=>"ARUBA", "numcode"=>"533"}, :without_protection => true) -Spree::Country.create!({"name"=>"Australia", "iso3"=>"AUS", "iso"=>"AU", "iso_name"=>"AUSTRALIA", "numcode"=>"36"}, :without_protection => true) -Spree::Country.create!({"name"=>"Thailand", "iso3"=>"THA", "iso"=>"TH", "iso_name"=>"THAILAND", "numcode"=>"764"}, :without_protection => true) -Spree::Country.create!({"name"=>"Austria", "iso3"=>"AUT", "iso"=>"AT", "iso_name"=>"AUSTRIA", "numcode"=>"40"}, :without_protection => true) -Spree::Country.create!({"name"=>"Madagascar", "iso3"=>"MDG", "iso"=>"MG", "iso_name"=>"MADAGASCAR", "numcode"=>"450"}, :without_protection => true) -Spree::Country.create!({"name"=>"Togo", "iso3"=>"TGO", "iso"=>"TG", "iso_name"=>"TOGO", "numcode"=>"768"}, :without_protection => true) -Spree::Country.create!({"name"=>"Azerbaijan", "iso3"=>"AZE", "iso"=>"AZ", "iso_name"=>"AZERBAIJAN", "numcode"=>"31"}, :without_protection => true) -Spree::Country.create!({"name"=>"Chile", "iso3"=>"CHL", "iso"=>"CL", "iso_name"=>"CHILE", "numcode"=>"152"}, :without_protection => true) -Spree::Country.create!({"name"=>"Malawi", "iso3"=>"MWI", "iso"=>"MW", "iso_name"=>"MALAWI", "numcode"=>"454"}, :without_protection => true) -Spree::Country.create!({"name"=>"Tokelau", "iso3"=>"TKL", "iso"=>"TK", "iso_name"=>"TOKELAU", "numcode"=>"772"}, :without_protection => true) -Spree::Country.create!({"name"=>"Bahamas", "iso3"=>"BHS", "iso"=>"BS", "iso_name"=>"BAHAMAS", "numcode"=>"44"}, :without_protection => true) -Spree::Country.create!({"name"=>"China", "iso3"=>"CHN", "iso"=>"CN", "iso_name"=>"CHINA", "numcode"=>"156"}, :without_protection => true) -Spree::Country.create!({"name"=>"Malaysia", "iso3"=>"MYS", "iso"=>"MY", "iso_name"=>"MALAYSIA", "numcode"=>"458"}, :without_protection => true) -Spree::Country.create!({"name"=>"Tonga", "iso3"=>"TON", "iso"=>"TO", "iso_name"=>"TONGA", "numcode"=>"776"}, :without_protection => true) -Spree::Country.create!({"name"=>"Bahrain", "iso3"=>"BHR", "iso"=>"BH", "iso_name"=>"BAHRAIN", "numcode"=>"48"}, :without_protection => true) -Spree::Country.create!({"name"=>"Colombia", "iso3"=>"COL", "iso"=>"CO", "iso_name"=>"COLOMBIA", "numcode"=>"170"}, :without_protection => true) -Spree::Country.create!({"name"=>"Maldives", "iso3"=>"MDV", "iso"=>"MV", "iso_name"=>"MALDIVES", "numcode"=>"462"}, :without_protection => true) -Spree::Country.create!({"name"=>"Trinidad and Tobago", "iso3"=>"TTO", "iso"=>"TT", "iso_name"=>"TRINIDAD AND TOBAGO", "numcode"=>"780"}, :without_protection => true) -Spree::Country.create!({"name"=>"Bangladesh", "iso3"=>"BGD", "iso"=>"BD", "iso_name"=>"BANGLADESH", "numcode"=>"50"}, :without_protection => true) -Spree::Country.create!({"name"=>"Comoros", "iso3"=>"COM", "iso"=>"KM", "iso_name"=>"COMOROS", "numcode"=>"174"}, :without_protection => true) -Spree::Country.create!({"name"=>"French Polynesia", "iso3"=>"PYF", "iso"=>"PF", "iso_name"=>"FRENCH POLYNESIA", "numcode"=>"258"}, :without_protection => true) -Spree::Country.create!({"name"=>"Mali", "iso3"=>"MLI", "iso"=>"ML", "iso_name"=>"MALI", "numcode"=>"466"}, :without_protection => true) -Spree::Country.create!({"name"=>"Norfolk Island", "iso3"=>"NFK", "iso"=>"NF", "iso_name"=>"NORFOLK ISLAND", "numcode"=>"574"}, :without_protection => true) -Spree::Country.create!({"name"=>"Tunisia", "iso3"=>"TUN", "iso"=>"TN", "iso_name"=>"TUNISIA", "numcode"=>"788"}, :without_protection => true) -Spree::Country.create!({"name"=>"Barbados", "iso3"=>"BRB", "iso"=>"BB", "iso_name"=>"BARBADOS", "numcode"=>"52"}, :without_protection => true) -Spree::Country.create!({"name"=>"Congo", "iso3"=>"COG", "iso"=>"CG", "iso_name"=>"CONGO", "numcode"=>"178"}, :without_protection => true) -Spree::Country.create!({"name"=>"Gabon", "iso3"=>"GAB", "iso"=>"GA", "iso_name"=>"GABON", "numcode"=>"266"}, :without_protection => true) -Spree::Country.create!({"name"=>"Malta", "iso3"=>"MLT", "iso"=>"MT", "iso_name"=>"MALTA", "numcode"=>"470"}, :without_protection => true) -Spree::Country.create!({"name"=>"Northern Mariana Islands", "iso3"=>"MNP", "iso"=>"MP", "iso_name"=>"NORTHERN MARIANA ISLANDS", "numcode"=>"580"}, :without_protection => true) -Spree::Country.create!({"name"=>"Turkey", "iso3"=>"TUR", "iso"=>"TR", "iso_name"=>"TURKEY", "numcode"=>"792"}, :without_protection => true) -Spree::Country.create!({"name"=>"Congo, the Democratic Republic of the", "iso3"=>"COD", "iso"=>"CD", "iso_name"=>"CONGO, THE DEMOCRATIC REPUBLIC OF THE", "numcode"=>"180"}, :without_protection => true) -Spree::Country.create!({"name"=>"Marshall Islands", "iso3"=>"MHL", "iso"=>"MH", "iso_name"=>"MARSHALL ISLANDS", "numcode"=>"584"}, :without_protection => true) -Spree::Country.create!({"name"=>"Norway", "iso3"=>"NOR", "iso"=>"NO", "iso_name"=>"NORWAY", "numcode"=>"578"}, :without_protection => true) -Spree::Country.create!({"name"=>"Turkmenistan", "iso3"=>"TKM", "iso"=>"TM", "iso_name"=>"TURKMENISTAN", "numcode"=>"795"}, :without_protection => true) -Spree::Country.create!({"name"=>"Belarus", "iso3"=>"BLR", "iso"=>"BY", "iso_name"=>"BELARUS", "numcode"=>"112"}, :without_protection => true) -Spree::Country.create!({"name"=>"Cook Islands", "iso3"=>"COK", "iso"=>"CK", "iso_name"=>"COOK ISLANDS", "numcode"=>"184"}, :without_protection => true) -Spree::Country.create!({"name"=>"Gambia", "iso3"=>"GMB", "iso"=>"GM", "iso_name"=>"GAMBIA", "numcode"=>"270"}, :without_protection => true) -Spree::Country.create!({"name"=>"Martinique", "iso3"=>"MTQ", "iso"=>"MQ", "iso_name"=>"MARTINIQUE", "numcode"=>"474"}, :without_protection => true) -Spree::Country.create!({"name"=>"Oman", "iso3"=>"OMN", "iso"=>"OM", "iso_name"=>"OMAN", "numcode"=>"512"}, :without_protection => true) -Spree::Country.create!({"name"=>"Seychelles", "iso3"=>"SYC", "iso"=>"SC", "iso_name"=>"SEYCHELLES", "numcode"=>"690"}, :without_protection => true) -Spree::Country.create!({"name"=>"Turks and Caicos Islands", "iso3"=>"TCA", "iso"=>"TC", "iso_name"=>"TURKS AND CAICOS ISLANDS", "numcode"=>"796"}, :without_protection => true) -Spree::Country.create!({"name"=>"Georgia", "iso3"=>"GEO", "iso"=>"GE", "iso_name"=>"GEORGIA", "numcode"=>"268"}, :without_protection => true) -Spree::Country.create!({"name"=>"Mauritania", "iso3"=>"MRT", "iso"=>"MR", "iso_name"=>"MAURITANIA", "numcode"=>"478"}, :without_protection => true) -Spree::Country.create!({"name"=>"Pakistan", "iso3"=>"PAK", "iso"=>"PK", "iso_name"=>"PAKISTAN", "numcode"=>"586"}, :without_protection => true) -Spree::Country.create!({"name"=>"Sierra Leone", "iso3"=>"SLE", "iso"=>"SL", "iso_name"=>"SIERRA LEONE", "numcode"=>"694"}, :without_protection => true) -Spree::Country.create!({"name"=>"Tuvalu", "iso3"=>"TUV", "iso"=>"TV", "iso_name"=>"TUVALU", "numcode"=>"798"}, :without_protection => true) -Spree::Country.create!({"name"=>"Costa Rica", "iso3"=>"CRI", "iso"=>"CR", "iso_name"=>"COSTA RICA", "numcode"=>"188"}, :without_protection => true) -Spree::Country.create!({"name"=>"Germany", "iso3"=>"DEU", "iso"=>"DE", "iso_name"=>"GERMANY", "numcode"=>"276"}, :without_protection => true) -Spree::Country.create!({"name"=>"Mauritius", "iso3"=>"MUS", "iso"=>"MU", "iso_name"=>"MAURITIUS", "numcode"=>"480"}, :without_protection => true) -Spree::Country.create!({"name"=>"Palau", "iso3"=>"PLW", "iso"=>"PW", "iso_name"=>"PALAU", "numcode"=>"585"}, :without_protection => true) -Spree::Country.create!({"name"=>"Cote D'Ivoire", "iso3"=>"CIV", "iso"=>"CI", "iso_name"=>"COTE D'IVOIRE", "numcode"=>"384"}, :without_protection => true) -Spree::Country.create!({"name"=>"Panama", "iso3"=>"PAN", "iso"=>"PA", "iso_name"=>"PANAMA", "numcode"=>"591"}, :without_protection => true) -Spree::Country.create!({"name"=>"Singapore", "iso3"=>"SGP", "iso"=>"SG", "iso_name"=>"SINGAPORE", "numcode"=>"702"}, :without_protection => true) -Spree::Country.create!({"name"=>"Croatia", "iso3"=>"HRV", "iso"=>"HR", "iso_name"=>"CROATIA", "numcode"=>"191"}, :without_protection => true) -Spree::Country.create!({"name"=>"Ghana", "iso3"=>"GHA", "iso"=>"GH", "iso_name"=>"GHANA", "numcode"=>"288"}, :without_protection => true) -Spree::Country.create!({"name"=>"Papua New Guinea", "iso3"=>"PNG", "iso"=>"PG", "iso_name"=>"PAPUA NEW GUINEA", "numcode"=>"598"}, :without_protection => true) -Spree::Country.create!({"name"=>"Slovakia", "iso3"=>"SVK", "iso"=>"SK", "iso_name"=>"SLOVAKIA", "numcode"=>"703"}, :without_protection => true) -Spree::Country.create!({"name"=>"Gibraltar", "iso3"=>"GIB", "iso"=>"GI", "iso_name"=>"GIBRALTAR", "numcode"=>"292"}, :without_protection => true) -Spree::Country.create!({"name"=>"Paraguay", "iso3"=>"PRY", "iso"=>"PY", "iso_name"=>"PARAGUAY", "numcode"=>"600"}, :without_protection => true) -Spree::Country.create!({"name"=>"Slovenia", "iso3"=>"SVN", "iso"=>"SI", "iso_name"=>"SLOVENIA", "numcode"=>"705"}, :without_protection => true) -Spree::Country.create!({"name"=>"Greece", "iso3"=>"GRC", "iso"=>"GR", "iso_name"=>"GREECE", "numcode"=>"300"}, :without_protection => true) -Spree::Country.create!({"name"=>"Peru", "iso3"=>"PER", "iso"=>"PE", "iso_name"=>"PERU", "numcode"=>"604"}, :without_protection => true) -Spree::Country.create!({"name"=>"Solomon Islands", "iso3"=>"SLB", "iso"=>"SB", "iso_name"=>"SOLOMON ISLANDS", "numcode"=>"90"}, :without_protection => true) -Spree::Country.create!({"name"=>"Greenland", "iso3"=>"GRL", "iso"=>"GL", "iso_name"=>"GREENLAND", "numcode"=>"304"}, :without_protection => true) -Spree::Country.create!({"name"=>"Somalia", "iso3"=>"SOM", "iso"=>"SO", "iso_name"=>"SOMALIA", "numcode"=>"706"}, :without_protection => true) -Spree::Country.create!({"name"=>"Grenada", "iso3"=>"GRD", "iso"=>"GD", "iso_name"=>"GRENADA", "numcode"=>"308"}, :without_protection => true) -Spree::Country.create!({"name"=>"South Africa", "iso3"=>"ZAF", "iso"=>"ZA", "iso_name"=>"SOUTH AFRICA", "numcode"=>"710"}, :without_protection => true) -Spree::Country.create!({"name"=>"Spain", "iso3"=>"ESP", "iso"=>"ES", "iso_name"=>"SPAIN", "numcode"=>"724"}, :without_protection => true) -Spree::Country.create!({"name"=>"Sri Lanka", "iso3"=>"LKA", "iso"=>"LK", "iso_name"=>"SRI LANKA", "numcode"=>"144"}, :without_protection => true) -Spree::Country.create!({"name"=>"Afghanistan", "iso3"=>"AFG", "iso"=>"AF", "iso_name"=>"AFGHANISTAN", "numcode"=>"4"}, :without_protection => true) -Spree::Country.create!({"name"=>"Albania", "iso3"=>"ALB", "iso"=>"AL", "iso_name"=>"ALBANIA", "numcode"=>"8"}, :without_protection => true) -Spree::Country.create!({"name"=>"Algeria", "iso3"=>"DZA", "iso"=>"DZ", "iso_name"=>"ALGERIA", "numcode"=>"12"}, :without_protection => true) -Spree::Country.create!({"name"=>"Latvia", "iso3"=>"LVA", "iso"=>"LV", "iso_name"=>"LATVIA", "numcode"=>"428"}, :without_protection => true) -Spree::Country.create!({"name"=>"American Samoa", "iso3"=>"ASM", "iso"=>"AS", "iso_name"=>"AMERICAN SAMOA", "numcode"=>"16"}, :without_protection => true) -Spree::Country.create!({"name"=>"Bulgaria", "iso3"=>"BGR", "iso"=>"BG", "iso_name"=>"BULGARIA", "numcode"=>"100"}, :without_protection => true) -Spree::Country.create!({"name"=>"Lebanon", "iso3"=>"LBN", "iso"=>"LB", "iso_name"=>"LEBANON", "numcode"=>"422"}, :without_protection => true) -Spree::Country.create!({"name"=>"Andorra", "iso3"=>"AND", "iso"=>"AD", "iso_name"=>"ANDORRA", "numcode"=>"20"}, :without_protection => true) -Spree::Country.create!({"name"=>"Burkina Faso", "iso3"=>"BFA", "iso"=>"BF", "iso_name"=>"BURKINA FASO", "numcode"=>"854"}, :without_protection => true) -Spree::Country.create!({"name"=>"Lesotho", "iso3"=>"LSO", "iso"=>"LS", "iso_name"=>"LESOTHO", "numcode"=>"426"}, :without_protection => true) -Spree::Country.create!({"name"=>"Angola", "iso3"=>"AGO", "iso"=>"AO", "iso_name"=>"ANGOLA", "numcode"=>"24"}, :without_protection => true) -Spree::Country.create!({"name"=>"Burundi", "iso3"=>"BDI", "iso"=>"BI", "iso_name"=>"BURUNDI", "numcode"=>"108"}, :without_protection => true) -Spree::Country.create!({"name"=>"Liberia", "iso3"=>"LBR", "iso"=>"LR", "iso_name"=>"LIBERIA", "numcode"=>"430"}, :without_protection => true) -Spree::Country.create!({"name"=>"Virgin Islands, British", "iso3"=>"VGB", "iso"=>"VG", "iso_name"=>"VIRGIN ISLANDS, BRITISH", "numcode"=>"92"}, :without_protection => true) -Spree::Country.create!({"name"=>"Anguilla", "iso3"=>"AIA", "iso"=>"AI", "iso_name"=>"ANGUILLA", "numcode"=>"660"}, :without_protection => true) -Spree::Country.create!({"name"=>"Cambodia", "iso3"=>"KHM", "iso"=>"KH", "iso_name"=>"CAMBODIA", "numcode"=>"116"}, :without_protection => true) -Spree::Country.create!({"name"=>"Equatorial Guinea", "iso3"=>"GNQ", "iso"=>"GQ", "iso_name"=>"EQUATORIAL GUINEA", "numcode"=>"226"}, :without_protection => true) -Spree::Country.create!({"name"=>"Libyan Arab Jamahiriya", "iso3"=>"LBY", "iso"=>"LY", "iso_name"=>"LIBYAN ARAB JAMAHIRIYA", "numcode"=>"434"}, :without_protection => true) -Spree::Country.create!({"name"=>"Nauru", "iso3"=>"NRU", "iso"=>"NR", "iso_name"=>"NAURU", "numcode"=>"520"}, :without_protection => true) -Spree::Country.create!({"name"=>"Virgin Islands, U.S.", "iso3"=>"VIR", "iso"=>"VI", "iso_name"=>"VIRGIN ISLANDS, U.S.", "numcode"=>"850"}, :without_protection => true) -Spree::Country.create!({"name"=>"Antigua and Barbuda", "iso3"=>"ATG", "iso"=>"AG", "iso_name"=>"ANTIGUA AND BARBUDA", "numcode"=>"28"}, :without_protection => true) -Spree::Country.create!({"name"=>"Cameroon", "iso3"=>"CMR", "iso"=>"CM", "iso_name"=>"CAMEROON", "numcode"=>"120"}, :without_protection => true) -Spree::Country.create!({"name"=>"Liechtenstein", "iso3"=>"LIE", "iso"=>"LI", "iso_name"=>"LIECHTENSTEIN", "numcode"=>"438"}, :without_protection => true) -Spree::Country.create!({"name"=>"Nepal", "iso3"=>"NPL", "iso"=>"NP", "iso_name"=>"NEPAL", "numcode"=>"524"}, :without_protection => true) -Spree::Country.create!({"name"=>"Wallis and Futuna", "iso3"=>"WLF", "iso"=>"WF", "iso_name"=>"WALLIS AND FUTUNA", "numcode"=>"876"}, :without_protection => true) -Spree::Country.create!({"name"=>"Western Sahara", "iso3"=>"ESH", "iso"=>"EH", "iso_name"=>"WESTERN SAHARA", "numcode"=>"732"}, :without_protection => true) -Spree::Country.create!({"name"=>"Argentina", "iso3"=>"ARG", "iso"=>"AR", "iso_name"=>"ARGENTINA", "numcode"=>"32"}, :without_protection => true) -Spree::Country.create!({"name"=>"Canada", "iso3"=>"CAN", "iso"=>"CA", "iso_name"=>"CANADA", "numcode"=>"124"}, :without_protection => true) -Spree::Country.create!({"name"=>"Eritrea", "iso3"=>"ERI", "iso"=>"ER", "iso_name"=>"ERITREA", "numcode"=>"232"}, :without_protection => true) -Spree::Country.create!({"name"=>"Lithuania", "iso3"=>"LTU", "iso"=>"LT", "iso_name"=>"LITHUANIA", "numcode"=>"440"}, :without_protection => true) -Spree::Country.create!({"name"=>"Netherlands", "iso3"=>"NLD", "iso"=>"NL", "iso_name"=>"NETHERLANDS", "numcode"=>"528"}, :without_protection => true) -Spree::Country.create!({"name"=>"Yemen", "iso3"=>"YEM", "iso"=>"YE", "iso_name"=>"YEMEN", "numcode"=>"887"}, :without_protection => true) -Spree::Country.create!({"name"=>"Cape Verde", "iso3"=>"CPV", "iso"=>"CV", "iso_name"=>"CAPE VERDE", "numcode"=>"132"}, :without_protection => true) -Spree::Country.create!({"name"=>"Estonia", "iso3"=>"EST", "iso"=>"EE", "iso_name"=>"ESTONIA", "numcode"=>"233"}, :without_protection => true) -Spree::Country.create!({"name"=>"Luxembourg", "iso3"=>"LUX", "iso"=>"LU", "iso_name"=>"LUXEMBOURG", "numcode"=>"442"}, :without_protection => true) -Spree::Country.create!({"name"=>"Netherlands Antilles", "iso3"=>"ANT", "iso"=>"AN", "iso_name"=>"NETHERLANDS ANTILLES", "numcode"=>"530"}, :without_protection => true) -Spree::Country.create!({"name"=>"Saint Helena", "iso3"=>"SHN", "iso"=>"SH", "iso_name"=>"SAINT HELENA", "numcode"=>"654"}, :without_protection => true) -Spree::Country.create!({"name"=>"Zambia", "iso3"=>"ZMB", "iso"=>"ZM", "iso_name"=>"ZAMBIA", "numcode"=>"894"}, :without_protection => true) -Spree::Country.create!({"name"=>"Cayman Islands", "iso3"=>"CYM", "iso"=>"KY", "iso_name"=>"CAYMAN ISLANDS", "numcode"=>"136"}, :without_protection => true) -Spree::Country.create!({"name"=>"Ethiopia", "iso3"=>"ETH", "iso"=>"ET", "iso_name"=>"ETHIOPIA", "numcode"=>"231"}, :without_protection => true) -Spree::Country.create!({"name"=>"Hungary", "iso3"=>"HUN", "iso"=>"HU", "iso_name"=>"HUNGARY", "numcode"=>"348"}, :without_protection => true) -Spree::Country.create!({"name"=>"Macao", "iso3"=>"MAC", "iso"=>"MO", "iso_name"=>"MACAO", "numcode"=>"446"}, :without_protection => true) -Spree::Country.create!({"name"=>"New Caledonia", "iso3"=>"NCL", "iso"=>"NC", "iso_name"=>"NEW CALEDONIA", "numcode"=>"540"}, :without_protection => true) -Spree::Country.create!({"name"=>"Zimbabwe", "iso3"=>"ZWE", "iso"=>"ZW", "iso_name"=>"ZIMBABWE", "numcode"=>"716"}, :without_protection => true) -Spree::Country.create!({"name"=>"Central African Republic", "iso3"=>"CAF", "iso"=>"CF", "iso_name"=>"CENTRAL AFRICAN REPUBLIC", "numcode"=>"140"}, :without_protection => true) -Spree::Country.create!({"name"=>"Falkland Islands (Malvinas)", "iso3"=>"FLK", "iso"=>"FK", "iso_name"=>"FALKLAND ISLANDS (MALVINAS)", "numcode"=>"238"}, :without_protection => true) -Spree::Country.create!({"name"=>"Iceland", "iso3"=>"ISL", "iso"=>"IS", "iso_name"=>"ICELAND", "numcode"=>"352"}, :without_protection => true) -Spree::Country.create!({"name"=>"Macedonia", "iso3"=>"MKD", "iso"=>"MK", "iso_name"=>"MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF", "numcode"=>"807"}, :without_protection => true) -Spree::Country.create!({"name"=>"New Zealand", "iso3"=>"NZL", "iso"=>"NZ", "iso_name"=>"NEW ZEALAND", "numcode"=>"554"}, :without_protection => true) -Spree::Country.create!({"name"=>"Saint Kitts and Nevis", "iso3"=>"KNA", "iso"=>"KN", "iso_name"=>"SAINT KITTS AND NEVIS", "numcode"=>"659"}, :without_protection => true) -Spree::Country.create!({"name"=>"Serbia", "iso3"=>"SRB", "iso"=>"RS", "iso_name" => "SERBIA", "numcode"=>"999"}, :without_protection => true) +Spree::Country.create!({"name"=>"Chad", "iso3"=>"TCD", "iso"=>"TD", "iso_name"=>"CHAD", "numcode"=>"148"}) +Spree::Country.create!({"name"=>"Faroe Islands", "iso3"=>"FRO", "iso"=>"FO", "iso_name"=>"FAROE ISLANDS", "numcode"=>"234"}) +Spree::Country.create!({"name"=>"India", "iso3"=>"IND", "iso"=>"IN", "iso_name"=>"INDIA", "numcode"=>"356"}) +Spree::Country.create!({"name"=>"Nicaragua", "iso3"=>"NIC", "iso"=>"NI", "iso_name"=>"NICARAGUA", "numcode"=>"558"}) +Spree::Country.create!({"name"=>"Saint Lucia", "iso3"=>"LCA", "iso"=>"LC", "iso_name"=>"SAINT LUCIA", "numcode"=>"662"}) +Spree::Country.create!({"name"=>"Fiji", "iso3"=>"FJI", "iso"=>"FJ", "iso_name"=>"FIJI", "numcode"=>"242"}) +Spree::Country.create!({"name"=>"Indonesia", "iso3"=>"IDN", "iso"=>"ID", "iso_name"=>"INDONESIA", "numcode"=>"360"}) +Spree::Country.create!({"name"=>"Niger", "iso3"=>"NER", "iso"=>"NE", "iso_name"=>"NIGER", "numcode"=>"562"}) +Spree::Country.create!({"name"=>"Saint Pierre and Miquelon", "iso3"=>"SPM", "iso"=>"PM", "iso_name"=>"SAINT PIERRE AND MIQUELON", "numcode"=>"666"}) +Spree::Country.create!({"name"=>"Finland", "iso3"=>"FIN", "iso"=>"FI", "iso_name"=>"FINLAND", "numcode"=>"246"}) +Spree::Country.create!({"name"=>"Nigeria", "iso3"=>"NGA", "iso"=>"NG", "iso_name"=>"NIGERIA", "numcode"=>"566"}) +Spree::Country.create!({"name"=>"Saint Vincent and the Grenadines", "iso3"=>"VCT", "iso"=>"VC", "iso_name"=>"SAINT VINCENT AND THE GRENADINES", "numcode"=>"670"}) +Spree::Country.create!({"name"=>"France", "iso3"=>"FRA", "iso"=>"FR", "iso_name"=>"FRANCE", "numcode"=>"250"}) +Spree::Country.create!({"name"=>"Iran, Islamic Republic of", "iso3"=>"IRN", "iso"=>"IR", "iso_name"=>"IRAN, ISLAMIC REPUBLIC OF", "numcode"=>"364"}) +Spree::Country.create!({"name"=>"Niue", "iso3"=>"NIU", "iso"=>"NU", "iso_name"=>"NIUE", "numcode"=>"570"}) +Spree::Country.create!({"name"=>"Samoa", "iso3"=>"WSM", "iso"=>"WS", "iso_name"=>"SAMOA", "numcode"=>"882"}) +Spree::Country.create!({"name"=>"French Guiana", "iso3"=>"GUF", "iso"=>"GF", "iso_name"=>"FRENCH GUIANA", "numcode"=>"254"}) +Spree::Country.create!({"name"=>"Iraq", "iso3"=>"IRQ", "iso"=>"IQ", "iso_name"=>"IRAQ", "numcode"=>"368"}) +Spree::Country.create!({"name"=>"San Marino", "iso3"=>"SMR", "iso"=>"SM", "iso_name"=>"SAN MARINO", "numcode"=>"674"}) +Spree::Country.create!({"name"=>"Ireland", "iso3"=>"IRL", "iso"=>"IE", "iso_name"=>"IRELAND", "numcode"=>"372"}) +Spree::Country.create!({"name"=>"Sao Tome and Principe", "iso3"=>"STP", "iso"=>"ST", "iso_name"=>"SAO TOME AND PRINCIPE", "numcode"=>"678"}) +Spree::Country.create!({"name"=>"Israel", "iso3"=>"ISR", "iso"=>"IL", "iso_name"=>"ISRAEL", "numcode"=>"376"}) +Spree::Country.create!({"name"=>"Saudi Arabia", "iso3"=>"SAU", "iso"=>"SA", "iso_name"=>"SAUDI ARABIA", "numcode"=>"682"}) +Spree::Country.create!({"name"=>"Italy", "iso3"=>"ITA", "iso"=>"IT", "iso_name"=>"ITALY", "numcode"=>"380"}) +Spree::Country.create!({"name"=>"Senegal", "iso3"=>"SEN", "iso"=>"SN", "iso_name"=>"SENEGAL", "numcode"=>"686"}) +Spree::Country.create!({"name"=>"Jamaica", "iso3"=>"JAM", "iso"=>"JM", "iso_name"=>"JAMAICA", "numcode"=>"388"}) +Spree::Country.create!({"name"=>"Japan", "iso3"=>"JPN", "iso"=>"JP", "iso_name"=>"JAPAN", "numcode"=>"392"}) +Spree::Country.create!({"name"=>"Jordan", "iso3"=>"JOR", "iso"=>"JO", "iso_name"=>"JORDAN", "numcode"=>"400"}) +Spree::Country.create!({"name"=>"Belgium", "iso3"=>"BEL", "iso"=>"BE", "iso_name"=>"BELGIUM", "numcode"=>"56"}) +Spree::Country.create!({"name"=>"Belize", "iso3"=>"BLZ", "iso"=>"BZ", "iso_name"=>"BELIZE", "numcode"=>"84"}) +Spree::Country.create!({"name"=>"Kazakhstan", "iso3"=>"KAZ", "iso"=>"KZ", "iso_name"=>"KAZAKHSTAN", "numcode"=>"398"}) +Spree::Country.create!({"name"=>"Uganda", "iso3"=>"UGA", "iso"=>"UG", "iso_name"=>"UGANDA", "numcode"=>"800"}) +Spree::Country.create!({"name"=>"Benin", "iso3"=>"BEN", "iso"=>"BJ", "iso_name"=>"BENIN", "numcode"=>"204"}) +Spree::Country.create!({"name"=>"Kenya", "iso3"=>"KEN", "iso"=>"KE", "iso_name"=>"KENYA", "numcode"=>"404"}) +Spree::Country.create!({"name"=>"Ukraine", "iso3"=>"UKR", "iso"=>"UA", "iso_name"=>"UKRAINE", "numcode"=>"804"}) +Spree::Country.create!({"name"=>"Bermuda", "iso3"=>"BMU", "iso"=>"BM", "iso_name"=>"BERMUDA", "numcode"=>"60"}) +Spree::Country.create!({"name"=>"Kiribati", "iso3"=>"KIR", "iso"=>"KI", "iso_name"=>"KIRIBATI", "numcode"=>"296"}) +Spree::Country.create!({"name"=>"Mexico", "iso3"=>"MEX", "iso"=>"MX", "iso_name"=>"MEXICO", "numcode"=>"484"}) +Spree::Country.create!({"name"=>"United Arab Emirates", "iso3"=>"ARE", "iso"=>"AE", "iso_name"=>"UNITED ARAB EMIRATES", "numcode"=>"784"}) +Spree::Country.create!({"name"=>"Bhutan", "iso3"=>"BTN", "iso"=>"BT", "iso_name"=>"BHUTAN", "numcode"=>"64"}) +Spree::Country.create!({"name"=>"Cuba", "iso3"=>"CUB", "iso"=>"CU", "iso_name"=>"CUBA", "numcode"=>"192"}) +Spree::Country.create!({"name"=>"North Korea", "iso3"=>"PRK", "iso"=>"KP", "iso_name"=>"KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF", "numcode"=>"408"}) +Spree::Country.create!({"name"=>"Micronesia, Federated States of", "iso3"=>"FSM", "iso"=>"FM", "iso_name"=>"MICRONESIA, FEDERATED STATES OF", "numcode"=>"583"}) +Spree::Country.create!({"name"=>"United Kingdom", "iso3"=>"GBR", "iso"=>"GB", "iso_name"=>"UNITED KINGDOM", "numcode"=>"826"}) +Spree::Country.create!({"name"=>"Bolivia", "iso3"=>"BOL", "iso"=>"BO", "iso_name"=>"BOLIVIA", "numcode"=>"68"}) +Spree::Country.create!({"name"=>"Cyprus", "iso3"=>"CYP", "iso"=>"CY", "iso_name"=>"CYPRUS", "numcode"=>"196"}) +Spree::Country.create!({"name"=>"South Korea", "iso3"=>"KOR", "iso"=>"KR", "iso_name"=>"KOREA, REPUBLIC OF", "numcode"=>"410"}) +Spree::Country.create!({"name"=>"Moldova, Republic of", "iso3"=>"MDA", "iso"=>"MD", "iso_name"=>"MOLDOVA, REPUBLIC OF", "numcode"=>"498"}) +Spree::Country.create!({"name"=>"United States", "iso3"=>"USA", "iso"=>"US", "iso_name"=>"UNITED STATES", "numcode"=>"840"}) +Spree::Country.create!({"name"=>"Bosnia and Herzegovina", "iso3"=>"BIH", "iso"=>"BA", "iso_name"=>"BOSNIA AND HERZEGOVINA", "numcode"=>"70"}) +Spree::Country.create!({"name"=>"Czech Republic", "iso3"=>"CZE", "iso"=>"CZ", "iso_name"=>"CZECH REPUBLIC", "numcode"=>"203"}) +Spree::Country.create!({"name"=>"Kuwait", "iso3"=>"KWT", "iso"=>"KW", "iso_name"=>"KUWAIT", "numcode"=>"414"}) +Spree::Country.create!({"name"=>"Monaco", "iso3"=>"MCO", "iso"=>"MC", "iso_name"=>"MONACO", "numcode"=>"492"}) +Spree::Country.create!({"name"=>"Uruguay", "iso3"=>"URY", "iso"=>"UY", "iso_name"=>"URUGUAY", "numcode"=>"858"}) +Spree::Country.create!({"name"=>"Botswana", "iso3"=>"BWA", "iso"=>"BW", "iso_name"=>"BOTSWANA", "numcode"=>"72"}) +Spree::Country.create!({"name"=>"Denmark", "iso3"=>"DNK", "iso"=>"DK", "iso_name"=>"DENMARK", "numcode"=>"208"}) +Spree::Country.create!({"name"=>"Guadeloupe", "iso3"=>"GLP", "iso"=>"GP", "iso_name"=>"GUADELOUPE", "numcode"=>"312"}) +Spree::Country.create!({"name"=>"Kyrgyzstan", "iso3"=>"KGZ", "iso"=>"KG", "iso_name"=>"KYRGYZSTAN", "numcode"=>"417"}) +Spree::Country.create!({"name"=>"Mongolia", "iso3"=>"MNG", "iso"=>"MN", "iso_name"=>"MONGOLIA", "numcode"=>"496"}) +Spree::Country.create!({"name"=>"Philippines", "iso3"=>"PHL", "iso"=>"PH", "iso_name"=>"PHILIPPINES", "numcode"=>"608"}) +Spree::Country.create!({"name"=>"Brazil", "iso3"=>"BRA", "iso"=>"BR", "iso_name"=>"BRAZIL", "numcode"=>"76"}) +Spree::Country.create!({"name"=>"Djibouti", "iso3"=>"DJI", "iso"=>"DJ", "iso_name"=>"DJIBOUTI", "numcode"=>"262"}) +Spree::Country.create!({"name"=>"Guam", "iso3"=>"GUM", "iso"=>"GU", "iso_name"=>"GUAM", "numcode"=>"316"}) +Spree::Country.create!({"name"=>"Lao People's Democratic Republic", "iso3"=>"LAO", "iso"=>"LA", "iso_name"=>"LAO PEOPLE'S DEMOCRATIC REPUBLIC", "numcode"=>"418"}) +Spree::Country.create!({"name"=>"Montserrat", "iso3"=>"MSR", "iso"=>"MS", "iso_name"=>"MONTSERRAT", "numcode"=>"500"}) +Spree::Country.create!({"name"=>"Pitcairn", "iso3"=>"PCN", "iso"=>"PN", "iso_name"=>"PITCAIRN", "numcode"=>"612"}) +Spree::Country.create!({"name"=>"Uzbekistan", "iso3"=>"UZB", "iso"=>"UZ", "iso_name"=>"UZBEKISTAN", "numcode"=>"860"}) +Spree::Country.create!({"name"=>"Brunei Darussalam", "iso3"=>"BRN", "iso"=>"BN", "iso_name"=>"BRUNEI DARUSSALAM", "numcode"=>"96"}) +Spree::Country.create!({"name"=>"Dominica", "iso3"=>"DMA", "iso"=>"DM", "iso_name"=>"DOMINICA", "numcode"=>"212"}) +Spree::Country.create!({"name"=>"Guatemala", "iso3"=>"GTM", "iso"=>"GT", "iso_name"=>"GUATEMALA", "numcode"=>"320"}) +Spree::Country.create!({"name"=>"Morocco", "iso3"=>"MAR", "iso"=>"MA", "iso_name"=>"MOROCCO", "numcode"=>"504"}) +Spree::Country.create!({"name"=>"Poland", "iso3"=>"POL", "iso"=>"PL", "iso_name"=>"POLAND", "numcode"=>"616"}) +Spree::Country.create!({"name"=>"Vanuatu", "iso3"=>"VUT", "iso"=>"VU", "iso_name"=>"VANUATU", "numcode"=>"548"}) +Spree::Country.create!({"name"=>"Dominican Republic", "iso3"=>"DOM", "iso"=>"DO", "iso_name"=>"DOMINICAN REPUBLIC", "numcode"=>"214"}) +Spree::Country.create!({"name"=>"Mozambique", "iso3"=>"MOZ", "iso"=>"MZ", "iso_name"=>"MOZAMBIQUE", "numcode"=>"508"}) +Spree::Country.create!({"name"=>"Portugal", "iso3"=>"PRT", "iso"=>"PT", "iso_name"=>"PORTUGAL", "numcode"=>"620"}) +Spree::Country.create!({"name"=>"Sudan", "iso3"=>"SDN", "iso"=>"SD", "iso_name"=>"SUDAN", "numcode"=>"736"}) +Spree::Country.create!({"name"=>"Venezuela", "iso3"=>"VEN", "iso"=>"VE", "iso_name"=>"VENEZUELA", "numcode"=>"862"}) +Spree::Country.create!({"name"=>"Ecuador", "iso3"=>"ECU", "iso"=>"EC", "iso_name"=>"ECUADOR", "numcode"=>"218"}) +Spree::Country.create!({"name"=>"Guinea", "iso3"=>"GIN", "iso"=>"GN", "iso_name"=>"GUINEA", "numcode"=>"324"}) +Spree::Country.create!({"name"=>"Myanmar", "iso3"=>"MMR", "iso"=>"MM", "iso_name"=>"MYANMAR", "numcode"=>"104"}) +Spree::Country.create!({"name"=>"Puerto Rico", "iso3"=>"PRI", "iso"=>"PR", "iso_name"=>"PUERTO RICO", "numcode"=>"630"}) +Spree::Country.create!({"name"=>"Suriname", "iso3"=>"SUR", "iso"=>"SR", "iso_name"=>"SURINAME", "numcode"=>"740"}) +Spree::Country.create!({"name"=>"Viet Nam", "iso3"=>"VNM", "iso"=>"VN", "iso_name"=>"VIET NAM", "numcode"=>"704"}) +Spree::Country.create!({"name"=>"Egypt", "iso3"=>"EGY", "iso"=>"EG", "iso_name"=>"EGYPT", "numcode"=>"818"}) +Spree::Country.create!({"name"=>"Guinea-Bissau", "iso3"=>"GNB", "iso"=>"GW", "iso_name"=>"GUINEA-BISSAU", "numcode"=>"624"}) +Spree::Country.create!({"name"=>"Namibia", "iso3"=>"NAM", "iso"=>"NA", "iso_name"=>"NAMIBIA", "numcode"=>"516"}) +Spree::Country.create!({"name"=>"Qatar", "iso3"=>"QAT", "iso"=>"QA", "iso_name"=>"QATAR", "numcode"=>"634"}) +Spree::Country.create!({"name"=>"Svalbard and Jan Mayen", "iso3"=>"SJM", "iso"=>"SJ", "iso_name"=>"SVALBARD AND JAN MAYEN", "numcode"=>"744"}) +Spree::Country.create!({"name"=>"El Salvador", "iso3"=>"SLV", "iso"=>"SV", "iso_name"=>"EL SALVADOR", "numcode"=>"222"}) +Spree::Country.create!({"name"=>"Guyana", "iso3"=>"GUY", "iso"=>"GY", "iso_name"=>"GUYANA", "numcode"=>"328"}) +Spree::Country.create!({"name"=>"Reunion", "iso3"=>"REU", "iso"=>"RE", "iso_name"=>"REUNION", "numcode"=>"638"}) +Spree::Country.create!({"name"=>"Haiti", "iso3"=>"HTI", "iso"=>"HT", "iso_name"=>"HAITI", "numcode"=>"332"}) +Spree::Country.create!({"name"=>"Romania", "iso3"=>"ROM", "iso"=>"RO", "iso_name"=>"ROMANIA", "numcode"=>"642"}) +Spree::Country.create!({"name"=>"Swaziland", "iso3"=>"SWZ", "iso"=>"SZ", "iso_name"=>"SWAZILAND", "numcode"=>"748"}) +Spree::Country.create!({"name"=>"Holy See (Vatican City State)", "iso3"=>"VAT", "iso"=>"VA", "iso_name"=>"HOLY SEE (VATICAN CITY STATE)", "numcode"=>"336"}) +Spree::Country.create!({"name"=>"Russian Federation", "iso3"=>"RUS", "iso"=>"RU", "iso_name"=>"RUSSIAN FEDERATION", "numcode"=>"643"}) +Spree::Country.create!({"name"=>"Sweden", "iso3"=>"SWE", "iso"=>"SE", "iso_name"=>"SWEDEN", "numcode"=>"752"}) +Spree::Country.create!({"name"=>"Honduras", "iso3"=>"HND", "iso"=>"HN", "iso_name"=>"HONDURAS", "numcode"=>"340"}) +Spree::Country.create!({"name"=>"Rwanda", "iso3"=>"RWA", "iso"=>"RW", "iso_name"=>"RWANDA", "numcode"=>"646"}) +Spree::Country.create!({"name"=>"Switzerland", "iso3"=>"CHE", "iso"=>"CH", "iso_name"=>"SWITZERLAND", "numcode"=>"756"}) +Spree::Country.create!({"name"=>"Hong Kong", "iso3"=>"HKG", "iso"=>"HK", "iso_name"=>"HONG KONG", "numcode"=>"344"}) +Spree::Country.create!({"name"=>"Syrian Arab Republic", "iso3"=>"SYR", "iso"=>"SY", "iso_name"=>"SYRIAN ARAB REPUBLIC", "numcode"=>"760"}) +Spree::Country.create!({"name"=>"Taiwan", "iso3"=>"TWN", "iso"=>"TW", "iso_name"=>"TAIWAN, PROVINCE OF CHINA", "numcode"=>"158"}) +Spree::Country.create!({"name"=>"Tajikistan", "iso3"=>"TJK", "iso"=>"TJ", "iso_name"=>"TAJIKISTAN", "numcode"=>"762"}) +Spree::Country.create!({"name"=>"Tanzania, United Republic of", "iso3"=>"TZA", "iso"=>"TZ", "iso_name"=>"TANZANIA, UNITED REPUBLIC OF", "numcode"=>"834"}) +Spree::Country.create!({"name"=>"Armenia", "iso3"=>"ARM", "iso"=>"AM", "iso_name"=>"ARMENIA", "numcode"=>"51"}) +Spree::Country.create!({"name"=>"Aruba", "iso3"=>"ABW", "iso"=>"AW", "iso_name"=>"ARUBA", "numcode"=>"533"}) +Spree::Country.create!({"name"=>"Australia", "iso3"=>"AUS", "iso"=>"AU", "iso_name"=>"AUSTRALIA", "numcode"=>"36"}) +Spree::Country.create!({"name"=>"Thailand", "iso3"=>"THA", "iso"=>"TH", "iso_name"=>"THAILAND", "numcode"=>"764"}) +Spree::Country.create!({"name"=>"Austria", "iso3"=>"AUT", "iso"=>"AT", "iso_name"=>"AUSTRIA", "numcode"=>"40"}) +Spree::Country.create!({"name"=>"Madagascar", "iso3"=>"MDG", "iso"=>"MG", "iso_name"=>"MADAGASCAR", "numcode"=>"450"}) +Spree::Country.create!({"name"=>"Togo", "iso3"=>"TGO", "iso"=>"TG", "iso_name"=>"TOGO", "numcode"=>"768"}) +Spree::Country.create!({"name"=>"Azerbaijan", "iso3"=>"AZE", "iso"=>"AZ", "iso_name"=>"AZERBAIJAN", "numcode"=>"31"}) +Spree::Country.create!({"name"=>"Chile", "iso3"=>"CHL", "iso"=>"CL", "iso_name"=>"CHILE", "numcode"=>"152"}) +Spree::Country.create!({"name"=>"Malawi", "iso3"=>"MWI", "iso"=>"MW", "iso_name"=>"MALAWI", "numcode"=>"454"}) +Spree::Country.create!({"name"=>"Tokelau", "iso3"=>"TKL", "iso"=>"TK", "iso_name"=>"TOKELAU", "numcode"=>"772"}) +Spree::Country.create!({"name"=>"Bahamas", "iso3"=>"BHS", "iso"=>"BS", "iso_name"=>"BAHAMAS", "numcode"=>"44"}) +Spree::Country.create!({"name"=>"China", "iso3"=>"CHN", "iso"=>"CN", "iso_name"=>"CHINA", "numcode"=>"156"}) +Spree::Country.create!({"name"=>"Malaysia", "iso3"=>"MYS", "iso"=>"MY", "iso_name"=>"MALAYSIA", "numcode"=>"458"}) +Spree::Country.create!({"name"=>"Tonga", "iso3"=>"TON", "iso"=>"TO", "iso_name"=>"TONGA", "numcode"=>"776"}) +Spree::Country.create!({"name"=>"Bahrain", "iso3"=>"BHR", "iso"=>"BH", "iso_name"=>"BAHRAIN", "numcode"=>"48"}) +Spree::Country.create!({"name"=>"Colombia", "iso3"=>"COL", "iso"=>"CO", "iso_name"=>"COLOMBIA", "numcode"=>"170"}) +Spree::Country.create!({"name"=>"Maldives", "iso3"=>"MDV", "iso"=>"MV", "iso_name"=>"MALDIVES", "numcode"=>"462"}) +Spree::Country.create!({"name"=>"Trinidad and Tobago", "iso3"=>"TTO", "iso"=>"TT", "iso_name"=>"TRINIDAD AND TOBAGO", "numcode"=>"780"}) +Spree::Country.create!({"name"=>"Bangladesh", "iso3"=>"BGD", "iso"=>"BD", "iso_name"=>"BANGLADESH", "numcode"=>"50"}) +Spree::Country.create!({"name"=>"Comoros", "iso3"=>"COM", "iso"=>"KM", "iso_name"=>"COMOROS", "numcode"=>"174"}) +Spree::Country.create!({"name"=>"French Polynesia", "iso3"=>"PYF", "iso"=>"PF", "iso_name"=>"FRENCH POLYNESIA", "numcode"=>"258"}) +Spree::Country.create!({"name"=>"Mali", "iso3"=>"MLI", "iso"=>"ML", "iso_name"=>"MALI", "numcode"=>"466"}) +Spree::Country.create!({"name"=>"Norfolk Island", "iso3"=>"NFK", "iso"=>"NF", "iso_name"=>"NORFOLK ISLAND", "numcode"=>"574"}) +Spree::Country.create!({"name"=>"Tunisia", "iso3"=>"TUN", "iso"=>"TN", "iso_name"=>"TUNISIA", "numcode"=>"788"}) +Spree::Country.create!({"name"=>"Barbados", "iso3"=>"BRB", "iso"=>"BB", "iso_name"=>"BARBADOS", "numcode"=>"52"}) +Spree::Country.create!({"name"=>"Congo", "iso3"=>"COG", "iso"=>"CG", "iso_name"=>"CONGO", "numcode"=>"178"}) +Spree::Country.create!({"name"=>"Gabon", "iso3"=>"GAB", "iso"=>"GA", "iso_name"=>"GABON", "numcode"=>"266"}) +Spree::Country.create!({"name"=>"Malta", "iso3"=>"MLT", "iso"=>"MT", "iso_name"=>"MALTA", "numcode"=>"470"}) +Spree::Country.create!({"name"=>"Northern Mariana Islands", "iso3"=>"MNP", "iso"=>"MP", "iso_name"=>"NORTHERN MARIANA ISLANDS", "numcode"=>"580"}) +Spree::Country.create!({"name"=>"Turkey", "iso3"=>"TUR", "iso"=>"TR", "iso_name"=>"TURKEY", "numcode"=>"792"}) +Spree::Country.create!({"name"=>"Congo, the Democratic Republic of the", "iso3"=>"COD", "iso"=>"CD", "iso_name"=>"CONGO, THE DEMOCRATIC REPUBLIC OF THE", "numcode"=>"180"}) +Spree::Country.create!({"name"=>"Marshall Islands", "iso3"=>"MHL", "iso"=>"MH", "iso_name"=>"MARSHALL ISLANDS", "numcode"=>"584"}) +Spree::Country.create!({"name"=>"Norway", "iso3"=>"NOR", "iso"=>"NO", "iso_name"=>"NORWAY", "numcode"=>"578"}) +Spree::Country.create!({"name"=>"Turkmenistan", "iso3"=>"TKM", "iso"=>"TM", "iso_name"=>"TURKMENISTAN", "numcode"=>"795"}) +Spree::Country.create!({"name"=>"Belarus", "iso3"=>"BLR", "iso"=>"BY", "iso_name"=>"BELARUS", "numcode"=>"112"}) +Spree::Country.create!({"name"=>"Cook Islands", "iso3"=>"COK", "iso"=>"CK", "iso_name"=>"COOK ISLANDS", "numcode"=>"184"}) +Spree::Country.create!({"name"=>"Gambia", "iso3"=>"GMB", "iso"=>"GM", "iso_name"=>"GAMBIA", "numcode"=>"270"}) +Spree::Country.create!({"name"=>"Martinique", "iso3"=>"MTQ", "iso"=>"MQ", "iso_name"=>"MARTINIQUE", "numcode"=>"474"}) +Spree::Country.create!({"name"=>"Oman", "iso3"=>"OMN", "iso"=>"OM", "iso_name"=>"OMAN", "numcode"=>"512"}) +Spree::Country.create!({"name"=>"Seychelles", "iso3"=>"SYC", "iso"=>"SC", "iso_name"=>"SEYCHELLES", "numcode"=>"690"}) +Spree::Country.create!({"name"=>"Turks and Caicos Islands", "iso3"=>"TCA", "iso"=>"TC", "iso_name"=>"TURKS AND CAICOS ISLANDS", "numcode"=>"796"}) +Spree::Country.create!({"name"=>"Georgia", "iso3"=>"GEO", "iso"=>"GE", "iso_name"=>"GEORGIA", "numcode"=>"268"}) +Spree::Country.create!({"name"=>"Mauritania", "iso3"=>"MRT", "iso"=>"MR", "iso_name"=>"MAURITANIA", "numcode"=>"478"}) +Spree::Country.create!({"name"=>"Pakistan", "iso3"=>"PAK", "iso"=>"PK", "iso_name"=>"PAKISTAN", "numcode"=>"586"}) +Spree::Country.create!({"name"=>"Sierra Leone", "iso3"=>"SLE", "iso"=>"SL", "iso_name"=>"SIERRA LEONE", "numcode"=>"694"}) +Spree::Country.create!({"name"=>"Tuvalu", "iso3"=>"TUV", "iso"=>"TV", "iso_name"=>"TUVALU", "numcode"=>"798"}) +Spree::Country.create!({"name"=>"Costa Rica", "iso3"=>"CRI", "iso"=>"CR", "iso_name"=>"COSTA RICA", "numcode"=>"188"}) +Spree::Country.create!({"name"=>"Germany", "iso3"=>"DEU", "iso"=>"DE", "iso_name"=>"GERMANY", "numcode"=>"276"}) +Spree::Country.create!({"name"=>"Mauritius", "iso3"=>"MUS", "iso"=>"MU", "iso_name"=>"MAURITIUS", "numcode"=>"480"}) +Spree::Country.create!({"name"=>"Palau", "iso3"=>"PLW", "iso"=>"PW", "iso_name"=>"PALAU", "numcode"=>"585"}) +Spree::Country.create!({"name"=>"Cote D'Ivoire", "iso3"=>"CIV", "iso"=>"CI", "iso_name"=>"COTE D'IVOIRE", "numcode"=>"384"}) +Spree::Country.create!({"name"=>"Panama", "iso3"=>"PAN", "iso"=>"PA", "iso_name"=>"PANAMA", "numcode"=>"591"}) +Spree::Country.create!({"name"=>"Singapore", "iso3"=>"SGP", "iso"=>"SG", "iso_name"=>"SINGAPORE", "numcode"=>"702"}) +Spree::Country.create!({"name"=>"Croatia", "iso3"=>"HRV", "iso"=>"HR", "iso_name"=>"CROATIA", "numcode"=>"191"}) +Spree::Country.create!({"name"=>"Ghana", "iso3"=>"GHA", "iso"=>"GH", "iso_name"=>"GHANA", "numcode"=>"288"}) +Spree::Country.create!({"name"=>"Papua New Guinea", "iso3"=>"PNG", "iso"=>"PG", "iso_name"=>"PAPUA NEW GUINEA", "numcode"=>"598"}) +Spree::Country.create!({"name"=>"Slovakia", "iso3"=>"SVK", "iso"=>"SK", "iso_name"=>"SLOVAKIA", "numcode"=>"703"}) +Spree::Country.create!({"name"=>"Gibraltar", "iso3"=>"GIB", "iso"=>"GI", "iso_name"=>"GIBRALTAR", "numcode"=>"292"}) +Spree::Country.create!({"name"=>"Paraguay", "iso3"=>"PRY", "iso"=>"PY", "iso_name"=>"PARAGUAY", "numcode"=>"600"}) +Spree::Country.create!({"name"=>"Slovenia", "iso3"=>"SVN", "iso"=>"SI", "iso_name"=>"SLOVENIA", "numcode"=>"705"}) +Spree::Country.create!({"name"=>"Greece", "iso3"=>"GRC", "iso"=>"GR", "iso_name"=>"GREECE", "numcode"=>"300"}) +Spree::Country.create!({"name"=>"Peru", "iso3"=>"PER", "iso"=>"PE", "iso_name"=>"PERU", "numcode"=>"604"}) +Spree::Country.create!({"name"=>"Solomon Islands", "iso3"=>"SLB", "iso"=>"SB", "iso_name"=>"SOLOMON ISLANDS", "numcode"=>"90"}) +Spree::Country.create!({"name"=>"Greenland", "iso3"=>"GRL", "iso"=>"GL", "iso_name"=>"GREENLAND", "numcode"=>"304"}) +Spree::Country.create!({"name"=>"Somalia", "iso3"=>"SOM", "iso"=>"SO", "iso_name"=>"SOMALIA", "numcode"=>"706"}) +Spree::Country.create!({"name"=>"Grenada", "iso3"=>"GRD", "iso"=>"GD", "iso_name"=>"GRENADA", "numcode"=>"308"}) +Spree::Country.create!({"name"=>"South Africa", "iso3"=>"ZAF", "iso"=>"ZA", "iso_name"=>"SOUTH AFRICA", "numcode"=>"710"}) +Spree::Country.create!({"name"=>"Spain", "iso3"=>"ESP", "iso"=>"ES", "iso_name"=>"SPAIN", "numcode"=>"724"}) +Spree::Country.create!({"name"=>"Sri Lanka", "iso3"=>"LKA", "iso"=>"LK", "iso_name"=>"SRI LANKA", "numcode"=>"144"}) +Spree::Country.create!({"name"=>"Afghanistan", "iso3"=>"AFG", "iso"=>"AF", "iso_name"=>"AFGHANISTAN", "numcode"=>"4"}) +Spree::Country.create!({"name"=>"Albania", "iso3"=>"ALB", "iso"=>"AL", "iso_name"=>"ALBANIA", "numcode"=>"8"}) +Spree::Country.create!({"name"=>"Algeria", "iso3"=>"DZA", "iso"=>"DZ", "iso_name"=>"ALGERIA", "numcode"=>"12"}) +Spree::Country.create!({"name"=>"Latvia", "iso3"=>"LVA", "iso"=>"LV", "iso_name"=>"LATVIA", "numcode"=>"428"}) +Spree::Country.create!({"name"=>"American Samoa", "iso3"=>"ASM", "iso"=>"AS", "iso_name"=>"AMERICAN SAMOA", "numcode"=>"16"}) +Spree::Country.create!({"name"=>"Bulgaria", "iso3"=>"BGR", "iso"=>"BG", "iso_name"=>"BULGARIA", "numcode"=>"100"}) +Spree::Country.create!({"name"=>"Lebanon", "iso3"=>"LBN", "iso"=>"LB", "iso_name"=>"LEBANON", "numcode"=>"422"}) +Spree::Country.create!({"name"=>"Andorra", "iso3"=>"AND", "iso"=>"AD", "iso_name"=>"ANDORRA", "numcode"=>"20"}) +Spree::Country.create!({"name"=>"Burkina Faso", "iso3"=>"BFA", "iso"=>"BF", "iso_name"=>"BURKINA FASO", "numcode"=>"854"}) +Spree::Country.create!({"name"=>"Lesotho", "iso3"=>"LSO", "iso"=>"LS", "iso_name"=>"LESOTHO", "numcode"=>"426"}) +Spree::Country.create!({"name"=>"Angola", "iso3"=>"AGO", "iso"=>"AO", "iso_name"=>"ANGOLA", "numcode"=>"24"}) +Spree::Country.create!({"name"=>"Burundi", "iso3"=>"BDI", "iso"=>"BI", "iso_name"=>"BURUNDI", "numcode"=>"108"}) +Spree::Country.create!({"name"=>"Liberia", "iso3"=>"LBR", "iso"=>"LR", "iso_name"=>"LIBERIA", "numcode"=>"430"}) +Spree::Country.create!({"name"=>"Virgin Islands, British", "iso3"=>"VGB", "iso"=>"VG", "iso_name"=>"VIRGIN ISLANDS, BRITISH", "numcode"=>"92"}) +Spree::Country.create!({"name"=>"Anguilla", "iso3"=>"AIA", "iso"=>"AI", "iso_name"=>"ANGUILLA", "numcode"=>"660"}) +Spree::Country.create!({"name"=>"Cambodia", "iso3"=>"KHM", "iso"=>"KH", "iso_name"=>"CAMBODIA", "numcode"=>"116"}) +Spree::Country.create!({"name"=>"Equatorial Guinea", "iso3"=>"GNQ", "iso"=>"GQ", "iso_name"=>"EQUATORIAL GUINEA", "numcode"=>"226"}) +Spree::Country.create!({"name"=>"Libyan Arab Jamahiriya", "iso3"=>"LBY", "iso"=>"LY", "iso_name"=>"LIBYAN ARAB JAMAHIRIYA", "numcode"=>"434"}) +Spree::Country.create!({"name"=>"Nauru", "iso3"=>"NRU", "iso"=>"NR", "iso_name"=>"NAURU", "numcode"=>"520"}) +Spree::Country.create!({"name"=>"Virgin Islands, U.S.", "iso3"=>"VIR", "iso"=>"VI", "iso_name"=>"VIRGIN ISLANDS, U.S.", "numcode"=>"850"}) +Spree::Country.create!({"name"=>"Antigua and Barbuda", "iso3"=>"ATG", "iso"=>"AG", "iso_name"=>"ANTIGUA AND BARBUDA", "numcode"=>"28"}) +Spree::Country.create!({"name"=>"Cameroon", "iso3"=>"CMR", "iso"=>"CM", "iso_name"=>"CAMEROON", "numcode"=>"120"}) +Spree::Country.create!({"name"=>"Liechtenstein", "iso3"=>"LIE", "iso"=>"LI", "iso_name"=>"LIECHTENSTEIN", "numcode"=>"438"}) +Spree::Country.create!({"name"=>"Nepal", "iso3"=>"NPL", "iso"=>"NP", "iso_name"=>"NEPAL", "numcode"=>"524"}) +Spree::Country.create!({"name"=>"Wallis and Futuna", "iso3"=>"WLF", "iso"=>"WF", "iso_name"=>"WALLIS AND FUTUNA", "numcode"=>"876"}) +Spree::Country.create!({"name"=>"Western Sahara", "iso3"=>"ESH", "iso"=>"EH", "iso_name"=>"WESTERN SAHARA", "numcode"=>"732"}) +Spree::Country.create!({"name"=>"Argentina", "iso3"=>"ARG", "iso"=>"AR", "iso_name"=>"ARGENTINA", "numcode"=>"32"}) +Spree::Country.create!({"name"=>"Canada", "iso3"=>"CAN", "iso"=>"CA", "iso_name"=>"CANADA", "numcode"=>"124"}) +Spree::Country.create!({"name"=>"Eritrea", "iso3"=>"ERI", "iso"=>"ER", "iso_name"=>"ERITREA", "numcode"=>"232"}) +Spree::Country.create!({"name"=>"Lithuania", "iso3"=>"LTU", "iso"=>"LT", "iso_name"=>"LITHUANIA", "numcode"=>"440"}) +Spree::Country.create!({"name"=>"Netherlands", "iso3"=>"NLD", "iso"=>"NL", "iso_name"=>"NETHERLANDS", "numcode"=>"528"}) +Spree::Country.create!({"name"=>"Yemen", "iso3"=>"YEM", "iso"=>"YE", "iso_name"=>"YEMEN", "numcode"=>"887"}) +Spree::Country.create!({"name"=>"Cape Verde", "iso3"=>"CPV", "iso"=>"CV", "iso_name"=>"CAPE VERDE", "numcode"=>"132"}) +Spree::Country.create!({"name"=>"Estonia", "iso3"=>"EST", "iso"=>"EE", "iso_name"=>"ESTONIA", "numcode"=>"233"}) +Spree::Country.create!({"name"=>"Luxembourg", "iso3"=>"LUX", "iso"=>"LU", "iso_name"=>"LUXEMBOURG", "numcode"=>"442"}) +Spree::Country.create!({"name"=>"Netherlands Antilles", "iso3"=>"ANT", "iso"=>"AN", "iso_name"=>"NETHERLANDS ANTILLES", "numcode"=>"530"}) +Spree::Country.create!({"name"=>"Saint Helena", "iso3"=>"SHN", "iso"=>"SH", "iso_name"=>"SAINT HELENA", "numcode"=>"654"}) +Spree::Country.create!({"name"=>"Zambia", "iso3"=>"ZMB", "iso"=>"ZM", "iso_name"=>"ZAMBIA", "numcode"=>"894"}) +Spree::Country.create!({"name"=>"Cayman Islands", "iso3"=>"CYM", "iso"=>"KY", "iso_name"=>"CAYMAN ISLANDS", "numcode"=>"136"}) +Spree::Country.create!({"name"=>"Ethiopia", "iso3"=>"ETH", "iso"=>"ET", "iso_name"=>"ETHIOPIA", "numcode"=>"231"}) +Spree::Country.create!({"name"=>"Hungary", "iso3"=>"HUN", "iso"=>"HU", "iso_name"=>"HUNGARY", "numcode"=>"348"}) +Spree::Country.create!({"name"=>"Macao", "iso3"=>"MAC", "iso"=>"MO", "iso_name"=>"MACAO", "numcode"=>"446"}) +Spree::Country.create!({"name"=>"New Caledonia", "iso3"=>"NCL", "iso"=>"NC", "iso_name"=>"NEW CALEDONIA", "numcode"=>"540"}) +Spree::Country.create!({"name"=>"Zimbabwe", "iso3"=>"ZWE", "iso"=>"ZW", "iso_name"=>"ZIMBABWE", "numcode"=>"716"}) +Spree::Country.create!({"name"=>"Central African Republic", "iso3"=>"CAF", "iso"=>"CF", "iso_name"=>"CENTRAL AFRICAN REPUBLIC", "numcode"=>"140"}) +Spree::Country.create!({"name"=>"Falkland Islands (Malvinas)", "iso3"=>"FLK", "iso"=>"FK", "iso_name"=>"FALKLAND ISLANDS (MALVINAS)", "numcode"=>"238"}) +Spree::Country.create!({"name"=>"Iceland", "iso3"=>"ISL", "iso"=>"IS", "iso_name"=>"ICELAND", "numcode"=>"352"}) +Spree::Country.create!({"name"=>"Macedonia", "iso3"=>"MKD", "iso"=>"MK", "iso_name"=>"MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF", "numcode"=>"807"}) +Spree::Country.create!({"name"=>"New Zealand", "iso3"=>"NZL", "iso"=>"NZ", "iso_name"=>"NEW ZEALAND", "numcode"=>"554"}) +Spree::Country.create!({"name"=>"Saint Kitts and Nevis", "iso3"=>"KNA", "iso"=>"KN", "iso_name"=>"SAINT KITTS AND NEVIS", "numcode"=>"659"}) +Spree::Country.create!({"name"=>"Serbia", "iso3"=>"SRB", "iso"=>"RS", "iso_name" => "SERBIA", "numcode"=>"999"}) Spree::Config[:default_country_id] = Spree::Country.find_by_name("United States").id diff --git a/spree_multi_site/db/default/spree/states.rb b/spree_multi_site/db/default/spree/states.rb index 01c7468b..0a43f780 100644 --- a/spree_multi_site/db/default/spree/states.rb +++ b/spree_multi_site/db/default/spree/states.rb @@ -1,57 +1,57 @@ # encoding: utf-8 country = Spree::Country.find_by_name('United States') -Spree::State.create!({"name"=>"Michigan", "abbr"=>"MI", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"South Dakota", "abbr"=>"SD", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Washington", "abbr"=>"WA", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Wisconsin", "abbr"=>"WI", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Arizona", "abbr"=>"AZ", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Illinois", "abbr"=>"IL", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"New Hampshire", "abbr"=>"NH", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"North Carolina", "abbr"=>"NC", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Kansas", "abbr"=>"KS", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Missouri", "abbr"=>"MO", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Arkansas", "abbr"=>"AR", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Nevada", "abbr"=>"NV", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"District of Columbia", "abbr"=>"DC", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Idaho", "abbr"=>"ID", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Nebraska", "abbr"=>"NE", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Pennsylvania", "abbr"=>"PA", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Hawaii", "abbr"=>"HI", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Utah", "abbr"=>"UT", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Vermont", "abbr"=>"VT", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Delaware", "abbr"=>"DE", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Rhode Island", "abbr"=>"RI", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Oklahoma", "abbr"=>"OK", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Louisiana", "abbr"=>"LA", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Montana", "abbr"=>"MT", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Tennessee", "abbr"=>"TN", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Maryland", "abbr"=>"MD", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Florida", "abbr"=>"FL", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Virginia", "abbr"=>"VA", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Minnesota", "abbr"=>"MN", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"New Jersey", "abbr"=>"NJ", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Ohio", "abbr"=>"OH", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"California", "abbr"=>"CA", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"North Dakota", "abbr"=>"ND", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Maine", "abbr"=>"ME", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Indiana", "abbr"=>"IN", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Texas", "abbr"=>"TX", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Oregon", "abbr"=>"OR", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Wyoming", "abbr"=>"WY", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Alabama", "abbr"=>"AL", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Iowa", "abbr"=>"IA", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Mississippi", "abbr"=>"MS", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Kentucky", "abbr"=>"KY", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"New Mexico", "abbr"=>"NM", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Georgia", "abbr"=>"GA", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Colorado", "abbr"=>"CO", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Massachusetts", "abbr"=>"MA", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Connecticut", "abbr"=>"CT", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"New York", "abbr"=>"NY", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"South Carolina", "abbr"=>"SC", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"Alaska", "abbr"=>"AK", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"West Virginia", "abbr"=>"WV", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"U.S. Armed Forces – Americas", "abbr"=>"AA", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"U.S. Armed Forces – Europe", "abbr"=>"AE", :country=>country}, :without_protection => true) -Spree::State.create!({"name"=>"U.S. Armed Forces – Pacific", "abbr"=>"AP", :country=>country}, :without_protection => true) +Spree::State.create!({"name"=>"Michigan", "abbr"=>"MI", :country=>country}) +Spree::State.create!({"name"=>"South Dakota", "abbr"=>"SD", :country=>country}) +Spree::State.create!({"name"=>"Washington", "abbr"=>"WA", :country=>country}) +Spree::State.create!({"name"=>"Wisconsin", "abbr"=>"WI", :country=>country}) +Spree::State.create!({"name"=>"Arizona", "abbr"=>"AZ", :country=>country}) +Spree::State.create!({"name"=>"Illinois", "abbr"=>"IL", :country=>country}) +Spree::State.create!({"name"=>"New Hampshire", "abbr"=>"NH", :country=>country}) +Spree::State.create!({"name"=>"North Carolina", "abbr"=>"NC", :country=>country}) +Spree::State.create!({"name"=>"Kansas", "abbr"=>"KS", :country=>country}) +Spree::State.create!({"name"=>"Missouri", "abbr"=>"MO", :country=>country}) +Spree::State.create!({"name"=>"Arkansas", "abbr"=>"AR", :country=>country}) +Spree::State.create!({"name"=>"Nevada", "abbr"=>"NV", :country=>country}) +Spree::State.create!({"name"=>"District of Columbia", "abbr"=>"DC", :country=>country}) +Spree::State.create!({"name"=>"Idaho", "abbr"=>"ID", :country=>country}) +Spree::State.create!({"name"=>"Nebraska", "abbr"=>"NE", :country=>country}) +Spree::State.create!({"name"=>"Pennsylvania", "abbr"=>"PA", :country=>country}) +Spree::State.create!({"name"=>"Hawaii", "abbr"=>"HI", :country=>country}) +Spree::State.create!({"name"=>"Utah", "abbr"=>"UT", :country=>country}) +Spree::State.create!({"name"=>"Vermont", "abbr"=>"VT", :country=>country}) +Spree::State.create!({"name"=>"Delaware", "abbr"=>"DE", :country=>country}) +Spree::State.create!({"name"=>"Rhode Island", "abbr"=>"RI", :country=>country}) +Spree::State.create!({"name"=>"Oklahoma", "abbr"=>"OK", :country=>country}) +Spree::State.create!({"name"=>"Louisiana", "abbr"=>"LA", :country=>country}) +Spree::State.create!({"name"=>"Montana", "abbr"=>"MT", :country=>country}) +Spree::State.create!({"name"=>"Tennessee", "abbr"=>"TN", :country=>country}) +Spree::State.create!({"name"=>"Maryland", "abbr"=>"MD", :country=>country}) +Spree::State.create!({"name"=>"Florida", "abbr"=>"FL", :country=>country}) +Spree::State.create!({"name"=>"Virginia", "abbr"=>"VA", :country=>country}) +Spree::State.create!({"name"=>"Minnesota", "abbr"=>"MN", :country=>country}) +Spree::State.create!({"name"=>"New Jersey", "abbr"=>"NJ", :country=>country}) +Spree::State.create!({"name"=>"Ohio", "abbr"=>"OH", :country=>country}) +Spree::State.create!({"name"=>"California", "abbr"=>"CA", :country=>country}) +Spree::State.create!({"name"=>"North Dakota", "abbr"=>"ND", :country=>country}) +Spree::State.create!({"name"=>"Maine", "abbr"=>"ME", :country=>country}) +Spree::State.create!({"name"=>"Indiana", "abbr"=>"IN", :country=>country}) +Spree::State.create!({"name"=>"Texas", "abbr"=>"TX", :country=>country}) +Spree::State.create!({"name"=>"Oregon", "abbr"=>"OR", :country=>country}) +Spree::State.create!({"name"=>"Wyoming", "abbr"=>"WY", :country=>country}) +Spree::State.create!({"name"=>"Alabama", "abbr"=>"AL", :country=>country}) +Spree::State.create!({"name"=>"Iowa", "abbr"=>"IA", :country=>country}) +Spree::State.create!({"name"=>"Mississippi", "abbr"=>"MS", :country=>country}) +Spree::State.create!({"name"=>"Kentucky", "abbr"=>"KY", :country=>country}) +Spree::State.create!({"name"=>"New Mexico", "abbr"=>"NM", :country=>country}) +Spree::State.create!({"name"=>"Georgia", "abbr"=>"GA", :country=>country}) +Spree::State.create!({"name"=>"Colorado", "abbr"=>"CO", :country=>country}) +Spree::State.create!({"name"=>"Massachusetts", "abbr"=>"MA", :country=>country}) +Spree::State.create!({"name"=>"Connecticut", "abbr"=>"CT", :country=>country}) +Spree::State.create!({"name"=>"New York", "abbr"=>"NY", :country=>country}) +Spree::State.create!({"name"=>"South Carolina", "abbr"=>"SC", :country=>country}) +Spree::State.create!({"name"=>"Alaska", "abbr"=>"AK", :country=>country}) +Spree::State.create!({"name"=>"West Virginia", "abbr"=>"WV", :country=>country}) +Spree::State.create!({"name"=>"U.S. Armed Forces – Americas", "abbr"=>"AA", :country=>country}) +Spree::State.create!({"name"=>"U.S. Armed Forces – Europe", "abbr"=>"AE", :country=>country}) +Spree::State.create!({"name"=>"U.S. Armed Forces – Pacific", "abbr"=>"AP", :country=>country}) diff --git a/spree_multi_site/db/fake_order1.2.0/spree/addresses.yml b/spree_multi_site/db/fake_order1.2.0/spree/addresses.yml deleted file mode 100644 index 03a06d78..00000000 --- a/spree_multi_site/db/fake_order1.2.0/spree/addresses.yml +++ /dev/null @@ -1,27 +0,0 @@ -<% -I18n.reload! -1.upto(100) do |i| -%> -ship_address_<%= i %>: - firstname: <%= Faker::Name.first_name %> - lastname: <%= Faker::Name.last_name %> - address1: <%= Faker::Address.street_address %> - address2: <%= Faker::Address.secondary_address %> - city: <%= Faker::Address.city %> - state_id: 889445952 - zipcode: 16804 - country_id: 214 - phone: <%= Faker::PhoneNumber.phone_number %> -<% end %> -<% 1.upto(100) do |i| %> -bill_address_<%= i %>: - firstname: <%= Faker::Name.first_name %> - lastname: <%= Faker::Name.last_name %> - address1: <%= Faker::Address.street_address %> - address2: <%= Faker::Address.secondary_address %> - city: <%= Faker::Address.city %> - state_id: 889445952 - zipcode: 16804 - country_id: 214 - phone: <%= Faker::PhoneNumber.phone_number %> -<% end %> diff --git a/spree_multi_site/db/fake_order1.2.0/spree/adjustments.yml b/spree_multi_site/db/fake_order1.2.0/spree/adjustments.yml deleted file mode 100644 index dd4a14ed..00000000 --- a/spree_multi_site/db/fake_order1.2.0/spree/adjustments.yml +++ /dev/null @@ -1,19 +0,0 @@ -<% -orders = Spree::Order.all(:include=>:shipments) -sf_ground = Spree::ShippingMethod.first - -%> -<% 1.upto(100) do |i| %> -<% order = orders[i-1] %> -ship_<%= i %>: - adjustable_id: <%= order.id %> - adjustable_type: Spree::Order - amount: 5 - source_id: <%= order.shipments.last.id %> - source_type: Spree::Shipment - originator_id: <%=sf_ground.id%> - originator_type: Spree::ShippingMethod - label: Shipping - locked: true - mandatory: true -<% end %> diff --git a/spree_multi_site/db/fake_order1.2.0/spree/line_items.yml b/spree_multi_site/db/fake_order1.2.0/spree/line_items.yml deleted file mode 100644 index a9d2980c..00000000 --- a/spree_multi_site/db/fake_order1.2.0/spree/line_items.yml +++ /dev/null @@ -1,45 +0,0 @@ -<% -orders = Spree::Order.all -products = Spree::Product.all(:include=>:master,:limit=>10) -%> - -<% for i in 1..100 do%> -li_<%= i %>: - order_id: <%= orders[i-1].id %> - variant_id: <%=products[1].master.id %> - quantity: <%= rand(4) + 1 %> - price: 15.99 -<% end %> - -<% for i in 1..10 do%> -li_<%= i + 1000 %>: - order_id: <%= orders[i-1].id %> - variant_id: <%=products[2].master.id %> - quantity: <%= rand(2) + 1 %> - price: 22.99 -<% end %> - -<% for i in 10..20 do%> -li_<%= i + 2000 %>: - order_id: <%= orders[i-1].id %> - variant_id: <%=products[3].master.id %> - quantity: <%= rand(3) + 1 %> - price: 19.99 -<% end %> - -<% for i in 10..30 do%> -li_<%= i + 3000 %>: - order_id: <%= orders[i-1].id %> - variant_id: <%=products[4].master.id %> - quantity: <%= rand(3) + 1 %> - price: 16.99 -<% end %> - -<% for i in 30..50 do%> -li_<%= i + 4000 %>: - order_id: <%= orders[i-1].id %> - variant_id: <%=products[5].master.id %> - quantity: <%= rand(10) + 1 %> - price: 13.99 -<% end %> - diff --git a/spree_multi_site/db/fake_order1.2.0/spree/orders.yml b/spree_multi_site/db/fake_order1.2.0/spree/orders.yml deleted file mode 100644 index 69f1b3b4..00000000 --- a/spree_multi_site/db/fake_order1.2.0/spree/orders.yml +++ /dev/null @@ -1,23 +0,0 @@ -<% -# skip first admin -users = Spree.user_class.all(:include=>[:bill_address,:ship_address], :offset=>1) -order_date = Time.now -1.upto(100) do |i| - order_date -= rand(12).hours - item_total = "#{1 + rand(400)}.#{rand(100)}".to_f - charges_total = "#{1 + rand(30)}.#{rand(100)}".to_f - user = users[i-1] -%> -order_<%= i %>: - number: <%= "R#{Array.new(9){rand(9)}.join}" %> - user_id: <%= user.id %> - state: complete - email: <%= Faker::Internet.email %> - item_total: <%= item_total %> - created_at: <%= order_date.to_s(:db) %> - completed_at: <%= order_date.to_s(:db) %> - total: <%= item_total + charges_total %> - adjustment_total: <%= charges_total %> - ship_address_id: <%= user.ship_address.id %> - bill_address_id: <%= user.bill_address.id %> -<% end %> diff --git a/spree_multi_site/db/fake_order1.2.0/spree/payments.rb b/spree_multi_site/db/fake_order1.2.0/spree/payments.rb deleted file mode 100644 index 68d8c63b..00000000 --- a/spree_multi_site/db/fake_order1.2.0/spree/payments.rb +++ /dev/null @@ -1,26 +0,0 @@ -# create payments based on the totals since they can't be known in YAML (quantities are random) -#method = Spree::PaymentMethod.where(:name => 'Credit Card', :active => true).first -method = Spree::PaymentMethod.where(:name => 'Check', :active => true).first - -# Hack the current method so we're able to return a gateway without a RAILS_ENV -Spree::Gateway.class_eval do - def self.current - Spree::Gateway::Bogus.new - end -end - -creditcard = Spree::CreditCard.create({:cc_type => 'visa', :month => 12, :year => 2014, :last_digits => '1111', - :first_name => 'Sean', :last_name => 'Schofield', - :gateway_customer_profile_id => 'BGS-1234'}, :without_protection => true) - -Spree::Order.all.each_with_index do |order,index| - printf "\rProcessing order #{index}" - STDOUT.flush - order.update! - payment = order.payments.create({:amount => order.total, :payment_method => method}, :without_protection => true) # :source => creditcard.clone, - payment.update_attributes_without_callbacks({ - :state => 'pending', - :response_code => '12345' - }) -end -puts diff --git a/spree_multi_site/db/fake_order1.2.0/spree/shipments.yml b/spree_multi_site/db/fake_order1.2.0/spree/shipments.yml deleted file mode 100644 index 83c4f77e..00000000 --- a/spree_multi_site/db/fake_order1.2.0/spree/shipments.yml +++ /dev/null @@ -1,12 +0,0 @@ -<% -orders = Spree::Order.all(:include=>[:ship_address]) -sf_ground = Spree::ShippingMethod.first -%> -<% 1.upto(100) do |i| %> -shipment_<%= i %>: - number: H<%= Array.new(11){rand(11)}.join %> - order_id: <%= orders[i-1].id %> - shipping_method_id: <%= sf_ground.id%> - address_id: <%= orders[i-1].ship_address.id %> - state: pending -<% end %> \ No newline at end of file diff --git a/spree_multi_site/db/fake_order1.2.0/spree/users.yml b/spree_multi_site/db/fake_order1.2.0/spree/users.yml deleted file mode 100644 index f85d813b..00000000 --- a/spree_multi_site/db/fake_order1.2.0/spree/users.yml +++ /dev/null @@ -1,11 +0,0 @@ -<% -addresses = Spree::Address.all() -ship_addresses = addresses[0,100] -bill_addresses = addresses[100,100] -1.upto(100) do |i| -%> -user_<%= i %>: - email: <%= Faker::Internet.email %> - ship_address_id: <%= ship_addresses[i-1].id %> - bill_address_id: <%= bill_addresses[i-1].id %> -<% end %> \ No newline at end of file diff --git a/spree_multi_site/db/firstshop/1sites.rb b/spree_multi_site/db/firstshop/1sites.rb index 6d61740f..c533d97f 100644 --- a/spree_multi_site/db/firstshop/1sites.rb +++ b/spree_multi_site/db/firstshop/1sites.rb @@ -1,18 +1,17 @@ -attributes = { - :name => "Dalian shops", - :domain => "www.dalianshops.com", - :short_name => "firstshop" +attributes = { + :name => "firstshop", + :short_name => "www" } -Spree::Site.create!(attributes) +Spree::Site.create!(attributes) Spree::Site.current = Spree::Site.first # see last line where we create an admin if there is none, asking for email and password =begin def create_site - + name = 'Abc' - domain = Spree::Site.abc_domain - + domain = Spree::Site.abc_domain + attributes = { :name => name, :domain => domain @@ -23,14 +22,14 @@ def create_site if Spree::Site.find_by_domain(domain) say "\nWARNING: There is already a site with the domain: #{domain}, so no site changes were made. If you wish to create an additional site, please run rake db:site:create again with a different domain.\n\n" else - admin = Spree::Site.create!(attributes) + admin = Spree::Site.create!(attributes) end end if Spree::Site.admin.blank? create_site #creating user require it. - Spree::Site.current =Spree::Site.admin + Spree::Site.current =Spree::Site.admin else puts "Default site #{domain} has already been previously created." end diff --git a/spree_multi_site/db/firstshop/users.rb b/spree_multi_site/db/firstshop/users.rb deleted file mode 100644 index da550829..00000000 --- a/spree_multi_site/db/firstshop/users.rb +++ /dev/null @@ -1,77 +0,0 @@ -#copy from spree_auth_devise/db/defaults/users -require 'highline/import' - -# see last line where we create an admin if there is none, asking for email and password -def prompt_for_admin_password - if ENV['ADMIN_PASSWORD'] - password = ENV['ADMIN_PASSWORD'].dup - say "Admin Password #{password}" - else - password = ask('Password [spree123]: ') do |q| - q.echo = false - q.validate = /^(|.{5,40})$/ - q.responses[:not_valid] = 'Invalid password. Must be at least 5 characters long.' - q.whitespace = :strip - end - password = 'spree123' if password.blank? - end - - password -end - -def prompt_for_admin_email - if ENV['ADMIN_EMAIL'] - email = ENV['ADMIN_EMAIL'].dup - say "Admin User #{email}" - else - email = ask('Email [spree@example.com]: ') do |q| - q.echo = true - q.whitespace = :strip - end - email = 'spree@example.com' if email.blank? - end - - email -end - -def create_admin_user - if ENV['AUTO_ACCEPT'] - password = 'spree123' - email = 'spree@example.com' - else - puts 'Create the admin user (press enter for defaults).' - #name = prompt_for_admin_name unless name - email = prompt_for_admin_email - password = prompt_for_admin_password - end - attributes = { - :password => password, - :password_confirmation => password, - :email => email, - :login => email - } - -# load 'spree/user.rb' - - if Spree.user_class.find_by_email(email) - say "\nWARNING: There is already a user with the email: #{email}, so no account changes were made. If you wish to create an additional admin user, please run rake db:admin:create again with a different email.\n\n" - else - admin = Spree.user_class.create(attributes,:without_protection => true) - # create an admin role and and assign the admin user to that role - role = Spree::Role.find_or_create_by_name 'admin' - admin.spree_roles << role - admin.save - end -end - -unless Spree.user_class.exists? - create_admin_user -else - puts 'Admin user has already been previously created.' - if agree('Would you like to create a new admin user? (yes/no)') - create_admin_user - else - puts 'No admin user created.' - end -end - diff --git a/spree_multi_site/db/migrate/20120415215214_create_sites.rb b/spree_multi_site/db/migrate/20120415215214_create_sites.rb deleted file mode 100644 index d1ef0f79..00000000 --- a/spree_multi_site/db/migrate/20120415215214_create_sites.rb +++ /dev/null @@ -1,14 +0,0 @@ -class CreateSites < ActiveRecord::Migration - def self.up - create_table :spree_sites do |t| - t.string :name - t.string :domain - - t.timestamps - end - end - - def self.down - drop_table :spree_sites - end -end diff --git a/spree_multi_site/db/migrate/20120415215214_site_create_sites.rb b/spree_multi_site/db/migrate/20120415215214_site_create_sites.rb new file mode 100644 index 00000000..3987fd02 --- /dev/null +++ b/spree_multi_site/db/migrate/20120415215214_site_create_sites.rb @@ -0,0 +1,17 @@ +class SiteCreateSites < ActiveRecord::Migration + def self.up + # disable default site during migration, + # or default :site cause error before site_id added. + Spree::MultiSiteSystem.multi_site_context = 'admin_sites' + create_table :spree_sites do |t| + t.string :name + t.string :domain + + t.timestamps + end + end + + def self.down + drop_table :spree_sites + end +end diff --git a/spree_multi_site/db/migrate/20120420163828_add_site_orders.rb b/spree_multi_site/db/migrate/20120420163828_add_site_orders.rb deleted file mode 100644 index 12bbfdd5..00000000 --- a/spree_multi_site/db/migrate/20120420163828_add_site_orders.rb +++ /dev/null @@ -1,26 +0,0 @@ -class AddSiteOrders < ActiveRecord::Migration - def self.up - #for history reason, - #spree's table have no prefix 'spree_' at beginning, - #later migration NamespaceTopLevelModels add prefix 'spree_' - #so here table_exists?(:taxonomies) is accurate name. - table_name = Spree::Zone.connection.table_exists?(:zones) ? :zones : :spree_zones - add_column table_name, :site_id, :integer - table_name = Spree::Taxonomy.connection.table_exists?(:taxonomies) ? :taxonomies : :spree_taxonomies - add_column table_name, :site_id, :integer - table_name = Spree::Order.connection.table_exists?(:orders) ? :orders : :spree_orders - add_column table_name, :site_id, :integer - table_name = Spree.user_class.connection.table_exists?(:users) ? :users : :spree_users - add_column table_name, :site_id, :integer - table_name = Spree::Product.connection.table_exists?(:products) ? :products : :spree_products - add_column table_name, :site_id, :integer - end - - def self.down - remove_column Spree::Zone.table_name, :site_id - remove_column Spree::Taxonomy.table_name, :site_id - remove_column Spree::Order.table_name, :site_id - remove_column Spree.user_class.table_name, :site_id - remove_column Spree::Product.table_name, :site_id - end -end \ No newline at end of file diff --git a/spree_multi_site/db/migrate/20120420163828_site_add_site_orders.rb b/spree_multi_site/db/migrate/20120420163828_site_add_site_orders.rb new file mode 100644 index 00000000..96863e04 --- /dev/null +++ b/spree_multi_site/db/migrate/20120420163828_site_add_site_orders.rb @@ -0,0 +1,26 @@ +class SiteAddSiteOrders < ActiveRecord::Migration + def self.up + #for history reason, + #spree's table have no prefix 'spree_' at beginning, + #later migration NamespaceTopLevelModels add prefix 'spree_' + #so here table_exists?(:taxonomies) is accurate name. + table_name = Spree::Zone.connection.table_exists?(:zones) ? :zones : :spree_zones + add_column table_name, :site_id, :integer + table_name = Spree::Taxonomy.connection.table_exists?(:taxonomies) ? :taxonomies : :spree_taxonomies + add_column table_name, :site_id, :integer + table_name = Spree::Order.connection.table_exists?(:orders) ? :orders : :spree_orders + add_column table_name, :site_id, :integer + table_name = Spree.user_class.connection.table_exists?(:users) ? :users : :spree_users + add_column table_name, :site_id, :integer + table_name = Spree::Product.connection.table_exists?(:products) ? :products : :spree_products + add_column table_name, :site_id, :integer + end + + def self.down + remove_column Spree::Zone.table_name, :site_id + remove_column Spree::Taxonomy.table_name, :site_id + remove_column Spree::Order.table_name, :site_id + remove_column Spree.user_class.table_name, :site_id + remove_column Spree::Product.table_name, :site_id + end +end diff --git a/spree_multi_site/db/migrate/20120423194433_add_short_name_and_parent_id_to_site.rb b/spree_multi_site/db/migrate/20120423194433_add_short_name_and_parent_id_to_site.rb deleted file mode 100644 index cde57c6d..00000000 --- a/spree_multi_site/db/migrate/20120423194433_add_short_name_and_parent_id_to_site.rb +++ /dev/null @@ -1,17 +0,0 @@ -class AddShortNameAndParentIdToSite < ActiveRecord::Migration - def self.up - add_column :spree_sites, :layout, :string - add_column :spree_sites, :parent_id, :integer - add_column :spree_sites, :short_name, :string - add_column :spree_sites, :rgt, :integer - add_column :spree_sites, :lft, :integer - end - - def self.down - remove_column :spree_sites, :layout - remove_column :spree_sites, :parent_id - remove_column :spree_sites, :short_name - remove_column :spree_sites, :lft - remove_column :spree_sites, :rgt - end -end \ No newline at end of file diff --git a/spree_multi_site/db/migrate/20120423194433_site_add_short_name_and_parent_id_to_site.rb b/spree_multi_site/db/migrate/20120423194433_site_add_short_name_and_parent_id_to_site.rb new file mode 100644 index 00000000..b21cd813 --- /dev/null +++ b/spree_multi_site/db/migrate/20120423194433_site_add_short_name_and_parent_id_to_site.rb @@ -0,0 +1,17 @@ +class SiteAddShortNameAndParentIdToSite < ActiveRecord::Migration + def self.up + add_column :spree_sites, :layout, :string + add_column :spree_sites, :parent_id, :integer + add_column :spree_sites, :short_name, :string + add_column :spree_sites, :rgt, :integer + add_column :spree_sites, :lft, :integer + end + + def self.down + remove_column :spree_sites, :layout + remove_column :spree_sites, :parent_id + remove_column :spree_sites, :short_name + remove_column :spree_sites, :lft + remove_column :spree_sites, :rgt + end +end diff --git a/spree_multi_site/db/migrate/20120812064151_add_has_sample.rb b/spree_multi_site/db/migrate/20120812064151_add_has_sample.rb deleted file mode 100644 index aad590aa..00000000 --- a/spree_multi_site/db/migrate/20120812064151_add_has_sample.rb +++ /dev/null @@ -1,11 +0,0 @@ -class AddHasSample < ActiveRecord::Migration - def up - add_column :spree_sites, :has_sample, :boolean, :default=>false - add_column :spree_sites, :loading_sample, :boolean, :default=>false - end - - def down - remove_column :spree_sites, :has_sample - remove_column :spree_sites, :loading_sample - end -end diff --git a/spree_multi_site/db/migrate/20120812064151_site_add_has_sample.rb b/spree_multi_site/db/migrate/20120812064151_site_add_has_sample.rb new file mode 100644 index 00000000..66e6c21d --- /dev/null +++ b/spree_multi_site/db/migrate/20120812064151_site_add_has_sample.rb @@ -0,0 +1,11 @@ +class SiteAddHasSample < ActiveRecord::Migration + def up + add_column :spree_sites, :has_sample, :boolean, :default=>false + add_column :spree_sites, :loading_sample, :boolean, :default=>false + end + + def down + remove_column :spree_sites, :has_sample + remove_column :spree_sites, :loading_sample + end +end diff --git a/spree_multi_site/db/migrate/20120813135747_add_site_taxons.rb b/spree_multi_site/db/migrate/20120813135747_add_site_taxons.rb deleted file mode 100644 index c5b6ac9d..00000000 --- a/spree_multi_site/db/migrate/20120813135747_add_site_taxons.rb +++ /dev/null @@ -1,40 +0,0 @@ -class AddSiteTaxons < ActiveRecord::Migration - def up - table_name = Spree::Taxon.connection.table_exists?(:taxons) ? :taxons : :spree_taxons - add_column table_name, :site_id, :integer - table_name = Spree::TaxCategory.connection.table_exists?(:tax_categories) ? :tax_categories : :spree_tax_categories - add_column table_name, :site_id, :integer - table_name = Spree::ShippingCategory.connection.table_exists?(:shipping_categories) ? :shipping_categories : :spree_shipping_categories - add_column table_name, :site_id, :integer - - # ShippingMethod.all_available called :all, we have to add default_scope fix it. - # Zone has_many :shipping_methods, :dependent => :nullify, if zone is deleted, respect shipping_methods.zone_id is set to null - # for above two reasons, add site_id to shipping_method - table_name = Spree::ShippingMethod.connection.table_exists?(:shipping_methods) ? :shipping_methods : :spree_shipping_methods - add_column table_name, :site_id, :integer - - table_name = Spree::Prototype.connection.table_exists?(:prototypes) ? :prototypes : :spree_prototypes - add_column table_name, :site_id, :integer - table_name = Spree::Property.connection.table_exists?(:properties) ? :properties : :spree_properties - add_column table_name, :site_id, :integer - table_name = Spree::OptionType.connection.table_exists?(:option_types) ? :option_types : :spree_option_types - add_column table_name, :site_id, :integer - table_name = Spree::Asset.connection.table_exists?(:assets) ? :assets : :spree_assets - add_column table_name, :site_id, :integer - table_name = Spree::Preference.connection.table_exists?(:preferences) ? :preferences : :spree_preferences - add_column table_name, :site_id, :integer, :default=>0 #site_id & key is index, unique, could not be null, or unique would not work. - end - - def down - remove_column Spree::Taxon.table_name, :site_id, :integer - remove_column Spree::TaxCategory.table_name, :site_id - remove_column Spree::ShippingCategory.table_name, :site_id - remove_column Spree::ShippingMethod.table_name, :site_id - remove_column Spree::Prototype.table_name, :site_id - remove_column Spree::Property.table_name, :site_id - remove_column Spree::OptionType.table_name, :site_id - remove_column Spree::Asset.table_name, :site_id - remove_column Spree::Preference.table_name, :site_id - end - -end diff --git a/spree_multi_site/db/migrate/20120813135747_site_add_site_taxons.rb b/spree_multi_site/db/migrate/20120813135747_site_add_site_taxons.rb new file mode 100644 index 00000000..bac4356a --- /dev/null +++ b/spree_multi_site/db/migrate/20120813135747_site_add_site_taxons.rb @@ -0,0 +1,40 @@ +class SiteAddSiteTaxons < ActiveRecord::Migration + def up + table_name = Spree::Taxon.connection.table_exists?(:taxons) ? :taxons : :spree_taxons + add_column table_name, :site_id, :integer + table_name = Spree::TaxCategory.connection.table_exists?(:tax_categories) ? :tax_categories : :spree_tax_categories + add_column table_name, :site_id, :integer + table_name = Spree::ShippingCategory.connection.table_exists?(:shipping_categories) ? :shipping_categories : :spree_shipping_categories + add_column table_name, :site_id, :integer + + # ShippingMethod.all_available called :all, we have to add default_scope fix it. + # Zone has_many :shipping_methods, :dependent => :nullify, if zone is deleted, respect shipping_methods.zone_id is set to null + # for above two reasons, add site_id to shipping_method + table_name = Spree::ShippingMethod.connection.table_exists?(:shipping_methods) ? :shipping_methods : :spree_shipping_methods + add_column table_name, :site_id, :integer + + table_name = Spree::Prototype.connection.table_exists?(:prototypes) ? :prototypes : :spree_prototypes + add_column table_name, :site_id, :integer + table_name = Spree::Property.connection.table_exists?(:properties) ? :properties : :spree_properties + add_column table_name, :site_id, :integer + table_name = Spree::OptionType.connection.table_exists?(:option_types) ? :option_types : :spree_option_types + add_column table_name, :site_id, :integer + table_name = Spree::Asset.connection.table_exists?(:assets) ? :assets : :spree_assets + add_column table_name, :site_id, :integer + table_name = Spree::Preference.connection.table_exists?(:preferences) ? :preferences : :spree_preferences + add_column table_name, :site_id, :integer, :default=>0 #site_id & key is index, unique, could not be null, or unique would not work. + end + + def down + remove_column Spree::Taxon.table_name, :site_id, :integer + remove_column Spree::TaxCategory.table_name, :site_id + remove_column Spree::ShippingCategory.table_name, :site_id + remove_column Spree::ShippingMethod.table_name, :site_id + remove_column Spree::Prototype.table_name, :site_id + remove_column Spree::Property.table_name, :site_id + remove_column Spree::OptionType.table_name, :site_id + remove_column Spree::Asset.table_name, :site_id + remove_column Spree::Preference.table_name, :site_id + end + +end diff --git a/spree_multi_site/db/migrate/20120818045742_last_add_site_payment_methods.rb b/spree_multi_site/db/migrate/20120818045742_last_add_site_payment_methods.rb deleted file mode 100644 index 7211b4ad..00000000 --- a/spree_multi_site/db/migrate/20120818045742_last_add_site_payment_methods.rb +++ /dev/null @@ -1,30 +0,0 @@ -class LastAddSitePaymentMethods < ActiveRecord::Migration - # in this file add site_id after all table complete. - def up - table_name = Spree::PaymentMethod.connection.table_exists?(:payment_methods) ? :payment_methods : :spree_payment_methods - add_column table_name, :site_id, :integer - table_name = Spree::Configuration.connection.table_exists?(:configurations) ? :configurations : :spree_configurations - add_column table_name, :site_id, :integer - table_name = Spree::LogEntry.connection.table_exists?(:log_entries) ? :log_entries : :spree_log_entries - add_column table_name, :site_id, :integer - table_name = Spree::StateChange.connection.table_exists?(:state_changes) ? :state_changes : :spree_state_changes - add_column table_name, :site_id, :integer - - # support RuanShan/spree_static_content - if Spree::Configuration.connection.table_exists?(:spree_pages) - add_column :spree_pages, :site_id, :integer - end - - end - - def down - remove_column Spree::PaymentMethod.table_name, :site_id - remove_column Spree::Configuration.table_name, :site_id - remove_column Spree::LogEntry.table_name, :site_id - remove_column Spree::StateChange.table_name, :site_id - # support RuanShan/spree_static_content - if Spree::Configuration.connection.table_exists?(:spree_pages) - remove_column :spree_pages, :site_id - end - end -end diff --git a/spree_multi_site/db/migrate/20120818045742_site_last_add_site_payment_methods.rb b/spree_multi_site/db/migrate/20120818045742_site_last_add_site_payment_methods.rb new file mode 100644 index 00000000..89fc6ced --- /dev/null +++ b/spree_multi_site/db/migrate/20120818045742_site_last_add_site_payment_methods.rb @@ -0,0 +1,19 @@ +class SiteLastAddSitePaymentMethods < ActiveRecord::Migration + # in this file add site_id after all table complete. + def up + table_name = Spree::PaymentMethod.connection.table_exists?(:payment_methods) ? :payment_methods : :spree_payment_methods + add_column table_name, :site_id, :integer + table_name = Spree::LogEntry.connection.table_exists?(:log_entries) ? :log_entries : :spree_log_entries + add_column table_name, :site_id, :integer + table_name = Spree::StateChange.connection.table_exists?(:state_changes) ? :state_changes : :spree_state_changes + add_column table_name, :site_id, :integer + + end + + def down + remove_column Spree::PaymentMethod.table_name, :site_id + remove_column Spree::LogEntry.table_name, :site_id + remove_column Spree::StateChange.table_name, :site_id + + end +end diff --git a/spree_multi_site/db/migrate/20120819000000_last_create_delayed_jobs.rb b/spree_multi_site/db/migrate/20120819000000_last_create_delayed_jobs.rb deleted file mode 100644 index e6630a25..00000000 --- a/spree_multi_site/db/migrate/20120819000000_last_create_delayed_jobs.rb +++ /dev/null @@ -1,22 +0,0 @@ -class LastCreateDelayedJobs < ActiveRecord::Migration - def self.up - create_table :delayed_jobs, :force => true do |table| - table.integer :priority, :default => 0 # Allows some jobs to jump to the front of the queue - table.integer :attempts, :default => 0 # Provides for retries, but still fail eventually. - table.text :handler # YAML-encoded string of the object that will do work - table.text :last_error # reason for last failure (See Note below) - table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future. - table.datetime :locked_at # Set when a client is working on this object - table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead) - table.string :locked_by # Who is working on this object (if locked) - table.string :queue # The name of the queue this job is in - table.timestamps - end - - add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority' - end - - def self.down - drop_table :delayed_jobs - end -end diff --git a/spree_multi_site/db/migrate/20120819000000_site_last_create_delayed_jobs.rb b/spree_multi_site/db/migrate/20120819000000_site_last_create_delayed_jobs.rb new file mode 100644 index 00000000..325455b6 --- /dev/null +++ b/spree_multi_site/db/migrate/20120819000000_site_last_create_delayed_jobs.rb @@ -0,0 +1,22 @@ +class SiteLastCreateDelayedJobs < ActiveRecord::Migration + def self.up + create_table :delayed_jobs, :force => true do |table| + table.integer :priority, :default => 0 # Allows some jobs to jump to the front of the queue + table.integer :attempts, :default => 0 # Provides for retries, but still fail eventually. + table.text :handler # YAML-encoded string of the object that will do work + table.text :last_error # reason for last failure (See Note below) + table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future. + table.datetime :locked_at # Set when a client is working on this object + table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead) + table.string :locked_by # Who is working on this object (if locked) + table.string :queue # The name of the queue this job is in + table.timestamps + end + + add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority' + end + + def self.down + drop_table :delayed_jobs + end +end diff --git a/spree_multi_site/db/migrate/20121216093739_last_fix_unique_index.rb b/spree_multi_site/db/migrate/20121216093739_last_fix_unique_index.rb deleted file mode 100644 index 37901faf..00000000 --- a/spree_multi_site/db/migrate/20121216093739_last_fix_unique_index.rb +++ /dev/null @@ -1,16 +0,0 @@ -class LastFixUniqueIndex < ActiveRecord::Migration - def change - if Spree::Site.table_exists? - if defined?(Spree::Auth) - remove_index "spree_users", :name => "email_idx_unique" - add_index "spree_users", ["site_id","email"], :name => "email_idx_unique", :unique => true - end - - remove_index :spree_preferences, :name => 'index_spree_preferences_on_key' - add_index "spree_preferences", ["site_id","key"], :name => "index_spree_preferences_on_key", :unique => true - - remove_index :spree_products, :name => 'permalink_idx_unique' - add_index "spree_products", ["site_id", "slug"], :name => "permalink_idx_unique", :unique => true - end - end -end diff --git a/spree_multi_site/db/migrate/20121216093739_site_last_fix_unique_index.rb b/spree_multi_site/db/migrate/20121216093739_site_last_fix_unique_index.rb new file mode 100644 index 00000000..8df1ad47 --- /dev/null +++ b/spree_multi_site/db/migrate/20121216093739_site_last_fix_unique_index.rb @@ -0,0 +1,17 @@ +class SiteLastFixUniqueIndex < ActiveRecord::Migration + def change + if Spree::Site.table_exists? + if defined?(Spree::Auth) + remove_index :spree_users, :slug if index_exists?(:spree_users, :email) + add_index :spree_users, [:site_id,:email], :unique => true + end + + remove_index :spree_preferences, :key if index_exists?(:spree_preferences, :key) + add_index :spree_preferences, [:site_id,:key], :unique => true + + remove_index :spree_products, :slug if index_exists?(:spree_products, :slug) + add_index :spree_products, [:site_id, :slug], unique: true + + end + end +end diff --git a/spree_multi_site/db/migrate/20121217045742_site_add_site_trackers.rb b/spree_multi_site/db/migrate/20121217045742_site_add_site_trackers.rb new file mode 100644 index 00000000..acbda4f0 --- /dev/null +++ b/spree_multi_site/db/migrate/20121217045742_site_add_site_trackers.rb @@ -0,0 +1,10 @@ +class SiteAddSiteTrackers < ActiveRecord::Migration + # in this file add site_id after all table complete. + def up + add_column :spree_trackers, :site_id, :integer + end + + def down + remove_column :spree_trackers, :site_id + end +end diff --git a/spree_multi_site/db/migrate/20121218010101_site_add_products_global_taxons.rb b/spree_multi_site/db/migrate/20121218010101_site_add_products_global_taxons.rb new file mode 100644 index 00000000..270754b4 --- /dev/null +++ b/spree_multi_site/db/migrate/20121218010101_site_add_products_global_taxons.rb @@ -0,0 +1,11 @@ +class SiteAddProductsGlobalTaxons < ActiveRecord::Migration + # we want to display product in www.tld + # each product should have global taxon( taxon in www.tld ) + create_table :spree_products_global_taxons, :id => false do |t| + t.references :product + t.references :taxon + end + + add_index :spree_products_global_taxons, [:product_id], :name => 'index_spree_products_global_taxons_on_product_id' + add_index :spree_products_global_taxons, [:taxon_id], :name => 'index_spree_products_global_taxons_on_taxon_id' +end diff --git a/spree_multi_site/db/migrate/20121219135747_site_associate_store_with_site.rb b/spree_multi_site/db/migrate/20121219135747_site_associate_store_with_site.rb new file mode 100644 index 00000000..7d79d77e --- /dev/null +++ b/spree_multi_site/db/migrate/20121219135747_site_associate_store_with_site.rb @@ -0,0 +1,12 @@ +class SiteAssociateStoreWithSite < ActiveRecord::Migration + def change + add_column :spree_stores, :site_id, :integer, :default=>0 + Spree::Site.all.each{|site| + if site.stores.blank? + site.stores.create!( url: site.domain, name: site.name, code: site.short_name ) + end + } + end + + +end diff --git a/spree_multi_site/db/migrate/20121220135747_site_move_app_configuration_to_site.rb b/spree_multi_site/db/migrate/20121220135747_site_move_app_configuration_to_site.rb new file mode 100644 index 00000000..4fe2ae5f --- /dev/null +++ b/spree_multi_site/db/migrate/20121220135747_site_move_app_configuration_to_site.rb @@ -0,0 +1,18 @@ +class SiteMoveAppConfigurationToSite < ActiveRecord::Migration + def change + add_column :spree_sites, :allow_ssl_in_production, :boolean, :default=>false + add_column :spree_sites, :allow_ssl_in_development_and_test, :boolean, :default=>false + add_column :spree_sites, :allow_ssl_in_staging, :boolean, :default=>false + add_column :spree_sites, :check_for_spree_alerts, :boolean, :default=>false + + add_column :spree_sites, :display_currency, :boolean, :default=>false + add_column :spree_sites, :hide_cents, :boolean, :default=>false + + add_column :spree_sites, :currency, :string, :default=>'CNY' + add_column :spree_sites, :currency_symbol_position, :string, :default=>"before" + add_column :spree_sites, :currency_decimal_mark, :string, :default=>"." + add_column :spree_sites, :currency_thousands_separator, :string, :default=>"," + end + + +end diff --git a/spree_multi_site/db/migrate/20121221045742_site_add_site_status.rb b/spree_multi_site/db/migrate/20121221045742_site_add_site_status.rb new file mode 100644 index 00000000..804bd317 --- /dev/null +++ b/spree_multi_site/db/migrate/20121221045742_site_add_site_status.rb @@ -0,0 +1,6 @@ +class SiteAddSiteStatus < ActiveRecord::Migration + # add feature store disignable + def change + add_column :spree_sites, :status, :integer, default: 0 + end +end diff --git a/spree_multi_site/db/migrate/20140606045742_add_site_trackers.rb b/spree_multi_site/db/migrate/20140606045742_add_site_trackers.rb deleted file mode 100644 index 3e50375a..00000000 --- a/spree_multi_site/db/migrate/20140606045742_add_site_trackers.rb +++ /dev/null @@ -1,10 +0,0 @@ -class AddSiteTrackers < ActiveRecord::Migration - # in this file add site_id after all table complete. - def up - add_column :spree_trackers, :site_id, :integer - end - - def down - remove_column :spree_trackers, :site_id - end -end diff --git a/spree_multi_site/db/migrate/20141027010101_add_products_global_taxons.rb b/spree_multi_site/db/migrate/20141027010101_add_products_global_taxons.rb deleted file mode 100644 index 366f6b92..00000000 --- a/spree_multi_site/db/migrate/20141027010101_add_products_global_taxons.rb +++ /dev/null @@ -1,11 +0,0 @@ -class AddProductsGlobalTaxons < ActiveRecord::Migration - # we want to display product in s.dalianshops.com - # each product should have global taxon( taxon in dalianshops ) - create_table :spree_products_global_taxons, :id => false do |t| - t.references :product - t.references :taxon - end - - add_index :spree_products_global_taxons, [:product_id], :name => 'index_spree_products_global_taxons_on_product_id' - add_index :spree_products_global_taxons, [:taxon_id], :name => 'index_spree_products_global_taxons_on_taxon_id' -end \ No newline at end of file diff --git a/spree_multi_site/db/sample1.2.0/spree/addresses.yml.skip b/spree_multi_site/db/sample1.2.0/spree/addresses.yml.skip deleted file mode 100644 index 03a06d78..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/addresses.yml.skip +++ /dev/null @@ -1,27 +0,0 @@ -<% -I18n.reload! -1.upto(100) do |i| -%> -ship_address_<%= i %>: - firstname: <%= Faker::Name.first_name %> - lastname: <%= Faker::Name.last_name %> - address1: <%= Faker::Address.street_address %> - address2: <%= Faker::Address.secondary_address %> - city: <%= Faker::Address.city %> - state_id: 889445952 - zipcode: 16804 - country_id: 214 - phone: <%= Faker::PhoneNumber.phone_number %> -<% end %> -<% 1.upto(100) do |i| %> -bill_address_<%= i %>: - firstname: <%= Faker::Name.first_name %> - lastname: <%= Faker::Name.last_name %> - address1: <%= Faker::Address.street_address %> - address2: <%= Faker::Address.secondary_address %> - city: <%= Faker::Address.city %> - state_id: 889445952 - zipcode: 16804 - country_id: 214 - phone: <%= Faker::PhoneNumber.phone_number %> -<% end %> diff --git a/spree_multi_site/db/sample1.2.0/spree/adjustments.yml.skip b/spree_multi_site/db/sample1.2.0/spree/adjustments.yml.skip deleted file mode 100644 index 6bf3658b..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/adjustments.yml.skip +++ /dev/null @@ -1,26 +0,0 @@ -<% 1.upto(100) do |i| %> -tax_<%= i %>: - adjustable: order_<%= i %> - adjustable_type: Spree::Order - amount: 0 - source: order_<%= i %> - source_type: Spree::Order - originator: tax_rate_north_america - originator_type: Spree::TaxRate - label: Tax - locked: false - mandatory: true -<% end %> -<% 1.upto(100) do |i| %> -ship_<%= i %>: - adjustable_id: order_<%= i %> - adjustable_type: Spree::Order - amount: 5 - source: shipment_<%= i %> - source_type: Spree::Shipment - originator: ups_ground - originator_type: Spree::ShippingMethod - label: Shipping - locked: true - mandatory: true -<% end %> diff --git a/spree_multi_site/db/sample1.2.0/spree/assets.yml b/spree_multi_site/db/sample1.2.0/spree/assets.yml deleted file mode 100644 index 39b957cf..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/assets.yml +++ /dev/null @@ -1,440 +0,0 @@ -img_tote: - id: 1 - viewable: ror_tote_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_tote.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 1 -img_tote_back: - id: 2 - viewable: ror_tote_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_tote_back.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 2 -img_bag: - id: 3 - viewable: ror_bag_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_bag.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 1 -img_baseball: - id: 4 - viewable: ror_baseball_jersey_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_baseball.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 1 -img_baseball_back: - id: 5 - viewable: ror_baseball_jersey_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_baseball_back.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 2 -img_jr_spaghetti: - id: 6 - viewable: ror_jr_spaghetti_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_jr_spaghetti.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 1 -img_mug: - id: 7 - viewable: ror_mug_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_mug.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 1 -img_mug_back: - id: 8 - viewable: ror_mug_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_mug_back.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 2 -img_ringer: - id: 9 - viewable: ror_ringer_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_ringer.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 1 -img_ringer_back: - id: 10 - viewable: ror_ringer_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_ringer_back.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 2 -img_stein: - id: 11 - viewable: ror_stein_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_stein.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 1 -img_stein_back: - id: 12 - viewable: ror_stein_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: ror_stein_back.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 2 -img_apache_baseball: - id: 1004 - viewable: apache_baseball_jersey_v - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: apache_baseball.png - attachment_width: 504 - attachment_height: 484 - type: Spree::Image - position: 1 -img_ruby_baseball: - id: 1008 - viewable: ruby_baseball_jersey_v - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ruby_baseball.png - attachment_width: 495 - attachment_height: 477 - type: Spree::Image - position: 1 -img_baseball_small_green: - id: 1009 - viewable: small-green-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_green.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 1 -img_baseball_small_green_back: - id: 1010 - viewable: small-green-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_back_green.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 2 -img_baseball_med_green: - id: 1011 - viewable: med-green-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_green.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 1 -img_baseball_med_green_back: - id: 1012 - viewable: med-green-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_back_green.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 2 -img_baseball_large_green: - id: 1013 - viewable: large-green-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_green.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 1 -img_baseball_large_green_back: - id: 1014 - viewable: large-green-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_back_green.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 2 -img_baseball_small_blue: - id: 1015 - viewable: small-blue-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_blue.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 1 -img_baseball_small_blue_back: - id: 1016 - viewable: small-blue-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_back_blue.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 2 -img_baseball_med_blue: - id: 1017 - viewable: med-blue-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_blue.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 1 -img_baseball_med_blue_back: - id: 1018 - viewable: med-blue-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_back_blue.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 2 -img_baseball_large_blue: - id: 1019 - viewable: large-blue-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_blue.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 1 -img_baseball_large_blue_back: - id: 1020 - viewable: large-blue-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_back_blue.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 2 -img_baseball_large_red: - id: 1021 - viewable: large-red-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_red.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 1 -img_baseball_large_red_back: - id: 1022 - viewable: large-red-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_back_red.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 2 -img_baseball_med_red: - id: 1023 - viewable: med-red-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_red.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 1 -img_baseball_med_red_back: - id: 1024 - viewable: med-red-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_back_red.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 2 -img_baseball_small_red: - id: 1025 - viewable: small-red-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_red.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 1 -img_baseball_small_red_back: - id: 1026 - viewable: small-red-baseball - viewable_type: Spree::Variant - attachment_content_type: image/png - attachment_file_name: ror_baseball_jersey_back_red.png - attachment_width: 240 - attachment_height: 240 - type: Spree::Image - position: 2 -img_spree_bag: - id: 1027 - viewable: spree_bag_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_bag.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 1 -img_spree_tote: - id: 1028 - viewable: spree_tote_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_tote_front.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 1 -img_tote_back: - id: 1029 - viewable: spree_tote_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_tote_back.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 2 -img_spree_ringer: - id: 1030 - viewable: spree_ringer_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_ringer_t.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 1 -img_spree_ringer_back: - id: 1031 - viewable: spree_ringer_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_ringer_t_back.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 2 -img_spree_jr_spaghetti: - id: 1032 - viewable: spree_jr_spaghetti_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_spaghetti.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 1 -img_spree_stein: - id: 1033 - viewable: spree_stein_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_stein.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 1 -img_spree_stein_back: - id: 1034 - viewable: spree_stein_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_stein_back.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 2 -img_spree_mug: - id: 1035 - viewable: spree_mug_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_mug.jpeg - attachment_width: 360 - attachment_height: 360 - type: Spree::Image - position: 1 -img_spree_mug_back: - id: 1036 - viewable: spree_mug_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_mug_back.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 2 -img_spree_baseball: - id: 1037 - viewable: spree_baseball_jersey_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_jersey.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 1 -img_spree_baseball_back: - id: 1038 - viewable: spree_baseball_jersey_v - viewable_type: Spree::Variant - attachment_content_type: image/jpg - attachment_file_name: spree_jersey_back.jpeg - attachment_width: 480 - attachment_height: 480 - type: Spree::Image - position: 2 diff --git a/spree_multi_site/db/sample1.2.0/spree/calculators.yml b/spree_multi_site/db/sample1.2.0/spree/calculators.yml deleted file mode 100644 index 3ea5916a..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/calculators.yml +++ /dev/null @@ -1,23 +0,0 @@ -ups_ground: - calculable: ups_ground - calculable_type: Spree::ShippingMethod - type: Spree::Calculator::FlatRate -ups_two_day: - calculable: ups_two_day - calculable_type: Spree::ShippingMethod - type: Spree::Calculator::FlatRate -ups_one_day: - calculable: ups_one_day - calculable_type: Spree::ShippingMethod - type: Spree::Calculator::FlatRate -#FIXME Spree::Promotion -#flat_rate_coupon_calculator: -# calculable: spree_coupon -# calculable_type: Spree::Promotion -# type: Spree::Calculator::FlatRate -tax_rate_calculator: - calculable: tax_rate_north_america - calculable_type: Spree::TaxRate - type: Spree::Calculator::DefaultTax - - diff --git a/spree_multi_site/db/sample1.2.0/spree/inventory_units.rb b/spree_multi_site/db/sample1.2.0/spree/inventory_units.rb deleted file mode 100644 index c2efa2c1..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/inventory_units.rb +++ /dev/null @@ -1,4 +0,0 @@ -# create the inventory units associated with the line item (we need to do this after the fixture b/c quantity is random) -Spree::LineItem.all.each do |li| - li.quantity.times { li.order.inventory_units.create({:variant => li.variant, :state => 'sold', :shipment => li.order.shipment}, :without_protection => true) } -end diff --git a/spree_multi_site/db/sample1.2.0/spree/line_items.yml.skip b/spree_multi_site/db/sample1.2.0/spree/line_items.yml.skip deleted file mode 100644 index d75dc7f4..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/line_items.yml.skip +++ /dev/null @@ -1,40 +0,0 @@ -<% for i in 1..100 do%> -li_<%= i %>: - order: order_<%= i %> - variant: ror_tote_v - quantity: <%= rand(4) + 1 %> - price: 15.99 -<% end %> - -<% for i in 1..10 do%> -li_<%= i + 1000 %>: - order: order_<%= i %> - variant: ror_bag_v - quantity: <%= rand(2) + 1 %> - price: 22.99 -<% end %> - -<% for i in 10..20 do%> -li_<%= i + 2000 %>: - order: order_<%= i %> - variant: large-blue-baseball - quantity: <%= rand(3) + 1 %> - price: 19.99 -<% end %> - -<% for i in 10..30 do%> -li_<%= i + 3000 %>: - order: order_<%= i %> - variant: ror_stein_v - quantity: <%= rand(3) + 1 %> - price: 16.99 -<% end %> - -<% for i in 30..50 do%> -li_<%= i + 4000 %>: - order: order_<%= i %> - variant: ror_mug_v - quantity: <%= rand(10) + 1 %> - price: 13.99 -<% end %> - diff --git a/spree_multi_site/db/sample1.2.0/spree/option_types.yml b/spree_multi_site/db/sample1.2.0/spree/option_types.yml deleted file mode 100644 index 39f6b7ee..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/option_types.yml +++ /dev/null @@ -1,8 +0,0 @@ -size: - name: tshirt-size - presentation: Size - position: 1 -color: - name: tshirt-color - presentation: Color - position: 2 diff --git a/spree_multi_site/db/sample1.2.0/spree/option_values.yml b/spree_multi_site/db/sample1.2.0/spree/option_values.yml deleted file mode 100644 index c7108eeb..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/option_values.yml +++ /dev/null @@ -1,35 +0,0 @@ -s: - name: Small - presentation: S - position: 1 - option_type: size -m: - name: Medium - presentation: M - position: 2 - option_type: size -l: - name: Large - presentation: L - position: 3 - option_type: size -xl: - name: Extra Large - presentation: XL - position: 4 - option_type: size -red: - name: Red - presentation: Red - position: 1 - option_type: color -green: - name: Green - presentation: Green - position: 2 - option_type: color -blue: - name: Blue - presentation: Blue - position: 3 - option_type: color \ No newline at end of file diff --git a/spree_multi_site/db/sample1.2.0/spree/orders.yml.skip b/spree_multi_site/db/sample1.2.0/spree/orders.yml.skip deleted file mode 100644 index 1312afb5..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/orders.yml.skip +++ /dev/null @@ -1,20 +0,0 @@ -<% -order_date = Time.now -1.upto(100) do |i| - order_date -= rand(12).hours - item_total = "#{1 + rand(400)}.#{rand(100)}".to_f - charges_total = "#{1 + rand(30)}.#{rand(100)}".to_f -%> -order_<%= i %>: - number: <%= "R#{Array.new(9){rand(9)}.join}" %> - user: user_<%= i %> - state: complete - email: <%= Faker::Internet.email %> - item_total: <%= item_total %> - created_at: <%= order_date.to_s(:db) %> - completed_at: <%= order_date.to_s(:db) %> - total: <%= item_total + charges_total %> - adjustment_total: <%= charges_total %> - ship_address: ship_address_<%= i %> - bill_address: bill_address_<%= i %> -<% end %> diff --git a/spree_multi_site/db/sample1.2.0/spree/payment_methods.yml b/spree_multi_site/db/sample1.2.0/spree/payment_methods.yml deleted file mode 100644 index 207e4a7f..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/payment_methods.yml +++ /dev/null @@ -1,29 +0,0 @@ -bogus_dev: - name: Credit Card - description: Bogus payment gateway for development. - environment: development - active: true - type: Spree::Gateway::Bogus -check_method: - name: Check - description: Pay by check. - active: true - type: Spree::PaymentMethod::Check -bogus_test: - name: Credit Card - description: Bogus payment gateway for test. - environment: test - active: true - type: Spree::Gateway::Bogus -bogus_prod: - name: Credit Card - description: Bogus payment gateway for production. - environment: production - active: true - type: Spree::Gateway::Bogus -bogus_staging: - name: Credit Card - description: Bogus payment gateway for staging. - environment: staging - active: true - type: Spree::Gateway::Bogus diff --git a/spree_multi_site/db/sample1.2.0/spree/payments.rb.skip b/spree_multi_site/db/sample1.2.0/spree/payments.rb.skip deleted file mode 100644 index 631edace..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/payments.rb.skip +++ /dev/null @@ -1,25 +0,0 @@ -# create payments based on the totals since they can't be known in YAML (quantities are random) -method = Spree::PaymentMethod.where(:name => 'Credit Card', :active => true).first - -# Hack the current method so we're able to return a gateway without a RAILS_ENV -Spree::Gateway.class_eval do - def self.current - Spree::Gateway::Bogus.new - end -end - -creditcard = Spree::Creditcard.create({:cc_type => 'visa', :month => 12, :year => 2014, :last_digits => '1111', - :first_name => 'Sean', :last_name => 'Schofield', - :gateway_customer_profile_id => 'BGS-1234'}, :without_protection => true) - -Spree::Order.all.each_with_index do |order,index| - printf "\rProcessing order #{index}" - STDOUT.flush - order.update! - payment = order.payments.create({:amount => order.total, :source => creditcard.clone, :payment_method => method}, :without_protection => true) - payment.update_attributes_without_callbacks({ - :state => 'pending', - :response_code => '12345' - }) -end -puts diff --git a/spree_multi_site/db/sample1.2.0/spree/preferences.rb b/spree_multi_site/db/sample1.2.0/spree/preferences.rb deleted file mode 100644 index ce91b127..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/preferences.rb +++ /dev/null @@ -1,14 +0,0 @@ -shipping_method = Spree::ShippingMethod.find_by_name("UPS Ground") -shipping_method.calculator.preferred_amount = 5 - -shipping_method = Spree::ShippingMethod.find_by_name("UPS One Day") -shipping_method.calculator.preferred_amount = 15 - -shipping_method = Spree::ShippingMethod.find_by_name("UPS Two Day") -shipping_method.calculator.preferred_amount = 10 - -# flat_rate_five_dollars: -# name: amount -# owner: flat_rate_coupon_calculator -# owner_type: Spree::Calculator -# value: 5 diff --git a/spree_multi_site/db/sample1.2.0/spree/product_option_types.yml b/spree_multi_site/db/sample1.2.0/spree/product_option_types.yml deleted file mode 100644 index 5389abc0..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/product_option_types.yml +++ /dev/null @@ -1,16 +0,0 @@ -ror_baseball_size: - product: ror_baseball_jersey - option_type: size - position: 1 -ror_baseball_color: - product: ror_baseball_jersey - option_type: color - position: 2 -spree_baseball_size: - product: spree_baseball_jersey - option_type: size - position: 3 -spree_baseball_color: - product: spree_baseball_jersey - option_type: color - position: 4 diff --git a/spree_multi_site/db/sample1.2.0/spree/product_properties.yml b/spree_multi_site/db/sample1.2.0/spree/product_properties.yml deleted file mode 100644 index c2c8606c..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/product_properties.yml +++ /dev/null @@ -1,264 +0,0 @@ -shirt_man_a: - product: ror_baseball_jersey - property: prop_manufacturer - value: Wilson -shirt_man_b: - product: ror_jr_spaghetti - property: prop_manufacturer - value: Jerseys -shirt_man_c: - product: ror_ringer - property: prop_manufacturer - value: Jerseys -shirt_brand_a: - product: ror_baseball_jersey - property: prop_brand - value: Wannabe Sports -shirt_brand_b: - product: ror_jr_spaghetti - property: prop_brand - value: Resilance -shirt_brand_c: - product: ror_ringer - property: prop_brand - value: Conditioned -shirt_model_a: - product: ror_baseball_jersey - property: prop_model - value: JK1002 -shirt_model_b: - product: ror_jr_spaghetti - property: prop_model - value: TL174 -shirt_model_c: - product: ror_ringer - property: prop_model - value: TL9002 -shirt_type_a: - product: ror_baseball_jersey - property: prop_shirt_type - value: Baseball Jersey -shirt_type_b: - product: ror_jr_spaghetti - property: prop_shirt_type - value: Jr Spaghetti T -shirt_type_c: - product: ror_ringer - property: prop_shirt_type - value: Ringer T -shirt_sleeve_a: - product: ror_baseball_jersey - property: prop_shirt_sleeve_type - value: long -shirt_sleeve_b: - product: ror_jr_spaghetti - property: prop_shirt_sleeve_type - value: none -shirt_sleeve_c: - product: ror_ringer - property: prop_shirt_sleeve_type - value: short -shirt_fab_a: - product: ror_baseball_jersey - property: prop_shirt_fabric - value: 100% Cotton -shirt_fab_b: - product: ror_jr_spaghetti - property: prop_shirt_fabric - value: 90% Cotton, 10% Nylon -shirt_fab_c: - product: ror_ringer - property: prop_shirt_fabric - value: 100% Vellum -shirt_fit_a: - product: ror_baseball_jersey - property: prop_shirt_fit - value: loose -shirt_fit_b: - product: ror_jr_spaghetti - property: prop_shirt_fit - value: form -shirt_fit_c: - product: ror_ringer - property: prop_shirt_fit - value: loose -shirt_gender_a: - product: ror_baseball_jersey - property: prop_gender - value: Men's -shirt_gender_b: - product: ror_jr_spaghetti - property: prop_gender - value: Women's -shirt_gender_c: - product: ror_ringer - property: prop_gender - value: Men's -bag_type_a: - product: ror_tote - property: prop_bag_type - value: Tote -bag_type_b: - product: ror_bag - property: prop_bag_type - value: Messenger -bag_size_a: - product: ror_tote - property: prop_bag_size - value: 15" x 18" x 6" -bag_size_b: - product: ror_bag - property: prop_bag_size - value: 14 1/2" x 12" x 5" -bag_mats_a: - product: ror_tote - property: prop_bag_material - value: Canvas -bag_mats_b: - product: ror_bag - property: prop_bag_material - value: 600 Denier Polyester -mug_type_a: - product: ror_mug - property: prop_mug_type - value: Mug -mug_type_b: - product: ror_stein - property: prop_mug_type - value: Stein -mug_size_a: - product: ror_mug - property: prop_mug_size - value: 4.5" tall, 3.25" dia. -mug_size_b: - product: ror_stein - property: prop_mug_size - value: 6.75" tall, 3.75" dia. base, 3" dia. rim -spree_mug_size_a: - product: spree_mug - property: prop_mug_size - value: 4.5" tall, 3.25" dia. -spree_mug_size_b: - product: spree_stein - property: prop_mug_size - value: 6.75" tall, 3.75" dia. base, 3" dia. rim -s_mug_type_a: - product: spree_mug - property: prop_mug_type - value: Mug -s_mug_type_b: - product: spree_stein - property: prop_mug_type - value: Stein -s_bag_type_a: - product: spree_tote - property: prop_bag_type - value: Tote -s_bag_type_b: - product: spree_bag - property: prop_bag_type - value: Messenger -s_bag_size_a: - product: spree_tote - property: prop_bag_size - value: 15" x 18" x 6" -s_bag_size_b: - product: spree_bag - property: prop_bag_size - value: 14 1/2" x 12" x 5" -s_shirt_man_a: - product: spree_baseball_jersey - property: prop_manufacturer - value: Wilson -s_shirt_man_b: - product: spree_jr_spaghetti - property: prop_manufacturer - value: Jerseys -s_shirt_man_c: - product: spree_ringer - property: prop_manufacturer - value: Jerseys -s_shirt_brand_a: - product: spree_baseball_jersey - property: prop_brand - value: Wannabe Sports -s_shirt_brand_b: - product: spree_jr_spaghetti - property: prop_brand - value: Resilance -s_shirt_brand_c: - product: spree_ringer - property: prop_brand - value: Conditioned -s_shirt_model_a: - product: spree_baseball_jersey - property: prop_model - value: JK1002 -s_shirt_model_b: - product: spree_jr_spaghetti - property: prop_model - value: TL174 -s_shirt_model_c: - product: spree_ringer - property: prop_model - value: TL9002 -s_shirt_type_a: - product: spree_baseball_jersey - property: prop_shirt_type - value: Baseball Jersey -s_shirt_type_b: - product: spree_jr_spaghetti - property: prop_shirt_type - value: Jr Spaghetti T -s_shirt_type_c: - product: spree_ringer - property: prop_shirt_type - value: Ringer T -s_shirt_sleeve_a: - product: spree_baseball_jersey - property: prop_shirt_sleeve_type - value: long -s_shirt_sleeve_b: - product: spree_jr_spaghetti - property: prop_shirt_sleeve_type - value: none -s_shirt_sleeve_c: - product: spree_ringer - property: prop_shirt_sleeve_type - value: short -s_shirt_fab_a: - product: spree_baseball_jersey - property: prop_shirt_fabric - value: 100% Cotton -s_shirt_fab_b: - product: spree_jr_spaghetti - property: prop_shirt_fabric - value: 90% Cotton, 10% Nylon -s_shirt_fab_c: - product: spree_ringer - property: prop_shirt_fabric - value: 100% Vellum -s_shirt_fit_a: - product: spree_baseball_jersey - property: prop_shirt_fit - value: loose -s_shirt_fit_b: - product: spree_jr_spaghetti - property: prop_shirt_fit - value: form -s_shirt_fit_c: - product: spree_ringer - property: prop_shirt_fit - value: loose -s_shirt_gender_a: - product: spree_baseball_jersey - property: prop_gender - value: Men's -s_shirt_gender_b: - product: spree_jr_spaghetti - property: prop_gender - value: Women's -s_shirt_gender_c: - product: spree_ringer - property: prop_gender - value: Men's \ No newline at end of file diff --git a/spree_multi_site/db/sample1.2.0/spree/products.rb b/spree_multi_site/db/sample1.2.0/spree/products.rb deleted file mode 100644 index 6bb49e9d..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/products.rb +++ /dev/null @@ -1,15 +0,0 @@ -# make sure the product images directory exists -FileUtils.mkdir_p "#{Rails.root}/public/spree/products/" - -Spree::Asset.all.each do |asset| - filename = asset.attachment_file_name - puts "-- Processing image: #{filename}\r" - path = File.join(File.dirname(__FILE__), "products/#{filename}") - - if FileTest.exists? path - asset.attachment = File.open(path) - asset.save - else - puts "--- Could not find image at: #{path}" - end -end diff --git a/spree_multi_site/db/sample1.2.0/spree/products.yml b/spree_multi_site/db/sample1.2.0/spree/products.yml deleted file mode 100644 index 2c2c0bcc..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/products.yml +++ /dev/null @@ -1,108 +0,0 @@ -ror_tote: - name: Ruby on Rails Tote - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: ruby-on-rails-tote - count_on_hand: 10 - tax_category: tax_cat_clothing -ror_bag: - name: Ruby on Rails Bag - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: ruby-on-rails-bag - count_on_hand: 10 - tax_category: tax_cat_clothing -ror_baseball_jersey: - name: Ruby on Rails Baseball Jersey - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: ruby-on-rails-baseball-jersey - tax_category: tax_cat_clothing - count_on_hand: 88 -ror_jr_spaghetti: - name: Ruby on Rails Jr. Spaghetti - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: ruby-on-rails-jr-spaghetti - count_on_hand: 10 - tax_category: tax_cat_clothing -ror_mug: - name: Ruby on Rails Mug - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: ruby-on-rails-mug - count_on_hand: 10 -ror_ringer: - name: Ruby on Rails Ringer T-Shirt - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: ruby-on-rails-ringer-t-shirt - count_on_hand: 10 - tax_category: tax_cat_clothing -ror_stein: - name: Ruby on Rails Stein - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: ruby-on-rails-stein - count_on_hand: 10 -ruby_baseball_jersey: - name: Ruby Baseball Jersey - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: ruby-baseball-jersey - count_on_hand: 10 - tax_category: tax_cat_clothing -apache_baseball_jersey: - name: Apache Baseball Jersey - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: apache-baseball-jersey - count_on_hand: 10 - tax_category: tax_cat_clothing -spree_baseball_jersey: - name: Spree Baseball Jersey - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: spree-baseball-jersey - count_on_hand: 30 - tax_category: tax_cat_clothing -spree_stein: - name: Spree Stein - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: spree-stein - count_on_hand: 10 -spree_jr_spaghetti: - name: Spree Jr. Spaghetti - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: spree-jr-spaghetti - count_on_hand: 10 - tax_category: tax_cat_clothing -spree_mug: - name: Spree Mug - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: spree-mug - count_on_hand: 10 -spree_ringer: - name: Spree Ringer T-Shirt - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: spree-ringer-t-shirt - count_on_hand: 10 - tax_category: tax_cat_clothing -spree_tote: - name: Spree Tote - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: spree-tote - count_on_hand: 10 - tax_category: tax_cat_clothing -spree_bag: - name: Spree Bag - description: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla nonummy aliquet mi. Proin lacus. Ut placerat. Proin consequat, justo sit amet tempus consequat, elit est adipiscing odio, ut egestas pede eros in diam. Proin varius, lacus vitae suscipit varius, ipsum eros convallis nisi, sit amet sodales lectus pede non est. Duis augue. Suspendisse hendrerit pharetra metus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur nec pede. Quisque volutpat, neque ac porttitor sodales, sem lacus rutrum nulla, ullamcorper placerat ante tortor ac odio. Suspendisse vel libero. Nullam volutpat magna vel ligula. Suspendisse sit amet metus. Nunc quis massa. Nulla facilisi. In enim. In venenatis nisi id eros. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sit amet felis sed lectus tincidunt egestas. Mauris nibh. - available_on: <%= Time.zone.now.to_s(:db) %> - permalink: spree-bag - count_on_hand: 10 - tax_category: tax_cat_clothing diff --git a/spree_multi_site/db/sample1.2.0/spree/products/apache_baseball.png b/spree_multi_site/db/sample1.2.0/spree/products/apache_baseball.png deleted file mode 100644 index cc677bc0..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/apache_baseball.png and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_bag.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_bag.jpeg deleted file mode 100644 index e062536f..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_bag.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball.jpeg deleted file mode 100644 index 3aaf65ae..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_back.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_back.jpeg deleted file mode 100644 index 08b9db6e..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_back.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_back_blue.png b/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_back_blue.png deleted file mode 100644 index de551c62..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_back_blue.png and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_back_green.png b/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_back_green.png deleted file mode 100644 index 0f254893..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_back_green.png and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_back_red.png b/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_back_red.png deleted file mode 100644 index 864fe092..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_back_red.png and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_blue.png b/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_blue.png deleted file mode 100644 index 55f98b14..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_blue.png and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_green.png b/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_green.png deleted file mode 100644 index a14b7fcb..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_green.png and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_red.png b/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_red.png deleted file mode 100644 index 1b534f9e..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_baseball_jersey_red.png and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_jr_spaghetti.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_jr_spaghetti.jpeg deleted file mode 100644 index b24d4313..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_jr_spaghetti.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_mug.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_mug.jpeg deleted file mode 100644 index 6d5b406b..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_mug.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_mug_back.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_mug_back.jpeg deleted file mode 100644 index 687e949c..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_mug_back.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_ringer.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_ringer.jpeg deleted file mode 100644 index 935ad95f..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_ringer.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_ringer_back.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_ringer_back.jpeg deleted file mode 100644 index c8f5f30c..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_ringer_back.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_stein.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_stein.jpeg deleted file mode 100644 index 2d65f6e5..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_stein.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_stein_back.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_stein_back.jpeg deleted file mode 100644 index cdc98718..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_stein_back.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_tote.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_tote.jpeg deleted file mode 100644 index 08bff014..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_tote.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ror_tote_back.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/ror_tote_back.jpeg deleted file mode 100644 index bb0e7681..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ror_tote_back.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/ruby_baseball.png b/spree_multi_site/db/sample1.2.0/spree/products/ruby_baseball.png deleted file mode 100644 index 8eef1bed..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/ruby_baseball.png and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_bag.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_bag.jpeg deleted file mode 100644 index f57951e2..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_bag.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_jersey.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_jersey.jpeg deleted file mode 100644 index cd569b35..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_jersey.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_jersey_back.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_jersey_back.jpeg deleted file mode 100644 index 5bd7433c..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_jersey_back.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_mug.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_mug.jpeg deleted file mode 100644 index 9e9b6496..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_mug.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_mug_back.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_mug_back.jpeg deleted file mode 100644 index 9f7d5ce9..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_mug_back.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_ringer_t.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_ringer_t.jpeg deleted file mode 100644 index f8594896..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_ringer_t.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_ringer_t_back.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_ringer_t_back.jpeg deleted file mode 100644 index e2dc7c58..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_ringer_t_back.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_spaghetti.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_spaghetti.jpeg deleted file mode 100644 index 81e1221a..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_spaghetti.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_stein.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_stein.jpeg deleted file mode 100644 index deba9854..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_stein.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_stein_back.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_stein_back.jpeg deleted file mode 100644 index ecadca94..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_stein_back.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_tote_back.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_tote_back.jpeg deleted file mode 100644 index 18119c33..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_tote_back.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/products/spree_tote_front.jpeg b/spree_multi_site/db/sample1.2.0/spree/products/spree_tote_front.jpeg deleted file mode 100644 index 4e7d7fb4..00000000 Binary files a/spree_multi_site/db/sample1.2.0/spree/products/spree_tote_front.jpeg and /dev/null differ diff --git a/spree_multi_site/db/sample1.2.0/spree/properties.yml b/spree_multi_site/db/sample1.2.0/spree/properties.yml deleted file mode 100644 index 1483a891..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/properties.yml +++ /dev/null @@ -1,39 +0,0 @@ -prop_manufacturer: - name: manufacturer - presentation: Manufacturer -prop_brand: - name: brand - presentation: Brand -prop_model: - name: model - presentation: Model -prop_shirt_type: - name: shirt_type - presentation: Type -prop_shirt_sleeve_type: - name: shirt_sleeve_length - presentation: Sleeve -prop_shirt_fabric: - name: shirt_fabric - presentation: Fabric -prop_shirt_fit: - name: shirt_fit - presentation: fit -prop_gender: - name: gender - presentation: Gender -prop_mug_type: - name: mug_type - presentation: Type -prop_mug_size: - name: mug_size - presentation: Size -prop_bag_type: - name: bag_type - presentation: Type -prop_bag_material: - name: bag_material - presentation: Material -prop_bag_size: - name: bag_size - presentation: Size \ No newline at end of file diff --git a/spree_multi_site/db/sample1.2.0/spree/prototypes.yml b/spree_multi_site/db/sample1.2.0/spree/prototypes.yml deleted file mode 100644 index 49bf199a..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/prototypes.yml +++ /dev/null @@ -1,9 +0,0 @@ -proto_shirts: - name: Shirt - properties: prop_manufacturer, prop_brand, prop_model, prop_shirt_type, prop_shirt_sleeve_type, prop_shirt_fabric, prop_shirt_fit, prop_gender -proto_bags: - name: Bag - properties: prop_bag_type, prop_bag_size, prop_bag_material -proto_mugs: - name: Mug - properties: prop_mug_size, prop_mug_type \ No newline at end of file diff --git a/spree_multi_site/db/sample1.2.0/spree/shipments.yml.skip b/spree_multi_site/db/sample1.2.0/spree/shipments.yml.skip deleted file mode 100644 index 40255757..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/shipments.yml.skip +++ /dev/null @@ -1,8 +0,0 @@ -<% 1.upto(100) do |i| %> -shipment_<%= i %>: - number: H<%= Array.new(11){rand(11)}.join %> - order: order_<%= i %> - shipping_method: ups_ground - address: ship_address_<%= i %> - state: pending -<% end %> \ No newline at end of file diff --git a/spree_multi_site/db/sample1.2.0/spree/shipping_categories.yml b/spree_multi_site/db/sample1.2.0/spree/shipping_categories.yml deleted file mode 100644 index a39aa451..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/shipping_categories.yml +++ /dev/null @@ -1,2 +0,0 @@ -default_shipping: - name: Default Shipping \ No newline at end of file diff --git a/spree_multi_site/db/sample1.2.0/spree/shipping_methods.yml b/spree_multi_site/db/sample1.2.0/spree/shipping_methods.yml deleted file mode 100644 index 1f2033d9..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/shipping_methods.yml +++ /dev/null @@ -1,9 +0,0 @@ -ups_ground: - name: UPS Ground - zone_id: 2 -ups_two_day: - name: UPS Two Day - zone_id: 2 -ups_one_day: - name: UPS One Day - zone_id: 2 \ No newline at end of file diff --git a/spree_multi_site/db/sample1.2.0/spree/tax_categories.yml b/spree_multi_site/db/sample1.2.0/spree/tax_categories.yml deleted file mode 100644 index 7d659172..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/tax_categories.yml +++ /dev/null @@ -1,6 +0,0 @@ -tax_cat_clothing: - name: Clothing - description: -tax_cat_food: - name: Food - description: diff --git a/spree_multi_site/db/sample1.2.0/spree/tax_rates.yml b/spree_multi_site/db/sample1.2.0/spree/tax_rates.yml deleted file mode 100644 index 50944437..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/tax_rates.yml +++ /dev/null @@ -1,4 +0,0 @@ -tax_rate_north_america: - zone_id: 2 - amount: 0.05 - tax_category: tax_cat_clothing diff --git a/spree_multi_site/db/sample1.2.0/spree/taxonomies.yml b/spree_multi_site/db/sample1.2.0/spree/taxonomies.yml deleted file mode 100644 index 02db5f3d..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/taxonomies.yml +++ /dev/null @@ -1,4 +0,0 @@ -master_categories: - name: Categories -brand: - name: Brand diff --git a/spree_multi_site/db/sample1.2.0/spree/taxons.rb b/spree_multi_site/db/sample1.2.0/spree/taxons.rb deleted file mode 100644 index 20108153..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/taxons.rb +++ /dev/null @@ -1,15 +0,0 @@ -# Fixtures were created for acts_as_adjency_list, but now we have nested set, so we need to rebuild it after import -# root Categories -# +- Bags(ror_tote, ror_bag, spree_tote, spree_bag) -# +- Mugs(ror_mug, ror_stein, spree_stein, spree_mug) -# +- Clothing -# +- Shirts(ror_jr_spaghetti, spree_jr_spaghetti) -# +- T-Shirts(ror_baseball_jersey, ror_ringer, apache_baseball_jersey, ruby_baseball_jersey, spree_baseball_jersey, spree_ringer) -# root Brands -# +- Ruby -# +- Ruby on Rails -# +- Apache -# +- Spree - -Spree::Taxon.rebuild! -Spree::Taxon.all.each{ |t| t.send(:set_permalink); t.save } diff --git a/spree_multi_site/db/sample1.2.0/spree/taxons.yml b/spree_multi_site/db/sample1.2.0/spree/taxons.yml deleted file mode 100644 index 5dbedb79..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/taxons.yml +++ /dev/null @@ -1,82 +0,0 @@ -#parent_id would be replace by customer_fixtures while loading -mc_root: - name: Categories - taxonomy: master_categories - permalink: categories - position: 0 - -mc_l1_n1: - name: Bags - taxonomy: master_categories - parent_id: mc_root - position: 1 - products: ror_tote, ror_bag, spree_tote, spree_bag - permalink: categories/bags - -mc_l1_n2: - name: Mugs - taxonomy: master_categories - parent_id: mc_root - position: 2 - products: ror_mug, ror_stein, spree_stein, spree_mug - permalink: categories/mugs - -clothing: - name: Clothing - taxonomy: master_categories - parent_id: mc_root - products: ror_baseball_jersey, ror_jr_spaghetti, ror_ringer - permalink: categories/clothing - -shirts: - name: Shirts - taxonomy: master_categories - parent_id: clothing - position: 0 - products: ror_jr_spaghetti, spree_jr_spaghetti - permalink: categories/clothing/shirts - -t_shirts: - name: T-Shirts - taxonomy: master_categories - parent_id: shirts - products: ror_baseball_jersey, ror_ringer, apache_baseball_jersey, ruby_baseball_jersey, spree_baseball_jersey, spree_ringer - position: 0 - permalink: categories/clothing/shirts/t-shirts - -brand_root: - name: Brands - taxonomy: brand - permalink: brands - -ruby: - name: Ruby - taxonomy: brand - parent_id: brand_root - position: 0 - products: ruby_baseball_jersey - permalink: brands/ruby - -rails: - name: Ruby on Rails - taxonomy: brand - parent_id: brand_root - position: 1 - products: ror_baseball_jersey, ror_jr_spaghetti, ror_ringer, ror_stein, ror_bag, ror_tote, ror_mug - permalink: brands/ruby-on-rails - -apache: - name: Apache - taxonomy: brand - parent_id: brand_root - position: 2 - products: apache_baseball_jersey - permalink: brands/apache - -spree: - name: Spree - taxonomy: brand - parent_id: brand_root - position: 3 - products: spree_baseball_jersey, spree_stein, spree_jr_spaghetti, spree_mug, spree_ringer, spree_tote, spree_bag - permalink: brands/spree diff --git a/spree_multi_site/db/sample1.2.0/spree/users.yml.skip b/spree_multi_site/db/sample1.2.0/spree/users.yml.skip deleted file mode 100644 index 5bd748e2..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/users.yml.skip +++ /dev/null @@ -1,8 +0,0 @@ -<% -1.upto(100) do |i| -%> -user_<%= i %>: - email: <%= Faker::Internet.email %> - ship_address: ship_address_<%= i %> - bill_address: bill_address_<%= i %> -<% end %> \ No newline at end of file diff --git a/spree_multi_site/db/sample1.2.0/spree/variants.yml b/spree_multi_site/db/sample1.2.0/spree/variants.yml deleted file mode 100644 index 5e4751e9..00000000 --- a/spree_multi_site/db/sample1.2.0/spree/variants.yml +++ /dev/null @@ -1,203 +0,0 @@ -small-red-baseball: - product: ror_baseball_jersey - option_values: s, red - sku: ROR-00001 - price: 19.99 - cost_price: 17.00 - count_on_hand: 10 -small-blue-baseball: - product: ror_baseball_jersey - option_values: s, blue - sku: ROR-00002 - price: 19.99 - cost_price: 17.00 - count_on_hand: 10 -small-green-baseball: - product: ror_baseball_jersey - option_values: s, green - sku: ROR-00003 - price: 19.99 - cost_price: 17.00 - count_on_hand: 10 -med-red-baseball: - product: ror_baseball_jersey - option_values: m, red - sku: ROR-00004 - price: 19.99 - cost_price: 17.00 - count_on_hand: 3 -med-blue-baseball: - product: ror_baseball_jersey - option_values: m, blue - sku: ROR-00005 - price: 19.99 - cost_price: 17.00 - count_on_hand: 10 -med-green-baseball: - product: ror_baseball_jersey - option_values: m, green - sku: ROR-00006 - price: 19.99 - cost_price: 17.00 - count_on_hand: 14 -large-red-baseball: - product: ror_baseball_jersey - option_values: l, red - sku: ROR-00007 - price: 19.99 - cost_price: 17.00 - count_on_hand: 1 -large-blue-baseball: - product: ror_baseball_jersey - option_values: l, blue - sku: ROR-00008 - price: 19.99 - cost_price: 17.00 - count_on_hand: 10 -large-green-baseball: - product: ror_baseball_jersey - option_values: l, green - sku: ROR-00009 - price: 19.99 - cost_price: 17.00 - count_on_hand: 10 -xlarge-green-baseball: - product: ror_baseball_jersey - option_values: xl, red - sku: ROR-00010 - price: 21.99 - cost_price: 20.00 - count_on_hand: 10 -ror_baseball_jersey_v: - product: ror_baseball_jersey - sku: ROR-001 - price: 19.99 - cost_price: 17.00 - is_master: true - count_on_hand: 10 -ror_tote_v: - product: ror_tote - sku: ROR-00011 - price: 15.99 - cost_price: 13.00 - is_master: true - count_on_hand: 10 -ror_bag_v: - product: ror_bag - sku: ROR-00012 - price: 22.99 - cost_price: 21.00 - is_master: true - count_on_hand: 10 -ror_jr_spaghetti_v: - product: ror_jr_spaghetti - sku: ROR-00013 - price: 19.99 - cost_price: 17.00 - is_master: true - count_on_hand: 10 -ror_mug_v: - product: ror_mug - sku: ROR-00014 - price: 13.99 - cost_price: 11.00 - is_master: true - count_on_hand: 10 -ror_ringer_v: - product: ror_ringer - sku: ROR-00015 - price: 17.99 - cost_price: 17.00 - is_master: true - count_on_hand: 10 -ror_stein_v: - product: ror_stein - sku: ROR-00016 - price: 16.99 - cost_price: 15.00 - is_master: true - count_on_hand: 10 -apache_baseball_jersey_v: - product: apache_baseball_jersey - sku: APC-00001 - price: 19.99 - cost_price: 17.00 - is_master: true - count_on_hand: 10 -ruby_baseball_jersey_v: - product: ruby_baseball_jersey - sku: RUB-00001 - price: 19.99 - cost_price: 17.00 - is_master: true - count_on_hand: 10 -spree_baseball_jersey_v: - product: spree_baseball_jersey - sku: SPR-00001 - price: 19.99 - cost_price: 17.00 - is_master: true - count_on_hand: 10 -spree_stein_v: - product: spree_stein - sku: SPR-00016 - price: 16.99 - cost_price: 15.00 - is_master: true - count_on_hand: 10 -spree_jr_spaghetti_v: - product: spree_jr_spaghetti - sku: SPR-00013 - price: 19.99 - cost_price: 17.00 - is_master: true - count_on_hand: 10 -spree_mug_v: - product: spree_mug - sku: SPR-00014 - price: 13.99 - cost_price: 11.00 - is_master: true - count_on_hand: 10 -spree_ringer_v: - product: spree_ringer - sku: SPR-00015 - price: 17.99 - cost_price: 17.00 - is_master: true - count_on_hand: 10 -spree_tote_v: - product: spree_tote - sku: SPR-00011 - price: 15.99 - cost_price: 13.00 - is_master: true - count_on_hand: 10 -spree_bag_v: - product: spree_bag - sku: SPR-00012 - price: 22.99 - cost_price: 21.00 - is_master: true - count_on_hand: 10 -small-spree-baseball: - product: spree_baseball_jersey - option_values: s - sku: SPR-00002 - price: 19.99 - cost_price: 17.00 - count_on_hand: 10 -med-spree-baseball: - product: spree_baseball_jersey - option_values: m - sku: SPR-00005 - price: 19.99 - cost_price: 17.00 - count_on_hand: 10 -large-spree-baseball: - product: spree_baseball_jersey - option_values: l - sku: SPR-00008 - price: 19.99 - cost_price: 17.00 - count_on_hand: 10 diff --git a/spree_multi_site/db/samples/addresses.rb b/spree_multi_site/db/samples/addresses.rb index 7899c5f8..a7b9070d 100644 --- a/spree_multi_site/db/samples/addresses.rb +++ b/spree_multi_site/db/samples/addresses.rb @@ -12,7 +12,7 @@ :zipcode => 16804, :country => united_states, :phone => Faker::PhoneNumber.phone_number -}, :without_protection => true) +}) #Shipping address Spree::Address.create!({ @@ -25,4 +25,4 @@ :zipcode => 16804, :country => united_states, :phone => Faker::PhoneNumber.phone_number -}, :without_protection => true) +}) diff --git a/spree_multi_site/db/samples/adjustments.rb b/spree_multi_site/db/samples/adjustments.rb index e635bae0..b802e236 100644 --- a/spree_multi_site/db/samples/adjustments.rb +++ b/spree_multi_site/db/samples/adjustments.rb @@ -10,7 +10,7 @@ :label => "Tax", :state => "open", :mandatory => true -}, :without_protection => true) +}) last_order.adjustments.create!({ :amount => 0, @@ -19,7 +19,7 @@ :label => "Tax", :state => "open", :mandatory => true -}, :without_protection => true) +}) first_order.adjustments.create!({ :amount => 0, @@ -28,7 +28,7 @@ :label => "Shipping", :state => "finalized", :mandatory => true -}, :without_protection => true) +}) last_order.adjustments.create!({ :amount => 0, @@ -37,4 +37,4 @@ :label => "Shipping", :state => "finalized", :mandatory => true -}, :without_protection => true) +}) diff --git a/spree_multi_site/db/samples/option_types.rb b/spree_multi_site/db/samples/option_types.rb index 0e15384f..f862173f 100644 --- a/spree_multi_site/db/samples/option_types.rb +++ b/spree_multi_site/db/samples/option_types.rb @@ -12,5 +12,5 @@ ] option_types.each do |option_type_attrs| - Spree::OptionType.create!(option_type_attrs, :without_protection => true) + Spree::OptionType.create!(option_type_attrs) end diff --git a/spree_multi_site/db/samples/option_values.rb b/spree_multi_site/db/samples/option_values.rb index 36c87cba..34aaac8b 100644 --- a/spree_multi_site/db/samples/option_values.rb +++ b/spree_multi_site/db/samples/option_values.rb @@ -49,5 +49,5 @@ ] option_values.each do |option_value_attrs| - Spree::OptionValue.create!(option_values, :without_protection => true) + Spree::OptionValue.create!(option_values) end diff --git a/spree_multi_site/db/samples/orders.rb b/spree_multi_site/db/samples/orders.rb index 08515db1..c0f143a9 100644 --- a/spree_multi_site/db/samples/orders.rb +++ b/spree_multi_site/db/samples/orders.rb @@ -9,7 +9,7 @@ :total => 301.90, :shipping_address => Spree::Address.first, :billing_address => Spree::Address.last -}, :without_protection => true) +}) orders << Spree::Order.create!({ :number => "R987654321", @@ -19,19 +19,19 @@ :total => 31.90, :shipping_address => Spree::Address.first, :billing_address => Spree::Address.last -}, :without_protection => true) +}) orders[0].line_items.create!({ :variant => Spree::Product.find_by_name!("Ruby on Rails Tote").master, :quantity => 1, :price => 15.99 -}, :without_protection => true) +}) orders[1].line_items.create!({ :variant => Spree::Product.find_by_name!("Ruby on Rails Bag").master, :quantity => 1, :price => 22.99 -}, :without_protection => true) +}) orders.each(&:create_proposed_shipments) diff --git a/spree_multi_site/db/samples/payments.rb b/spree_multi_site/db/samples/payments.rb index 66992f19..a61d1795 100644 --- a/spree_multi_site/db/samples/payments.rb +++ b/spree_multi_site/db/samples/payments.rb @@ -14,11 +14,11 @@ def self.current creditcard = Spree::CreditCard.create({ :cc_type => 'visa', :month => 12, :year => 2014, :last_digits => '1111', :first_name => 'Sean', :last_name => 'Schofield', - :gateway_customer_profile_id => 'BGS-1234' }, :without_protection => true) + :gateway_customer_profile_id => 'BGS-1234' }) Spree::Order.all.each_with_index do |order, index| order.update! - payment = order.payments.create!({ :amount => order.total, :source => creditcard.clone, :payment_method => method }, :without_protection => true) + payment = order.payments.create!({ :amount => order.total, :source => creditcard.clone, :payment_method => method }) payment.update_attributes_without_callbacks({ :state => 'pending', :response_code => '12345' diff --git a/spree_multi_site/db/samples/products.rb b/spree_multi_site/db/samples/products.rb index c7d53d55..e2e11457 100644 --- a/spree_multi_site/db/samples/products.rb +++ b/spree_multi_site/db/samples/products.rb @@ -126,7 +126,7 @@ Spree::Config[:currency] = "USD" default_shipping_category = Spree::ShippingCategory.find_by_name!("Default Shipping") - product = Spree::Product.create!(default_attrs.merge(product_attrs), :without_protection => true) + product = Spree::Product.create!(default_attrs.merge(product_attrs)) Spree::Config[:currency] = "EUR" product.reload product.price = eur_price diff --git a/spree_multi_site/db/samples/shipping_methods.rb b/spree_multi_site/db/samples/shipping_methods.rb index f099c5b2..efa94bd8 100644 --- a/spree_multi_site/db/samples/shipping_methods.rb +++ b/spree_multi_site/db/samples/shipping_methods.rb @@ -7,7 +7,7 @@ end europe_vat = Spree::Zone.find_by_name!("EU_VAT") -shipping_category = Spree::ShippingCategory.find_or_create_by_name!('Default') +shipping_category = Spree::ShippingCategory.find_or_create_by!( name: 'Default') shipping_methods = [ { @@ -37,7 +37,7 @@ ] shipping_methods.each do |shipping_method_attrs| - Spree::ShippingMethod.create!(shipping_method_attrs, :without_protection => true) + Spree::ShippingMethod.create!(shipping_method_attrs) end { diff --git a/spree_multi_site/db/samples/taxons.rb b/spree_multi_site/db/samples/taxons.rb index f5942da6..4233d100 100644 --- a/spree_multi_site/db/samples/taxons.rb +++ b/spree_multi_site/db/samples/taxons.rb @@ -116,6 +116,6 @@ taxons.each do |taxon_attrs| if taxon_attrs[:parent] taxon_attrs[:parent] = Spree::Taxon.find_by_name!(taxon_attrs[:parent]) - Spree::Taxon.create!(taxon_attrs, :without_protection => true) + Spree::Taxon.create!(taxon_attrs) end end diff --git a/spree_multi_site/db/samples/variants.rb b/spree_multi_site/db/samples/variants.rb index 8c06ad5e..75a7f3c0 100644 --- a/spree_multi_site/db/samples/variants.rb +++ b/spree_multi_site/db/samples/variants.rb @@ -160,7 +160,7 @@ } variants.each do |variant_attrs| - Spree::Variant.create!(variant_attrs, :without_protection => true) + Spree::Variant.create!(variant_attrs) end masters.each do |product, variant_attrs| diff --git a/spree_multi_site/db/seeds.rb b/spree_multi_site/db/seeds.rb index 92c8d14f..e69de29b 100644 --- a/spree_multi_site/db/seeds.rb +++ b/spree_multi_site/db/seeds.rb @@ -1,10 +0,0 @@ - -default_path = File.join(SpreeMultiSite::Config.seed_dir, 'default') -# This first resets the task's already_invoked state, allowing the task to then be executed again, dependencies and all: -Rake::Task['db:load_dir'].reenable -Rake::Task['db:load_dir'].invoke(default_path) - -# For easy to test, load first shop while load seeds. -#default_path = File.join(SpreeMultiSite::Config.seed_dir, 'firstshop') -#Rake::Task['db:load_dir'].reenable -#Rake::Task['db:load_dir'].invoke(default_path) \ No newline at end of file diff --git a/spree_multi_site/lib/spree_multi_site.rb b/spree_multi_site/lib/spree_multi_site.rb index c8628e96..7d4b20e9 100644 --- a/spree_multi_site/lib/spree_multi_site.rb +++ b/spree_multi_site/lib/spree_multi_site.rb @@ -2,7 +2,17 @@ require 'spree_multi_site/engine' require 'spree_multi_site/multi_site_system' require 'spree_multi_site/paper_clip_interpolate_site' -require 'spree_multi_site/permalinks' require 'spree_multi_site/middleware' require 'spree_multi_site/environment' require 'spree_multi_site/permitted_attributes_for_site' +require 'spree_multi_site/paperclip_aliyun_oss_helper' + + +module SpreeMultiSite + # these keys are alipay oss folder names + AttachmentClassEnum = Struct.new( \ + :spree_taxon, :spree_post, :spree_image, :ckeditor_picture, :ckeditor_file,\ + :spree_template_file, :spree_post_files, :spree_store_logos, :spree_store_favicons )\ + ['Spree::Taxon','Spree::Post','Spree::Image', 'Ckeditor::Picture','Ckeditor::AttachmentFile',\ + 'Spree::TemplateFile','Spree::PostFile', 'Spree::StoreLogo', 'Spree::StoreFavicon'] +end diff --git a/spree_multi_site/lib/spree_multi_site/custom_fixtures.rb b/spree_multi_site/lib/spree_multi_site/custom_fixtures.rb index 686fb641..e69de29b 100644 --- a/spree_multi_site/lib/spree_multi_site/custom_fixtures.rb +++ b/spree_multi_site/lib/spree_multi_site/custom_fixtures.rb @@ -1,254 +0,0 @@ -require 'active_record/fixtures' - -module SpreeMultiSite - - class Fixtures < ActiveRecord::Fixtures - - @@all_cached_models = Hash.new { |h,k| h[k] = {} } - #handle has_and_belongs_to_many join table , key is association_reflection - @@all_cached_habtm_rows = Hash.new { |h,k| h[k] = [] } - - def self.cache_for_table(table_name) - @@all_cached_models[table_name] - end - def self.cache_models(table_name, models_map) - cache_for_table(table_name).update(models_map) - end - def self.cache_habtm_rows(habtm_association, rows) - @@all_cached_habtm_rows[habtm_association].concat rows - end - # Since create sample for each site, original key generating in Fixtures - # would not work. We should load fixture in proper order, all created model - # instances are cached, then the right foreign id could be set while create - # model instance which contains belongs_to association. - # ex. assets belongs_to variant, variant should be loaded before assets. - # Replace this method to prevent the table being emptied on each call. Needed - # when both core & auth have user fixtures, see below for code commented out. - # - def self.create_fixtures(fixtures_directory, table_names, class_names = {}) - table_names = [table_names].flatten.map { |n| n.to_s } - if class_names.empty? - table_names.each { |n| - class_names[n.tr('/', '_').to_sym] = n.classify if n.include?('/') - } - end - # FIXME: Apparently JK uses this. - connection = block_given? ? yield : ActiveRecord::Base.connection - - files_to_read = table_names.reject { |table_name| - fixture_is_cached?(connection, table_name) - } - - unless files_to_read.empty? - connection.disable_referential_integrity do - fixtures_map = {} - - fixture_files = files_to_read.map do |path| - table_name = path.tr '/', '_' - - fixtures_map[path] = self.new( - connection, - table_name, - class_names[table_name.to_sym] || table_name.classify, - ::File.join(fixtures_directory, path)) - end - - all_loaded_fixtures.update(fixtures_map) - - connection.transaction(:requires_new => true) do - fixture_files.each do |ff| - models_map = {} - conn = ff.model_class.respond_to?(:connection) ? ff.model_class.connection : connection - client_connection = conn.instance_variable_get(:@connection) - table_rows = ff.table_rows - model_class= ff.model_class - # REMOVED BY SPREE - # table_rows.keys.each do |table| - # conn.delete "DELETE FROM #{conn.quote_table_name(table)}", 'Fixture Delete' - # end - habtm_association = model_class.reflect_on_all_associations(:has_and_belongs_to_many).first - - table_rows.each do |table_name,rows| - #handle join table separately, assume one model only have one HABTM association - next if habtm_association.present? and table_name == habtm_association.options[:join_table] - #correct it after create all objects. - rows.each do |row| - #conn.insert_fixture(row, table_name) - primary_key = ff.identify_primary_key(row) - row.delete( "id" ) - - if row['parent_id'].present? # nested set, taxon - parent_key = ActiveRecord::Fixtures.identify(row['parent_id']) - row['parent_id'] = models_map[parent_key] - if row['parent_id']==0 -Rails.logger.debug "model_class=#{ff.model_class},primary_key=#{primary_key},table_name=#{table_name},parent_id=#{row['parent_id']}" - raise "can not find parent reference: #{row.inspect},parent_key=#{parent_key},models_map=#{models_map.inspect}" - end - end -Rails.logger.debug "model_class=#{ff.model_class},primary_key=#{primary_key},table_name=#{table_name},parent_id=#{row['parent_id']}" - model_instance = model_class.new() - model_instance.assign_attributes(row,:without_protection => true) - if table_name=~/taxonomies|tax_rates|shipping_methods|products|users|shipments/ - # taxonomies has :after_save to create taxon root, insert_fixture would avoid that. - # tax_rate has one calculator, calculator belongs to tax_rate, - # we have to create tax_rate before calculator since calculator require tax_rate.id - # tax_rate has calculator presence validation, so set validate=>false here. so does shipping_method - # TODO for product price validation - #model_instance.save!(:validate => false), it may not work, - conn.insert_fixture(row, table_name) - models_map[primary_key] = client_connection.last_id - else - model_instance.save! - models_map[primary_key] = model_instance.id - end -#puts "primary_key=#{primary_key},model_instance=#{model_instance.inspect}" - end - end - #create HABTM join talbe record with real foreign_key and mock association_foreign_key - #because association may not be created yet - #correct it after load all fixtures - if habtm_association.present? - habtm_rows =table_rows[habtm_association.options[:join_table]] -#Rails.logger.debug "cache habtm_association=#{habtm_association.options[:join_table]},#{habtm_rows.length}---------------------" - cache_habtm_rows(habtm_association, habtm_rows) - end - cache_models(ff.table_name, models_map) - end - - # Cap primary key sequences to max(pk). - if connection.respond_to?(:reset_pk_sequence!) - table_names.each do |table_name| - connection.reset_pk_sequence!(table_name.tr('/', '_')) - end - end - end - - cache_fixtures(connection, fixtures_map) - end - end - cached_fixtures(connection, table_names) - end - - #we have to create join table record after normal fixtures created. - def self.create_habtm_records - @@all_cached_habtm_rows.each_pair{|habtm_association, rows| - foreign_models_map = cache_for_table(habtm_association.active_record.table_name) - association_foreign_models_map = cache_for_table(habtm_association.klass.table_name) - association_klass = habtm_association.klass - rows.each{|row| - #set real foreign_key from created models -# puts "original_row=#{row.inspect},\nmodel_class=#{association_klass}" - row[ habtm_association.foreign_key ] = foreign_models_map[ row[ habtm_association.foreign_key ]] - row[ habtm_association.association_foreign_key ] = association_foreign_models_map[ row[ habtm_association.association_foreign_key ]] -if row[ habtm_association.foreign_key ].nil? or row[ habtm_association.association_foreign_key ].nil? - #puts "row[#{habtm_association.foreign_key}]=#{row[ habtm_association.foreign_key ]},#{foreign_models_map.length}" - #puts "row[#{habtm_association.association_foreign_key}]=#{row[ habtm_association.association_foreign_key ]},#{association_foreign_models_map.keys.inspect} " - raise "can not find foreign reference" -end - association_klass.connection.insert_fixture(row, habtm_association.options[:join_table]) - } - } - @@all_cached_habtm_rows.clear - end - - - # Replace this method to handle associations in yml. - # Return a hash of rows to be inserted. The key is the table, the value is - # a list of rows to insert to that table. - def table_rows - now = ActiveRecord::Base.default_timezone == :utc ? Time.now.utc : Time.now - now = now.to_s(:db) - site_column = 'site_id' - # allow a standard key to be used for doing defaults in YAML - fixtures.delete('DEFAULTS') - - # track any join tables we need to insert later - rows = Hash.new { |h,table| h[table] = [] } - - rows[table_name] = fixtures.map do |label, fixture| - row = fixture.to_hash - - if model_class && model_class < ActiveRecord::Base - # fill in timestamp columns if they aren't specified and the model is set to record_timestamps - if model_class.record_timestamps - timestamp_column_names.each do |name| - row[name] = now unless row.key?(name) - end - end - #set current site id if they aren't specified - if model_class.column_names.include? site_column - row[site_column] = Spree::Site.current.id unless row.key?(site_column) - end - # interpolate the fixture label - row.each do |key, value| - row[key] = label if value == "$LABEL" - end - - # generate a primary key if necessary - if has_primary_key_column? && !row.include?(primary_key_name) -#Rails.logger.debug "label=#{label},identify=#{ActiveRecord::Fixtures.identify(label)}" - row[primary_key_name] = ActiveRecord::Fixtures.identify(label) - end - - # If STI is used, find the correct subclass for association reflection - reflection_class = - if row.include?(inheritance_column_name) - row[inheritance_column_name].constantize rescue model_class - else - model_class - end - - reflection_class.reflect_on_all_associations.each do |association| - case association.macro - when :belongs_to - # Do not replace association name with association foreign key if they are named the same - fk_name = (association.options[:foreign_key] || "#{association.name}_id").to_s -#puts "association.name=#{association.name}, " - if association.name.to_s != fk_name && value = row.delete(association.name.to_s) - - if association.options[:polymorphic] - if value.sub!(/\s*\(([^\)]*)\)\s*$/, "") - # support polymorphic belongs_to as "label (Type)" - row[association.foreign_type] = $1 - end - #puts "cached_table=#{self.class.cache_for_table(row[association.foreign_type].constantize.table_name).inspect}" - #puts "row[association.foreign_type].constantize.table_name=#{row[association.foreign_type].constantize.table_name}" - row[fk_name] = self.class.cache_for_table(row[association.foreign_type].constantize.table_name)[ActiveRecord::Fixtures.identify(value)] - else - row[fk_name] = self.class.cache_for_table(association.klass.table_name)[ActiveRecord::Fixtures.identify(value)] - end - if row[fk_name].nil? - puts "looking for #{table_name},row=#{row.inspect}" - #puts "self.class.cache_for_table('spree_variants')=#{self.class.cache_for_table('spree_variants').keys.inspect}" - puts "@@all_cached_models=#{@@all_cached_models.keys.inspect}" - raise "can not find foreign reference: #{reflection_class}.#{fk_name}" - end - #row[fk_name] = ActiveRecord::Fixtures.identify(value) - end - when :has_and_belongs_to_many - if (targets = row.delete(association.name.to_s)) - targets = targets.is_a?(Array) ? targets : targets.split(/\s*,\s*/) - table_name = association.options[:join_table] - rows[table_name].concat targets.map { |target| -# Rails.logger.debug "target=#{target},#{ActiveRecord::Fixtures.identify(target)}" - { association.foreign_key => row[primary_key_name], - association.association_foreign_key => ActiveRecord::Fixtures.identify(target) } - } - end - end - end - end - - row - end - rows - end - - # generate a primary key if necessary - def identify_primary_key(row) - # Rails.logger.debug "primary_key_name=#{primary_key_name},val=#{row[primary_key_name]}, has_primary_key_column?=#{has_primary_key_column?} " - row[primary_key_name] if has_primary_key_column? && row.include?(primary_key_name) - end - end - -end \ No newline at end of file diff --git a/spree_multi_site/lib/spree_multi_site/engine.rb b/spree_multi_site/lib/spree_multi_site/engine.rb index 827868d2..bb736e12 100644 --- a/spree_multi_site/lib/spree_multi_site/engine.rb +++ b/spree_multi_site/lib/spree_multi_site/engine.rb @@ -9,41 +9,41 @@ class Engine < Rails::Engine g.test_framework :rspec end - initializer "spree.multisite.environment", :before => "spree.environment" do |app| + initializer "spree.multisite.environment", :before => :load_environment_config do |app| app.config.spree_multi_site = SpreeMultiSite::Environment.new - SpreeMultiSite::Config = app.config.spree_multi_site.preferences #legacy access - app.config.spree_multi_site.site_scope_required_classes_from_other_gems = [] - + #SpreeMultiSite::Config = app.config.spree_multi_site.preferences + #app.config.spree_multi_site.site_scope_required_classes_from_other_gems = [] + # use site.attributes instead # preferences contains two kind of records # 1. override AppConfiguration's default value. - # a. some preferences in AppConfiguration are for whole application, so override record site_id=0, like seed_dir + # a. some preferences in AppConfiguration are for whole application, so override record site_id=0 # this kind preference's description start with 'global' - # b. some preferences are for one site, so override record site_id>0, like :default_seo_title - # - # 2. preference in other models, site_id>0, key contain model instance id. - - #hack this class before :load_config_initializers, Spree::Config is using while initialize - Spree::AppConfiguration.class_eval do - #replace original :preference_cache_key, add current_site.id as part of key - #fix error Duplicate entry 'spree/app_configuration/site_url/1' - def preference_cache_key(name) - global_preferences = ["seed_dir"] - some_key = nil - if global_preferences.include? name#preference_description( name ).to_s.start_with? "global_" - some_key =[self.class.name, name, 0].join('::').underscore - else - some_key =[self.class.name, name, Spree::Site.current.id].join('::').underscore - end - some_key - end - end + # b. some preferences are for one site, so override record site_id>0, like :default_seo_title + # + # 2. preference in other models, site_id>0, key contain model instance id. + + #hack this class before :load_config_initializers, Spree::Config is using while initialize + #Spree::AppConfiguration.class_eval do + # #replace original :preference_cache_key, add current_site.id as part of key + # #fix error Duplicate entry 'spree/app_configuration/site_url/1' + # def preference_cache_key(name) + # global_preferences = [] + # some_key = nil + # if global_preferences.include? name#preference_description( name ).to_s.start_with? "global_" + # some_key =[self.class.name, name, 0].join('::').underscore + # else + # some_key =[self.class.name, name, Spree::Site.current.id].join('::').underscore + # end + # some_key + # end + #end end - + initializer "spree.multisite.add_middleware" do |app| app.middleware.use SpreeMultiSite::Middleware - end - + end + def self.activate Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c| Rails.configuration.cache_classes ? require(c) : load(c) @@ -51,9 +51,9 @@ def self.activate end #spree_abc require #{config.root}/app/mailers config.autoload_paths += %W(#{config.root}/app/models/spree #{config.root}/app/jobs) - #Defines generic callbacks to run before after_initialize. + #Defines generic callbacks to run before after_initialize. config.to_prepare &method(:activate).to_proc - - + + end end diff --git a/spree_multi_site/lib/spree_multi_site/environment.rb b/spree_multi_site/lib/spree_multi_site/environment.rb index 0b8a3077..bacea5fd 100644 --- a/spree_multi_site/lib/spree_multi_site/environment.rb +++ b/spree_multi_site/lib/spree_multi_site/environment.rb @@ -4,12 +4,17 @@ class Environment include Spree::Core::EnvironmentExtension attr_accessor :site_scope_required_classes_from_other_gems, :site_scope_required_classes_with_image_from_other_gems, :preferences + # system_top_domain is required, in middleware, we compare it with request.host, + # it tell us to initialize site by short_name or domain. + attr_accessor :system_top_domain def initialize - @preferences = Spree::MultiSiteConfiguration.new + #@preferences = Spree::MultiSiteConfiguration.new + #"Spree.user_class MUST be a String or Symbol object, not a Class object." + # it has to be in Environment, it vary in env + @system_top_domain = "example.com" @site_scope_required_classes_from_other_gems = [] - @site_scope_required_classes_with_image_from_other_gems ={} + @site_scope_required_classes_with_image_from_other_gems = [] end end end - diff --git a/spree_multi_site/lib/spree_multi_site/middleware.rb b/spree_multi_site/lib/spree_multi_site/middleware.rb index d0d59e76..cc3bd9a4 100644 --- a/spree_multi_site/lib/spree_multi_site/middleware.rb +++ b/spree_multi_site/lib/spree_multi_site/middleware.rb @@ -3,44 +3,46 @@ class Middleware def initialize(app) @app = app end - + def call(env) + #env['ORIGINAL_FULLPATH'] = /, + #env['REQUEST_URI'] = http://localhost:3000/ request = Rack::Request.new(env) - unless request.path.include?('.') # ignore .css, .js, .img - site = get_site_from_request(request) - Spree::Site.current = ( site || Spree::Site.first) + resource_extension = request.path[/\.[\w]+/] + # ignore .css, .js, .img, except .json + if resource_extension.nil? || resource_extension=='.json' + Spree::Store.current = get_store_from_request(request) end - status, headers, body = @app.call(env) + status, headers, body = @app.call(env) [status, headers, body] end - - def get_site_from_request( request ) - site = nil - # test.david.com => www.david.com/?n=test.david.com - # our domain is www.dalianshops.com - if request.params['n'].try(:split,'.') # support short_name.dalianshops.com - short_name = request.params['n'].split('.').first - site = Spree::Site.find_by_short_name(short_name) - end - if site.blank? - # support domain, ex. www.david.com - # TODO should use public_suffix_service handle example.com.cn - site = Spree::Site.find_by_domain(request.host) - end - - if(( Rails.env !~ /prduction/ ) && ( site.blank? ) ) + def get_store_from_request( request ) + + store = Spree::Store.by_domain( request.host ) + + # support domain, ex. www.david.com + # apache rewrite test.david.com => localhost:8080/?n=test.david.com, request.host is 'test.david.com' + # TODO should use public_suffix_service handle example.com.cn + + if(( Rails.env =~ /development|test/ ) && ( store.blank? ) ) # for development or test, enable get site from cookie - #Rails.logger.debug "request.cookie_jar=#{request.cookie_jar.inspect},#{request.cookie_jar[:abc_development_domain]},#{request.cookie_jar['abc_development_domain']}" - #string and symbol both OK. cookie.domain should be exactly same as host, www.domain.com != domain.com - cookie_domain = request.cookies['_dalianshops_domain'] - if cookie_domain.present? - site = Spree::Site.find_by_domain( cookie_domain ) - end + # string and symbol both OK. cookie.domain should be exactly same as host, www.domain.com != domain.com + # disable domain, some site have no domain, short_name always exists. + # edit /etc/hosts file, add domains as below for development + # local test domains: + # first.david.com, design.david.com, demo.david.com + short_name = request.host.split('.').first + if short_name.present? + store = Spree::Store.unscoped.find_by_code( short_name ) + end + #support request.host for development + store ||= Spree::Store.default + end - site + store end end -end \ No newline at end of file +end diff --git a/spree_multi_site/lib/spree_multi_site/multi_site_system.rb b/spree_multi_site/lib/spree_multi_site/multi_site_system.rb index 82315578..f1753435 100644 --- a/spree_multi_site/lib/spree_multi_site/multi_site_system.rb +++ b/spree_multi_site/lib/spree_multi_site/multi_site_system.rb @@ -1,63 +1,59 @@ # Spree::BaseController.class_eval would not work # Spree::UserSessionsController derive from Devise::SessionsController, it included Spree::Core::ControllerHelpers -require 'spree/core/controller_helpers/common' -class<< Spree::Core::ControllerHelpers::Common - #def included_with_site_support(receiver) - # receiver.send :include, Spree::MultiSiteSystem - # included_without_site_support(receiver) - # #receiver.prepend_before_filter :get_site #initialize site before authorize user in Spree::UserSessionsController.create - #end - #alias_method_chain :included, :site_support - - #Spree::Api::BaseController would include MultiSiteSystem, get_layout should not in it. - #override original methods - def get_layout - Spree::Site.current.layout.present? ? Spree::Site.current.layout : Spree::Config[:layout] - end -end - +#require 'spree/core/controller_helpers/common' +#class<< Spree::Core::ControllerHelpers::Common +# #Spree::Api::BaseController would include MultiSiteSystem, get_layout should not in it. +# #override original methods +# def get_layout +# Spree::Site.current.layout.present? ? Spree::Site.current.layout : Spree::Config[:layout] +# end +#end + module Spree module MultiSiteSystem extend ActiveSupport::Concern mattr_accessor :multi_site_context - + included do belongs_to :site # rails 3.2.19 # fix: Spree::Taxon.create!({ taxonomy_id: 0, name: 'name' }, without_protection: true) => - # - before_create {|record| record.site_id||= Spree::Site.current.id } - + # + # before_create {|record| record.site_id||= Spree::Site.current.id } + default_scope { - # admin_site_product, create or update global taxon. - if self == Spree::Taxon && multi_site_context=='admin_site_product' - scoped - # first site list template themes - elsif self == Spree::Product && multi_site_context=='site1_themes' - scoped - # first site list product images - elsif self == Spree::Image && multi_site_context=='site_product_images' - scoped - elsif multi_site_context=='admin_migration' - scoped - else + # design shop create theme product, assign it to global taxon( taxon in site 1) + # enable getting taxon from site 1 + # user import theme from design site, we support import theme with taxon. + # enable geting taxon from design site + if ( self == Spree::Taxon || self == Spree::Taxonomy ) && multi_site_context=='free_taxon' + where(nil) + # first site list template themes + elsif ( self == Spree::Product || self == Spree::Property || Spree::Image ) && multi_site_context=='site1_themes' + where(nil) + # first site list product images + elsif multi_site_context=='site_product_images' + where(nil) + # admin sites, site.users site.stores .. + elsif multi_site_context=='admin_sites' + where(nil) + else where(:site_id => Spree::Site.current.id) - end + end } - + end - + module ClassMethods - # remove it after upgrade to rails 4.0 def multi_site_context MultiSiteSystem.multi_site_context - end + end end - + def self.setup_context( new_multi_site_context = nil) self.multi_site_context = new_multi_site_context end - + # do block with given context def self.with_context( new_context, &block ) original_context = self.multi_site_context @@ -68,17 +64,22 @@ def self.with_context( new_context, &block ) self.multi_site_context = original_context end end - - def self.with_context_admin_site_product(&block) - with_context( 'admin_site_product', &block ) + + def self.with_context_free_taxon(&block) + with_context( 'free_taxon', &block ) end def self.with_context_site1_themes(&block) with_context( 'site1_themes', &block ) end + def self.with_context_site_product_images(&block) with_context( 'site_product_images', &block ) end - + + def self.with_context_admin_sites(&block) + with_context( 'admin_sites', &block ) + end + end -end \ No newline at end of file +end diff --git a/spree_multi_site/lib/spree_multi_site/paper_clip_interpolate_site.rb b/spree_multi_site/lib/spree_multi_site/paper_clip_interpolate_site.rb index 09139da1..52b72f8d 100644 --- a/spree_multi_site/lib/spree_multi_site/paper_clip_interpolate_site.rb +++ b/spree_multi_site/lib/spree_multi_site/paper_clip_interpolate_site.rb @@ -1,5 +1,78 @@ -unless Paperclip::Interpolations.all.include? :site - Paperclip.interpolates :site do |attachment, style_name| - attachment.instance.site_id # site.current do not work anymore, since we assign theme product to taxon of shop1. +module SpreeMultiSite + + unless Paperclip::Interpolations.all.include? :site + + Paperclip.interpolates :site do |attachment, style_name| + #belongs to site: product + #belongs to store: logo, favicon + attachment.instance.try(:site_id) || attachment.instance.try(:store).try(:site_id) # site.current do not work anymore, since we assign theme product to taxon of shop1. + end + # Paperclip support :class, Spree::Taxon => spree/taxon, with simple_class, Spree::Taxon => taxon + Paperclip.interpolates :simple_class do |attachment, style_name| + + AttachmentClassEnum.to_h.key( attachment.instance.class.name ) || 'unkown' + #attachment.instance.class.name.demodulize.underscore + end + + Paperclip.interpolates :aliyun_host do |attachment, style_name| + #style_name is symbol + case style_name + when :original + Paperclip::Attachment.default_options[:aliyun][:oss_host] + else + Paperclip::Attachment.default_options[:aliyun][:img_host] + end + end + + # support aliyun image resize service + # product image { mini: '48x48>', small: '100x100>', product: '240x240>', medium: '350x350>', large: '600x600>' } + # post image { mini: '60x60>', small: '180x120>', medium: '280x190>', large: '670x370>'}, + # http://userdomain/object.jpg@100w_100h_90Q.jpg + Paperclip.interpolates :aliyun_style do |attachment, style_name| + extension = '.jpg' + style_symbol = style_name.to_sym + if attachment.instance.class.name == AttachmentClassEnum.spree_image + case style_symbol + when :mini + '@48w_48h_1x' + extension + when :small + '@100w_100h_1x' + extension + when :product + '@240w_240h_1x' + extension + when :medium + '@350w_350h_1x' + extension + when :large + '@600w_600h_1x' + extension + end + elsif attachment.instance.class.name == AttachmentClassEnum.spree_post + case style_symbol + when :mini # post cover + '@60w_60h_1x' + extension + when :small + '@180w_120h_1x' + extension + when :medium + '@280w_190h_1x' + extension + when :large + '@670w_370h_1x' + extension + end + elsif attachment.instance.class.name == AttachmentClassEnum.ckeditor_picture + case style_symbol + when :thumb # ckeditor image, '118x100#', as list item + #先把图按短边优先缩略,然后再用指定颜色填充剩余区域 + '@118w_100h_4e' + extension + when :content # ckeditor image, '800>' , as editor content + '@800w_l1' + extension + end + elsif attachment.instance.class.name == AttachmentClassEnum.spree_template_file + case style_symbol + when :mini + #将图按短边缩略到48x48, 然后按白色填充 + '@48w_48h_4e' + extension + end + + end + + end # :aliyun_style end -end \ No newline at end of file + +end # SpreeMultiSite diff --git a/spree_multi_site/lib/spree_multi_site/paperclip_aliyun_oss_helper.rb b/spree_multi_site/lib/spree_multi_site/paperclip_aliyun_oss_helper.rb new file mode 100644 index 00000000..9b4bcc0a --- /dev/null +++ b/spree_multi_site/lib/spree_multi_site/paperclip_aliyun_oss_helper.rb @@ -0,0 +1,35 @@ +module SpreeMultiSite + + # include into model + module PaperclipAliyunOssHelper + # original path and url + # :url => "/shops/:rails_env/:site/ckeditor_assets/pictures/:id/:style_:basename.:extension", + # :path => ":rails_root/public/shops/:rails_env/:site/ckeditor_assets/pictures/:id/:style_:basename.:extension", + + def self.extended( base ) + if base.storage_aliyun? + base.fix_path_for_aliyun_oss + end + end + + def fix_path_for_aliyun_oss + # ex. Spree::Taxon path = 1/taxon/1_test.jpg, :aliyun_style start with @ + # taxon/post/ + path = ":site/:simple_class/:id_:filename" + #make sure each + attachment_key = :attachment # spree_image/ spree_template_file + attachment_key = :icon if self.name == AttachmentClassEnum.spree_taxon + attachment_key = :cover if self.name == AttachmentClassEnum.spree_post + attachment_key = :data if self.name == AttachmentClassEnum.ckeditor_picture #Ckeditor::Picture, + attachment_key = :data if self.name == AttachmentClassEnum.ckeditor_file #Ckeditor::AttachmentFile + attachment_definitions[attachment_key][:path] = path + attachment_definitions[attachment_key][:url] = 'http://:aliyun_host/'+path+':aliyun_style' + attachment_definitions[attachment_key][:styles] = {} #no need styles anymore. it is supproted by oss style + end + + def storage_aliyun? + (attachment_definitions[:storage]||Paperclip::Attachment.default_options[:storage]) == :aliyun + end + end + +end diff --git a/spree_multi_site/lib/spree_multi_site/permalinks.rb b/spree_multi_site/lib/spree_multi_site/permalinks.rb deleted file mode 100644 index c7b07e87..00000000 --- a/spree_multi_site/lib/spree_multi_site/permalinks.rb +++ /dev/null @@ -1,18 +0,0 @@ -require 'spree/core/permalinks' -#override permalinks, add site scope -class<< Spree::Core::Permalinks::ClassMethods - - def make_permalink(options={}) - options[:field] ||= :permalink - self.permalink_options = options - - #add site scope - #validates permalink_options[:field], :uniqueness => true - validates permalink_options[:field], :uniqueness => { :scope => [:site_id] } - - if self.table_exists? && self.column_names.include?(permalink_options[:field].to_s) - before_validation(:on => :create) { save_permalink } - end - end - -end \ No newline at end of file diff --git a/spree_multi_site/lib/spree_multi_site/permitted_attributes_for_site.rb b/spree_multi_site/lib/spree_multi_site/permitted_attributes_for_site.rb index 2bc1d1c2..5c1b76d4 100644 --- a/spree_multi_site/lib/spree_multi_site/permitted_attributes_for_site.rb +++ b/spree_multi_site/lib/spree_multi_site/permitted_attributes_for_site.rb @@ -4,6 +4,9 @@ module PermittedAttributes ATTRIBUTES_FOR_SITE=[:site_attributes] mattr_reader *ATTRIBUTES_FOR_SITE - @@site_attributes = [:name, :domain, :short_name, :has_sample, :index_page,:theme_id,:foreign_theme_id] + @@site_attributes = [:name, :domain, :short_name, :has_sample, :index_page,:theme_id,:foreign_theme_id, :email, :password,:password_confirmation, + # from app_configuration + :allow_ssl_in_production, :allow_ssl_in_development_and_test, :allow_ssl_in_staging, :check_for_spree_alerts, :display_currency, :hide_cents, :currency, :currency_symbol_position, :currency_decimal_mark, :currency_thousands_separator + ] end -end \ No newline at end of file +end diff --git a/spree_multi_site/lib/spree_multi_site/testing_support/factories.rb b/spree_multi_site/lib/spree_multi_site/testing_support/factories.rb new file mode 100644 index 00000000..a36a5d0b --- /dev/null +++ b/spree_multi_site/lib/spree_multi_site/testing_support/factories.rb @@ -0,0 +1,3 @@ +Dir["#{File.dirname(__FILE__)}/factories/**"].each do |f| + load File.expand_path(f) +end diff --git a/spree_multi_site/lib/spree_multi_site/testing_support/factories/site_factory.rb b/spree_multi_site/lib/spree_multi_site/testing_support/factories/site_factory.rb new file mode 100644 index 00000000..d77a5aa9 --- /dev/null +++ b/spree_multi_site/lib/spree_multi_site/testing_support/factories/site_factory.rb @@ -0,0 +1,34 @@ +FactoryGirl.define do + factory :site1, class: Spree::Site do + name 'first' + email 'first@example.com' + password 'password' + short_name 'www' # indicate tld + + before(:create) do + Spree::Role.find_by(name: 'admin') || create(:role, name: 'admin') + end + + after(:create) do| site | + store = create(:store, site: site, default: true ) + end + + end + + factory :site2, class: Spree::Site do + name 'design' + email 'design@example.com' + password 'password' + + before(:create) do + Spree::Role.find_by(name: 'admin') || create(:role, name: 'admin') + end + + after(:create) do| site | + store = create(:store, site: site ) + end + + end + + +end diff --git a/spree_multi_site/lib/tasks/multi_site_extension_tasks.rake b/spree_multi_site/lib/tasks/multi_site_extension_tasks.rake index f89b054a..d67b288f 100644 --- a/spree_multi_site/lib/tasks/multi_site_extension_tasks.rake +++ b/spree_multi_site/lib/tasks/multi_site_extension_tasks.rake @@ -1,18 +1,25 @@ def rename_multi_site_migrations puts "calling spree_multi_site:install:migrations enhance" - #default migration sequence is spree's migration -> extension's migration - #we need to create site first, or User.find will cause error, so change name to reset order - #1create_site -> spree_zero_nine_zero -> other_spree_multi_site_migrations + # default migration sequence is spree's migration -> extension's migration + # we need to create site first, or User.find will cause error, so change name to reset order + # + # 1create_site -> + # -> spree_zero_nine_zero -> other_spree_multi_site_migrations spree_zero_nine_zero_migration = nil - spree_multi_site_migrations = [] + special_migration_regex = /create_sites/ + #add_site_orders| + #add_short_name_and_parent_id_to_site| + #add_has_sample| + #add_site_taxons/ + spree_multi_site_migrations = [] Dir[File.join(Rails.root,'db','migrate','*.rb')].sort.each{|file| spree_zero_nine_zero_migration = file if file =~/spree_one_two/ - spree_multi_site_migrations<< file if file=~/spree_multi_site.rb$/ && file !~/_last_/ #z: load it at last. - #leave this file 'add_site_payment_methods' at the end + spree_multi_site_migrations<< file if file=~/spree_multi_site.rb$/ && file =~special_migration_regex #z: load it at last. + #leave this file 'add_site_payment_methods' at the end } - #puts "--spree_zero_nine_zero_migration=#{spree_zero_nine_zero_migration}" - #puts "--spree_multi_site_migrations=#{spree_multi_site_migrations}" - if spree_zero_nine_zero_migration.present? and spree_multi_site_migrations.present? + #puts "--spree_zero_nine_zero_migration=#{spree_zero_nine_zero_migration}" + #puts "--spree_multi_site_migrations=#{spree_multi_site_migrations}" + if spree_zero_nine_zero_migration.present? && spree_multi_site_migrations.present? spree_zero_file_name = File.basename(spree_zero_nine_zero_migration,'.rb') # spree_zero_nine_zero_migration is full path migration_start_number = spree_zero_file_name.to_i - spree_multi_site_migrations.size create_site_migration = spree_multi_site_migrations.shift @@ -23,12 +30,12 @@ def rename_multi_site_migrations File.rename(spree_zero_nine_zero_migration, spree_zero_nine_zero_migration.sub(/\d+/,(migration_start_number+1).to_s)) spree_multi_site_migrations.each_index{|i| migration_file = spree_multi_site_migrations[i] - File.rename(migration_file, migration_file.sub(/\d+/,(migration_start_number+2+i).to_s)) + File.rename(migration_file, migration_file.sub(/\d+/,(migration_start_number+2+i).to_s)) } - end + end end - puts "complete renaming spree_multi_site's migration" - + puts "complete renaming spree_multi_site's migration" + end # task test_app call railties:install:migrations @@ -38,7 +45,7 @@ end #namespace :spree_multi_site do # namespace :install do -# namespace :migrations do +# namespace :migrations do # end # end #end @@ -56,13 +63,13 @@ namespace :spree do mkdir_p RAILS_ROOT + directory cp file, RAILS_ROOT + path end - end + end desc "remove multi_site's migrations first,then install again, useful for modifing some existing migration file!" task :reinstall_migrations => :environment do Dir[File.join(Rails.root,'db','migrate','*.rb')].sort.each{|file| if file=~/spree_multi_site.rb$/ File.delete(file) - end + end } Rake::Task['spree_multi_site:install:migrations'].invoke end @@ -74,7 +81,7 @@ namespace :spree do #site.taxonomies = Spree::Taxonomy.find(:all) #site.orders = Spree::Order.find(:all) #site.save - #end + #end end end -end \ No newline at end of file +end diff --git a/spree_multi_site/spec/controllers/spree/site_controller_spec.rb b/spree_multi_site/spec/controllers/spree/site_controller_spec.rb deleted file mode 100644 index 2b9e2c69..00000000 --- a/spree_multi_site/spec/controllers/spree/site_controller_spec.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'spec_helper' - -describe Spree::SitesController do - - it "should create site" do - spree_post :quick_lunch,{:site=>{:name=>"a test"}, :user=>{:email=>'test@test.com',:password=>'123456'}} - site = assigns(:site) - site.should be_kind_of Spree::Site - site.shipping_categories.count.should eq 1 - site.users.count.should eq 1 - response.should redirect_to(site.admin_url) - end -end diff --git a/spree_multi_site/spec/controllers/spree/sites_controller_spec.rb b/spree_multi_site/spec/controllers/spree/sites_controller_spec.rb new file mode 100644 index 00000000..5a6a6c2e --- /dev/null +++ b/spree_multi_site/spec/controllers/spree/sites_controller_spec.rb @@ -0,0 +1,28 @@ +require 'spec_helper' + +describe Spree::SitesController do + #let!(:user) { mock_model(Spree::User, :spree_api_key => 'fake', :last_incomplete_spree_order => nil) } + let!(:role) { create(:admin_role) } + context "with site www.tld" do + before do + Spree::Site.current = create(:site1) + end + #Delete this example and add some real ones + it "should use Spree::SitesController" do + controller.should be_an_instance_of(Spree::SitesController) + end + #{"utf8"=>"✓", "authenticity_token"=>"Klllros8vRbKw1rGMzq33yHRXJ2ioTyaXV0Uy2YlsUw=", "site"=>{"name"=>"test", "short_name"=>"test", "has_sample"=>"1"}, "user"=>{"email"=>"test@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"创建"} + it "should create a site successfully" do + spree_post :create, { "site"=>{"name"=>"test", "short_name"=>"test", "email"=>"test@gmail.com", "password"=>"123456", "password_confirmation"=>"123456"} } + expect(assigns(:site)).to be_kind_of Spree::Site + expect(response).to redirect_to( assigns(:site).admin_url ) + end + + it "should quick lunch a site successfully" do + spree_post :quick_lunch, { "site"=>{"name"=>"test", "short_name"=>"test", "email"=>"test@gmail.com", "password"=>"123456"}} + expect(assigns(:site)).to be_kind_of Spree::Site + expect(response).to redirect_to( assigns(:site).admin_url ) + end + end + +end diff --git a/spree_multi_site/spec/controllers/spree/store_controller_spec.rb b/spree_multi_site/spec/controllers/spree/store_controller_spec.rb deleted file mode 100644 index be44744c..00000000 --- a/spree_multi_site/spec/controllers/spree/store_controller_spec.rb +++ /dev/null @@ -1,17 +0,0 @@ -require 'spec_helper' - -describe Spree::StoreController do - - #Delete this example and add some real ones - it "should use Spree::StoreController" do - controller.should be_an_instance_of(Spree::StoreController) - expect( controller.methods).to include(:get_site_and_products) - - end -#{"utf8"=>"✓", "authenticity_token"=>"Klllros8vRbKw1rGMzq33yHRXJ2ioTyaXV0Uy2YlsUw=", "site"=>{"name"=>"test", "short_name"=>"test", "has_sample"=>"1"}, "user"=>{"email"=>"test@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"创建"} - it "should create a site successfully with an HTTP 200 status code" do - post :new - expect(response).to be_success - expect(response.status).to eq(200) - end -end diff --git a/spree_multi_site/spec/fixtures/qinghe.jpg b/spree_multi_site/spec/fixtures/qinghe.jpg new file mode 100644 index 00000000..6e647b70 Binary files /dev/null and b/spree_multi_site/spec/fixtures/qinghe.jpg differ diff --git a/spree_multi_site/spec/helpers/spree/admin/sites_helper_spec.rb b/spree_multi_site/spec/helpers/spree/admin/sites_helper_spec.rb deleted file mode 100644 index 89bafc9c..00000000 --- a/spree_multi_site/spec/helpers/spree/admin/sites_helper_spec.rb +++ /dev/null @@ -1,12 +0,0 @@ -require 'spec_helper' - -describe Spree::Admin::SitesHelper do - - #Delete this example and add some real ones or delete this file - it "should include the Spree::Admin::SitesHelper" do - #included_modules = self.metaclass.send :included_modules - #included_modules.should include(Spree::Admin::SitesHelper) - true - end - -end diff --git a/spree_multi_site/spec/models/site_spec.rb b/spree_multi_site/spec/models/site_spec.rb index 8b820260..7b915bc4 100644 --- a/spree_multi_site/spec/models/site_spec.rb +++ b/spree_multi_site/spec/models/site_spec.rb @@ -2,87 +2,76 @@ require 'spec_helper' describe Spree::Site do before(:each) do - @site = Spree::Site.new(:name=>'ABCD',:domain=>'www.abc.net') + create(:admin_role) + @site = Spree::Site.new(:name=>'ABCD',:domain=>'www.abc.net', :email=>'test@example.com', :password=>'123456') end - it "should be valid" do - @site.should be_valid - @site.domain = '' - @site.should be_valid - + it "should be valid with blank domain" do @site.domain = nil @site.should be_valid - - @site.domain = 'www.abc.net' - @site.save! - - site2 = @site.dup - site2.should be_invalid - site2.short_name = nil - site2.domain = nil - site2.should be_valid - site2.save.should be_true - site2.short_name.should start_with( @site.short_name) - site2.short_name.should_not == @site.short_name end - - - - it "should not be valid" do + + it "named 'ABC' should not be valid" do @site.name = 'ABC' @site.short_name = nil - @site.valid?.should be_false - + @site.valid?.should be_falsy + end + + it "generate 'da-lian-and-bai-jiu' from name '大连&白酒!'" do @site.name = '大连&白酒!' @site.short_name = nil - @site.valid?.should be_true + @site.valid?.should be_truthy @site.short_name.should eq "da-lian-and-bai-jiu" - @site.save.should be_true - end - - it "should create site and user" do - user_attributes = {"email"=>"test@abc.com", "password"=>"a12345z", "password_confirmation"=>"a12345z"} - @site.users<< Spree::User.new(user_attributes) - @site.save - @site.should_not be_new_record - @site.users.first.email.should eq(user_attributes['email']) + @site.save.should be_truthy end - - it "shold load samples" do + + it "should create site with store, user and shipping_category" do + #user_attributes = {"email"=>"test@abc.com", "password"=>"a12345z", "password_confirmation"=>"a12345z"} + #@site.users<< Spree::User.new(user_attributes) @site.save! - @site.load_sample - @site.shipping_categories.should be_present + @site.should be_persisted + Spree::Site.current = @site + @site.users.should be_present + @site.stores.should be_present end - - it "should has associations" do - @site.users.build.should be_present - @site.products.build.should be_present - @site.zones.build.should be_present - - end - + + # raise error ./app/models/spree/site.rb:56:in `current' + #it "should create site and admin user" do + # site_params = { "name"=>"test", "short_name"=>"test", + # "users_attributes"=>{"0"=>{"email"=>"test@example.com", "password"=>"123456", "password_confirmation"=>"123456"}} + # } + # site = Spree::Site.new(site_params) + # site.save + # site.should_not be_new_record + #end + + #it "shold load samples" do + # @site.save! + # @site.load_sample + # @site.shipping_categories.should be_present + # @site.users.first.should be_persisted + # @site.users.first.should be_admin + #end + it "shold remove samples" do - @site.save! - @site.load_sample(false) + @site.unload_sample Spree::Site.current = @site Spree::Product.count.should eq(0) - Spree::Variant.count.should eq(0) Spree::Zone.count.should eq(0) - Spree::ZoneMember.count.should eq(0) Spree::StateChange.count.should eq(0) #product variants #taxonomy, taxon #zone,zone_member #state_changes end - + it "shold create two site and load samples for them" do - @site1 = Spree::Site.create!(:name=>'Site1',:domain=>'www.site1.net',:short_name=>'site1') - @site2 = Spree::Site.create!(:name=>'Site1',:domain=>'www.site2.net',:short_name=>'site2') - @site1.load_sample - @site2.load_sample + #@site1 = Spree::Site.create!(:name=>'Site1',:domain=>'www.site1.net',:short_name=>'site1', :email=>'site1@example.com', :password=>'123456') + #@site2 = Spree::Site.create!(:name=>'Site1',:domain=>'www.site2.net',:short_name=>'site2', :email=>'site2@example.com', :password=>'123456') + #@site1.load_sample + #@site2.load_sample #product image copied and in right folder. end - + end diff --git a/spree_multi_site/spec/models/taxon_spec.rb b/spree_multi_site/spec/models/taxon_spec.rb deleted file mode 100644 index 02f2773f..00000000 --- a/spree_multi_site/spec/models/taxon_spec.rb +++ /dev/null @@ -1,12 +0,0 @@ -#encoding: utf-8 -require 'spec_helper' -describe Spree::Taxon do - before(:each) do - Spree::Site.current = Spree::Site.create!(:name=>'ABCD',:domain=>'www.abc.net') - @taxon = Spree::Taxon.new(:name=>'ABCD') - end - it "should create taxon with valid site!" do - new_taxon = Spree::Taxon.create!({ taxonomy_id: 0, name: 'name' }) - new_taxon.site.should eq Spree::Site.current - end -end diff --git a/spree_multi_site/spec/spec_helper.rb b/spree_multi_site/spec/spec_helper.rb index 453981c7..a44f3eab 100644 --- a/spree_multi_site/spec/spec_helper.rb +++ b/spree_multi_site/spec/spec_helper.rb @@ -15,6 +15,7 @@ require File.expand_path('../dummy/config/environment.rb', __FILE__) require 'rspec/rails' +require 'database_cleaner' require 'ffaker' # Requires supporting ruby files with custom matchers and macros, etc, @@ -28,6 +29,9 @@ require 'spree/testing_support/factories' require 'spree/testing_support/url_helpers' +# Requires factories defined in lib/spree_multi_site/factories.rb +require 'spree_multi_site/testing_support/factories' + RSpec.configure do |config| config.include FactoryGirl::Syntax::Methods @@ -42,6 +46,12 @@ # current_path.should eql(spree.products_path) config.include Spree::TestingSupport::UrlHelpers + # == Requests support + # + # Adds convenient methods to request Spree's controllers + # spree_get :index + config.include Spree::TestingSupport::ControllerRequests, type: :controller + # == Mock Framework # # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: @@ -55,6 +65,7 @@ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures config.fixture_path = "#{::Rails.root}/spec/fixtures" + # Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner # to cleanup after each test instead. Without transactional fixtures set to false the records created # to setup a test will be unavailable to the browser, which runs under a separate server instance. @@ -63,7 +74,7 @@ # Ensure Suite is set to use transactions for speed. config.before :suite do DatabaseCleaner.strategy = :transaction - DatabaseCleaner.clean_with :truncation + #DatabaseCleaner.clean_with :truncation end # Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary. diff --git a/spree_multi_site/spree_multi_site.gemspec b/spree_multi_site/spree_multi_site.gemspec index e76c1d99..aee0a51e 100644 --- a/spree_multi_site/spree_multi_site.gemspec +++ b/spree_multi_site/spree_multi_site.gemspec @@ -2,10 +2,10 @@ Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = 'spree_multi_site' - s.version = '2.4.0' + s.version = '3.1.0' s.summary = 'spree extension for multi-site' s.description = 'spree extension for multi-site' - s.required_ruby_version = '>= 1.9.3' + s.required_ruby_version = '>= 2.0.0' s.author = 'qinghe' s.email = 'areq22@gmail.com' @@ -16,7 +16,7 @@ Gem::Specification.new do |s| s.require_path = 'lib' s.requirements << 'none' - s.add_dependency 'spree_core', '~> 2.4.0' + s.add_dependency 'spree_core' s.add_development_dependency 'capybara', '~> 2.4' s.add_development_dependency 'coffee-rails' @@ -24,7 +24,7 @@ Gem::Specification.new do |s| s.add_development_dependency 'factory_girl', '~> 4.5' s.add_development_dependency 'ffaker' s.add_development_dependency 'rspec-rails', '~> 3.1' - s.add_development_dependency 'sass-rails', '~> 4.0.2' + s.add_development_dependency 'sass-rails', '~> 5.0.0.beta1' s.add_development_dependency 'selenium-webdriver' s.add_development_dependency 'simplecov' s.add_development_dependency 'sqlite3' diff --git a/spree_omniauth/.gitignore b/spree_omniauth/.gitignore new file mode 100644 index 00000000..e8a3f9c2 --- /dev/null +++ b/spree_omniauth/.gitignore @@ -0,0 +1,14 @@ +\#* +*~ +.#* +.DS_Store +.idea +.project +.sass-cache +coverage +Gemfile.lock +tmp +nbproject +pkg +*.swp +spec/dummy diff --git a/spree_omniauth/.rspec b/spree_omniauth/.rspec new file mode 100644 index 00000000..5052887a --- /dev/null +++ b/spree_omniauth/.rspec @@ -0,0 +1 @@ +--color \ No newline at end of file diff --git a/spree_omniauth/Gemfile b/spree_omniauth/Gemfile new file mode 100644 index 00000000..8527d16f --- /dev/null +++ b/spree_omniauth/Gemfile @@ -0,0 +1,18 @@ +source 'https://rubygems.org' + +gem 'spree', github: 'spree/spree', branch: '3-1-stable' +# Provides basic authentication functionality for testing parts of your engine +gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: '3-1-stable' + +gem 'omniauth-open_wechat' + +gem 'wechat' + +group :development do + gem "spring" + gem 'pry-rails' + gem 'byebug' +end + + +gemspec diff --git a/spree_omniauth/LICENSE b/spree_omniauth/LICENSE new file mode 100644 index 00000000..27b85d72 --- /dev/null +++ b/spree_omniauth/LICENSE @@ -0,0 +1,26 @@ +Copyright (c) 2015 [name of plugin creator] +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name Spree nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/spree_omniauth/README.md b/spree_omniauth/README.md new file mode 100644 index 00000000..65462d17 --- /dev/null +++ b/spree_omniauth/README.md @@ -0,0 +1,46 @@ +SpreeOmniauth +============= + +Integrate spree with wechat. + +Installation +------------ + +Add spree_omniauth to your Gemfile: + +https://github.com/plataformatec/devise/wiki/OmniAuth-with-multiple-models + + +```ruby +gem 'spree_omniauth' +``` + +Bundle your dependencies and run the installation generator: + +```shell +bundle +bundle exec rails g spree_omniauth:install +``` +List of Strategies +------------------ +https://github.com/free1/omniauth-open_wechat + + +Testing +------- + +First bundle your dependencies, then run `rake`. `rake` will default to building the dummy app if it does not exist, then it will run specs. The dummy app can be regenerated by using `rake test_app`. + +```shell +bundle +bundle exec rake +``` + +When testing your applications integration with this extension you may use it's factories. +Simply add this require statement to your spec_helper: + +```ruby +require 'spree_omniauth/factories' +``` + +Copyright (c) 2015 [name of extension creator], released under the New BSD License diff --git a/spree_omniauth/Rakefile b/spree_omniauth/Rakefile new file mode 100644 index 00000000..7fe78862 --- /dev/null +++ b/spree_omniauth/Rakefile @@ -0,0 +1,21 @@ +require 'bundler' +Bundler::GemHelper.install_tasks + +require 'rspec/core/rake_task' +require 'spree/testing_support/extension_rake' + +RSpec::Core::RakeTask.new + +task :default do + if Dir["spec/dummy"].empty? + Rake::Task[:test_app].invoke + Dir.chdir("../../") + end + Rake::Task[:spec].invoke +end + +desc 'Generates a dummy app for testing' +task :test_app do + ENV['LIB_NAME'] = 'spree_omniauth' + Rake::Task['common:test_app'].invoke("Spree::User") +end diff --git a/spree_omniauth/app/assets/images/aol_128.png b/spree_omniauth/app/assets/images/aol_128.png new file mode 100644 index 00000000..391d32fa Binary files /dev/null and b/spree_omniauth/app/assets/images/aol_128.png differ diff --git a/spree_omniauth/app/assets/images/aol_256.png b/spree_omniauth/app/assets/images/aol_256.png new file mode 100644 index 00000000..be9bb7c3 Binary files /dev/null and b/spree_omniauth/app/assets/images/aol_256.png differ diff --git a/spree_omniauth/app/assets/images/aol_32.png b/spree_omniauth/app/assets/images/aol_32.png new file mode 100644 index 00000000..f50ebb56 Binary files /dev/null and b/spree_omniauth/app/assets/images/aol_32.png differ diff --git a/spree_omniauth/app/assets/images/aol_64.png b/spree_omniauth/app/assets/images/aol_64.png new file mode 100644 index 00000000..64d6e5d9 Binary files /dev/null and b/spree_omniauth/app/assets/images/aol_64.png differ diff --git a/spree_omniauth/app/assets/images/basecamp_128.png b/spree_omniauth/app/assets/images/basecamp_128.png new file mode 100644 index 00000000..20f4a349 Binary files /dev/null and b/spree_omniauth/app/assets/images/basecamp_128.png differ diff --git a/spree_omniauth/app/assets/images/basecamp_256.png b/spree_omniauth/app/assets/images/basecamp_256.png new file mode 100644 index 00000000..a5d9c9fd Binary files /dev/null and b/spree_omniauth/app/assets/images/basecamp_256.png differ diff --git a/spree_omniauth/app/assets/images/basecamp_32.png b/spree_omniauth/app/assets/images/basecamp_32.png new file mode 100644 index 00000000..d6ec05a7 Binary files /dev/null and b/spree_omniauth/app/assets/images/basecamp_32.png differ diff --git a/spree_omniauth/app/assets/images/basecamp_64.png b/spree_omniauth/app/assets/images/basecamp_64.png new file mode 100644 index 00000000..30257784 Binary files /dev/null and b/spree_omniauth/app/assets/images/basecamp_64.png differ diff --git a/spree_omniauth/app/assets/images/campfire_128.png b/spree_omniauth/app/assets/images/campfire_128.png new file mode 100644 index 00000000..826b7adb Binary files /dev/null and b/spree_omniauth/app/assets/images/campfire_128.png differ diff --git a/spree_omniauth/app/assets/images/campfire_256.png b/spree_omniauth/app/assets/images/campfire_256.png new file mode 100644 index 00000000..317309d9 Binary files /dev/null and b/spree_omniauth/app/assets/images/campfire_256.png differ diff --git a/spree_omniauth/app/assets/images/campfire_32.png b/spree_omniauth/app/assets/images/campfire_32.png new file mode 100644 index 00000000..e9cd71ef Binary files /dev/null and b/spree_omniauth/app/assets/images/campfire_32.png differ diff --git a/spree_omniauth/app/assets/images/campfire_64.png b/spree_omniauth/app/assets/images/campfire_64.png new file mode 100644 index 00000000..5dd69f52 Binary files /dev/null and b/spree_omniauth/app/assets/images/campfire_64.png differ diff --git a/spree_omniauth/app/assets/images/facebook_128.png b/spree_omniauth/app/assets/images/facebook_128.png new file mode 100644 index 00000000..3a04a89c Binary files /dev/null and b/spree_omniauth/app/assets/images/facebook_128.png differ diff --git a/spree_omniauth/app/assets/images/facebook_256.png b/spree_omniauth/app/assets/images/facebook_256.png new file mode 100644 index 00000000..aac1cc0a Binary files /dev/null and b/spree_omniauth/app/assets/images/facebook_256.png differ diff --git a/spree_omniauth/app/assets/images/facebook_32.png b/spree_omniauth/app/assets/images/facebook_32.png new file mode 100644 index 00000000..e8bca65f Binary files /dev/null and b/spree_omniauth/app/assets/images/facebook_32.png differ diff --git a/spree_omniauth/app/assets/images/facebook_64.png b/spree_omniauth/app/assets/images/facebook_64.png new file mode 100644 index 00000000..c7a9d833 Binary files /dev/null and b/spree_omniauth/app/assets/images/facebook_64.png differ diff --git a/spree_omniauth/app/assets/images/github_128.png b/spree_omniauth/app/assets/images/github_128.png new file mode 100644 index 00000000..15e02097 Binary files /dev/null and b/spree_omniauth/app/assets/images/github_128.png differ diff --git a/spree_omniauth/app/assets/images/github_256.png b/spree_omniauth/app/assets/images/github_256.png new file mode 100644 index 00000000..b9136387 Binary files /dev/null and b/spree_omniauth/app/assets/images/github_256.png differ diff --git a/spree_omniauth/app/assets/images/github_32.png b/spree_omniauth/app/assets/images/github_32.png new file mode 100644 index 00000000..247e52a5 Binary files /dev/null and b/spree_omniauth/app/assets/images/github_32.png differ diff --git a/spree_omniauth/app/assets/images/github_64.png b/spree_omniauth/app/assets/images/github_64.png new file mode 100644 index 00000000..fca7bf44 Binary files /dev/null and b/spree_omniauth/app/assets/images/github_64.png differ diff --git a/spree_omniauth/app/assets/images/google_128.png b/spree_omniauth/app/assets/images/google_128.png new file mode 100644 index 00000000..401000a1 Binary files /dev/null and b/spree_omniauth/app/assets/images/google_128.png differ diff --git a/spree_omniauth/app/assets/images/google_256.png b/spree_omniauth/app/assets/images/google_256.png new file mode 100644 index 00000000..3f66b25f Binary files /dev/null and b/spree_omniauth/app/assets/images/google_256.png differ diff --git a/spree_omniauth/app/assets/images/google_32.png b/spree_omniauth/app/assets/images/google_32.png new file mode 100644 index 00000000..3909e9de Binary files /dev/null and b/spree_omniauth/app/assets/images/google_32.png differ diff --git a/spree_omniauth/app/assets/images/google_64.png b/spree_omniauth/app/assets/images/google_64.png new file mode 100644 index 00000000..e55f34f1 Binary files /dev/null and b/spree_omniauth/app/assets/images/google_64.png differ diff --git a/spree_omniauth/app/assets/images/linkedin_128.png b/spree_omniauth/app/assets/images/linkedin_128.png new file mode 100644 index 00000000..bbc9f1ab Binary files /dev/null and b/spree_omniauth/app/assets/images/linkedin_128.png differ diff --git a/spree_omniauth/app/assets/images/linkedin_256.png b/spree_omniauth/app/assets/images/linkedin_256.png new file mode 100644 index 00000000..2f14416b Binary files /dev/null and b/spree_omniauth/app/assets/images/linkedin_256.png differ diff --git a/spree_omniauth/app/assets/images/linkedin_32.png b/spree_omniauth/app/assets/images/linkedin_32.png new file mode 100644 index 00000000..265828c9 Binary files /dev/null and b/spree_omniauth/app/assets/images/linkedin_32.png differ diff --git a/spree_omniauth/app/assets/images/linkedin_64.png b/spree_omniauth/app/assets/images/linkedin_64.png new file mode 100644 index 00000000..a0163669 Binary files /dev/null and b/spree_omniauth/app/assets/images/linkedin_64.png differ diff --git a/spree_omniauth/app/assets/images/myspace_128.png b/spree_omniauth/app/assets/images/myspace_128.png new file mode 100644 index 00000000..477c16b7 Binary files /dev/null and b/spree_omniauth/app/assets/images/myspace_128.png differ diff --git a/spree_omniauth/app/assets/images/myspace_256.png b/spree_omniauth/app/assets/images/myspace_256.png new file mode 100644 index 00000000..e8f31cd8 Binary files /dev/null and b/spree_omniauth/app/assets/images/myspace_256.png differ diff --git a/spree_omniauth/app/assets/images/myspace_32.png b/spree_omniauth/app/assets/images/myspace_32.png new file mode 100644 index 00000000..79b32f71 Binary files /dev/null and b/spree_omniauth/app/assets/images/myspace_32.png differ diff --git a/spree_omniauth/app/assets/images/myspace_64.png b/spree_omniauth/app/assets/images/myspace_64.png new file mode 100644 index 00000000..88050fdd Binary files /dev/null and b/spree_omniauth/app/assets/images/myspace_64.png differ diff --git a/spree_omniauth/app/assets/images/openid_128.png b/spree_omniauth/app/assets/images/openid_128.png new file mode 100644 index 00000000..26b9318b Binary files /dev/null and b/spree_omniauth/app/assets/images/openid_128.png differ diff --git a/spree_omniauth/app/assets/images/openid_256.png b/spree_omniauth/app/assets/images/openid_256.png new file mode 100644 index 00000000..dbe72330 Binary files /dev/null and b/spree_omniauth/app/assets/images/openid_256.png differ diff --git a/spree_omniauth/app/assets/images/openid_32.png b/spree_omniauth/app/assets/images/openid_32.png new file mode 100644 index 00000000..94ef7779 Binary files /dev/null and b/spree_omniauth/app/assets/images/openid_32.png differ diff --git a/spree_omniauth/app/assets/images/openid_64.png b/spree_omniauth/app/assets/images/openid_64.png new file mode 100644 index 00000000..21e2819a Binary files /dev/null and b/spree_omniauth/app/assets/images/openid_64.png differ diff --git a/spree_omniauth/app/assets/images/presently_128.png b/spree_omniauth/app/assets/images/presently_128.png new file mode 100644 index 00000000..f4acb7c2 Binary files /dev/null and b/spree_omniauth/app/assets/images/presently_128.png differ diff --git a/spree_omniauth/app/assets/images/presently_256.png b/spree_omniauth/app/assets/images/presently_256.png new file mode 100644 index 00000000..a3193d73 Binary files /dev/null and b/spree_omniauth/app/assets/images/presently_256.png differ diff --git a/spree_omniauth/app/assets/images/presently_32.png b/spree_omniauth/app/assets/images/presently_32.png new file mode 100644 index 00000000..a5c74456 Binary files /dev/null and b/spree_omniauth/app/assets/images/presently_32.png differ diff --git a/spree_omniauth/app/assets/images/presently_64.png b/spree_omniauth/app/assets/images/presently_64.png new file mode 100644 index 00000000..d7cf8163 Binary files /dev/null and b/spree_omniauth/app/assets/images/presently_64.png differ diff --git a/spree_omniauth/app/assets/images/twitter_128.png b/spree_omniauth/app/assets/images/twitter_128.png new file mode 100644 index 00000000..6403a67e Binary files /dev/null and b/spree_omniauth/app/assets/images/twitter_128.png differ diff --git a/spree_omniauth/app/assets/images/twitter_256.png b/spree_omniauth/app/assets/images/twitter_256.png new file mode 100644 index 00000000..b7ce4483 Binary files /dev/null and b/spree_omniauth/app/assets/images/twitter_256.png differ diff --git a/spree_omniauth/app/assets/images/twitter_32.png b/spree_omniauth/app/assets/images/twitter_32.png new file mode 100644 index 00000000..daadcffd Binary files /dev/null and b/spree_omniauth/app/assets/images/twitter_32.png differ diff --git a/spree_omniauth/app/assets/images/twitter_64.png b/spree_omniauth/app/assets/images/twitter_64.png new file mode 100644 index 00000000..68b74530 Binary files /dev/null and b/spree_omniauth/app/assets/images/twitter_64.png differ diff --git a/spree_omniauth/app/assets/images/vkontakte.png b/spree_omniauth/app/assets/images/vkontakte.png new file mode 100644 index 00000000..b484d09e Binary files /dev/null and b/spree_omniauth/app/assets/images/vkontakte.png differ diff --git a/spree_omniauth/app/assets/images/yahoo_128.png b/spree_omniauth/app/assets/images/yahoo_128.png new file mode 100644 index 00000000..c9adc814 Binary files /dev/null and b/spree_omniauth/app/assets/images/yahoo_128.png differ diff --git a/spree_omniauth/app/assets/images/yahoo_256.png b/spree_omniauth/app/assets/images/yahoo_256.png new file mode 100644 index 00000000..2688585b Binary files /dev/null and b/spree_omniauth/app/assets/images/yahoo_256.png differ diff --git a/spree_omniauth/app/assets/images/yahoo_32.png b/spree_omniauth/app/assets/images/yahoo_32.png new file mode 100644 index 00000000..7879a31e Binary files /dev/null and b/spree_omniauth/app/assets/images/yahoo_32.png differ diff --git a/spree_omniauth/app/assets/images/yahoo_64.png b/spree_omniauth/app/assets/images/yahoo_64.png new file mode 100644 index 00000000..64a703f1 Binary files /dev/null and b/spree_omniauth/app/assets/images/yahoo_64.png differ diff --git a/spree_omniauth/app/assets/javascripts/spree/backend/spree_omniauth.js b/spree_omniauth/app/assets/javascripts/spree/backend/spree_omniauth.js new file mode 100644 index 00000000..8aa3b014 --- /dev/null +++ b/spree_omniauth/app/assets/javascripts/spree/backend/spree_omniauth.js @@ -0,0 +1,2 @@ +// Placeholder manifest file. +// the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/backend/all.js' \ No newline at end of file diff --git a/spree_omniauth/app/assets/javascripts/spree/frontend/spree_omniauth.js b/spree_omniauth/app/assets/javascripts/spree/frontend/spree_omniauth.js new file mode 100644 index 00000000..a79f2e94 --- /dev/null +++ b/spree_omniauth/app/assets/javascripts/spree/frontend/spree_omniauth.js @@ -0,0 +1,2 @@ +// Placeholder manifest file. +// the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/frontend/all.js' \ No newline at end of file diff --git a/spree_omniauth/app/assets/stylesheets/spree/backend/spree_omniauth.css b/spree_omniauth/app/assets/stylesheets/spree/backend/spree_omniauth.css new file mode 100644 index 00000000..e3c23662 --- /dev/null +++ b/spree_omniauth/app/assets/stylesheets/spree/backend/spree_omniauth.css @@ -0,0 +1,4 @@ +/* +Placeholder manifest file. +the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/backend/all.css' +*/ diff --git a/spree_omniauth/app/assets/stylesheets/spree/frontend/spree_omniauth.css b/spree_omniauth/app/assets/stylesheets/spree/frontend/spree_omniauth.css new file mode 100644 index 00000000..da236237 --- /dev/null +++ b/spree_omniauth/app/assets/stylesheets/spree/frontend/spree_omniauth.css @@ -0,0 +1,4 @@ +/* +Placeholder manifest file. +the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/frontend/all.css' +*/ diff --git a/spree_omniauth/app/controllers/omniauth_callbacks_controller.rb b/spree_omniauth/app/controllers/omniauth_callbacks_controller.rb new file mode 100644 index 00000000..b312c9dd --- /dev/null +++ b/spree_omniauth/app/controllers/omniauth_callbacks_controller.rb @@ -0,0 +1,37 @@ +class OmniauthCallbacksController < Devise::OmniauthCallbacksController + + def facebook + # You need to implement the method below in your model (e.g. app/models/user.rb) + @user = User.from_omniauth(request.env["omniauth.auth"]) + + if @user.persisted? + sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated + set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format? + else + session["devise.facebook_data"] = request.env["omniauth.auth"] + redirect_to new_user_registration_url + end + end + + def failure + redirect_to root_path + end + + def callback + # 1. 寻找用户 uid + provider + # 2. 如果他没有那么创造和记录用户在O _码数据 + # 3. 为用户创造 session + auth = request.env['rack.auth'] + user = Spree::User.find_by_provider_and_uid(auth['provider'],auth['uid']) + if user.nil? + user = Spree::User.create_by_auth(auth) + end + @user_session = UserSession.new(user) + puts @user_session.save! + if @user_session + redirect_to '/', :notice => "Welcome, #{auth['user_info']['name']}" + else + redirect_to '/login', :alert => "Error login" + end + end +end diff --git a/spree_omniauth/app/controllers/spree/open/wechats_controller.rb b/spree_omniauth/app/controllers/spree/open/wechats_controller.rb new file mode 100644 index 00000000..99cf710a --- /dev/null +++ b/spree_omniauth/app/controllers/spree/open/wechats_controller.rb @@ -0,0 +1,37 @@ +module Spree::Open + class WechatsController < ActionController::Base + # For details on the DSL available within this file, see https://github.com/Eric-Guo/wechat#rails-responder-controller-dsl + wechat_responder + prepend_before_action :initialize_account + helper_method :wechat_oauth2 + #include Wechat::Responder + #self.wechat_cfg_account = opts[:account].present? ? opts[:account].to_sym : :default + #self.wechat_api_client = load_controller_wechat(wechat_cfg_account, opts) + + on :text do |request, content| + request.reply.text "echo: #{content}" # Just echo + end + + + def callback + # 1. 寻找用户 uid + provider + # 2. 如果他没有那么创造和记录用户在O _码数据 + # You need to implement the method below in your model (e.g. app/models/user.rb) + @user = Spree::User.from_omniauth(request.env["omniauth.auth"]||{}) + + if @user + sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated + set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format? + else + session["devise.wechat_data"] = request.env["omniauth.auth"] + redirect_to spree.signup_path + end + end + + private + def initialize_account + #self.wechat_api_client = load_controller_wechat(wechat_cfg_account, opts) + end + end + +end diff --git a/spree_omniauth/app/models/spree/decorators/user_decorator.rb b/spree_omniauth/app/models/spree/decorators/user_decorator.rb new file mode 100644 index 00000000..9f4dbe09 --- /dev/null +++ b/spree_omniauth/app/models/spree/decorators/user_decorator.rb @@ -0,0 +1,34 @@ +# each user can use different socialnetwork for same account +Spree::User.class_eval do + has_many :oauth_accounts + + #https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview + def self.from_omniauth(auth) + return nil unless auth.present? + find_by_auth( auth ) || create_by_auth( auth ) + end + + + # search user by provider and data + # in migration exist index + def self.find_by_auth( auth ) + self.joins(:oauth_accounts).where(:spree_oauth_accounts => {:provider => auth['provider'],:uid => auth['uid'] }).limit(1).first + end + + # + def self.create_by_auth( auth ) + + user = self.new + user.login = auth['user_info']['nickname'] + user.password = Devise.friendly_token[0,20] + + user.build_oauth_account( + :provider => auth['provider'], + :uid => auth['uid'], + :user_info => auth['user_info'], + :name => auth['user_info']['name'] + ) + user.save ? user : nil + + end +end diff --git a/spree_omniauth/app/models/spree/oauth_account.rb b/spree_omniauth/app/models/spree/oauth_account.rb new file mode 100644 index 00000000..0d4339c3 --- /dev/null +++ b/spree_omniauth/app/models/spree/oauth_account.rb @@ -0,0 +1,5 @@ +module Spree + class OauthAccount < ActiveRecord::Base + serialize :info, JSON + end +end diff --git a/spree_omniauth/app/overrides/social_auth.rb b/spree_omniauth/app/overrides/social_auth.rb new file mode 100644 index 00000000..00464a28 --- /dev/null +++ b/spree_omniauth/app/overrides/social_auth.rb @@ -0,0 +1,11 @@ +Deface::Override.new(:virtual_path => "spree/user_registerations/new", + :name => "insert social auth", + :insert_top => "[data-hook='login_extras']", + :partial => "shared/social_auth", + :original => '9545f08a85b960009d04d0d3d598ae331641077f') + +Deface::Override.new(:virtual_path => "spree/user_sessions/new", + :name => "insert social auth", + :insert_top => "[data-hook='login_extras']", + :partial => "shared/social_auth", + :original => '9545f08a85b960009d04d0d3d598ae331641077f') diff --git a/spree_omniauth/app/views/shared/_social_auth.html.erb b/spree_omniauth/app/views/shared/_social_auth.html.erb new file mode 100644 index 00000000..b499bc4a --- /dev/null +++ b/spree_omniauth/app/views/shared/_social_auth.html.erb @@ -0,0 +1,3 @@ +
    + <%= link_to image_tag('github_32.png'), wechat_oauth2_url %> +
    diff --git a/spree_omniauth/bin/rails b/spree_omniauth/bin/rails new file mode 100644 index 00000000..60a29738 --- /dev/null +++ b/spree_omniauth/bin/rails @@ -0,0 +1,7 @@ +# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. + +ENGINE_ROOT = File.expand_path('../..', __FILE__) +ENGINE_PATH = File.expand_path('../../lib/spree_omniauth/engine', __FILE__) + +require 'rails/all' +require 'rails/engine/commands' diff --git a/spree_omniauth/config/locales/en.yml b/spree_omniauth/config/locales/en.yml new file mode 100644 index 00000000..179c14ca --- /dev/null +++ b/spree_omniauth/config/locales/en.yml @@ -0,0 +1,5 @@ +# Sample localization file for English. Add more files in this directory for other locales. +# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +en: + hello: "Hello world" diff --git a/spree_omniauth/config/omniauth.rb b/spree_omniauth/config/omniauth.rb new file mode 100644 index 00000000..58c669a5 --- /dev/null +++ b/spree_omniauth/config/omniauth.rb @@ -0,0 +1,7 @@ +Rails.application.config.middleware.use OmniAuth::Builder do + #provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'] + provider :open_wechat, ENV['OPEN_WECHAT_KEY'], ENV['OPEN_WECHAT_SECRET'], :scope => 'snsapi_login' + + on_failure { |env| AuthenticationsController.action(:failure).call(env) } + +end diff --git a/spree_omniauth/config/routes.rb b/spree_omniauth/config/routes.rb new file mode 100644 index 00000000..11bf7361 --- /dev/null +++ b/spree_omniauth/config/routes.rb @@ -0,0 +1,13 @@ +Spree::Core::Engine.routes.draw do + namespace :open do + resource :wechat, only: [:show, :create] do + get "callback" + end + end + + # Add your extension routes here + # get "/auth/:provider/callback" => "sessions#create" + + get "/open/wechat/callback" => "wechats#callback" + +end diff --git a/spree_omniauth/config/wechat.yml b/spree_omniauth/config/wechat.yml new file mode 100644 index 00000000..9b3d2610 --- /dev/null +++ b/spree_omniauth/config/wechat.yml @@ -0,0 +1,72 @@ +default: &default +# corpid: "corpid" +# corpsecret: "corpsecret" +# agentid: 1 +# Or if using public account, only need above two line + appid: "wxe1e41bc95e1ffc98" + secret: "5ed88d0faa88ba705a31e650791c5d85" + token: "my_token" + #access_token: "tmp/wechat_access_token" + #encrypt_mode: false # if true must fill encoding_aes_key + #encoding_aes_key: "my_encoding_aes_key" + #jsapi_ticket: "tmp/wechat_jsapi_ticket" + +production: + corpid: <%= ENV['WECHAT_CORPID'] %> + corpsecret: <%= ENV['WECHAT_CORPSECRET'] %> + agentid: <%= ENV['WECHAT_AGENTID'] %> +# Or if using public account, only need above two line +# appid: +# secret: + token: <%= ENV['WECHAT_TOKEN'] %> + timeout: 30, + skip_verify_ssl: true + access_token: <%= ENV['WECHAT_ACCESS_TOKEN'] %> + encrypt_mode: false # if true must fill encoding_aes_key + encoding_aes_key: <%= ENV['WECHAT_ENCODING_AES_KEY'] %> + jsapi_ticket: <%= ENV['WECHAT_JSAPI_TICKET'] %> + oauth2_cookie_duration: <%= ENV['WECHAT_OAUTH2_COOKIE_DURATION'] %> # seconds + +development: + <<: *default + trusted_domain_fullname: "" + +test: + <<: *default + +# Multiple Accounts +# +# wx2_development: +# <<: *default +# appid: "my_appid" +# secret: "my_secret" +# access_token: "tmp/wechat_access_token2" +# jsapi_ticket: "tmp/wechat_jsapi_ticket2" +# +# wx2_test: +# <<: *default +# appid: "my_appid" +# secret: "my_secret" +# +# wx2_production: +# <<: *default +# appid: "my_appid" +# secret: "my_secret" +# +# wx3_development: +# <<: *default +# appid: "my_appid" +# secret: "my_secret" +# access_token: "tmp/wechat_access_token3" +# jsapi_ticket: "tmp/wechat_jsapi_ticket3" +# +# wx3_test: +# <<: *default +# appid: "my_appid" +# secret: "my_secret" +# +# wx3_production: +# <<: *default +# appid: "my_appid" +# secret: "my_secret" +# diff --git a/spree_omniauth/db/migrate/20151229135000_create_oauths.rb b/spree_omniauth/db/migrate/20151229135000_create_oauths.rb new file mode 100644 index 00000000..aeab6725 --- /dev/null +++ b/spree_omniauth/db/migrate/20151229135000_create_oauths.rb @@ -0,0 +1,18 @@ +class CreateOauths < ActiveRecord::Migration + def self.up + create_table :spree_oauth_accounts do |t| + t.string :provider, :nil => false + t.integer :uid, :nil => false + t.text :info + t.string :name + t.integer :user_id, null: false + t.timestamps null: false + end + add_index :spree_oauth_accounts, [:uid,:provider], :unique => true + add_index :spree_oauth_accounts, :user_id + end + + def self.down + drop_table :spree_oauth_accounts + end +end diff --git a/spree_omniauth/db/migrate/20160217045742_add_store_wx.rb b/spree_omniauth/db/migrate/20160217045742_add_store_wx.rb new file mode 100644 index 00000000..84f3bdde --- /dev/null +++ b/spree_omniauth/db/migrate/20160217045742_add_store_wx.rb @@ -0,0 +1,9 @@ +class AddStoreWx < ActiveRecord::Migration + # add feature store disignable + def change + add_column :spree_stores, :wx_appid, :string + add_column :spree_stores, :wx_secret, :string + add_column :spree_stores, :wx_token, :string + #add_column :spree_stores, :wx_corpid, :string + end +end diff --git a/spree_omniauth/lib/assets/images/aol_128.png b/spree_omniauth/lib/assets/images/aol_128.png new file mode 100644 index 00000000..391d32fa Binary files /dev/null and b/spree_omniauth/lib/assets/images/aol_128.png differ diff --git a/spree_omniauth/lib/assets/images/aol_256.png b/spree_omniauth/lib/assets/images/aol_256.png new file mode 100644 index 00000000..be9bb7c3 Binary files /dev/null and b/spree_omniauth/lib/assets/images/aol_256.png differ diff --git a/spree_omniauth/lib/assets/images/aol_32.png b/spree_omniauth/lib/assets/images/aol_32.png new file mode 100644 index 00000000..f50ebb56 Binary files /dev/null and b/spree_omniauth/lib/assets/images/aol_32.png differ diff --git a/spree_omniauth/lib/assets/images/aol_64.png b/spree_omniauth/lib/assets/images/aol_64.png new file mode 100644 index 00000000..64d6e5d9 Binary files /dev/null and b/spree_omniauth/lib/assets/images/aol_64.png differ diff --git a/spree_omniauth/lib/assets/images/basecamp_128.png b/spree_omniauth/lib/assets/images/basecamp_128.png new file mode 100644 index 00000000..20f4a349 Binary files /dev/null and b/spree_omniauth/lib/assets/images/basecamp_128.png differ diff --git a/spree_omniauth/lib/assets/images/basecamp_256.png b/spree_omniauth/lib/assets/images/basecamp_256.png new file mode 100644 index 00000000..a5d9c9fd Binary files /dev/null and b/spree_omniauth/lib/assets/images/basecamp_256.png differ diff --git a/spree_omniauth/lib/assets/images/basecamp_32.png b/spree_omniauth/lib/assets/images/basecamp_32.png new file mode 100644 index 00000000..d6ec05a7 Binary files /dev/null and b/spree_omniauth/lib/assets/images/basecamp_32.png differ diff --git a/spree_omniauth/lib/assets/images/basecamp_64.png b/spree_omniauth/lib/assets/images/basecamp_64.png new file mode 100644 index 00000000..30257784 Binary files /dev/null and b/spree_omniauth/lib/assets/images/basecamp_64.png differ diff --git a/spree_omniauth/lib/assets/images/campfire_128.png b/spree_omniauth/lib/assets/images/campfire_128.png new file mode 100644 index 00000000..826b7adb Binary files /dev/null and b/spree_omniauth/lib/assets/images/campfire_128.png differ diff --git a/spree_omniauth/lib/assets/images/campfire_256.png b/spree_omniauth/lib/assets/images/campfire_256.png new file mode 100644 index 00000000..317309d9 Binary files /dev/null and b/spree_omniauth/lib/assets/images/campfire_256.png differ diff --git a/spree_omniauth/lib/assets/images/campfire_32.png b/spree_omniauth/lib/assets/images/campfire_32.png new file mode 100644 index 00000000..e9cd71ef Binary files /dev/null and b/spree_omniauth/lib/assets/images/campfire_32.png differ diff --git a/spree_omniauth/lib/assets/images/campfire_64.png b/spree_omniauth/lib/assets/images/campfire_64.png new file mode 100644 index 00000000..5dd69f52 Binary files /dev/null and b/spree_omniauth/lib/assets/images/campfire_64.png differ diff --git a/spree_omniauth/lib/assets/images/facebook_128.png b/spree_omniauth/lib/assets/images/facebook_128.png new file mode 100644 index 00000000..3a04a89c Binary files /dev/null and b/spree_omniauth/lib/assets/images/facebook_128.png differ diff --git a/spree_omniauth/lib/assets/images/facebook_256.png b/spree_omniauth/lib/assets/images/facebook_256.png new file mode 100644 index 00000000..aac1cc0a Binary files /dev/null and b/spree_omniauth/lib/assets/images/facebook_256.png differ diff --git a/spree_omniauth/lib/assets/images/facebook_32.png b/spree_omniauth/lib/assets/images/facebook_32.png new file mode 100644 index 00000000..e8bca65f Binary files /dev/null and b/spree_omniauth/lib/assets/images/facebook_32.png differ diff --git a/spree_omniauth/lib/assets/images/facebook_64.png b/spree_omniauth/lib/assets/images/facebook_64.png new file mode 100644 index 00000000..c7a9d833 Binary files /dev/null and b/spree_omniauth/lib/assets/images/facebook_64.png differ diff --git a/spree_omniauth/lib/assets/images/github_128.png b/spree_omniauth/lib/assets/images/github_128.png new file mode 100644 index 00000000..15e02097 Binary files /dev/null and b/spree_omniauth/lib/assets/images/github_128.png differ diff --git a/spree_omniauth/lib/assets/images/github_256.png b/spree_omniauth/lib/assets/images/github_256.png new file mode 100644 index 00000000..b9136387 Binary files /dev/null and b/spree_omniauth/lib/assets/images/github_256.png differ diff --git a/spree_omniauth/lib/assets/images/github_32.png b/spree_omniauth/lib/assets/images/github_32.png new file mode 100644 index 00000000..247e52a5 Binary files /dev/null and b/spree_omniauth/lib/assets/images/github_32.png differ diff --git a/spree_omniauth/lib/assets/images/github_64.png b/spree_omniauth/lib/assets/images/github_64.png new file mode 100644 index 00000000..fca7bf44 Binary files /dev/null and b/spree_omniauth/lib/assets/images/github_64.png differ diff --git a/spree_omniauth/lib/assets/images/google_128.png b/spree_omniauth/lib/assets/images/google_128.png new file mode 100644 index 00000000..401000a1 Binary files /dev/null and b/spree_omniauth/lib/assets/images/google_128.png differ diff --git a/spree_omniauth/lib/assets/images/google_256.png b/spree_omniauth/lib/assets/images/google_256.png new file mode 100644 index 00000000..3f66b25f Binary files /dev/null and b/spree_omniauth/lib/assets/images/google_256.png differ diff --git a/spree_omniauth/lib/assets/images/google_32.png b/spree_omniauth/lib/assets/images/google_32.png new file mode 100644 index 00000000..3909e9de Binary files /dev/null and b/spree_omniauth/lib/assets/images/google_32.png differ diff --git a/spree_omniauth/lib/assets/images/google_64.png b/spree_omniauth/lib/assets/images/google_64.png new file mode 100644 index 00000000..e55f34f1 Binary files /dev/null and b/spree_omniauth/lib/assets/images/google_64.png differ diff --git a/spree_omniauth/lib/assets/images/linkedin_128.png b/spree_omniauth/lib/assets/images/linkedin_128.png new file mode 100644 index 00000000..bbc9f1ab Binary files /dev/null and b/spree_omniauth/lib/assets/images/linkedin_128.png differ diff --git a/spree_omniauth/lib/assets/images/linkedin_256.png b/spree_omniauth/lib/assets/images/linkedin_256.png new file mode 100644 index 00000000..2f14416b Binary files /dev/null and b/spree_omniauth/lib/assets/images/linkedin_256.png differ diff --git a/spree_omniauth/lib/assets/images/linkedin_32.png b/spree_omniauth/lib/assets/images/linkedin_32.png new file mode 100644 index 00000000..265828c9 Binary files /dev/null and b/spree_omniauth/lib/assets/images/linkedin_32.png differ diff --git a/spree_omniauth/lib/assets/images/linkedin_64.png b/spree_omniauth/lib/assets/images/linkedin_64.png new file mode 100644 index 00000000..a0163669 Binary files /dev/null and b/spree_omniauth/lib/assets/images/linkedin_64.png differ diff --git a/spree_omniauth/lib/assets/images/myspace_128.png b/spree_omniauth/lib/assets/images/myspace_128.png new file mode 100644 index 00000000..477c16b7 Binary files /dev/null and b/spree_omniauth/lib/assets/images/myspace_128.png differ diff --git a/spree_omniauth/lib/assets/images/myspace_256.png b/spree_omniauth/lib/assets/images/myspace_256.png new file mode 100644 index 00000000..e8f31cd8 Binary files /dev/null and b/spree_omniauth/lib/assets/images/myspace_256.png differ diff --git a/spree_omniauth/lib/assets/images/myspace_32.png b/spree_omniauth/lib/assets/images/myspace_32.png new file mode 100644 index 00000000..79b32f71 Binary files /dev/null and b/spree_omniauth/lib/assets/images/myspace_32.png differ diff --git a/spree_omniauth/lib/assets/images/myspace_64.png b/spree_omniauth/lib/assets/images/myspace_64.png new file mode 100644 index 00000000..88050fdd Binary files /dev/null and b/spree_omniauth/lib/assets/images/myspace_64.png differ diff --git a/spree_omniauth/lib/assets/images/openid_128.png b/spree_omniauth/lib/assets/images/openid_128.png new file mode 100644 index 00000000..26b9318b Binary files /dev/null and b/spree_omniauth/lib/assets/images/openid_128.png differ diff --git a/spree_omniauth/lib/assets/images/openid_256.png b/spree_omniauth/lib/assets/images/openid_256.png new file mode 100644 index 00000000..dbe72330 Binary files /dev/null and b/spree_omniauth/lib/assets/images/openid_256.png differ diff --git a/spree_omniauth/lib/assets/images/openid_32.png b/spree_omniauth/lib/assets/images/openid_32.png new file mode 100644 index 00000000..94ef7779 Binary files /dev/null and b/spree_omniauth/lib/assets/images/openid_32.png differ diff --git a/spree_omniauth/lib/assets/images/openid_64.png b/spree_omniauth/lib/assets/images/openid_64.png new file mode 100644 index 00000000..21e2819a Binary files /dev/null and b/spree_omniauth/lib/assets/images/openid_64.png differ diff --git a/spree_omniauth/lib/assets/images/presently_128.png b/spree_omniauth/lib/assets/images/presently_128.png new file mode 100644 index 00000000..f4acb7c2 Binary files /dev/null and b/spree_omniauth/lib/assets/images/presently_128.png differ diff --git a/spree_omniauth/lib/assets/images/presently_256.png b/spree_omniauth/lib/assets/images/presently_256.png new file mode 100644 index 00000000..a3193d73 Binary files /dev/null and b/spree_omniauth/lib/assets/images/presently_256.png differ diff --git a/spree_omniauth/lib/assets/images/presently_32.png b/spree_omniauth/lib/assets/images/presently_32.png new file mode 100644 index 00000000..a5c74456 Binary files /dev/null and b/spree_omniauth/lib/assets/images/presently_32.png differ diff --git a/spree_omniauth/lib/assets/images/presently_64.png b/spree_omniauth/lib/assets/images/presently_64.png new file mode 100644 index 00000000..d7cf8163 Binary files /dev/null and b/spree_omniauth/lib/assets/images/presently_64.png differ diff --git a/spree_omniauth/lib/assets/images/twitter_128.png b/spree_omniauth/lib/assets/images/twitter_128.png new file mode 100644 index 00000000..6403a67e Binary files /dev/null and b/spree_omniauth/lib/assets/images/twitter_128.png differ diff --git a/spree_omniauth/lib/assets/images/twitter_256.png b/spree_omniauth/lib/assets/images/twitter_256.png new file mode 100644 index 00000000..b7ce4483 Binary files /dev/null and b/spree_omniauth/lib/assets/images/twitter_256.png differ diff --git a/spree_omniauth/lib/assets/images/twitter_32.png b/spree_omniauth/lib/assets/images/twitter_32.png new file mode 100644 index 00000000..daadcffd Binary files /dev/null and b/spree_omniauth/lib/assets/images/twitter_32.png differ diff --git a/spree_omniauth/lib/assets/images/twitter_64.png b/spree_omniauth/lib/assets/images/twitter_64.png new file mode 100644 index 00000000..68b74530 Binary files /dev/null and b/spree_omniauth/lib/assets/images/twitter_64.png differ diff --git a/spree_omniauth/lib/assets/images/vkontakte.png b/spree_omniauth/lib/assets/images/vkontakte.png new file mode 100644 index 00000000..b484d09e Binary files /dev/null and b/spree_omniauth/lib/assets/images/vkontakte.png differ diff --git a/spree_omniauth/lib/assets/images/yahoo_128.png b/spree_omniauth/lib/assets/images/yahoo_128.png new file mode 100644 index 00000000..c9adc814 Binary files /dev/null and b/spree_omniauth/lib/assets/images/yahoo_128.png differ diff --git a/spree_omniauth/lib/assets/images/yahoo_256.png b/spree_omniauth/lib/assets/images/yahoo_256.png new file mode 100644 index 00000000..2688585b Binary files /dev/null and b/spree_omniauth/lib/assets/images/yahoo_256.png differ diff --git a/spree_omniauth/lib/assets/images/yahoo_32.png b/spree_omniauth/lib/assets/images/yahoo_32.png new file mode 100644 index 00000000..7879a31e Binary files /dev/null and b/spree_omniauth/lib/assets/images/yahoo_32.png differ diff --git a/spree_omniauth/lib/assets/images/yahoo_64.png b/spree_omniauth/lib/assets/images/yahoo_64.png new file mode 100644 index 00000000..64a703f1 Binary files /dev/null and b/spree_omniauth/lib/assets/images/yahoo_64.png differ diff --git a/spree_omniauth/lib/generators/spree_omniauth/install/install_generator.rb b/spree_omniauth/lib/generators/spree_omniauth/install/install_generator.rb new file mode 100644 index 00000000..d1c484a4 --- /dev/null +++ b/spree_omniauth/lib/generators/spree_omniauth/install/install_generator.rb @@ -0,0 +1,32 @@ +module SpreeOmniauth + module Generators + class InstallGenerator < Rails::Generators::Base + + class_option :auto_run_migrations, :type => :boolean, :default => false + + def add_javascripts + append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/spree_omniauth\n" + append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/spree_omniauth\n" + end + + def add_stylesheets + inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/spree_omniauth\n", :before => /\*\//, :verbose => true + inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/spree_omniauth\n", :before => /\*\//, :verbose => true + end + + def add_migrations + run 'bundle exec rake railties:install:migrations FROM=spree_omniauth' + end + + def run_migrations + run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]') + if run_migrations + run 'bundle exec rake db:migrate' + else + puts 'Skipping rake db:migrate, don\'t forget to run it!' + end + end + + end + end +end diff --git a/spree_omniauth/lib/generators/spree_omniauth/templates/spree_omniauth.rb b/spree_omniauth/lib/generators/spree_omniauth/templates/spree_omniauth.rb new file mode 100644 index 00000000..24117725 --- /dev/null +++ b/spree_omniauth/lib/generators/spree_omniauth/templates/spree_omniauth.rb @@ -0,0 +1,6 @@ +Rails.application.config.middleware.use OmniAuth::Builder do + provider :developer unless Rails.env.production? + #provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET'] +end + +OmniAuth.config.logger = Rails.logger diff --git a/spree_omniauth/lib/spree_omniauth.rb b/spree_omniauth/lib/spree_omniauth.rb new file mode 100644 index 00000000..18641b49 --- /dev/null +++ b/spree_omniauth/lib/spree_omniauth.rb @@ -0,0 +1,3 @@ +require 'spree_core' +require 'spree_omniauth/engine' +require 'spree_omniauth/system' diff --git a/spree_omniauth/lib/spree_omniauth/engine.rb b/spree_omniauth/lib/spree_omniauth/engine.rb new file mode 100644 index 00000000..1482f0b8 --- /dev/null +++ b/spree_omniauth/lib/spree_omniauth/engine.rb @@ -0,0 +1,25 @@ +module SpreeOmniauth + class Engine < Rails::Engine + require 'spree/core' + isolate_namespace Spree + engine_name 'spree_omniauth' + + # use rspec for tests + config.generators do |g| + g.test_framework :rspec + end + + def self.activate + Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c| + Rails.configuration.cache_classes ? require(c) : load(c) + end + end + + initializer "spree.assets.precompile", :group => :all do |app| + app.config.assets.precompile += %w( + github_32.png + ) + end + config.to_prepare &method(:activate).to_proc + end +end diff --git a/spree_omniauth/lib/spree_omniauth/factories.rb b/spree_omniauth/lib/spree_omniauth/factories.rb new file mode 100644 index 00000000..a7604a7a --- /dev/null +++ b/spree_omniauth/lib/spree_omniauth/factories.rb @@ -0,0 +1,6 @@ +FactoryGirl.define do + # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them. + # + # Example adding this to your spec_helper will load these Factories for use: + # require 'spree_omniauth/factories' +end diff --git a/spree_omniauth/lib/spree_omniauth/system.rb b/spree_omniauth/lib/spree_omniauth/system.rb new file mode 100644 index 00000000..a9f3aa41 --- /dev/null +++ b/spree_omniauth/lib/spree_omniauth/system.rb @@ -0,0 +1,34 @@ +require 'spree/core/controller_helpers/common' +# spree/api/base>action_base, spree/base>application +# both included controller_helper/store +class << Spree::Core::ControllerHelpers::Common + def included_with_omniauth_support(receiver) + included_without_omniauth_support(receiver) + receiver.send :include, SpreeOmniauth::System + receiver.send :wechat_api + receiver.send :prepend_before_action, :initialize_wechat_account + receiver.send :helper_method, :wechat_oauth2_url + + end + alias_method_chain :included, :omniauth_support +end + +module SpreeOmniauth + module System + def wechat_oauth2_url + oauth2_params = { + appid: Spree::Store.current.wx_appid, + redirect_uri: spree.open_wechat_callback_path, + scope: 'snsapi_login', + response_type: 'code' + } + generate_oauth2_url(oauth2_params) + end + + private + def initialize_wechat_account + Rails.logger.debug "initialize_wechat_account" + #self.wechat_api_client = load_controller_wechat(wechat_cfg_account, opts) + end + end +end diff --git a/spree_omniauth/spec/requests/echo_spec.rb b/spree_omniauth/spec/requests/echo_spec.rb new file mode 100644 index 00000000..0002a224 --- /dev/null +++ b/spree_omniauth/spec/requests/echo_spec.rb @@ -0,0 +1,22 @@ +require 'spec_helper' + +describe "Wechat", :type => :request do + + let( :wechat_config ) { + { + appid: "wxe1e41bc95e1ffc98", + secret: "5ed88d0faa88ba705a31e650791c5d85", + token: "my_token" + } + } + + + context "bind service" do + it "bind successfully" do + get '/open/wechat/callback', auth:{ provider: 'wechat', uid: 7, user_info:{ nickname: 'david', name: 'ZZ'}} + #Spree::Payment.last.should be_complete + end + end + + +end diff --git a/spree_omniauth/spec/spec_helper.rb b/spree_omniauth/spec/spec_helper.rb new file mode 100644 index 00000000..63537f6d --- /dev/null +++ b/spree_omniauth/spec/spec_helper.rb @@ -0,0 +1,93 @@ +# Run Coverage report +require 'simplecov' +SimpleCov.start do + add_filter 'spec/dummy' + add_group 'Controllers', 'app/controllers' + add_group 'Helpers', 'app/helpers' + add_group 'Mailers', 'app/mailers' + add_group 'Models', 'app/models' + add_group 'Views', 'app/views' + add_group 'Libraries', 'lib' +end + +# Configure Rails Environment +ENV['RAILS_ENV'] = 'test' + +require File.expand_path('../dummy/config/environment.rb', __FILE__) + +require 'rspec/rails' +require 'database_cleaner' +require 'ffaker' + +# Requires supporting ruby files with custom matchers and macros, etc, +# in spec/support/ and its subdirectories. +Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f } + +# Requires factories and other useful helpers defined in spree_core. +require 'spree/testing_support/authorization_helpers' +require 'spree/testing_support/capybara_ext' +require 'spree/testing_support/controller_requests' +require 'spree/testing_support/factories' +require 'spree/testing_support/url_helpers' + +# Requires factories defined in lib/spree_omniauth/factories.rb +require 'spree_omniauth/factories' + +RSpec.configure do |config| + config.include FactoryGirl::Syntax::Methods + + # Infer an example group's spec type from the file location. + config.infer_spec_type_from_file_location! + + # == URL Helpers + # + # Allows access to Spree's routes in specs: + # + # visit spree.admin_path + # current_path.should eql(spree.products_path) + config.include Spree::TestingSupport::UrlHelpers + + # == Requests support + # + # Adds convenient methods to request Spree's controllers + # spree_get :index + config.include Spree::TestingSupport::ControllerRequests, type: :controller + + # == Mock Framework + # + # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: + # + # config.mock_with :mocha + # config.mock_with :flexmock + # config.mock_with :rr + config.mock_with :rspec + config.color = true + + # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures + config.fixture_path = "#{::Rails.root}/spec/fixtures" + + # Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner + # to cleanup after each test instead. Without transactional fixtures set to false the records created + # to setup a test will be unavailable to the browser, which runs under a separate server instance. + config.use_transactional_fixtures = false + + # Ensure Suite is set to use transactions for speed. + config.before :suite do + DatabaseCleaner.strategy = :transaction + DatabaseCleaner.clean_with :truncation + end + + # Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary. + config.before :each do + DatabaseCleaner.strategy = RSpec.current_example.metadata[:js] ? :truncation : :transaction + DatabaseCleaner.start + end + + # After each spec clean the database. + config.after :each do + DatabaseCleaner.clean + end + + config.fail_fast = ENV['FAIL_FAST'] || false + config.order = "random" +end diff --git a/spree_omniauth/spree_omniauth.gemspec b/spree_omniauth/spree_omniauth.gemspec new file mode 100644 index 00000000..9d77de70 --- /dev/null +++ b/spree_omniauth/spree_omniauth.gemspec @@ -0,0 +1,32 @@ +# encoding: UTF-8 +Gem::Specification.new do |s| + s.platform = Gem::Platform::RUBY + s.name = 'spree_omniauth' + s.version = '3.1.0' + s.summary = 'spree auth by social networks' + s.description = 'spree auth by social networks. ex. wechat' + s.required_ruby_version = '>= 2.0.0' + + s.author = 'David' + s.email = 'david@getstore.cn' + s.homepage = 'http://www.spreecommerce.com' + + #s.files = `git ls-files`.split("\n") + #s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") + s.require_path = 'lib' + s.requirements << 'none' + + s.add_dependency 'spree_core' + s.add_dependency 'wechat' + + s.add_development_dependency 'capybara' + s.add_development_dependency 'coffee-rails' + s.add_development_dependency 'database_cleaner' + s.add_development_dependency 'factory_girl' + s.add_development_dependency 'ffaker' + s.add_development_dependency 'rspec-rails' + s.add_development_dependency 'sass-rails' + s.add_development_dependency 'selenium-webdriver' + s.add_development_dependency 'simplecov' + s.add_development_dependency 'sqlite3' +end diff --git a/spree_pingpp/.gitignore b/spree_pingpp/.gitignore new file mode 100644 index 00000000..a3fc71a1 --- /dev/null +++ b/spree_pingpp/.gitignore @@ -0,0 +1,36 @@ +*.rbc +capybara-*.html +.rspec +/log +/tmp +/db/*.sqlite3 +/db/*.sqlite3-journal +/public/system +/coverage/ +/spec/tmp +/spec/dummy +**.orig +rerun.txt +pickle-email-*.html + +# TODO Comment out these rules if you are OK with secrets being uploaded to the repo +config/initializers/secret_token.rb +config/secrets.yml + +## Environment normalisation: +/.bundle +/vendor/bundle + +# these should all be checked in to normalise the environment: +# Gemfile.lock, .ruby-version, .ruby-gemset + +# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: +.rvmrc + +# if using bower-rails ignore default bower_components path bower.json files +/vendor/assets/bower_components +*.bowerrc +bower.json + +# Ignore pow environment settings +.powenv diff --git a/spree_pingpp/Gemfile b/spree_pingpp/Gemfile new file mode 100644 index 00000000..4e3f60fb --- /dev/null +++ b/spree_pingpp/Gemfile @@ -0,0 +1,8 @@ +source 'https://rubygems.org' + +eval(File.read(File.dirname(__FILE__) + '/../common_spree_dependencies.rb')) + +gem 'pingpp', '~> 2.0.8' + + +gemspec diff --git a/spree_pingpp/LICENSE b/spree_pingpp/LICENSE new file mode 100644 index 00000000..84112151 --- /dev/null +++ b/spree_pingpp/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 RuanShan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/spree_pingpp/README.md b/spree_pingpp/README.md new file mode 100644 index 00000000..43421dbc --- /dev/null +++ b/spree_pingpp/README.md @@ -0,0 +1,51 @@ +SpreePingppHtml5 +================ + +Integrate pingpp-html5 into spree, +It is working in progress... + +Installation +------------ + +Add spree_pingpp to your Gemfile: + +```ruby +gem 'spree_pingpp' +``` + +Bundle your dependencies and run the installation generator: + +```shell +bundle +bundle exec rails g spree_pingpp:install +``` + +Testing +------- + +First bundle your dependencies, then run `rake`. `rake` will default to building the dummy app if it does not exist, then it will run specs. The dummy app can be regenerated by using `rake test_app`. + +```shell +bundle +bundle exec rake +``` + +When testing your applications integration with this extension you may use it's factories. +Simply add this require statement to your spec_helper: + +```ruby +require 'spree_pingpp/factories' +``` + +Related project +--------------- + +Spree https://github.com/spree/spree +PingPlusPlus https://github.com/PingPlusPlus + +Copyright (c) 2015 [name of extension creator], released under the New BSD License + + + + + diff --git a/spree_pingpp/Rakefile b/spree_pingpp/Rakefile new file mode 100644 index 00000000..e42ff482 --- /dev/null +++ b/spree_pingpp/Rakefile @@ -0,0 +1,21 @@ +require 'bundler' +Bundler::GemHelper.install_tasks + +require 'rspec/core/rake_task' +require 'spree/testing_support/extension_rake' + +RSpec::Core::RakeTask.new + +task :default do + if Dir["spec/dummy"].empty? + Rake::Task[:test_app].invoke + Dir.chdir("../../") + end + Rake::Task[:spec].invoke +end + +desc 'Generates a dummy app for testing' +task :test_app do + ENV['LIB_NAME'] = 'spree_pingpp' + Rake::Task['extension:test_app'].invoke +end diff --git a/spree_pingpp/app/assets/images/billing_integrations/pingpp/alipay_pc_direct.jpg b/spree_pingpp/app/assets/images/billing_integrations/pingpp/alipay_pc_direct.jpg new file mode 100644 index 00000000..e34d5d82 Binary files /dev/null and b/spree_pingpp/app/assets/images/billing_integrations/pingpp/alipay_pc_direct.jpg differ diff --git a/spree_pingpp/app/assets/images/billing_integrations/pingpp/alipay_wap.jpg b/spree_pingpp/app/assets/images/billing_integrations/pingpp/alipay_wap.jpg new file mode 100644 index 00000000..e34d5d82 Binary files /dev/null and b/spree_pingpp/app/assets/images/billing_integrations/pingpp/alipay_wap.jpg differ diff --git a/spree_pingpp/app/assets/images/billing_integrations/pingpp/upacp_pc.jpg b/spree_pingpp/app/assets/images/billing_integrations/pingpp/upacp_pc.jpg new file mode 100644 index 00000000..1254869a Binary files /dev/null and b/spree_pingpp/app/assets/images/billing_integrations/pingpp/upacp_pc.jpg differ diff --git a/spree_pingpp/app/assets/javascripts/pingpp-pc.js b/spree_pingpp/app/assets/javascripts/pingpp-pc.js new file mode 100644 index 00000000..98e08393 --- /dev/null +++ b/spree_pingpp/app/assets/javascripts/pingpp-pc.js @@ -0,0 +1,171 @@ +(function(){ +var + version = "2.0.7", + hasOwn = {}.hasOwnProperty, + PingppSDK = function(){}, + cfg = { + PINGPP_NOTIFY_URL: 'https://api.pingxx.com/notify/charges/', + PINGPP_MOCK_URL: 'http://sissi.pingxx.com/mock.php', + ALIPAY_PC_DIRECT_URL: 'https://mapi.alipay.com/gateway.do', + UPACP_PC_URL: 'https://gateway.95516.com/gateway/api/frontTransReq.do' + }, + channels = { + alipay_pc_direct: 'alipay_pc_direct', + upacp_pc: 'upacp_pc' + }; + +PingppSDK.prototype = { + + version: version, + + _resultCallback: undefined, + + _debug: false, + + createPayment: function(charge_json, callback, debug) { + if (typeof callback == "function") { + this._resultCallback = callback; + } + if (typeof debug == "boolean") { + this._debug = debug; + } + var charge; + if(typeof charge_json == "string"){ + try{ + charge = JSON.parse(charge_json); + }catch(err){ + this._innerCallback("fail", this._error("json_decode_fail")); + return; + } + }else{ + charge = charge_json; + } + if(typeof charge == "undefined"){ + this._innerCallback("fail", this._error("json_decode_fail")); + return; + } + if(!hasOwn.call(charge, 'id')){ + this._innerCallback("fail", this._error("invalid_charge", "no_charge_id")); + return; + } + if(!hasOwn.call(charge, 'channel')){ + this._innerCallback("fail", this._error("invalid_charge", "no_channel")); + return; + } + var channel = charge['channel']; + if(!hasOwn.call(charge, 'credential')){ + this._innerCallback("fail", this._error("invalid_charge", "no_credential")); + return; + } + if (!charge['credential']) { + this._innerCallback("fail", this._error("invalid_credential", "credential_is_undefined")); + return; + } + if (!hasOwn.call(channels, channel)) { + this._innerCallback("fail", this._error("invalid_charge", "no_such_channel:" + channel)); + return; + } + if (!hasOwn.call(charge['credential'], channel)) { + this._innerCallback("fail", this._error("invalid_credential", "no_valid_channel_credential")); + return; + } + if(!hasOwn.call(charge, 'livemode')){ + this._innerCallback("fail", this._error("invalid_charge", "no_livemode")); + return; + } + if (charge['livemode'] == false) { + this._testModeNotify(charge); + return; + } + var credential = charge['credential'][channel]; + if (channel == channels.upacp_pc) { + form_submit(cfg.UPACP_PC_URL, 'post', credential); + } else if (channel == channels.alipay_pc_direct) { + if (!hasOwn.call(credential, "_input_charset")) { + credential["_input_charset"] = 'utf-8'; + } + var query = stringify_data(credential, channel, true); + window.location.href = cfg.ALIPAY_PC_DIRECT_URL + "?" + query; + } + }, + + _error: function(msg, extra) { + msg = (typeof msg == "undefined") ? "" : msg; + extra = (typeof extra == "undefined") ? "" : extra; + return { + msg:msg, + extra:extra + }; + }, + + _innerCallback: function(result, err) { + if (typeof this._resultCallback == "function") { + if (typeof err == "undefined") { + err = this._error(); + } + this._resultCallback(result, err); + } + }, + + _testModeNotify: function(charge) { + var params = { + 'ch_id': charge['id'], + 'scheme': 'http', + 'channel': charge['channel'] + }; + if (hasOwn.call(charge, 'order_no')) { + params['order_no'] = charge['order_no']; + } else if (hasOwn.call(charge, 'orderNo')) { + params['order_no'] = charge['orderNo']; + } + if (hasOwn.call(charge, 'time_expire')) { + params['time_expire'] = charge['time_expire']; + } else if (hasOwn.call(charge, 'timeExpire')) { + params['time_expire'] = charge['timeExpire']; + } + if (hasOwn.call(charge, 'extra')) { + params['extra'] = encodeURIComponent(JSON.stringify(charge['extra'])); + } + location.href = cfg.PINGPP_MOCK_URL+'?'+stringify_data(params); + } +}; + +function form_submit(url, method, params) { + var form = document.createElement("form"); + form.setAttribute("method", method); + form.setAttribute("action", url); + + for (var key in params) { + if (hasOwn.call(params, key)) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("type", "hidden"); + hiddenField.setAttribute("name", key); + hiddenField.setAttribute("value", params[key]); + form.appendChild(hiddenField); + } + } + + document.body.appendChild(form); + form.submit(); +} + +function stringify_data(data, channel, urlencode) { + if (typeof urlencode == "undefined") { + urlencode = false; + } + var output = []; + for (var i in data) { + if (channel == "bfb_wap" && i == "url") { + continue; + } + if (channel == "yeepay_wap" && i == "mode") { + continue; + } + output.push(i + '=' + (urlencode ? encodeURIComponent(data[i]) : data[i])); + } + return output.join('&'); +} + +PingppSDK.prototype.payment = PingppSDK.prototype.createPayment; +window.pingppPc = new PingppSDK(); +})(); diff --git a/spree_pingpp/app/assets/javascripts/pingpp.js b/spree_pingpp/app/assets/javascripts/pingpp.js new file mode 100644 index 00000000..48ab1ac6 --- /dev/null +++ b/spree_pingpp/app/assets/javascripts/pingpp.js @@ -0,0 +1,322 @@ +(function(){ +var + version = "2.0.7", + hasOwn = {}.hasOwnProperty, + PingppSDK = function(){}, + cfg = { + PINGPP_NOTIFY_URL: 'https://api.pingxx.com/notify/charges/', + UPACP_WAP_URL: 'https://gateway.95516.com/gateway/api/frontTransReq.do', + ALIPAY_WAP_URL: 'http://wappaygw.alipay.com/service/rest.htm', + UPMP_WAP_URL: 'uppay://uppayservice/?style=token&paydata=', + JDPAY_WAP_URL: 'https://m.jdpay.com/wepay/web/pay', + YEEPAY_WAP_URL: 'https://ok.yeepay.com/paymobile/api/pay/request', + YEEPAY_WAP_TEST_URL: 'http://mobiletest.yeepay.com/paymobile/api/pay/request', + PINGPP_MOCK_URL: 'http://sissi.pingxx.com/mock.php' + }, + channels = { + alipay_wap: 'alipay_wap', + upmp_wap: 'upmp_wap', + upacp_wap: 'upacp_wap', + bfb_wap: 'bfb_wap', + wx_pub: 'wx_pub', + yeepay_wap: 'yeepay_wap', + jdpay_wap: 'jdpay_wap' + }; + +PingppSDK.prototype = { + + version: version, + + _resultCallback: undefined, + + _jsApiParameters: {}, + + _debug: false, + + _signature: undefined, + + createPayment: function(charge_json, callback, signature, debug) { + if (typeof callback == "function") { + this._resultCallback = callback; + } + if (typeof signature != "undefined") { + this._signature = signature; + } + if (typeof debug == "boolean") { + this._debug = debug; + } + var charge; + if(typeof charge_json == "string"){ + try{ + charge = JSON.parse(charge_json); + }catch(err){ + this._innerCallback("fail", this._error("json_decode_fail")); + return; + } + }else{ + charge = charge_json; + } + if(typeof charge == "undefined"){ + this._innerCallback("fail", this._error("json_decode_fail")); + return; + } + if(!hasOwn.call(charge, 'id')){ + this._innerCallback("fail", this._error("invalid_charge", "no_charge_id")); + return; + } + if(!hasOwn.call(charge, 'channel')){ + this._innerCallback("fail", this._error("invalid_charge", "no_channel")); + return; + } + var channel = charge['channel']; + if(!hasOwn.call(charge, 'credential')){ + this._innerCallback("fail", this._error("invalid_charge", "no_credential")); + return; + } + if (!charge['credential']) { + this._innerCallback("fail", this._error("invalid_credential", "credential_is_undefined")); + return; + } + if (!hasOwn.call(channels, channel)) { + this._innerCallback("fail", this._error("invalid_charge", "no_such_channel:" + channel)); + return; + } + if (!hasOwn.call(charge['credential'], channel)) { + this._innerCallback("fail", this._error("invalid_credential", "no_valid_channel_credential")); + return; + } + if(!hasOwn.call(charge, 'livemode')){ + this._innerCallback("fail", this._error("invalid_charge", "no_livemode")); + return; + } + if (charge['livemode'] == false) { + this._testModeNotify(charge); + return; + } + var credential = charge['credential'][channel]; + if (channel == channels.upmp_wap) { // 调起银联支付控件,客户端需要安装银联支付控件才能调起 + location.href = cfg.UPMP_WAP_URL + credential['paydata']; + } else if (channel == channels.upacp_wap) { + form_submit(cfg.UPACP_WAP_URL, 'post', credential); + } else if (channel == channels.alipay_wap) { // 调起支付宝手机网页支付 + credential['_input_charset'] = 'utf-8'; + if (typeof _AP != "undefined") { + var query = stringify_data(credential, channel, true); + _AP.pay(cfg.ALIPAY_WAP_URL + "?" + query); + } else { + form_submit(cfg.ALIPAY_WAP_URL, 'get', credential); + } + } else if (channel == channels.bfb_wap) { + if (!hasOwn.call(credential, 'url')) { + this._innerCallback("fail", this._error("invalid_credential", "missing_field:url")); + return; + } + location.href = credential['url'] + '?' + stringify_data(credential, channel); + } else if (channel == channels.yeepay_wap) { + var fields = ["merchantaccount", "encryptkey", "data"]; + for (var k = 0; k < fields.length; k++) { + if(!hasOwn.call(credential, fields[k])){ + this._innerCallback("fail", this._error("invalid_credential", "missing_field_"+fields[k])); + return; + } + } + if (hasOwn.call(credential, "mode") && credential["mode"] == "test") { + location.href = cfg.YEEPAY_WAP_TEST_URL + '?' + stringify_data(credential, channel, true); + } else { + location.href = cfg.YEEPAY_WAP_URL + '?' + stringify_data(credential, channel, true); + } + } else if (channel == channels.wx_pub) { + var fields = ["appId", "timeStamp", "nonceStr", "package", "signType", "paySign"]; + for (var k = 0; k < fields.length; k++) { + if (!hasOwn.call(credential, fields[k])) { + this._innerCallback("fail", this._error("invalid_credential", "missing_field_"+fields[k])); + return; + } + } + this._jsApiParameters = credential; + this._callpay(); + } else if (channel == channels.jdpay_wap) { + form_submit(cfg.JDPAY_WAP_URL, 'post', credential); + } + }, + + _jsApiCall: function(){ + var self = this; + if(self._jsApiParameters != {}){ + WeixinJSBridge.invoke( + 'getBrandWCPayRequest', + self._jsApiParameters, + function(res){ + if(res.err_msg == 'get_brand_wcpay_request:ok'){ + self._innerCallback("success"); + }else if(res.err_msg == 'get_brand_wcpay_request:cancel'){ + self._innerCallback("cancel"); + }else{ + self._innerCallback("fail", self._error("wx_result_fail", res.err_msg)); + } + } + ); + } + }, + + _callpay: function(){ + var self = this; + if (typeof wx != "undefined" && typeof self._signature != "undefined") { + var wxConfigFailed = false; + wx.config({ + debug: self._debug, + appId: self._jsApiParameters["appId"], + timestamp: self._jsApiParameters["timeStamp"], + nonceStr: self._jsApiParameters["nonceStr"], + signature: self._signature, + jsApiList: ['chooseWXPay'] + }); + wx.ready(function(){ + if (wxConfigFailed) { + return; + } + wx.chooseWXPay({ + timestamp: self._jsApiParameters["timeStamp"], + nonceStr: self._jsApiParameters["nonceStr"], + "package": self._jsApiParameters["package"], + signType: self._jsApiParameters["signType"], + paySign: self._jsApiParameters["paySign"], + success: function(res) { + if (res.errMsg == "chooseWXPay:ok") { + self._innerCallback("success"); + } else { + self._innerCallback("fail", self._error("wx_result_fail", res.errMsg)); + } + }, + cancel: function(res) { + self._innerCallback("cancel"); + }, + fail: function(res) { + self._innerCallback("fail", self._error("wx_result_fail", res.errMsg)); + } + }); + }); + wx.error(function(res){ + wxConfigFailed = true; + self._innerCallback("fail", self._error("wx_config_error", res.errMsg)); + }); + } else if (typeof WeixinJSBridge == "undefined") { + function eventCallback(){ + self._jsApiCall(); + } + if (document.addEventListener) { + document.addEventListener('WeixinJSBridgeReady', eventCallback, false); + } else if(document.attachEvent) { + document.attachEvent('WeixinJSBridgeReady', eventCallback); + document.attachEvent('onWeixinJSBridgeReady', eventCallback); + } + }else{ + this._jsApiCall(); + } + }, + + _error: function(msg, extra) { + msg = (typeof msg == "undefined") ? "" : msg; + extra = (typeof extra == "undefined") ? "" : extra; + return { + msg:msg, + extra:extra + }; + }, + + _innerCallback: function(result, err) { + if (typeof this._resultCallback == "function") { + if (typeof err == "undefined") { + err = this._error(); + } + this._resultCallback(result, err); + } + }, + + _testModeNotify: function(charge) { + var self = this; + if (charge['channel'] == channels.wx_pub) { + var dopay = confirm("模拟付款?"); + if (dopay) { + var request = new XMLHttpRequest(); + request.open('GET', cfg.PINGPP_NOTIFY_URL+charge['id']+'?livemode=false', true); + request.onload = function() { + if (request.status >= 200 && request.status < 400 && request.responseText == "success"){ + self._innerCallback("success"); + } else { + var extra = 'http_code:'+request.status+';response:'+request.responseText; + self._innerCallback("fail", self._error("testmode_notify_fail", extra)); + } + }; + request.onerror = function() { + self._innerCallback("fail", self._error("network_err")); + }; + request.send(); + } else { + self._innerCallback("cancel"); + } + } else { + var params = { + 'ch_id': charge['id'], + 'scheme': 'http', + 'channel': charge['channel'] + }; + if (hasOwn.call(charge, 'order_no')) { + params['order_no'] = charge['order_no']; + } else if (hasOwn.call(charge, 'orderNo')) { + params['order_no'] = charge['orderNo']; + } + if (hasOwn.call(charge, 'time_expire')) { + params['time_expire'] = charge['time_expire']; + } else if (hasOwn.call(charge, 'timeExpire')) { + params['time_expire'] = charge['timeExpire']; + } + if (hasOwn.call(charge, 'extra')) { + params['extra'] = encodeURIComponent(JSON.stringify(charge['extra'])); + } + location.href = cfg.PINGPP_MOCK_URL+'?'+stringify_data(params); + } + } +}; + +function form_submit(url, method, params) { + var form = document.createElement("form"); + form.setAttribute("method", method); + form.setAttribute("action", url); + + for (var key in params) { + if (hasOwn.call(params, key)) { + var hiddenField = document.createElement("input"); + hiddenField.setAttribute("type", "hidden"); + hiddenField.setAttribute("name", key); + hiddenField.setAttribute("value", params[key]); + form.appendChild(hiddenField); + } + } + + document.body.appendChild(form); + form.submit(); +} + +function stringify_data(data, channel, urlencode) { + if (typeof urlencode == "undefined") { + urlencode = false; + } + var output = []; + for (var i in data) { + if (channel == "bfb_wap" && i == "url") { + continue; + } + if (channel == "yeepay_wap" && i == "mode") { + continue; + } + output.push(i + '=' + (urlencode ? encodeURIComponent(data[i]) : data[i])); + } + return output.join('&'); +} + +PingppSDK.prototype.payment = PingppSDK.prototype.createPayment; +window.pingpp = new PingppSDK(); +// aliases +window.PINGPP_PAY_SDK = window.PINGPP_WX_PUB = window.pingpp; +})(); diff --git a/spree_pingpp/app/assets/javascripts/spree/backend/spree_pingpp.js b/spree_pingpp/app/assets/javascripts/spree/backend/spree_pingpp.js new file mode 100644 index 00000000..8aa3b014 --- /dev/null +++ b/spree_pingpp/app/assets/javascripts/spree/backend/spree_pingpp.js @@ -0,0 +1,2 @@ +// Placeholder manifest file. +// the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/backend/all.js' \ No newline at end of file diff --git a/spree_pingpp/app/assets/javascripts/spree/frontend/spree_pingpp.js b/spree_pingpp/app/assets/javascripts/spree/frontend/spree_pingpp.js new file mode 100644 index 00000000..f116f26c --- /dev/null +++ b/spree_pingpp/app/assets/javascripts/spree/frontend/spree_pingpp.js @@ -0,0 +1,2 @@ +//= require 'pingpp-pc' +//= require 'pingpp' diff --git a/spree_pingpp/app/assets/stylesheets/spree/backend/spree_pingpp.css b/spree_pingpp/app/assets/stylesheets/spree/backend/spree_pingpp.css new file mode 100644 index 00000000..e3c23662 --- /dev/null +++ b/spree_pingpp/app/assets/stylesheets/spree/backend/spree_pingpp.css @@ -0,0 +1,4 @@ +/* +Placeholder manifest file. +the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/backend/all.css' +*/ diff --git a/spree_pingpp/app/assets/stylesheets/spree/frontend/spree_pingpp.css b/spree_pingpp/app/assets/stylesheets/spree/frontend/spree_pingpp.css new file mode 100644 index 00000000..da236237 --- /dev/null +++ b/spree_pingpp/app/assets/stylesheets/spree/frontend/spree_pingpp.css @@ -0,0 +1,4 @@ +/* +Placeholder manifest file. +the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/frontend/all.css' +*/ diff --git a/spree_pingpp/app/controllers/spree/checkout_controller_decorator.rb b/spree_pingpp/app/controllers/spree/checkout_controller_decorator.rb new file mode 100644 index 00000000..3661eec1 --- /dev/null +++ b/spree_pingpp/app/controllers/spree/checkout_controller_decorator.rb @@ -0,0 +1,49 @@ +#encoding: utf-8 +module Spree + CheckoutController.class_eval do + before_action :payment_pingpp_hook + skip_before_action :payment_pingpp_hook, except: [:update] + + def payment_pingpp_hook + @pingpp_base_class = Spree::Gateway::PingppBase + return unless @order.next_step_complete? + #in confirm step, only param is {"state"=>"confirm"} + payment_method = get_payment_method_by_params( ) + if payment_method.kind_of?( @pingpp_base_class ) + handle_pingpp( payment_method ) and return + end + end + + # handle all supported billing_integration + def handle_pingpp( payment_method ) + if @order.update_from_params( params, permitted_checkout_attributes, request.headers.env ) + pingpp_channel = params['payment_pingpp'][payment_method.id.to_s] + #more flow detail + #https://pingxx.com/guidance/products/sdk + payment_provider = payment_method.provider + #test with host 127.0.0.1 instead localhost, or get invalid url http://localhost:3000/... + #order_path( order, :only_path => false ) + begin + @charge = payment_provider.create_charge( @order, pingpp_channel, spree.pingpp_charge_done_url ) + #redirect_to payment_provider.get_payment_url( charge ) + #render json: charge + # since compiled template_theme is method, :yield do not work any more. + render :payment_pingpp_dispatch, layout: 'layout_for_pingpp' + rescue Pingpp::PingppError => error + Rails.logger.error error + redirect_to checkout_state_path( @order.state ) + end + else + render( :edit ) + end + end + + private + + def get_payment_method_by_params + payment_method_id = params[:order].try(:[],:payments_attributes).try(:first).try(:[],:payment_method_id).to_i + Spree::PaymentMethod.find_by_id(payment_method_id) + end + + end +end diff --git a/spree_pingpp/app/controllers/spree/pingpp_status_controller.rb b/spree_pingpp/app/controllers/spree/pingpp_status_controller.rb new file mode 100644 index 00000000..a0701c44 --- /dev/null +++ b/spree_pingpp/app/controllers/spree/pingpp_status_controller.rb @@ -0,0 +1,61 @@ +#inspired by https://github.com/spree-contrib/spree_skrill +module Spree + class PingppStatusController < StoreController + include Gateway::PingppHelper + + #fixes Action::Controller::InvalidAuthenticityToken error on alipay_notify + skip_before_action :verify_authenticity_token + + # success url + def charge_done + #alipay, get, "result"=>"success", "out_trade_no"=>"R677576938" + #upacp_pc, post, "orderId"=>"R677576938", "respMsg"=>"success" + order = retrieve_order + # get charge from server, notify message may be delay + unless order.complete? + payment_method = order.payments.last.payment_method + if payment_method.kind_of? Gateway::PingppBase + charge = payment_method.provider.retrieve_charge( order ) + if charge['paid'] + order.reload + end + end + end + if order.complete? + redirect_to spree.order_path( order ) + else + redirect_to checkout_state_path(order.state) + end + end + + def charge_notify + begin + event = JSON.parse( request.raw_post ) + response_status, response_body = Gateway::PingppEventHandler.new( event ).perform + rescue JSON::ParserError + response_body = 'JSON 解析失败' + end + render plain: response_body, status: response_status, content_type: 'text/plain; charset=utf-8' + end + + def test_charge_notify + begin + event = JSON.parse( request.raw_post ) + response_status, response_body = Gateway::PingppEventHandler.new( event ).perform + rescue JSON::ParserError + response_body = 'JSON 解析失败' + end + render plain: response_body, status: response_status, content_type: 'text/plain; charset=utf-8' + end + + + private + + def retrieve_order() + order_number = ( params["orderId"] || params["out_trade_no"] ) + # channel alipay_wap cannel_url is charge_done, order_number maybe nil in that case. + Spree::Order.find_by_number(order_number) || current_order + end + + end +end diff --git a/spree_pingpp/app/models/spree/gateway/pingpp_base.rb b/spree_pingpp/app/models/spree/gateway/pingpp_base.rb new file mode 100644 index 00000000..20c813b0 --- /dev/null +++ b/spree_pingpp/app/models/spree/gateway/pingpp_base.rb @@ -0,0 +1,29 @@ +require "pingpp" +module Spree + class Gateway::PingppBase < PaymentMethod + preference :api_key, :string + preference :app_key, :string + preference :channels, :string + #Pingpp.api_key = "YOUR-KEY" + + delegate :purchase, to: :provider + + def provider_class + Gateway::PingppProvider + end + + def provider + provider_class.new( self ) + end + + # it is required to make payment completed. + def source_required? + true + end + + def available_channels + self.preferred_channels.try(:split, ',') || [] + end + + end +end diff --git a/spree_pingpp/app/models/spree/gateway/pingpp_event_handler.rb b/spree_pingpp/app/models/spree/gateway/pingpp_event_handler.rb new file mode 100644 index 00000000..52ac8713 --- /dev/null +++ b/spree_pingpp/app/models/spree/gateway/pingpp_event_handler.rb @@ -0,0 +1,39 @@ +require "pingpp" +module Spree + class Gateway::PingppEventHandler + include Gateway::PingppHelper + + attr_accessor :event, :response_body, :status + def initialize( event ) + self.event = event + status = 400 + response_body = '' # 可自定义 + end + + def perform + if event['type'].nil? + response_body = 'missing Event type' + elsif event['type'] == 'charge.succeeded' + charge_succeeded + elsif event['object'] == 'refund.succeeded' + # 开发者在此处加入对退款异步通知的处理代码 + status = 200 + response_body = 'OK' + else + response_body = 'unkonwn Event type' + end + return status, response_body + end + + def charge_succeeded + charge = event['data']['object'] + order = get_order_by_charge charge + if order + complete_order order + end + self.status = 200 + self.response_body = 'OK' + end + + end +end diff --git a/spree_pingpp/app/models/spree/gateway/pingpp_helper.rb b/spree_pingpp/app/models/spree/gateway/pingpp_helper.rb new file mode 100644 index 00000000..ba9664dc --- /dev/null +++ b/spree_pingpp/app/models/spree/gateway/pingpp_helper.rb @@ -0,0 +1,22 @@ +module Spree + # helpers + module Gateway::PingppHelper + + def get_order_by_charge( charge ) + Spree::Order.find_by_number( charge['order_no'] ) + end + + def get_payment_by_order( order ) + order.payments.last + end + + def complete_order( order ) + order.next + end + + def get_order_by_gateway_options( gateway_options ) + gateway_order_id = gateway_options[:order_id] + end + + end +end diff --git a/spree_pingpp/app/models/spree/gateway/pingpp_mobile.rb b/spree_pingpp/app/models/spree/gateway/pingpp_mobile.rb new file mode 100644 index 00000000..f65f641b --- /dev/null +++ b/spree_pingpp/app/models/spree/gateway/pingpp_mobile.rb @@ -0,0 +1,10 @@ +require "pingpp" +module Spree + class Gateway::PingppMobile < Gateway::PingppBase + + def auto_capture? + true + end + + end +end diff --git a/spree_pingpp/app/models/spree/gateway/pingpp_pc.rb b/spree_pingpp/app/models/spree/gateway/pingpp_pc.rb new file mode 100644 index 00000000..068db929 --- /dev/null +++ b/spree_pingpp/app/models/spree/gateway/pingpp_pc.rb @@ -0,0 +1,11 @@ +require "pingpp" +module Spree + class Gateway::PingppPc < Gateway::PingppBase + + def auto_capture? + true + end + + + end +end diff --git a/spree_pingpp/app/models/spree/gateway/pingpp_provider.rb b/spree_pingpp/app/models/spree/gateway/pingpp_provider.rb new file mode 100644 index 00000000..b60d546d --- /dev/null +++ b/spree_pingpp/app/models/spree/gateway/pingpp_provider.rb @@ -0,0 +1,132 @@ +require "pingpp" +module Spree + class Gateway::PingppProvider + include Gateway::PingppHelper + #PINGPP_NOTIFY_URL = 'https://api.pingxx.com/notify/charges/', + #PINGPP_MOCK_URL = 'http://sissi.pingxx.com/mock.php', + #ALIPAY_PC_DIRECT_URL = 'https://mapi.alipay.com/gateway.do', + #UPACP_PC_URL = 'https://gateway.95516.com/gateway/api/frontTransReq.do' + + PingppPcChannelEnum = Struct.new( :alipay_pc_direct, :upacp_pc )[ 'alipay_pc_direct', 'upacp_pc' ] + PingppWapChannelEnum = Struct.new( :alipay_wap, :upacp_wap )[ 'alipay_wap', 'upacp_wap'] + attr_accessor :payment_method + + def initialize( payment_method ) + self.payment_method = payment_method + setup_api_key( payment_method.preferred_api_key ) + end + + def setup_api_key( key ) + Pingpp.api_key = key + end + + def create_charge( order, channel, success_url ) + channel ||= PingppPcChannelEnum.alipay_pc_direct + product_names = order.products.pluck(:name) + + params = { + :order_no => order.number, + :amount => (order.total * 100).to_i, # in cent + :subject => product_names.join(',').truncate(128), + :body => product_names.join(',').truncate(500), #String(400) + :channel => channel, + :currency => "cny", + :client_ip=> order.last_ip_address, + :app => { :id => payment_method.preferred_app_key }, + } + extra_alipay_params= { + :extra => { + # alipay + :success_url => success_url # + } + } + extra_alipay_wap_params= { + :extra => { + # alipay + :cancel_url => success_url, + :success_url => success_url # + } + } + extra_upacp_params= { + :extra => { + # upacp + :result_url => success_url # + } + } + + case channel + when PingppPcChannelEnum.alipay_pc_direct + params.merge! extra_alipay_params + when PingppPcChannelEnum.upacp_pc + params.merge! extra_upacp_params + when PingppWapChannelEnum.alipay_wap + params.merge! extra_alipay_wap_params + when PingppWapChannelEnum.upacp_wap + params.merge! extra_upacp_params + end + charge = Pingpp::Charge.create( params ) + # store charge "id": "ch_Hm5uTSifDOuTy9iLeLPSurrD", + payment = get_payment_by_order( order ) + payment.update_attribute( :response_code, charge['id'] ) + + charge + end + + def retrieve_charge( order ) + payment = get_payment_by_order( order ) + charge = Pingpp::Charge.retrieve( payment.response_code ) + end + + #def get_payment_url( charge ) + # channel = charge['channel']; + # raise "no_such_channel: #{channel}" unless PingppPcChannelEnum.values.include? channel + # raise "no_credential" unless charge['credential'].present? + # raise "no_valid_channel_credential" unless charge['credential'][channel].present? + # if charge['livemode'] == false + # return test_mode_notify_url(charge); + # end + # credential = charge['credential'][channel]; + # if channel == PingppPcChannelEnum.upacp_pc + # form_submit(cfg.UPACP_PC_URL, 'post', credential); + # elsif channel == PingppPcChannelEnum.alipay_pc_direct + # credential["_input_charset"] = 'utf-8'; + # ALIPAY_PC_DIRECT_URL + "?" + credential.to_param; + # end + #end + + #def test_mode_notify_url(charge) + # params = { ch_id: charge['id'], scheme: 'http', channel: charge['channel'] } + # if charge['order_no'] + # params['order_no'] = charge['order_no'] + # elsif charge['orderNo'] + # params['order_no'] = charge['orderNo'] + # end + # if charge['time_expire'] + # params['time_expire'] = charge['time_expire'] + # elsif charge['timeExpire'] + # params['time_expire'] = charge['timeExpire'] + # end + # if charge['extra'] + # params['extra'] = charge['extra'].to_json + # end + # PINGPP_MOCK_URL+'?'+ params.to_param + #end + + + def cancel( order ) + Pingpp::Charge.retrieve("CHARGE_ID").refunds.create(:description => "Refund Description") + end + + # * description - before order transition to: :complete + # * call spree/payment#gateway_action + # * params + # * options - gateway_options + # * return - pingpp_response + def purchase(money, credit_card, options = {}) + # since pingpp is offsite payment, this method is placehodler only. + # in this way, we could go through spree payment process. + return Gateway::PingppResponse.new + end + + end +end diff --git a/spree_pingpp/app/models/spree/gateway/pingpp_response.rb b/spree_pingpp/app/models/spree/gateway/pingpp_response.rb new file mode 100644 index 00000000..71cc49a0 --- /dev/null +++ b/spree_pingpp/app/models/spree/gateway/pingpp_response.rb @@ -0,0 +1,9 @@ +module Spree + class Gateway::PingppResponse + attr_accessor :authorization + + def success? + true + end + end +end diff --git a/spree_pingpp/app/models/spree/order_decorator.rb b/spree_pingpp/app/models/spree/order_decorator.rb new file mode 100644 index 00000000..ac455af4 --- /dev/null +++ b/spree_pingpp/app/models/spree/order_decorator.rb @@ -0,0 +1,8 @@ +Spree::Order.class_eval do + + def next_step_complete? + available_steps = checkout_steps + available_steps[ available_steps.index( self.state ).succ ] == 'complete' + end + +end diff --git a/spree_pingpp/app/models/spree/payment_decorator.rb b/spree_pingpp/app/models/spree/payment_decorator.rb new file mode 100644 index 00000000..7c1bccd9 --- /dev/null +++ b/spree_pingpp/app/models/spree/payment_decorator.rb @@ -0,0 +1,26 @@ +Spree::Payment.class_eval do + # order/payments, payment/processing + # order.process_payments! => payment.process! => handle_payment_preconditions { process_purchase } + def handle_payment_preconditions(&block) + unless block_given? + raise ArgumentError.new("handle_payment_preconditions must be called with a block") + end + + if payment_method && payment_method.source_required? + if source + if !processing? + if payment_method.supports?(source) || token_based? + yield + else + invalidate! + raise Core::GatewayError.new(Spree.t(:payment_method_not_supported)) + end + end + elsif payment_method.kind_of? Spree::Gateway::PingppBase + yield + else + raise Core::GatewayError.new(Spree.t(:payment_processing_failed)) + end + end + end +end diff --git a/spree_pingpp/app/views/layouts/layout_for_pingpp.html.erb b/spree_pingpp/app/views/layouts/layout_for_pingpp.html.erb new file mode 100644 index 00000000..396cc0aa --- /dev/null +++ b/spree_pingpp/app/views/layouts/layout_for_pingpp.html.erb @@ -0,0 +1,17 @@ + + + + + + + + <%= javascript_include_tag 'spree/frontend/spree_pingpp' %> + + +
    +
    + <%= yield %> +
    +
    + + diff --git a/spree_pingpp/app/views/spree/checkout/payment/_pingppmobile.html.erb b/spree_pingpp/app/views/spree/checkout/payment/_pingppmobile.html.erb new file mode 100644 index 00000000..61a6fdfc --- /dev/null +++ b/spree_pingpp/app/views/spree/checkout/payment/_pingppmobile.html.erb @@ -0,0 +1,5 @@ + +<% payment_method.available_channels.each_with_index{|channel, i| %> + <%= hidden_field_tag "payment_pingpp[#{payment_method.id}]", channel %> + <%= image_tag "billing_integrations/pingpp/#{channel}.jpg", alt: Spree.t( "pingpp_channel.#{channel}") %> +<% } %> diff --git a/spree_pingpp/app/views/spree/checkout/payment/_pingpppc.html.erb b/spree_pingpp/app/views/spree/checkout/payment/_pingpppc.html.erb new file mode 100644 index 00000000..61a6fdfc --- /dev/null +++ b/spree_pingpp/app/views/spree/checkout/payment/_pingpppc.html.erb @@ -0,0 +1,5 @@ + +<% payment_method.available_channels.each_with_index{|channel, i| %> + <%= hidden_field_tag "payment_pingpp[#{payment_method.id}]", channel %> + <%= image_tag "billing_integrations/pingpp/#{channel}.jpg", alt: Spree.t( "pingpp_channel.#{channel}") %> +<% } %> diff --git a/spree_pingpp/app/views/spree/checkout/payment_pingpp_dispatch.html.erb b/spree_pingpp/app/views/spree/checkout/payment_pingpp_dispatch.html.erb new file mode 100644 index 00000000..10b10cd6 --- /dev/null +++ b/spree_pingpp/app/views/spree/checkout/payment_pingpp_dispatch.html.erb @@ -0,0 +1,20 @@ + +<% +pingpp_object_name = ( Spree::Gateway::PingppProvider::PingppPcChannelEnum.values.include?( @charge['channel'] ) ? 'pingppPc' : 'pingpp' ) +%> + +
    +

    Payment page loading

    +
    +<%= javascript_tag defer: 'defer' do -%> +<%= pingpp_object_name%>.createPayment( <%== @charge.to_json %>, function(result, err){ + if( result == "success" ){ + + }else if(result == "fail" ){ + alert(err) + }else if( result == "cancel" ){ + alert(err) + } + +} ) +<% end %> diff --git a/spree_pingpp/bin/rails b/spree_pingpp/bin/rails new file mode 100644 index 00000000..e5539d0f --- /dev/null +++ b/spree_pingpp/bin/rails @@ -0,0 +1,7 @@ +# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. + +ENGINE_ROOT = File.expand_path('../..', __FILE__) +ENGINE_PATH = File.expand_path('../../lib/spree_pingpp/engine', __FILE__) + +require 'rails/all' +require 'rails/engine/commands' diff --git a/spree_pingpp/config/locales/en.yml b/spree_pingpp/config/locales/en.yml new file mode 100644 index 00000000..36a26416 --- /dev/null +++ b/spree_pingpp/config/locales/en.yml @@ -0,0 +1,10 @@ +# Sample localization file for English. Add more files in this directory for other locales. +# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +en: + spree: + pingpp_channel: + alipay_pc_direct: Alipay PC direct + alipay_wap: Alipay Phone + upacp_pc: UnionPay PC + upacp_wap: UnionPay Phone diff --git a/spree_pingpp/config/locales/zh-CN.yml b/spree_pingpp/config/locales/zh-CN.yml new file mode 100644 index 00000000..aae0c0d4 --- /dev/null +++ b/spree_pingpp/config/locales/zh-CN.yml @@ -0,0 +1,10 @@ +# Sample localization file for English. Add more files in this directory for other locales. +# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points. + +zh-CN: + spree: + pingpp_channel: + alipay_pc_direct: 支付宝 + alipay_wap: Alipay Phone + upacp_pc: 银联 + upacp_wap: UnionPay Phone diff --git a/spree_pingpp/config/routes.rb b/spree_pingpp/config/routes.rb new file mode 100644 index 00000000..63d357b2 --- /dev/null +++ b/spree_pingpp/config/routes.rb @@ -0,0 +1,11 @@ +Spree::Core::Engine.add_routes do + # Add your extension routes here + patch '/checkout/handle_pingpp', :to => 'checkout#handle_pingpp', as: :handle_pingpp, format: :json + + # called by pingpp webhook + post '/pingpp/charge_notify', :to=> 'pingpp_status#charge_notify' + post '/pingpp/test_charge_notify', :to=> 'pingpp_status#test_charge_notify' + # alipay get, upacp_pc post + match '/pingpp/charge_done', :to=> 'pingpp_status#charge_done', as: :pingpp_charge_done, via: [:get, :post] + +end diff --git a/spree_pingpp/lib/generators/spree_pingpp/install/install_generator.rb b/spree_pingpp/lib/generators/spree_pingpp/install/install_generator.rb new file mode 100644 index 00000000..c672ab7a --- /dev/null +++ b/spree_pingpp/lib/generators/spree_pingpp/install/install_generator.rb @@ -0,0 +1,31 @@ +module SpreePingpp + module Generators + class InstallGenerator < Rails::Generators::Base + + class_option :auto_run_migrations, :type => :boolean, :default => false + + def add_javascripts + append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/spree_pingpp\n" + append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/spree_pingpp\n" + end + + def add_stylesheets + inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/spree_pingpp\n", :before => /\*\//, :verbose => true + inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/spree_pingpp\n", :before => /\*\//, :verbose => true + end + + def add_migrations + run 'bundle exec rake railties:install:migrations FROM=spree_pingpp' + end + + def run_migrations + run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]') + if run_migrations + run 'bundle exec rake db:migrate' + else + puts 'Skipping rake db:migrate, don\'t forget to run it!' + end + end + end + end +end diff --git a/spree_pingpp/lib/spree_pingpp.rb b/spree_pingpp/lib/spree_pingpp.rb new file mode 100644 index 00000000..df7f44aa --- /dev/null +++ b/spree_pingpp/lib/spree_pingpp.rb @@ -0,0 +1,3 @@ +require 'spree_core' +require 'spree_pingpp/engine' +require 'sass/rails' diff --git a/spree_pingpp/lib/spree_pingpp/engine.rb b/spree_pingpp/lib/spree_pingpp/engine.rb new file mode 100644 index 00000000..c5914bc0 --- /dev/null +++ b/spree_pingpp/lib/spree_pingpp/engine.rb @@ -0,0 +1,36 @@ +module SpreePingpp + class Engine < Rails::Engine + require 'spree/core' + isolate_namespace Spree + engine_name 'spree_pingpp' + + # use rspec for tests + config.generators do |g| + g.test_framework :rspec + end + + def self.activate + Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c| + Rails.configuration.cache_classes ? require(c) : load(c) + end + end + + initializer "spree.assets.precompile", :group => :all do |app| + app.config.assets.precompile += %w[ + spree/frontend/spree_pingpp.js + billing_integrations/pingpp/alipay_pc_direct.jpg + billing_integrations/pingpp/alipay_wap.jpg + ] + end + + config.to_prepare &method(:activate).to_proc + + + config.after_initialize do |app| + app.config.spree.payment_methods += [ + Spree::Gateway::PingppPc, + Spree::Gateway::PingppMobile + ] + end + end +end diff --git a/spree_pingpp/lib/spree_pingpp/factories.rb b/spree_pingpp/lib/spree_pingpp/factories.rb new file mode 100644 index 00000000..08019404 --- /dev/null +++ b/spree_pingpp/lib/spree_pingpp/factories.rb @@ -0,0 +1,6 @@ +FactoryGirl.define do + # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them. + # + # Example adding this to your spec_helper will load these Factories for use: + # require 'spree_pingpp/factories' +end diff --git a/spree_pingpp/spec/features/pingpp_pc_spec.rb b/spree_pingpp/spec/features/pingpp_pc_spec.rb new file mode 100644 index 00000000..0c51794b --- /dev/null +++ b/spree_pingpp/spec/features/pingpp_pc_spec.rb @@ -0,0 +1,75 @@ +require 'spec_helper' +#copy from https://raw.github.com/radar/better_spree_paypal_express/master/spec/features/paypal_spec.rb +#http://sandbox.alipaydev.com/index.htm +#sandbox_areq22@aliyun.com +#http://openapi.alipaydev.com/gateway.do +describe "Alipay", :js => true, :type => :feature do + let!(:product) { FactoryGirl.create(:product, :name => 'iPad') } + + before do + @gateway = Spree::Gateway::PingppPc.create!({ + name: "PingppPcAlipay", + active: true, + preferences: { + channels: 'alipay_pc_direct', + app_key: 'app_S8qPKGyH8SKSvfLq', + api_key: 'sk_test_W9azX94mLu1O4SCibPHCCyHG' + } + }) + FactoryGirl.create(:shipping_method) + end + + + it "pays for an order successfully" do + + payment_method_css = "#order_payments_attributes__payment_method_id_#{@gateway.id}" + + + visit spree.root_path + click_link product.name + click_button 'Add To Cart' + click_button 'Checkout' + + #within("#guest_checkout") do + # fill_in "Email", :with => "test@example.com" + # click_button 'Continue' + #end + + fill_in_billing + click_button "Save and Continue" + # Delivery step doesn't require any action + click_button "Save and Continue" + + choose payment_method_css + click_button "Save and Continue" + # should redirect to pingpp mock page + find("#btn_pay").click + #page.should have_content("Your order has been processed successfully") + #Spree::Payment.last.should be_complete + end + + def fill_in_billing + fill_in "order_email", :with => "test@example.com" + + within("#billing") do + fill_in "First Name", :with => "Test" + fill_in "Last Name", :with => "User" + fill_in "Street Address", :with => "1 User Lane" + # City, State and ZIP must all match for PayPal to be happy + fill_in "City", :with => "Adamsville" + select "United States of America", :from => "order_bill_address_attributes_country_id" + select "Alabama", :from => "order_bill_address_attributes_state_id" + fill_in "Zip", :with => "35005" + fill_in "Phone", :with => "555-AME-RICA" + end + end + + def switch_to_paypal_login + # If you go through a payment once in the sandbox, it remembers your preferred setting. + # It defaults to the *wrong* setting for the first time, so we need to have this method. + unless page.has_selector?("#login_email") + find("#loadLogin").click + end + end + +end diff --git a/spree_pingpp/spec/spec_helper.rb b/spree_pingpp/spec/spec_helper.rb new file mode 100644 index 00000000..424257cf --- /dev/null +++ b/spree_pingpp/spec/spec_helper.rb @@ -0,0 +1,87 @@ +# Run Coverage report +require 'simplecov' +SimpleCov.start do + add_filter 'spec/dummy' + add_group 'Controllers', 'app/controllers' + add_group 'Helpers', 'app/helpers' + add_group 'Mailers', 'app/mailers' + add_group 'Models', 'app/models' + add_group 'Views', 'app/views' + add_group 'Libraries', 'lib' +end + +# Configure Rails Environment +ENV['RAILS_ENV'] = 'test' + +require File.expand_path('../dummy/config/environment.rb', __FILE__) + +require 'rspec/rails' +require 'database_cleaner' +require 'ffaker' + +# Requires supporting ruby files with custom matchers and macros, etc, +# in spec/support/ and its subdirectories. +Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f } + +# Requires factories and other useful helpers defined in spree_core. +require 'spree/testing_support/authorization_helpers' +require 'spree/testing_support/capybara_ext' +require 'spree/testing_support/controller_requests' +require 'spree/testing_support/factories' +require 'spree/testing_support/url_helpers' + +# Requires factories defined in lib/spree_pingpp/factories.rb +require 'spree_pingpp/factories' + +RSpec.configure do |config| + config.include FactoryGirl::Syntax::Methods + + # Infer an example group's spec type from the file location. + config.infer_spec_type_from_file_location! + + # == URL Helpers + # + # Allows access to Spree's routes in specs: + # + # visit spree.admin_path + # current_path.should eql(spree.products_path) + config.include Spree::TestingSupport::UrlHelpers + + # == Mock Framework + # + # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: + # + # config.mock_with :mocha + # config.mock_with :flexmock + # config.mock_with :rr + config.mock_with :rspec + config.color = true + + # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures + config.fixture_path = "#{::Rails.root}/spec/fixtures" + + # Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner + # to cleanup after each test instead. Without transactional fixtures set to false the records created + # to setup a test will be unavailable to the browser, which runs under a separate server instance. + config.use_transactional_fixtures = false + + # Ensure Suite is set to use transactions for speed. + config.before :suite do + DatabaseCleaner.strategy = :transaction + DatabaseCleaner.clean_with :truncation + end + + # Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary. + config.before :each do + DatabaseCleaner.strategy = RSpec.current_example.metadata[:js] ? :truncation : :transaction + DatabaseCleaner.start + end + + # After each spec clean the database. + config.after :each do + DatabaseCleaner.clean + end + + config.fail_fast = ENV['FAIL_FAST'] || false + config.order = "random" +end diff --git a/spree_pingpp/spree_pingpp.gemspec b/spree_pingpp/spree_pingpp.gemspec new file mode 100644 index 00000000..22f7b813 --- /dev/null +++ b/spree_pingpp/spree_pingpp.gemspec @@ -0,0 +1,32 @@ +# encoding: UTF-8 +Gem::Specification.new do |s| + s.platform = Gem::Platform::RUBY + s.name = 'spree_pingpp' + s.version = '2.4.10' + s.summary = 'spree pingpp' + s.description = 'spree extension payment pingpp' + s.required_ruby_version = '>= 1.9.3' + + s.author = 'David' + s.email = 'areq22@gmail.com' + s.homepage = 'http://www.getstore.cn' + + #s.files = `git ls-files`.split("\n") + #s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") + s.require_path = 'lib' + s.requirements << 'none' + + s.add_dependency 'spree_core' + s.add_dependency 'pingpp', '~> 2.0.8' + + s.add_development_dependency 'capybara', '~> 2.4' + s.add_development_dependency 'coffee-rails' + s.add_development_dependency 'database_cleaner' + s.add_development_dependency 'factory_girl', '~> 4.5' + s.add_development_dependency 'ffaker' + s.add_development_dependency 'rspec-rails', '~> 3.1' + s.add_development_dependency 'sass-rails', '~> 4.0.2' + s.add_development_dependency 'selenium-webdriver' + s.add_development_dependency 'simplecov' + s.add_development_dependency 'sqlite3' +end diff --git a/spree_theme/Gemfile b/spree_theme/Gemfile index 583b777d..5376cd6e 100644 --- a/spree_theme/Gemfile +++ b/spree_theme/Gemfile @@ -1,37 +1,41 @@ -source 'http://rubygems.org' +#source 'http://gems.ruby-china.org' +source 'https://rubygems.org/' +eval(File.read(File.dirname(__FILE__) + '/../common_spree_dependencies.rb')) - -gem 'spree', :github => "spree/spree", :branch => "2-0-stable" +#https://www.cnblogs.com/Sophiawow/p/4523026.html +gem 'tzinfo-data', platforms: [:x64_mingw, :mingw, :mswin] group :test,:development do - gem 'ruby-graphviz' #print checkout flow - gem 'simplecov' #rspec using it. + #gem 'ruby-graphviz' #print checkout flow + #gem 'simplecov' #rspec using it. #using backend required - gem 'spree_auth_devise', :github => 'spree/spree_auth_devise', :branch => '2-0-stable' + gem 'sass-rails', '~> 5.0.0' gem "mysql2" - gem 'thin' end -#group :test do -# gem 'ffaker' -#end +group :test do + gem 'ffaker' + gem 'shoulda-matchers', '~> 3.1' +end gem "acts_as_list" gem "acts_as_tree" gem "awesome_nested_set" +gem 'acts_as_commentable' +gem 'acts-as-taggable-on' -#use paperclip instead of dragonfly, dragonfly have no way to configure image path -#gem "paperclip", "2.8.0" # spree require it. -gem "responds_to_parent" # spree already contain #gem 'jquery-rails' -#gem 'jquery-ui-rails' +gem 'useragent' gem "friendly_id" -group :assets do - gem 'sass' - gem 'coffee-rails' -end -#gem 'ssl_requirement' +gem 'erubis' +gem 'turbolinks', '~> 5.0.0' +gem 'sitemap_generator' + +gem 'bootstrap-sass' +gem 'font-awesome-rails' +gem 'wechat' #微信分享功能 + gemspec diff --git a/spree_theme/Gemfile.lock b/spree_theme/Gemfile.lock new file mode 100644 index 00000000..55953cc2 --- /dev/null +++ b/spree_theme/Gemfile.lock @@ -0,0 +1,429 @@ +PATH + remote: . + specs: + spree_theme (3.1.0) + acts-as-taggable-on + acts_as_commentable + font-awesome-rails (~> 4.7.0) + friendly_id + sitemap_generator + useragent + +GEM + remote: https://rubygems.org/ + specs: + actioncable (5.1.4) + actionpack (= 5.1.4) + nio4r (~> 2.0) + websocket-driver (~> 0.6.1) + actionmailer (5.1.4) + actionpack (= 5.1.4) + actionview (= 5.1.4) + activejob (= 5.1.4) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (5.1.4) + actionview (= 5.1.4) + activesupport (= 5.1.4) + rack (~> 2.0) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.1.4) + activesupport (= 5.1.4) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (5.1.4) + activesupport (= 5.1.4) + globalid (>= 0.3.6) + activemerchant (1.75.0) + activesupport (>= 3.2.14, < 6.x) + builder (>= 2.1.2, < 4.0.0) + i18n (>= 0.6.9) + nokogiri (~> 1.4) + activemodel (5.1.4) + activesupport (= 5.1.4) + activerecord (5.1.4) + activemodel (= 5.1.4) + activesupport (= 5.1.4) + arel (~> 8.0) + activesupport (5.1.4) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (~> 0.7) + minitest (~> 5.1) + tzinfo (~> 1.1) + acts-as-taggable-on (5.0.0) + activerecord (>= 4.2.8) + acts_as_commentable (4.0.2) + acts_as_list (0.9.10) + activerecord (>= 3.0) + acts_as_tree (2.7.0) + activerecord (>= 3.0.0) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + arel (8.0.0) + autoprefixer-rails (7.2.3) + execjs + awesome_nested_set (3.1.3) + activerecord (>= 4.0.0, < 5.2) + bcrypt (3.1.11) + bcrypt (3.1.11-x86-mingw32) + bootstrap-sass (3.3.7) + autoprefixer-rails (>= 5.2.1) + sass (>= 3.3.4) + builder (3.2.3) + camertron-eprun (1.1.1) + cancancan (2.1.2) + canonical-rails (0.2.1) + rails (>= 4.1, < 5.2) + capybara (2.16.1) + addressable + mini_mime (>= 0.1.3) + nokogiri (>= 1.3.3) + rack (>= 1.0.0) + rack-test (>= 0.5.4) + xpath (~> 2.0) + carmen (1.0.2) + activesupport (>= 3.0.0) + childprocess (0.8.0) + ffi (~> 1.0, >= 1.0.11) + cldr-plurals-runtime-rb (1.0.1) + climate_control (0.2.0) + cocaine (0.5.8) + climate_control (>= 0.0.3, < 1.0) + coffee-rails (4.2.2) + coffee-script (>= 2.2.0) + railties (>= 4.0.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.12.2) + concurrent-ruby (1.0.5) + crass (1.0.3) + css_parser (1.6.0) + addressable + database_cleaner (1.6.2) + deface (1.3.0) + nokogiri (~> 1.6) + polyglot + rails (>= 4.1) + rainbow (>= 2.1.0) + devise (4.3.0) + bcrypt (~> 3.0) + orm_adapter (~> 0.1) + railties (>= 4.1.0, < 5.2) + responders + warden (~> 1.2.3) + devise-encryptable (0.2.0) + devise (>= 2.1.0) + diff-lcs (1.3) + docile (1.1.5) + erubi (1.7.0) + execjs (2.7.0) + factory_girl (4.9.0) + activesupport (>= 3.0.0) + ffaker (2.7.0) + ffi (1.9.18) + ffi (1.9.18-x86-mingw32) + font-awesome-rails (4.7.0.2) + railties (>= 3.2, < 5.2) + friendly_id (5.2.3) + activerecord (>= 4.0.0) + globalid (0.4.1) + activesupport (>= 4.2.0) + highline (1.6.21) + htmlentities (4.3.4) + i18n (0.9.1) + concurrent-ruby (~> 1.0) + jquery-rails (4.3.1) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) + thor (>= 0.14, < 2.0) + jquery-turbolinks (2.1.0) + railties (>= 3.1.0) + turbolinks + jquery-ui-rails (6.0.1) + railties (>= 3.2.16) + json (2.1.0) + kaminari (1.0.1) + activesupport (>= 4.1.0) + kaminari-actionview (= 1.0.1) + kaminari-activerecord (= 1.0.1) + kaminari-core (= 1.0.1) + kaminari-actionview (1.0.1) + actionview + kaminari-core (= 1.0.1) + kaminari-activerecord (1.0.1) + activerecord + kaminari-core (= 1.0.1) + kaminari-core (1.0.1) + loofah (2.1.1) + crass (~> 1.0.2) + nokogiri (>= 1.5.9) + mail (2.7.0) + mini_mime (>= 0.1.1) + method_source (0.9.0) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) + mimemagic (0.3.2) + mini_mime (1.0.0) + mini_portile2 (2.3.0) + minitest (5.10.3) + monetize (1.7.0) + money (~> 6.9) + money (6.10.0) + i18n (>= 0.6.4, < 1.0) + mysql2 (0.4.10) + mysql2 (0.4.10-x86-mingw32) + nio4r (2.1.0) + nokogiri (1.8.1) + mini_portile2 (~> 2.3.0) + nokogiri (1.8.1-x86-mingw32) + mini_portile2 (~> 2.3.0) + orm_adapter (0.5.0) + paperclip (5.1.0) + activemodel (>= 4.2.0) + activesupport (>= 4.2.0) + cocaine (~> 0.5.5) + mime-types + mimemagic (~> 0.3.0) + paranoia (2.3.1) + activerecord (>= 4.0, < 5.2) + polyamorous (1.3.1) + activerecord (>= 3.0) + polyglot (0.3.5) + premailer (1.11.1) + addressable + css_parser (>= 1.6.0) + htmlentities (>= 4.0.0) + premailer-rails (1.10.1) + actionmailer (>= 3, < 6) + premailer (~> 1.7, >= 1.7.9) + public_suffix (3.0.1) + rabl (0.13.1) + activesupport (>= 2.3.14) + rack (2.0.3) + rack-test (0.8.2) + rack (>= 1.0, < 3) + rails (5.1.4) + actioncable (= 5.1.4) + actionmailer (= 5.1.4) + actionpack (= 5.1.4) + actionview (= 5.1.4) + activejob (= 5.1.4) + activemodel (= 5.1.4) + activerecord (= 5.1.4) + activesupport (= 5.1.4) + bundler (>= 1.3.0) + railties (= 5.1.4) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.0.3) + activesupport (>= 4.2.0) + nokogiri (>= 1.6) + rails-html-sanitizer (1.0.3) + loofah (~> 2.0) + railties (5.1.4) + actionpack (= 5.1.4) + activesupport (= 5.1.4) + method_source + rake (>= 0.8.7) + thor (>= 0.18.1, < 2.0) + rainbow (3.0.0) + rake (12.3.0) + ransack (1.8.4) + actionpack (>= 3.0) + activerecord (>= 3.0) + activesupport (>= 3.0) + i18n + polyamorous (~> 1.3) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) + responders (2.4.0) + actionpack (>= 4.2.0, < 5.3) + railties (>= 4.2.0, < 5.3) + rspec-core (3.7.0) + rspec-support (~> 3.7.0) + rspec-expectations (3.7.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.7.0) + rspec-mocks (3.7.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.7.0) + rspec-rails (3.7.2) + actionpack (>= 3.0) + activesupport (>= 3.0) + railties (>= 3.0) + rspec-core (~> 3.7.0) + rspec-expectations (~> 3.7.0) + rspec-mocks (~> 3.7.0) + rspec-support (~> 3.7.0) + rspec-support (3.7.0) + rubyzip (1.2.1) + sass (3.5.3) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sass-rails (5.0.7) + railties (>= 4.0.0, < 6) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) + select2-rails (3.5.9.1) + thor (~> 0.14) + selenium-webdriver (3.8.0) + childprocess (~> 0.5) + rubyzip (~> 1.0) + shoulda-matchers (3.1.2) + activesupport (>= 4.0.0) + simplecov (0.15.1) + docile (~> 1.1.0) + json (>= 1.8, < 3) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.2) + sitemap_generator (6.0.0) + builder (~> 3.0) + spree (3.3.4) + spree_api (= 3.3.4) + spree_backend (= 3.3.4) + spree_cmd (= 3.3.4) + spree_core (= 3.3.4) + spree_frontend (= 3.3.4) + spree_sample (= 3.3.4) + spree_api (3.3.4) + rabl (~> 0.13.1) + spree_core (= 3.3.4) + versioncake (~> 3.3.0) + spree_auth_devise (3.3.1) + devise (~> 4.3.0) + devise-encryptable (= 0.2.0) + spree_core (>= 3.1.0, < 4.0) + spree_extension + spree_backend (3.3.4) + bootstrap-sass (~> 3.3) + jquery-rails (~> 4.3) + jquery-ui-rails (~> 6.0.1) + select2-rails (= 3.5.9.1) + spree_api (= 3.3.4) + spree_core (= 3.3.4) + spree_cmd (3.3.4) + thor (~> 0.14) + spree_core (3.3.4) + activemerchant (~> 1.67) + acts-as-taggable-on (~> 5.0) + acts_as_list (~> 0.8) + awesome_nested_set (~> 3.1.3) + cancancan (~> 2.0) + carmen (~> 1.0.0) + deface (~> 1.0) + ffaker (~> 2.2) + friendly_id (~> 5.2.1) + highline (~> 1.6.18) + kaminari (~> 1.0.1) + monetize (~> 1.1) + paperclip (~> 5.1.0) + paranoia (~> 2.3.0) + premailer-rails + rails (~> 5.1.4) + ransack (~> 1.8.0) + responders + sprockets-rails + state_machines-activerecord (~> 0.5) + stringex + twitter_cldr (~> 4.3) + spree_extension (0.0.5) + activerecord (>= 4.2) + spree_frontend (3.3.4) + bootstrap-sass (>= 3.3.5.1, < 3.4) + canonical-rails (~> 0.2.0) + jquery-rails (~> 4.3) + spree_api (= 3.3.4) + spree_core (= 3.3.4) + spree_sample (3.3.4) + spree_core (= 3.3.4) + sprockets (3.7.1) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.2.1) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + sqlite3 (1.3.13) + sqlite3 (1.3.13-x86-mingw32) + state_machines (0.5.0) + state_machines-activemodel (0.5.0) + activemodel (>= 4.1, < 5.2) + state_machines (>= 0.5.0) + state_machines-activerecord (0.5.0) + activerecord (>= 4.1, < 5.2) + state_machines-activemodel (>= 0.5.0) + stringex (2.8.1) + thor (0.20.0) + thread_safe (0.3.6) + tilt (2.0.8) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.3) + twitter_cldr (4.4.2) + camertron-eprun + cldr-plurals-runtime-rb (~> 1.0) + tzinfo + tzinfo (1.2.4) + thread_safe (~> 0.1) + tzinfo-data (1.2017.3) + tzinfo (>= 1.0.0) + useragent (0.16.8) + versioncake (3.3.0) + actionpack (>= 3.2) + activesupport (>= 3.2) + railties (>= 3.2) + tzinfo + warden (1.2.7) + rack (>= 1.0) + websocket-driver (0.6.5) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.3) + xpath (2.1.0) + nokogiri (~> 1.3) + +PLATFORMS + ruby + x86-mingw32 + +DEPENDENCIES + acts-as-taggable-on + acts_as_commentable + acts_as_list + acts_as_tree + awesome_nested_set + bootstrap-sass + capybara (~> 2.6) + coffee-rails + database_cleaner + factory_girl (~> 4.5) + ffaker + font-awesome-rails + friendly_id + jquery-turbolinks + mysql2 + rspec-rails (~> 3.4) + sass-rails (~> 5.0.0) + selenium-webdriver + shoulda-matchers (~> 3.1) + simplecov + sitemap_generator + spree (~> 3.3.0) + spree_auth_devise (~> 3.3.0) + spree_theme! + sqlite3 + turbolinks + tzinfo-data + useragent + +BUNDLED WITH + 1.16.0 diff --git a/spree_theme/README.md b/spree_theme/README.md index bde58218..dfb7576f 100644 --- a/spree_theme/README.md +++ b/spree_theme/README.md @@ -1,101 +1,56 @@ -SpreeTheme -========== - -New frontend of spree, user could easy modify theme or add new theme. It is not working now! -It is just for spree_abc, not common use, cause it override some cart/checkout views. - -how it work ------------ - roles: designer, user, customer - sites: design site, shopping site - a design/shopping site must have a released theme, or redirect to under_contruction. - released theme contains layout, js, css. each release has own folder. - a designer could login and design new theme. - - - designer - 0. new theme - 1. design theme - 2. release completed theme. generate themeN/versionN.html.erb - 3. theme is viewable by public. shops/themes/themeN/ - designs.dalianshops.com?theme_id=N - - backend +#SpreeTheme + +New frontend of spree, user could easy modify theme or add new theme. +__It is just for spree_abc, not common use.__ + +####terms and conditions +Each site want their own theme, site could have more than one themes. +Theme should be configurable, site could assigned their own data to it. +Each site could select preferred theme from all available list. +Designer could design theme and release it. + +Shops +* design shop: product is theme, designer produce theme on line. +* other shop: use released theme as frentend, sell product on line. + +Roles +* user: on line shop user, have full permission to manage shop. +* customer: shopping on line. +* designer: login design site, design template on line. + +Themes +* theme: a theme of site, contains html, js, css. + + +####How it work +designer produce theme + 0. in design shop, create new theme. + 1. design theme vie editor. + 2. release completed theme, generate theme files themeX/html, css, js + 3. theme is public now. user could import, config and publish. + +user apply theme to site 1. user browse available themes, snapshot or live demo. - 2. import preferred theme - *3. preview it. Do not support it now, find a clean way support tld/admin/add_to_cart first. - 4. apply it to frontend - -requirement - admin.sometld/... is for user preview, ex. admin.somtld/some_taxon - www.sometld/... is for customer, ex. www.sometld/some_taxon - -how roles get layout? ---------------------- - designer: get current editing template - customer: get layout from current site - -path ----- - 1. designer design product list page - www.tld/tid - 2. designer design product detail page - www.tld/tid/pid - 2. designer release design - www.tld/admin/template_theme - 3. customer view product list - www.tld/tid -> /var/www/shops/n/ - 4. customer view product detail - www.tld/tid/pid - 5. admin manage site - www.tld/admin/... - 6. user login - www.tld/admin/ - 7. customer view live template demo - templates.dalianshops.com -> /var/www/shops/1 - 8. customer browse published template list - www.tld/admin/template_themes/ - 9. shop folders - template folder - t(current template id)-> /var/www/shops/1/t(original template id) - theme image folder: - tx/images - generated layout - tx/tx.html.erb - theme css, js - tx/cssx.css - tx/jsx.js - page_layout image folder: images belongs to shop, like logo - lx - -configure ---------- - website theme_id, index_page should greater than 0. - website index_page could equal to 0. - -extra feature for theme ------------------------ - option value has image, please look at https://github.com/citrus/spree_variant_options for detail - -Installation -============ + 2. import preferred theme, + 3. configure it with site data. + 4. apply it as frontend +####Installation(tbd...) rake spree_theme:install:migrations rake db:migrate rails r "SpreeeTheme::Engine.load_seed" in config/spree.rb - SpreeTheme.website_class = 'Spree::FakeWebsite' - SpreeTheme.taxon_class = 'Spree::Taxon' - +SpreeTheme.website_class = 'Spree::FakeWebsite' +SpreeTheme.taxon_class = 'Spree::Taxon' Load sample ------------ + rake spree_theme:load_samples rake spree_theme:import_theme -Testing -------- +####Testing(tbd...) rake test_app + change db from sqlite to mysql, fix id setting, rails sqlite adapter ignore id setting rake db:seed RAILS_ENV=test rake spree_theme:import_theme RAILS_ENV=test SEED_PATH=1 THEME_ID=2 diff --git a/spree_theme/Rakefile b/spree_theme/Rakefile index 9bb1d6ec..c605a5f7 100644 --- a/spree_theme/Rakefile +++ b/spree_theme/Rakefile @@ -2,14 +2,20 @@ require 'bundler' Bundler::GemHelper.install_tasks require 'rspec/core/rake_task' -require 'spree/testing_support/common_rake' +require 'spree/testing_support/extension_rake' RSpec::Core::RakeTask.new -task :default => [:spec] +task :default do + if Dir["spec/dummy"].empty? + Rake::Task[:test_app].invoke + Dir.chdir("../../") + end + Rake::Task[:spec].invoke +end desc 'Generates a dummy app for testing' task :test_app do ENV['LIB_NAME'] = 'spree_theme' - Rake::Task['common:test_app'].invoke -end \ No newline at end of file + Rake::Task['extension:test_app'].invoke +end diff --git a/spree_theme/app/assets/images/blog/rss.png b/spree_theme/app/assets/images/blog/rss.png new file mode 100644 index 00000000..afa1ff4e Binary files /dev/null and b/spree_theme/app/assets/images/blog/rss.png differ diff --git a/spree_theme/app/assets/images/logo.png b/spree_theme/app/assets/images/logo.png new file mode 100644 index 00000000..010bd60a Binary files /dev/null and b/spree_theme/app/assets/images/logo.png differ diff --git a/spree_theme/app/assets/images/missing/wxshare.png b/spree_theme/app/assets/images/missing/wxshare.png new file mode 100644 index 00000000..010bd60a Binary files /dev/null and b/spree_theme/app/assets/images/missing/wxshare.png differ diff --git a/spree_theme/app/assets/javascripts/admin/page_layouts.js.coffee.unused b/spree_theme/app/assets/javascripts/admin/page_layouts.js.coffee.unused new file mode 100644 index 00000000..d208e15b --- /dev/null +++ b/spree_theme/app/assets/javascripts/admin/page_layouts.js.coffee.unused @@ -0,0 +1,65 @@ +handle_ajax_error = (XMLHttpRequest, textStatus, errorThrown) -> + $.jstree.rollback(last_rollback) + $("#ajax_error").show().html("" + server_error + "
    " + template_theme_tree_error) + +handle_rename = (e, data) -> + last_rollback = data.rlbk + node = data.rslt.obj + name = data.rslt.new_name + + url = Spree.url(base_url).clone() + url.setPath(url.path() + '/' + node.prop("id")) + + $.ajax + type: "POST", + dataType: "json", + url: url.toString(), + data: { + _method: "put", + "page_layout[title]": name, + token: Spree.api_key + }, + error: handle_ajax_error + +root = exports ? this +root.setup_template_theme_tree = (template_theme_id, action) -> + $template_theme_tree = $("#template_theme_tree") + if template_theme_id != undefined + # this is defined within admin/taxonomies/edit + # /api/template_themes/:template_theme_id/page_layouts + root.base_url = Spree.url(Spree.routes.template_theme_page_layouts_path) + + $.ajax + url: Spree.url(base_url.path().replace("/page_layouts", "/jstree")).toString(), + data: + token: Spree.api_key + success: (template_theme) -> + last_rollback = null + + conf = + json_data: + data: template_theme, + ajax: + url: (e) -> + # /api/template_themes/:template_theme_id/page_layouts/ + Spree.url(base_url.path() + '/' + e.prop('id') + '/jstree' + '?token=' + Spree.api_key).toString() + themes: + theme: "spree", + url: Spree.url(Spree.routes.jstree_theme_path) + strings: + loading: Spree.translations.loading + "..." + plugins: ["themes", "json_data", "dnd", "crrm"] + + $template_theme_tree.jstree(conf) + .bind("rename.jstree", handle_rename) + .bind("select_node.jstree", handle_select) + .bind "loaded.jstree", -> + $(this).jstree("core").toggle_node($('.jstree-icon').first()) + + $template_theme_tree.on "dblclick", "a", (e) -> + $template_theme_tree.jstree("rename", this) + + # surpress form submit on enter/return + $(document).keypress (e) -> + if e.keyCode == 13 + e.preventDefault() diff --git a/spree_theme/app/assets/javascripts/admin/resource_autocomplete.js.erb b/spree_theme/app/assets/javascripts/admin/resource_autocomplete.js.erb index e69de29b..00903778 100644 --- a/spree_theme/app/assets/javascripts/admin/resource_autocomplete.js.erb +++ b/spree_theme/app/assets/javascripts/admin/resource_autocomplete.js.erb @@ -0,0 +1,55 @@ +// copy from spree/backend/assets/javascripts/admin/taxon_autocomlete.js.erb +// locals {:dom_id, :multiple, :search_url} # Spree.routes.taxons_api or Spree.routes.global_taxons_api +'use strict'; + +var set_resource_taxon_select = function(dom_id, multiple, search_url){ + function formatTaxon(taxon) { + return Select2.util.escapeMarkup(taxon.pretty_name); + } + + if ($('#'+dom_id).length > 0) { + $('#'+dom_id).select2({ + placeholder: Spree.translations.taxon_placeholder, + multiple: multiple, + allowClear: true, + initSelection: function (element, callback) { + var url = Spree.url(Spree.routes.taxons_api, { + ids: element.val(), + without_children: true, + token: Spree.api_key + }); + return $.getJSON(url, null, function (data) { + if(multiple){ + return callback(data['taxons']); + } else { + return callback(data['taxons'].pop()); + } + }); + }, + ajax: { + url: search_url, + datatype: 'json', + data: function (term, page) { + return { + per_page: 50, + page: page, + without_children: true, + q: { + name_cont: term + }, + token: Spree.api_key + }; + }, + results: function (data, page) { + var more = page < data.pages; + return { + results: data['taxons'], + more: more + }; + } + }, + formatResult: formatTaxon, + formatSelection: formatTaxon + }); + } +} diff --git a/spree_theme/app/assets/javascripts/admin/spree_essential_blog.js b/spree_theme/app/assets/javascripts/admin/spree_essential_blog.js new file mode 100644 index 00000000..399d411c --- /dev/null +++ b/spree_theme/app/assets/javascripts/admin/spree_essential_blog.js @@ -0,0 +1 @@ +//= require admin/taxon_autocomplete_for_blog diff --git a/spree_theme/app/assets/javascripts/admin/spree_theme.js b/spree_theme/app/assets/javascripts/admin/spree_theme.js index e154ca94..344d7ba2 100644 --- a/spree_theme/app/assets/javascripts/admin/spree_theme.js +++ b/spree_theme/app/assets/javascripts/admin/spree_theme.js @@ -2,31 +2,35 @@ //= require jquery.ajax //= require jquery.jeditable //= require admin/resource_autocomplete +//= require admin/spree_essential_blog +//= require admin/template_themes +//= require store/spree_theme.routes + + jQuery(function ($) { - $('#page_layout_tree_inner').bind('select_node.jstree', function (e, data) { - var selected_node = data.rslt.obj - var url = [Spree.routes.admin_template_themes, selected_node.data('tid'), 'page_layout',selected_node.data('lid'), selected_node.data('action') ].join('/') - $.ajax({ url: url, type: 'GET', dataType: "script"}) - }).bind('deselect_all.jstree', function (e, data) { - //$(this).find('select').hide() - }) - .jstree( - { themes:{ theme: "apple", url: "/assets/jquery.jstree/themes/apple/style.css" }, - // plugins: ["themes"] - core : { multiple: false, animation: 0 } - } - ); - //$('#page_layout_tree_inner select.select22').select2(); - - +// $('#template_theme_tree').bind('select_node.jstree', function (e, data) { +// var selected_node = data.rslt.obj +// var url = [Spree.routes.admin_page_layouts( selected_node.data('tid')),selected_node.data('lid'), selected_node.data('action') ].join('/') +// $.ajax({ url: url, type: 'GET', dataType: "script"}) +// }).bind('deselect_all.jstree', function (e, data) { +// //$(this).find('select').hide() +// }) +// .jstree( +// { themes:{ theme: "apple", url: "/assets/jquery.jstree/themes/apple/style.css" }, +// // plugins: ["themes"] +// core : { multiple: false, animation: 0 } +// } +// ); + + $('#listing_template_themes .editable').editable(function(value, settings) { var jquery_element = $(this) var url = Spree.routes.admin_template_themes+'/'+jquery_element.data('id') var submitdata = {}; submitdata[settings.name] = value; - $.ajax({ dataType: 'json', url: url, type: 'put', data : submitdata }); + $.ajax({ dataType: 'json', url: url, type: 'put', data : submitdata }); return(value); - }, + }, { //since dblclick would trigger click, for a link, we should not click,dblclick together event : "dblclick", name : "template_theme[title]", diff --git a/spree_theme/app/assets/javascripts/admin/taxon_autocomplete_for_blog.js.erb b/spree_theme/app/assets/javascripts/admin/taxon_autocomplete_for_blog.js.erb new file mode 100644 index 00000000..1b241b17 --- /dev/null +++ b/spree_theme/app/assets/javascripts/admin/taxon_autocomplete_for_blog.js.erb @@ -0,0 +1,5 @@ +window.Spree.ready(function() { + 'use strict'; + set_taxon_select('#post_taxon_ids') + +}); diff --git a/spree_theme/app/assets/javascripts/admin/template_themes.js.coffee b/spree_theme/app/assets/javascripts/admin/template_themes.js.coffee new file mode 100644 index 00000000..cfc73329 --- /dev/null +++ b/spree_theme/app/assets/javascripts/admin/template_themes.js.coffee @@ -0,0 +1,23 @@ + +handle_select = (e, data) -> + selected_node = data.rslt.obj + url = [Spree.routes.admin_page_layouts( selected_node.data('tid')),selected_node.data('lid'), selected_node.data('action') ].join('/') + $.ajax({ url: url, type: 'GET', dataType: "script"}) + +root = exports ? this +root.setup_template_theme_tree = (template_theme_id) -> + $template_theme_tree = $("#template_theme_tree") + if template_theme_id != undefined + conf = + core: + multiple: false, + animation: 0 + themes: + theme: "spree2", + url: Spree.url(Spree.routes.jstree_theme_path) + #strings: + # loading: Spree.translations.loading + "..." + #plugins: ["themes"] + + $template_theme_tree.jstree( conf ) + .bind("select_node.jstree", handle_select) diff --git a/spree_theme/app/assets/javascripts/hoverIntent.js b/spree_theme/app/assets/javascripts/hoverIntent.js new file mode 100644 index 00000000..cbe3ae71 --- /dev/null +++ b/spree_theme/app/assets/javascripts/hoverIntent.js @@ -0,0 +1,114 @@ +/** + * hoverIntent is similar to jQuery's built-in "hover" method except that + * instead of firing the handlerIn function immediately, hoverIntent checks + * to see if the user's mouse has slowed down (beneath the sensitivity + * threshold) before firing the event. The handlerOut function is only + * called after a matching handlerIn. + * + * hoverIntent r7 // 2013.03.11 // jQuery 1.9.1+ + * http://cherne.net/brian/resources/jquery.hoverIntent.html + * + * You may use hoverIntent under the terms of the MIT license. Basically that + * means you are free to use hoverIntent as long as this header is left intact. + * Copyright 2007, 2013 Brian Cherne + * + * // basic usage ... just like .hover() + * .hoverIntent( handlerIn, handlerOut ) + * .hoverIntent( handlerInOut ) + * + * // basic usage ... with event delegation! + * .hoverIntent( handlerIn, handlerOut, selector ) + * .hoverIntent( handlerInOut, selector ) + * + * // using a basic configuration object + * .hoverIntent( config ) + * + * @param handlerIn function OR configuration object + * @param handlerOut function OR selector for delegation OR undefined + * @param selector selector OR undefined + * @author Brian Cherne + **/ +(function($) { + $.fn.hoverIntent = function(handlerIn,handlerOut,selector) { + + // default configuration values + var cfg = { + interval: 100, + sensitivity: 7, + timeout: 0 + }; + + if ( typeof handlerIn === "object" ) { + cfg = $.extend(cfg, handlerIn ); + } else if ($.isFunction(handlerOut)) { + cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } ); + } else { + cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } ); + } + + // instantiate variables + // cX, cY = current X and Y position of mouse, updated by mousemove event + // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval + var cX, cY, pX, pY; + + // A private function for getting mouse position + var track = function(ev) { + cX = ev.pageX; + cY = ev.pageY; + }; + + // A private function for comparing current and previous mouse position + var compare = function(ev,ob) { + ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); + // compare mouse positions to see if they've crossed the threshold + if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) { + $(ob).off("mousemove.hoverIntent",track); + // set hoverIntent state to true (so mouseOut can be called) + ob.hoverIntent_s = 1; + return cfg.over.apply(ob,[ev]); + } else { + // set previous coordinates for next time + pX = cX; pY = cY; + // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs) + ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval ); + } + }; + + // A private function for delaying the mouseOut function + var delay = function(ev,ob) { + ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); + ob.hoverIntent_s = 0; + return cfg.out.apply(ob,[ev]); + }; + + // A private function for handling mouse 'hovering' + var handleHover = function(e) { + // copy objects to be passed into t (required for event object to be passed in IE) + var ev = jQuery.extend({},e); + var ob = this; + + // cancel hoverIntent timer if it exists + if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); } + + // if e.type == "mouseenter" + if (e.type == "mouseenter") { + // set "previous" X and Y position based on initial entry point + pX = ev.pageX; pY = ev.pageY; + // update "current" X and Y position based on mousemove + $(ob).on("mousemove.hoverIntent",track); + // start polling interval (self-calling timeout) to compare mouse coordinates over time + if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );} + + // else e.type == "mouseleave" + } else { + // unbind expensive mousemove event + $(ob).off("mousemove.hoverIntent",track); + // if hoverIntent state is true, then call the mouseOut function after the specified delay + if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );} + } + }; + + // listen for mouseenter and mouseleave + return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector); + }; +})(jQuery); \ No newline at end of file diff --git a/spree_theme/app/assets/javascripts/image_zoom.js b/spree_theme/app/assets/javascripts/image_zoom.js new file mode 100644 index 00000000..bed8e877 --- /dev/null +++ b/spree_theme/app/assets/javascripts/image_zoom.js @@ -0,0 +1,398 @@ +/* + * The image zoom plugin references the jQzoom plugin, and remove the features not be used. + * Make the code be simple. + * + * Colin Ju + * + * jQzoom Evolution Library v2.3 - Javascript Image magnifier + * http://www.mind-projects.it + * + * Copyright 2011, Engineer Marco Renzi + * Licensed under the BSD license. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the organization nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * Date: 03 May 2011 22:16:00 + */ +(function($) { + var _config = { + thumbConfig: { + containerSelector: '', + unitSelector: 'a', + eventName: 'click', + attr: 'rel', + activeClassName: 'thumb-active' + }, + zoomPadConfig: { + containerSelector: '' + }, + zoomViewerConfig: { + width: 300, + height: 300 + }, + largeImageContainerSelector: '' + }; + + var isIE6 = (!$.support.opacity && !$.support.style && window.XMLHttpRequest==undefined), + doc = document, + win = window, + jWin = $(win), + min = Math.min; + + /*** + * Define custom event + */ + var CustomEvent = { + eventObj: $({}), + bind: function() { + this.eventObj.bind.apply(this.eventObj, arguments); + }, + trigger: function() { + this.eventObj.trigger.apply(this.eventObj, arguments); + }, + unbind: function() { + this.eventObj.unbind.apply(this.eventObj, arguments); + } + }; + /** + * add image zoom to jquery plugin + */ + $.fn.imageZoom = function(config) { + return this.each(function () { + new ImageZoom(this, config); + }); + }; + + /** + * The image zoom component entry. + */ + var ImageZoom = function(container, config) { + var jContainer = $(container); + if (jContainer.data('inited') === 'y') {//Init image zoom only one time. + return; + } + this.jContainer = jContainer; + this.config = $.extend(true, _config, config || {}); //Deep copy. + this._init(); + jContainer.data('inited', 'y'); + }; + + $.extend(ImageZoom.prototype, { + constructor: ImageZoom, + _init: function() { + //Init the zoom pad component + var config = this.config, + zoomPadConfig = config.zoomPadConfig; + + new ZoomPad(this.jContainer.find(zoomPadConfig.containerSelector), zoomPadConfig, config.zoomViewerConfig); + + var thumbConfig = config.thumbConfig; + //if there is thumb list, init it. + if (thumbConfig && thumbConfig.containerSelector) { + var jThumbContainer = this.jContainer.find(thumbConfig.containerSelector); + + if (jThumbContainer.length) { + new ThumbList(jThumbContainer, thumbConfig); + } + } + } + }); + + /** + * The thumbnail list component + */ + var ThumbList = function(jContainer, config) { + this.jContainer = jContainer; + this.config = config; + this._init(); + }; + + $.extend(ThumbList.prototype, { + constructor: ThumbList, + _init: function() { + this.dActiveUnit = this.jContainer.find(this.config.unitSelector).get(0); + this._bindEvent(); + }, + _bindEvent: function() { + var _this = this, + config = this.config; + + this.jContainer.delegate(config.unitSelector, config.eventName, function(event) { + var jThis = $(this), + activeClassName, + oImagesSrc = eval('(' + $.trim(jThis.attr(config.attr)) + ')'); + + if (_this.dActiveUnit !== this) { + activeClassName = config.activeClassName; + $(_this.dActiveUnit).removeClass(activeClassName); + jThis.addClass(activeClassName); + _this.dActiveUnit = this; + CustomEvent.trigger('thumb-unit-active', oImagesSrc); + } + }); + } + }); + + /** + * The zoom pad component + */ + var ZoomPad = function(jContainer, zoomPadConfig, zoomViewerConfig) { + this.jBody = $(doc.body) // get body in function, body may not ready when loading this file + this.jContainer = jContainer; + this.zoomPadConfig = zoomPadConfig; + this.zoomViewerConfig = zoomViewerConfig; + this._init(); + }; + + $.extend(ZoomPad.prototype, { + constructor: ZoomPad, + _init: function() { + this.largeImageLoading = false; + this.largeImageLoaded = false; + this.smallImageData = null; + this.largeImageData = null; + this.jZoomLens = null; + this.jZoomViewer = null; + this.jIframe = null; + this.jSmallImage = this.jContainer.find('img'); + this.jSmallImageParent = this.jSmallImage.parent(); + this.jLargeImage = this._createLargeImage(); + this.jLoading = null; + this.eventPos = null; + this.isHover = false; + this.lensL = 0; + this.lensT = 0; + this._bindEvent(); + if (this.jSmallImage[0].complete) {//sometimes the image is loaded and the onload will not be fired. + this.smallImageLoaded = true; + this._fetchSmallImageData(); + } + }, + _bindEvent: function() { + var _this = this; + + this.jSmallImage.load(function() { + _this._fetchSmallImageData(); + }).error(function() { + //TODO + }).hover(function(e) { + _this.isHover = true; + if (!_this.largeImageLoaded && !_this.largeImageLoading) { + _this._showLoading(true); + //_this._loadLargeImage(_this.jSmallImageParent.attr('href')); + _this._loadLargeImage(_this.jSmallImage.data('big-image')); + } + _this.eventPos = { + pageX: e.pageX, + pageY: e.pageY + }; + }, function() { + _this.isHover = false; + }); + + this.jSmallImageParent.hover(function() { + //TODO + }, function() { + _this._hideMoveZoomLens(); + }).click(function(e) { + return false; + }).mousemove(function(e) { + _this.eventPos = { + pageX: e.pageX, + pageY: e.pageY + }; + + if (_this.largeImageLoaded) { + var oScale = _this._getScale(); + if (oScale.x > 1 || oScale.y > 1) { + _this._moveZoomLens(_this._countLensSizeAndPos()); + } + } + }); + this.jLargeImage.load(function() { + _this.largeImageLoaded = true; + _this.largeImageLoading = false; + _this._showLoading(false); + _this._fetchLargeImageData(); + + var oScale = _this._getScale(); + if (_this.isHover && (oScale.x > 1 || oScale.y > 1)) { + _this._moveZoomLens(_this._countLensSizeAndPos()); + } + }).error(function() { + _this.largeImageLoading = false; + _this._showLoading(false); + }); + CustomEvent.bind('thumb-unit-active', function(event, oImagesSrc) { + _this.smallImageData = null; + _this.largeImageData = null; + _this.oScale = null; + _this.largeImageLoaded = false; + _this.largeImageLoading = false; + _this.jSmallImage.attr('src', oImagesSrc.smallimage).parent().attr('href', oImagesSrc.largeimage); + }); + }, + _createLargeImage: function() { + var jLargeImage = $(new Image()); + + jLargeImage.hide().appendTo(this.jBody); + return jLargeImage; + }, + _loadLargeImage: function(src) { + this.largeImageLoaded = false; + this.largeImageLoading = true; + this.jLargeImage.attr('src', src); + }, + _fetchSmallImageData: function() { + var jSmallImage = this.jSmallImage, + offset = jSmallImage.offset(); + + this.smallImageData = { + w: jSmallImage.width(), + h: jSmallImage.height(), + t: offset.top, + l: offset.left, + borderT: parseInt(jSmallImage.css('border-top-width').replace('px', '')), + borderL: parseInt(jSmallImage.css('border-left-width').replace('px', '')), + borderR: parseInt(jSmallImage.css('border-right-width').replace('px', '')) + }; + }, + _fetchLargeImageData: function() { + this.largeImageData = { + w: this.jLargeImage.width(), + h: this.jLargeImage.height() + } + }, + _getScale: function() { + return { + x: this.largeImageData.w/this.smallImageData.w, + y: this.largeImageData.h/this.smallImageData.h + }; + }, + _countLensSizeAndPos: function() { + //the lens's position is relatived to image's parent. + var zoomViewerConfig = this.zoomViewerConfig, + oScale = this._getScale(), + smallImageData = this.smallImageData, + w = min(parseInt(zoomViewerConfig.width / oScale.x), smallImageData.w), + h = min(parseInt(zoomViewerConfig.height / oScale.y), smallImageData.h), + eventPos = this.eventPos, + pageX = eventPos.pageX, + pageY = eventPos.pageY, + x = pageX - smallImageData.l - smallImageData.borderL, + y = pageY - smallImageData.t - smallImageData.borderT, + lensL = pageX - smallImageData.l - w/2, + lensT = pageY - smallImageData.t - h/2; + + if (x - w/2 <= 0) { + lensL = smallImageData.borderL; + } else if (x + w/2 >= smallImageData.w) { + lensL = smallImageData.w - w + smallImageData.borderL; + } + if (y - h/2 <= 0) { + lensT = smallImageData.borderT; + } else if (y + h/2 >= smallImageData.h) { + lensT = smallImageData.h - h + smallImageData.borderT; + } + this.lensL = lensL; + this.lensT = lensT; + return { + width: w, + height: h, + top: lensT, + left: lensL + }; + }, + _showLoading: function(isShow) { + var smallImageData = this.smallImageData; + + this.jLoading = this.jSmallImageParent.find('div.zoom-loading'); + if (this.jLoading.length === 0) { + this.jLoading = $('
    ').appendTo(this.jSmallImageParent); + } + if (isShow) {//show loading + this.jLoading.css({ + left: (this.jSmallImageParent.width() - this.jLoading.width())/2, + top: (this.jSmallImageParent.height() - this.jLoading.height())/2 + }).show(); + } else {//hide loading + this.jLoading.hide(); + } + }, + _moveZoomLens: function(oSizeAndPos) { + this.jZoomLens = this.jSmallImageParent.find('div.zoom-lens'); + if (this.jZoomLens.length === 0) { + this.jZoomLens = $('
    ').appendTo(this.jSmallImageParent); + } + this.jZoomLens.css(oSizeAndPos).show(); + this._showZoomViewer(); + }, + _hideMoveZoomLens: function() { + if (this.jZoomLens) { + this.jZoomLens.hide(); + } + this._hideZoomViewer(); + }, + _isInImageArea: function() { + var smallImageData = this.smallImageData, + eventPos = this.eventPos, + pageX = eventPos.pageX, + pageY = eventPos.pageY; + + return (pageX >= smallImageData.l + smallImageData.borderL && + pageX <= smallImageData.l + smallImageData.borderL + smallImageData.w && + pageY >= smallImageData.t + smallImageData.borderT && + pageY <= smallImageData.t + smallImageData.borderT + smallImageData.h + ) ? true : false; + }, + _showZoomViewer: function() { + var smallImageData = this.smallImageData, + oScale = this._getScale(), + jImage, + imageSrc = this.jSmallImage.data('big-image'); + //imageSrc = this.jSmallImageParent.attr('href'); + + this.jZoomViewer = this.jBody.find('div.zoom-viewer'); + if (this.jZoomViewer.length === 0) { + this.jZoomViewer = $('
    ').css(this.zoomViewerConfig).appendTo(this.jBody); + } + if (isIE6) { + this.jIframe = this.jBody.find('iframe.zoom-iframe'); + if (this.jIframe.length === 0) { + this.jIframe = $('').css(this.zoomViewerConfig).appendTo(this.jBody); + } + this.jIframe.show(); + } + + this.jZoomViewer.css({ + left: smallImageData.l + smallImageData.borderL + smallImageData.w + smallImageData.borderR + 10, + top: smallImageData.t + }).show(); + jImage = this.jZoomViewer.find('img'); + if (this.jZoomViewer.find('img').attr('src') !== imageSrc) { + jImage.attr('src', imageSrc); + } + jImage.css({ + left: -((this.lensL - smallImageData.borderL) * oScale.x), + top: -((this.lensT - smallImageData.borderT)* oScale.y) + }); + }, + _hideZoomViewer: function() { + if (this.jZoomViewer) { + this.jZoomViewer.hide(); + } + if (this.jIframe) { + this.jIframe.hide(); + } + } + }); +})(jQuery); \ No newline at end of file diff --git a/spree_theme/app/assets/javascripts/interface.js b/spree_theme/app/assets/javascripts/interface.js index c02c6021..d71a901b 100644 --- a/spree_theme/app/assets/javascripts/interface.js +++ b/spree_theme/app/assets/javascripts/interface.js @@ -10,7 +10,7 @@ function SelectorGadget() { this.sg_div = null; this.unbound = false; //this.prediction_helper = new DomPredictionHelper(); - this.restricted_elements = jQuery.map(['html', 'body', 'head', 'base'], function(selector) { return jQuery(selector).get(0) }); + this.restricted_elements = jQuery.map(['html', 'body', 'head', 'base'], function(selector) { return jQuery(selector).get(0); }); // david added at 04/28/2012 10:00 this.cover = null; // cover on the selected element this.covers = []; @@ -21,7 +21,7 @@ SelectorGadget.prototype = new Object(); SelectorGadget.prototype.makeBorders = function(orig_elem, makeRed) { //this.removeBorders(); - this.cover = this.get_available_cover() + this.cover = this.get_available_cover(); if (this.cover==null) { this.setupBorders();//set cover @@ -36,8 +36,8 @@ SelectorGadget.prototype.makeBorders = function(orig_elem, makeRed) { var top = p.top; var left = p.left; - var width = elem.outerWidth() - var height = elem.outerHeight() + var width = elem.outerWidth(); + var height = elem.outerHeight(); // david added at 04/28/2012 10:00 this.cover.css('width', this.px(width)).css('height', this.px(height)).css('top', this.px(top )).css('left', this.px(left)); @@ -72,13 +72,13 @@ SelectorGadget.prototype.removeBorders = function() { this.covers[i].hide(); } } -} +}; SelectorGadget.prototype.setupBorders = function() { if (!this.cover) { var width = this.border_width + 'px'; // david added at 04/28/2012 10:00 - this.cover = jQuery('
    ').addClass('sg_cover').hide() + this.cover = jQuery('
    ').addClass('sg_cover').hide(); this.addBorderToDom(); } }; @@ -137,10 +137,10 @@ SelectorGadget.prototype.sgMouseover = function(e) { SelectorGadget.prototype.firstSelectedOrSuggestedParent = function(elem) { var orig = elem; - if (jQuery(elem).hasClass('sg_suggested') || jQuery(elem).hasClass('sg_selected')) return elem + if (jQuery(elem).hasClass('sg_suggested') || jQuery(elem).hasClass('sg_selected')) return elem; while (elem.parentNode && (elem = elem.parentNode)) { if (jQuery.inArray(elem, this.restricted_elements) == -1) - if (jQuery(elem).hasClass('sg_suggested') || jQuery(elem).hasClass('sg_selected')) return elem + if (jQuery(elem).hasClass('sg_suggested') || jQuery(elem).hasClass('sg_selected')) return elem; } return null; }; @@ -190,7 +190,7 @@ SelectorGadget.prototype.sgMousedown = function(e) { gadget.selected.push(elem); } - gadget.clearSuggested() + gadget.clearSuggested(); var prediction = gadget.prediction_helper.predictCss(gadget.selected, gadget.rejected.concat(gadget.restricted_elements)); gadget.suggestPredicted(prediction); gadget.setPath(prediction); @@ -322,8 +322,8 @@ SelectorGadget.prototype.clearSelected = function(e) { SelectorGadget.prototype.clearEverything = function(e) { var self = (e && e.data && e.data.self) || this; - self.clearSelected() - self.resetOutputs() + self.clearSelected(); + self.resetOutputs(); }; SelectorGadget.prototype.resetOutputs = function() { diff --git a/spree_theme/app/assets/javascripts/jquery-ias/callbacks.js b/spree_theme/app/assets/javascripts/jquery-ias/callbacks.js new file mode 100644 index 00000000..66605c09 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery-ias/callbacks.js @@ -0,0 +1,163 @@ +/** + * IASCallbacks + * http://infiniteajaxscroll.com + * + * This file is part of the Infinite AJAX Scroll package + * + * Copyright 2014-2015 Webcreate (Jeroen Fiege) + */ + +var IASCallbacks = function () { + this.list = []; + this.fireStack = []; + this.isFiring = false; + this.isDisabled = false; + + /** + * Calls all added callbacks + * + * @private + * @param args + */ + this.fire = function (args) { + var context = args[0], + deferred = args[1], + callbackArguments = args[2]; + + this.isFiring = true; + + for (var i = 0, l = this.list.length; i < l; i++) { + if (this.list[i] != undefined) { + if (false === this.list[i].fn.apply(context, callbackArguments)) { + deferred.reject(); + + break; + } + } + } + + this.isFiring = false; + + deferred.resolve(); + + if (this.fireStack.length) { + this.fire(this.fireStack.shift()); + } + }; + + /** + * Returns index of the callback in the list in a similar way as + * the indexOf function. + * + * @param callback + * @param {number} index index to start the search from + * @returns {number} + */ + this.inList = function (callback, index) { + index = index || 0; + + for (var i = index, length = this.list.length; i < length; i++) { + if (this.list[i].fn === callback || (callback.guid && this.list[i].fn.guid && callback.guid === this.list[i].fn.guid)) { + return i; + } + } + + return -1; + }; + + return this; +}; + +IASCallbacks.prototype = { + /** + * Adds a callback + * + * @param callback + * @returns {IASCallbacks} + * @param priority + */ + add: function (callback, priority) { + var callbackObject = {fn: callback, priority: priority}; + + priority = priority || 0; + + for (var i = 0, length = this.list.length; i < length; i++) { + if (priority > this.list[i].priority) { + this.list.splice(i, 0, callbackObject); + + return this; + } + } + + this.list.push(callbackObject); + + return this; + }, + + /** + * Removes a callback + * + * @param callback + * @returns {IASCallbacks} + */ + remove: function (callback) { + var index = 0; + + while (( index = this.inList(callback, index) ) > -1) { + this.list.splice(index, 1); + } + + return this; + }, + + /** + * Checks if callback is added + * + * @param callback + * @returns {*} + */ + has: function (callback) { + return (this.inList(callback) > -1); + }, + + + /** + * Calls callbacks with a context + * + * @param context + * @param args + * @returns {object|void} + */ + fireWith: function (context, args) { + var deferred = jQuery.Deferred(); + + if (this.isDisabled) { + return deferred.reject(); + } + + args = args || []; + args = [ context, deferred, args.slice ? args.slice() : args ]; + + if (this.isFiring) { + this.fireStack.push(args); + } else { + this.fire(args); + } + + return deferred; + }, + + /** + * Disable firing of new events + */ + disable: function () { + this.isDisabled = true; + }, + + /** + * Enable firing of new events + */ + enable: function () { + this.isDisabled = false; + } +}; diff --git a/spree_theme/app/assets/javascripts/jquery-ias/extension/history.js b/spree_theme/app/assets/javascripts/jquery-ias/extension/history.js new file mode 100644 index 00000000..5f4f21da --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery-ias/extension/history.js @@ -0,0 +1,221 @@ +/** + * IAS History Extension + * An IAS extension to enable browser history + * http://infiniteajaxscroll.com + * + * This file is part of the Infinite AJAX Scroll package + * + * Copyright 2014-2015 Webcreate (Jeroen Fiege) + */ + +var IASHistoryExtension = function (options) { + options = jQuery.extend({}, this.defaults, options); + + this.ias = null; + this.prevSelector = options.prev; + this.prevUrl = null; + this.listeners = { + prev: new IASCallbacks() + }; + + /** + * @private + * @param pageNum + * @param scrollOffset + * @param url + */ + this.onPageChange = function (pageNum, scrollOffset, url) { + if (!window.history || !window.history.replaceState) { + return; + } + + var state = history.state; + + history.replaceState(state, document.title, url); + }; + + /** + * @private + * @param currentScrollOffset + * @param scrollThreshold + */ + this.onScroll = function (currentScrollOffset, scrollThreshold) { + var firstItemScrollThreshold = this.getScrollThresholdFirstItem(); + + if (!this.prevUrl) { + return; + } + + currentScrollOffset -= this.ias.$scrollContainer.height(); + + if (currentScrollOffset <= firstItemScrollThreshold) { + this.prev(); + } + }; + + this.onReady = function () { + var currentScrollOffset = this.ias.getCurrentScrollOffset(this.ias.$scrollContainer), + firstItemScrollThreshold = this.getScrollThresholdFirstItem(); + + currentScrollOffset -= this.ias.$scrollContainer.height(); + + if (currentScrollOffset <= firstItemScrollThreshold) { + this.prev(); + } + }; + + /** + * Returns the url for the next page + * + * @private + */ + this.getPrevUrl = function (container) { + if (!container) { + container = this.ias.$container; + } + + // always take the last matching item + return jQuery(this.prevSelector, container).last().attr('href'); + }; + + /** + * Returns scroll threshold. This threshold marks the line from where + * IAS should start loading the next page. + * + * @private + * @return {number} + */ + this.getScrollThresholdFirstItem = function () { + var $firstElement; + + $firstElement = this.ias.getFirstItem(); + + // if the don't have a first element, the DOM might not have been loaded, + // or the selector is invalid + if (0 === $firstElement.length) { + return -1; + } + + return ($firstElement.offset().top); + }; + + /** + * Renders items + * + * @private + * @param items + * @param callback + */ + this.renderBefore = function (items, callback) { + var ias = this.ias, + $firstItem = ias.getFirstItem(), + count = 0; + + ias.fire('render', [items]); + + jQuery(items).hide(); // at first, hide it so we can fade it in later + + $firstItem.before(items); + + jQuery(items).fadeIn(400, function () { + if (++count < items.length) { + return; + } + + ias.fire('rendered', [items]); + + if (callback) { + callback(); + } + }); + }; + + return this; +}; + +/** + * @public + */ +IASHistoryExtension.prototype.initialize = function (ias) { + var self = this; + + this.ias = ias; + + // expose the extensions listeners + jQuery.extend(ias.listeners, this.listeners); + + // expose prev method + ias.prev = function() { + return self.prev(); + }; + + this.prevUrl = this.getPrevUrl(); +}; + +/** + * Bind to events + * + * @public + * @param ias + */ +IASHistoryExtension.prototype.bind = function (ias) { + ias.on('pageChange', jQuery.proxy(this.onPageChange, this)); + ias.on('scroll', jQuery.proxy(this.onScroll, this)); + ias.on('ready', jQuery.proxy(this.onReady, this)); +}; + +/** + * @public + * @param {object} ias + */ +IASHistoryExtension.prototype.unbind = function(ias) { + ias.off('pageChange', this.onPageChange); + ias.off('scroll', this.onScroll); + ias.off('ready', this.onReady); +}; + +/** + * Load the prev page + * + * @public + */ +IASHistoryExtension.prototype.prev = function () { + var url = this.prevUrl, + self = this, + ias = this.ias; + + if (!url) { + return false; + } + + ias.pause(); + + var promise = ias.fire('prev', [url]); + + promise.done(function () { + ias.load(url, function (data, items) { + self.renderBefore(items, function () { + self.prevUrl = self.getPrevUrl(data); + + ias.resume(); + + if (self.prevUrl) { + self.prev(); + } + }); + }); + }); + + promise.fail(function () { + ias.resume(); + }); + + return true; +}; + +/** + * @public + */ +IASHistoryExtension.prototype.defaults = { + prev: ".prev" +}; diff --git a/spree_theme/app/assets/javascripts/jquery-ias/extension/noneleft.js b/spree_theme/app/assets/javascripts/jquery-ias/extension/noneleft.js new file mode 100644 index 00000000..9f5c5752 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery-ias/extension/noneleft.js @@ -0,0 +1,55 @@ +/** + * IAS None Left Extension + * An IAS extension to show a message when there are no more pages te load + * http://infiniteajaxscroll.com + * + * This file is part of the Infinite AJAX Scroll package + * + * Copyright 2014-2015 Webcreate (Jeroen Fiege) + */ + +var IASNoneLeftExtension = function(options) { + options = jQuery.extend({}, this.defaults, options); + + this.ias = null; + this.uid = (new Date()).getTime(); + this.html = (options.html).replace('{text}', options.text); + + /** + * Shows none left message + */ + this.showNoneLeft = function() { + var $element = jQuery(this.html).attr('id', 'ias_noneleft_' + this.uid), + $lastItem = this.ias.getLastItem(); + + $lastItem.after($element); + $element.fadeIn(); + }; + + return this; +}; + +/** + * @public + */ +IASNoneLeftExtension.prototype.bind = function(ias) { + this.ias = ias; + + ias.on('noneLeft', jQuery.proxy(this.showNoneLeft, this)); +}; + +/** + * @public + * @param {object} ias + */ +IASNoneLeftExtension.prototype.unbind = function(ias) { + ias.off('noneLeft', this.showNoneLeft); +}; + +/** + * @public + */ +IASNoneLeftExtension.prototype.defaults = { + text: 'You reached the end.', + html: '
    {text}
    ' +}; diff --git a/spree_theme/app/assets/javascripts/jquery-ias/extension/paging.js b/spree_theme/app/assets/javascripts/jquery-ias/extension/paging.js new file mode 100644 index 00000000..75ac448d --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery-ias/extension/paging.js @@ -0,0 +1,170 @@ +/** + * IAS Paging Extension + * An IAS extension providing additional events + * http://infiniteajaxscroll.com + * + * This file is part of the Infinite AJAX Scroll package + * + * Copyright 2014-2015 Webcreate (Jeroen Fiege) + */ + +var IASPagingExtension = function() { + this.ias = null; + this.pagebreaks = [[0, document.location.toString()]]; + this.lastPageNum = 1; + this.enabled = true; + this.listeners = { + pageChange: new IASCallbacks() + }; + + /** + * Fires pageChange event + * + * @param currentScrollOffset + * @param scrollThreshold + */ + this.onScroll = function(currentScrollOffset, scrollThreshold) { + if (!this.enabled) { + return; + } + + var ias = this.ias, + currentPageNum = this.getCurrentPageNum(currentScrollOffset), + currentPagebreak = this.getCurrentPagebreak(currentScrollOffset), + urlPage; + + if (this.lastPageNum !== currentPageNum) { + urlPage = currentPagebreak[1]; + + ias.fire('pageChange', [currentPageNum, currentScrollOffset, urlPage]); + } + + this.lastPageNum = currentPageNum; + }; + + /** + * Keeps track of pagebreaks + * + * @param url + */ + this.onNext = function(url) { + var currentScrollOffset = this.ias.getCurrentScrollOffset(this.ias.$scrollContainer); + + this.pagebreaks.push([currentScrollOffset, url]); + + // trigger pageChange and update lastPageNum + var currentPageNum = this.getCurrentPageNum(currentScrollOffset) + 1; + + this.ias.fire('pageChange', [currentPageNum, currentScrollOffset, url]); + + this.lastPageNum = currentPageNum; + }; + + /** + * Keeps track of pagebreaks + * + * @param url + */ + this.onPrev = function(url) { + var self = this, + ias = self.ias, + currentScrollOffset = ias.getCurrentScrollOffset(ias.$scrollContainer), + prevCurrentScrollOffset = currentScrollOffset - ias.$scrollContainer.height(), + $firstItem = ias.getFirstItem(); + + this.enabled = false; + + this.pagebreaks.unshift([0, url]); + + ias.one('rendered', function() { + // update pagebreaks + for (var i = 1, l = self.pagebreaks.length; i < l; i++) { + self.pagebreaks[i][0] = self.pagebreaks[i][0] + $firstItem.offset().top; + } + + // trigger pageChange and update lastPageNum + var currentPageNum = self.getCurrentPageNum(prevCurrentScrollOffset) + 1; + + ias.fire('pageChange', [currentPageNum, prevCurrentScrollOffset, url]); + + self.lastPageNum = currentPageNum; + + self.enabled = true; + }); + }; + + return this; +}; + +/** + * @public + */ +IASPagingExtension.prototype.initialize = function(ias) { + this.ias = ias; + + // expose the extensions listeners + jQuery.extend(ias.listeners, this.listeners); +}; + +/** + * @public + */ +IASPagingExtension.prototype.bind = function(ias) { + try { + ias.on('prev', jQuery.proxy(this.onPrev, this), this.priority); + } catch (exception) {} + + ias.on('next', jQuery.proxy(this.onNext, this), this.priority); + ias.on('scroll', jQuery.proxy(this.onScroll, this), this.priority); +}; + +/** + * @public + * @param {object} ias + */ +IASPagingExtension.prototype.unbind = function(ias) { + try { + ias.off('prev', this.onPrev); + } catch (exception) {} + + ias.off('next', this.onNext); + ias.off('scroll', this.onScroll); +}; + +/** + * Returns current page number based on scroll offset + * + * @param {number} scrollOffset + * @returns {number} + */ +IASPagingExtension.prototype.getCurrentPageNum = function(scrollOffset) { + for (var i = (this.pagebreaks.length - 1); i > 0; i--) { + if (scrollOffset > this.pagebreaks[i][0]) { + return i + 1; + } + } + + return 1; +}; + +/** + * Returns current pagebreak information based on scroll offset + * + * @param {number} scrollOffset + * @returns {number}|null + */ +IASPagingExtension.prototype.getCurrentPagebreak = function(scrollOffset) { + for (var i = (this.pagebreaks.length - 1); i >= 0; i--) { + if (scrollOffset > this.pagebreaks[i][0]) { + return this.pagebreaks[i]; + } + } + + return null; +}; + +/** + * @public + * @type {number} + */ +IASPagingExtension.prototype.priority = 500; diff --git a/spree_theme/app/assets/javascripts/jquery-ias/extension/spinner.js b/spree_theme/app/assets/javascripts/jquery-ias/extension/spinner.js new file mode 100644 index 00000000..8f612b95 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery-ias/extension/spinner.js @@ -0,0 +1,119 @@ +/** + * IAS Spinner Extension + * An IAS extension to show a spinner when loading + * http://infiniteajaxscroll.com + * + * This file is part of the Infinite AJAX Scroll package + * + * Copyright 2014-2015 Webcreate (Jeroen Fiege) + */ + +var IASSpinnerExtension = function(options) { + options = jQuery.extend({}, this.defaults, options); + + this.ias = null; + this.uid = new Date().getTime(); + this.src = options.src; + this.html = (options.html).replace('{src}', this.src); + + /** + * Shows spinner + */ + this.showSpinner = function() { + var $spinner = this.getSpinner() || this.createSpinner(), + $lastItem = this.ias.getLastItem(); + + $lastItem.after($spinner); + $spinner.fadeIn(); + }; + + /** + * Shows spinner + */ + this.showSpinnerBefore = function() { + var $spinner = this.getSpinner() || this.createSpinner(), + $firstItem = this.ias.getFirstItem(); + + $firstItem.before($spinner); + $spinner.fadeIn(); + }; + + /** + * Removes spinner + */ + this.removeSpinner = function() { + if (this.hasSpinner()) { + this.getSpinner().remove(); + } + }; + + /** + * @returns {jQuery|boolean} + */ + this.getSpinner = function() { + var $spinner = jQuery('#ias_spinner_' + this.uid); + + if ($spinner.length > 0) { + return $spinner; + } + + return false; + }; + + /** + * @returns {boolean} + */ + this.hasSpinner = function() { + var $spinner = jQuery('#ias_spinner_' + this.uid); + + return ($spinner.length > 0); + }; + + /** + * @returns {jQuery} + */ + this.createSpinner = function() { + var $spinner = jQuery(this.html).attr('id', 'ias_spinner_' + this.uid); + + $spinner.hide(); + + return $spinner; + }; + + return this; +}; + +/** + * @public + */ +IASSpinnerExtension.prototype.bind = function(ias) { + this.ias = ias; + + ias.on('next', jQuery.proxy(this.showSpinner, this)); + ias.on('render', jQuery.proxy(this.removeSpinner, this)); + + try { + ias.on('prev', jQuery.proxy(this.showSpinnerBefore, this)); + } catch (exception) {} +}; + +/** + * @public + * @param {object} ias + */ +IASSpinnerExtension.prototype.unbind = function(ias) { + ias.off('next', this.showSpinner); + ias.off('render', this.removeSpinner); + + try { + ias.off('prev', this.showSpinnerBefore); + } catch (exception) {} +}; + +/** + * @public + */ +IASSpinnerExtension.prototype.defaults = { + src: 'data:image/gif;base64,R0lGODlhEAAQAPQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAkKAAAALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQJCgAAACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQJCgAAACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkECQoAAAAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkECQoAAAAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAkKAAAALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAkKAAAALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQJCgAAACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQJCgAAACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA==', + html: '
    ' +}; diff --git a/spree_theme/app/assets/javascripts/jquery-ias/extension/trigger.js b/spree_theme/app/assets/javascripts/jquery-ias/extension/trigger.js new file mode 100644 index 00000000..1c748a66 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery-ias/extension/trigger.js @@ -0,0 +1,161 @@ +/** + * IAS Trigger Extension + * An IAS extension to show a trigger link to load the next page + * http://infiniteajaxscroll.com + * + * This file is part of the Infinite AJAX Scroll package + * + * Copyright 2014-2015 Webcreate (Jeroen Fiege) + */ + +var IASTriggerExtension = function(options) { + options = jQuery.extend({}, this.defaults, options); + + this.ias = null; + this.html = (options.html).replace('{text}', options.text); + this.htmlPrev = (options.htmlPrev).replace('{text}', options.textPrev); + this.enabled = true; + this.count = 0; + this.offset = options.offset; + this.$triggerNext = null; + this.$triggerPrev = null; + + /** + * Shows trigger for next page + */ + this.showTriggerNext = function() { + if (!this.enabled) { + return true; + } + + if (false === this.offset || ++this.count < this.offset) { + return true; + } + + var $trigger = this.$triggerNext || (this.$triggerNext = this.createTrigger(this.next, this.html)); + var $lastItem = this.ias.getLastItem(); + + $lastItem.after($trigger); + $trigger.fadeIn(); + + return false; + }; + + /** + * Shows trigger for previous page + */ + this.showTriggerPrev = function() { + if (!this.enabled) { + return true; + } + + var $trigger = this.$triggerPrev || (this.$triggerPrev = this.createTrigger(this.prev, this.htmlPrev)); + var $firstItem = this.ias.getFirstItem(); + + $firstItem.before($trigger); + $trigger.fadeIn(); + + return false; + }; + + this.onRendered = function() { + this.enabled = true; + }; + + /** + * @param clickCallback + * @returns {*|jQuery} + * @param {string} html + */ + this.createTrigger = function(clickCallback, html) { + var uid = (new Date()).getTime(), + $trigger; + + html = html || this.html; + $trigger = jQuery(html).attr('id', 'ias_trigger_' + uid); + + $trigger.hide(); + $trigger.on('click', jQuery.proxy(clickCallback, this)); + + return $trigger; + }; + + return this; +}; + +/** + * @public + * @param {object} ias + */ +IASTriggerExtension.prototype.bind = function(ias) { + var self = this; + + this.ias = ias; + + ias.on('next', jQuery.proxy(this.showTriggerNext, this), this.priority); + ias.on('rendered', jQuery.proxy(this.onRendered, this), this.priority); + + try { + ias.on('prev', jQuery.proxy(this.showTriggerPrev, this), this.priority); + } catch (exception) {} +}; + +/** + * @public + * @param {object} ias + */ +IASTriggerExtension.prototype.unbind = function(ias) { + ias.off('next', this.showTriggerNext); + ias.off('rendered', this.onRendered); + + try { + ias.off('prev', this.showTriggerPrev); + } catch (exception) {} +}; + +/** + * @public + */ +IASTriggerExtension.prototype.next = function() { + this.enabled = false; + this.ias.pause(); + + if (this.$triggerNext) { + this.$triggerNext.remove(); + this.$triggerNext = null; + } + + this.ias.next(); +}; + +/** + * @public + */ +IASTriggerExtension.prototype.prev = function() { + this.enabled = false; + this.ias.pause(); + + if (this.$triggerPrev) { + this.$triggerPrev.remove(); + this.$triggerPrev = null; + } + + this.ias.prev(); +}; + +/** + * @public + */ +IASTriggerExtension.prototype.defaults = { + text: 'Load more items', + html: '', + textPrev: 'Load previous items', + htmlPrev: '', + offset: 0 +}; + +/** + * @public + * @type {number} + */ +IASTriggerExtension.prototype.priority = 1000; diff --git a/spree_theme/app/assets/javascripts/jquery-ias/jquery-ias.js b/spree_theme/app/assets/javascripts/jquery-ias/jquery-ias.js new file mode 100644 index 00000000..07f5f7b9 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery-ias/jquery-ias.js @@ -0,0 +1,654 @@ +/** + * Infinite Ajax Scroll v2.2.1 + * A jQuery plugin for infinite scrolling + * http://infiniteajaxscroll.com + * + * Commercial use requires one-time purchase of a commercial license + * http://infiniteajaxscroll.com/docs/license.html + * + * Non-commercial use is licensed under the MIT License + * + * Copyright 2014-2015 Webcreate (Jeroen Fiege) + */ + +(function($) { + + 'use strict'; + + var UNDETERMINED_SCROLLOFFSET = -1; + + var IAS = function($element, options) { + this.itemsContainerSelector = options.container; + this.itemSelector = options.item; + this.nextSelector = options.next; + this.paginationSelector = options.pagination; + this.$scrollContainer = $element; + this.$container = (window === $element.get(0) ? $(document) : $element); + this.defaultDelay = options.delay; + this.negativeMargin = options.negativeMargin; + this.nextUrl = null; + this.isBound = false; + this.isPaused = false; + this.isInitialized = false; + this.listeners = { + next: new IASCallbacks(), + load: new IASCallbacks(), + loaded: new IASCallbacks(), + render: new IASCallbacks(), + rendered: new IASCallbacks(), + scroll: new IASCallbacks(), + noneLeft: new IASCallbacks(), + ready: new IASCallbacks() + }; + this.extensions = []; + + /** + * Scroll event handler + * + * Note: calls to this functions should be throttled + * + * @private + */ + this.scrollHandler = function() { + // the throttle method can call the scrollHandler even thought we have called unbind() + if (!this.isBound || this.isPaused) { + return; + } + + var currentScrollOffset = this.getCurrentScrollOffset(this.$scrollContainer), + scrollThreshold = this.getScrollThreshold() + ; + + // invalid scrollThreshold. The DOM might not have loaded yet... + if (UNDETERMINED_SCROLLOFFSET == scrollThreshold) { + return; + } + + this.fire('scroll', [currentScrollOffset, scrollThreshold]); + + if (currentScrollOffset >= scrollThreshold) { + this.next(); + } + }; + + /** + * Returns the items container currently in the DOM + * + * @private + * @returns {object} + */ + this.getItemsContainer = function() { + return $(this.itemsContainerSelector); + }; + + /** + * Returns the last item currently in the DOM + * + * @private + * @returns {object} + */ + this.getLastItem = function() { + return $(this.itemSelector, this.getItemsContainer().get(0)).last(); + }; + + /** + * Returns the first item currently in the DOM + * + * @private + * @returns {object} + */ + this.getFirstItem = function() { + return $(this.itemSelector, this.getItemsContainer().get(0)).first(); + }; + + /** + * Returns scroll threshold. This threshold marks the line from where + * IAS should start loading the next page. + * + * @private + * @param negativeMargin defaults to {this.negativeMargin} + * @return {number} + */ + this.getScrollThreshold = function(negativeMargin) { + var $lastElement; + + negativeMargin = negativeMargin || this.negativeMargin; + negativeMargin = (negativeMargin >= 0 ? negativeMargin * -1 : negativeMargin); + + $lastElement = this.getLastItem(); + + // if the don't have a last element, the DOM might not have been loaded, + // or the selector is invalid + if (0 === $lastElement.length) { + return UNDETERMINED_SCROLLOFFSET; + } + + return ($lastElement.offset().top + $lastElement.height() + negativeMargin); + }; + + /** + * Returns current scroll offset for the given scroll container + * + * @private + * @param $container + * @returns {number} + */ + this.getCurrentScrollOffset = function($container) { + var scrollTop = 0, + containerHeight = $container.height(); + + if (window === $container.get(0)) { + scrollTop = $container.scrollTop(); + } else { + scrollTop = $container.offset().top; + } + + // compensate for iPhone + if (navigator.platform.indexOf("iPhone") != -1 || navigator.platform.indexOf("iPod") != -1) { + containerHeight += 80; + } + + return (scrollTop + containerHeight); + }; + + /** + * Returns the url for the next page + * + * @private + */ + this.getNextUrl = function(container) { + container = container || this.$container; + + // always take the last matching item + return $(this.nextSelector, container).last().attr('href'); + }; + + /** + * Loads a page url + * + * @param url + * @param callback + * @param delay + * @returns {object} jsXhr object + */ + this.load = function(url, callback, delay) { + var self = this, + $itemContainer, + items = [], + timeStart = +new Date(), + timeDiff; + + delay = delay || this.defaultDelay; + + var loadEvent = { + url: url + }; + + self.fire('load', [loadEvent]); + + return $.get(loadEvent.url, null, $.proxy(function(data) { + $itemContainer = $(this.itemsContainerSelector, data).eq(0); + if (0 === $itemContainer.length) { + $itemContainer = $(data).filter(this.itemsContainerSelector).eq(0); + } + + if ($itemContainer) { + $itemContainer.find(this.itemSelector).each(function() { + items.push(this); + }); + } + + self.fire('loaded', [data, items]); + + if (callback) { + timeDiff = +new Date() - timeStart; + if (timeDiff < delay) { + setTimeout(function() { + callback.call(self, data, items); + }, delay - timeDiff); + } else { + callback.call(self, data, items); + } + } + }, self), 'html'); + }; + + /** + * Renders items + * + * @param callback + * @param items + */ + this.render = function(items, callback) { + var self = this, + $lastItem = this.getLastItem(), + count = 0; + + var promise = this.fire('render', [items]); + + promise.done(function() { + $(items).hide(); // at first, hide it so we can fade it in later + + $lastItem.after(items); + + $(items).fadeIn(400, function() { + // complete callback get fired for each item, + // only act on the last item + if (++count < items.length) { + return; + } + + self.fire('rendered', [items]); + + if (callback) { + callback(); + } + }); + }); + + promise.fail(function() { + if (callback) { + callback(); + } + }); + }; + + /** + * Hides the pagination + */ + this.hidePagination = function() { + if (this.paginationSelector) { + $(this.paginationSelector, this.$container).hide(); + } + }; + + /** + * Restores the pagination + */ + this.restorePagination = function() { + if (this.paginationSelector) { + $(this.paginationSelector, this.$container).show(); + } + }; + + /** + * Throttles a method + * + * Adopted from Ben Alman's jQuery throttle / debounce plugin + * + * @param callback + * @param delay + * @return {object} + */ + this.throttle = function(callback, delay) { + var lastExecutionTime = 0, + wrapper, + timerId + ; + + wrapper = function() { + var that = this, + args = arguments, + diff = +new Date() - lastExecutionTime; + + function execute() { + lastExecutionTime = +new Date(); + callback.apply(that, args); + } + + if (!timerId) { + execute(); + } else { + clearTimeout(timerId); + } + + if (diff > delay) { + execute(); + } else { + timerId = setTimeout(execute, delay); + } + }; + + if ($.guid) { + wrapper.guid = callback.guid = callback.guid || $.guid++; + } + + return wrapper; + }; + + /** + * Fires an event with the ability to cancel further processing. This + * can be achieved by returning false in a listener. + * + * @param event + * @param args + * @returns {*} + */ + this.fire = function(event, args) { + return this.listeners[event].fireWith(this, args); + }; + + /** + * Pauses the scroll handler + * + * Note: internal use only, if you need to pause IAS use `unbind` method. + * + * @private + */ + this.pause = function() { + this.isPaused = true; + }; + + /** + * Resumes the scroll handler + * + * Note: internal use only, if you need to resume IAS use `bind` method. + * + * @private + */ + this.resume = function() { + this.isPaused = false; + }; + + return this; + }; + + /** + * Initialize IAS + * + * Note: Should be called when the document is ready + * + * @public + */ + IAS.prototype.initialize = function() { + if (this.isInitialized) { + return false; + } + + var supportsOnScroll = (!!('onscroll' in this.$scrollContainer.get(0))), + currentScrollOffset = this.getCurrentScrollOffset(this.$scrollContainer), + scrollThreshold = this.getScrollThreshold(); + + // bail out when the browser doesn't support the scroll event + if (!supportsOnScroll) { + return false; + } + + this.hidePagination(); + this.bind(); + + this.fire('ready'); + + this.nextUrl = this.getNextUrl(); + + // start loading next page if content is shorter than page fold + if (currentScrollOffset >= scrollThreshold) { + this.next(); + + // flag as initialized when rendering is completed + this.one('rendered', function() { + this.isInitialized = true; + }); + } else { + this.isInitialized = true; + } + + return this; + }; + + /** + * Reinitializes IAS, for example after an ajax page update + * + * @public + */ + IAS.prototype.reinitialize = function () { + this.isInitialized = false; + + this.unbind(); + this.initialize(); + }; + + /** + * Binds IAS to DOM events + * + * @public + */ + IAS.prototype.bind = function() { + if (this.isBound) { + return; + } + + this.$scrollContainer.on('scroll', $.proxy(this.throttle(this.scrollHandler, 150), this)); + + for (var i = 0, l = this.extensions.length; i < l; i++) { + this.extensions[i].bind(this); + } + + this.isBound = true; + this.resume(); + }; + + /** + * Unbinds IAS to events + * + * @public + */ + IAS.prototype.unbind = function() { + if (!this.isBound) { + return; + } + + this.$scrollContainer.off('scroll', this.scrollHandler); + + // notify extensions about unbinding + for (var i = 0, l = this.extensions.length; i < l; i++) { + if (typeof this.extensions[i]['unbind'] != 'undefined') { + this.extensions[i].unbind(this); + } + } + + this.isBound = false; + }; + + /** + * Destroys IAS instance + * + * @public + */ + IAS.prototype.destroy = function() { + this.unbind(); + + this.$scrollContainer.data('ias', null); + }; + + /** + * Registers an eventListener + * + * Note: chainable + * + * @public + * @returns IAS + */ + IAS.prototype.on = function(event, callback, priority) { + if (typeof this.listeners[event] == 'undefined') { + throw new Error('There is no event called "' + event + '"'); + } + + priority = priority || 0; + + this.listeners[event].add($.proxy(callback, this), priority); + + return this; + }; + + /** + * Registers an eventListener which only gets + * fired once. + * + * Note: chainable + * + * @public + * @returns IAS + */ + IAS.prototype.one = function(event, callback) { + var self = this; + + var remover = function() { + self.off(event, callback); + self.off(event, remover); + }; + + this.on(event, callback); + this.on(event, remover); + + return this; + }; + + /** + * Removes an eventListener + * + * Note: chainable + * + * @public + * @returns IAS + */ + IAS.prototype.off = function(event, callback) { + if (typeof this.listeners[event] == 'undefined') { + throw new Error('There is no event called "' + event + '"'); + } + + this.listeners[event].remove(callback); + + return this; + }; + + /** + * Load the next page + * + * @public + */ + IAS.prototype.next = function() { + var url = this.nextUrl, + self = this; + + this.pause(); + + if (!url) { + this.fire('noneLeft', [this.getLastItem()]); + this.listeners['noneLeft'].disable(); // disable it so it only fires once + + self.resume(); + + return false; + } + + var promise = this.fire('next', [url]); + + promise.done(function() { + self.load(url, function(data, items) { + self.render(items, function() { + self.nextUrl = self.getNextUrl(data); + + self.resume(); + }); + }); + }); + + promise.fail(function() { + self.resume(); + }); + + return true; + }; + + /** + * Adds an extension + * + * @public + */ + IAS.prototype.extension = function(extension) { + if (typeof extension['bind'] == 'undefined') { + throw new Error('Extension doesn\'t have required method "bind"'); + } + + if (typeof extension['initialize'] != 'undefined') { + extension.initialize(this); + } + + this.extensions.push(extension); + + if (this.isInitialized) { + this.reinitialize(); + } + + return this; + }; + + /** + * Shortcut. Sets the window as scroll container. + * + * @public + * @param option + * @returns {*} + */ + $.ias = function(option) { + var $window = $(window); + + return $window.ias.apply($window, arguments); + }; + + /** + * jQuery plugin initialization + * + * @public + * @param option + * @returns {*} the last IAS instance will be returned + */ + $.fn.ias = function(option) { + var args = Array.prototype.slice.call(arguments); + var retval = this; + + this.each(function() { + var $this = $(this), + instance = $this.data('ias'), + options = $.extend({}, $.fn.ias.defaults, $this.data(), typeof option == 'object' && option) + ; + + // set a new instance as data + if (!instance) { + $this.data('ias', (instance = new IAS($this, options))); + + $(document).ready($.proxy(instance.initialize, instance)); + } + + // when the plugin is called with a method + if (typeof option === 'string') { + if (typeof instance[option] !== 'function') { + throw new Error('There is no method called "' + option + '"'); + } + + args.shift(); // remove first argument ('option') + instance[option].apply(instance, args); + } + + retval = instance; + }); + + return retval; + }; + + /** + * Plugin defaults + * + * @public + * @type {object} + */ + $.fn.ias.defaults = { + item: '.item', + container: '.listing', + next: '.next', + pagination: false, + delay: 600, + negativeMargin: 10 + }; +})(jQuery); diff --git a/spree_theme/app/assets/javascripts/jquery.finger.16.min.js b/spree_theme/app/assets/javascripts/jquery.finger.16.min.js new file mode 100644 index 00000000..e1dde7f6 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery.finger.16.min.js @@ -0,0 +1,4 @@ +/*! jquery.finger - v0.1.6 - 2016-10-05 +* https://github.com/ngryman/jquery.finger +* Copyright (c) 2016 Nicolas Gryman; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(c){c.preventDefault(),a.event.remove(u,"click",b)}function c(a,b){return(p?b.originalEvent.touches[0]:b)["page"+a.toUpperCase()]}function d(c,d,e){var h=a.Event(d,w);a.event.trigger(h,{originalEvent:c},c.target),h.isDefaultPrevented()&&(~d.indexOf("tap")&&!p?a.event.add(u,"click",b):c.preventDefault()),e&&(a.event.remove(u,s+"."+t,f),a.event.remove(u,r+"."+t,g))}function e(e){if(!(e.which>1)){var k=e.timeStamp||+new Date;i!=k&&(i=k,v.x=w.x=c("x",e),v.y=w.y=c("y",e),v.time=k,v.target=e.target,w.orientation=null,w.end=!1,h=!1,j=setTimeout(function(){d(e,"press",!0)},x.pressDuration),a.event.add(u,s+"."+t,f),a.event.add(u,r+"."+t,g),x.preventDefault&&(e.preventDefault(),a.event.add(u,"click",b)))}}function f(b){if(w.x=c("x",b),w.y=c("y",b),w.dx=w.x-v.x,w.dy=w.y-v.y,w.adx=Math.abs(w.dx),w.ady=Math.abs(w.dy),h=w.adx>x.motionThreshold||w.ady>x.motionThreshold){for(clearTimeout(j),w.orientation||(w.adx>w.ady?(w.orientation="horizontal",w.direction=w.dx>0?1:-1):(w.orientation="vertical",w.direction=w.dy>0?1:-1));b.target&&b.target!==v.target;)b.target=b.target.parentNode;return b.target!==v.target?(b.target=v.target,void g.call(this,a.Event(r+"."+t,b))):void d(b,"drag")}}function g(a){var b,c=a.timeStamp||+new Date,e=c-v.time;if(clearTimeout(j),h)a.target=v.target,e Finger.motionThreshold || move.ady > Finger.motionThreshold; + if (!motion) return; + + // moves cancel press events + clearTimeout(timeout); + + // orientation + if (!move.orientation) { + if (move.adx > move.ady) { + move.orientation = 'horizontal'; + move.direction = move.dx > 0 ? +1 : -1; + } + else { + move.orientation = 'vertical'; + move.direction = move.dy > 0 ? +1 : -1; + } + } + + // for delegated events, the target may change over time + // this ensures we notify the right target and simulates the mouseleave behavior + while (event.target && event.target !== start.target) + event.target = event.target.parentNode; + if (event.target !== start.target) { + event.target = start.target; + stopHandler.call(this, $.Event(stopEvent + '.' + namespace, event)); + return; + } + + // fire drag event + trigger(event, 'drag'); + } + + function stopHandler(event) { + var timeStamp = event.timeStamp || +new Date(), + dt = timeStamp - start.time, + evtName; + + // always clears press timeout + clearTimeout(timeout); + + // tap-like events + // triggered only if targets match + if (!motion && !cancel && event.target === start.target) { + var doubleTap = prevEl === event.target && timeStamp - prevTime < Finger.doubleTapInterval; + evtName = doubleTap ? 'doubletap' : 'tap'; + prevEl = doubleTap ? null : start.target; + prevTime = timeStamp; + } + // motion events + else { + // ensure last target is set the initial one + event.target = start.target; + if (dt < Finger.flickDuration) trigger(event, 'flick'); + move.end = true; + evtName = 'drag'; + } + + trigger(event, evtName, true); + } + + // initial binding + $.event.add(rootEl, startEvent + '.' + namespace, startHandler); + + // expose events as methods + $.each('tap doubletap press drag flick'.split(' '), function(i, name) { + $.fn[name] = function(fn) { + return fn ? this.on(name, fn) : this.trigger(name); + }; + }); + + return Finger; + +})); diff --git a/spree_theme/app/assets/javascripts/jquery.floatBar.js b/spree_theme/app/assets/javascripts/jquery.floatBar.js deleted file mode 100644 index 43f5cb7d..00000000 --- a/spree_theme/app/assets/javascripts/jquery.floatBar.js +++ /dev/null @@ -1,235 +0,0 @@ -/* - * floatBar v1.3 - * Copyright (c) 2013 Wendell http://blog.webql.info/ - * https://github.com/wendellvian/floatBar.git - -*/ -/* -// liveHeight:360, // 活动高度: 取0时边栏位置为固定样式 -// bodyWidth:960, // 页面布局宽度 -// winMinHeight:600, // 浏览器最小高度 -// topFixHeight:30, // 顶部Fixed层的高度 vertical:top共用 -// spaceWidth:10, // 浮动边栏与页面的间距 -// align:"right", // 浮动边栏左右停靠方式:right | left -// vertical:"bottom", // 浮动边栏上下停靠方式:bottom | top -// speed:300, // 速度:非0毫秒数值 | "slow" | "fast" -// aniOnOff:true, // 效果开关:true | false -// moveOnOff:true, // 运动开关:true | false - -// eleFocus:"focus", // 焦点:class="focus" -// eleName:"back", // 元素名称 -// eleLabel:"li", // 结构标签 -// anchorIndex:"anchor-index", // 锚节点 -// eleMargin:10, // 板块间距 -// mouseCtrl:"click", // 鼠标事件:click | mouseover -// focusOnOff:true // 滚动获焦开关:false | true -*/ - -(function($){ - $.fn.extend({ - floatBar:function(options){ - var defaults = { - liveHeight:360, - bodyWidth:960, - winMinHeight:600, - topFixHeight:30, - spaceWidth:10, - align:"right", - vertical:"bottom", - speed:300, - aniOnOff:true, - moveOnOff:true, - - eleFocus:"focus", - eleName:"back", - eleLabel:"li", - anchorIndex:"anchor-index", - eleMargin:10, - mouseCtrl:"click", - focusOnOff:true - } - var options = $.extend(defaults,options); - var thisObj = $(this); - - // 滚屏导航 - var queArray=[]; - var eleQue; - - $("["+options.anchorIndex+"]").each(function(){ - queArray.push({ - index:$(this).attr(options.anchorIndex), - height:$(this).height(), - top:$(this).offset().top - }); - }); - - function sCrollScreen(cObj){ - var oWinTop = $(window).scrollTop(); - thisObj.find("."+options.eleFocus).removeClass(options.eleFocus); - for(var i = 0,k = queArray.length;i oWinTop){ - if(eleQue.top > oWinTopX){ - eleQue = queArray[i-1]; - } - if(eleQue){ - thisObj.find(options.eleLabel).eq(eleQue.index-1).addClass(options.eleFocus); - } - break; - } - } - } - - thisObj.find(options.eleLabel).bind(options.mouseCtrl,function(){ - var index = $(this).index() + 1; - var $anchor = $("["+options.anchorIndex+"="+index+"]"); - $("html,body").stop().animate({ - scrollTop:$anchor.offset().top-options.eleMargin - },options.speed); - return false; - }); - thisObj.find("."+options.eleName+"top").click(function(){ - $("html,body").stop().animate({ - scrollTop:0 - },options.speed); - }); - thisObj.find("."+options.eleName+"bottom").click(function(){ - $("html,body").stop().animate({ - scrollTop:$("body").height() - },options.speed); - }); - - if(navigator.userAgent.indexOf("MSIE 6")!=-1){ - switch(options.vertical){ - case "bottom": - thisObj.addClass("JQUI-FloBarDown"); - break; - case "top": - thisObj.addClass("JQUI-FloBarUp"); - break; - } - $("head").append(""); - }else{ - thisObj.css({ - position:"fixed", - right:"0" - }); - } - - function dataEle(attrObj){ - switch(options.vertical){ - case "bottom": - thisObj.data(attrObj,parseInt(thisObj.css(attrObj))); // 存储样式表中bottom的值 - return thisObj.data(attrObj); - break; - case "top": - thisObj.data(attrObj,parseInt(thisObj.css(attrObj))); // 存储样式表中top的值 - if(navigator.userAgent.indexOf("MSIE 6")!=-1){ - thisObj.data(attrObj,parseInt(thisObj.css("margin-top"))); - } - return thisObj.data(attrObj); - break; - } - } - var dataConBottom = dataEle("bottom"); // 提取bottom值 - var dataConTop = dataEle("top"); // 提取bottom值 - var posiObj = posiEle(); // 首次函数加载 - // thisObj.show(); - - function posiEle(){ - var posiAlign; - var posi = {}; - posi.oWinWidth = $(window).width(); - posi.oWinHeight = $(window).height(); - posi.oFloatElementWidth = thisObj.width(); // 浮动边栏宽度 - oWinTop = $(window).scrollTop(); // 滚动条首次距离顶部的坐标 - - var posiRight = (posi.oWinWidth-options.bodyWidth)/2 - posi.oFloatElementWidth - options.spaceWidth; - // 左侧窗口停靠,相当left:0 - var posiLeft = posiRight + (options.bodyWidth + posi.oWinWidth)/2 + options.spaceWidth; - // 左侧页面停靠 - var posiLeftExp = posiLeft - (posi.oWinWidth-options.bodyWidth)/2 + posi.oFloatElementWidth + options.spaceWidth; - - // 浏览器可视窗口大小判断 - if(posi.oWinWidth <= (((posi.oWinWidth-options.bodyWidth)/2) + options.bodyWidth + posi.oFloatElementWidth + options.spaceWidth)){ - switch(options.align){ - case "right": - posiAlign = {right:'0'}; - break; - case "left": - posiAlign = {right:posiLeft}; - break; - } - thisObj.css(posiAlign); - }else{ - switch(options.align){ - case "right": - posiAlign = {right:posiRight}; - break; - case "left": - posiAlign = {right:posiLeftExp}; - break; - } - thisObj.css(posiAlign); - } - - options.moveOnOff ? chaScroll(posi) : " "; - options.focusOnOff ? sCrollScreen(posi) : " "; // 滚屏首次加载 - - return posi; - } - - function chaScroll(cObj){ - var floSwi = function(fT,fB){ - switch(options.vertical){ - case "bottom": - options.aniOnOff ? thisObj.stop().animate(fT,options.speed) : thisObj.css(fT); - break; - case "top": - options.aniOnOff ? thisObj.stop().animate(fB,options.speed) : thisObj.css(fB); - break; - } - } - - if(navigator.userAgent.indexOf("MSIE 6")!=-1){ // 判断IE6 - if(oWinTop < options.liveHeight && cObj.oWinHeight > options.winMinHeight){ - floSwi({marginTop:"0"},{marginTop:dataConTop}); - }else if(oWinTop < options.liveHeight && cObj.oWinHeight < options.winMinHeight){ - floSwi({marginTop:"0"},{marginTop:options.topFixHeight}); - }else if(oWinTop > options.liveHeight && cObj.oWinHeight > options.winMinHeight){ - floSwi({marginTop:-dataConBottom},{marginTop:options.topFixHeight}); - }else if(oWinTop > options.liveHeight && cObj.oWinHeight < options.winMinHeight){ - floSwi({marginTop:"0"},{marginTop:options.topFixHeight}); - } - } - else{ - if(oWinTop < options.liveHeight && cObj.oWinHeight > options.winMinHeight){ - floSwi({bottom:"0"},{top:dataConTop}); - }else if(oWinTop < options.liveHeight && cObj.oWinHeight < options.winMinHeight){ - floSwi({bottom:"0"},{top:options.topFixHeight}); - }else if(oWinTop > options.liveHeight && cObj.oWinHeight > options.winMinHeight){ - floSwi({bottom:dataConBottom},{top:options.topFixHeight}); - }else if(oWinTop > options.liveHeight && cObj.oWinHeight < options.winMinHeight){ - floSwi({bottom:"0"},{top:options.topFixHeight}); - } - } - } - - // 重置尺寸大小事件 - $(window).resize(function (){ - var posiObj = posiEle(); - }); - - // 滚动事件 - $(window).scroll(function(){ - var posiObj = posiEle(); - oWinTop = $(window).scrollTop(); // 滚动条滚动时距离顶部的坐标 - options.moveOnOff ? chaScroll(posiObj) : " "; - options.focusOnOff ? sCrollScreen(posiObj) : " "; - }); - - return $(this); - } - }); -})(jQuery); diff --git a/spree_theme/app/assets/javascripts/jquery.ias.dev.js b/spree_theme/app/assets/javascripts/jquery.ias.dev.js new file mode 100644 index 00000000..111fcc50 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery.ias.dev.js @@ -0,0 +1,5 @@ +//= require jquery-ias/jquery-ias +//= require jquery-ias/callbacks +//= require jquery-ias/extension/spinner +//= require jquery-ias/extension/trigger +//= require jquery-ias/extension/noneleft diff --git a/spree_theme/app/assets/javascripts/jquery.infinitescroll.dev.js b/spree_theme/app/assets/javascripts/jquery.infinitescroll.dev.js new file mode 100644 index 00000000..6f534324 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery.infinitescroll.dev.js @@ -0,0 +1,810 @@ +/*jshint undef: true */ +/*global jQuery: true */ + +/* + -------------------------------- + Infinite Scroll + -------------------------------- + + https://github.com/paulirish/infinite-scroll + + version 2.0b2.120519 + + Copyright 2011/12 Paul Irish & Luke Shumard + + Licensed under the MIT license + + + Documentation: http://infinite-scroll.com/ +*/ + +(function (window, $, undefined) { + "use strict"; + + $.infinitescroll = function infscr(options, callback, element) { + this.element = $(element); + + // Flag the object in the event of a failed creation + if (!this._create(options, callback)) { + this.failed = true; + } + }; + + $.infinitescroll.defaults = { + loading: { + finished: undefined, + finishedMsg: "Congratulations, you've reached the end of the internet.", + img: "data:image/gif;base64,R0lGODlh3AATAPQeAPDy+MnQ6LW/4N3h8MzT6rjC4sTM5r/I5NHX7N7j8c7U6tvg8OLl8uXo9Ojr9b3G5MfP6Ovu9tPZ7PT1+vX2+tbb7vf4+8/W69jd7rC73vn5/O/x+K243ai02////wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQECgD/ACwAAAAA3AATAAAF/6AnjmRpnmiqrmzrvnAsz3Rt33iu73zv/8CgcEj0BAScpHLJbDqf0Kh0Sq1ar9isdioItAKGw+MAKYMFhbF63CW438f0mg1R2O8EuXj/aOPtaHx7fn96goR4hmuId4qDdX95c4+RBIGCB4yAjpmQhZN0YGYGXitdZBIVGAsLoq4BBKQDswm1CQRkcG6ytrYKubq8vbfAcMK9v7q7EMO1ycrHvsW6zcTKsczNz8HZw9vG3cjTsMIYqQkCLBwHCgsMDQ4RDAYIqfYSFxDxEfz88/X38Onr16+Bp4ADCco7eC8hQYMAEe57yNCew4IVBU7EGNDiRn8Z831cGLHhSIgdFf9chIeBg7oA7gjaWUWTVQAGE3LqBDCTlc9WOHfm7PkTqNCh54rePDqB6M+lR536hCpUqs2gVZM+xbrTqtGoWqdy1emValeXKzggYBBB5y1acFNZmEvXAoN2cGfJrTv3bl69Ffj2xZt3L1+/fw3XRVw4sGDGcR0fJhxZsF3KtBTThZxZ8mLMgC3fRatCbYMNFCzwLEqLgE4NsDWs/tvqdezZf13Hvk2A9Szdu2X3pg18N+68xXn7rh1c+PLksI/Dhe6cuO3ow3NfV92bdArTqC2Ebd3A8vjf5QWfH6Bg7Nz17c2fj69+fnq+8N2Lty+fuP78/eV2X13neIcCeBRwxorbZrA1ANoCDGrgoG8RTshahQ9iSKEEzUmYIYfNWViUhheCGJyIP5E4oom7WWjgCeBFAJNv1DVV01MAdJhhjdkplWNzO/5oXI846njjVEIqR2OS2B1pE5PVscajkxhMycqLJghQSwT40PgfAl4GqNSXYdZXJn5gSkmmmmJu1aZYb14V51do+pTOCmA40AqVCIhG5IJ9PvYnhIFOxmdqhpaI6GeHCtpooisuutmg+Eg62KOMKuqoTaXgicQWoIYq6qiklmoqFV0UoeqqrLbq6quwxirrrLTWauutJ4QAACH5BAUKABwALAcABADOAAsAAAX/IPd0D2dyRCoUp/k8gpHOKtseR9yiSmGbuBykler9XLAhkbDavXTL5k2oqFqNOxzUZPU5YYZd1XsD72rZpBjbeh52mSNnMSC8lwblKZGwi+0QfIJ8CncnCoCDgoVnBHmKfByGJimPkIwtiAeBkH6ZHJaKmCeVnKKTHIihg5KNq4uoqmEtcRUtEREMBggtEr4QDrjCuRC8h7/BwxENeicSF8DKy82pyNLMOxzWygzFmdvD2L3P0dze4+Xh1Arkyepi7dfFvvTtLQkZBC0T/FX3CRgCMOBHsJ+EHYQY7OinAGECgQsB+Lu3AOK+CewcWjwxQeJBihtNGHSoQOE+iQ3//4XkwBBhRZMcUS6YSXOAwIL8PGqEaSJCiYt9SNoCmnJPAgUVLChdaoFBURN8MAzl2PQphwQLfDFd6lTowglHve6rKpbjhK7/pG5VinZP1qkiz1rl4+tr2LRwWU64cFEihwEtZgbgR1UiHaMVvxpOSwBA37kzGz9e8G+B5MIEKLutOGEsAH2ATQwYfTmuX8aETWdGPZmiZcccNSzeTCA1Sw0bdiitC7LBWgu8jQr8HRzqgpK6gX88QbrB14z/kF+ELpwB8eVQj/JkqdylAudji/+ts3039vEEfK8Vz2dlvxZKG0CmbkKDBvllRd6fCzDvBLKBDSCeffhRJEFebFk1k/Mv9jVIoIJZSeBggwUaNeB+Qk34IE0cXlihcfRxkOAJFFhwGmKlmWDiakZhUJtnLBpnWWcnKaAZcxI0piFGGLBm1mc90kajSCveeBVWKeYEoU2wqeaQi0PetoE+rr14EpVC7oAbAUHqhYExbn2XHHsVqbcVew9tx8+XJKk5AZsqqdlddGpqAKdbAYBn1pcczmSTdWvdmZ17c1b3FZ99vnTdCRFM8OEcAhLwm1NdXnWcBBSMRWmfkWZqVlsmLIiAp/o1gGV2vpS4lalGYsUOqXrddcKCmK61aZ8SjEpUpVFVoCpTj4r661Km7kBHjrDyc1RAIQAAIfkEBQoAGwAsBwAEAM4ACwAABf/gtmUCd4goQQgFKj6PYKi0yrrbc8i4ohQt12EHcal+MNSQiCP8gigdz7iCioaCIvUmZLp8QBzW0EN2vSlCuDtFKaq4RyHzQLEKZNdiQDhRDVooCwkbfm59EAmKi4SGIm+AjIsKjhsqB4mSjT2IOIOUnICeCaB/mZKFNTSRmqVpmJqklSqskq6PfYYCDwYHDC4REQwGCBLGxxIQDsHMwhAIX8bKzcENgSLGF9PU1j3Sy9zX2NrgzQziChLk1BHWxcjf7N046tvN82715czn9Pryz6Ilc4ACj4EBOCZM8KEnAYYADBRKnACAYUMFv1wotIhCEcaJCisqwJFgAUSQGyX/kCSVUUTIdKMwJlyo0oXHlhskwrTJciZHEXsgaqS4s6PJiCAr1uzYU8kBBSgnWFqpoMJMUjGtDmUwkmfVmVypakWhEKvXsS4nhLW5wNjVroJIoc05wSzTr0PtiigpYe4EC2vj4iWrFu5euWIMRBhacaVJhYQBEFjA9jHjyQ0xEABwGceGAZYjY0YBOrRLCxUp29QM+bRkx5s7ZyYgVbTqwwti2ybJ+vLtDYpycyZbYOlptxdx0kV+V7lC5iJAyyRrwYKxAdiz82ng0/jnAdMJFz0cPi104Ec1Vj9/M6F173vKL/feXv156dw11tlqeMMnv4V5Ap53GmjQQH97nFfg+IFiucfgRX5Z8KAgbUlQ4IULIlghhhdOSB6AgX0IVn8eReghen3NRIBsRgnH4l4LuEidZBjwRpt6NM5WGwoW0KSjCwX6yJSMab2GwwAPDXfaBCtWpluRTQqC5JM5oUZAjUNS+VeOLWpJEQ7VYQANW0INJSZVDFSnZphjSikfmzE5N4EEbQI1QJmnWXCmHulRp2edwDXF43txukenJwvI9xyg9Q26Z3MzGUcBYFEChZh6DVTq34AU8Iflh51Sd+CnKFYQ6mmZkhqfBKfSxZWqA9DZanWjxmhrWwi0qtCrt/43K6WqVjjpmhIqgEGvculaGKklKstAACEAACH5BAUKABwALAcABADOAAsAAAX/ICdyQmaMYyAUqPgIBiHPxNpy79kqRXH8wAPsRmDdXpAWgWdEIYm2llCHqjVHU+jjJkwqBTecwItShMXkEfNWSh8e1NGAcLgpDGlRgk7EJ/6Ae3VKfoF/fDuFhohVeDeCfXkcCQqDVQcQhn+VNDOYmpSWaoqBlUSfmowjEA+iEAEGDRGztAwGCDcXEA60tXEiCrq8vREMEBLIyRLCxMWSHMzExnbRvQ2Sy7vN0zvVtNfU2tLY3rPgLdnDvca4VQS/Cpk3ABwSLQkYAQwT/P309vcI7OvXr94jBQMJ/nskkGA/BQBRLNDncAIAiDcG6LsxAWOLiQzmeURBKWSLCQbv/1F0eDGinJUKR47YY1IEgQASKk7Yc7ACRwZm7mHweRJoz59BJUogisKCUaFMR0x4SlJBVBFTk8pZivTR0K73rN5wqlXEAq5Fy3IYgHbEzQ0nLy4QSoCjXLoom96VOJEeCosK5n4kkFfqXjl94wa+l1gvAcGICbewAOAxY8l/Ky/QhAGz4cUkGxu2HNozhwMGBnCUqUdBg9UuW9eUynqSwLHIBujePef1ZGQZXcM+OFuEBeBhi3OYgLyqcuaxbT9vLkf4SeqyWxSQpKGB2gQpm1KdWbu72rPRzR9Ne2Nu9Kzr/1Jqj0yD/fvqP4aXOt5sW/5qsXXVcv1Nsp8IBUAmgswGF3llGgeU1YVXXKTN1FlhWFXW3gIE+DVChApysACHHo7Q4A35lLichh+ROBmLKAzgYmYEYDAhCgxKGOOMn4WR4kkDaoBBOxJtdNKQxFmg5JIWIBnQc07GaORfUY4AEkdV6jHlCEISSZ5yTXpp1pbGZbkWmcuZmQCaE6iJ0FhjMaDjTMsgZaNEHFRAQVp3bqXnZED1qYcECOz5V6BhSWCoVJQIKuKQi2KFKEkEFAqoAo7uYSmO3jk61wUUMKmknJ4SGimBmAa0qVQBhAAAIfkEBQoAGwAsBwAEAM4ACwAABf/gJm5FmRlEqhJC+bywgK5pO4rHI0D3pii22+Mg6/0Ej96weCMAk7cDkXf7lZTTnrMl7eaYoy10JN0ZFdco0XAuvKI6qkgVFJXYNwjkIBcNBgR8TQoGfRsJCRuCYYQQiI+ICosiCoGOkIiKfSl8mJkHZ4U9kZMbKaI3pKGXmJKrngmug4WwkhA0lrCBWgYFCCMQFwoQDRHGxwwGCBLMzRLEx8iGzMMO0cYNeCMKzBDW19lnF9DXDIY/48Xg093f0Q3s1dcR8OLe8+Y91OTv5wrj7o7B+7VNQqABIoRVCMBggsOHE36kSoCBIcSH3EbFangxogJYFi8CkJhqQciLJEf/LDDJEeJIBT0GsOwYUYJGBS0fjpQAMidGmyVP6sx4Y6VQhzs9VUwkwqaCCh0tmKoFtSMDmBOf9phg4SrVrROuasRQAaxXpVUhdsU6IsECZlvX3kwLUWzRt0BHOLTbNlbZG3vZinArge5Dvn7wbqtQkSYAAgtKmnSsYKVKo2AfW048uaPmG386i4Q8EQMBAIAnfB7xBxBqvapJ9zX9WgRS2YMpnvYMGdPK3aMjt/3dUcNI4blpj7iwkMFWDXDvSmgAlijrt9RTR78+PS6z1uAJZIe93Q8g5zcsWCi/4Y+C8bah5zUv3vv89uft30QP23punGCx5954oBBwnwYaNCDY/wYrsYeggnM9B2Fpf8GG2CEUVWhbWAtGouEGDy7Y4IEJVrbSiXghqGKIo7z1IVcXIkKWWR361QOLWWnIhwERpLaaCCee5iMBGJQmJGyPFTnbkfHVZGRtIGrg5HALEJAZbu39BuUEUmq1JJQIPtZilY5hGeSWsSk52G9XqsmgljdIcABytq13HyIM6RcUA+r1qZ4EBF3WHWB29tBgAzRhEGhig8KmqKFv8SeCeo+mgsF7YFXa1qWSbkDpom/mqR1PmHCqJ3fwNRVXjC7S6CZhFVCQ2lWvZiirhQq42SACt25IK2hv8TprriUV1usGgeka7LFcNmCldMLi6qZMgFLgpw16Cipb7bC1knXsBiEAACH5BAUKABsALAcABADOAAsAAAX/4FZsJPkUmUGsLCEUTywXglFuSg7fW1xAvNWLF6sFFcPb42C8EZCj24EJdCp2yoegWsolS0Uu6fmamg8n8YYcLU2bXSiRaXMGvqV6/KAeJAh8VgZqCX+BexCFioWAYgqNi4qAR4ORhRuHY408jAeUhAmYYiuVlpiflqGZa5CWkzc5fKmbbhIpsAoQDRG8vQwQCBLCwxK6vb5qwhfGxxENahvCEA7NzskSy7vNzzzK09W/PNHF1NvX2dXcN8K55cfh69Luveol3vO8zwi4Yhj+AQwmCBw4IYclDAAJDlQggVOChAoLKkgFkSCAHDwWLKhIEOONARsDKryogFPIiAUb/95gJNIiw4wnI778GFPhzBKFOAq8qLJEhQpiNArjMcHCmlTCUDIouTKBhApELSxFWiGiVKY4E2CAekPgUphDu0742nRrVLJZnyrFSqKQ2ohoSYAMW6IoDpNJ4bLdILTnAj8KUF7UeENjAKuDyxIgOuGiOI0EBBMgLNew5AUrDTMGsFixwBIaNCQuAXJB57qNJ2OWm2Aj4skwCQCIyNkhhtMkdsIuodE0AN4LJDRgfLPtn5YDLdBlraAByuUbBgxQwICxMOnYpVOPej074OFdlfc0TqC62OIbcppHjV4o+LrieWhfT8JC/I/T6W8oCl29vQ0XjLdBaA3s1RcPBO7lFvpX8BVoG4O5jTXRQRDuJ6FDTzEWF1/BCZhgbyAKE9qICYLloQYOFtahVRsWYlZ4KQJHlwHS/IYaZ6sZd9tmu5HQm2xi1UaTbzxYwJk/wBF5g5EEYOBZeEfGZmNdFyFZmZIR4jikbLThlh5kUUVJGmRT7sekkziRWUIACABk3T4qCsedgO4xhgGcY7q5pHJ4klBBTQRJ0CeHcoYHHUh6wgfdn9uJdSdMiebGJ0zUPTcoS286FCkrZxnYoYYKWLkBowhQoBeaOlZAgVhLidrXqg2GiqpQpZ4apwSwRtjqrB3muoF9BboaXKmshlqWqsWiGt2wphJkQbAU5hoCACH5BAUKABsALAcABADOAAsAAAX/oGFw2WZuT5oZROsSQnGaKjRvilI893MItlNOJ5v5gDcFrHhKIWcEYu/xFEqNv6B1N62aclysF7fsZYe5aOx2yL5aAUGSaT1oTYMBwQ5VGCAJgYIJCnx1gIOBhXdwiIl7d0p2iYGQUAQBjoOFSQR/lIQHnZ+Ue6OagqYzSqSJi5eTpTxGcjcSChANEbu8DBAIEsHBChe5vL13G7fFuscRDcnKuM3H0La3EA7Oz8kKEsXazr7Cw9/Gztar5uHHvte47MjktznZ2w0G1+D3BgirAqJmJMAQgMGEgwgn5Ei0gKDBhBMALGRYEOJBb5QcWlQo4cbAihZz3GgIMqFEBSM1/4ZEOWPAgpIIJXYU+PIhRG8ja1qU6VHlzZknJNQ6UanCjQkWCIGSUGEjAwVLjc44+DTqUQtPPS5gejUrTa5TJ3g9sWCr1BNUWZI161StiQUDmLYdGfesibQ3XMq1OPYthrwuA2yU2LBs2cBHIypYQPPlYAKFD5cVvNPtW8eVGbdcQADATsiNO4cFAPkvHpedPzc8kUcPgNGgZ5RNDZG05reoE9s2vSEP79MEGiQGy1qP8LA4ZcdtsJE48ONoLTBtTV0B9LsTnPceoIDBDQvS7W7vfjVY3q3eZ4A339J4eaAmKqU/sV58HvJh2RcnIBsDUw0ABqhBA5aV5V9XUFGiHfVeAiWwoFgJJrIXRH1tEMiDFV4oHoAEGlaWhgIGSGBO2nFomYY3mKjVglidaNYJGJDkWW2xxTfbjCbVaOGNqoX2GloR8ZeTaECS9pthRGJH2g0b3Agbk6hNANtteHD2GJUucfajCQBy5OOTQ25ZgUPvaVVQmbKh9510/qQpwXx3SQdfk8tZJOd5b6JJFplT3ZnmmX3qd5l1eg5q00HrtUkUn0AKaiGjClSAgKLYZcgWXwocGRcCFGCKwSB6ceqphwmYRUFYT/1WKlOdUpipmxW0mlCqHjYkAaeoZlqrqZ4qd+upQKaapn/AmgAegZ8KUtYtFAQQAgAh+QQFCgAbACwHAAQAzgALAAAF/+C2PUcmiCiZGUTrEkKBis8jQEquKwU5HyXIbEPgyX7BYa5wTNmEMwWsSXsqFbEh8DYs9mrgGjdK6GkPY5GOeU6ryz7UFopSQEzygOGhJBjoIgMDBAcBM0V/CYqLCQqFOwobiYyKjn2TlI6GKC2YjJZknouaZAcQlJUHl6eooJwKooobqoewrJSEmyKdt59NhRKFMxLEEA4RyMkMEAjDEhfGycqAG8TQx9IRDRDE3d3R2ctD1RLg0ttKEnbY5wZD3+zJ6M7X2RHi9Oby7u/r9g38UFjTh2xZJBEBMDAboogAgwkQI07IMUORwocSJwCgWDFBAIwZOaJIsOBjRogKJP8wTODw5ESVHVtm3AhzpEeQElOuNDlTZ0ycEUWKWFASqEahGwYUPbnxoAgEdlYSqDBkgoUNClAlIHbSAoOsqCRQnQHxq1axVb06FWFxLIqyaze0Tft1JVqyE+pWXMD1pF6bYl3+HTqAWNW8cRUFzmih0ZAAB2oGKukSAAGGRHWJgLiR6AylBLpuHKKUMlMCngMpDSAa9QIUggZVVvDaJobLeC3XZpvgNgCmtPcuwP3WgmXSq4do0DC6o2/guzcseECtUoO0hmcsGKDgOt7ssBd07wqesAIGZC1YIBa7PQHvb1+SFo+++HrJSQfB33xfav3i5eX3Hnb4CTJgegEq8tH/YQEOcIJzbm2G2EoYRLgBXFpVmFYDcREV4HIcnmUhiGBRouEMJGJGzHIspqgdXxK0yCKHRNXoIX4uorCdTyjkyNtdPWrA4Up82EbAbzMRxxZRR54WXVLDIRmRcag5d2R6ugl3ZXzNhTecchpMhIGVAKAYpgJjjsSklBEd99maZoo535ZvdamjBEpusJyctg3h4X8XqodBMx0tiNeg/oGJaKGABpogS40KSqiaEgBqlQWLUtqoVQnytekEjzo0hHqhRorppOZt2p923M2AAV+oBtpAnnPNoB6HaU6mAAIU+IXmi3j2mtFXuUoHKwXpzVrsjcgGOauKEjQrwq157hitGq2NoWmjh7z6Wmxb0m5w66+2VRAuXN/yFUAIACH5BAUKABsALAcABADOAAsAAAX/4CZuRiaM45MZqBgIRbs9AqTcuFLE7VHLOh7KB5ERdjJaEaU4ClO/lgKWjKKcMiJQ8KgumcieVdQMD8cbBeuAkkC6LYLhOxoQ2PF5Ys9PKPBMen17f0CCg4VSh32JV4t8jSNqEIOEgJKPlkYBlJWRInKdiJdkmQlvKAsLBxdABA4RsbIMBggtEhcQsLKxDBC2TAS6vLENdJLDxMZAubu8vjIbzcQRtMzJz79S08oQEt/guNiyy7fcvMbh4OezdAvGrakLAQwyABsELQkY9BP+//ckyPDD4J9BfAMh1GsBoImMeQUN+lMgUJ9CiRMa5msxoB9Gh/o8GmxYMZXIgxtR/yQ46S/gQAURR0pDwYDfywoyLPip5AdnCwsMFPBU4BPFhKBDi444quCmDKZOfwZ9KEGpCKgcN1jdALSpPqIYsabS+nSqvqplvYqQYAeDPgwKwjaMtiDl0oaqUAyo+3TuWwUAMPpVCfee0cEjVBGQq2ABx7oTWmQk4FglZMGN9fGVDMCuiH2AOVOu/PmyxM630gwM0CCn6q8LjVJ8GXvpa5Uwn95OTC/nNxkda1/dLSK475IjCD6dHbK1ZOa4hXP9DXs5chJ00UpVm5xo2qRpoxptwF2E4/IbJpB/SDz9+q9b1aNfQH08+p4a8uvX8B53fLP+ycAfemjsRUBgp1H20K+BghHgVgt1GXZXZpZ5lt4ECjxYR4ScUWiShEtZqBiIInRGWnERNnjiBglw+JyGnxUmGowsyiiZg189lNtPGACjV2+S9UjbU0JWF6SPvEk3QZEqsZYTk3UAaRSUnznJI5LmESCdBVSyaOWUWLK4I5gDUYVeV1T9l+FZClCAUVA09uSmRHBCKAECFEhW51ht6rnmWBXkaR+NjuHpJ40D3DmnQXt2F+ihZxlqVKOfQRACACH5BAUKABwALAcABADOAAsAAAX/ICdyUCkUo/g8mUG8MCGkKgspeC6j6XEIEBpBUeCNfECaglBcOVfJFK7YQwZHQ6JRZBUqTrSuVEuD3nI45pYjFuWKvjjSkCoRaBUMWxkwBGgJCXspQ36Bh4EEB0oKhoiBgyNLjo8Ki4QElIiWfJqHnISNEI+Ql5J9o6SgkqKkgqYihamPkW6oNBgSfiMMDQkGCBLCwxIQDhHIyQwQCGMKxsnKVyPCF9DREQ3MxMPX0cu4wt7J2uHWx9jlKd3o39MiuefYEcvNkuLt5O8c1ePI2tyELXGQwoGDAQf+iEC2xByDCRAjTlAgIUWCBRgCPJQ4AQBFXAs0coT40WLIjRxL/47AcHLkxIomRXL0CHPERZkpa4q4iVKiyp0tR/7kwHMkTUBBJR5dOCEBAVcKKtCAyOHpowXCpk7goABqBZdcvWploACpBKkpIJI1q5OD2rIWE0R1uTZu1LFwbWL9OlKuWb4c6+o9i3dEgw0RCGDUG9KlRw56gDY2qmCByZBaASi+TACA0TucAaTteCcy0ZuOK3N2vJlx58+LRQyY3Xm0ZsgjZg+oPQLi7dUcNXi0LOJw1pgNtB7XG6CBy+U75SYfPTSQAgZTNUDnQHt67wnbZyvwLgKiMN3oCZB3C76tdewpLFgIP2C88rbi4Y+QT3+8S5USMICZXWj1pkEDeUU3lOYGB3alSoEiMIjgX4WlgNF2EibIwQIXauWXSRg2SAOHIU5IIIMoZkhhWiJaiFVbKo6AQEgQXrTAazO1JhkBrBG3Y2Y6EsUhaGn95hprSN0oWpFE7rhkeaQBchGOEWnwEmc0uKWZj0LeuNV3W4Y2lZHFlQCSRjTIl8uZ+kG5HU/3sRlnTG2ytyadytnD3HrmuRcSn+0h1dycexIK1KCjYaCnjCCVqOFFJTZ5GkUUjESWaUIKU2lgCmAKKQIUjHapXRKE+t2og1VgankNYnohqKJ2CmKplso6GKz7WYCgqxeuyoF8u9IQAgA7", + msg: null, + msgText: "Loading the next set of posts...", + selector: null, + speed: 'fast', + start: undefined + }, + state: { + isDuringAjax: false, + isInvalidPage: false, + isDestroyed: false, + isDone: false, // For when it goes all the way through the archive. + isPaused: false, + currPage: 1 + }, + debug: false, + behavior: undefined, + binder: $(window), // used to cache the selector + nextSelector: "div.navigation a:first", + navSelector: "div.navigation", + contentSelector: null, // rename to pageFragment + extraScrollPx: 150, + itemSelector: "div.post", + animate: false, + pathParse: undefined, + dataType: 'html', + appendCallback: true, + bufferPx: 40, + errorCallback: function () { }, + infid: 0, //Instance ID + pixelsFromNavToBottom: undefined, + path: undefined, // Either parts of a URL as an array (e.g. ["/page/", "/"] or a function that takes in the page number and returns a URL + prefill: false, // When the document is smaller than the window, load data until the document is larger or links are exhausted + maxPage: undefined // to manually control maximum page (when maxPage is undefined, maximum page limitation is not work) + }; + + $.infinitescroll.prototype = { + + /* + ---------------------------- + Private methods + ---------------------------- + */ + + // Bind or unbind from scroll + _binding: function infscr_binding(binding) { + + var instance = this, + opts = instance.options; + + opts.v = '2.0b2.120520'; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_binding_'+opts.behavior] !== undefined) { + this['_binding_'+opts.behavior].call(this); + return; + } + + if (binding !== 'bind' && binding !== 'unbind') { + this._debug('Binding value ' + binding + ' not valid'); + return false; + } + + if (binding === 'unbind') { + (this.options.binder).unbind('smartscroll.infscr.' + instance.options.infid); + } else { + (this.options.binder)[binding]('smartscroll.infscr.' + instance.options.infid, function () { + instance.scroll(); + }); + } + + this._debug('Binding', binding); + }, + + // Fundamental aspects of the plugin are initialized + _create: function infscr_create(options, callback) { + + // Add custom options to defaults + var opts = $.extend(true, {}, $.infinitescroll.defaults, options); + this.options = opts; + var $window = $(window); + var instance = this; + + // Validate selectors + if (!instance._validate(options)) { + return false; + } + + // Validate page fragment path + var path = $(opts.nextSelector).attr('href'); + if (!path) { + this._debug('Navigation selector not found'); + return false; + } + + // Set the path to be a relative URL from root. + opts.path = opts.path || this._determinepath(path); + + // contentSelector is 'page fragment' option for .load() / .ajax() calls + opts.contentSelector = opts.contentSelector || this.element; + + // loading.selector - if we want to place the load message in a specific selector, defaulted to the contentSelector + opts.loading.selector = opts.loading.selector || opts.contentSelector; + + // Define loading.msg + opts.loading.msg = opts.loading.msg || $('
    Loading...
    ' + opts.loading.msgText + '
    '); + + // Preload loading.img + (new Image()).src = opts.loading.img; + + // distance from nav links to bottom + // computed as: height of the document + top offset of container - top offset of nav link + if(opts.pixelsFromNavToBottom === undefined) { + opts.pixelsFromNavToBottom = $(document).height() - $(opts.navSelector).offset().top; + } + + var self = this; + + // determine loading.start actions + opts.loading.start = opts.loading.start || function() { + $(opts.navSelector).hide(); + opts.loading.msg + .appendTo(opts.loading.selector) + .show(opts.loading.speed, $.proxy(function() { + this.beginAjax(opts); + }, self)); + }; + + // determine loading.finished actions + opts.loading.finished = opts.loading.finished || function() { + opts.loading.msg.fadeOut(opts.loading.speed); + }; + + // callback loading + opts.callback = function(instance, data, url) { + if (!!opts.behavior && instance['_callback_'+opts.behavior] !== undefined) { + instance['_callback_'+opts.behavior].call($(opts.contentSelector)[0], data, url); + } + + if (callback) { + callback.call($(opts.contentSelector)[0], data, opts, url); + } + + if (opts.prefill) { + $window.bind("resize.infinite-scroll", instance._prefill); + } + }; + + if (options.debug) { + // Tell IE9 to use its built-in console + if (Function.prototype.bind && (typeof console === 'object' || typeof console === 'function') && typeof console.log === "object") { + ["log","info","warn","error","assert","dir","clear","profile","profileEnd"] + .forEach(function (method) { + console[method] = this.call(console[method], console); + }, Function.prototype.bind); + } + } + + this._setup(); + + // Setups the prefill method for use + if (opts.prefill) { + this._prefill(); + } + + // Return true to indicate successful creation + return true; + }, + + _prefill: function infscr_prefill() { + var instance = this; + var $document = $(document); + var $window = $(window); + + function needsPrefill() { + return ($document.height() <= $window.height()); + } + + this._prefill = function() { + if (needsPrefill()) { + instance.scroll(); + } + + $window.bind("resize.infinite-scroll", function() { + if (needsPrefill()) { + $window.unbind("resize.infinite-scroll"); + instance.scroll(); + } + }); + }; + + // Call self after setting up the new function + this._prefill(); + }, + + // Console log wrapper + _debug: function infscr_debug() { + if (true !== this.options.debug) { + return; + } + + if (typeof console !== 'undefined' && typeof console.log === 'function') { + // Modern browsers + // Single argument, which is a string + if ((Array.prototype.slice.call(arguments)).length === 1 && typeof Array.prototype.slice.call(arguments)[0] === 'string') { + console.log( (Array.prototype.slice.call(arguments)).toString() ); + } else { + console.log( Array.prototype.slice.call(arguments) ); + } + } else if (!Function.prototype.bind && typeof console !== 'undefined' && typeof console.log === 'object') { + // IE8 + Function.prototype.call.call(console.log, console, Array.prototype.slice.call(arguments)); + } + }, + + // find the number to increment in the path. + _determinepath: function infscr_determinepath(path) { + + var opts = this.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_determinepath_'+opts.behavior] !== undefined) { + return this['_determinepath_'+opts.behavior].call(this,path); + } + + if (!!opts.pathParse) { + + this._debug('pathParse manual'); + return opts.pathParse(path, this.options.state.currPage+1); + + } else if (path.match(/^(.*?)\b2\b(.*?$)/)) { + path = path.match(/^(.*?)\b2\b(.*?$)/).slice(1); + + // if there is any 2 in the url at all. + } else if (path.match(/^(.*?)2(.*?$)/)) { + + // page= is used in django: + // http://www.infinite-scroll.com/changelog/comment-page-1/#comment-127 + if (path.match(/^(.*?page=)2(\/.*|$)/)) { + path = path.match(/^(.*?page=)2(\/.*|$)/).slice(1); + return path; + } + + path = path.match(/^(.*?)2(.*?$)/).slice(1); + + } else { + + // page= is used in drupal too but second page is page=1 not page=2: + // thx Jerod Fritz, vladikoff + if (path.match(/^(.*?page=)1(\/.*|$)/)) { + path = path.match(/^(.*?page=)1(\/.*|$)/).slice(1); + return path; + } else { + this._debug('Sorry, we couldn\'t parse your Next (Previous Posts) URL. Verify your the css selector points to the correct A tag. If you still get this error: yell, scream, and kindly ask for help at infinite-scroll.com.'); + // Get rid of isInvalidPage to allow permalink to state + opts.state.isInvalidPage = true; //prevent it from running on this page. + } + } + this._debug('determinePath', path); + return path; + + }, + + // Custom error + _error: function infscr_error(xhr) { + + var opts = this.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_error_'+opts.behavior] !== undefined) { + this['_error_'+opts.behavior].call(this,xhr); + return; + } + + if (xhr !== 'destroy' && xhr !== 'end') { + xhr = 'unknown'; + } + + this._debug('Error', xhr); + + if (xhr === 'end') { + this._showdonemsg(); + } + + opts.state.isDone = true; + opts.state.currPage = 1; // if you need to go back to this instance + opts.state.isPaused = false; + this._binding('unbind'); + + }, + + // Load Callback + _loadcallback: function infscr_loadcallback(box, data, url) { + var opts = this.options, + callback = this.options.callback, // GLOBAL OBJECT FOR CALLBACK + result = (opts.state.isDone) ? 'done' : (!opts.appendCallback) ? 'no-append' : 'append', + frag; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_loadcallback_'+opts.behavior] !== undefined) { + this['_loadcallback_'+opts.behavior].call(this,box,data); + return; + } + + switch (result) { + case 'done': + this._showdonemsg(); + return false; + + case 'no-append': + if (opts.dataType === 'html') { + data = '
    ' + data + '
    '; + data = $(data).find(opts.itemSelector); + } + break; + + case 'append': + var children = box.children(); + // if it didn't return anything + if (children.length === 0) { + return this._error('end'); + } + + // use a documentFragment because it works when content is going into a table or UL + frag = document.createDocumentFragment(); + while (box[0].firstChild) { + frag.appendChild(box[0].firstChild); + } + + this._debug('contentSelector', $(opts.contentSelector)[0]); + $(opts.contentSelector)[0].appendChild(frag); + // previously, we would pass in the new DOM element as context for the callback + // however we're now using a documentfragment, which doesn't have parents or children, + // so the context is the contentContainer guy, and we pass in an array + // of the elements collected as the first argument. + + data = children.get(); + break; + } + + // loadingEnd function + opts.loading.finished.call($(opts.contentSelector)[0],opts); + + // smooth scroll to ease in the new content + if (opts.animate) { + var scrollTo = $(window).scrollTop() + $('#infscr-loading').height() + opts.extraScrollPx + 'px'; + $('html,body').animate({ scrollTop: scrollTo }, 800, function () { opts.state.isDuringAjax = false; }); + } + + if (!opts.animate) { + // once the call is done, we can allow it again. + opts.state.isDuringAjax = false; + } + + callback(this, data, url); + + if (opts.prefill) { + this._prefill(); + } + }, + + _nearbottom: function infscr_nearbottom() { + + var opts = this.options, + pixelsFromWindowBottomToBottom = 0 + $(document).height() - (opts.binder.scrollTop()) - $(window).height(); + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_nearbottom_'+opts.behavior] !== undefined) { + return this['_nearbottom_'+opts.behavior].call(this); + } + + this._debug('math:', pixelsFromWindowBottomToBottom, opts.pixelsFromNavToBottom); + + // if distance remaining in the scroll (including buffer) is less than the orignal nav to bottom.... + return (pixelsFromWindowBottomToBottom - opts.bufferPx < opts.pixelsFromNavToBottom); + + }, + + // Pause / temporarily disable plugin from firing + _pausing: function infscr_pausing(pause) { + + var opts = this.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_pausing_'+opts.behavior] !== undefined) { + this['_pausing_'+opts.behavior].call(this,pause); + return; + } + + // If pause is not 'pause' or 'resume', toggle it's value + if (pause !== 'pause' && pause !== 'resume' && pause !== null) { + this._debug('Invalid argument. Toggling pause value instead'); + } + + pause = (pause && (pause === 'pause' || pause === 'resume')) ? pause : 'toggle'; + + switch (pause) { + case 'pause': + opts.state.isPaused = true; + break; + + case 'resume': + opts.state.isPaused = false; + break; + + case 'toggle': + opts.state.isPaused = !opts.state.isPaused; + break; + } + + this._debug('Paused', opts.state.isPaused); + return false; + + }, + + // Behavior is determined + // If the behavior option is undefined, it will set to default and bind to scroll + _setup: function infscr_setup() { + + var opts = this.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_setup_'+opts.behavior] !== undefined) { + this['_setup_'+opts.behavior].call(this); + return; + } + + this._binding('bind'); + + return false; + + }, + + // Show done message + _showdonemsg: function infscr_showdonemsg() { + + var opts = this.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_showdonemsg_'+opts.behavior] !== undefined) { + this['_showdonemsg_'+opts.behavior].call(this); + return; + } + + opts.loading.msg + .find('img') + .hide() + .parent() + .find('div').html(opts.loading.finishedMsg).animate({ opacity: 1 }, 2000, function () { + $(this).parent().fadeOut(opts.loading.speed); + }); + + // user provided callback when done + opts.errorCallback.call($(opts.contentSelector)[0],'done'); + }, + + // grab each selector option and see if any fail + _validate: function infscr_validate(opts) { + for (var key in opts) { + if (key.indexOf && key.indexOf('Selector') > -1 && $(opts[key]).length === 0) { + this._debug('Your ' + key + ' found no elements.'); + return false; + } + } + + return true; + }, + + /* + ---------------------------- + Public methods + ---------------------------- + */ + + // Bind to scroll + bind: function infscr_bind() { + this._binding('bind'); + }, + + // Destroy current instance of plugin + destroy: function infscr_destroy() { + this.options.state.isDestroyed = true; + this.options.loading.finished(); + return this._error('destroy'); + }, + + // Set pause value to false + pause: function infscr_pause() { + this._pausing('pause'); + }, + + // Set pause value to false + resume: function infscr_resume() { + this._pausing('resume'); + }, + + beginAjax: function infscr_ajax(opts) { + var instance = this, + path = opts.path, + box, desturl, method, condition; + + // increment the URL bit. e.g. /page/3/ + opts.state.currPage++; + + // Manually control maximum page + if ( opts.maxPage != undefined && opts.state.currPage > opts.maxPage ){ + this.destroy(); + return; + } + + // if we're dealing with a table we can't use DIVs + box = $(opts.contentSelector).is('table') ? $('') : $('
    '); + + desturl = (typeof path === 'function') ? path(opts.state.currPage) : path.join(opts.state.currPage); + instance._debug('heading into ajax', desturl); + + method = (opts.dataType === 'html' || opts.dataType === 'json' ) ? opts.dataType : 'html+callback'; + if (opts.appendCallback && opts.dataType === 'html') { + method += '+callback'; + } + + switch (method) { + case 'html+callback': + instance._debug('Using HTML via .load() method'); + box.load(desturl + ' ' + opts.itemSelector, undefined, function infscr_ajax_callback(responseText) { + instance._loadcallback(box, responseText, desturl); + }); + + break; + + case 'html': + instance._debug('Using ' + (method.toUpperCase()) + ' via $.ajax() method'); + $.ajax({ + // params + url: desturl, + dataType: opts.dataType, + complete: function infscr_ajax_callback(jqXHR, textStatus) { + condition = (typeof (jqXHR.isResolved) !== 'undefined') ? (jqXHR.isResolved()) : (textStatus === "success" || textStatus === "notmodified"); + if (condition) { + instance._loadcallback(box, jqXHR.responseText, desturl); + } else { + instance._error('end'); + } + } + }); + + break; + case 'json': + instance._debug('Using ' + (method.toUpperCase()) + ' via $.ajax() method'); + $.ajax({ + dataType: 'json', + type: 'GET', + url: desturl, + success: function (data, textStatus, jqXHR) { + condition = (typeof (jqXHR.isResolved) !== 'undefined') ? (jqXHR.isResolved()) : (textStatus === "success" || textStatus === "notmodified"); + if (opts.appendCallback) { + // if appendCallback is true, you must defined template in options. + // note that data passed into _loadcallback is already an html (after processed in opts.template(data)). + if (opts.template !== undefined) { + var theData = opts.template(data); + box.append(theData); + if (condition) { + instance._loadcallback(box, theData); + } else { + instance._error('end'); + } + } else { + instance._debug("template must be defined."); + instance._error('end'); + } + } else { + // if appendCallback is false, we will pass in the JSON object. you should handle it yourself in your callback. + if (condition) { + instance._loadcallback(box, data, desturl); + } else { + instance._error('end'); + } + } + }, + error: function() { + instance._debug("JSON ajax request failed."); + instance._error('end'); + } + }); + + break; + } + }, + + // Retrieve next set of content items + retrieve: function infscr_retrieve(pageNum) { + pageNum = pageNum || null; + + var instance = this, + opts = instance.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['retrieve_'+opts.behavior] !== undefined) { + this['retrieve_'+opts.behavior].call(this,pageNum); + return; + } + + // for manual triggers, if destroyed, get out of here + if (opts.state.isDestroyed) { + this._debug('Instance is destroyed'); + return false; + } + + // we dont want to fire the ajax multiple times + opts.state.isDuringAjax = true; + + opts.loading.start.call($(opts.contentSelector)[0],opts); + }, + + // Check to see next page is needed + scroll: function infscr_scroll() { + + var opts = this.options, + state = opts.state; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['scroll_'+opts.behavior] !== undefined) { + this['scroll_'+opts.behavior].call(this); + return; + } + + if (state.isDuringAjax || state.isInvalidPage || state.isDone || state.isDestroyed || state.isPaused) { + return; + } + + if (!this._nearbottom()) { + return; + } + + this.retrieve(); + + }, + + // Toggle pause value + toggle: function infscr_toggle() { + this._pausing(); + }, + + // Unbind from scroll + unbind: function infscr_unbind() { + this._binding('unbind'); + }, + + // update options + update: function infscr_options(key) { + if ($.isPlainObject(key)) { + this.options = $.extend(true,this.options,key); + } + } + }; + + + /* + ---------------------------- + Infinite Scroll function + ---------------------------- + + Borrowed logic from the following... + + jQuery UI + - https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.widget.js + + jCarousel + - https://github.com/jsor/jcarousel/blob/master/lib/jquery.jcarousel.js + + Masonry + - https://github.com/desandro/masonry/blob/master/jquery.masonry.js + +*/ + + $.fn.infinitescroll = function infscr_init(options, callback) { + + + var thisCall = typeof options; + + switch (thisCall) { + + // method + case 'string': + var args = Array.prototype.slice.call(arguments, 1); + + this.each(function () { + var instance = $.data(this, 'infinitescroll'); + + if (!instance) { + // not setup yet + // return $.error('Method ' + options + ' cannot be called until Infinite Scroll is setup'); + return false; + } + + if (!$.isFunction(instance[options]) || options.charAt(0) === "_") { + // return $.error('No such method ' + options + ' for Infinite Scroll'); + return false; + } + + // no errors! + instance[options].apply(instance, args); + }); + + break; + + // creation + case 'object': + + this.each(function () { + + var instance = $.data(this, 'infinitescroll'); + + if (instance) { + + // update options of current instance + instance.update(options); + + } else { + + // initialize new instance + instance = new $.infinitescroll(options, callback, this); + + // don't attach if instantiation failed + if (!instance.failed) { + $.data(this, 'infinitescroll', instance); + } + + } + + }); + + break; + + } + + return this; + }; + + + + /* + * smartscroll: debounced scroll event for jQuery * + * https://github.com/lukeshumard/smartscroll + * Based on smartresize by @louis_remi: https://github.com/lrbabe/jquery.smartresize.js * + * Copyright 2011 Louis-Remi & Luke Shumard * Licensed under the MIT license. * + */ + + var event = $.event, + scrollTimeout; + + event.special.smartscroll = { + setup: function () { + $(this).bind("scroll", event.special.smartscroll.handler); + }, + teardown: function () { + $(this).unbind("scroll", event.special.smartscroll.handler); + }, + handler: function (event, execAsap) { + // Save the context + var context = this, + args = arguments; + + // set correct event type + event.type = "smartscroll"; + + if (scrollTimeout) { clearTimeout(scrollTimeout); } + scrollTimeout = setTimeout(function () { + $(context).trigger('smartscroll', args); + }, execAsap === "execAsap" ? 0 : 100); + } + }; + + $.fn.smartscroll = function (fn) { + return fn ? this.bind("smartscroll", fn) : this.trigger("smartscroll", ["execAsap"]); + }; + + +})(window, jQuery); diff --git a/spree_theme/app/assets/javascripts/jquery.layout.js b/spree_theme/app/assets/javascripts/jquery.layout.js index 0cab20d1..5b744667 100644 --- a/spree_theme/app/assets/javascripts/jquery.layout.js +++ b/spree_theme/app/assets/javascripts/jquery.layout.js @@ -451,7 +451,7 @@ $.layout = { else CSS[p] = style[p]; }; - return CSS + return CSS; } /** @@ -617,7 +617,7 @@ $.layout = { + '
      ' + '
      ' ).appendTo("body"); - $e.css('left', $(window).width() - $e.outerWidth() - 5) + $e.css('left', $(window).width() - $e.outerWidth() - 5); if ($.ui.draggable) $e.draggable({ handle: ':first-child' }); return $e; }; @@ -1733,7 +1733,7 @@ $.fn.layout = function (opts) { // check for destroy()ed layouts and update the child pointers & arrays if ($.isPlainObject( pC )) { $.each( pC, function (key, child) { - if (child.destroyed) delete pC[key] + if (child.destroyed) delete pC[key]; }); // if no more children, remove the children hash if ($.isEmptyObject( pC )) @@ -1900,7 +1900,7 @@ $.fn.layout = function (opts) { if (o.inset && !$.isPlainObject(o.inset)) { // can specify a single number for equal outset all-around - n = parseInt(o.inset, 10) || 0 + n = parseInt(o.inset, 10) || 0; o.inset = { top: n , bottom: n @@ -1923,7 +1923,7 @@ $.fn.layout = function (opts) { } else if (!$.isPlainObject(o.outset)) { // can specify a single number for equal outset all-around - n = parseInt(o.outset, 10) || 0 + n = parseInt(o.outset, 10) || 0; o.outset = { top: n , bottom: n @@ -2042,7 +2042,7 @@ $.fn.layout = function (opts) { if ($.inArray(key, rootKeys) < 0 && $.inArray(key, data) < 0) { if (!opts.panes[key]) opts.panes[key] = $.isPlainObject(val) ? $.extend(true, {}, val) : val; - delete opts[key] + delete opts[key]; } } @@ -2160,7 +2160,7 @@ $.fn.layout = function (opts) { * @param {string} pane The pane to process */ , getPane = function (pane) { - var sel = options[pane].paneSelector + var sel = options[pane].paneSelector; if (sel.substr(0,1)==="#") // ID selector // NOTE: elements selected 'by ID' DO NOT have to be 'children' return $N.find(sel).eq(0); @@ -2686,7 +2686,7 @@ $.fn.layout = function (opts) { // SET RESIZER LIMITS - used in drag() setSizeLimits(pane); // update pane/resizer state r = s.resizerPosition; - lastPos = ui.position[ side ] + lastPos = ui.position[ side ]; $R.addClass( resizerClass +" "+ resizerPaneClass ); // add drag classes helperClassesSet = false; // reset logic var - see drag() @@ -2730,7 +2730,7 @@ $.fn.layout = function (opts) { // won't trigger unless resizer has actually moved! if (live && Math.abs(ui.position[side] - lastPos) >= o.liveResizingTolerance) { lastPos = ui.position[side]; - resizePanes(e, ui, pane) + resizePanes(e, ui, pane); } } @@ -2852,7 +2852,7 @@ $.fn.layout = function (opts) { if (s.isVisible && ( o.maskObjects || (!a.objectsOnly && o.maskContents) )) { getMasks(p).each(function(){ sizeMask.call(this); - this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1 + this.style.zIndex = s.isSliding ? z.pane_sliding+1 : z.pane_normal+1; this.style.display = "block"; }); } @@ -3596,7 +3596,7 @@ $.fn.layout = function (opts) { .addClass( rClass+_open +" "+ rClass+_pane+_open ) ; if (s.isSliding) - $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) + $R.addClass( rClass+_sliding +" "+ rClass+_pane+_sliding ); else // in case 'was sliding' $R.removeClass( rClass+_sliding +" "+ rClass+_pane+_sliding ) @@ -3781,7 +3781,7 @@ $.fn.layout = function (opts) { // must remove double-click-toggle when using dblclick-slide if (o.resizerDblClickToggle && evtName.match(/click/)) { - $R[enable ? "unbind" : "bind"]('dblclick.'+ sID, toggle) + $R[enable ? "unbind" : "bind"]('dblclick.'+ sID, toggle); } $R @@ -4446,7 +4446,7 @@ $.fn.layout = function (opts) { , numFooters: $Fs.length , hiddenFooters: $Fs.length - $Fs_vis.length , spaceBelow: 0 // correct if no content footer ($E) - } + }; m.spaceAbove = m.top; // just for state - not used in calc m.bottom = m.top + m.height; if ($F.length) @@ -4466,7 +4466,7 @@ $.fn.layout = function (opts) { * @param {(string|Object)=} evt_or_panes The pane(s) being resized */ , sizeHandles = function (evt_or_panes) { - var panes = evtPane.call(this, evt_or_panes) + var panes = evtPane.call(this, evt_or_panes); panes = panes ? panes.split(",") : _c.borderPanes; $.each(panes, function (i, pane) { @@ -4778,7 +4778,7 @@ $.fn.layout = function (opts) { , C: $C ? $C[0] : false , state: $.extend(true, {}, state[n]) , options: $.extend(true, {}, options[n]) - } + }; }; function move (oPane, pane) { @@ -5126,7 +5126,7 @@ $.fn.layout = function (opts) { else // true OR false -- if layout-elements did NOT init (hidden or do not exist), can auto-init later return Instance; // return the Instance object -} +}; })( jQuery ); @@ -5397,7 +5397,7 @@ $.layout.state = { s = o.size; c = o.initClosed; h = o.initHidden; - ar = o.autoResize + ar = o.autoResize; state = inst.state[pane]; open = state.isVisible; diff --git a/spree_theme/app/assets/javascripts/jquery.lightbox.custom.js b/spree_theme/app/assets/javascripts/jquery.lightbox.custom.js new file mode 100644 index 00000000..69eb5282 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery.lightbox.custom.js @@ -0,0 +1,510 @@ +/** + * jQuery Lightbox + * @author Warren Krewenki + * + * This package is distributed under the BSD license. + * For full license information, see LICENSE.TXT + * + * Based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) + * + * + **/ + +(function($) { + $.fn.lightbox = function(options) { + // build main options + var opts = $.extend({}, $.fn.lightbox.defaults, options); + + $(window).resize(resizeOverlayToFitWindow); + + return $(this).on(opts.triggerEvent,function(){ + // initialize the lightbox + initialize(); + showLightbox(this); + return false; + }); + /* + # Initialize the lightbox by creating our html and reading some image data + # This method is called by the constructor after any click events trigger it + # You will never call it by itself, to my knowledge. + */ + function initialize() { + $('.lightbox-overlay, #lightbox').remove(); + opts.inprogress = false; + + // if jsonData, build the imageArray from data provided in JSON format + if (opts.jsonData && opts.jsonData.length > 0) { + var parser = opts.jsonDataParser ? opts.jsonDataParser : $.fn.lightbox.parseJsonData; + opts.imageArray = []; + opts.imageArray = parser(opts.jsonData); + } + + var outerImage = '
      '; + var imageData = '
      '; + + if (opts.displayHelp) { + imageData += '' + opts.strings.help + ''; + } + + imageData += '
      '; + + var string; + + if (opts.navbarOnTop) { + string = ''; + $("body").append(string); + $("#imageDataContainer").addClass('ontop'); + } else { + string = ''; + $("body").append(string); + } + + if (opts.imageScroll === true) { + $('#lightbox').css('position', 'fixed') + } + + $(".lightbox-overlay, #lightbox").click(function(){ end(); }).hide(); + $("#loadingLink, #bottomNavClose").click(function(){ end(); return false;}); + $('#outerImageContainer').width(opts.widthCurrent).height(opts.heightCurrent); + $('#imageDataContainer').width(opts.widthCurrent); + + if (!opts.imageClickClose) { + $("#lightboxImage").click(function(){ return false; }); + $("#hoverNav").click(function(){ return false; }); + } + + return true; + }; + + /* + # Get the document and window width/heigh + # + # Examples + # + # getPageSize() + # # => [1024,768,1024,768] + # + # Returns a numerically indexed array of document width/height and window width/height + */ + function getPageSize() { + var jqueryPageSize = new Array($(document).width(),$(document).height(), $(window).width(), $(window).height()); + return jqueryPageSize; + }; + + function getPageScroll() { + var xScroll, yScroll; + + if (self.pageYOffset) { + yScroll = self.pageYOffset; + xScroll = self.pageXOffset; + } else if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft)){ // Explorer 6 Strict, Firefox + yScroll = document.documentElement.scrollTop; + xScroll = document.documentElement.scrollLeft; + } else if (document.body) {// all other Explorers + yScroll = document.body.scrollTop; + xScroll = document.body.scrollLeft; + } + + var arrayPageScroll = new Array(xScroll,yScroll); + return arrayPageScroll; + }; + + /* + # Deploy the sexy overlay and display the lightbox + # + # imageObject - the jQuery object passed via the click event in the constructor + # + # Examples + # + # showLightbox($('#CheesusCrust')) + # + # Returns a boolean true, because it's got nothing else to return. It should give visual feedback when run + */ + function showLightbox(imageObject) { + /** + * select, embed and object tags render over the lightbox in some browsers + * Right now, the best way to fix it is to hide them, but that can trigger reloading of some flash content + * I don't have a better fix for this right now, but I want ot leave this comment here so you and I both + * know that i'm aware of it, and I would love to fix it, if you have any suggestions. + **/ + $("select, embed, object").hide(); + + // Resize and display the sexy, sexy overlay. + resizeOverlayToFitWindow(); + $(".lightbox-overlay").hide().css({ opacity : opts.overlayOpacity }).fadeIn(); + imageNum = 0; + var $imageObject = $(imageObject); + // if data is not provided by jsonData parameter + if (!opts.jsonData) { + opts.imageArray = []; + // if image is NOT part of a set.. + if ((!getImageSetOf(imageObject) || (getImageSetOf(imageObject) == '')) && !opts.allSet) { + // add single image to Lightbox.imageArray + opts.imageArray.push(new Array(imageObject.href, opts.displayTitle ? imageObject.title : '')); + } else { + // if image is part of a set.. + $("a").each(function() { + if(this.href && (getImageSetOf(this) == getImageSetOf(imageObject))) { + opts.imageArray.push(new Array(this.href, opts.displayTitle ? this.title : '')); + } + }); + } + } + + if (opts.imageArray.length > 1) { + for (i = 0; i < opts.imageArray.length; i++) { + for (j = opts.imageArray.length - 1; j > i; j--) { + if (opts.imageArray[i][0] == opts.imageArray[j][0]) { + opts.imageArray.splice(j, 1); + } + } + } + // custom change, for spree_abc only. + // get current selected image url from data-big-image + //while (opts.imageArray[imageNum][0] != imageObject.url) { + while (opts.imageArray[imageNum][0] != $imageObject.data("big-image")) { + imageNum++; + } + } + + // calculate top and left offset for the lightbox + var arrayPageScroll = getPageScroll(); + var lightboxTop = arrayPageScroll[1] + ($(window).height() / 10); + var lightboxLeft = arrayPageScroll[0]; + $('#lightbox').css({top: lightboxTop+'px', left: lightboxLeft+'px'}).show(); + + if (!opts.slideNavBar) { + $('#imageData').hide(); + } + + changeImage(imageNum); + }; + + function changeImage(imageNum) { + if (opts.inprogress == false) { + opts.inprogress = true; + + // update global var + opts.activeImage = imageNum; + + // hide elements during transition + $('.lightbox-loading').show(); + $('#lightboxImage, #hoverNav, #prevLink, #nextLink').hide(); + + // delay preloading image until navbar will slide up + if (opts.slideNavBar) { + $('#imageDataContainer').hide(); + $('#imageData').hide(); + } + doChangeImage(); + } + }; + + function doChangeImage() { + var imgPreloader = new Image(); + + // once image is preloaded, resize image container + imgPreloader.onload = function() { + var newWidth = imgPreloader.width; + var newHeight = imgPreloader.height; + + if (opts.scaleImages) { + newWidth = parseInt(opts.xScale * newWidth); + newHeight = parseInt(opts.yScale * newHeight); + } + + if (opts.fitToScreen) { + var arrayPageSize = getPageSize(); + var ratio; + var initialPageWidth = arrayPageSize[2] - 2 * opts.borderSize; + var initialPageHeight = arrayPageSize[3] - 200; + + var dI = initialPageWidth/initialPageHeight; + var dP = imgPreloader.width/imgPreloader.height; + + if ((imgPreloader.height > initialPageHeight) || (imgPreloader.width > initialPageWidth)) { + if (dI > dP) { + newWidth = parseInt((initialPageHeight/imgPreloader.height) * imgPreloader.width); + newHeight = initialPageHeight; + } else { + newHeight = parseInt((initialPageWidth/imgPreloader.width) * imgPreloader.height); + newWidth = initialPageWidth; + } + } + } + + $('#lightboxImage'). + attr('src', opts.imageArray[opts.activeImage][0]). + width(newWidth). + height(newHeight); + + resizeImageContainer(newWidth, newHeight); + }; + + imgPreloader.src = opts.imageArray[opts.activeImage][0]; + }; + + function end() { + disableKeyboardNav(); + $('#lightbox').hide(); + $('.lightbox-overlay').fadeOut(); + $('select, object, embed').show(); + }; + + function preloadNeighborImages() { + var preloadPrevImage, preloadNextImage; + if (opts.loopImages && opts.imageArray.length > 1) { + preloadNextImage = new Image(); + preloadNextImage.src = opts.imageArray[(opts.activeImage == (opts.imageArray.length - 1)) ? 0 : opts.activeImage + 1][0]; + + preloadPrevImage = new Image(); + preloadPrevImage.src = opts.imageArray[(opts.activeImage == 0) ? (opts.imageArray.length - 1) : opts.activeImage - 1][0]; + } else { + if ((opts.imageArray.length - 1) > opts.activeImage) { + preloadNextImage = new Image(); + preloadNextImage.src = opts.imageArray[opts.activeImage + 1][0]; + } + if (opts.activeImage > 0) { + preloadPrevImage = new Image(); + preloadPrevImage.src = opts.imageArray[opts.activeImage - 1][0]; + } + } + }; + + function resizeImageContainer(imgWidth, imgHeight) { + // get current width and height + opts.widthCurrent = $("#outerImageContainer").outerWidth(); + opts.heightCurrent = $("#outerImageContainer").outerHeight(); + + // get new width and height + var widthNew = Math.max(350, imgWidth + (opts.borderSize * 2)); + var heightNew = (imgHeight + (opts.borderSize * 2)); + + // calculate size difference between new and old image, and resize if necessary + wDiff = opts.widthCurrent - widthNew; + hDiff = opts.heightCurrent - heightNew; + + $('#imageDataContainer').animate({width: widthNew},opts.resizeSpeed,'linear'); + $('#outerImageContainer').animate({width: widthNew},opts.resizeSpeed,'linear', function() { + $('#outerImageContainer').animate({height: heightNew},opts.resizeSpeed,'linear', function() { + showImage(); + }); + }); + + afterTimeout = function () { + $('#prevLink').height(imgHeight); + $('#nextLink').height(imgHeight); + }; + + // if new and old image are same size and no scaling transition is necessary, + // do a quick pause to prevent image flicker. + if((hDiff == 0) && (wDiff == 0)) { + setTimeout(afterTimeout, 100); + } else { + // otherwise just trigger the height and width change + afterTimeout(); + } + + }; + + function showImage() { + $('.lightbox-loading').hide(); + $('#lightboxImage').fadeIn("fast"); + updateDetails(); + preloadNeighborImages(); + + opts.inprogress = false; + }; + + function updateDetails() { + $('#numberDisplay').html(''); + + if (opts.imageArray[opts.activeImage][1]) { + $('#caption').html(opts.imageArray[opts.activeImage][1]).show(); + } + + // if image is part of set display 'Image x of x' + if (opts.imageArray.length > 1) { + var nav_html; + + nav_html = opts.strings.image + (opts.activeImage + 1) + opts.strings.of + opts.imageArray.length; + + if (opts.displayDownloadLink) { + nav_html += "" + opts.strings.download + ""; + } + + if (!opts.disableNavbarLinks) { + // display previous / next text links + if ((opts.activeImage) > 0 || opts.loopImages) { + nav_html = '' + opts.strings.prevLinkText + "" + nav_html; + } + + if (((opts.activeImage + 1) < opts.imageArray.length) || opts.loopImages) { + nav_html += '' + opts.strings.nextLinkText + ""; + } + } + + $('#numberDisplay').html(nav_html).show(); + } + + if (opts.slideNavBar) { + $("#imageData").slideDown(opts.navBarSlideSpeed); + } else { + $("#imageData").show(); + } + + resizeOverlayToFitWindow(); + updateNav(); + }; + + /* + # Resize the sexy overlay to fit the constraints of your current viewing environment + # + # This should now happen whenever a window is resized, so you should always see a full overlay + */ + function resizeOverlayToFitWindow(){ + $('.lightbox-overlay').css({width: $(document).width(), height: $(document).height()}); + // ^^^^^^^ <- sexy! + }; + + function updateNav() { + if (opts.imageArray.length > 1) { + $('#hoverNav').show(); + + // if loopImages is true, always show next and prev image buttons + if(opts.loopImages) { + $('#prevLink,#prevLinkText').show().click(function() { + changeImage((opts.activeImage == 0) ? (opts.imageArray.length - 1) : opts.activeImage - 1); + return false; + }); + + $('#nextLink,#nextLinkText').show().click(function() { + changeImage((opts.activeImage == (opts.imageArray.length - 1)) ? 0 : opts.activeImage + 1); + return false; + }); + + } else { + // if not first image in set, display prev image button + if(opts.activeImage != 0) { + $('#prevLink,#prevLinkText').show().click(function() { + changeImage(opts.activeImage - 1); + return false; + }); + } + + // if not last image in set, display next image button + if(opts.activeImage != (opts.imageArray.length - 1)) { + $('#nextLink,#nextLinkText').show().click(function() { + changeImage(opts.activeImage +1); + return false; + }); + } + } + + } + enableKeyboardNav(); + + }; + + function keyboardAction(e) { + var o = e.data.opts; + var keycode = e.keyCode; + var escapeKey = 27; + + var key = String.fromCharCode(keycode).toLowerCase(); + + // close lightbox + if ((key == 'x') || (key == 'o') || (key == 'c') || (keycode == escapeKey)) { + end(); + + // display previous image + } else if ((key == 'p') || (keycode == 37)) { + if(o.loopImages) { + disableKeyboardNav(); + changeImage((o.activeImage == 0) ? (o.imageArray.length - 1) : o.activeImage - 1); + } else if (o.activeImage != 0) { + disableKeyboardNav(); + changeImage(o.activeImage - 1); + } + + // display next image + } else if ((key == 'n') || (keycode == 39)) { + if (opts.loopImages) { + disableKeyboardNav(); + changeImage((o.activeImage == (o.imageArray.length - 1)) ? 0 : o.activeImage + 1); + } else if (o.activeImage != (o.imageArray.length - 1)) { + disableKeyboardNav(); + changeImage(o.activeImage + 1); + } + } + }; + + function enableKeyboardNav() { + $(document).bind('keydown', {opts: opts}, keyboardAction); + }; + + function disableKeyboardNav() { + $(document).unbind('keydown'); + }; + + function getImageSetOf(imageObject) { + var set_name = imageObject.rel; + if (!set_name || set_name == '') { + set_name = $(imageObject).attr('data-lightbox-set'); + } + return set_name; + }; + }; + + $.fn.lightbox.parseJsonData = function(data) { + var imageArray = []; + + $.each(data, function() { + imageArray.push(new Array(this.url, this.title)); + }); + + return imageArray; + }; + + $.fn.lightbox.defaults = { + triggerEvent: "click", + allSet: false, + fileLoadingImage: '/shops/shared/images/lightbox/loading.gif', + fileBottomNavCloseImage: '/shops/shared/images/lightbox/closelabel.gif', + overlayOpacity: 0.6, + borderSize: 10, + imageArray: new Array, + activeImage: null, + imageScroll: false, + inprogress: false, + resizeSpeed: 350, + widthCurrent: 250, + heightCurrent: 250, + scaleImages: false, + xScale: 1, + yScale: 1, + displayTitle: true, + navbarOnTop: false, + displayDownloadLink: false, + slideNavBar: false, + navBarSlideSpeed: 350, + displayHelp: false, + strings: { + help: ' \u2190 / P - previous image\u00a0\u00a0\u00a0\u00a0\u2192 / N - next image\u00a0\u00a0\u00a0\u00a0ESC / X - close image gallery', + prevLinkTitle: 'previous image', + nextLinkTitle: 'next image', + prevLinkText: '« Previous', + nextLinkText: 'Next »', + closeTitle: 'close image gallery', + image: 'Image ', + of: ' of ', + download: 'Download' + }, + fitToScreen: false, + disableNavbarLinks: false, + loopImages: false, + imageClickClose: true, + jsonData: null, + jsonDataParser: null + }; +})(jQuery); diff --git a/spree_theme/app/assets/javascripts/jquery.menuhover.js b/spree_theme/app/assets/javascripts/jquery.menuhover.js new file mode 100644 index 00000000..1af3be40 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery.menuhover.js @@ -0,0 +1,76 @@ +// a hover event as amazon +// by yilizhang@sohu-inc.com + +(function($) { + + $.fn.menuhover = function(opts) { + + this.each(function() { + init.call(this, opts); + }); + + return this; + }; + + function init(opts) { + var $menuhover = $(this), + timeoutId = null, + options = $.extend({ + submenuDirection: "below", + activate: $.noop, + deactivate: $.noop, + $hover:null, + $hover_effect_container: $menuhover + },opts), + $hover = options.$hover; + + var MOUSE_LOCS_TRACKED = 3, + DELAY = 200; + + + function mouseenter(e){ + options.activate(); + //e.stopPropagation(); + } + + function mouseleave(e){ + if(inArea(e)){ + timeoutId = setTimeout(function() { + options.deactivate(); + }, DELAY); + }else{ + options.deactivate(); + } + } + + function mouseenterHover(){ + if (timeoutId) { + // Cancel any previous activation delays + clearTimeout(timeoutId); + } + } + + function inArea(e){ + var offset = $menuhover.offset(); + if( options.submenuDirection=='b'){ + // y+menuhover.height, disable case mouse move from one menu itme to next menu item. + if( e.pageX >= offset.left && e.pageY >= (offset.top + $menuhover.height())){ // mouse move to right bottom + return true; + } + }else{ + if( e.pageX <= offset.left && e.pageY >= offset.top){ // mouse move to left bottom + return true; + } + } + + return false; + } + + $menuhover.mouseenter(mouseenter) + .mouseleave(mouseleave); + $hover.mouseenter(mouseenterHover); + // hover is not in element menuhover, mouseleave is required. + $hover.mouseleave(mouseleave); + } + +})(jQuery); diff --git a/spree_theme/app/assets/javascripts/jquery.sidr.js b/spree_theme/app/assets/javascripts/jquery.sidr.js new file mode 100644 index 00000000..1465c16e --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery.sidr.js @@ -0,0 +1,341 @@ +/* + * Sidr + * https://github.com/generoi/sidr + * + * Copyright (c) 2013 Alberto Varela + * Licensed under the MIT license. + */ + +;(function( $ ){ + + var sidrMoving = false, + sidrOpened = false; + + // Private methods + var privateMethods = { + // Check for valids urls + // From : http://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-an-url + isUrl: function (str) { + var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol + '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name + '((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address + '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path + '(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string + '(\\#[-a-z\\d_]*)?$','i'); // fragment locator + if(!pattern.test(str)) { + return false; + } else { + return true; + } + }, + // Loads the content into the menu bar + loadContent: function($menu, content) { + $menu.html(content); + this.addTitle($menu); + }, + // add title include close button + addTitle: function( $menu ){ + $('
      ') + .prependTo($menu); + }, + + // Add sidr prefixes + addPrefix: function($element) { + var elementId = $element.attr('id'), + elementClass = $element.attr('class'); + + if(typeof elementId === 'string' && '' !== elementId) { + $element.attr('id', elementId.replace(/([A-Za-z0-9_.\-]+)/g, 'sidr-id-$1')); + } + if(typeof elementClass === 'string' && '' !== elementClass && 'sidr-inner' !== elementClass) { + $element.attr('class', elementClass.replace(/([A-Za-z0-9_.\-]+)/g, 'sidr-class-$1')); + } + $element.removeAttr('style'); + }, + execute: function(action, name, callback) { + // Check arguments + if(typeof name === 'function') { + callback = name; + name = 'sidr'; + } + else if(!name) { + name = 'sidr'; + } + + // Declaring + var $menu = $('#' + name), + $menuOverlay = $('#' + name + '-overlay'), + $body = $($menu.data('body')), + $html = $('html'), + menuWidth = $menu.outerWidth(true) , + menuHeight = $menu.outerHeight(true) , + speed = $menu.data('speed'), + side = $menu.data('side'), + displace = $menu.data('displace'), + onOpen = $menu.data('onOpen'), + onClose = $menu.data('onClose'), + bodyAnimation, + menuAnimation, + scrollTop, + bodyClass = (name === 'sidr' ? 'sidr-open' : 'sidr-open ' + name + '-open'); + + // Open Sidr + if('open' === action || ('toggle' === action && !$menu.is(':visible'))) { + // Check if we can open it + if( $menu.is(':visible') || sidrMoving ) { + return; + } + + // If another menu opened close first + if(sidrOpened !== false) { + methods.close(sidrOpened, function() { + methods.open(name); + }); + + return; + } + + // Lock sidr + sidrMoving = true; + + // Left or right? + if(side === 'top') { + menuAnimation = {top: '0px'}; + }else if(side === 'bottom') { + menuAnimation = {bottom: '0px'}; + }else if(side === 'left') { + bodyAnimation = {left: menuWidth + 'px'}; + menuAnimation = {left: '0px'}; + } + else { + bodyAnimation = {right: menuWidth + 'px'}; + menuAnimation = {right: '0px'}; + } + + // Prepare page if container is body + if($body.is('body')){ + scrollTop = $html.scrollTop(); + $html.css('overflow-x', 'hidden').scrollTop(scrollTop); + } + + // Open menu + $menuOverlay.show(); + if(displace){ + $body.addClass('sidr-animating').css({ + width: $body.width(), + position: 'absolute' + }).animate(bodyAnimation, speed, function() { + $(this).addClass(bodyClass); + }); + } + else { + setTimeout(function() { + $(this).addClass(bodyClass); + }, speed); + } + $menu.css('display', 'block').animate(menuAnimation, speed, function() { + sidrMoving = false; + sidrOpened = name; + // Callback + if(typeof callback === 'function') { + callback(name); + } + $body.removeClass('sidr-animating'); + }); + + // onOpen callback + onOpen(); + } + // Close Sidr + else { + // Check if we can close it + if( !$menu.is(':visible') || sidrMoving ) { + return; + } + + // Lock sidr + sidrMoving = true; + + // Right or left menu? + if(side === 'top') { + menuAnimation = {top: '-' + menuWidth + 'px'}; + }else if(side === 'bottom') { + menuAnimation = {bottom: '-' + menuWidth + 'px'}; + }else if(side === 'left') { + bodyAnimation = {left: 0}; + menuAnimation = {left: '-' + menuWidth + 'px'}; + } + else { + bodyAnimation = {right: 0}; + menuAnimation = {right: '-' + menuWidth + 'px'}; + } + + // Close menu + if($body.is('body')){ + scrollTop = $html.scrollTop(); + $html.removeAttr('style').scrollTop(scrollTop); + } + $body.addClass('sidr-animating').animate(bodyAnimation, speed).removeClass(bodyClass); + $menu.animate(menuAnimation, speed, function() { + $menu.removeAttr('style').hide(); + $body.removeAttr('style'); + $('html').removeAttr('style'); + sidrMoving = false; + sidrOpened = false; + // Callback + if(typeof callback === 'function') { + callback(name); + } + $body.removeClass('sidr-animating'); + }); + + // onClose callback + onClose(); + $menuOverlay.hide(); + } + } + }; + + // Sidr public methods + var methods = { + open: function(name, callback) { + privateMethods.execute('open', name, callback); + }, + close: function(name, callback) { + privateMethods.execute('close', name, callback); + }, + toggle: function(name, callback) { + privateMethods.execute('toggle', name, callback); + }, + // I made a typo, so I mantain this method to keep backward compatibilty with 1.1.1v and previous + toogle: function(name, callback) { + privateMethods.execute('toggle', name, callback); + } + }; + + $.sidr = function( method ) { + + if ( methods[method] ) { + return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); + } + else if ( typeof method === 'function' || typeof method === 'string' || ! method ) { + return methods.toggle.apply( this, arguments ); + } + else { + $.error( 'Method ' + method + ' does not exist on jQuery.sidr' ); + } + + }; + + $.fn.sidr = function( options ) { + sidrOpened = false;// for reason turbolinks, reset it when initialize sidr. + + var settings = $.extend( { + name : 'sidr', // Name for the 'sidr' + speed : 200, // Accepts standard jQuery effects speeds (i.e. fast, normal or milliseconds) + side : 'left', // Accepts 'left' or 'right' 'top', 'bottom' + source : null, // Override the source of the content. + renaming : true, // The ids and classes will be prepended with a prefix when loading existent content + body : 'body', // Page container selector, + displace: true, // Displace the body content or not + onOpen : function() {}, // Callback when sidr opened + onClose : function() {} // Callback when sidr closed + }, options); + + var name = settings.name, + $sideMenu = $('#' + name), $sideOverlay = $('#' + name +'-overlay'); + + // If the side menu do not exist create it + if( $sideMenu.length === 0 ) { + $sideMenu = $('
      ') + .attr('id', name) + .appendTo($(settings.body)); + // create the overlay + $sideOverlay = $('
      ') + .attr('id', name +'-overlay') + .addClass('sidr_overlay') + .appendTo($(settings.body)); + } + + // Adding styles and options + $sideMenu + .addClass('sidr') + .addClass(settings.side) + .data({ + speed : settings.speed, + side : settings.side, + body : settings.body, + displace : settings.displace, + onOpen : settings.onOpen, + onClose : settings.onClose + }); + + // The menu content + if(typeof settings.source === 'function') { + var newContent = settings.source(name); + privateMethods.loadContent($sideMenu, newContent); + } + else if(typeof settings.source === 'string' && privateMethods.isUrl(settings.source)) { + $.get(settings.source, function(data) { + privateMethods.loadContent($sideMenu, data); + }); + } + else if(typeof settings.source === 'string') { + var htmlContent = '', + selectors = settings.source.split(','); + + $.each(selectors, function(index, element) { + htmlContent += '
      ' + $(element).html() + '
      '; + }); + + // Renaming ids and classes + if(settings.renaming) { + var $htmlContent = $('
      ').html(htmlContent); + $htmlContent.find('*').each(function(index, element) { + var $element = $(element); + privateMethods.addPrefix($element); + }); + htmlContent = $htmlContent.html(); + } + privateMethods.loadContent($sideMenu, htmlContent); + } + else if(settings.source !== null) { + $.error('Invalid Sidr Source'); + } + + $('#' + name).find('a').click(function() { + methods.toggle(name); + }); + + return this.each(function(){ + var $this = $(this), + data = $this.data('sidr'), + touchStart; + + // If the plugin hasn't been initialized yet + if ( ! data ) { + sidrOpened = false; + sidrMoving = false; + $this.data('sidr', name); + if('ontouchstart' in document.documentElement) { + $this.bind('touchstart', function(e) { + var theEvent = e.originalEvent.touches[0]; + touchStart = e.timeStamp; + }); + $this.bind('touchend', function(e) { + var delta = Math.abs(e.timeStamp - touchStart); + if(delta < 200) { + e.preventDefault(); + methods.toggle(name); + } + }); + } + $this.click(function(e) { + e.preventDefault(); + methods.toggle(name); + }); + } + }); + }; + +})( jQuery ); diff --git a/spree_theme/app/assets/javascripts/jquery.simplemodal.js b/spree_theme/app/assets/javascripts/jquery.simplemodal.js index 69b77f0a..b3054536 100644 --- a/spree_theme/app/assets/javascripts/jquery.simplemodal.js +++ b/spree_theme/app/assets/javascripts/jquery.simplemodal.js @@ -15,26 +15,26 @@ * SimpleModal. * * There are two ways to call SimpleModal: - * 1) As a chained function on a jQuery object, like $('#myDiv').modal();. + * 1) As a chained function on a jQuery object, like $('#myDiv').simplemodal();. * This call would place the DOM object, #myDiv, inside a modal dialog. * Chaining requires a jQuery object. An optional options object can be * passed as a parameter. * - * @example $('
      my data
      ').modal({options}); - * @example $('#myDiv').modal({options}); - * @example jQueryObject.modal({options}); + * @example $('
      my data
      ').simplemodal({options}); + * @example $('#myDiv').simplemodal({options}); + * @example jQueryObject.simplemodal({options}); * - * 2) As a stand-alone function, like $.modal(data). The data parameter + * 2) As a stand-alone function, like $.simplemodal(data). The data parameter * is required and an optional options object can be passed as a second * parameter. This method provides more flexibility in the types of data * that are allowed. The data could be a DOM object, a jQuery object, HTML * or a string. * - * @example $.modal('
      my data
      ', {options}); - * @example $.modal('my data', {options}); - * @example $.modal($('#myDiv'), {options}); - * @example $.modal(jQueryObject, {options}); - * @example $.modal(document.getElementById('myDiv'), {options}); + * @example $.simplemodal('
      my data
      ', {options}); + * @example $.simplemodal('my data', {options}); + * @example $.simplemodal($('#myDiv'), {options}); + * @example $.simplemodal(jQueryObject, {options}); + * @example $.simplemodal(document.getElementById('myDiv'), {options}); * * A SimpleModal call can contain multiple elements, but only one modal * dialog can be created at a time. Which means that all of the matched @@ -92,39 +92,39 @@ * @param {string, object} data A string, jQuery object or DOM object * @param {object} [options] An optional object containing options overrides */ - $.modal = function (data, options) { - return $.modal.impl.init(data, options); + $.simplemodal = function (data, options) { + return $.simplemodal.impl.init(data, options); }; /* * Close the modal dialog. */ - $.modal.close = function () { - $.modal.impl.close(); + $.simplemodal.close = function () { + $.simplemodal.impl.close(); }; /* * Set focus on first or last visible input in the modal dialog. To focus on the last - * element, call $.modal.focus('last'). If no input elements are found, focus is placed + * element, call $.simplemodal.focus('last'). If no input elements are found, focus is placed * on the data wrapper element. */ - $.modal.focus = function (pos) { - $.modal.impl.focus(pos); + $.simplemodal.focus = function (pos) { + $.simplemodal.impl.focus(pos); }; /* * Determine and set the dimensions of the modal dialog container. * setPosition() is called if the autoPosition option is true. */ - $.modal.setContainerDimensions = function () { - $.modal.impl.setContainerDimensions(); + $.simplemodal.setContainerDimensions = function () { + $.simplemodal.impl.setContainerDimensions(); }; /* * Re-position the modal dialog. */ - $.modal.setPosition = function () { - $.modal.impl.setPosition(); + $.simplemodal.setPosition = function () { + $.simplemodal.impl.setPosition(); }; /* @@ -134,8 +134,8 @@ * setContainerDimensions() is called, which in turn calls setPosition(), if enabled. * Lastly, focus() is called is the focus option is true. */ - $.modal.update = function (height, width) { - $.modal.impl.update(height, width); + $.simplemodal.update = function (height, width) { + $.simplemodal.impl.update(height, width); }; /* @@ -143,8 +143,8 @@ * * @param {object} [options] An optional object containing options overrides */ - $.fn.modal = function (options) { - return $.modal.impl.init(this, options); + $.fn.simplemodal = function (options) { + return $.simplemodal.impl.init(this, options); }; /* @@ -186,7 +186,7 @@ * onShow: (Function:null) The callback function used after the modal dialog has opened * onClose: (Function:null) The callback function used in place of SimpleModal's close */ - $.modal.defaults = { + $.simplemodal.defaults = { appendTo: 'body', focus: true, opacity: 50, @@ -221,7 +221,7 @@ * Main modal object * o = options */ - $.modal.impl = { + $.simplemodal.impl = { /* * Contains the modal dialog elements and is the object passed * back to the callback (onOpen, onShow, onClose) functions @@ -241,7 +241,7 @@ browser.ieQuirks = browser.msie && !browser.boxModel; // merge defaults and user options - s.o = $.extend({}, $.modal.defaults, options); + s.o = $.extend({}, $.simplemodal.defaults, options); // keep track of z-index s.zIndex = s.o.zIndex; @@ -305,7 +305,7 @@ s.getDimensions(); // add an iframe to prevent select options from bleeding through - if (s.o.modal && browser.ie6) { + if (s.o.simplemodal && browser.ie6) { s.d.iframe = $('') .css($.extend(s.o.iframeCss, { display: 'none', @@ -326,7 +326,7 @@ .addClass('simplemodal-overlay') .css($.extend(s.o.overlayCss, { display: 'none', - opacity: s.o.opacity / 100, + //opacity: s.o.opacity / 100, // config opcity by param_value. height: s.o.modal ? d[0] : 0, width: s.o.modal ? d[1] : 0, position: 'fixed', @@ -388,7 +388,7 @@ }); // bind the overlay click to the close function, if enabled - if (s.o.modal && s.o.close && s.o.overlayClose) { + if (s.o.simplemodal && s.o.close && s.o.overlayClose) { s.d.overlay.bind('click.simplemodal', function (e) { e.preventDefault(); s.close(); @@ -397,7 +397,7 @@ // bind keydown events doc.bind('keydown.simplemodal', function (e) { - if (s.o.modal && e.keyCode === 9) { // TAB + if (s.o.simplemodal && e.keyCode === 9) { // TAB s.watchTab(e); } else if ((s.o.close && s.o.escClose) && e.keyCode === 27) { // ESC @@ -417,7 +417,7 @@ if (browser.ie6 || browser.ieQuirks) { s.fixIE(); } - else if (s.o.modal) { + else if (s.o.simplemodal) { // update the iframe & overlay s.d.iframe && s.d.iframe.css({height: w[0], width: w[1]}); s.d.overlay.css({height: d[0], width: d[1]}); @@ -440,7 +440,7 @@ var s = this, p = s.o.position; // simulate fixed position - adapted from BlockUI - $.each([s.d.iframe || null, !s.o.modal ? null : s.d.overlay, s.d.container.css('position') === 'fixed' ? s.d.container : null], function (i, el) { + $.each([s.d.iframe || null, !s.o.simplemodal ? null : s.d.overlay, s.d.container.css('position') === 'fixed' ? s.d.container : null], function (i, el) { if (el) { var bch = 'document.body.clientHeight', bcw = 'document.body.clientWidth', bsh = 'document.body.scrollHeight', bsl = 'document.body.scrollLeft', diff --git a/spree_theme/app/assets/javascripts/jquery.simplemodal.mobile.js b/spree_theme/app/assets/javascripts/jquery.simplemodal.mobile.js new file mode 100644 index 00000000..84e0016c --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery.simplemodal.mobile.js @@ -0,0 +1,717 @@ +/* + * SimpleModal @VERSION - jQuery Plugin + * http://simplemodal.com/ + * Copyright (c) 2014 Eric Martin + * Licensed under MIT and GPL + * Date: + */ + +/** + * SimpleModal is a lightweight jQuery plugin that provides a simple + * interface to create a modal dialog. + * + * The goal of SimpleModal is to provide developers with a cross-browser + * overlay and container that will be populated with data provided to + * SimpleModal. + * + * There are two ways to call SimpleModal: + * 1) As a chained function on a jQuery object, like $('#myDiv').simplemodal();. + * This call would place the DOM object, #myDiv, inside a modal dialog. + * Chaining requires a jQuery object. An optional options object can be + * passed as a parameter. + * + * @example $('
      my data
      ').simplemodal({options}); + * @example $('#myDiv').simplemodal({options}); + * @example jQueryObject.simplemodal({options}); + * + * 2) As a stand-alone function, like $.simplemodal(data). The data parameter + * is required and an optional options object can be passed as a second + * parameter. This method provides more flexibility in the types of data + * that are allowed. The data could be a DOM object, a jQuery object, HTML + * or a string. + * + * @example $.simplemodal('
      my data
      ', {options}); + * @example $.simplemodal('my data', {options}); + * @example $.simplemodal($('#myDiv'), {options}); + * @example $.simplemodal(jQueryObject, {options}); + * @example $.simplemodal(document.getElementById('myDiv'), {options}); + * + * A SimpleModal call can contain multiple elements, but only one modal + * dialog can be created at a time. Which means that all of the matched + * elements will be displayed within the modal container. + * + * SimpleModal internally sets the CSS needed to display the modal dialog + * properly in all browsers, yet provides the developer with the flexibility + * to easily control the look and feel. The styling for SimpleModal can be + * done through external stylesheets, or through SimpleModal, using the + * overlayCss, containerCss, and dataCss options. + * + * SimpleModal has been tested in the following browsers: + * - IE 6+ + * - Firefox 2+ + * - Opera 9+ + * - Safari 3+ + * - Chrome 1+ + * + * @name SimpleModal + * @type jQuery + * @requires jQuery v1.3 + * @cat Plugins/Windows and Overlays + * @author Eric Martin (http://ericmmartin.com) + * @version @VERSION + */ + +;(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else { + // Browser globals + factory(jQuery); + } +} +(function ($) { + var d = [], + doc = $(document), + ua = navigator.userAgent.toLowerCase(), + wndw = $(window), + w = []; + + var browser = { + ieQuirks: null, + msie: /msie/.test(ua) && !/opera/.test(ua), + opera: /opera/.test(ua) + }; + browser.ie6 = browser.msie && /msie 6./.test(ua) && typeof window['XMLHttpRequest'] !== 'object'; + browser.ie7 = browser.msie && /msie 7.0/.test(ua); + browser.boxModel = (document.compatMode === "CSS1Compat"); + + /* + * Create and display a modal dialog. + * + * @param {string, object} data A string, jQuery object or DOM object + * @param {object} [options] An optional object containing options overrides + */ + $.simplemodal = function (data, options) { + return $.simplemodal.impl.init(data, options); + }; + + /* + * Close the modal dialog. + */ + $.simplemodal.close = function () { + $.simplemodal.impl.close(); + }; + + /* + * Set focus on first or last visible input in the modal dialog. To focus on the last + * element, call $.simplemodal.focus('last'). If no input elements are found, focus is placed + * on the data wrapper element. + */ + $.simplemodal.focus = function (pos) { + $.simplemodal.impl.focus(pos); + }; + + /* + * Determine and set the dimensions of the modal dialog container. + * setPosition() is called if the autoPosition option is true. + */ + $.simplemodal.setContainerDimensions = function () { + $.simplemodal.impl.setContainerDimensions(); + }; + + /* + * Re-position the modal dialog. + */ + $.simplemodal.setPosition = function () { + $.simplemodal.impl.setPosition(); + }; + + /* + * Update the modal dialog. If new dimensions are passed, they will be used to determine + * the dimensions of the container. + * + * setContainerDimensions() is called, which in turn calls setPosition(), if enabled. + * Lastly, focus() is called is the focus option is true. + */ + $.simplemodal.update = function (height, width) { + $.simplemodal.impl.update(height, width); + }; + + /* + * Chained function to create a modal dialog. + * + * @param {object} [options] An optional object containing options overrides + */ + $.fn.simplemodal = function (options) { + return $.simplemodal.impl.init(this, options); + }; + + /* + * SimpleModal default options + * + * appendTo: (String:'body') The jQuery selector to append the elements to. For .NET, use 'form'. + * focus: (Boolean:true) Focus in the first visible, enabled element? + * opacity: (Number:50) The opacity value for the overlay div, from 0 - 100 + * overlayId: (String:'simplemodal-overlay') The DOM element id for the overlay div + * overlayCss: (Object:{}) The CSS styling for the overlay div + * containerId: (String:'simplemodal-container') The DOM element id for the container div + * containerCss: (Object:{}) The CSS styling for the container div + * dataId: (String:'simplemodal-data') The DOM element id for the data div + * dataCss: (Object:{}) The CSS styling for the data div + * minHeight: (Number:null) The minimum height for the container + * minWidth: (Number:null) The minimum width for the container + * maxHeight: (Number:null) The maximum height for the container. If not specified, the window height is used. + * maxWidth: (Number:null) The maximum width for the container. If not specified, the window width is used. + * autoResize: (Boolean:false) Automatically resize the container if it exceeds the browser window dimensions? + * autoPosition: (Boolean:true) Automatically position the container upon creation and on window resize? + * zIndex: (Number: 1000) Starting z-index value + * close: (Boolean:true) If true, closeHTML, escClose and overClose will be used if set. + If false, none of them will be used. + * closeHTML: (String:'') The HTML for the default close link. + SimpleModal will automatically add the closeClass to this element. + * closeClass: (String:'simplemodal-close') The CSS class used to bind to the close event + * escClose: (Boolean:true) Allow Esc keypress to close the dialog? + * overlayClose: (Boolean:false) Allow click on overlay to close the dialog? + * fixed: (Boolean:true) If true, the container will use a fixed position. If false, it will use a + absolute position (the dialog will scroll with the page) + * position: (Array:null) Position of container [top, left]. Can be number of pixels or percentage + * persist: (Boolean:false) Persist the data across modal calls? Only used for existing + DOM elements. If true, the data will be maintained across modal calls, if false, + the data will be reverted to its original state. + * modal: (Boolean:true) User will be unable to interact with the page below the modal or tab away from the dialog. + If false, the overlay, iframe, and certain events will be disabled allowing the user to interact + with the page below the dialog. + * onOpen: (Function:null) The callback function used in place of SimpleModal's open + * onShow: (Function:null) The callback function used after the modal dialog has opened + * onClose: (Function:null) The callback function used in place of SimpleModal's close + */ + $.simplemodal.defaults = { + appendTo: 'body', + focus: true, + opacity: 50, + overlayId: 'simplemodal-overlay', + overlayCss: {}, + containerId: 'simplemodal-container', + containerCss: {}, + dataId: 'simplemodal-data', + dataCss: {}, + minHeight: null, + minWidth: null, + maxHeight: null, + maxWidth: null, + autoResize: false, + autoPosition: true, + zIndex: 1000, + close: true, + closeHTML: '', + closeClass: 'simplemodal-close', + escClose: true, + overlayClose: false, + fixed: true, + position: null, + persist: false, + modal: true, + onOpen: null, + onShow: null, + onClose: null + }; + + /* + * Main modal object + * o = options + */ + $.simplemodal.impl = { + /* + * Contains the modal dialog elements and is the object passed + * back to the callback (onOpen, onShow, onClose) functions + */ + d: {}, + /* + * Initialize the modal dialog + */ + init: function (data, options) { + var s = this; + + // don't allow multiple calls + if (s.d.data) { + return false; + } + + browser.ieQuirks = browser.msie && !browser.boxModel; + + // merge defaults and user options + s.o = $.extend({}, $.simplemodal.defaults, options); + + // keep track of z-index + s.zIndex = s.o.zIndex; + + // set the onClose callback flag + s.occb = false; + + // determine how to handle the data based on its type + if (typeof data === 'object') { + // convert DOM object to a jQuery object + data = data instanceof $ ? data : $(data); + s.d.placeholder = false; + + // if the object came from the DOM, keep track of its parent + if (data.parent().parent().size() > 0) { + data.before($('') + .attr('id', 'simplemodal-placeholder') + .css({display: 'none'})); + + s.d.placeholder = true; + s.display = data.css('display'); + + // persist changes? if not, make a clone of the element + if (!s.o.persist) { + s.d.orig = data.clone(true); + } + } + } + else if (typeof data === 'string' || typeof data === 'number') { + // just insert the data as innerHTML + data = $('
      ').html(data); + } + else { + // unsupported data type! + alert('SimpleModal Error: Unsupported data type: ' + typeof data); + return s; + } + + // create the modal overlay, container and, if necessary, iframe + s.create(data); + data = null; + + // display the modal dialog + s.open(); + + // useful for adding events/manipulating data in the modal dialog + if ($.isFunction(s.o.onShow)) { + s.o.onShow.apply(s, [s.d]); + } + + // don't break the chain =) + return s; + }, + /* + * Create and add the modal overlay and container to the page + */ + create: function (data) { + var s = this; + + // get the window properties + s.getDimensions(); + + // add an iframe to prevent select options from bleeding through + if (s.o.simplemodal && browser.ie6) { + s.d.iframe = $('') + .css($.extend(s.o.iframeCss, { + display: 'none', + opacity: 0, + position: 'fixed', + height: w[0], + width: w[1], + zIndex: s.o.zIndex, + top: 0, + left: 0 + })) + .appendTo(s.o.appendTo); + } + + // create the overlay + s.d.overlay = $('
      ') + .attr('id', s.o.overlayId) + .addClass('simplemodal-overlay') + .css($.extend(s.o.overlayCss, { + display: 'none', + //opacity: s.o.opacity / 100, // config opcity by param_value. + height: s.o.modal ? d[0] : 0, + width: s.o.modal ? d[1] : 0, + position: 'fixed', + left: 0, + top: 0, + zIndex: s.o.zIndex + 1 + })) + .appendTo(s.o.appendTo); + + // create the container + s.d.container = $('
      ') + .attr('id', s.o.containerId) + .addClass('simplemodal-container') + .css($.extend( + {position: s.o.fixed ? 'fixed' : 'absolute'}, + s.o.containerCss, + {display: 'none', zIndex: s.o.zIndex + 2} + )) + .append(s.o.close && s.o.closeHTML + ? $(s.o.closeHTML).addClass(s.o.closeClass) + : '') + .appendTo(s.o.appendTo); + + s.d.wrap = $('
      ') + .attr('tabIndex', -1) + .addClass('simplemodal-wrap') + .css({height: '100%', outline: 0, width: '100%'}) + .appendTo(s.d.container); + + // add styling and attributes to the data + // append to body to get correct dimensions, then move to wrap + s.d.data = data + .attr('id', data.attr('id') || s.o.dataId) + .addClass('simplemodal-data') + .css($.extend(s.o.dataCss, { + display: 'none' + })) + .appendTo('body'); + data = null; + + s.setContainerDimensions(); + s.d.data.appendTo(s.d.wrap); + + // fix issues with IE + if (browser.ie6 || browser.ieQuirks) { + s.fixIE(); + } + }, + /* + * Bind events + */ + bindEvents: function () { + var s = this; + + // bind the close event to any element with the closeClass class + $('.' + s.o.closeClass).bind('click.simplemodal', function (e) { + e.preventDefault(); + s.close(); + }); + + // bind the overlay click to the close function, if enabled + if (s.o.simplemodal && s.o.close && s.o.overlayClose) { + s.d.overlay.bind('click.simplemodal', function (e) { + e.preventDefault(); + s.close(); + }); + } + + // bind keydown events + doc.bind('keydown.simplemodal', function (e) { + if (s.o.simplemodal && e.keyCode === 9) { // TAB + s.watchTab(e); + } + else if ((s.o.close && s.o.escClose) && e.keyCode === 27) { // ESC + e.preventDefault(); + s.close(); + } + }); + + // update window size + wndw.bind('resize.simplemodal orientationchange.simplemodal', function () { + // redetermine the window width/height + s.getDimensions(); + + // reposition the dialog + s.o.autoResize ? s.setContainerDimensions() : s.o.autoPosition && s.setPosition(); + + if (browser.ie6 || browser.ieQuirks) { + s.fixIE(); + } + else if (s.o.simplemodal) { + // update the iframe & overlay + s.d.iframe && s.d.iframe.css({height: w[0], width: w[1]}); + s.d.overlay.css({height: d[0], width: d[1]}); + } + }); + }, + /* + * Unbind events + */ + unbindEvents: function () { + $('.' + this.o.closeClass).unbind('click.simplemodal'); + doc.unbind('keydown.simplemodal'); + wndw.unbind('.simplemodal'); + this.d.overlay.unbind('click.simplemodal'); + }, + /* + * Fix issues in IE6 and IE7 in quirks mode + */ + fixIE: function () { + var s = this, p = s.o.position; + + // simulate fixed position - adapted from BlockUI + $.each([s.d.iframe || null, !s.o.simplemodal ? null : s.d.overlay, s.d.container.css('position') === 'fixed' ? s.d.container : null], function (i, el) { + if (el) { + var bch = 'document.body.clientHeight', bcw = 'document.body.clientWidth', + bsh = 'document.body.scrollHeight', bsl = 'document.body.scrollLeft', + bst = 'document.body.scrollTop', bsw = 'document.body.scrollWidth', + ch = 'document.documentElement.clientHeight', cw = 'document.documentElement.clientWidth', + sl = 'document.documentElement.scrollLeft', st = 'document.documentElement.scrollTop', + s = el[0].style; + + s.position = 'absolute'; + if (i < 2) { + s.removeExpression('height'); + s.removeExpression('width'); + s.setExpression('height','' + bsh + ' > ' + bch + ' ? ' + bsh + ' : ' + bch + ' + "px"'); + s.setExpression('width','' + bsw + ' > ' + bcw + ' ? ' + bsw + ' : ' + bcw + ' + "px"'); + } + else { + var te, le; + if (p && p.constructor === Array) { + var top = p[0] + ? typeof p[0] === 'number' ? p[0].toString() : p[0].replace(/px/, '') + : el.css('top').replace(/px/, ''); + te = top.indexOf('%') === -1 + ? top + ' + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"' + : parseInt(top.replace(/%/, '')) + ' * ((' + ch + ' || ' + bch + ') / 100) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"'; + + if (p[1]) { + var left = typeof p[1] === 'number' ? p[1].toString() : p[1].replace(/px/, ''); + le = left.indexOf('%') === -1 + ? left + ' + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"' + : parseInt(left.replace(/%/, '')) + ' * ((' + cw + ' || ' + bcw + ') / 100) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"'; + } + } + else { + te = '(' + ch + ' || ' + bch + ') / 2 - (this.offsetHeight / 2) + (t = ' + st + ' ? ' + st + ' : ' + bst + ') + "px"'; + le = '(' + cw + ' || ' + bcw + ') / 2 - (this.offsetWidth / 2) + (t = ' + sl + ' ? ' + sl + ' : ' + bsl + ') + "px"'; + } + s.removeExpression('top'); + s.removeExpression('left'); + s.setExpression('top', te); + s.setExpression('left', le); + } + } + }); + }, + /* + * Place focus on the first or last visible input + */ + focus: function (pos) { + var s = this, p = pos && $.inArray(pos, ['first', 'last']) !== -1 ? pos : 'first'; + + // focus on dialog or the first visible/enabled input element + var input = $(':input:enabled:visible:' + p, s.d.wrap); + setTimeout(function () { + input.length > 0 ? input.focus() : s.d.wrap.focus(); + }, 10); + }, + getDimensions: function () { + // fix a jQuery bug with determining the window height - use innerHeight if available + var s = this, + h = typeof window.innerHeight === 'undefined' ? wndw.height() : window.innerHeight; + + d = [doc.height(), doc.width()]; + w = [h, wndw.width()]; + }, + getVal: function (v, d) { + return v ? (typeof v === 'number' ? v + : v === 'auto' ? 0 + : v.indexOf('%') > 0 ? ((parseInt(v.replace(/%/, '')) / 100) * (d === 'h' ? w[0] : w[1])) + : parseInt(v.replace(/px/, ''))) + : null; + }, + /* + * Update the container. Set new dimensions, if provided. + * Focus, if enabled. Re-bind events. + */ + update: function (height, width) { + var s = this; + + // prevent update if dialog does not exist + if (!s.d.data) { + return false; + } + + // reset orig values + s.d.origHeight = s.getVal(height, 'h'); + s.d.origWidth = s.getVal(width, 'w'); + + // hide data to prevent screen flicker + s.d.data.hide(); + height && s.d.container.css('height', height); + width && s.d.container.css('width', width); + s.setContainerDimensions(); + s.d.data.show(); + s.o.focus && s.focus(); + + // rebind events + s.unbindEvents(); + s.bindEvents(); + }, + setContainerDimensions: function () { + var s = this, + badIE = browser.ie6 || browser.ie7; + + // get the dimensions for the container and data + var ch = s.d.origHeight ? s.d.origHeight : browser.opera ? s.d.container.height() : s.getVal(badIE ? s.d.container[0].currentStyle['height'] : s.d.container.css('height'), 'h'), + cw = s.d.origWidth ? s.d.origWidth : browser.opera ? s.d.container.width() : s.getVal(badIE ? s.d.container[0].currentStyle['width'] : s.d.container.css('width'), 'w'), + dh = s.d.data.outerHeight(true), dw = s.d.data.outerWidth(true); + + s.d.origHeight = s.d.origHeight || ch; + s.d.origWidth = s.d.origWidth || cw; + + // mxoh = max option height, mxow = max option width + var mxoh = s.o.maxHeight ? s.getVal(s.o.maxHeight, 'h') : null, + mxow = s.o.maxWidth ? s.getVal(s.o.maxWidth, 'w') : null, + mh = mxoh && mxoh < w[0] ? mxoh : w[0], + mw = mxow && mxow < w[1] ? mxow : w[1]; + + // moh = min option height + var moh = s.o.minHeight ? s.getVal(s.o.minHeight, 'h') : 'auto'; + if (!ch) { + if (!dh) {ch = moh;} + else { + if (dh > mh) {ch = mh;} + else if (s.o.minHeight && moh !== 'auto' && dh < moh) {ch = moh;} + else {ch = dh;} + } + } + else { + ch = s.o.autoResize && ch > mh ? mh : ch < moh ? moh : ch; + } + + // mow = min option width + var mow = s.o.minWidth ? s.getVal(s.o.minWidth, 'w') : 'auto'; + if (!cw) { + if (!dw) {cw = mow;} + else { + if (dw > mw) {cw = mw;} + else if (s.o.minWidth && mow !== 'auto' && dw < mow) {cw = mow;} + else {cw = dw;} + } + } + else { + cw = s.o.autoResize && cw > mw ? mw : cw < mow ? mow : cw; + } + + //s.d.container.css({height: ch, width: cw}); + s.d.container.css({ top:0,right:0,bottom:0,left:0 });// always be fullsize + s.d.wrap.css({overflow: (dh > ch || dw > cw) ? 'auto' : 'visible'}); + //s.o.autoPosition && s.setPosition(); + }, + setPosition: function () { + var s = this, top, left, + hc = (w[0]/2) - (s.d.container.outerHeight(true)/2), + vc = (w[1]/2) - (s.d.container.outerWidth(true)/2), + st = s.d.container.css('position') !== 'fixed' ? wndw.scrollTop() : 0; + + if (s.o.position && Object.prototype.toString.call(s.o.position) === '[object Array]') { + top = parseFloat(st) + parseFloat(s.o.position[0] || hc); + left = s.o.position[1] || vc; + } else { + top = st + hc; + left = vc; + } + s.d.container.css({left: left, top: top}); + }, + watchTab: function (e) { + var s = this; + + if ($(e.target).parents('.simplemodal-container').length > 0) { + // save the list of inputs + s.inputs = $(':input:enabled:visible:first, :input:enabled:visible:last', s.d.data[0]); + + // if it's the first or last tabbable element, refocus + if ((!e.shiftKey && e.target === s.inputs[s.inputs.length -1]) || + (e.shiftKey && e.target === s.inputs[0]) || + s.inputs.length === 0) { + e.preventDefault(); + var pos = e.shiftKey ? 'last' : 'first'; + s.focus(pos); + } + } + else { + // might be necessary when custom onShow callback is used + e.preventDefault(); + s.focus(); + } + }, + /* + * Open the modal dialog elements + * - Note: If you use the onOpen callback, you must "show" the + * overlay and container elements manually + * (the iframe will be handled by SimpleModal) + */ + open: function () { + var s = this; + // display the iframe + s.d.iframe && s.d.iframe.show(); + + if ($.isFunction(s.o.onOpen)) { + // execute the onOpen callback + s.o.onOpen.apply(s, [s.d]); + } + else { + // display the remaining elements + s.d.overlay.show(); + s.d.container.show(); + s.d.data.show(); + } + + s.o.focus && s.focus(); + + // bind default events + s.bindEvents(); + }, + /* + * Close the modal dialog + * - Note: If you use an onClose callback, you must remove the + * overlay, container and iframe elements manually + * + * @param {boolean} external Indicates whether the call to this + * function was internal or external. If it was external, the + * onClose callback will be ignored + */ + close: function () { + var s = this; + + // prevent close when dialog does not exist + if (!s.d.data) { + return false; + } + + // remove the default events + s.unbindEvents(); + + if ($.isFunction(s.o.onClose) && !s.occb) { + // set the onClose callback flag + s.occb = true; + + // execute the onClose callback + s.o.onClose.apply(s, [s.d]); + } + else { + // if the data came from the DOM, put it back + if (s.d.placeholder) { + var ph = $('#simplemodal-placeholder'); + // save changes to the data? + if (s.o.persist) { + // insert the (possibly) modified data back into the DOM + ph.replaceWith(s.d.data.removeClass('simplemodal-data').css('display', s.display)); + } + else { + // remove the current and insert the original, + // unmodified data back into the DOM + s.d.data.hide().remove(); + ph.replaceWith(s.d.orig); + } + } + else { + // otherwise, remove it + s.d.data.hide().remove(); + } + + // remove the remaining elements + s.d.container.hide().remove(); + s.d.overlay.hide(); + s.d.iframe && s.d.iframe.hide().remove(); + s.d.overlay.remove(); + + // reset the dialog object + s.d = {}; + } + } + }; +})); diff --git a/spree_theme/app/assets/javascripts/jquery.ui.customize.js b/spree_theme/app/assets/javascripts/jquery.ui.customize.js new file mode 100644 index 00000000..82d394ac --- /dev/null +++ b/spree_theme/app/assets/javascripts/jquery.ui.customize.js @@ -0,0 +1,3 @@ +//= require jquery-ui/core +// jquery.layout require jquery-ui/core +// spree_backend require jquery-ui/datepicker diff --git a/spree_theme/app/assets/javascripts/jssor.19/jssor.js b/spree_theme/app/assets/javascripts/jssor.19/jssor.js new file mode 100644 index 00000000..2c90a9d2 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jssor.19/jssor.js @@ -0,0 +1,2928 @@ +/* +* Jssor 19.0 +* http://www.jssor.com/ +* +* Licensed under the MIT license: +* http://www.opensource.org/licenses/MIT +* +* TERMS OF USE - Jssor +* +* Copyright 2014 Jssor +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/*! Jssor */ + +//$JssorDebug$ +var $JssorDebug$ = new function () { + + this.$DebugMode = true; + + // Methods + + this.$Log = function (msg, important) { + var console = window.console || {}; + var debug = this.$DebugMode; + + if (debug && console.log) { + console.log(msg); + } else if (debug && important) { + alert(msg); + } + }; + + this.$Error = function (msg, e) { + var console = window.console || {}; + var debug = this.$DebugMode; + + if (debug && console.error) { + console.error(msg); + } else if (debug) { + alert(msg); + } + + if (debug) { + // since we're debugging, fail fast by crashing + throw e || new Error(msg); + } + }; + + this.$Fail = function (msg) { + throw new Error(msg); + }; + + this.$Assert = function (value, msg) { + var debug = this.$DebugMode; + if (debug) { + if (!value) + throw new Error("Assert failed " + msg || ""); + } + }; + + this.$Trace = function (msg) { + var console = window.console || {}; + var debug = this.$DebugMode; + + if (debug && console.log) { + console.log(msg); + } + }; + + this.$Execute = function (func) { + var debug = this.$DebugMode; + if (debug) + func(); + }; + + this.$LiveStamp = function (obj, id) { + var debug = this.$DebugMode; + if (debug) { + var stamp = document.createElement("DIV"); + stamp.setAttribute("id", id); + + obj.$Live = stamp; + } + }; + + this.$C_AbstractProperty = function () { + /// + /// Tells compiler the property is abstract, it should be implemented by subclass. + /// + + throw new Error("The property is abstract, it should be implemented by subclass."); + }; + + this.$C_AbstractMethod = function () { + /// + /// Tells compiler the method is abstract, it should be implemented by subclass. + /// + + throw new Error("The method is abstract, it should be implemented by subclass."); + }; + + function C_AbstractClass(instance) { + /// + /// Tells compiler the class is abstract, it should be implemented by subclass. + /// + + if (instance.constructor === C_AbstractClass.caller) + throw new Error("Cannot create instance of an abstract class."); + } + + this.$C_AbstractClass = C_AbstractClass; +}; + +//$JssorEasing$ +var $JssorEasing$ = window.$JssorEasing$ = { + $EaseLinear: function (t) { + return t; + }, + $EaseGoBack: function (t) { + return 1 - Math.abs((t *= 2) - 1); + }, + $EaseSwing: function (t) { + return -Math.cos(t * Math.PI) / 2 + .5; + }, + $EaseInQuad: function (t) { + return t * t; + }, + $EaseOutQuad: function (t) { + return -t * (t - 2); + }, + $EaseInOutQuad: function (t) { + return (t *= 2) < 1 ? 1 / 2 * t * t : -1 / 2 * (--t * (t - 2) - 1); + }, + $EaseInCubic: function (t) { + return t * t * t; + }, + $EaseOutCubic: function (t) { + return (t -= 1) * t * t + 1; + }, + $EaseInOutCubic: function (t) { + return (t *= 2) < 1 ? 1 / 2 * t * t * t : 1 / 2 * ((t -= 2) * t * t + 2); + }, + $EaseInQuart: function (t) { + return t * t * t * t; + }, + $EaseOutQuart: function (t) { + return -((t -= 1) * t * t * t - 1); + }, + $EaseInOutQuart: function (t) { + return (t *= 2) < 1 ? 1 / 2 * t * t * t * t : -1 / 2 * ((t -= 2) * t * t * t - 2); + }, + $EaseInQuint: function (t) { + return t * t * t * t * t; + }, + $EaseOutQuint: function (t) { + return (t -= 1) * t * t * t * t + 1; + }, + $EaseInOutQuint: function (t) { + return (t *= 2) < 1 ? 1 / 2 * t * t * t * t * t : 1 / 2 * ((t -= 2) * t * t * t * t + 2); + }, + $EaseInSine: function (t) { + return 1 - Math.cos(t * Math.PI / 2); + }, + $EaseOutSine: function (t) { + return Math.sin(t * Math.PI / 2); + }, + $EaseInOutSine: function (t) { + return -1 / 2 * (Math.cos(Math.PI * t) - 1); + }, + $EaseInExpo: function (t) { + return t == 0 ? 0 : Math.pow(2, 10 * (t - 1)); + }, + $EaseOutExpo: function (t) { + return t == 1 ? 1 : -Math.pow(2, -10 * t) + 1; + }, + $EaseInOutExpo: function (t) { + return t == 0 || t == 1 ? t : (t *= 2) < 1 ? 1 / 2 * Math.pow(2, 10 * (t - 1)) : 1 / 2 * (-Math.pow(2, -10 * --t) + 2); + }, + $EaseInCirc: function (t) { + return -(Math.sqrt(1 - t * t) - 1); + }, + $EaseOutCirc: function (t) { + return Math.sqrt(1 - (t -= 1) * t); + }, + $EaseInOutCirc: function (t) { + return (t *= 2) < 1 ? -1 / 2 * (Math.sqrt(1 - t * t) - 1) : 1 / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1); + }, + $EaseInElastic: function (t) { + if (!t || t == 1) + return t; + var p = .3, s = .075; + return -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * 2 * Math.PI / p)); + }, + $EaseOutElastic: function (t) { + if (!t || t == 1) + return t; + var p = .3, s = .075; + return Math.pow(2, -10 * t) * Math.sin((t - s) * 2 * Math.PI / p) + 1; + }, + $EaseInOutElastic: function (t) { + if (!t || t == 1) + return t; + var p = .45, s = .1125; + return (t *= 2) < 1 ? -.5 * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * 2 * Math.PI / p) : Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * 2 * Math.PI / p) * .5 + 1; + }, + $EaseInBack: function (t) { + var s = 1.70158; + return t * t * ((s + 1) * t - s); + }, + $EaseOutBack: function (t) { + var s = 1.70158; + return (t -= 1) * t * ((s + 1) * t + s) + 1; + }, + $EaseInOutBack: function (t) { + var s = 1.70158; + return (t *= 2) < 1 ? 1 / 2 * t * t * (((s *= 1.525) + 1) * t - s) : 1 / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2); + }, + $EaseInBounce: function (t) { + return 1 - $JssorEasing$.$EaseOutBounce(1 - t) + }, + $EaseOutBounce: function (t) { + return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375; + }, + $EaseInOutBounce: function (t) { + return t < 1 / 2 ? $JssorEasing$.$EaseInBounce(t * 2) * .5 : $JssorEasing$.$EaseOutBounce(t * 2 - 1) * .5 + .5; + }, + $EaseInWave: function (t) { + return 1 - Math.cos(t * Math.PI * 2) + }, + $EaseOutWave: function (t) { + return Math.sin(t * Math.PI * 2); + }, + $EaseOutJump: function (t) { + return 1 - (((t *= 2) < 1) ? (t = 1 - t) * t * t : (t -= 1) * t * t); + }, + $EaseInJump: function (t) { + return ((t *= 2) < 1) ? t * t * t : (t = 2 - t) * t * t; + } +}; + +var $JssorDirection$ = window.$JssorDirection$ = { + $TO_LEFT: 0x0001, + $TO_RIGHT: 0x0002, + $TO_TOP: 0x0004, + $TO_BOTTOM: 0x0008, + $HORIZONTAL: 0x0003, + $VERTICAL: 0x000C, + //$LEFTRIGHT: 0x0003, + //$TOPBOTOM: 0x000C, + //$TOPLEFT: 0x0005, + //$TOPRIGHT: 0x0006, + //$BOTTOMLEFT: 0x0009, + //$BOTTOMRIGHT: 0x000A, + //$AROUND: 0x000F, + + $GetDirectionHorizontal: function (direction) { + return direction & 0x0003; + }, + $GetDirectionVertical: function (direction) { + return direction & 0x000C; + }, + //$ChessHorizontal: function (direction) { + // return (~direction & 0x0003) + (direction & 0x000C); + //}, + //$ChessVertical: function (direction) { + // return (~direction & 0x000C) + (direction & 0x0003); + //}, + //$IsToLeft: function (direction) { + // return (direction & 0x0003) == 0x0001; + //}, + //$IsToRight: function (direction) { + // return (direction & 0x0003) == 0x0002; + //}, + //$IsToTop: function (direction) { + // return (direction & 0x000C) == 0x0004; + //}, + //$IsToBottom: function (direction) { + // return (direction & 0x000C) == 0x0008; + //}, + $IsHorizontal: function (direction) { + return direction & 0x0003; + }, + $IsVertical: function (direction) { + return direction & 0x000C; + } +}; + +var $JssorKeyCode$ = { + $BACKSPACE: 8, + $COMMA: 188, + $DELETE: 46, + $DOWN: 40, + $END: 35, + $ENTER: 13, + $ESCAPE: 27, + $HOME: 36, + $LEFT: 37, + $NUMPAD_ADD: 107, + $NUMPAD_DECIMAL: 110, + $NUMPAD_DIVIDE: 111, + $NUMPAD_ENTER: 108, + $NUMPAD_MULTIPLY: 106, + $NUMPAD_SUBTRACT: 109, + $PAGE_DOWN: 34, + $PAGE_UP: 33, + $PERIOD: 190, + $RIGHT: 39, + $SPACE: 32, + $TAB: 9, + $UP: 38 +}; + +//var $JssorAlignment$ = { +// $TopLeft: 0x11, +// $TopCenter: 0x12, +// $TopRight: 0x14, +// $MiddleLeft: 0x21, +// $MiddleCenter: 0x22, +// $MiddleRight: 0x24, +// $BottomLeft: 0x41, +// $BottomCenter: 0x42, +// $BottomRight: 0x44, +// $IsTop: function (aligment) { +// return aligment & 0x10 > 0; +// }, +// $IsMiddle: function (alignment) { +// return alignment & 0x20 > 0; +// }, +// $IsBottom: function (alignment) { +// return alignment & 0x40 > 0; +// }, +// $IsLeft: function (alignment) { +// return alignment & 0x01 > 0; +// }, +// $IsCenter: function (alignment) { +// return alignment & 0x02 > 0; +// }, +// $IsRight: function (alignment) { +// return alignment & 0x04 > 0; +// } +//}; + +// $Jssor$ is a static class, so make it singleton instance +var $Jssor$ = window.$Jssor$ = new function () { + var _This = this; + + //#region Constants + var REGEX_WHITESPACE_GLOBAL = /\S+/g; + var ROWSER_UNKNOWN = 0; + var BROWSER_IE = 1; + var BROWSER_FIREFOX = 2; + var BROWSER_SAFARI = 3; + var BROWSER_CHROME = 4; + var BROWSER_OPERA = 5; + + //var arrActiveX = ["Msxml2.XMLHTTP", "Msxml3.XMLHTTP", "Microsoft.XMLHTTP"]; + //#endregion + + //#region Variables + var _Device; + var _Browser = 0; + var _BrowserRuntimeVersion = 0; + var _BrowserEngineVersion = 0; + var _BrowserJavascriptVersion = 0; + var _WebkitVersion = 0; + + var _Navigator = navigator; + var _AppName = _Navigator.appName; + var _AppVersion = _Navigator.appVersion; + var _UserAgent = _Navigator.userAgent; + + var _DocElmt = document.documentElement; + var _TransformProperty; + //#endregion + + function Device() { + if (!_Device) { + _Device = { + $Evt_Down: "mousedown", + $Evt_Move: "mousemove", + $Evt_Up: "mouseup" + }; + var msPrefix; + if (_Navigator.pointerEnabled || (msPrefix = _Navigator.msPointerEnabled)) { + _Device = { + $Evt_Down: msPrefix ? "MSPointerDown" : "pointerdown", + $Evt_Move: msPrefix ? "MSPointerMove" : "pointermove", + $Evt_Up: msPrefix ? "MSPointerUp" : "pointerup", + $Evt_Cancel: msPrefix ? "MSPointerCancel" : "pointercancel", + $TouchActionAttr: msPrefix ? "msTouchAction" : "touchAction", + $Touchable: _UserAgent.match(/iemobile/i) + }; + } + else if ("ontouchstart" in window || "createTouch" in document) { + _Device = { + $Evt_Down: "touchstart", + $Evt_Move: "touchmove", + $Evt_Up: "touchend", + $Evt_Cancel: "touchcancel", + $Touchable: true, + $TouchOnly: true + }; + } + } + + return _Device; + } + + function DetectBrowser(browser) { + if (!_Browser) { + if (_AppName == "Microsoft Internet Explorer" && + !!window.attachEvent && !!window.ActiveXObject) { + + var ieOffset = _UserAgent.indexOf("MSIE"); + _Browser = BROWSER_IE; + _BrowserEngineVersion = ParseFloat(_UserAgent.substring(ieOffset + 5, _UserAgent.indexOf(";", ieOffset))); + + //check IE javascript version + /*@cc_on + _BrowserJavascriptVersion = @_jscript_version; + @*/ + + // update: for intranet sites and compat view list sites, IE sends + // an IE7 User-Agent to the server to be interoperable, and even if + // the page requests a later IE version, IE will still report the + // IE7 UA to JS. we should be robust to self + //var docMode = document.documentMode; + //if (typeof docMode !== "undefined") { + // _BrowserRuntimeVersion = docMode; + //} + + _BrowserRuntimeVersion = document.documentMode || _BrowserEngineVersion; + + } + else if (_AppName == "Netscape" && !!window.addEventListener) { + + var ffOffset = _UserAgent.indexOf("Firefox"); + var saOffset = _UserAgent.indexOf("Safari"); + var chOffset = _UserAgent.indexOf("Chrome"); + var webkitOffset = _UserAgent.indexOf("AppleWebKit"); + + if (ffOffset >= 0) { + _Browser = BROWSER_FIREFOX; + _BrowserRuntimeVersion = ParseFloat(_UserAgent.substring(ffOffset + 8)); + } + else if (saOffset >= 0) { + var slash = _UserAgent.substring(0, saOffset).lastIndexOf("/"); + _Browser = (chOffset >= 0) ? BROWSER_CHROME : BROWSER_SAFARI; + _BrowserRuntimeVersion = ParseFloat(_UserAgent.substring(slash + 1, saOffset)); + } + + if (webkitOffset >= 0) + _WebkitVersion = ParseFloat(_UserAgent.substring(webkitOffset + 12)); + } + else { + var match = /(opera)(?:.*version|)[ \/]([\w.]+)/i.exec(_UserAgent); + if (match) { + _Browser = BROWSER_OPERA; + _BrowserRuntimeVersion = ParseFloat(match[2]); + } + } + } + + return browser == _Browser; + } + + function IsBrowserIE() { + return DetectBrowser(BROWSER_IE); + } + + function IsBrowserIeQuirks() { + return IsBrowserIE() && (_BrowserRuntimeVersion < 6 || document.compatMode == "BackCompat"); //Composite to "CSS1Compat" + } + + function IsBrowserFireFox() { + return DetectBrowser(BROWSER_FIREFOX); + } + + function IsBrowserSafari() { + return DetectBrowser(BROWSER_SAFARI); + } + + function IsBrowserChrome() { + return DetectBrowser(BROWSER_CHROME); + } + + function IsBrowserOpera() { + return DetectBrowser(BROWSER_OPERA); + } + + function IsBrowserBadTransform() { + return IsBrowserSafari() && (_WebkitVersion > 534) && (_WebkitVersion < 535); + } + + function IsBrowserIe9Earlier() { + return IsBrowserIE() && _BrowserRuntimeVersion < 9; + } + + function GetTransformProperty(elmt) { + + if (!_TransformProperty) { + // Note that in some versions of IE9 it is critical that + // msTransform appear in this list before MozTransform + + each(['transform', 'WebkitTransform', 'msTransform', 'MozTransform', 'OTransform'], function (property) { + if (elmt.style[property] != undefined) { + _TransformProperty = property; + return true; + } + }); + + _TransformProperty = _TransformProperty || "transform"; + } + + return _TransformProperty; + } + + // Helpers + function getOffsetParent(elmt, isFixed) { + // IE and Opera "fixed" position elements don't have offset parents. + // regardless, if it's fixed, its offset parent is the body. + if (isFixed && elmt != document.body) { + return document.body; + } else { + return elmt.offsetParent; + } + } + + function toString(obj) { + return Object.prototype.toString.call(obj); + } + + // [[Class]] -> type pairs + var class2type; + + function each(object, callback) { + if (toString(object) == "[object Array]") { + for (var i = 0; i < object.length; i++) { + if (callback(object[i], i, object)) { + return true; + } + } + } + else { + for (var name in object) { + if (callback(object[name], name, object)) { + return true; + } + } + } + } + + function GetClass2Type() { + if (!class2type) { + class2type = {}; + each(["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Object"], function (name) { + class2type["[object " + name + "]"] = name.toLowerCase(); + }); + } + + return class2type; + } + + function type(obj) { + return obj == null ? String(obj) : GetClass2Type()[toString(obj)] || "object"; + } + + function isPlainObject(obj) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if (!obj || type(obj) !== "object" || obj.nodeType || _This.$IsWindow(obj)) { + return false; + } + + var hasOwn = Object.prototype.hasOwnProperty; + + try { + // Not own constructor property must be Object + if (obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) { + return false; + } + } catch (e) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for (key in obj) { } + + return key === undefined || hasOwn.call(obj, key); + } + + function Point(x, y) { + return { x: x, y: y }; + } + + function Delay(code, delay) { + setTimeout(code, delay || 0); + } + + function RemoveByReg(str, reg) { + var m = reg.exec(str); + + if (m) { + var header = str.substr(0, m.index); + var tailer = str.substr(m.lastIndex + 1, str.length - (m.lastIndex + 1)); + str = header + tailer; + } + + return str; + } + + function BuildNewCss(oldCss, removeRegs, replaceValue) { + var css = (!oldCss || oldCss == "inherit") ? "" : oldCss; + + each(removeRegs, function (removeReg) { + var m = removeReg.exec(css); + + if (m) { + var header = css.substr(0, m.index); + var tailer = css.substr(m.lastIndex + 1, css.length - (m.lastIndex + 1)); + css = header + tailer; + } + }); + + css = replaceValue + (css.indexOf(" ") != 0 ? " " : "") + css; + + return css; + } + + function SetStyleFilterIE(elmt, value) { + if (_BrowserRuntimeVersion < 9) { + elmt.style.filter = value; + } + } + + function SetStyleMatrixIE(elmt, matrix, offset) { + //matrix is not for ie9+ running in ie8- mode + if (_BrowserJavascriptVersion < 9) { + var oldFilterValue = elmt.style.filter; + var matrixReg = new RegExp(/[\s]*progid:DXImageTransform\.Microsoft\.Matrix\([^\)]*\)/g); + var matrixValue = matrix ? "progid:DXImageTransform.Microsoft.Matrix(" + "M11=" + matrix[0][0] + ", M12=" + matrix[0][1] + ", M21=" + matrix[1][0] + ", M22=" + matrix[1][1] + ", SizingMethod='auto expand')" : ""; + + var newFilterValue = BuildNewCss(oldFilterValue, [matrixReg], matrixValue); + + SetStyleFilterIE(elmt, newFilterValue); + + _This.$CssMarginTop(elmt, offset.y); + _This.$CssMarginLeft(elmt, offset.x); + } + } + + // Methods + + //_This.$IsTouchDevice = function () { + // return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(_UserAgent); + //}; + + _This.$Device = Device; + + _This.$IsBrowserIE = IsBrowserIE; + + _This.$IsBrowserIeQuirks = IsBrowserIeQuirks; + + _This.$IsBrowserFireFox = IsBrowserFireFox; + + _This.$IsBrowserSafari = IsBrowserSafari; + + _This.$IsBrowserChrome = IsBrowserChrome; + + _This.$IsBrowserOpera = IsBrowserOpera; + + _This.$IsBrowserBadTransform = IsBrowserBadTransform; + + _This.$IsBrowserIe9Earlier = IsBrowserIe9Earlier; + + _This.$BrowserVersion = function () { + return _BrowserRuntimeVersion; + }; + + _This.$BrowserEngineVersion = function () { + return _BrowserEngineVersion || _BrowserRuntimeVersion; + }; + + _This.$WebKitVersion = function () { + DetectBrowser(); + + return _WebkitVersion; + }; + + _This.$Delay = Delay; + + _This.$Inherit = function (instance, baseClass) { + baseClass.call(instance); + return Extend({}, instance); + }; + + function Construct(instance) { + instance.constructor === Construct.caller && instance.$Construct && instance.$Construct.apply(instance, Construct.caller.arguments); + } + + _This.$Construct = Construct; + + _This.$GetElement = function (elmt) { + if (_This.$IsString(elmt)) { + elmt = document.getElementById(elmt); + } + + return elmt; + }; + + function GetEvent(event) { + return event || window.event; + } + + _This.$GetEvent = GetEvent; + + _This.$EventSrc = function (event) { + event = GetEvent(event); + return event.target || event.srcElement || document; + }; + + _This.$EventTarget = function (event) { + event = GetEvent(event); + return event.relatedTarget || event.toElement; + }; + + _This.$MousePosition = function (event) { + event = GetEvent(event); + var body = document.body; + + return { + x: event.pageX || event.clientX + (_DocElmt.scrollLeft || body.scrollLeft || 0) - (_DocElmt.clientLeft || body.clientLeft || 0) || 0, + y: event.pageY || event.clientY + (_DocElmt.scrollTop || body.scrollTop || 0) - (_DocElmt.clientTop || body.clientTop || 0) || 0 + }; + }; + + _This.$PageScroll = function () { + var body = document.body; + + return { + x: (window.pageXOffset || _DocElmt.scrollLeft || body.scrollLeft || 0) - (_DocElmt.clientLeft || body.clientLeft || 0), + y: (window.pageYOffset || _DocElmt.scrollTop || body.scrollTop || 0) - (_DocElmt.clientTop || body.clientTop || 0) + }; + }; + + _This.$WindowSize = function () { + var body = document.body; + + return { + x: body.clientWidth || _DocElmt.clientWidth, + y: body.clientHeight || _DocElmt.clientHeight + }; + }; + + //_This.$GetElementPosition = function (elmt) { + // elmt = _This.$GetElement(elmt); + // var result = Point(); + + // // technique from: + // // http://www.quirksmode.org/js/findpos.html + // // with special check for "fixed" elements. + + // while (elmt) { + // result.x += elmt.offsetLeft; + // result.y += elmt.offsetTop; + + // var isFixed = _This.$GetElementStyle(elmt).position == "fixed"; + + // if (isFixed) { + // result = result.$Plus(_This.$PageScroll(window)); + // } + + // elmt = getOffsetParent(elmt, isFixed); + // } + + // return result; + //}; + + //_This.$GetMouseScroll = function (event) { + // event = GetEvent(event); + // var delta = 0; // default value + + // // technique from: + // // http://blog.paranoidferret.com/index.php/2007/10/31/javascript-tutorial-the-scroll-wheel/ + + // if (typeof (event.wheelDelta) == "number") { + // delta = event.wheelDelta; + // } else if (typeof (event.detail) == "number") { + // delta = event.detail * -1; + // } else { + // $JssorDebug$.$Fail("Unknown event mouse scroll, no known technique."); + // } + + // // normalize value to [-1, 1] + // return delta ? delta / Math.abs(delta) : 0; + //}; + + //_This.$MakeAjaxRequest = function (url, callback) { + // var async = typeof (callback) == "function"; + // var req = null; + + // if (async) { + // var actual = callback; + // var callback = function () { + // Delay($Jssor$.$CreateCallback(null, actual, req), 1); + // }; + // } + + // if (window.ActiveXObject) { + // for (var i = 0; i < arrActiveX.length; i++) { + // try { + // req = new ActiveXObject(arrActiveX[i]); + // break; + // } catch (e) { + // continue; + // } + // } + // } else if (window.XMLHttpRequest) { + // req = new XMLHttpRequest(); + // } + + // if (!req) { + // $JssorDebug$.$Fail("Browser doesn't support XMLHttpRequest."); + // } + + // if (async) { + // req.onreadystatechange = function () { + // if (req.readyState == 4) { + // // prevent memory leaks by breaking circular reference now + // req.onreadystatechange = new Function(); + // callback(); + // } + // }; + // } + + // try { + // req.open("GET", url, async); + // req.send(null); + // } catch (e) { + // $JssorDebug$.$Log(e.name + " while making AJAX request: " + e.message); + + // req.onreadystatechange = null; + // req = null; + + // if (async) { + // callback(); + // } + // } + + // return async ? null : req; + //}; + + //_This.$ParseXml = function (string) { + // var xmlDoc = null; + + // if (window.ActiveXObject) { + // try { + // xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + // xmlDoc.async = false; + // xmlDoc.loadXML(string); + // } catch (e) { + // $JssorDebug$.$Log(e.name + " while parsing XML (ActiveX): " + e.message); + // } + // } else if (window.DOMParser) { + // try { + // var parser = new DOMParser(); + // xmlDoc = parser.parseFromString(string, "text/xml"); + // } catch (e) { + // $JssorDebug$.$Log(e.name + " while parsing XML (DOMParser): " + e.message); + // } + // } else { + // $JssorDebug$.$Fail("Browser doesn't support XML DOM."); + // } + + // return xmlDoc; + //}; + + function Css(elmt, name, value) { + /// + /// access css + /// $Jssor$.$Css(elmt, name); //get css value + /// $Jssor$.$Css(elmt, name, value); //set css value + /// + /// + /// the element to access css + /// + /// + /// the name of css property + /// + /// + /// the value to set + /// + if (value != undefined) { + elmt.style[name] = value; + } + else { + var style = elmt.currentStyle || elmt.style; + value = style[name]; + + if (value == "" && window.getComputedStyle) { + style = elmt.ownerDocument.defaultView.getComputedStyle(elmt, null); + + style && (value = style.getPropertyValue(name) || style[name]); + } + + return value; + } + } + + function CssN(elmt, name, value, isDimensional) { + /// + /// access css as numeric + /// $Jssor$.$CssN(elmt, name); //get css value + /// $Jssor$.$CssN(elmt, name, value); //set css value + /// + /// + /// the element to access css + /// + /// + /// the name of css property + /// + /// + /// the value to set + /// + if (value != undefined) { + isDimensional && (value += "px"); + Css(elmt, name, value); + } + else { + return ParseFloat(Css(elmt, name)); + } + } + + function CssP(elmt, name, value) { + /// + /// access css in pixel as numeric, like 'top', 'left', 'width', 'height' + /// $Jssor$.$CssP(elmt, name); //get css value + /// $Jssor$.$CssP(elmt, name, value); //set css value + /// + /// + /// the element to access css + /// + /// + /// the name of css property + /// + /// + /// the value to set + /// + return CssN(elmt, name, value, true); + } + + function CssProxy(name, numericOrDimension) { + /// + /// create proxy to access css, CssProxy(name[, numericOrDimension]); + /// + /// + /// the element to access css + /// + /// + /// not set: access original css, 1: access css as numeric, 2: access css in pixel as numeric + /// + var isDimensional = numericOrDimension & 2; + var cssAccessor = numericOrDimension ? CssN : Css; + return function (elmt, value) { + return cssAccessor(elmt, name, value, isDimensional); + }; + } + + function GetStyleOpacity(elmt) { + if (IsBrowserIE() && _BrowserEngineVersion < 9) { + var match = /opacity=([^)]*)/.exec(elmt.style.filter || ""); + return match ? (ParseFloat(match[1]) / 100) : 1; + } + else + return ParseFloat(elmt.style.opacity || "1"); + } + + function SetStyleOpacity(elmt, opacity, ie9EarlierForce) { + + if (IsBrowserIE() && _BrowserEngineVersion < 9) { + //var filterName = "filter"; // _BrowserEngineVersion < 8 ? "filter" : "-ms-filter"; + var finalFilter = elmt.style.filter || ""; + + // for CSS filter browsers (IE), remove alpha filter if it's unnecessary. + // update: doing _This always since IE9 beta seems to have broken the + // behavior if we rely on the programmatic filters collection. + var alphaReg = new RegExp(/[\s]*alpha\([^\)]*\)/g); + + // important: note the lazy star! _This protects against + // multiple filters; we don't want to delete the other ones. + // update: also trimming extra whitespace around filter. + + var ieOpacity = Math.round(100 * opacity); + var alphaFilter = ""; + if (ieOpacity < 100 || ie9EarlierForce) { + alphaFilter = "alpha(opacity=" + ieOpacity + ") "; + //elmt.style["-ms-filter"] = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + ieOpacity + ") "; + } + + var newFilterValue = BuildNewCss(finalFilter, [alphaReg], alphaFilter); + + SetStyleFilterIE(elmt, newFilterValue); + } + + //if (!IsBrowserIE() || _BrowserEngineVersion >= 9) + else { + elmt.style.opacity = opacity == 1 ? "" : Math.round(opacity * 100) / 100; + } + } + + function SetStyleTransformInternal(elmt, transform) { + var rotate = transform.$Rotate || 0; + var scale = transform.$Scale == undefined ? 1 : transform.$Scale; + + if (IsBrowserIe9Earlier()) { + var matrix = _This.$CreateMatrix(rotate / 180 * Math.PI, scale, scale); + SetStyleMatrixIE(elmt, (!rotate && scale == 1) ? null : matrix, _This.$GetMatrixOffset(matrix, transform.$OriginalWidth, transform.$OriginalHeight)); + } + else { + //rotate(15deg) scale(.5) translateZ(0) + var transformProperty = GetTransformProperty(elmt); + if (transformProperty) { + var transformValue = "rotate(" + rotate % 360 + "deg) scale(" + scale + ")"; + + //needed for touch device, no need for desktop device + if (IsBrowserChrome() && _WebkitVersion > 535 && "ontouchstart" in window) + transformValue += " perspective(2000px)"; + + elmt.style[transformProperty] = transformValue; + } + } + } + + _This.$SetStyleTransform = function (elmt, transform) { + if (IsBrowserBadTransform()) { + Delay(_This.$CreateCallback(null, SetStyleTransformInternal, elmt, transform)); + } + else { + SetStyleTransformInternal(elmt, transform); + } + }; + + _This.$SetStyleTransformOrigin = function (elmt, transformOrigin) { + var transformProperty = GetTransformProperty(elmt); + + if (transformProperty) + elmt.style[transformProperty + "Origin"] = transformOrigin; + }; + + _This.$CssScale = function (elmt, scale) { + + if (IsBrowserIE() && _BrowserEngineVersion < 9 || (_BrowserEngineVersion < 10 && IsBrowserIeQuirks())) { + elmt.style.zoom = (scale == 1) ? "" : scale; + } + else { + var transformProperty = GetTransformProperty(elmt); + + if (transformProperty) { + //rotate(15deg) scale(.5) + var transformValue = "scale(" + scale + ")"; + + var oldTransformValue = elmt.style[transformProperty]; + var scaleReg = new RegExp(/[\s]*scale\(.*?\)/g); + + var newTransformValue = BuildNewCss(oldTransformValue, [scaleReg], transformValue); + + elmt.style[transformProperty] = newTransformValue; + } + } + }; + + _This.$EnableHWA = function (elmt) { + if (!elmt.style[GetTransformProperty(elmt)] || elmt.style[GetTransformProperty(elmt)] == "none") + elmt.style[GetTransformProperty(elmt)] = "perspective(2000px)"; + }; + + _This.$DisableHWA = function (elmt) { + //if (force || elmt.style[GetTransformProperty(elmt)] == "perspective(2000px)") + elmt.style[GetTransformProperty(elmt)] = "none"; + }; + + var ie8OffsetWidth = 0; + var ie8OffsetHeight = 0; + //var ie8WindowResizeCallbackHandlers; + //var ie8LastVerticalScrollbar; + //var toggleInfo = ""; + + //function Ie8WindowResizeFilter(window, handler) { + + // var trigger = true; + + // var checkElement = (IsBrowserIeQuirks() ? window.document.body : window.document.documentElement); + // if (checkElement) { + // //check vertical bar + // //var hasVerticalBar = checkElement.scrollHeight > checkElement.clientHeight; + // //var verticalBarToggle = hasVerticalBar != ie8LastVerticalScrollbar; + // //ie8LastVerticalScrollbar = hasVerticalBar; + + // var widthChange = checkElement.offsetWidth - ie8OffsetWidth; + // var heightChange = checkElement.offsetHeight - ie8OffsetHeight; + // if (widthChange || heightChange) { + + // ie8OffsetWidth += widthChange; + // ie8OffsetHeight += heightChange; + // } + // else + // trigger = false; + // } + + // trigger && handler(); + //} + + //_This.$OnWindowResize = function (window, handler) { + + // if (IsBrowserIE() && _BrowserEngineVersion < 9) { + // if (!ie8WindowResizeCallbackHandlers) { + // ie8WindowResizeCallbackHandlers = [handler]; + // handler = _This.$CreateCallback(null, Ie8WindowResizeFilter, window); + // } + // else { + // ie8WindowResizeCallbackHandlers.push(handler); + // return; + // } + // } + + // _This.$AddEvent(window, "resize", handler); + //}; + + _This.$WindowResizeFilter = function (window, handler) { + return IsBrowserIe9Earlier() ? function () { + + var trigger = true; + + var checkElement = (IsBrowserIeQuirks() ? window.document.body : window.document.documentElement); + if (checkElement) { + //check vertical bar + //var hasVerticalBar = checkElement.scrollHeight > checkElement.clientHeight; + //var verticalBarToggle = hasVerticalBar != ie8LastVerticalScrollbar; + //ie8LastVerticalScrollbar = hasVerticalBar; + + var widthChange = checkElement.offsetWidth - ie8OffsetWidth; + var heightChange = checkElement.offsetHeight - ie8OffsetHeight; + if (widthChange || heightChange) { + ie8OffsetWidth += widthChange; + ie8OffsetHeight += heightChange; + } + else + trigger = false; + } + + trigger && handler(); + + } : handler; + }; + + _This.$MouseOverOutFilter = function (handler, target) { + /// + /// The target element to detect mouse over/out events. (for ie < 9 compatibility) + /// + + $JssorDebug$.$Execute(function () { + if (!target) { + throw new Error("Null reference, parameter \"target\"."); + } + }); + + return function (event) { + event = GetEvent(event); + + var eventName = event.type; + var related = event.relatedTarget || (eventName == "mouseout" ? event.toElement : event.fromElement); + + if (!related || (related !== target && !_This.$IsChild(target, related))) { + handler(event); + } + }; + }; + + _This.$AddEvent = function (elmt, eventName, handler, useCapture) { + elmt = _This.$GetElement(elmt); + + $JssorDebug$.$Execute(function () { + if (!elmt) { + $JssorDebug$.$Fail("Parameter 'elmt' not specified."); + } + + if (!handler) { + $JssorDebug$.$Fail("Parameter 'handler' not specified."); + } + + if (!elmt.addEventListener && !elmt.attachEvent) { + $JssorDebug$.$Fail("Unable to attach event handler, no known technique."); + } + }); + + // technique from: + // http://blog.paranoidferret.com/index.php/2007/08/10/javascript-working-with-events/ + + //function Handler(event) { + // handler(event || window.event); + //} + + if (elmt.addEventListener) { + if (eventName == "mousewheel") { + elmt.addEventListener("DOMMouseScroll", handler, useCapture); + } + // we are still going to add the mousewheel -- not a mistake! + // _This is for opera, since it uses onmousewheel but needs addEventListener. + elmt.addEventListener(eventName, handler, useCapture); + } + else if (elmt.attachEvent) { + elmt.attachEvent("on" + eventName, handler); + if (useCapture && elmt.setCapture) { + elmt.setCapture(); + } + } + }; + + _This.$RemoveEvent = function (elmt, eventName, handler, useCapture) { + elmt = _This.$GetElement(elmt); + + // technique from: + // http://blog.paranoidferret.com/index.php/2007/08/10/javascript-working-with-events/ + + if (elmt.removeEventListener) { + if (eventName == "mousewheel") { + elmt.removeEventListener("DOMMouseScroll", handler, useCapture); + } + // we are still going to remove the mousewheel -- not a mistake! + // _This is for opera, since it uses onmousewheel but needs removeEventListener. + elmt.removeEventListener(eventName, handler, useCapture); + } + else if (elmt.detachEvent) { + elmt.detachEvent("on" + eventName, handler); + if (useCapture && elmt.releaseCapture) { + elmt.releaseCapture(); + } + } + }; + + _This.$FireEvent = function (elmt, eventName) { + //var document = elmt.document; + + $JssorDebug$.$Execute(function () { + if (!document.createEvent && !document.createEventObject) { + $JssorDebug$.$Fail("Unable to fire event, no known technique."); + } + + if (!elmt.dispatchEvent && !elmt.fireEvent) { + $JssorDebug$.$Fail("Unable to fire event, no known technique."); + } + }); + + var evento; + + if (document.createEvent) { + evento = document.createEvent("HTMLEvents"); + evento.initEvent(eventName, false, false); + elmt.dispatchEvent(evento); + } + else { + var ieEventName = "on" + eventName; + evento = document.createEventObject(); + //event.eventType = ieEventName; + //event.eventName = ieEventName; + + elmt.fireEvent(ieEventName, evento); + } + }; + + //_This.$AddEventBrowserMouseUp = function (handler, userCapture) { + // _This.$AddEvent((IsBrowserIe9Earlier()) ? document : window, "mouseup", handler, userCapture); + //}; + + //_This.$RemoveEventBrowserMouseUp = function (handler, userCapture) { + // _This.$RemoveEvent((IsBrowserIe9Earlier()) ? document : window, "mouseup", handler, userCapture); + //}; + + //_This.$AddEventBrowserMouseDown = function (handler, userCapture) { + // _This.$AddEvent((IsBrowserIe9Earlier()) ? document : window, "mousedown", handler, userCapture); + //}; + + //_This.$RemoveEventBrowserMouseDown = function (handler, userCapture) { + // _This.$RemoveEvent((IsBrowserIe9Earlier()) ? document : window, "mousedown", handler, userCapture); + //}; + + _This.$CancelEvent = function (event) { + event = GetEvent(event); + + // technique from: + // http://blog.paranoidferret.com/index.php/2007/08/10/javascript-working-with-events/ + + if (event.preventDefault) { + event.preventDefault(); // W3C for preventing default + } + + event.cancel = true; // legacy for preventing default + event.returnValue = false; // IE for preventing default + }; + + _This.$StopEvent = function (event) { + event = GetEvent(event); + + // technique from: + // http://blog.paranoidferret.com/index.php/2007/08/10/javascript-working-with-events/ + + if (event.stopPropagation) { + event.stopPropagation(); // W3C for stopping propagation + } + + event.cancelBubble = true; // IE for stopping propagation + }; + + _This.$CreateCallback = function (object, method) { + // create callback args + var initialArgs = [].slice.call(arguments, 2); + + // create closure to apply method + var callback = function () { + // concatenate new args, but make a copy of initialArgs first + var args = initialArgs.concat([].slice.call(arguments, 0)); + + return method.apply(object, args); + }; + + //$JssorDebug$.$LiveStamp(callback, "callback_" + ($Jssor$.$GetNow() & 0xFFFFFF)); + + return callback; + }; + + //var _Freeer; + //_This.$FreeElement = function (elmt) { + // if (!_Freeer) + // _Freeer = _This.$CreateDiv(); + + // if (elmt) { + // $Jssor$.$AppendChild(_Freeer, elmt); + // $Jssor$.$ClearInnerHtml(_Freeer); + // } + //}; + + _This.$InnerText = function (elmt, text) { + if (text == undefined) + return elmt.textContent || elmt.innerText; + + var textNode = document.createTextNode(text); + _This.$Empty(elmt); + elmt.appendChild(textNode); + }; + + _This.$InnerHtml = function (elmt, html) { + if (html == undefined) + return elmt.innerHTML; + + elmt.innerHTML = html; + }; + + _This.$GetClientRect = function (elmt) { + var rect = elmt.getBoundingClientRect(); + + return { x: rect.left, y: rect.top, w: rect.right - rect.left, h: rect.bottom - rect.top }; + }; + + _This.$ClearInnerHtml = function (elmt) { + elmt.innerHTML = ""; + }; + + _This.$EncodeHtml = function (text) { + var div = _This.$CreateDiv(); + _This.$InnerText(div, text); + return _This.$InnerHtml(div); + }; + + _This.$DecodeHtml = function (html) { + var div = _This.$CreateDiv(); + _This.$InnerHtml(div, html); + return _This.$InnerText(div); + }; + + _This.$SelectElement = function (elmt) { + var userSelection; + if (window.getSelection) { + //W3C default + userSelection = window.getSelection(); + } + var theRange = null; + if (document.createRange) { + theRange = document.createRange(); + theRange.selectNode(elmt); + } + else { + theRange = document.body.createTextRange(); + theRange.moveToElementText(elmt); + theRange.select(); + } + //set user selection + if (userSelection) + userSelection.addRange(theRange); + }; + + _This.$DeselectElements = function () { + if (document.selection) { + document.selection.empty(); + } else if (window.getSelection) { + window.getSelection().removeAllRanges(); + } + }; + + _This.$Children = function (elmt, includeAll) { + var children = []; + + for (var tmpEl = elmt.firstChild; tmpEl; tmpEl = tmpEl.nextSibling) { + if (includeAll || tmpEl.nodeType == 1) { + children.push(tmpEl); + } + } + + return children; + }; + + function FindChild(elmt, attrValue, noDeep, attrName) { + attrName = attrName || "u"; + + for (elmt = elmt ? elmt.firstChild : null; elmt; elmt = elmt.nextSibling) { + if (elmt.nodeType == 1) { + if (AttributeEx(elmt, attrName) == attrValue) + return elmt; + + if (!noDeep) { + var childRet = FindChild(elmt, attrValue, noDeep, attrName); + if (childRet) + return childRet; + } + } + } + } + + _This.$FindChild = FindChild; + + function FindChildren(elmt, attrValue, noDeep, attrName) { + attrName = attrName || "u"; + + var ret = []; + + for (elmt = elmt ? elmt.firstChild : null; elmt; elmt = elmt.nextSibling) { + if (elmt.nodeType == 1) { + if (AttributeEx(elmt, attrName) == attrValue) + ret.push(elmt); + + if (!noDeep) { + var childRet = FindChildren(elmt, attrValue, noDeep, attrName); + if (childRet.length) + ret = ret.concat(childRet); + } + } + } + + return ret; + } + + _This.$FindChildren = FindChildren; + + function FindChildByTag(elmt, tagName, noDeep) { + + for (elmt = elmt ? elmt.firstChild : null; elmt; elmt = elmt.nextSibling) { + if (elmt.nodeType == 1) { + if (elmt.tagName == tagName) + return elmt; + + if (!noDeep) { + var childRet = FindChildByTag(elmt, tagName, noDeep); + if (childRet) + return childRet; + } + } + } + } + + _This.$FindChildByTag = FindChildByTag; + + function FindChildrenByTag(elmt, tagName, noDeep) { + var ret = []; + + for (elmt = elmt ? elmt.firstChild : null; elmt; elmt = elmt.nextSibling) { + if (elmt.nodeType == 1) { + if (!tagName || elmt.tagName == tagName) + ret.push(elmt); + + if (!noDeep) { + var childRet = FindChildrenByTag(elmt, tagName, noDeep); + if (childRet.length) + ret = ret.concat(childRet); + } + } + } + + return ret; + } + + _This.$FindChildrenByTag = FindChildrenByTag; + + _This.$GetElementsByTag = function (elmt, tagName) { + return elmt.getElementsByTagName(tagName); + }; + + function Extend(target) { + for (var i = 1; i < arguments.length; i++) { + + var options = arguments[i]; + + // Only deal with non-null/undefined values + if (options) { + // Extend the base object + for (var name in options) { + target[name] = options[name]; + } + } + } + + // Return the modified object + return target; + } + + _This.$Extend = Extend; + + function Unextend(target, options) { + $JssorDebug$.$Assert(options); + + var unextended = {}; + + // Extend the base object + for (var name in target) { + if (target[name] !== options[name]) { + unextended[name] = target[name]; + } + } + + // Return the modified object + return unextended; + } + + _This.$Unextend = Unextend; + + _This.$IsUndefined = function (obj) { + return type(obj) == "undefined"; + }; + + _This.$IsFunction = function (obj) { + return type(obj) == "function"; + }; + + _This.$IsArray = function (obj) { + return type(obj) == "array"; + }; + + _This.$IsString = function (obj) { + return type(obj) == "string"; + }; + + _This.$IsNumeric = function (obj) { + return !isNaN(ParseFloat(obj)) && isFinite(obj); + }; + + _This.$IsWindow = function (obj) { + return obj && obj == obj.window; + }; + + _This.$Type = type; + + // args is for internal usage only + _This.$Each = each; + + _This.$IsPlainObject = isPlainObject; + + function CreateElement(tagName) { + return document.createElement(tagName); + } + + _This.$CreateElement = CreateElement; + + _This.$CreateDiv = function () { + return CreateElement("DIV", document); + }; + + _This.$CreateSpan = function () { + return CreateElement("SPAN", document); + }; + + _This.$EmptyFunction = function () { }; + + function Attribute(elmt, name, value) { + if (value == undefined) + return elmt.getAttribute(name); + + elmt.setAttribute(name, value); + } + + function AttributeEx(elmt, name) { + return Attribute(elmt, name) || Attribute(elmt, "data-" + name); + } + + _This.$Attribute = Attribute; + _This.$AttributeEx = AttributeEx; + + function ClassName(elmt, className) { + if (className == undefined) + return elmt.className; + + elmt.className = className; + } + + _This.$ClassName = ClassName; + + function ToHash(array) { + var hash = {}; + + each(array, function (item) { + hash[item] = item; + }); + + return hash; + } + + _This.$ToHash = ToHash; + + function Join(separator, strings) { + /// + /// The element to show the dialog around + /// + /// + /// The element to show the dialog around + /// + + var joined = ""; + + each(strings, function (str) { + joined && (joined += separator); + joined += str; + }); + + return joined; + } + + _This.$Join = Join; + + _This.$AddClass = function (elmt, className) { + var newClassName = ClassName(elmt) + " " + className; + ClassName(elmt, Join(" ", ToHash(newClassName.match(REGEX_WHITESPACE_GLOBAL)))); + }; + + _This.$RemoveClass = function (elmt, className) { + ClassName(elmt, Join(" ", _This.$Unextend(ToHash(ClassName(elmt).match(REGEX_WHITESPACE_GLOBAL)), ToHash(className.match(REGEX_WHITESPACE_GLOBAL))))); + }; + + _This.$ParentNode = function (elmt) { + return elmt.parentNode; + }; + + _This.$HideElement = function (elmt) { + _This.$CssDisplay(elmt, "none"); + }; + + _This.$EnableElement = function (elmt, notEnable) { + if (notEnable) { + _This.$Attribute(elmt, "disabled", true); + } + else { + _This.$RemoveAttribute(elmt, "disabled"); + } + }; + + _This.$HideElements = function (elmts) { + for (var i = 0; i < elmts.length; i++) { + _This.$HideElement(elmts[i]); + } + }; + + _This.$ShowElement = function (elmt, hide) { + _This.$CssDisplay(elmt, hide ? "none" : ""); + }; + + _This.$ShowElements = function (elmts, hide) { + for (var i = 0; i < elmts.length; i++) { + _This.$ShowElement(elmts[i], hide); + } + }; + + _This.$RemoveAttribute = function (elmt, attrbuteName) { + elmt.removeAttribute(attrbuteName); + }; + + _This.$CanClearClip = function () { + return IsBrowserIE() && _BrowserRuntimeVersion < 10; + }; + + _This.$SetStyleClip = function (elmt, clip) { + if (clip) { + elmt.style.clip = "rect(" + Math.round(clip.$Top) + "px " + Math.round(clip.$Right) + "px " + Math.round(clip.$Bottom) + "px " + Math.round(clip.$Left) + "px)"; + } + else { + var cssText = elmt.style.cssText; + var clipRegs = [ + new RegExp(/[\s]*clip: rect\(.*?\)[;]?/i), + new RegExp(/[\s]*cliptop: .*?[;]?/i), + new RegExp(/[\s]*clipright: .*?[;]?/i), + new RegExp(/[\s]*clipbottom: .*?[;]?/i), + new RegExp(/[\s]*clipleft: .*?[;]?/i) + ]; + + var newCssText = BuildNewCss(cssText, clipRegs, ""); + + $Jssor$.$CssCssText(elmt, newCssText); + } + }; + + _This.$GetNow = function () { + return new Date().getTime(); + }; + + _This.$AppendChild = function (elmt, child) { + elmt.appendChild(child); + }; + + _This.$AppendChildren = function (elmt, children) { + each(children, function (child) { + _This.$AppendChild(elmt, child); + }); + }; + + _This.$InsertBefore = function (newNode, refNode, pNode) { + /// + /// Insert a node before a reference node + /// + /// + /// A new node to insert + /// + /// + /// The reference node to insert a new node before + /// + /// + /// The parent node to insert node to + /// + + (pNode || refNode.parentNode).insertBefore(newNode, refNode); + }; + + _This.$InsertAfter = function (newNode, refNode, pNode) { + /// + /// Insert a node after a reference node + /// + /// + /// A new node to insert + /// + /// + /// The reference node to insert a new node after + /// + /// + /// The parent node to insert node to + /// + + _This.$InsertBefore(newNode, refNode.nextSibling, pNode || refNode.parentNode); + }; + + _This.$InsertAdjacentHtml = function (elmt, where, text) { + elmt.insertAdjacentHTML(where, text); + }; + + _This.$RemoveElement = function (elmt, pNode) { + /// + /// Remove element from parent node + /// + /// + /// The element to remove + /// + /// + /// The parent node to remove elment from + /// + (pNode || elmt.parentNode).removeChild(elmt); + }; + + _This.$RemoveElements = function (elmts, pNode) { + each(elmts, function (elmt) { + _This.$RemoveElement(elmt, pNode); + }); + }; + + _This.$Empty = function (elmt) { + _This.$RemoveElements(_This.$Children(elmt, true), elmt); + }; + + _This.$ParseInt = function (str, radix) { + return parseInt(str, radix || 10); + }; + + var ParseFloat = parseFloat; + + _This.$ParseFloat = ParseFloat; + + _This.$IsChild = function (elmtA, elmtB) { + var body = document.body; + + while (elmtB && elmtA !== elmtB && body !== elmtB) { + try { + elmtB = elmtB.parentNode; + } catch (e) { + // Firefox sometimes fires events for XUL elements, which throws + // a "permission denied" error. so this is not a child. + return false; + } + } + + return elmtA === elmtB; + }; + + function CloneNode(elmt, noDeep, keepId) { + var clone = elmt.cloneNode(!noDeep); + if (!keepId) { + _This.$RemoveAttribute(clone, "id"); + } + + return clone; + } + + _This.$CloneNode = CloneNode; + + //function TranslateTransition(transition) { + // if (transition) { + // var flyDirection = transition.$FlyDirection; + + // if (flyDirection & 1) { + // transition.x = transition.$ScaleHorizontal || 1; + // } + // if (flyDirection & 2) { + // transition.x = -transition.$ScaleHorizontal || -1; + // } + // if (flyDirection & 4) { + // transition.y = transition.$ScaleVertical || 1; + // } + // if (flyDirection & 8) { + // transition.y = -transition.$ScaleVertical || -1; + // } + + // if (transition.$Rotate == true) + // transition.$Rotate = 1; + + // TranslateTransition(transition.$Brother); + // } + //} + + //_This.$TranslateTransitions = function (transitions) { + // /// + // /// For backward compatibility only. + // /// + // if (transitions) { + // for (var i = 0; i < transitions.length; i++) { + // TranslateTransition(transitions[i]); + // } + // for (var name in transitions) { + // TranslateTransition(transitions[name]); + // } + // } + //}; + + //function ImageLoader() { + // var _ThisImageLoader = this; + // var _BaseImageLoader = _This.$Inherit(_ThisImageLoader, $JssorObject$); + + // var _ImageLoading = 1; + // var _MainImageSrc; + // var _MainImage; + // var _CompleteCallback; + // var _MainImageAbort; + + // function LoadCompleteCallback(image, abort) { + // _ImageLoading--; + + // if (image) { + // _This.$RemoveEvent(image, "load"); + // _This.$RemoveEvent(image, "abort"); + // _This.$RemoveEvent(image, "error"); + + // if (_MainImageSrc == image.src) { + // _MainImage = image; + // _MainImageAbort = abort; + // } + // } + + // _CompleteCallback && _CompleteCallback(_MainImage, _MainImageAbort); + // } + + // function LoadImage(src) { + // _ImageLoading++; + + // if (IsBrowserOpera() && _BrowserRuntimeVersion < 11.6 || !src) { + // LoadImageCallback(callback, null, !src); + // } + // else { + // var image = new Image(); + + // _This.$AddEvent(image, "load", _This.$CreateCallback(null, LoadImageCallback, image, false)); + + // var abortHandler = _This.$CreateCallback(null, LoadImageCallback, image, true); + // _This.$AddEvent(image, "abort", abortHandler); + // _This.$AddEvent(image, "error", abortHandler); + + // image.src = src; + // } + // } + + // _ThisImageLoader.$LoadImage = function (src, callback) { + // _MainImageSrc = src; + // _CompleteCallback = callback; + + // LoadImage(src); + // LoadComplete(); + // }; + + // _ThisImageLoader.$LoadImages = function (imageElmts, mainImageElmt, callback) { + // mainImageElmt && (_MainImageSrc = mainImageElmt.src); + // _CompleteCallback = callback; + + // each(imageElmts, function (imageElmt) { + // LoadImage(imageElmt.src); + // }); + // LoadComplete(); + // }; + //} + + _This.$LoadImage = function (src, callback) { + var image = new Image(); + + function LoadImageCompleteHandler(event, abort) { + _This.$RemoveEvent(image, "load", LoadImageCompleteHandler); + _This.$RemoveEvent(image, "abort", ErrorOrAbortHandler); + _This.$RemoveEvent(image, "error", ErrorOrAbortHandler); + + if (callback) + callback(image, abort); + } + + function ErrorOrAbortHandler(event) { + LoadImageCompleteHandler(event, true); + } + + if (IsBrowserOpera() && _BrowserRuntimeVersion < 11.6 || !src) { + LoadImageCompleteHandler(!src); + } + else { + + _This.$AddEvent(image, "load", LoadImageCompleteHandler); + _This.$AddEvent(image, "abort", ErrorOrAbortHandler); + _This.$AddEvent(image, "error", ErrorOrAbortHandler); + + image.src = src; + } + }; + + _This.$LoadImages = function (imageElmts, mainImageElmt, callback) { + + var _ImageLoading = imageElmts.length + 1; + + function LoadImageCompleteEventHandler(image, abort) { + + _ImageLoading--; + if (mainImageElmt && image && image.src == mainImageElmt.src) + mainImageElmt = image; + !_ImageLoading && callback && callback(mainImageElmt); + } + + each(imageElmts, function (imageElmt) { + _This.$LoadImage(imageElmt.src, LoadImageCompleteEventHandler); + }); + + LoadImageCompleteEventHandler(); + }; + + _This.$BuildElement = function (template, tagName, replacer, createCopy) { + if (createCopy) + template = CloneNode(template); + + var templateHolders = FindChildren(template, tagName); + if (!templateHolders.length) + templateHolders = $Jssor$.$GetElementsByTag(template, tagName); + + for (var j = templateHolders.length - 1; j > -1; j--) { + var templateHolder = templateHolders[j]; + var replaceItem = CloneNode(replacer); + ClassName(replaceItem, ClassName(templateHolder)); + $Jssor$.$CssCssText(replaceItem, templateHolder.style.cssText); + + $Jssor$.$InsertBefore(replaceItem, templateHolder); + $Jssor$.$RemoveElement(templateHolder); + } + + return template; + }; + + function JssorButtonEx(elmt) { + var _Self = this; + + var _OriginClassName; + + var _IsMouseDown; //class name 'dn' + var _IsSelected; //class name 1(active): 'av', 2(passive): 'pv' + var _IsDisabled; //class name 'ds' + + function Highlight() { + var className = _OriginClassName; + + if (_IsDisabled) { + className += 'ds'; + } + else if (_IsMouseDown) { + className += 'dn'; + } + else if (_IsSelected == 2) { + className += "pv"; + } + else if (_IsSelected) { + className += "av"; + } + + ClassName(elmt, className); + } + + function MouseUpOrCancelEventHandler(event) { + _IsMouseDown = false; + + Highlight(); + + _This.$RemoveEvent(document, Device().$Evt_Up, MouseUpOrCancelEventHandler); + Device().$Evt_Cancel && _This.$RemoveEvent(document, Device().$Evt_Cancel, MouseUpOrCancelEventHandler); + } + + function MouseDownEventHandler(event) { + if (_IsDisabled) { + _This.$CancelEvent(event); + } + else { + + _IsMouseDown = true; + + Highlight(); + + _This.$AddEvent(document, Device().$Evt_Up, MouseUpOrCancelEventHandler); + Device().$Evt_Cancel && _This.$AddEvent(document, Device().$Evt_Cancel, MouseUpOrCancelEventHandler); + } + } + + _Self.$Selected = function (activate) { + if (activate != undefined) { + _IsSelected = activate; + + Highlight(); + } + else { + return _IsSelected; + } + }; + + _Self.$Enable = function (enable) { + if (enable != undefined) { + _IsDisabled = !enable; + + Highlight(); + } + else { + return !_IsDisabled; + } + }; + + //JssorButtonEx Constructor + { + elmt = _This.$GetElement(elmt); + + _OriginClassName = ClassName(elmt); + + $Jssor$.$AddEvent(elmt, Device().$Evt_Down, MouseDownEventHandler); + } + } + + _This.$Buttonize = function (elmt) { + return new JssorButtonEx(elmt); + }; + + _This.$Css = Css; + _This.$CssN = CssN; + _This.$CssP = CssP; + + _This.$CssOverflow = CssProxy("overflow"); + + _This.$CssTop = CssProxy("top", 2); + _This.$CssLeft = CssProxy("left", 2); + _This.$CssWidth = CssProxy("width", 2); + _This.$CssHeight = CssProxy("height", 2); + _This.$CssMarginLeft = CssProxy("marginLeft", 2); + _This.$CssMarginTop = CssProxy("marginTop", 2); + _This.$CssPosition = CssProxy("position"); + _This.$CssDisplay = CssProxy("display"); + _This.$CssZIndex = CssProxy("zIndex", 1); + _This.$CssFloat = function (elmt, floatValue) { + return Css(elmt, IsBrowserIE() ? "styleFloat" : "cssFloat", floatValue); + }; + _This.$CssOpacity = function (elmt, opacity, ie9EarlierForce) { + if (opacity != undefined) { + SetStyleOpacity(elmt, opacity, ie9EarlierForce); + } + else { + return GetStyleOpacity(elmt); + } + }; + + _This.$CssCssText = function (elmt, text) { + if (text != undefined) { + elmt.style.cssText = text; + } + else { + return elmt.style.cssText; + } + }; + + var _StyleGetter = { + $Opacity: _This.$CssOpacity, + $Top: _This.$CssTop, + $Left: _This.$CssLeft, + $Width: _This.$CssWidth, + $Height: _This.$CssHeight, + $Position: _This.$CssPosition, + $Display: _This.$CssDisplay, + $ZIndex: _This.$CssZIndex + }; + + var _StyleSetterReserved; + + function StyleSetter() { + if (!_StyleSetterReserved) { + _StyleSetterReserved = Extend({ + $MarginTop: _This.$CssMarginTop, + $MarginLeft: _This.$CssMarginLeft, + $Clip: _This.$SetStyleClip, + $Transform: _This.$SetStyleTransform + }, _StyleGetter); + } + return _StyleSetterReserved; + } + + function StyleSetterEx() { + StyleSetter(); + + //For Compression Only + _StyleSetterReserved.$Transform = _StyleSetterReserved.$Transform; + + return _StyleSetterReserved; + } + + _This.$StyleSetter = StyleSetter; + + _This.$StyleSetterEx = StyleSetterEx; + + _This.$GetStyles = function (elmt, originStyles) { + StyleSetter(); + + var styles = {}; + + each(originStyles, function (value, key) { + if (_StyleGetter[key]) { + styles[key] = _StyleGetter[key](elmt); + } + }); + + return styles; + }; + + _This.$SetStyles = function (elmt, styles) { + var styleSetter = StyleSetter(); + + each(styles, function (value, key) { + styleSetter[key] && styleSetter[key](elmt, value); + }); + }; + + _This.$SetStylesEx = function (elmt, styles) { + StyleSetterEx(); + + _This.$SetStyles(elmt, styles); + }; + + var $JssorMatrix$ = new function () { + var _ThisMatrix = this; + + function Multiply(ma, mb) { + var acs = ma[0].length; + var rows = ma.length; + var cols = mb[0].length; + + var matrix = []; + + for (var r = 0; r < rows; r++) { + var row = matrix[r] = []; + for (var c = 0; c < cols; c++) { + var unitValue = 0; + + for (var ac = 0; ac < acs; ac++) { + unitValue += ma[r][ac] * mb[ac][c]; + } + + row[c] = unitValue; + } + } + + return matrix; + } + + _ThisMatrix.$ScaleX = function (matrix, sx) { + return _ThisMatrix.$ScaleXY(matrix, sx, 0); + }; + + _ThisMatrix.$ScaleY = function (matrix, sy) { + return _ThisMatrix.$ScaleXY(matrix, 0, sy); + }; + + _ThisMatrix.$ScaleXY = function (matrix, sx, sy) { + return Multiply(matrix, [[sx, 0], [0, sy]]); + }; + + _ThisMatrix.$TransformPoint = function (matrix, p) { + var pMatrix = Multiply(matrix, [[p.x], [p.y]]); + + return Point(pMatrix[0][0], pMatrix[1][0]); + }; + }; + + _This.$CreateMatrix = function (alpha, scaleX, scaleY) { + var cos = Math.cos(alpha); + var sin = Math.sin(alpha); + //var r11 = cos; + //var r21 = sin; + //var r12 = -sin; + //var r22 = cos; + + //var m11 = cos * scaleX; + //var m12 = -sin * scaleY; + //var m21 = sin * scaleX; + //var m22 = cos * scaleY; + + return [[cos * scaleX, -sin * scaleY], [sin * scaleX, cos * scaleY]]; + }; + + _This.$GetMatrixOffset = function (matrix, width, height) { + var p1 = $JssorMatrix$.$TransformPoint(matrix, Point(-width / 2, -height / 2)); + var p2 = $JssorMatrix$.$TransformPoint(matrix, Point(width / 2, -height / 2)); + var p3 = $JssorMatrix$.$TransformPoint(matrix, Point(width / 2, height / 2)); + var p4 = $JssorMatrix$.$TransformPoint(matrix, Point(-width / 2, height / 2)); + + return Point(Math.min(p1.x, p2.x, p3.x, p4.x) + width / 2, Math.min(p1.y, p2.y, p3.y, p4.y) + height / 2); + }; + + _This.$Cast = function (fromStyles, difStyles, interPosition, easings, durings, rounds, options) { + + var currentStyles = difStyles; + + if (fromStyles) { + currentStyles = {}; + + for (var key in difStyles) { + + var round = rounds[key] || 1; + var during = durings[key] || [0, 1]; + var propertyInterPosition = (interPosition - during[0]) / during[1]; + propertyInterPosition = Math.min(Math.max(propertyInterPosition, 0), 1); + propertyInterPosition = propertyInterPosition * round; + var floorPosition = Math.floor(propertyInterPosition); + if (propertyInterPosition != floorPosition) + propertyInterPosition -= floorPosition; + + var easing = easings[key] || easings.$Default || $JssorEasing$.$EaseSwing; + var easingValue = easing(propertyInterPosition); + var currentPropertyValue; + var value = fromStyles[key]; + var toValue = difStyles[key]; + var difValue = difStyles[key]; + + if ($Jssor$.$IsNumeric(difValue)) { + currentPropertyValue = value + difValue * easingValue; + } + else { + currentPropertyValue = $Jssor$.$Extend({ $Offset: {} }, fromStyles[key]); + + $Jssor$.$Each(difValue.$Offset, function (rectX, n) { + var offsetValue = rectX * easingValue; + currentPropertyValue.$Offset[n] = offsetValue; + currentPropertyValue[n] += offsetValue; + }); + } + currentStyles[key] = currentPropertyValue; + } + + if (difStyles.$Zoom || difStyles.$Rotate) { + currentStyles.$Transform = { $Rotate: currentStyles.$Rotate || 0, $Scale: currentStyles.$Zoom, $OriginalWidth: options.$OriginalWidth, $OriginalHeight: options.$OriginalHeight }; + } + } + + if (difStyles.$Clip && options.$Move) { + var styleFrameNClipOffset = currentStyles.$Clip.$Offset; + + var offsetY = (styleFrameNClipOffset.$Top || 0) + (styleFrameNClipOffset.$Bottom || 0); + var offsetX = (styleFrameNClipOffset.$Left || 0) + (styleFrameNClipOffset.$Right || 0); + + currentStyles.$Left = (currentStyles.$Left || 0) + offsetX; + currentStyles.$Top = (currentStyles.$Top || 0) + offsetY; + currentStyles.$Clip.$Left -= offsetX; + currentStyles.$Clip.$Right -= offsetX; + currentStyles.$Clip.$Top -= offsetY; + currentStyles.$Clip.$Bottom -= offsetY; + } + + if (currentStyles.$Clip && $Jssor$.$CanClearClip() && !currentStyles.$Clip.$Top && !currentStyles.$Clip.$Left && (currentStyles.$Clip.$Right == options.$OriginalWidth) && (currentStyles.$Clip.$Bottom == options.$OriginalHeight)) + currentStyles.$Clip = null; + + return currentStyles; + }; +}; + +//$JssorObject$ +function $JssorObject$() { + var _ThisObject = this; + // Fields + + var _Listeners = []; // dictionary of eventName --> array of handlers + var _Listenees = []; + + // Private Methods + function AddListener(eventName, handler) { + + $JssorDebug$.$Execute(function () { + if (eventName == undefined || eventName == null) + throw new Error("param 'eventName' is null or empty."); + + if (typeof (handler) != "function") { + throw "param 'handler' must be a function."; + } + + $Jssor$.$Each(_Listeners, function (listener) { + if (listener.$EventName == eventName && listener.$Handler === handler) { + throw new Error("The handler listened to the event already, cannot listen to the same event of the same object with the same handler twice."); + } + }); + }); + + _Listeners.push({ $EventName: eventName, $Handler: handler }); + } + + function RemoveListener(eventName, handler) { + + $JssorDebug$.$Execute(function () { + if (eventName == undefined || eventName == null) + throw new Error("param 'eventName' is null or empty."); + + if (typeof (handler) != "function") { + throw "param 'handler' must be a function."; + } + }); + + $Jssor$.$Each(_Listeners, function (listener, index) { + if (listener.$EventName == eventName && listener.$Handler === handler) { + _Listeners.splice(index, 1); + } + }); + } + + function ClearListeners() { + _Listeners = []; + } + + function ClearListenees() { + + $Jssor$.$Each(_Listenees, function (listenee) { + $Jssor$.$RemoveEvent(listenee.$Obj, listenee.$EventName, listenee.$Handler); + }); + + _Listenees = []; + } + + //Protected Methods + _ThisObject.$Listen = function (obj, eventName, handler, useCapture) { + + $JssorDebug$.$Execute(function () { + if (!obj) + throw new Error("param 'obj' is null or empty."); + + if (eventName == undefined || eventName == null) + throw new Error("param 'eventName' is null or empty."); + + if (typeof (handler) != "function") { + throw "param 'handler' must be a function."; + } + + $Jssor$.$Each(_Listenees, function (listenee) { + if (listenee.$Obj === obj && listenee.$EventName == eventName && listenee.$Handler === handler) { + throw new Error("The handler listened to the event already, cannot listen to the same event of the same object with the same handler twice."); + } + }); + }); + + $Jssor$.$AddEvent(obj, eventName, handler, useCapture); + _Listenees.push({ $Obj: obj, $EventName: eventName, $Handler: handler }); + }; + + _ThisObject.$Unlisten = function (obj, eventName, handler) { + + $JssorDebug$.$Execute(function () { + if (!obj) + throw new Error("param 'obj' is null or empty."); + + if (eventName == undefined || eventName == null) + throw new Error("param 'eventName' is null or empty."); + + if (typeof (handler) != "function") { + throw "param 'handler' must be a function."; + } + }); + + $Jssor$.$Each(_Listenees, function (listenee, index) { + if (listenee.$Obj === obj && listenee.$EventName == eventName && listenee.$Handler === handler) { + $Jssor$.$RemoveEvent(obj, eventName, handler); + _Listenees.splice(index, 1); + } + }); + }; + + _ThisObject.$UnlistenAll = ClearListenees; + + // Public Methods + _ThisObject.$On = _ThisObject.addEventListener = AddListener; + + _ThisObject.$Off = _ThisObject.removeEventListener = RemoveListener; + + _ThisObject.$TriggerEvent = function (eventName) { + + var args = [].slice.call(arguments, 1); + + $Jssor$.$Each(_Listeners, function (listener) { + listener.$EventName == eventName && listener.$Handler.apply(window, args); + }); + }; + + _ThisObject.$Destroy = function () { + ClearListenees(); + ClearListeners(); + + for (var name in _ThisObject) + delete _ThisObject[name]; + }; + + $JssorDebug$.$C_AbstractClass(_ThisObject); +}; + +function $JssorAnimator$(delay, duration, options, elmt, fromStyles, difStyles) { + delay = delay || 0; + + var _ThisAnimator = this; + var _AutoPlay; + var _Hiden; + var _CombineMode; + var _PlayToPosition; + var _PlayDirection; + var _NoStop; + var _TimeStampLastFrame = 0; + + var _SubEasings; + var _SubRounds; + var _SubDurings; + var _Callback; + + var _Shift = 0; + var _Position_Current = 0; + var _Position_Display = 0; + var _Hooked; + + var _Position_InnerBegin = delay; + var _Position_InnerEnd = delay + duration; + var _Position_OuterBegin; + var _Position_OuterEnd; + var _LoopLength; + + var _NestedAnimators = []; + var _StyleSetter; + + function GetPositionRange(position, begin, end) { + var range = 0; + + if (position < begin) + range = -1; + + else if (position > end) + range = 1; + + return range; + } + + function GetInnerPositionRange(position) { + return GetPositionRange(position, _Position_InnerBegin, _Position_InnerEnd); + } + + function GetOuterPositionRange(position) { + return GetPositionRange(position, _Position_OuterBegin, _Position_OuterEnd); + } + + function Shift(offset) { + _Position_OuterBegin += offset; + _Position_OuterEnd += offset; + _Position_InnerBegin += offset; + _Position_InnerEnd += offset; + + _Position_Current += offset; + _Position_Display += offset; + + _Shift = offset; + } + + function Locate(position, relative) { + var offset = position - _Position_OuterBegin + delay * relative; + + Shift(offset); + + //$JssorDebug$.$Execute(function () { + // _ThisAnimator.$Position_InnerBegin = _Position_InnerBegin; + // _ThisAnimator.$Position_InnerEnd = _Position_InnerEnd; + // _ThisAnimator.$Position_OuterBegin = _Position_OuterBegin; + // _ThisAnimator.$Position_OuterEnd = _Position_OuterEnd; + //}); + + return _Position_OuterEnd; + } + + function GoToPosition(positionOuter, force) { + var trimedPositionOuter = positionOuter; + + if (_LoopLength && (trimedPositionOuter >= _Position_OuterEnd || trimedPositionOuter <= _Position_OuterBegin)) { + trimedPositionOuter = ((trimedPositionOuter - _Position_OuterBegin) % _LoopLength + _LoopLength) % _LoopLength + _Position_OuterBegin; + } + + if (!_Hooked || _NoStop || force || _Position_Current != trimedPositionOuter) { + + var positionToDisplay = Math.min(trimedPositionOuter, _Position_OuterEnd); + positionToDisplay = Math.max(positionToDisplay, _Position_OuterBegin); + + if (!_Hooked || _NoStop || force || positionToDisplay != _Position_Display) { + if (difStyles) { + + var interPosition = (positionToDisplay - _Position_InnerBegin) / (duration || 1); + + if (options.$Reverse) + interPosition = 1 - interPosition; + + var currentStyles = $Jssor$.$Cast(fromStyles, difStyles, interPosition, _SubEasings, _SubDurings, _SubRounds, options); + + $Jssor$.$Each(currentStyles, function (value, key) { + _StyleSetter[key] && _StyleSetter[key](elmt, value); + }); + } + + _ThisAnimator.$OnInnerOffsetChange(_Position_Display - _Position_InnerBegin, positionToDisplay - _Position_InnerBegin); + } + + _Position_Display = positionToDisplay; + + $Jssor$.$Each(_NestedAnimators, function (animator, i) { + var nestedAnimator = positionOuter < _Position_Current ? _NestedAnimators[_NestedAnimators.length - i - 1] : animator; + nestedAnimator.$GoToPosition(positionOuter - _Shift, force); + }); + + var positionOld = _Position_Current; + var positionNew = positionOuter; + + _Position_Current = trimedPositionOuter; + _Hooked = true; + + _ThisAnimator.$OnPositionChange(positionOld, positionNew); + } + } + + function Join(animator, combineMode, noExpand) { + /// + /// Combine another animator as nested animator + /// + /// + /// An instance of $JssorAnimator$ + /// + /// + /// 0: parallel - place the animator parallel to this animator. + /// 1: chain - chain the animator at the _Position_InnerEnd of this animator. + /// + $JssorDebug$.$Execute(function () { + if (combineMode !== 0 && combineMode !== 1) + $JssorDebug$.$Fail("Argument out of range, the value of 'combineMode' should be either 0 or 1."); + }); + + if (combineMode) + animator.$Locate(_Position_OuterEnd, 1); + + !noExpand && (_Position_OuterEnd = Math.max(_Position_OuterEnd, animator.$GetPosition_OuterEnd() + _Shift)); + _NestedAnimators.push(animator); + } + + var RequestAnimationFrame = window.requestAnimationFrame + || window.webkitRequestAnimationFrame + || window.mozRequestAnimationFrame + || window.msRequestAnimationFrame; + + if ($Jssor$.$IsBrowserSafari() && $Jssor$.$BrowserVersion() < 7) { + RequestAnimationFrame = null; + + $JssorDebug$.$Log("Custom animation frame for safari before 7."); + } + + RequestAnimationFrame = RequestAnimationFrame || function (callback) { + $Jssor$.$Delay(callback, options.$Interval); + }; + + function ShowFrame() { + if (_AutoPlay) { + var now = $Jssor$.$GetNow(); + var timeOffset = Math.min(now - _TimeStampLastFrame, options.$IntervalMax); + var timePosition = _Position_Current + timeOffset * _PlayDirection; + _TimeStampLastFrame = now; + + if (timePosition * _PlayDirection >= _PlayToPosition * _PlayDirection) + timePosition = _PlayToPosition; + + GoToPosition(timePosition); + + if (!_NoStop && timePosition * _PlayDirection >= _PlayToPosition * _PlayDirection) { + Stop(_Callback); + } + else { + RequestAnimationFrame(ShowFrame); + } + } + } + + function PlayToPosition(toPosition, callback, noStop) { + if (!_AutoPlay) { + _AutoPlay = true; + _NoStop = noStop + _Callback = callback; + toPosition = Math.max(toPosition, _Position_OuterBegin); + toPosition = Math.min(toPosition, _Position_OuterEnd); + _PlayToPosition = toPosition; + _PlayDirection = _PlayToPosition < _Position_Current ? -1 : 1; + _ThisAnimator.$OnStart(); + _TimeStampLastFrame = $Jssor$.$GetNow(); + RequestAnimationFrame(ShowFrame); + } + } + + function Stop(callback) { + if (_AutoPlay) { + _NoStop = _AutoPlay = _Callback = false; + _ThisAnimator.$OnStop(); + + if (callback) + callback(); + } + } + + _ThisAnimator.$Play = function (positionLength, callback, noStop) { + PlayToPosition(positionLength ? _Position_Current + positionLength : _Position_OuterEnd, callback, noStop); + }; + + _ThisAnimator.$PlayToPosition = PlayToPosition; + + _ThisAnimator.$PlayToBegin = function (callback, noStop) { + PlayToPosition(_Position_OuterBegin, callback, noStop); + }; + + _ThisAnimator.$PlayToEnd = function (callback, noStop) { + PlayToPosition(_Position_OuterEnd, callback, noStop); + }; + + _ThisAnimator.$Stop = Stop; + + _ThisAnimator.$Continue = function (toPosition) { + PlayToPosition(toPosition); + }; + + _ThisAnimator.$GetPosition = function () { + return _Position_Current; + }; + + _ThisAnimator.$GetPlayToPosition = function () { + return _PlayToPosition; + }; + + _ThisAnimator.$GetPosition_Display = function () { + return _Position_Display; + }; + + _ThisAnimator.$GoToPosition = GoToPosition; + + _ThisAnimator.$GoToBegin = function () { + GoToPosition(_Position_OuterBegin, true); + }; + + _ThisAnimator.$GoToEnd = function () { + GoToPosition(_Position_OuterEnd, true); + }; + + _ThisAnimator.$Move = function (offset) { + GoToPosition(_Position_Current + offset); + }; + + _ThisAnimator.$CombineMode = function () { + return _CombineMode; + }; + + _ThisAnimator.$GetDuration = function () { + return duration; + }; + + _ThisAnimator.$IsPlaying = function () { + return _AutoPlay; + }; + + _ThisAnimator.$IsOnTheWay = function () { + return _Position_Current > _Position_InnerBegin && _Position_Current <= _Position_InnerEnd; + }; + + _ThisAnimator.$SetLoopLength = function (length) { + _LoopLength = length; + }; + + _ThisAnimator.$Locate = Locate; + + _ThisAnimator.$Shift = Shift; + + _ThisAnimator.$Join = Join; + + _ThisAnimator.$Combine = function (animator) { + /// + /// Combine another animator parallel to this animator + /// + /// + /// An instance of $JssorAnimator$ + /// + Join(animator, 0); + }; + + _ThisAnimator.$Chain = function (animator) { + /// + /// Chain another animator at the _Position_InnerEnd of this animator + /// + /// + /// An instance of $JssorAnimator$ + /// + Join(animator, 1); + }; + + _ThisAnimator.$GetPosition_InnerBegin = function () { + /// + /// Internal member function, do not use it. + /// + /// + /// + return _Position_InnerBegin; + }; + + _ThisAnimator.$GetPosition_InnerEnd = function () { + /// + /// Internal member function, do not use it. + /// + /// + /// + return _Position_InnerEnd; + }; + + _ThisAnimator.$GetPosition_OuterBegin = function () { + /// + /// Internal member function, do not use it. + /// + /// + /// + return _Position_OuterBegin; + }; + + _ThisAnimator.$GetPosition_OuterEnd = function () { + /// + /// Internal member function, do not use it. + /// + /// + /// + return _Position_OuterEnd; + }; + + _ThisAnimator.$OnPositionChange = _ThisAnimator.$OnStart = _ThisAnimator.$OnStop = _ThisAnimator.$OnInnerOffsetChange = $Jssor$.$EmptyFunction; + _ThisAnimator.$Version = $Jssor$.$GetNow(); + + //Constructor 1 + { + options = $Jssor$.$Extend({ + $Interval: 16, + $IntervalMax: 50 + }, options); + + //Sodo statement, for development time intellisence only + $JssorDebug$.$Execute(function () { + options = $Jssor$.$Extend({ + $LoopLength: undefined, + $Setter: undefined, + $Easing: undefined + }, options); + }); + + _LoopLength = options.$LoopLength; + + _StyleSetter = $Jssor$.$Extend({}, $Jssor$.$StyleSetter(), options.$Setter); + + _Position_OuterBegin = _Position_InnerBegin = delay; + _Position_OuterEnd = _Position_InnerEnd = delay + duration; + + _SubRounds = options.$Round || {}; + _SubDurings = options.$During || {}; + _SubEasings = $Jssor$.$Extend({ $Default: $Jssor$.$IsFunction(options.$Easing) && options.$Easing || $JssorEasing$.$EaseSwing }, options.$Easing); + } +}; + +function $JssorPlayerClass$() { + + var _ThisPlayer = this; + var _PlayerControllers = []; + + function PlayerController(playerElement) { + var _SelfPlayerController = this; + var _PlayerInstance; + var _PlayerInstantces = []; + + function OnPlayerInstanceDataAvailable(event) { + var srcElement = $Jssor$.$EventSrc(event); + _PlayerInstance = srcElement.pInstance; + + $Jssor$.$RemoveEvent(srcElement, "dataavailable", OnPlayerInstanceDataAvailable); + $Jssor$.$Each(_PlayerInstantces, function (playerInstance) { + if (playerInstance != _PlayerInstance) { + playerInstance.$Remove(); + } + }); + + playerElement.pTagName = _PlayerInstance.tagName; + _PlayerInstantces = null; + } + + function HandlePlayerInstance(playerInstanceElement) { + var playerHandler; + + if (!playerInstanceElement.pInstance) { + var playerHandlerAttribute = $Jssor$.$AttributeEx(playerInstanceElement, "pHandler"); + + if ($JssorPlayer$[playerHandlerAttribute]) { + $Jssor$.$AddEvent(playerInstanceElement, "dataavailable", OnPlayerInstanceDataAvailable); + playerHandler = new $JssorPlayer$[playerHandlerAttribute](playerElement, playerInstanceElement); + _PlayerInstantces.push(playerHandler); + + $JssorDebug$.$Execute(function () { + if ($Jssor$.$Type(playerHandler.$Remove) != "function") { + $JssorDebug$.$Fail("'pRemove' interface not implemented for player handler '" + playerHandlerAttribute + "'."); + } + }); + } + } + + return playerHandler; + } + + _SelfPlayerController.$InitPlayerController = function () { + if (!playerElement.pInstance && !HandlePlayerInstance(playerElement)) { + + var playerInstanceElements = $Jssor$.$Children(playerElement); + + $Jssor$.$Each(playerInstanceElements, function (playerInstanceElement) { + HandlePlayerInstance(playerInstanceElement); + }); + } + }; + } + + _ThisPlayer.$EVT_SWITCH = 21; + + _ThisPlayer.$FetchPlayers = function (elmt) { + elmt = elmt || document.body; + + var playerElements = $Jssor$.$FindChildren(elmt, "player"); + + $Jssor$.$Each(playerElements, function (playerElement) { + if (!_PlayerControllers[playerElement.pId]) { + playerElement.pId = _PlayerControllers.length; + _PlayerControllers.push(new PlayerController(playerElement)); + } + var playerController = _PlayerControllers[playerElement.pId]; + playerController.$InitPlayerController(); + }); + }; +} \ No newline at end of file diff --git a/spree_theme/app/assets/javascripts/jssor.19/jssor.slider.js b/spree_theme/app/assets/javascripts/jssor.19/jssor.slider.js new file mode 100644 index 00000000..44f668a4 --- /dev/null +++ b/spree_theme/app/assets/javascripts/jssor.19/jssor.slider.js @@ -0,0 +1,4169 @@ +/// + +/* +* Jssor.Slider 19.0 +* http://www.jssor.com/ +* +* Licensed under the MIT license: +* http://www.opensource.org/licenses/MIT +* +* TERMS OF USE - Jssor.Slider +* +* Copyright 2014 Jssor +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + + +var $JssorSlideshowFormations$ = window.$JssorSlideshowFormations$ = new function () { + var _This = this; + + //Constants +++++++ + + var COLUMN_INCREASE = 0; + var COLUMN_DECREASE = 1; + var ROW_INCREASE = 2; + var ROW_DECREASE = 3; + + var DIRECTION_HORIZONTAL = 0x0003; + var DIRECTION_VERTICAL = 0x000C; + + var TO_LEFT = 0x0001; + var TO_RIGHT = 0x0002; + var TO_TOP = 0x0004; + var TO_BOTTOM = 0x0008; + + var FROM_LEFT = 0x0100; + var FROM_TOP = 0x0200; + var FROM_RIGHT = 0x0400; + var FROM_BOTTOM = 0x0800; + + var ASSEMBLY_BOTTOM_LEFT = FROM_BOTTOM + TO_LEFT; + var ASSEMBLY_BOTTOM_RIGHT = FROM_BOTTOM + TO_RIGHT; + var ASSEMBLY_TOP_LEFT = FROM_TOP + TO_LEFT; + var ASSEMBLY_TOP_RIGHT = FROM_TOP + TO_RIGHT; + var ASSEMBLY_LEFT_TOP = FROM_LEFT + TO_TOP; + var ASSEMBLY_LEFT_BOTTOM = FROM_LEFT + TO_BOTTOM; + var ASSEMBLY_RIGHT_TOP = FROM_RIGHT + TO_TOP; + var ASSEMBLY_RIGHT_BOTTOM = FROM_RIGHT + TO_BOTTOM; + + //Constants ------- + + //Formation Definition +++++++ + function isToLeft(roadValue) { + return (roadValue & TO_LEFT) == TO_LEFT; + } + + function isToRight(roadValue) { + return (roadValue & TO_RIGHT) == TO_RIGHT; + } + + function isToTop(roadValue) { + return (roadValue & TO_TOP) == TO_TOP; + } + + function isToBottom(roadValue) { + return (roadValue & TO_BOTTOM) == TO_BOTTOM; + } + + function PushFormationOrder(arr, order, formationItem) { + formationItem.push(order); + arr[order] = arr[order] || []; + arr[order].push(formationItem); + } + + _This.$FormationStraight = function (transition) { + var cols = transition.$Cols; + var rows = transition.$Rows; + var formationDirection = transition.$Assembly; + var count = transition.$Count; + var a = []; + var i = 0; + var col = 0; + var r = 0; + var cl = cols - 1; + var rl = rows - 1; + var il = count - 1; + var cr; + var order; + for (r = 0; r < rows; r++) { + for (col = 0; col < cols; col++) { + cr = r + ',' + col; + switch (formationDirection) { + case ASSEMBLY_BOTTOM_LEFT: + order = il - (col * rows + (rl - r)); + break; + case ASSEMBLY_RIGHT_TOP: + order = il - (r * cols + (cl - col)); + break; + case ASSEMBLY_TOP_LEFT: + order = il - (col * rows + r); + case ASSEMBLY_LEFT_TOP: + order = il - (r * cols + col); + break; + case ASSEMBLY_BOTTOM_RIGHT: + order = col * rows + r; + break; + case ASSEMBLY_LEFT_BOTTOM: + order = r * cols + (cl - col); + break; + case ASSEMBLY_TOP_RIGHT: + order = col * rows + (rl - r); + break; + default: + order = r * cols + col; + break; //ASSEMBLY_RIGHT_BOTTOM + } + PushFormationOrder(a, order, [r, col]); + } + } + + return a; + }; + + _This.$FormationSwirl = function (transition) { + var cols = transition.$Cols; + var rows = transition.$Rows; + var formationDirection = transition.$Assembly; + var count = transition.$Count; + var a = []; + var hit = []; + var i = 0; + var col = 0; + var r = 0; + var cl = cols - 1; + var rl = rows - 1; + var il = count - 1; + var cr; + var courses; + var course = 0; + switch (formationDirection) { + case ASSEMBLY_BOTTOM_LEFT: + col = cl; + r = 0; + courses = [ROW_INCREASE, COLUMN_DECREASE, ROW_DECREASE, COLUMN_INCREASE]; + break; + case ASSEMBLY_RIGHT_TOP: + col = 0; + r = rl; + courses = [COLUMN_INCREASE, ROW_DECREASE, COLUMN_DECREASE, ROW_INCREASE]; + break; + case ASSEMBLY_TOP_LEFT: + col = cl; + r = rl; + courses = [ROW_DECREASE, COLUMN_DECREASE, ROW_INCREASE, COLUMN_INCREASE]; + break; + case ASSEMBLY_LEFT_TOP: + col = cl; + r = rl; + courses = [COLUMN_DECREASE, ROW_DECREASE, COLUMN_INCREASE, ROW_INCREASE]; + break; + case ASSEMBLY_BOTTOM_RIGHT: + col = 0; + r = 0; + courses = [ROW_INCREASE, COLUMN_INCREASE, ROW_DECREASE, COLUMN_DECREASE]; + break; + case ASSEMBLY_LEFT_BOTTOM: + col = cl; + r = 0; + courses = [COLUMN_DECREASE, ROW_INCREASE, COLUMN_INCREASE, ROW_DECREASE]; + break; + case ASSEMBLY_TOP_RIGHT: + col = 0; + r = rl; + courses = [ROW_DECREASE, COLUMN_INCREASE, ROW_INCREASE, COLUMN_DECREASE]; + break; + default: + col = 0; + r = 0; + courses = [COLUMN_INCREASE, ROW_INCREASE, COLUMN_DECREASE, ROW_DECREASE]; + break; //ASSEMBLY_RIGHT_BOTTOM + } + i = 0; + while (i < count) { + cr = r + ',' + col; + if (col >= 0 && col < cols && r >= 0 && r < rows && !hit[cr]) { + //a[cr] = i++; + hit[cr] = true; + PushFormationOrder(a, i++, [r, col]); + } + else { + switch (courses[course++ % courses.length]) { + case COLUMN_INCREASE: + col--; + break; + case ROW_INCREASE: + r--; + break; + case COLUMN_DECREASE: + col++; + break; + case ROW_DECREASE: + r++; + break; + } + } + + switch (courses[course % courses.length]) { + case COLUMN_INCREASE: + col++; + break; + case ROW_INCREASE: + r++; + break; + case COLUMN_DECREASE: + col--; + break; + case ROW_DECREASE: + r--; + break; + } + } + return a; + }; + + _This.$FormationZigZag = function (transition) { + var cols = transition.$Cols; + var rows = transition.$Rows; + var formationDirection = transition.$Assembly; + var count = transition.$Count; + var a = []; + var i = 0; + var col = 0; + var r = 0; + var cl = cols - 1; + var rl = rows - 1; + var il = count - 1; + var cr; + var courses; + var course = 0; + switch (formationDirection) { + case ASSEMBLY_BOTTOM_LEFT: + col = cl; + r = 0; + courses = [ROW_INCREASE, COLUMN_DECREASE, ROW_DECREASE, COLUMN_DECREASE]; + break; + case ASSEMBLY_RIGHT_TOP: + col = 0; + r = rl; + courses = [COLUMN_INCREASE, ROW_DECREASE, COLUMN_DECREASE, ROW_DECREASE]; + break; + case ASSEMBLY_TOP_LEFT: + col = cl; + r = rl; + courses = [ROW_DECREASE, COLUMN_DECREASE, ROW_INCREASE, COLUMN_DECREASE]; + break; + case ASSEMBLY_LEFT_TOP: + col = cl; + r = rl; + courses = [COLUMN_DECREASE, ROW_DECREASE, COLUMN_INCREASE, ROW_DECREASE]; + break; + case ASSEMBLY_BOTTOM_RIGHT: + col = 0; + r = 0; + courses = [ROW_INCREASE, COLUMN_INCREASE, ROW_DECREASE, COLUMN_INCREASE]; + break; + case ASSEMBLY_LEFT_BOTTOM: + col = cl; + r = 0; + courses = [COLUMN_DECREASE, ROW_INCREASE, COLUMN_INCREASE, ROW_INCREASE]; + break; + case ASSEMBLY_TOP_RIGHT: + col = 0; + r = rl; + courses = [ROW_DECREASE, COLUMN_INCREASE, ROW_INCREASE, COLUMN_INCREASE]; + break; + default: + col = 0; + r = 0; + courses = [COLUMN_INCREASE, ROW_INCREASE, COLUMN_DECREASE, ROW_INCREASE]; + break; //ASSEMBLY_RIGHT_BOTTOM + } + i = 0; + while (i < count) { + cr = r + ',' + col; + if (col >= 0 && col < cols && r >= 0 && r < rows && typeof (a[cr]) == 'undefined') { + PushFormationOrder(a, i++, [r, col]); + //a[cr] = i++; + switch (courses[course % courses.length]) { + case COLUMN_INCREASE: + col++; + break; + case ROW_INCREASE: + r++; + break; + case COLUMN_DECREASE: + col--; + break; + case ROW_DECREASE: + r--; + break; + } + } + else { + switch (courses[course++ % courses.length]) { + case COLUMN_INCREASE: + col--; + break; + case ROW_INCREASE: + r--; + break; + case COLUMN_DECREASE: + col++; + break; + case ROW_DECREASE: + r++; + break; + } + switch (courses[course++ % courses.length]) { + case COLUMN_INCREASE: + col++; + break; + case ROW_INCREASE: + r++; + break; + case COLUMN_DECREASE: + col--; + break; + case ROW_DECREASE: + r--; + break; + } + } + } + return a; + }; + + _This.$FormationStraightStairs = function (transition) { + var cols = transition.$Cols; + var rows = transition.$Rows; + var formationDirection = transition.$Assembly; + var count = transition.$Count; + var a = []; + var i = 0; + var col = 0; + var r = 0; + var cl = cols - 1; + var rl = rows - 1; + var il = count - 1; + var cr; + switch (formationDirection) { + case ASSEMBLY_BOTTOM_LEFT: + case ASSEMBLY_TOP_RIGHT: + case ASSEMBLY_TOP_LEFT: + case ASSEMBLY_BOTTOM_RIGHT: + var C = 0; + var R = 0; + break; + case ASSEMBLY_LEFT_BOTTOM: + case ASSEMBLY_RIGHT_TOP: + case ASSEMBLY_LEFT_TOP: + case ASSEMBLY_RIGHT_BOTTOM: + var C = cl; + var R = 0; + break; + default: + formationDirection = ASSEMBLY_RIGHT_BOTTOM; + var C = cl; + var R = 0; + break; + } + col = C; + r = R; + while (i < count) { + cr = r + ',' + col; + if (isToTop(formationDirection) || isToRight(formationDirection)) { + PushFormationOrder(a, il - i++, [r, col]); + //a[cr] = il - i++; + } + else { + PushFormationOrder(a, i++, [r, col]); + //a[cr] = i++; + } + switch (formationDirection) { + case ASSEMBLY_BOTTOM_LEFT: + case ASSEMBLY_TOP_RIGHT: + col--; + r++; + break; + case ASSEMBLY_TOP_LEFT: + case ASSEMBLY_BOTTOM_RIGHT: + col++; + r--; + break; + case ASSEMBLY_LEFT_BOTTOM: + case ASSEMBLY_RIGHT_TOP: + col--; + r--; + break; + case ASSEMBLY_RIGHT_BOTTOM: + case ASSEMBLY_LEFT_TOP: + default: + col++; + r++; + break; + } + if (col < 0 || r < 0 || col > cl || r > rl) { + switch (formationDirection) { + case ASSEMBLY_BOTTOM_LEFT: + case ASSEMBLY_TOP_RIGHT: + C++; + break; + case ASSEMBLY_LEFT_BOTTOM: + case ASSEMBLY_RIGHT_TOP: + case ASSEMBLY_TOP_LEFT: + case ASSEMBLY_BOTTOM_RIGHT: + R++; + break; + case ASSEMBLY_RIGHT_BOTTOM: + case ASSEMBLY_LEFT_TOP: + default: + C--; + break; + } + if (C < 0 || R < 0 || C > cl || R > rl) { + switch (formationDirection) { + case ASSEMBLY_BOTTOM_LEFT: + case ASSEMBLY_TOP_RIGHT: + C = cl; + R++; + break; + case ASSEMBLY_TOP_LEFT: + case ASSEMBLY_BOTTOM_RIGHT: + R = rl; + C++; + break; + case ASSEMBLY_LEFT_BOTTOM: + case ASSEMBLY_RIGHT_TOP: R = rl; C--; + break; + case ASSEMBLY_RIGHT_BOTTOM: + case ASSEMBLY_LEFT_TOP: + default: + C = 0; + R++; + break; + } + if (R > rl) + R = rl; + else if (R < 0) + R = 0; + else if (C > cl) + C = cl; + else if (C < 0) + C = 0; + } + r = R; + col = C; + } + } + return a; + }; + + _This.$FormationSquare = function (transition) { + var cols = transition.$Cols || 1; + var rows = transition.$Rows || 1; + var arr = []; + var i = 0; + var col; + var r; + var dc; + var dr; + var cr; + dc = cols < rows ? (rows - cols) / 2 : 0; + dr = cols > rows ? (cols - rows) / 2 : 0; + cr = Math.round(Math.max(cols / 2, rows / 2)) + 1; + for (col = 0; col < cols; col++) { + for (r = 0; r < rows; r++) + PushFormationOrder(arr, cr - Math.min(col + 1 + dc, r + 1 + dr, cols - col + dc, rows - r + dr), [r, col]); + } + return arr; + }; + + _This.$FormationRectangle = function (transition) { + var cols = transition.$Cols || 1; + var rows = transition.$Rows || 1; + var arr = []; + var i = 0; + var col; + var r; + var cr; + cr = Math.round(Math.min(cols / 2, rows / 2)) + 1; + for (col = 0; col < cols; col++) { + for (r = 0; r < rows; r++) + PushFormationOrder(arr, cr - Math.min(col + 1, r + 1, cols - col, rows - r), [r, col]); + } + return arr; + }; + + _This.$FormationRandom = function (transition) { + var a = []; + var r, col, i; + for (r = 0; r < transition.$Rows; r++) { + for (col = 0; col < transition.$Cols; col++) + PushFormationOrder(a, Math.ceil(100000 * Math.random()) % 13, [r, col]); + } + + return a; + }; + + _This.$FormationCircle = function (transition) { + var cols = transition.$Cols || 1; + var rows = transition.$Rows || 1; + var arr = []; + var i = 0; + var col; + var r; + var hc = cols / 2 - 0.5; + var hr = rows / 2 - 0.5; + for (col = 0; col < cols; col++) { + for (r = 0; r < rows; r++) + PushFormationOrder(arr, Math.round(Math.sqrt(Math.pow(col - hc, 2) + Math.pow(r - hr, 2))), [r, col]); + } + return arr; + }; + + _This.$FormationCross = function (transition) { + var cols = transition.$Cols || 1; + var rows = transition.$Rows || 1; + var arr = []; + var i = 0; + var col; + var r; + var hc = cols / 2 - 0.5; + var hr = rows / 2 - 0.5; + for (col = 0; col < cols; col++) { + for (r = 0; r < rows; r++) + PushFormationOrder(arr, Math.round(Math.min(Math.abs(col - hc), Math.abs(r - hr))), [r, col]); + } + return arr; + }; + + _This.$FormationRectangleCross = function (transition) { + var cols = transition.$Cols || 1; + var rows = transition.$Rows || 1; + var arr = []; + var i = 0; + var col; + var r; + var hc = cols / 2 - 0.5; + var hr = rows / 2 - 0.5; + var cr = Math.max(hc, hr) + 1; + for (col = 0; col < cols; col++) { + for (r = 0; r < rows; r++) + PushFormationOrder(arr, Math.round(cr - Math.max(hc - Math.abs(col - hc), hr - Math.abs(r - hr))) - 1, [r, col]); + } + return arr; + }; +}; + +var $JssorSlideshowRunner$ = window.$JssorSlideshowRunner$ = function (slideContainer, slideContainerWidth, slideContainerHeight, slideshowOptions, isTouchDevice) { + + var _SelfSlideshowRunner = this; + + //var _State = 0; //-1 fullfill, 0 clean, 1 initializing, 2 stay, 3 playing + var _EndTime; + + var _SliderFrameCount; + + var _SlideshowPlayerBelow; + var _SlideshowPlayerAbove; + + var _PrevItem; + var _SlideItem; + + var _TransitionIndex = 0; + var _TransitionsOrder = slideshowOptions.$TransitionsOrder; + + var _SlideshowTransition; + + var _SlideshowPerformance = 8; + + //#region Private Methods + function EnsureTransitionInstance(options, slideshowInterval) { + + var slideshowTransition = { + $Interval: slideshowInterval, //Delay to play next frame + $Duration: 1, //Duration to finish the entire transition + $Delay: 0, //Delay to assembly blocks + $Cols: 1, //Number of columns + $Rows: 1, //Number of rows + $Opacity: 0, //Fade block or not + $Zoom: 0, //Zoom block or not + $Clip: 0, //Clip block or not + $Move: false, //Move block or not + $SlideOut: false, //Slide the previous slide out to display next slide instead + //$FlyDirection: 0, //Specify fly transform with direction + $Reverse: false, //Reverse the assembly or not + $Formation: $JssorSlideshowFormations$.$FormationRandom, //Shape that assembly blocks as + $Assembly: 0x0408, //The way to assembly blocks ASSEMBLY_RIGHT_BOTTOM + $ChessMode: { $Column: 0, $Row: 0 }, //Chess move or fly direction + $Easing: $JssorEasing$.$EaseSwing, //Specify variation of speed during transition + $Round: {}, + $Blocks: [], + $During: {} + }; + + $Jssor$.$Extend(slideshowTransition, options); + + slideshowTransition.$Count = slideshowTransition.$Cols * slideshowTransition.$Rows; + if ($Jssor$.$IsFunction(slideshowTransition.$Easing)) + slideshowTransition.$Easing = { $Default: slideshowTransition.$Easing }; + + slideshowTransition.$FramesCount = Math.ceil(slideshowTransition.$Duration / slideshowTransition.$Interval); + + slideshowTransition.$GetBlocks = function (width, height) { + width /= slideshowTransition.$Cols; + height /= slideshowTransition.$Rows; + var wh = width + 'x' + height; + if (!slideshowTransition.$Blocks[wh]) { + slideshowTransition.$Blocks[wh] = { $Width: width, $Height: height }; + for (var col = 0; col < slideshowTransition.$Cols; col++) { + for (var r = 0; r < slideshowTransition.$Rows; r++) + slideshowTransition.$Blocks[wh][r + ',' + col] = { $Top: r * height, $Right: col * width + width, $Bottom: r * height + height, $Left: col * width }; + } + } + + return slideshowTransition.$Blocks[wh]; + }; + + if (slideshowTransition.$Brother) { + slideshowTransition.$Brother = EnsureTransitionInstance(slideshowTransition.$Brother, slideshowInterval); + slideshowTransition.$SlideOut = true; + } + + return slideshowTransition; + } + //#endregion + + //#region Private Classes + function JssorSlideshowPlayer(slideContainer, slideElement, slideTransition, beginTime, slideContainerWidth, slideContainerHeight) { + var _Self = this; + + var _Block; + var _StartStylesArr = {}; + var _AnimationStylesArrs = {}; + var _AnimationBlockItems = []; + var _StyleStart; + var _StyleEnd; + var _StyleDif; + var _ChessModeColumn = slideTransition.$ChessMode.$Column || 0; + var _ChessModeRow = slideTransition.$ChessMode.$Row || 0; + + var _Blocks = slideTransition.$GetBlocks(slideContainerWidth, slideContainerHeight); + var _FormationInstance = GetFormation(slideTransition); + var _MaxOrder = _FormationInstance.length - 1; + var _Period = slideTransition.$Duration + slideTransition.$Delay * _MaxOrder; + var _EndTime = beginTime + _Period; + + var _SlideOut = slideTransition.$SlideOut; + var _IsIn; + + //_EndTime += $Jssor$.$IsBrowserChrome() ? 260 : 50; + _EndTime += 50; + + //#region Private Methods + + function GetFormation(transition) { + + var formationInstance = transition.$Formation(transition); + + return transition.$Reverse ? formationInstance.reverse() : formationInstance; + + } + //#endregion + + _Self.$EndTime = _EndTime; + + _Self.$ShowFrame = function (time) { + time -= beginTime; + + var isIn = time < _Period; + + if (isIn || _IsIn) { + _IsIn = isIn; + + if (!_SlideOut) + time = _Period - time; + + var frameIndex = Math.ceil(time / slideTransition.$Interval); + + $Jssor$.$Each(_AnimationStylesArrs, function (value, index) { + + var itemFrameIndex = Math.max(frameIndex, value.$Min); + itemFrameIndex = Math.min(itemFrameIndex, value.length - 1); + + if (value.$LastFrameIndex != itemFrameIndex) { + if (!value.$LastFrameIndex && !_SlideOut) { + $Jssor$.$ShowElement(_AnimationBlockItems[index]); + } + else if (itemFrameIndex == value.$Max && _SlideOut) { + $Jssor$.$HideElement(_AnimationBlockItems[index]); + } + value.$LastFrameIndex = itemFrameIndex; + $Jssor$.$SetStylesEx(_AnimationBlockItems[index], value[itemFrameIndex]); + } + }); + } + }; + + function DisableHWA(elmt) { + $Jssor$.$DisableHWA(elmt); + + var children = $Jssor$.$Children(elmt); + + $Jssor$.$Each(children, function (child) { + DisableHWA(child); + }); + } + + //constructor + { + slideElement = $Jssor$.$CloneNode(slideElement); + //$Jssor$.$RemoveAttribute(slideElement, "id"); + DisableHWA(slideElement); + if ($Jssor$.$IsBrowserIe9Earlier()) { + var hasImage = !slideElement["no-image"]; + var slideChildElements = $Jssor$.$FindChildrenByTag(slideElement); + $Jssor$.$Each(slideChildElements, function (slideChildElement) { + if (hasImage || slideChildElement["jssor-slider"]) + $Jssor$.$CssOpacity(slideChildElement, $Jssor$.$CssOpacity(slideChildElement), true); + }); + } + + $Jssor$.$Each(_FormationInstance, function (formationItems, order) { + $Jssor$.$Each(formationItems, function (formationItem) { + var row = formationItem[0]; + var col = formationItem[1]; + { + var columnRow = row + ',' + col; + + var chessHorizontal = false; + var chessVertical = false; + var chessRotate = false; + + if (_ChessModeColumn && col % 2) { + if ($JssorDirection$.$IsHorizontal(_ChessModeColumn)) { + chessHorizontal = !chessHorizontal; + } + if ($JssorDirection$.$IsVertical(_ChessModeColumn)) { + chessVertical = !chessVertical; + } + + if (_ChessModeColumn & 16) + chessRotate = !chessRotate; + } + + if (_ChessModeRow && row % 2) { + if ($JssorDirection$.$IsHorizontal(_ChessModeRow)) { + chessHorizontal = !chessHorizontal; + } + if ($JssorDirection$.$IsVertical(_ChessModeRow)) { + chessVertical = !chessVertical; + } + if (_ChessModeRow & 16) + chessRotate = !chessRotate; + } + + slideTransition.$Top = slideTransition.$Top || (slideTransition.$Clip & 4); + slideTransition.$Bottom = slideTransition.$Bottom || (slideTransition.$Clip & 8); + slideTransition.$Left = slideTransition.$Left || (slideTransition.$Clip & 1); + slideTransition.$Right = slideTransition.$Right || (slideTransition.$Clip & 2); + + var topBenchmark = chessVertical ? slideTransition.$Bottom : slideTransition.$Top; + var bottomBenchmark = chessVertical ? slideTransition.$Top : slideTransition.$Bottom; + var leftBenchmark = chessHorizontal ? slideTransition.$Right : slideTransition.$Left; + var rightBenchmark = chessHorizontal ? slideTransition.$Left : slideTransition.$Right; + + //$JssorDebug$.$Execute(function () { + // topBenchmark = bottomBenchmark = leftBenchmark = rightBenchmark = false; + //}); + + slideTransition.$Clip = topBenchmark || bottomBenchmark || leftBenchmark || rightBenchmark; + + _StyleDif = {}; + _StyleEnd = { $Top: 0, $Left: 0, $Opacity: 1, $Width: slideContainerWidth, $Height: slideContainerHeight }; + _StyleStart = $Jssor$.$Extend({}, _StyleEnd); + _Block = $Jssor$.$Extend({}, _Blocks[columnRow]); + + if (slideTransition.$Opacity) { + _StyleEnd.$Opacity = 2 - slideTransition.$Opacity; + } + + if (slideTransition.$ZIndex) { + _StyleEnd.$ZIndex = slideTransition.$ZIndex; + _StyleStart.$ZIndex = 0; + } + + var allowClip = slideTransition.$Cols * slideTransition.$Rows > 1 || slideTransition.$Clip; + + if (slideTransition.$Zoom || slideTransition.$Rotate) { + var allowRotate = true; + if ($Jssor$.$IsBrowserIE() && $Jssor$.$BrowserEngineVersion() < 9) { + if (slideTransition.$Cols * slideTransition.$Rows > 1) + allowRotate = false; + else + allowClip = false; + } + + if (allowRotate) { + _StyleEnd.$Zoom = slideTransition.$Zoom ? slideTransition.$Zoom - 1 : 1; + _StyleStart.$Zoom = 1; + + if ($Jssor$.$IsBrowserIe9Earlier() || $Jssor$.$IsBrowserOpera()) + _StyleEnd.$Zoom = Math.min(_StyleEnd.$Zoom, 2); + + var rotate = slideTransition.$Rotate; + + _StyleEnd.$Rotate = rotate * 360 * ((chessRotate) ? -1 : 1); + _StyleStart.$Rotate = 0; + } + } + + if (allowClip) { + if (slideTransition.$Clip) { + var clipScale = slideTransition.$ScaleClip || 1; + var blockOffset = _Block.$Offset = {}; + if (topBenchmark && bottomBenchmark) { + blockOffset.$Top = _Blocks.$Height / 2 * clipScale; + blockOffset.$Bottom = -blockOffset.$Top; + } + else if (topBenchmark) { + blockOffset.$Bottom = -_Blocks.$Height * clipScale; + } + else if (bottomBenchmark) { + blockOffset.$Top = _Blocks.$Height * clipScale; + } + + if (leftBenchmark && rightBenchmark) { + blockOffset.$Left = _Blocks.$Width / 2 * clipScale; + blockOffset.$Right = -blockOffset.$Left; + } + else if (leftBenchmark) { + blockOffset.$Right = -_Blocks.$Width * clipScale; + } + else if (rightBenchmark) { + blockOffset.$Left = _Blocks.$Width * clipScale; + } + } + + _StyleDif.$Clip = _Block; + _StyleStart.$Clip = _Blocks[columnRow]; + } + + //fly + { + var chessHor = chessHorizontal ? 1 : -1; + var chessVer = chessVertical ? 1 : -1; + + if (slideTransition.x) + _StyleEnd.$Left += slideContainerWidth * slideTransition.x * chessHor; + + if (slideTransition.y) + _StyleEnd.$Top += slideContainerHeight * slideTransition.y * chessVer; + } + + $Jssor$.$Each(_StyleEnd, function (propertyEnd, property) { + if ($Jssor$.$IsNumeric(propertyEnd)) { + if (propertyEnd != _StyleStart[property]) { + _StyleDif[property] = propertyEnd - _StyleStart[property]; + } + } + }); + + _StartStylesArr[columnRow] = _SlideOut ? _StyleStart : _StyleEnd; + + var animationStylesArr = []; + var framesCount = slideTransition.$FramesCount; + var virtualFrameCount = Math.round(order * slideTransition.$Delay / slideTransition.$Interval); + _AnimationStylesArrs[columnRow] = new Array(virtualFrameCount); + _AnimationStylesArrs[columnRow].$Min = virtualFrameCount; + _AnimationStylesArrs[columnRow].$Max = virtualFrameCount + framesCount - 1; + + for (var frameN = 0; frameN <= framesCount; frameN++) { + var styleFrameN = $Jssor$.$Cast(_StyleStart, _StyleDif, frameN / framesCount, slideTransition.$Easing, slideTransition.$During, slideTransition.$Round, { $Move: slideTransition.$Move, $OriginalWidth: slideContainerWidth, $OriginalHeight: slideContainerHeight }) + + styleFrameN.$ZIndex = styleFrameN.$ZIndex || 1; + + _AnimationStylesArrs[columnRow].push(styleFrameN); + } + + } //for + }); + }); + + _FormationInstance.reverse(); + $Jssor$.$Each(_FormationInstance, function (formationItems) { + $Jssor$.$Each(formationItems, function (formationItem) { + var row = formationItem[0]; + var col = formationItem[1]; + + var columnRow = row + ',' + col; + + var image = slideElement; + if (col || row) + image = $Jssor$.$CloneNode(slideElement); + + $Jssor$.$SetStyles(image, _StartStylesArr[columnRow]); + $Jssor$.$CssOverflow(image, "hidden"); + + $Jssor$.$CssPosition(image, "absolute"); + slideContainer.$AddClipElement(image); + _AnimationBlockItems[columnRow] = image; + $Jssor$.$ShowElement(image, !_SlideOut); + }); + }); + } + } + + function SlideshowProcessor() { + var _SelfSlideshowProcessor = this; + var _CurrentTime = 0; + + $JssorAnimator$.call(_SelfSlideshowProcessor, 0, _EndTime); + + _SelfSlideshowProcessor.$OnPositionChange = function (oldPosition, newPosition) { + if ((newPosition - _CurrentTime) > _SlideshowPerformance) { + _CurrentTime = newPosition; + + _SlideshowPlayerAbove && _SlideshowPlayerAbove.$ShowFrame(newPosition); + _SlideshowPlayerBelow && _SlideshowPlayerBelow.$ShowFrame(newPosition); + } + }; + + _SelfSlideshowProcessor.$Transition = _SlideshowTransition; + } + //#endregion + + //member functions + _SelfSlideshowRunner.$GetTransition = function (slideCount) { + var n = 0; + + var transitions = slideshowOptions.$Transitions; + + var transitionCount = transitions.length; + + if (_TransitionsOrder) { /*Sequence*/ + //if (transitionCount > slideCount && ($Jssor$.$IsBrowserChrome() || $Jssor$.$IsBrowserSafari() || $Jssor$.$IsBrowserFireFox())) { + // transitionCount -= transitionCount % slideCount; + //} + n = _TransitionIndex++ % transitionCount; + } + else { /*Random*/ + n = Math.floor(Math.random() * transitionCount); + } + + transitions[n] && (transitions[n].$Index = n); + + return transitions[n]; + }; + + _SelfSlideshowRunner.$Initialize = function (slideIndex, prevIndex, slideItem, prevItem, slideshowTransition) { + $JssorDebug$.$Execute(function () { + if (_SlideshowPlayerBelow) { + $JssorDebug$.$Fail("slideshow runner has not been cleared."); + } + }); + + _SlideshowTransition = slideshowTransition; + + slideshowTransition = EnsureTransitionInstance(slideshowTransition, _SlideshowPerformance); + + _SlideItem = slideItem; + _PrevItem = prevItem; + + var prevSlideElement = prevItem.$Item; + var currentSlideElement = slideItem.$Item; + prevSlideElement["no-image"] = !prevItem.$Image; + currentSlideElement["no-image"] = !slideItem.$Image; + + var slideElementAbove = prevSlideElement; + var slideElementBelow = currentSlideElement; + + var slideTransitionAbove = slideshowTransition; + var slideTransitionBelow = slideshowTransition.$Brother || EnsureTransitionInstance({}, _SlideshowPerformance); + + if (!slideshowTransition.$SlideOut) { + slideElementAbove = currentSlideElement; + slideElementBelow = prevSlideElement; + } + + var shift = slideTransitionBelow.$Shift || 0; + + _SlideshowPlayerBelow = new JssorSlideshowPlayer(slideContainer, slideElementBelow, slideTransitionBelow, Math.max(shift - slideTransitionBelow.$Interval, 0), slideContainerWidth, slideContainerHeight); + _SlideshowPlayerAbove = new JssorSlideshowPlayer(slideContainer, slideElementAbove, slideTransitionAbove, Math.max(slideTransitionBelow.$Interval - shift, 0), slideContainerWidth, slideContainerHeight); + + _SlideshowPlayerBelow.$ShowFrame(0); + _SlideshowPlayerAbove.$ShowFrame(0); + + _EndTime = Math.max(_SlideshowPlayerBelow.$EndTime, _SlideshowPlayerAbove.$EndTime); + + _SelfSlideshowRunner.$Index = slideIndex; + }; + + _SelfSlideshowRunner.$Clear = function () { + slideContainer.$Clear(); + _SlideshowPlayerBelow = null; + _SlideshowPlayerAbove = null; + }; + + _SelfSlideshowRunner.$GetProcessor = function () { + var slideshowProcessor = null; + + if (_SlideshowPlayerAbove) + slideshowProcessor = new SlideshowProcessor(); + + return slideshowProcessor; + }; + + //Constructor + { + if ($Jssor$.$IsBrowserIe9Earlier() || $Jssor$.$IsBrowserOpera() || (isTouchDevice && $Jssor$.$WebKitVersion() < 537)) { + _SlideshowPerformance = 16; + } + + $JssorObject$.call(_SelfSlideshowRunner); + $JssorAnimator$.call(_SelfSlideshowRunner, -10000000, 10000000); + } +}; + +var $JssorSlider$ = window.$JssorSlider$ = function (elmt, options) { + var _SelfSlider = this; + + //#region Private Classes + //Conveyor + function Conveyor() { + var _SelfConveyor = this; + $JssorAnimator$.call(_SelfConveyor, -100000000, 200000000); + + _SelfConveyor.$GetCurrentSlideInfo = function () { + var positionDisplay = _SelfConveyor.$GetPosition_Display(); + var virtualIndex = Math.floor(positionDisplay); + var slideIndex = GetRealIndex(virtualIndex); + var slidePosition = positionDisplay - Math.floor(positionDisplay); + + return { $Index: slideIndex, $VirtualIndex: virtualIndex, $Position: slidePosition }; + }; + + _SelfConveyor.$OnPositionChange = function (oldPosition, newPosition) { + + var index = Math.floor(newPosition); + if (index != newPosition && newPosition > oldPosition) + index++; + + ResetNavigator(index, true); + + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_POSITION_CHANGE, GetRealIndex(newPosition), GetRealIndex(oldPosition), newPosition, oldPosition); + }; + } + //Conveyor + + //Carousel + function Carousel() { + var _SelfCarousel = this; + + $JssorAnimator$.call(_SelfCarousel, 0, 0, { $LoopLength: _SlideCount }); + + //Carousel Constructor + { + $Jssor$.$Each(_SlideItems, function (slideItem) { + (_Loop & 1) && slideItem.$SetLoopLength(_SlideCount); + _SelfCarousel.$Chain(slideItem); + slideItem.$Shift(_ParkingPosition / _StepLength); + }); + } + } + //Carousel + + //Slideshow + function Slideshow() { + var _SelfSlideshow = this; + var _Wrapper = _SlideContainer.$Elmt; + + $JssorAnimator$.call(_SelfSlideshow, -1, 2, { $Easing: $JssorEasing$.$EaseLinear, $Setter: { $Position: SetPosition }, $LoopLength: _SlideCount }, _Wrapper, { $Position: 1 }, { $Position: -2 }); + + _SelfSlideshow.$Wrapper = _Wrapper; + + //Slideshow Constructor + { + $JssorDebug$.$Execute(function () { + $Jssor$.$Attribute(_SlideContainer.$Elmt, "debug-id", "slide_container"); + }); + } + } + //Slideshow + + //CarouselPlayer + function CarouselPlayer(carousel, slideshow) { + var _SelfCarouselPlayer = this; + var _FromPosition; + var _ToPosition; + var _Duration; + var _StandBy; + var _StandByPosition; + + $JssorAnimator$.call(_SelfCarouselPlayer, -100000000, 200000000, { $IntervalMax: 100 }); + + _SelfCarouselPlayer.$OnStart = function () { + _IsSliding = true; + _LoadingTicket = null; + + //EVT_SWIPE_START + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_SWIPE_START, GetRealIndex(_Conveyor.$GetPosition()), _Conveyor.$GetPosition()); + }; + + _SelfCarouselPlayer.$OnStop = function () { + + _IsSliding = false; + _StandBy = false; + + var currentSlideInfo = _Conveyor.$GetCurrentSlideInfo(); + + //EVT_SWIPE_END + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_SWIPE_END, GetRealIndex(_Conveyor.$GetPosition()), _Conveyor.$GetPosition()); + + if (!currentSlideInfo.$Position) { + OnPark(currentSlideInfo.$VirtualIndex, _CurrentSlideIndex); + } + }; + + _SelfCarouselPlayer.$OnPositionChange = function (oldPosition, newPosition) { + + var toPosition; + + if (_StandBy) + toPosition = _StandByPosition; + else { + toPosition = _ToPosition; + + if (_Duration) { + var interPosition = newPosition / _Duration; + //if ($Jssor$.$IsBrowserChrome() || $Jssor$.$IsBrowserFireFox()) { + // Math.round(interPosition * 8 / _Duration) / 8 * _Duration; + + // if ($Jssor$.$BrowserVersion() < 38) + // interPosition = parseFloat(interPosition.toFixed(4)); + //} + toPosition = _Options.$SlideEasing(interPosition) * (_ToPosition - _FromPosition) + _FromPosition; + } + } + + _Conveyor.$GoToPosition(toPosition); + }; + + _SelfCarouselPlayer.$PlayCarousel = function (fromPosition, toPosition, duration, callback) { + $JssorDebug$.$Execute(function () { + if (_SelfCarouselPlayer.$IsPlaying()) + $JssorDebug$.$Fail("The carousel is already playing."); + }); + + _FromPosition = fromPosition; + _ToPosition = toPosition; + _Duration = duration; + + _Conveyor.$GoToPosition(fromPosition); + _SelfCarouselPlayer.$GoToPosition(0); + + _SelfCarouselPlayer.$PlayToPosition(duration, callback); + }; + + _SelfCarouselPlayer.$StandBy = function (standByPosition) { + _StandBy = true; + _StandByPosition = standByPosition; + _SelfCarouselPlayer.$Play(standByPosition, null, true); + }; + + _SelfCarouselPlayer.$SetStandByPosition = function (standByPosition) { + _StandByPosition = standByPosition; + }; + + _SelfCarouselPlayer.$MoveCarouselTo = function (position) { + _Conveyor.$GoToPosition(position); + }; + + //CarouselPlayer Constructor + { + _Conveyor = new Conveyor(); + + _Conveyor.$Combine(carousel); + _Conveyor.$Combine(slideshow); + } + } + //CarouselPlayer + + //SlideContainer + function SlideContainer() { + var _Self = this; + var elmt = CreatePanel(); + + $Jssor$.$CssZIndex(elmt, 0); + $Jssor$.$Css(elmt, "pointerEvents", "none"); + + _Self.$Elmt = elmt; + + _Self.$AddClipElement = function (clipElement) { + $Jssor$.$AppendChild(elmt, clipElement); + $Jssor$.$ShowElement(elmt); + }; + + _Self.$Clear = function () { + $Jssor$.$HideElement(elmt); + $Jssor$.$Empty(elmt); + }; + } + //SlideContainer + + //SlideItem + function SlideItem(slideElmt, slideIndex) { + + var _SelfSlideItem = this; + + var _CaptionSliderIn; + var _CaptionSliderOut; + var _CaptionSliderCurrent; + var _IsCaptionSliderPlayingWhenDragStart; + + var _Wrapper; + var _BaseElement = slideElmt; + + var _LoadingScreen; + + var _ImageItem; + var _ImageElmts = []; + var _LinkItemOrigin; + var _LinkItem; + var _ImageLoading; + var _ImageLoaded; + var _ImageLazyLoading; + var _ContentRefreshed; + + var _Processor; + + var _PlayerInstanceElement; + var _PlayerInstance; + + var _SequenceNumber; //for debug only + + $JssorAnimator$.call(_SelfSlideItem, -_DisplayPieces, _DisplayPieces + 1, { $SlideItemAnimator: true }); + + function ResetCaptionSlider(fresh) { + _CaptionSliderOut && _CaptionSliderOut.$Revert(); + _CaptionSliderIn && _CaptionSliderIn.$Revert(); + + RefreshContent(slideElmt, fresh); + _ContentRefreshed = true; + + _CaptionSliderIn = new _CaptionSliderOptions.$Class(slideElmt, _CaptionSliderOptions, 1); + $JssorDebug$.$LiveStamp(_CaptionSliderIn, "caption_slider_" + _CaptionSliderCount + "_in"); + _CaptionSliderOut = new _CaptionSliderOptions.$Class(slideElmt, _CaptionSliderOptions); + $JssorDebug$.$LiveStamp(_CaptionSliderOut, "caption_slider_" + _CaptionSliderCount + "_out"); + + $JssorDebug$.$Execute(function () { + _CaptionSliderCount++; + }); + + _CaptionSliderOut.$GoToBegin(); + _CaptionSliderIn.$GoToBegin(); + } + + function EnsureCaptionSliderVersion() { + if (_CaptionSliderIn.$Version < _CaptionSliderOptions.$Version) { + ResetCaptionSlider(); + } + } + + //event handling begin + function LoadImageCompleteEventHandler(completeCallback, loadingScreen, image) { + if (!_ImageLoaded) { + _ImageLoaded = true; + + if (_ImageItem && image) { + var imageWidth = image.width; + var imageHeight = image.height; + var fillWidth = imageWidth; + var fillHeight = imageHeight; + + if (imageWidth && imageHeight && _Options.$FillMode) { + + //0 stretch, 1 contain (keep aspect ratio and put all inside slide), 2 cover (keep aspect ratio and cover whole slide), 4 actual size, 5 contain for large image, actual size for small image, default value is 0 + if (_Options.$FillMode & 3 && (!(_Options.$FillMode & 4) || imageWidth > _SlideWidth || imageHeight > _SlideHeight)) { + var fitHeight = false; + var ratio = _SlideWidth / _SlideHeight * imageHeight / imageWidth; + + if (_Options.$FillMode & 1) { + fitHeight = (ratio > 1); + } + else if (_Options.$FillMode & 2) { + fitHeight = (ratio < 1); + } + fillWidth = fitHeight ? imageWidth * _SlideHeight / imageHeight : _SlideWidth; + fillHeight = fitHeight ? _SlideHeight : imageHeight * _SlideWidth / imageWidth; + } + + $Jssor$.$CssWidth(_ImageItem, fillWidth); + $Jssor$.$CssHeight(_ImageItem, fillHeight); + $Jssor$.$CssTop(_ImageItem, (_SlideHeight - fillHeight) / 2); + $Jssor$.$CssLeft(_ImageItem, (_SlideWidth - fillWidth) / 2); + } + + $Jssor$.$CssPosition(_ImageItem, "absolute"); + + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_LOAD_END, slideIndex); + } + } + + $Jssor$.$HideElement(loadingScreen); + completeCallback && completeCallback(_SelfSlideItem); + } + + function LoadSlideshowImageCompleteEventHandler(nextIndex, nextItem, slideshowTransition, loadingTicket) { + if (loadingTicket == _LoadingTicket && _CurrentSlideIndex == slideIndex && _AutoPlay) { + if (!_Frozen) { + var nextRealIndex = GetRealIndex(nextIndex); + _SlideshowRunner.$Initialize(nextRealIndex, slideIndex, nextItem, _SelfSlideItem, slideshowTransition); + nextItem.$HideContentForSlideshow(); + _Slideshow.$Locate(nextRealIndex, 1); + _Slideshow.$GoToPosition(nextRealIndex); + _CarouselPlayer.$PlayCarousel(nextIndex, nextIndex, 0); + } + } + } + + function SlideReadyEventHandler(loadingTicket) { + if (loadingTicket == _LoadingTicket && _CurrentSlideIndex == slideIndex) { + + if (!_Processor) { + var slideshowProcessor = null; + if (_SlideshowRunner) { + if (_SlideshowRunner.$Index == slideIndex) + slideshowProcessor = _SlideshowRunner.$GetProcessor(); + else + _SlideshowRunner.$Clear(); + } + + EnsureCaptionSliderVersion(); + + _Processor = new Processor(slideElmt, slideIndex, slideshowProcessor, _SelfSlideItem.$GetCaptionSliderIn(), _SelfSlideItem.$GetCaptionSliderOut()); + _Processor.$SetPlayer(_PlayerInstance); + } + + !_Processor.$IsPlaying() && _Processor.$Replay(); + } + } + + function ParkEventHandler(currentIndex, previousIndex, manualActivate) { + if (currentIndex == slideIndex) { + + if (currentIndex != previousIndex) + _SlideItems[previousIndex] && _SlideItems[previousIndex].$ParkOut(); + else + !manualActivate && _Processor && _Processor.$AdjustIdleOnPark(); + + _PlayerInstance && _PlayerInstance.$Enable(); + + //park in + var loadingTicket = _LoadingTicket = $Jssor$.$GetNow(); + _SelfSlideItem.$LoadImage($Jssor$.$CreateCallback(null, SlideReadyEventHandler, loadingTicket)); + } + else { + var distance = Math.abs(slideIndex - currentIndex); + var loadRange = _DisplayPieces + _Options.$LazyLoading - 1; + if (!_ImageLazyLoading || distance <= loadRange) { + _SelfSlideItem.$LoadImage(); + } + } + } + + function SwipeStartEventHandler() { + if (_CurrentSlideIndex == slideIndex && _Processor) { + _Processor.$Stop(); + _PlayerInstance && _PlayerInstance.$Quit(); + _PlayerInstance && _PlayerInstance.$Disable(); + _Processor.$OpenSlideshowPanel(); + } + } + + function FreezeEventHandler() { + if (_CurrentSlideIndex == slideIndex && _Processor) { + _Processor.$Stop(); + } + } + + function ContentClickEventHandler(event) { + if (_LastDragSucceded) { + $Jssor$.$StopEvent(event); + + var checkElement = $Jssor$.$EventSrc(event); + while (checkElement && slideElmt !== checkElement) { + if (checkElement.tagName == "A") { + $Jssor$.$CancelEvent(event); + } + try { + checkElement = checkElement.parentNode; + } catch (e) { + // Firefox sometimes fires events for XUL elements, which throws + // a "permission denied" error. so this is not a child. + break; + } + } + } + } + + function SlideClickEventHandler(event) { + if (!_LastDragSucceded) { + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_CLICK, slideIndex, event); + } + //else { + // var tagName = $Jssor$.$EventSrc(event).tagName; + // if (tagName != "INPUT" && tagName != "TEXTAREA" && tagName != "SELECT") + // $Jssor$.$CancelEvent(event); + //} + } + + function PlayerAvailableEventHandler() { + _PlayerInstance = _PlayerInstanceElement.pInstance; + _Processor && _Processor.$SetPlayer(_PlayerInstance); + } + + _SelfSlideItem.$LoadImage = function (completeCallback, loadingScreen) { + loadingScreen = loadingScreen || _LoadingScreen; + + if (_ImageElmts.length && !_ImageLoaded) { + + $Jssor$.$ShowElement(loadingScreen); + + if (!_ImageLoading) { + _ImageLoading = true; + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_LOAD_START, slideIndex); + + $Jssor$.$Each(_ImageElmts, function (imageElmt) { + + if (!imageElmt.src) { + imageElmt.src = $Jssor$.$AttributeEx(imageElmt, "src2"); + $Jssor$.$CssDisplay(imageElmt, imageElmt["display-origin"]); + } + }); + } + $Jssor$.$LoadImages(_ImageElmts, _ImageItem, $Jssor$.$CreateCallback(null, LoadImageCompleteEventHandler, completeCallback, loadingScreen)); + } + else { + LoadImageCompleteEventHandler(completeCallback, loadingScreen); + } + }; + + _SelfSlideItem.$GoForNextSlide = function () { + if (_SlideshowRunner) { + var slideshowTransition = _SlideshowRunner.$GetTransition(_SlideCount); + + if (slideshowTransition) { + var loadingTicket = _LoadingTicket = $Jssor$.$GetNow(); + + var nextIndex = slideIndex + _PlayReverse; + var nextItem = _SlideItems[GetRealIndex(nextIndex)]; + return nextItem.$LoadImage($Jssor$.$CreateCallback(null, LoadSlideshowImageCompleteEventHandler, nextIndex, nextItem, slideshowTransition, loadingTicket), _LoadingScreen); + } + } + + PlayTo(_CurrentSlideIndex + _Options.$AutoPlaySteps * _PlayReverse); + }; + + _SelfSlideItem.$TryActivate = function () { + ParkEventHandler(slideIndex, slideIndex, true); + }; + + _SelfSlideItem.$ParkOut = function () { + //park out + _PlayerInstance && _PlayerInstance.$Quit(); + _PlayerInstance && _PlayerInstance.$Disable(); + _SelfSlideItem.$UnhideContentForSlideshow(); + _Processor && _Processor.$Abort(); + _Processor = null; + ResetCaptionSlider(); + }; + + //for debug only + _SelfSlideItem.$StampSlideItemElements = function (stamp) { + stamp = _SequenceNumber + "_" + stamp; + + $JssorDebug$.$Execute(function () { + if (_ImageItem) + $Jssor$.$Attribute(_ImageItem, "debug-id", stamp + "_slide_item_image_id"); + + $Jssor$.$Attribute(slideElmt, "debug-id", stamp + "_slide_item_item_id"); + }); + + $JssorDebug$.$Execute(function () { + $Jssor$.$Attribute(_Wrapper, "debug-id", stamp + "_slide_item_wrapper_id"); + }); + + $JssorDebug$.$Execute(function () { + $Jssor$.$Attribute(_LoadingScreen, "debug-id", stamp + "_loading_container_id"); + }); + }; + + _SelfSlideItem.$HideContentForSlideshow = function () { + $Jssor$.$HideElement(slideElmt); + }; + + _SelfSlideItem.$UnhideContentForSlideshow = function () { + $Jssor$.$ShowElement(slideElmt); + }; + + _SelfSlideItem.$EnablePlayer = function () { + _PlayerInstance && _PlayerInstance.$Enable(); + }; + + function RefreshContent(elmt, fresh, level) { + if (elmt["jssor-slider"]) + return; + + level = level || 0; + + if (!_ContentRefreshed) { + if (elmt.tagName == "IMG") { + _ImageElmts.push(elmt); + + if (!elmt.src) { + _ImageLazyLoading = true; + elmt["display-origin"] = $Jssor$.$CssDisplay(elmt); + $Jssor$.$HideElement(elmt); + } + } + if ($Jssor$.$IsBrowserIe9Earlier()) { + $Jssor$.$CssZIndex(elmt, ($Jssor$.$CssZIndex(elmt) || 0) + 1); + } + if (_Options.$HWA && $Jssor$.$WebKitVersion()) { + if (!_IsTouchDevice || $Jssor$.$WebKitVersion() < 534 || (!_SlideshowEnabled && !$Jssor$.$IsBrowserChrome())) { + $Jssor$.$EnableHWA(elmt); + } + } + } + + var childElements = $Jssor$.$Children(elmt); + + $Jssor$.$Each(childElements, function (childElement, i) { + + var childTagName = childElement.tagName; + var uAttribute = $Jssor$.$AttributeEx(childElement, "u"); + if (uAttribute == "player" && !_PlayerInstanceElement) { + _PlayerInstanceElement = childElement; + if (_PlayerInstanceElement.pInstance) { + PlayerAvailableEventHandler(); + } + else { + $Jssor$.$AddEvent(_PlayerInstanceElement, "dataavailable", PlayerAvailableEventHandler); + } + } + + if (uAttribute == "caption") { + if (!$Jssor$.$IsBrowserIE() && !fresh) { + + if (childTagName == "A") { + $Jssor$.$RemoveEvent(childElement, "click", ContentClickEventHandler); + $Jssor$.$Attribute(childElement, "jssor-content", null); + } + + var captionElement = $Jssor$.$CloneNode(childElement, false, true); + $Jssor$.$InsertBefore(captionElement, childElement, elmt); + $Jssor$.$RemoveElement(childElement, elmt); + childElement = captionElement; + + fresh = true; + } + } + else if (!_ContentRefreshed && !level && !_ImageItem) { + + if (childTagName == "A") { + if ($Jssor$.$AttributeEx(childElement, "u") == "image") { + _ImageItem = $Jssor$.$FindChildByTag(childElement, "IMG"); + + $JssorDebug$.$Execute(function () { + if (!_ImageItem) { + $JssorDebug$.$Error("slide html code definition error, no 'IMG' found in a 'image with link' slide.\r\n" + elmt.outerHTML); + } + }); + } + else { + _ImageItem = $Jssor$.$FindChild(childElement, "image", true); + } + + if (_ImageItem) { + _LinkItemOrigin = childElement; + $Jssor$.$SetStyles(_LinkItemOrigin, _StyleDef); + + _LinkItem = $Jssor$.$CloneNode(_LinkItemOrigin, true); + $Jssor$.$AddEvent(_LinkItem, "click", ContentClickEventHandler); + + $Jssor$.$CssDisplay(_LinkItem, "block"); + $Jssor$.$SetStyles(_LinkItem, _StyleDef); + $Jssor$.$CssOpacity(_LinkItem, 0); + $Jssor$.$Css(_LinkItem, "backgroundColor", "#000"); + } + } + else if (childTagName == "IMG" && $Jssor$.$AttributeEx(childElement, "u") == "image") { + _ImageItem = childElement; + } + + if (_ImageItem) { + _ImageItem.border = 0; + $Jssor$.$SetStyles(_ImageItem, _StyleDef); + } + } + + if (!$Jssor$.$Attribute(childElement, "jssor-content")) { + //cancel click event on element when a drag of slide succeeded + $Jssor$.$AddEvent(childElement, "click", ContentClickEventHandler); + $Jssor$.$Attribute(childElement, "jssor-content", true); + } + + RefreshContent(childElement, fresh, level +1); + }); + } + + _SelfSlideItem.$OnInnerOffsetChange = function (oldOffset, newOffset) { + var slidePosition = _DisplayPieces - newOffset; + + SetPosition(_Wrapper, slidePosition); + + //following lines are for future usage, not ready yet + //if (!_IsDragging || !_IsCaptionSliderPlayingWhenDragStart) { + // var _DealWithParallax; + // if (IsCurrentSlideIndex(slideIndex)) { + // if (_CaptionSliderOptions.$PlayOutMode == 2) + // _DealWithParallax = true; + // } + // else { + // if (!_CaptionSliderOptions.$PlayInMode) { + // //PlayInMode: 0 none + // _CaptionSliderIn.$GoToEnd(); + // } + // //else if (_CaptionSliderOptions.$PlayInMode == 1) { + // // //PlayInMode: 1 chain + // // _CaptionSliderIn.$GoToBegin(); + // //} + // else if (_CaptionSliderOptions.$PlayInMode == 2) { + // //PlayInMode: 2 parallel + // _DealWithParallax = true; + // } + // } + + // if (_DealWithParallax) { + // _CaptionSliderIn.$GoToPosition((_CaptionSliderIn.$GetPosition_OuterEnd() - _CaptionSliderIn.$GetPosition_OuterBegin()) * Math.abs(newOffset - 1) * .8 + _CaptionSliderIn.$GetPosition_OuterBegin()); + // } + //} + }; + + _SelfSlideItem.$GetCaptionSliderIn = function () { + return _CaptionSliderIn; + }; + + _SelfSlideItem.$GetCaptionSliderOut = function () { + return _CaptionSliderOut; + }; + + _SelfSlideItem.$Index = slideIndex; + + $JssorObject$.call(_SelfSlideItem); + + //SlideItem Constructor + { + + var thumb = $Jssor$.$FindChild(slideElmt, "thumb", true); + if (thumb) { + _SelfSlideItem.$Thumb = $Jssor$.$CloneNode(thumb); + $Jssor$.$RemoveAttribute(thumb, "id"); + $Jssor$.$HideElement(thumb); + } + $Jssor$.$ShowElement(slideElmt); + + _LoadingScreen = $Jssor$.$CloneNode(_LoadingContainer); + $Jssor$.$CssZIndex(_LoadingScreen, 1000); + + //cancel click event on element when a drag of slide succeeded + $Jssor$.$AddEvent(slideElmt, "click", SlideClickEventHandler); + + ResetCaptionSlider(true); + + _SelfSlideItem.$Image = _ImageItem; + _SelfSlideItem.$Link = _LinkItem; + + _SelfSlideItem.$Item = slideElmt; + + _SelfSlideItem.$Wrapper = _Wrapper = slideElmt; + $Jssor$.$AppendChild(_Wrapper, _LoadingScreen); + + _SelfSlider.$On(203, ParkEventHandler); + _SelfSlider.$On(28, FreezeEventHandler); + _SelfSlider.$On(24, SwipeStartEventHandler); + + $JssorDebug$.$Execute(function () { + _SequenceNumber = _SlideItemCreatedCount++; + }); + + $JssorDebug$.$Execute(function () { + $Jssor$.$Attribute(_Wrapper, "debug-id", "slide-" + slideIndex); + }); + } + } + //SlideItem + + //Processor + function Processor(slideElmt, slideIndex, slideshowProcessor, captionSliderIn, captionSliderOut) { + + var _SelfProcessor = this; + + var _ProgressBegin = 0; + var _SlideshowBegin = 0; + var _SlideshowEnd; + var _CaptionInBegin; + var _IdleBegin; + var _IdleEnd; + var _ProgressEnd; + + var _IsSlideshowRunning; + var _IsRollingBack; + + var _PlayerInstance; + var _IsPlayerOnService; + + var slideItem = _SlideItems[slideIndex]; + + $JssorAnimator$.call(_SelfProcessor, 0, 0); + + function UpdateLink() { + + $Jssor$.$Empty(_LinkContainer); + + if (_ShowLink && _IsSlideshowRunning && slideItem.$Link) { + $Jssor$.$AppendChild(_LinkContainer, slideItem.$Link); + } + + $Jssor$.$ShowElement(_LinkContainer, !_IsSlideshowRunning && slideItem.$Image); + } + + function ProcessCompleteEventHandler() { + + if (_IsRollingBack) { + _IsRollingBack = false; + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_ROLLBACK_END, slideIndex, _IdleEnd, _ProgressBegin, _IdleBegin, _IdleEnd, _ProgressEnd); + _SelfProcessor.$GoToPosition(_IdleBegin); + } + + _SelfProcessor.$Replay(); + } + + function PlayerSwitchEventHandler(isOnService) { + _IsPlayerOnService = isOnService; + + _SelfProcessor.$Stop(); + _SelfProcessor.$Replay(); + } + + _SelfProcessor.$Replay = function () { + + var currentPosition = _SelfProcessor.$GetPosition_Display(); + + if (!_IsDragging && !_IsSliding && !_IsPlayerOnService && _CurrentSlideIndex == slideIndex) { + + if (!currentPosition) { + if (_SlideshowEnd && !_IsSlideshowRunning) { + _IsSlideshowRunning = true; + + _SelfProcessor.$OpenSlideshowPanel(true); + + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_SLIDESHOW_START, slideIndex, _ProgressBegin, _SlideshowBegin, _SlideshowEnd, _ProgressEnd); + } + + UpdateLink(); + } + + var toPosition; + var stateEvent = $JssorSlider$.$EVT_STATE_CHANGE; + + if (currentPosition != _ProgressEnd) { + if (currentPosition == _IdleEnd) { + toPosition = _ProgressEnd; + } + else if (currentPosition == _IdleBegin) { + toPosition = _IdleEnd; + } + else if (!currentPosition) { + toPosition = _IdleBegin; + } + else if (currentPosition > _IdleEnd) { + _IsRollingBack = true; + toPosition = _IdleEnd; + stateEvent = $JssorSlider$.$EVT_ROLLBACK_START; + } + else { + //continue from break (by drag or lock) + toPosition = _SelfProcessor.$GetPlayToPosition(); + } + } + + //$JssorDebug$.$Execute(function () { + // if (currentPosition == _ProgressEnd) { + // debugger; + // } + //}); + + _SelfSlider.$TriggerEvent(stateEvent, slideIndex, currentPosition, _ProgressBegin, _IdleBegin, _IdleEnd, _ProgressEnd); + + var allowAutoPlay = _AutoPlay && (!_HoverToPause || _NotOnHover); + + if (currentPosition == _ProgressEnd) { + (_IdleEnd != _ProgressEnd && !(_HoverToPause & 12) || allowAutoPlay) && slideItem.$GoForNextSlide(); + } + else if (allowAutoPlay || currentPosition != _IdleEnd) { + _SelfProcessor.$PlayToPosition(toPosition, ProcessCompleteEventHandler); + } + } + }; + + _SelfProcessor.$AdjustIdleOnPark = function () { + if (_IdleEnd == _ProgressEnd && _IdleEnd == _SelfProcessor.$GetPosition_Display()) + _SelfProcessor.$GoToPosition(_IdleBegin); + }; + + _SelfProcessor.$Abort = function () { + _SlideshowRunner && _SlideshowRunner.$Index == slideIndex && _SlideshowRunner.$Clear(); + + var currentPosition = _SelfProcessor.$GetPosition_Display(); + if (currentPosition < _ProgressEnd) { + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_STATE_CHANGE, slideIndex, -currentPosition - 1, _ProgressBegin, _IdleBegin, _IdleEnd, _ProgressEnd); + } + }; + + _SelfProcessor.$OpenSlideshowPanel = function (open) { + if (slideshowProcessor) { + $Jssor$.$CssOverflow(_SlideshowPanel, open && slideshowProcessor.$Transition.$Outside ? "" : "hidden"); + } + }; + + _SelfProcessor.$OnInnerOffsetChange = function (oldPosition, newPosition) { + + if (_IsSlideshowRunning && newPosition >= _SlideshowEnd) { + _IsSlideshowRunning = false; + UpdateLink(); + slideItem.$UnhideContentForSlideshow(); + _SlideshowRunner.$Clear(); + + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_SLIDESHOW_END, slideIndex, _ProgressBegin, _SlideshowBegin, _SlideshowEnd, _ProgressEnd); + } + + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_PROGRESS_CHANGE, slideIndex, newPosition, _ProgressBegin, _IdleBegin, _IdleEnd, _ProgressEnd); + }; + + _SelfProcessor.$SetPlayer = function (playerInstance) { + if (playerInstance && !_PlayerInstance) { + _PlayerInstance = playerInstance; + + playerInstance.$On($JssorPlayer$.$EVT_SWITCH, PlayerSwitchEventHandler); + } + }; + + //Processor Constructor + { + if (slideshowProcessor) { + _SelfProcessor.$Chain(slideshowProcessor); + } + + _SlideshowEnd = _SelfProcessor.$GetPosition_OuterEnd(); + _CaptionInBegin = _SelfProcessor.$GetPosition_OuterEnd(); + _SelfProcessor.$Chain(captionSliderIn); + _IdleBegin = captionSliderIn.$GetPosition_OuterEnd(); + _IdleEnd = _IdleBegin + ($Jssor$.$ParseFloat($Jssor$.$AttributeEx(slideElmt, "idle")) || _Options.$AutoPlayInterval); + + captionSliderOut.$Shift(_IdleEnd); + _SelfProcessor.$Combine(captionSliderOut); + _ProgressEnd = _SelfProcessor.$GetPosition_OuterEnd(); + } + } + //Processor + //#endregion + + function SetPosition(elmt, position) { + var orientation = _DragOrientation > 0 ? _DragOrientation : _PlayOrientation; + var x = _StepLengthX * position * (orientation & 1); + var y = _StepLengthY * position * ((orientation >> 1) & 1); + + if ($Jssor$.$IsBrowserChrome() && $Jssor$.$BrowserVersion() < 38) { + x = x.toFixed(3); + y = y.toFixed(3); + } + else { + x = Math.round(x); + y = Math.round(y); + } + + if ($Jssor$.$IsBrowserIE() && $Jssor$.$BrowserVersion() >= 10 && $Jssor$.$BrowserVersion() < 11) { + elmt.style.msTransform = "translate(" + x + "px, " + y + "px)"; + } + else if ($Jssor$.$IsBrowserChrome() && $Jssor$.$BrowserVersion() >= 30 && $Jssor$.$BrowserVersion() < 34) { + elmt.style.WebkitTransition = "transform 0s"; + elmt.style.WebkitTransform = "translate3d(" + x + "px, " + y + "px, 0px) perspective(2000px)"; + } + else { + $Jssor$.$CssLeft(elmt, x); + $Jssor$.$CssTop(elmt, y); + } + } + + //Event handling begin + + function OnMouseDown(event) { + var eventSrc = $Jssor$.$EventSrc(event); + var tagName = eventSrc.tagName; + if (!_DragOrientationRegistered && (tagName != "INPUT" || eventSrc.type != "text") && tagName != "TEXTAREA" && tagName != "SELECT" && RegisterDrag()) { + OnDragStart(event); + } + } + + function RecordFreezePoint() { + + _CarouselPlaying_OnFreeze = _IsSliding; + _PlayToPosition_OnFreeze = _CarouselPlayer.$GetPlayToPosition(); + _Position_OnFreeze = _Conveyor.$GetPosition(); + + } + + function Freeze() { + + RecordFreezePoint(); + + if (_IsDragging || !_NotOnHover && (_HoverToPause & 12)) { + _CarouselPlayer.$Stop(); + + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_FREEZE); + } + + } + + function Unfreeze(byDrag) { + + byDrag && RecordFreezePoint(); + + if (!_IsDragging && (_NotOnHover || !(_HoverToPause & 12)) && !_CarouselPlayer.$IsPlaying()) { + + var currentPosition = _Conveyor.$GetPosition(); + var toPosition = Math.ceil(_Position_OnFreeze); + + if (byDrag && Math.abs(_DragOffsetTotal) >= _Options.$MinDragOffsetToSlide) { + toPosition = Math.ceil(currentPosition); + toPosition += _DragIndexAdjust; + } + + if (!(_Loop & 1)) { + toPosition = Math.min(_SlideCount - _DisplayPieces, Math.max(toPosition, 0)); + } + + var t = Math.abs(toPosition - currentPosition); + t = 1 - Math.pow(1 - t, 5); + + if (!_LastDragSucceded && _CarouselPlaying_OnFreeze) { + _CarouselPlayer.$Continue(_PlayToPosition_OnFreeze); + } + else if (currentPosition == toPosition) { + _CurrentSlideItem.$EnablePlayer(); + _CurrentSlideItem.$TryActivate(); + } + else { + + _CarouselPlayer.$PlayCarousel(currentPosition, toPosition, t * _SlideDuration); + } + } + } + + function PreventDragStart(event) { + $Jssor$.$CancelEvent(event); + } + + function OnDragStart(event) { + + _IsDragging = true; + _DragInvalid = false; + _LoadingTicket = null; + + $Jssor$.$AddEvent(document, _MoveEvent, OnDragMove); + + _LastTimeMoveByDrag = $Jssor$.$GetNow() - 50; + + _LastDragSucceded = 0; + Freeze(); + + if (!_CarouselPlaying_OnFreeze) + _DragOrientation = 0; + + if (_HandleTouchEventOnly) { + var touchPoint = event.touches[0]; + _DragStartMouseX = touchPoint.clientX; + _DragStartMouseY = touchPoint.clientY; + } + else { + var mousePoint = $Jssor$.$MousePosition(event); + + _DragStartMouseX = mousePoint.x; + _DragStartMouseY = mousePoint.y; + + if ($Jssor$.$IsBrowserFireFox() && $Jssor$.$BrowserVersion() < 4) + $Jssor$.$CancelEvent(event); + } + + _DragOffsetTotal = 0; + _DragOffsetLastTime = 0; + _DragIndexAdjust = 0; + + //Trigger EVT_DRAGSTART + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_DRAG_START, GetRealIndex(_Position_OnFreeze), _Position_OnFreeze, event); + } + + function OnDragMove(event) { + if (_IsDragging && (!$Jssor$.$IsBrowserIe9Earlier() || event.button)) { + var actionPoint; + + if (_HandleTouchEventOnly) { + var touches = event.touches; + if (touches && touches.length > 0) { + actionPoint = { x: touches[0].clientX, y: touches[0].clientY }; + } + } + else { + actionPoint = $Jssor$.$MousePosition(event); + } + + if (actionPoint) { + var distanceX = actionPoint.x - _DragStartMouseX; + var distanceY = actionPoint.y - _DragStartMouseY; + + + if (Math.floor(_Position_OnFreeze) != _Position_OnFreeze) + _DragOrientation = _DragOrientation || (_PlayOrientation & _DragOrientationRegistered); + + if ((distanceX || distanceY) && !_DragOrientation) { + if (_DragOrientationRegistered == 3) { + if (Math.abs(distanceY) > Math.abs(distanceX)) { + _DragOrientation = 2; + } + else + _DragOrientation = 1; + } + else { + _DragOrientation = _DragOrientationRegistered; + } + + if (_IsTouchDevice && _DragOrientation == 1 && Math.abs(distanceY) - Math.abs(distanceX) > 3) { + _DragInvalid = true; + } + } + + if (_DragOrientation) { + var distance = distanceY; + var stepLength = _StepLengthY; + + if (_DragOrientation == 1) { + distance = distanceX; + stepLength = _StepLengthX; + } + + if (!(_Loop & 1)) { + if (distance > 0) { + var normalDistance = stepLength * _CurrentSlideIndex; + var sqrtDistance = distance - normalDistance; + if (sqrtDistance > 0) { + distance = normalDistance + Math.sqrt(sqrtDistance) * 5; + } + } + + if (distance < 0) { + var normalDistance = stepLength * (_SlideCount - _DisplayPieces - _CurrentSlideIndex); + var sqrtDistance = -distance - normalDistance; + + if (sqrtDistance > 0) { + distance = -normalDistance - Math.sqrt(sqrtDistance) * 5; + } + } + } + + if (_DragOffsetTotal - _DragOffsetLastTime < -2) { + _DragIndexAdjust = 0; + } + else if (_DragOffsetTotal - _DragOffsetLastTime > 2) { + _DragIndexAdjust = -1; + } + + _DragOffsetLastTime = _DragOffsetTotal; + _DragOffsetTotal = distance; + _PositionToGoByDrag = _Position_OnFreeze - _DragOffsetTotal / stepLength / (_ScaleRatio || 1); + + if (_DragOffsetTotal && _DragOrientation && !_DragInvalid) { + $Jssor$.$CancelEvent(event); + if (!_IsSliding) { + _CarouselPlayer.$StandBy(_PositionToGoByDrag); + } + else + _CarouselPlayer.$SetStandByPosition(_PositionToGoByDrag); + } + else if ($Jssor$.$IsBrowserIe9Earlier()) { + $Jssor$.$CancelEvent(event); + } + } + } + } + else { + OnDragEnd(event); + } + } + + function OnDragEnd(event) { + UnregisterDrag(); + + if (_IsDragging) { + + _IsDragging = false; + + _LastTimeMoveByDrag = $Jssor$.$GetNow(); + + $Jssor$.$RemoveEvent(document, _MoveEvent, OnDragMove); + + _LastDragSucceded = _DragOffsetTotal; + + //_LastDragSucceded && $Jssor$.$CancelEvent(event); + + _CarouselPlayer.$Stop(); + + var currentPosition = _Conveyor.$GetPosition(); + + //Trigger EVT_DRAG_END + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_DRAG_END, GetRealIndex(currentPosition), currentPosition, GetRealIndex(_Position_OnFreeze), _Position_OnFreeze, event); + + Unfreeze(true); + } + } + //Event handling end + + function SetCurrentSlideIndex(index) { + _PrevSlideItem = _SlideItems[_CurrentSlideIndex]; + _PreviousSlideIndex = _CurrentSlideIndex; + _CurrentSlideIndex = GetRealIndex(index); + _CurrentSlideItem = _SlideItems[_CurrentSlideIndex]; + ResetNavigator(index); + return _CurrentSlideIndex; + } + + function OnPark(slideIndex, prevIndex) { + _DragOrientation = 0; + + SetCurrentSlideIndex(slideIndex); + + //Trigger EVT_PARK + _SelfSlider.$TriggerEvent($JssorSlider$.$EVT_PARK, GetRealIndex(slideIndex), prevIndex); + } + + function ResetNavigator(index, temp) { + _TempSlideIndex = index; + $Jssor$.$Each(_Navigators, function (navigator) { + navigator.$SetCurrentIndex(GetRealIndex(index), index, temp); + }); + } + + function RegisterDrag() { + var dragRegistry = $JssorSlider$.$DragRegistry || 0; + var dragOrientation = _DragEnabled; + if (_IsTouchDevice) + (dragOrientation & 1) && (dragOrientation &= 1); + $JssorSlider$.$DragRegistry |= dragOrientation; + + return (_DragOrientationRegistered = dragOrientation & ~dragRegistry); + } + + function UnregisterDrag() { + if (_DragOrientationRegistered) { + $JssorSlider$.$DragRegistry &= ~_DragEnabled; + _DragOrientationRegistered = 0; + } + } + + function CreatePanel() { + var div = $Jssor$.$CreateDiv(); + + $Jssor$.$SetStyles(div, _StyleDef); + $Jssor$.$CssPosition(div, "absolute"); + + return div; + } + + function GetRealIndex(index) { + return (index % _SlideCount + _SlideCount) % _SlideCount; + } + + function IsCurrentSlideIndex(index) { + return GetRealIndex(index) == _CurrentSlideIndex; + } + + function IsPreviousSlideIndex(index) { + return GetRealIndex(index) == _PreviousSlideIndex; + } + + //Navigation Request Handler + function NavigationClickHandler(index, relative) { + if (relative) { + if (!_Loop) { + //Stop at threshold + index = Math.min(Math.max(index + _TempSlideIndex, 0), _SlideCount - _DisplayPieces); + relative = false; + } + else if (_Loop & 2) { + //Rewind + index = GetRealIndex(index + _TempSlideIndex); + relative = false; + } + } + PlayTo(index, _Options.$SlideDuration, relative); + } + + function ShowNavigators() { + $Jssor$.$Each(_Navigators, function (navigator) { + navigator.$Show(navigator.$Options.$ChanceToShow <= _NotOnHover); + }); + } + + function MainContainerMouseLeaveEventHandler() { + if (!_NotOnHover) { + + //$JssorDebug$.$Log("mouseleave"); + + _NotOnHover = 1; + + ShowNavigators(); + + if (!_IsDragging) { + (_HoverToPause & 12) && Unfreeze(); + (_HoverToPause & 3) && _SlideItems[_CurrentSlideIndex].$TryActivate(); + } + } + } + + function MainContainerMouseEnterEventHandler() { + + if (_NotOnHover) { + + //$JssorDebug$.$Log("mouseenter"); + + _NotOnHover = 0; + + ShowNavigators(); + + _IsDragging || !(_HoverToPause & 12) || Freeze(); + } + } + + function AdjustSlidesContainerSize() { + _StyleDef = { $Width: _SlideWidth, $Height: _SlideHeight, $Top: 0, $Left: 0 }; + + $Jssor$.$Each(_SlideElmts, function (slideElmt, i) { + + $Jssor$.$SetStyles(slideElmt, _StyleDef); + $Jssor$.$CssPosition(slideElmt, "absolute"); + $Jssor$.$CssOverflow(slideElmt, "hidden"); + + $Jssor$.$HideElement(slideElmt); + }); + + $Jssor$.$SetStyles(_LoadingContainer, _StyleDef); + } + + function PlayToOffset(offset, slideDuration) { + PlayTo(offset, slideDuration, true); + } + + function PlayTo(slideIndex, slideDuration, relative) { + /// + /// PlayTo( slideIndex [, slideDuration] ); //Play slider to position 'slideIndex' within a period calculated base on 'slideDuration'. + /// + /// + /// slide slideIndex or position will be playing to + /// + /// + /// base slide duration in milliseconds to calculate the whole duration to complete this play request. + /// default value is '$SlideDuration' value which is specified when initialize the slider. + /// + /// http://msdn.microsoft.com/en-us/library/vstudio/bb385682.aspx + /// http://msdn.microsoft.com/en-us/library/vstudio/hh542720.aspx + if (_CarouselEnabled && (!_IsDragging || _Options.$NaviQuitDrag)) { + _IsSliding = true; + _IsDragging = false; + _CarouselPlayer.$Stop(); + + { + //Slide Duration + if (slideDuration == undefined) + slideDuration = _SlideDuration; + + var positionDisplay = _Carousel.$GetPosition_Display(); + var positionTo = slideIndex; + if (relative) { + positionTo = positionDisplay + slideIndex; + if (slideIndex > 0) + positionTo = Math.ceil(positionTo); + else + positionTo = Math.floor(positionTo); + } + + if (_Loop & 2) { + //Rewind + positionTo = GetRealIndex(positionTo); + } + if (!(_Loop & 1)) { + //Stop at threshold + positionTo = Math.max(0, Math.min(positionTo, _SlideCount - _DisplayPieces)); + } + + var positionOffset = (positionTo - positionDisplay) % _SlideCount; + positionTo = positionDisplay + positionOffset; + + var duration = positionDisplay == positionTo ? 0 : slideDuration * Math.abs(positionOffset); + duration = Math.min(duration, slideDuration * _DisplayPieces * 1.5); + + _CarouselPlayer.$PlayCarousel(positionDisplay, positionTo, duration || 1); + } + } + } + + //private functions + + //member functions + + _SelfSlider.$PlayTo = PlayTo; + + _SelfSlider.$GoTo = function (slideIndex) { + /// + /// instance.$GoTo( slideIndex ); //Go to the specifed slide immediately with no play. + /// + PlayTo(slideIndex, 1); + }; + + _SelfSlider.$Next = function () { + /// + /// instance.$Next(); //Play the slider to next slide. + /// + PlayToOffset(1); + }; + + _SelfSlider.$Prev = function () { + /// + /// instance.$Prev(); //Play the slider to previous slide. + /// + PlayToOffset(-1); + }; + + _SelfSlider.$Pause = function () { + /// + /// instance.$Pause(); //Pause the slider, prevent it from auto playing. + /// + _AutoPlay = false; + }; + + _SelfSlider.$Play = function () { + /// + /// instance.$Play(); //Start auto play if the slider is currently paused. + /// + if (!_AutoPlay) { + _AutoPlay = true; + _SlideItems[_CurrentSlideIndex] && _SlideItems[_CurrentSlideIndex].$TryActivate(); + } + }; + + _SelfSlider.$SetSlideshowTransitions = function (transitions) { + /// + /// instance.$SetSlideshowTransitions( transitions ); //Reset slideshow transitions for the slider. + /// + $JssorDebug$.$Execute(function () { + if (!transitions || !transitions.length) { + $JssorDebug$.$Error("Can not set slideshow transitions, no transitions specified."); + } + }); + + //$Jssor$.$TranslateTransitions(transitions); //for old transition compatibility + _Options.$SlideshowOptions.$Transitions = transitions; + }; + + _SelfSlider.$SetCaptionTransitions = function (transitions) { + /// + /// instance.$SetCaptionTransitions( transitions ); //Reset caption transitions for the slider. + /// + $JssorDebug$.$Execute(function () { + if (!transitions || !transitions.length) { + $JssorDebug$.$Error("Can not set caption transitions, no transitions specified"); + } + }); + + //$Jssor$.$TranslateTransitions(transitions); //for old transition compatibility + _CaptionSliderOptions.$CaptionTransitions = transitions; + _CaptionSliderOptions.$Version = $Jssor$.$GetNow(); + }; + + _SelfSlider.$SlidesCount = function () { + /// + /// instance.$SlidesCount(); //Retrieve slides count of the slider. + /// + return _SlideElmts.length; + }; + + _SelfSlider.$CurrentIndex = function () { + /// + /// instance.$CurrentIndex(); //Retrieve current slide index of the slider. + /// + return _CurrentSlideIndex; + }; + + _SelfSlider.$IsAutoPlaying = function () { + /// + /// instance.$IsAutoPlaying(); //Retrieve auto play status of the slider. + /// + return _AutoPlay; + }; + + _SelfSlider.$IsDragging = function () { + /// + /// instance.$IsDragging(); //Retrieve drag status of the slider. + /// + return _IsDragging; + }; + + _SelfSlider.$IsSliding = function () { + /// + /// instance.$IsSliding(); //Retrieve right<-->left sliding status of the slider. + /// + return _IsSliding; + }; + + _SelfSlider.$IsMouseOver = function () { + /// + /// instance.$IsMouseOver(); //Retrieve mouse over status of the slider. + /// + return !_NotOnHover; + }; + + _SelfSlider.$LastDragSucceded = function () { + /// + /// instance.$IsLastDragSucceded(); //Retrieve last drag succeded status, returns 0 if failed, returns drag offset if succeded + /// + return _LastDragSucceded; + }; + + function OriginalWidth() { + /// + /// instance.$OriginalWidth(); //Retrieve original width of the slider. + /// + return $Jssor$.$CssWidth(_ScaleWrapper || elmt); + } + + function OriginalHeight() { + /// + /// instance.$OriginalHeight(); //Retrieve original height of the slider. + /// + return $Jssor$.$CssHeight(_ScaleWrapper || elmt); + } + + _SelfSlider.$OriginalWidth = _SelfSlider.$GetOriginalWidth = OriginalWidth; + + _SelfSlider.$OriginalHeight = _SelfSlider.$GetOriginalHeight = OriginalHeight; + + function Scale(dimension, isHeight) { + /// + /// instance.$ScaleWidth(); //Retrieve scaled dimension the slider currently displays. + /// instance.$ScaleWidth( dimension ); //Scale the slider to new width and keep aspect ratio. + /// + + if (dimension == undefined) + return $Jssor$.$CssWidth(elmt); + + if (!_ScaleWrapper) { + $JssorDebug$.$Execute(function () { + var originalWidthStr = $Jssor$.$Css(elmt, "width"); + var originalHeightStr = $Jssor$.$Css(elmt, "height"); + var originalWidth = $Jssor$.$CssP(elmt, "width"); + var originalHeight = $Jssor$.$CssP(elmt, "height"); + + if (!originalWidthStr || originalWidthStr.indexOf("px") == -1) { + $JssorDebug$.$Fail("Cannot scale jssor slider, 'width' of 'outer container' not specified. Please specify 'width' in pixel. e.g. 'width: 600px;'"); + } + + if (!originalHeightStr || originalHeightStr.indexOf("px") == -1) { + $JssorDebug$.$Fail("Cannot scale jssor slider, 'height' of 'outer container' not specified. Please specify 'height' in pixel. e.g. 'height: 300px;'"); + } + + if (originalWidthStr.indexOf('%') != -1) { + $JssorDebug$.$Fail("Cannot scale jssor slider, 'width' of 'outer container' not valid. Please specify 'width' in pixel. e.g. 'width: 600px;'"); + } + + if (originalHeightStr.indexOf('%') != -1) { + $JssorDebug$.$Fail("Cannot scale jssor slider, 'height' of 'outer container' not valid. Please specify 'height' in pixel. e.g. 'height: 300px;'"); + } + + if (!originalWidth) { + $JssorDebug$.$Fail("Cannot scale jssor slider, 'width' of 'outer container' not valid. 'width' of 'outer container' should be positive number. e.g. 'width: 600px;'"); + } + + if (!originalHeight) { + $JssorDebug$.$Fail("Cannot scale jssor slider, 'height' of 'outer container' not valid. 'height' of 'outer container' should be positive number. e.g. 'height: 300px;'"); + } + }); + + var innerWrapper = $Jssor$.$CreateDiv(document); + $Jssor$.$ClassName(innerWrapper, $Jssor$.$ClassName(elmt)); + $Jssor$.$CssCssText(innerWrapper, $Jssor$.$CssCssText(elmt)); + $Jssor$.$CssDisplay(innerWrapper, "block"); + + $Jssor$.$CssPosition(innerWrapper, "relative"); + $Jssor$.$CssTop(innerWrapper, 0); + $Jssor$.$CssLeft(innerWrapper, 0); + $Jssor$.$CssOverflow(innerWrapper, "visible"); + + _ScaleWrapper = $Jssor$.$CreateDiv(document); + + $Jssor$.$CssPosition(_ScaleWrapper, "absolute"); + $Jssor$.$CssTop(_ScaleWrapper, 0); + $Jssor$.$CssLeft(_ScaleWrapper, 0); + $Jssor$.$CssWidth(_ScaleWrapper, $Jssor$.$CssWidth(elmt)); + $Jssor$.$CssHeight(_ScaleWrapper, $Jssor$.$CssHeight(elmt)); + $Jssor$.$SetStyleTransformOrigin(_ScaleWrapper, "0 0"); + + $Jssor$.$AppendChild(_ScaleWrapper, innerWrapper); + + var children = $Jssor$.$Children(elmt); + $Jssor$.$AppendChild(elmt, _ScaleWrapper); + + $Jssor$.$Css(elmt, "backgroundImage", ""); + + var noMoveElmts = { + "navigator": _BulletNavigatorOptions && _BulletNavigatorOptions.$Scale == false, + "arrowleft": _ArrowNavigatorOptions && _ArrowNavigatorOptions.$Scale == false, + "arrowright": _ArrowNavigatorOptions && _ArrowNavigatorOptions.$Scale == false, + "thumbnavigator": _ThumbnailNavigatorOptions && _ThumbnailNavigatorOptions.$Scale == false, + "thumbwrapper": _ThumbnailNavigatorOptions && _ThumbnailNavigatorOptions.$Scale == false + }; + + $Jssor$.$Each(children, function (child) { + $Jssor$.$AppendChild(noMoveElmts[$Jssor$.$AttributeEx(child, "u")] ? elmt : innerWrapper, child); + }); + } + + $JssorDebug$.$Execute(function () { + if (!dimension || dimension < 0) { + $JssorDebug$.$Fail("'$ScaleWidth' error, 'dimension' should be positive value."); + } + }); + + $JssorDebug$.$Execute(function () { + if (!_InitialScrollWidth) { + _InitialScrollWidth = _SelfSlider.$Elmt.scrollWidth; + } + }); + + _ScaleRatio = dimension / (isHeight ? $Jssor$.$CssHeight : $Jssor$.$CssWidth)(_ScaleWrapper); + $Jssor$.$CssScale(_ScaleWrapper, _ScaleRatio); + + var scaleWidth = isHeight ? (_ScaleRatio * OriginalWidth()) : dimension; + var scaleHeight = isHeight ? dimension : (_ScaleRatio * OriginalHeight()); + + $Jssor$.$CssWidth(elmt, scaleWidth); + $Jssor$.$CssHeight(elmt, scaleHeight); + + $Jssor$.$Each(_Navigators, function (navigator) { + navigator.$Relocate(scaleWidth, scaleHeight); + }); + } + + _SelfSlider.$ScaleHeight = _SelfSlider.$GetScaleHeight = function (height) { + /// + /// instance.$ScaleHeight(); //Retrieve scaled height the slider currently displays. + /// instance.$ScaleHeight( dimension ); //Scale the slider to new height and keep aspect ratio. + /// + + if (height == undefined) + return $Jssor$.$CssHeight(elmt); + + Scale(height, true); + }; + + _SelfSlider.$ScaleWidth = _SelfSlider.$SetScaleWidth = _SelfSlider.$GetScaleWidth = Scale; + + _SelfSlider.$GetVirtualIndex = function (index) { + var parkingIndex = Math.ceil(GetRealIndex(_ParkingPosition / _StepLength)); + var displayIndex = GetRealIndex(index - _CurrentSlideIndex + parkingIndex); + + if (displayIndex > _DisplayPieces) { + if (index - _CurrentSlideIndex > _SlideCount / 2) + index -= _SlideCount; + else if (index - _CurrentSlideIndex <= -_SlideCount / 2) + index += _SlideCount; + } + else { + index = _CurrentSlideIndex + displayIndex - parkingIndex; + } + + return index; + }; + + //member functions + + $JssorObject$.call(_SelfSlider); + + $JssorDebug$.$Execute(function () { + var outerContainerElmt = $Jssor$.$GetElement(elmt); + if (!outerContainerElmt) + $JssorDebug$.$Fail("Outer container '" + elmt + "' not found."); + }); + + //initialize member variables + _SelfSlider.$Elmt = elmt = $Jssor$.$GetElement(elmt); + //initialize member variables + + var _InitialScrollWidth; //for debug only + var _CaptionSliderCount = 1; //for debug only + + var _Options = $Jssor$.$Extend({ + $FillMode: 0, //[Optional] The way to fill image in slide, 0 stretch, 1 contain (keep aspect ratio and put all inside slide), 2 cover (keep aspect ratio and cover whole slide), 4 actual size, 5 contain for large image, actual size for small image, default value is 0 + $LazyLoading: 1, //[Optional] For image with lazy loading format (), by default it will be loaded only when the slide comes. + //But an integer value (maybe 0, 1, 2 or 3) indicates that how far of nearby slides should be loaded immediately as well, default value is 1. + $StartIndex: 0, //[Optional] Index of slide to display when initialize, default value is 0 + $AutoPlay: false, //[Optional] Whether to auto play, default value is false + $Loop: 1, //[Optional] Enable loop(circular) of carousel or not, 0: stop, 1: loop, 2 rewind, default value is 1 + $HWA: true, //[Optional] Enable hardware acceleration or not, default value is true + $NaviQuitDrag: true, + $AutoPlaySteps: 1, //[Optional] Steps to go of every play (this options applys only when slideshow disabled), default value is 1 + $AutoPlayInterval: 3000, //[Optional] Interval to play next slide since the previous stopped if a slideshow is auto playing, default value is 3000 + $PauseOnHover: 1, //[Optional] Whether to pause when mouse over if a slider is auto playing, 0 no pause, 1 pause for desktop, 2 pause for touch device, 3 pause for desktop and touch device, 4 freeze for desktop, 8 freeze for touch device, 12 freeze for desktop and touch device, default value is 1 + + $SlideDuration: 500, //[Optional] Specifies default duration (swipe) for slide in milliseconds, default value is 400 + $SlideEasing: $JssorEasing$.$EaseOutQuad, //[Optional] Specifies easing for right to left animation, default value is $JssorEasing$.$EaseOutQuad + $MinDragOffsetToSlide: 20, //[Optional] Minimum drag offset that trigger slide, default value is 20 + $SlideSpacing: 0, //[Optional] Space between each slide in pixels, default value is 0 + $DisplayPieces: 1, //[Optional] Number of pieces to display (the slideshow would be disabled if the value is set to greater than 1), default value is 1 + $ParkingPosition: 0, //[Optional] The offset position to park slide (this options applys only when slideshow disabled), default value is 0. + $UISearchMode: 1, //[Optional] The way (0 parellel, 1 recursive, default value is recursive) to search UI components (slides container, loading screen, navigator container, arrow navigator container, thumbnail navigator container etc. + $PlayOrientation: 1, //[Optional] Orientation to play slide (for auto play, navigation), 1 horizental, 2 vertical, 5 horizental reverse, 6 vertical reverse, default value is 1 + $DragOrientation: 1 //[Optional] Orientation to drag slide, 0 no drag, 1 horizental, 2 vertical, 3 both, default value is 1 (Note that the $DragOrientation should be the same as $PlayOrientation when $DisplayPieces is greater than 1, or parking position is not 0) + + }, options); + + //Sodo statement for development time intellisence only + $JssorDebug$.$Execute(function () { + _Options = $Jssor$.$Extend({ + $ArrowKeyNavigation: undefined, + $SlideWidth: undefined, + $SlideHeight: undefined, + $SlideshowOptions: undefined, + $CaptionSliderOptions: undefined, + $BulletNavigatorOptions: undefined, + $ArrowNavigatorOptions: undefined, + $ThumbnailNavigatorOptions: undefined + }, + _Options); + }); + + var _PlayOrientation = _Options.$PlayOrientation & 3; + var _PlayReverse = (_Options.$PlayOrientation & 4) / -4 || 1; + + var _SlideshowOptions = _Options.$SlideshowOptions; + var _CaptionSliderOptions = $Jssor$.$Extend({ $Class: $JssorCaptionSliderBase$, $PlayInMode: 1, $PlayOutMode: 1 }, _Options.$CaptionSliderOptions); + //$Jssor$.$TranslateTransitions(_CaptionSliderOptions.$CaptionTransitions); //for old transition compatibility + var _BulletNavigatorOptions = _Options.$BulletNavigatorOptions; + var _ArrowNavigatorOptions = _Options.$ArrowNavigatorOptions; + var _ThumbnailNavigatorOptions = _Options.$ThumbnailNavigatorOptions; + + $JssorDebug$.$Execute(function () { + if (_SlideshowOptions && !_SlideshowOptions.$Class) { + $JssorDebug$.$Fail("Option $SlideshowOptions error, class not specified."); + } + }); + + $JssorDebug$.$Execute(function () { + if (_Options.$CaptionSliderOptions && !_Options.$CaptionSliderOptions.$Class) { + $JssorDebug$.$Fail("Option $CaptionSliderOptions error, class not specified."); + } + }); + + $JssorDebug$.$Execute(function () { + if (_BulletNavigatorOptions && !_BulletNavigatorOptions.$Class) { + $JssorDebug$.$Fail("Option $BulletNavigatorOptions error, class not specified."); + } + }); + + $JssorDebug$.$Execute(function () { + if (_ArrowNavigatorOptions && !_ArrowNavigatorOptions.$Class) { + $JssorDebug$.$Fail("Option $ArrowNavigatorOptions error, class not specified."); + } + }); + + $JssorDebug$.$Execute(function () { + if (_ThumbnailNavigatorOptions && !_ThumbnailNavigatorOptions.$Class) { + $JssorDebug$.$Fail("Option $ThumbnailNavigatorOptions error, class not specified."); + } + }); + + var _UISearchNoDeep = !_Options.$UISearchMode; + var _ScaleWrapper; + var _SlidesContainer = $Jssor$.$FindChild(elmt, "slides", _UISearchNoDeep); + var _LoadingContainer = $Jssor$.$FindChild(elmt, "loading", _UISearchNoDeep) || $Jssor$.$CreateDiv(document); + + var _BulletNavigatorContainer = $Jssor$.$FindChild(elmt, "navigator", _UISearchNoDeep); + + var _ArrowLeft = $Jssor$.$FindChild(elmt, "arrowleft", _UISearchNoDeep); + var _ArrowRight = $Jssor$.$FindChild(elmt, "arrowright", _UISearchNoDeep); + + var _ThumbnailNavigatorContainer = $Jssor$.$FindChild(elmt, "thumbnavigator", _UISearchNoDeep); + + $JssorDebug$.$Execute(function () { + //if (_BulletNavigatorOptions && !_BulletNavigatorContainer) { + // throw new Error("$BulletNavigatorOptions specified but bullet navigator container (
      1 && _Options.$DragOrientation && _Options.$DragOrientation != _PlayOrientation) + $JssorDebug$.$Fail("Option $DragOrientation error, it should be 0 or the same of $PlayOrientation when $DisplayPieces is greater than 1."); + + if (!$Jssor$.$IsNumeric(_Options.$ParkingPosition)) + $JssorDebug$.$Fail("Option $ParkingPosition error, it should be a numeric value."); + + if (_Options.$ParkingPosition && _Options.$DragOrientation && _Options.$DragOrientation != _PlayOrientation) + $JssorDebug$.$Fail("Option $DragOrientation error, it should be 0 or the same of $PlayOrientation when $ParkingPosition is not equal to 0."); + }); + + var _StyleDef; + + var _SlideElmts = []; + + { + var slideElmts = $Jssor$.$Children(_SlidesContainer); + $Jssor$.$Each(slideElmts, function (slideElmt) { + if (slideElmt.tagName == "DIV" && !$Jssor$.$AttributeEx(slideElmt, "u")) { + _SlideElmts.push(slideElmt); + } + }); + } + + $JssorDebug$.$Execute(function () { + if (_SlideElmts.length < 1) { + $JssorDebug$.$Error("Slides html code definition error, there must be at least 1 slide to initialize a slider."); + } + }); + + var _SlideItemCreatedCount = 0; //for debug only + var _SlideItemReleasedCount = 0; //for debug only + + var _PreviousSlideIndex; + var _CurrentSlideIndex = -1; + var _TempSlideIndex; + var _PrevSlideItem; + var _CurrentSlideItem; + var _SlideCount = _SlideElmts.length; + + var _SlideWidth = _Options.$SlideWidth || _SlidesContainerWidth; + var _SlideHeight = _Options.$SlideHeight || _SlidesContainerHeight; + + var _SlideSpacing = _Options.$SlideSpacing; + var _StepLengthX = _SlideWidth + _SlideSpacing; + var _StepLengthY = _SlideHeight + _SlideSpacing; + var _StepLength = (_PlayOrientation & 1) ? _StepLengthX : _StepLengthY; + var _DisplayPieces = Math.min(_Options.$DisplayPieces, _SlideCount); + + var _SlideshowPanel; + var _CurrentBoardIndex = 0; + var _DragOrientation; + var _DragOrientationRegistered; + var _DragInvalid; + + var _Navigators = []; + var _BulletNavigator; + var _ArrowNavigator; + var _ThumbnailNavigator; + + var _ShowLink; + + var _Frozen; + var _AutoPlay; + var _AutoPlaySteps = _Options.$AutoPlaySteps; + var _HoverToPause = _Options.$PauseOnHover; + var _AutoPlayInterval = _Options.$AutoPlayInterval; + var _SlideDuration = _Options.$SlideDuration; + + var _SlideshowRunnerClass; + var _TransitionsOrder; + + var _SlideshowEnabled; + var _ParkingPosition; + var _CarouselEnabled = _DisplayPieces < _SlideCount; + var _Loop = _CarouselEnabled ? _Options.$Loop : 0; + + var _DragEnabled; + var _LastDragSucceded; + + var _NotOnHover = 1; //0 Hovering, 1 Not hovering + + //Variable Definition + var _IsSliding; + var _IsDragging; + var _LoadingTicket; + + //The X position of mouse/touch when a drag start + var _DragStartMouseX = 0; + //The Y position of mouse/touch when a drag start + var _DragStartMouseY = 0; + var _DragOffsetTotal; + var _DragOffsetLastTime; + var _DragIndexAdjust; + + var _Carousel; + var _Conveyor; + var _Slideshow; + var _CarouselPlayer; + var _SlideContainer = new SlideContainer(); + var _ScaleRatio; + + //$JssorSlider$ Constructor + { + _AutoPlay = _Options.$AutoPlay; + _SelfSlider.$Options = options; + + AdjustSlidesContainerSize(); + + elmt["jssor-slider"] = true; + + //_SlideshowPanel = CreatePanel(); + //$Jssor$.$CssZIndex(elmt, $Jssor$.$CssZIndex(elmt)); + //$Jssor$.$CssLeft(_SlideshowPanel, $Jssor$.$CssLeft(_SlidesContainer)); + //$Jssor$.$CssZIndex(_SlidesContainer, $Jssor$.$CssZIndex(_SlidesContainer)); + //$Jssor$.$CssTop(_SlideshowPanel, $Jssor$.$CssTop(_SlidesContainer)); + $Jssor$.$CssZIndex(_SlidesContainer, $Jssor$.$CssZIndex(_SlidesContainer) || 0); + $Jssor$.$CssPosition(_SlidesContainer, "absolute"); + _SlideshowPanel = $Jssor$.$CloneNode(_SlidesContainer, true); + $Jssor$.$InsertBefore(_SlideshowPanel, _SlidesContainer); + + if (_SlideshowOptions) { + _ShowLink = _SlideshowOptions.$ShowLink; + _SlideshowRunnerClass = _SlideshowOptions.$Class; + + $JssorDebug$.$Execute(function () { + if (!_SlideshowOptions.$Transitions || !_SlideshowOptions.$Transitions.length) { + $JssorDebug$.$Error("Invalid '$SlideshowOptions', no '$Transitions' specified."); + } + }); + + //$Jssor$.$TranslateTransitions(_SlideshowOptions.$Transitions); //for old transition compatibility + + _SlideshowEnabled = _DisplayPieces == 1 && _SlideCount > 1 && _SlideshowRunnerClass && (!$Jssor$.$IsBrowserIE() || $Jssor$.$BrowserVersion() >= 8); + } + + _ParkingPosition = (_SlideshowEnabled || _DisplayPieces >= _SlideCount || !(_Loop & 1)) ? 0 : _Options.$ParkingPosition; + + _DragEnabled = ((_DisplayPieces > 1 || _ParkingPosition) ? _PlayOrientation : -1) & _Options.$DragOrientation; + + //SlideBoard + var _SlideboardElmt = _SlidesContainer; + var _SlideItems = []; + + var _SlideshowRunner; + var _LinkContainer; + + var _Device = $Jssor$.$Device(); + var _DownEvent = _Device.$Evt_Down; + var _MoveEvent = _Device.$Evt_Move; + var _UpEvent = _Device.$Evt_Up; + var _CancelEvent = _Device.$Evt_Cancel; + + var _HandleTouchEventOnly = _Device.$TouchOnly; + var _IsTouchDevice = _Device.$Touchable; + + var _LastTimeMoveByDrag; + var _Position_OnFreeze; + var _CarouselPlaying_OnFreeze; + var _PlayToPosition_OnFreeze; + var _PositionToGoByDrag; + + //SlideBoard Constructor + { + if (_Device.$TouchActionAttr) { + if (_DragEnabled) { + var touchAction = "auto"; + if (_DragEnabled == 2) { + touchAction = "pan-x"; + } + else if (_DragEnabled) { + touchAction = "pan-y"; + } + + $Jssor$.$Css(_SlideboardElmt, _Device.$TouchActionAttr, touchAction); + } + } + + _Slideshow = new Slideshow(); + + if (_SlideshowEnabled) + _SlideshowRunner = new _SlideshowRunnerClass(_SlideContainer, _SlideWidth, _SlideHeight, _SlideshowOptions, _IsTouchDevice); + + $Jssor$.$AppendChild(_SlideshowPanel, _Slideshow.$Wrapper); + $Jssor$.$CssOverflow(_SlidesContainer, "hidden"); + + //link container + { + _LinkContainer = CreatePanel(); + $Jssor$.$Css(_LinkContainer, "backgroundColor", "#000"); + $Jssor$.$CssOpacity(_LinkContainer, 0); + $Jssor$.$InsertBefore(_LinkContainer, _SlideboardElmt.firstChild, _SlideboardElmt); + } + + for (var i = 0; i < _SlideElmts.length; i++) { + var slideElmt = _SlideElmts[i]; + var slideItem = new SlideItem(slideElmt, i); + _SlideItems.push(slideItem); + } + + $Jssor$.$HideElement(_LoadingContainer); + + $JssorDebug$.$Execute(function () { + $Jssor$.$Attribute(_LoadingContainer, "debug-id", "loading-container"); + }); + + _Carousel = new Carousel() + _CarouselPlayer = new CarouselPlayer(_Carousel, _Slideshow); + + $JssorDebug$.$Execute(function () { + $Jssor$.$Attribute(_SlideboardElmt, "debug-id", "slide-board"); + }); + + if (_DragEnabled) { + $Jssor$.$AddEvent(_SlidesContainer, _DownEvent, OnMouseDown); + $Jssor$.$AddEvent(_SlidesContainer, "dragstart", PreventDragStart); + $Jssor$.$AddEvent(document, _UpEvent, OnDragEnd); + _CancelEvent && $Jssor$.$AddEvent(document, _CancelEvent, OnDragEnd); + } + } + //SlideBoard + + _HoverToPause &= (_IsTouchDevice ? 10 : 5); + + //Bullet Navigator + if (_BulletNavigatorContainer && _BulletNavigatorOptions) { + _BulletNavigator = new _BulletNavigatorOptions.$Class(_BulletNavigatorContainer, _BulletNavigatorOptions, OriginalWidth(), OriginalHeight()); + _Navigators.push(_BulletNavigator); + } + + //Arrow Navigator + if (_ArrowNavigatorOptions && _ArrowLeft && _ArrowRight) { + _ArrowNavigatorOptions.$Loop = _Loop; + _ArrowNavigatorOptions.$DisplayPieces = _DisplayPieces; + _ArrowNavigator = new _ArrowNavigatorOptions.$Class(_ArrowLeft, _ArrowRight, _ArrowNavigatorOptions, OriginalWidth(), OriginalHeight()); + _Navigators.push(_ArrowNavigator); + } + + //Thumbnail Navigator + if (_ThumbnailNavigatorContainer && _ThumbnailNavigatorOptions) { + _ThumbnailNavigatorOptions.$StartIndex = _Options.$StartIndex; + _ThumbnailNavigator = new _ThumbnailNavigatorOptions.$Class(_ThumbnailNavigatorContainer, _ThumbnailNavigatorOptions); + _Navigators.push(_ThumbnailNavigator); + } + + $Jssor$.$Each(_Navigators, function (navigator) { + navigator.$Reset(_SlideCount, _SlideItems, _LoadingContainer); + navigator.$On($JssorNavigatorEvents$.$NAVIGATIONREQUEST, NavigationClickHandler); + }); + + Scale(OriginalWidth()); + + $Jssor$.$AddEvent(elmt, "mouseout", $Jssor$.$MouseOverOutFilter(MainContainerMouseLeaveEventHandler, elmt)); + $Jssor$.$AddEvent(elmt, "mouseover", $Jssor$.$MouseOverOutFilter(MainContainerMouseEnterEventHandler, elmt)); + + ShowNavigators(); + + //Keyboard Navigation + if (_Options.$ArrowKeyNavigation) { + $Jssor$.$AddEvent(document, "keydown", function (e) { + if (e.keyCode == $JssorKeyCode$.$LEFT) { + //Arrow Left + PlayToOffset(-1); + } + else if (e.keyCode == $JssorKeyCode$.$RIGHT) { + //Arrow Right + PlayToOffset(1); + } + }); + } + + var startPosition = _Options.$StartIndex; + if (!(_Loop & 1)) { + startPosition = Math.max(0, Math.min(startPosition, _SlideCount - _DisplayPieces)); + } + _CarouselPlayer.$PlayCarousel(startPosition, startPosition, 0); + } +}; +var $JssorSlideo$ = window.$JssorSlideo$ = $JssorSlider$; + +$JssorSlider$.$EVT_CLICK = 21; +$JssorSlider$.$EVT_DRAG_START = 22; +$JssorSlider$.$EVT_DRAG_END = 23; +$JssorSlider$.$EVT_SWIPE_START = 24; +$JssorSlider$.$EVT_SWIPE_END = 25; + +$JssorSlider$.$EVT_LOAD_START = 26; +$JssorSlider$.$EVT_LOAD_END = 27; +$JssorSlider$.$EVT_FREEZE = 28; + +$JssorSlider$.$EVT_POSITION_CHANGE = 202; +$JssorSlider$.$EVT_PARK = 203; + +$JssorSlider$.$EVT_SLIDESHOW_START = 206; +$JssorSlider$.$EVT_SLIDESHOW_END = 207; + +$JssorSlider$.$EVT_PROGRESS_CHANGE = 208; +$JssorSlider$.$EVT_STATE_CHANGE = 209; +$JssorSlider$.$EVT_ROLLBACK_START = 210; +$JssorSlider$.$EVT_ROLLBACK_END = 211; + +//(function ($) { +// jQuery.fn.jssorSlider = function (options) { +// return this.each(function () { +// return $(this).data('jssorSlider') || $(this).data('jssorSlider', new $JssorSlider$(this, options)); +// }); +// }; +//})(jQuery); + +//window.jQuery && (jQuery.fn.jssorSlider = function (options) { +// return this.each(function () { +// return jQuery(this).data('jssorSlider') || jQuery(this).data('jssorSlider', new $JssorSlider$(this, options)); +// }); +//}); + +//$JssorBulletNavigator$ +var $JssorNavigatorEvents$ = { + $NAVIGATIONREQUEST: 1, + $INDEXCHANGE: 2, + $RESET: 3 +}; + +var $JssorBulletNavigator$ = window.$JssorBulletNavigator$ = function (elmt, options, containerWidth, containerHeight) { + var self = this; + $JssorObject$.call(self); + + elmt = $Jssor$.$GetElement(elmt); + + var _Count; + var _Length; + var _Width; + var _Height; + var _CurrentIndex; + var _CurrentInnerIndex = 0; + var _Options; + var _Steps; + var _Lanes; + var _SpacingX; + var _SpacingY; + var _Orientation; + var _ItemPrototype; + var _PrototypeWidth; + var _PrototypeHeight; + + var _ButtonElements = []; + var _Buttons = []; + + function Highlight(index) { + if (index != -1) + _Buttons[index].$Selected(index == _CurrentInnerIndex); + } + + function OnNavigationRequest(index) { + self.$TriggerEvent($JssorNavigatorEvents$.$NAVIGATIONREQUEST, index * _Steps); + } + + self.$Elmt = elmt; + self.$GetCurrentIndex = function () { + return _CurrentIndex; + }; + + self.$SetCurrentIndex = function (index) { + if (index != _CurrentIndex) { + var lastInnerIndex = _CurrentInnerIndex; + var innerIndex = Math.floor(index / _Steps); + _CurrentInnerIndex = innerIndex; + _CurrentIndex = index; + + Highlight(lastInnerIndex); + Highlight(innerIndex); + + //self.$TriggerEvent($JssorNavigatorEvents$.$INDEXCHANGE, index); + } + }; + + self.$Show = function (hide) { + $Jssor$.$ShowElement(elmt, hide); + }; + + var _Located; + self.$Relocate = function (containerWidth, containerHeight) { + if (!_Located || _Options.$Scale == false) { + if (_Options.$AutoCenter & 1) { + $Jssor$.$CssLeft(elmt, (containerWidth - _Width) / 2); + } + if (_Options.$AutoCenter & 2) { + $Jssor$.$CssTop(elmt, (containerHeight - _Height) / 2); + } + + _Located = true; + } + }; + + var _Initialized; + self.$Reset = function (length) { + if (!_Initialized) { + _Length = length; + _Count = Math.ceil(length / _Steps); + _CurrentInnerIndex = 0; + + var itemOffsetX = _PrototypeWidth + _SpacingX; + var itemOffsetY = _PrototypeHeight + _SpacingY; + + var maxIndex = Math.ceil(_Count / _Lanes) - 1; + + _Width = _PrototypeWidth + itemOffsetX * (!_Orientation ? maxIndex : _Lanes - 1); + _Height = _PrototypeHeight + itemOffsetY * (_Orientation ? maxIndex : _Lanes - 1); + + $Jssor$.$CssWidth(elmt, _Width); + $Jssor$.$CssHeight(elmt, _Height); + + for (var buttonIndex = 0; buttonIndex < _Count; buttonIndex++) { + + var numberDiv = $Jssor$.$CreateSpan(); + $Jssor$.$InnerText(numberDiv, buttonIndex + 1); + + var div = $Jssor$.$BuildElement(_ItemPrototype, "numbertemplate", numberDiv, true); + $Jssor$.$CssPosition(div, "absolute"); + + var columnIndex = buttonIndex % (maxIndex + 1); + $Jssor$.$CssLeft(div, !_Orientation ? itemOffsetX * columnIndex : buttonIndex % _Lanes * itemOffsetX); + $Jssor$.$CssTop(div, _Orientation ? itemOffsetY * columnIndex : Math.floor(buttonIndex / (maxIndex + 1)) * itemOffsetY); + + $Jssor$.$AppendChild(elmt, div); + _ButtonElements[buttonIndex] = div; + + if (_Options.$ActionMode & 1) + $Jssor$.$AddEvent(div, "click", $Jssor$.$CreateCallback(null, OnNavigationRequest, buttonIndex)); + + if (_Options.$ActionMode & 2) + $Jssor$.$AddEvent(div, "mouseover", $Jssor$.$MouseOverOutFilter($Jssor$.$CreateCallback(null, OnNavigationRequest, buttonIndex), div)); + + _Buttons[buttonIndex] = $Jssor$.$Buttonize(div); + } + + //self.$TriggerEvent($JssorNavigatorEvents$.$RESET); + _Initialized = true; + } + }; + + //JssorBulletNavigator Constructor + { + self.$Options = _Options = $Jssor$.$Extend({ + $SpacingX: 0, + $SpacingY: 0, + $Orientation: 1, + $ActionMode: 1 + }, options); + + //Sodo statement for development time intellisence only + $JssorDebug$.$Execute(function () { + _Options = $Jssor$.$Extend({ + $Steps: undefined, + $Lanes: undefined + }, _Options); + }); + + _ItemPrototype = $Jssor$.$FindChild(elmt, "prototype"); + + $JssorDebug$.$Execute(function () { + if (!_ItemPrototype) + $JssorDebug$.$Fail("Navigator item prototype not defined."); + + if (isNaN($Jssor$.$CssWidth(_ItemPrototype))) { + $JssorDebug$.$Fail("Width of 'navigator item prototype' not specified."); + } + + if (isNaN($Jssor$.$CssHeight(_ItemPrototype))) { + $JssorDebug$.$Fail("Height of 'navigator item prototype' not specified."); + } + }); + + _PrototypeWidth = $Jssor$.$CssWidth(_ItemPrototype); + _PrototypeHeight = $Jssor$.$CssHeight(_ItemPrototype); + + $Jssor$.$RemoveElement(_ItemPrototype, elmt); + + _Steps = _Options.$Steps || 1; + _Lanes = _Options.$Lanes || 1; + _SpacingX = _Options.$SpacingX; + _SpacingY = _Options.$SpacingY; + _Orientation = _Options.$Orientation - 1; + } +}; + +var $JssorArrowNavigator$ = window.$JssorArrowNavigator$ = function (arrowLeft, arrowRight, options, containerWidth, containerHeight) { + var self = this; + $JssorObject$.call(self); + + $JssorDebug$.$Execute(function () { + + if (!arrowLeft) + $JssorDebug$.$Fail("Option '$ArrowNavigatorOptions' spepcified, but UI 'arrowleft' not defined. Define 'arrowleft' to enable direct navigation, or remove option '$ArrowNavigatorOptions' to disable direct navigation."); + + if (!arrowRight) + $JssorDebug$.$Fail("Option '$ArrowNavigatorOptions' spepcified, but UI 'arrowright' not defined. Define 'arrowright' to enable direct navigation, or remove option '$ArrowNavigatorOptions' to disable direct navigation."); + + if (isNaN($Jssor$.$CssWidth(arrowLeft))) { + $JssorDebug$.$Fail("Width of 'arrow left' not specified."); + } + + if (isNaN($Jssor$.$CssWidth(arrowRight))) { + $JssorDebug$.$Fail("Width of 'arrow right' not specified."); + } + + if (isNaN($Jssor$.$CssHeight(arrowLeft))) { + $JssorDebug$.$Fail("Height of 'arrow left' not specified."); + } + + if (isNaN($Jssor$.$CssHeight(arrowRight))) { + $JssorDebug$.$Fail("Height of 'arrow right' not specified."); + } + }); + + var _Hide; + var _Length; + var _CurrentIndex; + var _Options; + var _Steps; + var _ArrowWidth = $Jssor$.$CssWidth(arrowLeft); + var _ArrowHeight = $Jssor$.$CssHeight(arrowLeft); + + function OnNavigationRequest(steps) { + self.$TriggerEvent($JssorNavigatorEvents$.$NAVIGATIONREQUEST, steps, true); + } + + function ShowArrows(hide) { + $Jssor$.$ShowElement(arrowLeft, hide || !options.$Loop && _CurrentIndex == 0); + $Jssor$.$ShowElement(arrowRight, hide || !options.$Loop && _CurrentIndex >= _Length - options.$DisplayPieces); + + _Hide = hide; + } + + self.$GetCurrentIndex = function () { + return _CurrentIndex; + }; + + self.$SetCurrentIndex = function (index, virtualIndex, temp) { + if (temp) { + _CurrentIndex = virtualIndex; + } + else { + _CurrentIndex = index; + + ShowArrows(_Hide); + } + //self.$TriggerEvent($JssorNavigatorEvents$.$INDEXCHANGE, index); + }; + + self.$Show = ShowArrows; + + var _Located; + self.$Relocate = function (conainerWidth, containerHeight) { + if (!_Located || _Options.$Scale == false) { + + if (_Options.$AutoCenter & 1) { + $Jssor$.$CssLeft(arrowLeft, (containerWidth - _ArrowWidth) / 2); + $Jssor$.$CssLeft(arrowRight, (containerWidth - _ArrowWidth) / 2); + } + + if (_Options.$AutoCenter & 2) { + $Jssor$.$CssTop(arrowLeft, (containerHeight - _ArrowHeight) / 2); + $Jssor$.$CssTop(arrowRight, (containerHeight - _ArrowHeight) / 2); + } + + _Located = true; + } + }; + + var _Initialized; + self.$Reset = function (length) { + _Length = length; + _CurrentIndex = 0; + + if (!_Initialized) { + + $Jssor$.$AddEvent(arrowLeft, "click", $Jssor$.$CreateCallback(null, OnNavigationRequest, -_Steps)); + $Jssor$.$AddEvent(arrowRight, "click", $Jssor$.$CreateCallback(null, OnNavigationRequest, _Steps)); + + $Jssor$.$Buttonize(arrowLeft); + $Jssor$.$Buttonize(arrowRight); + + _Initialized = true; + } + + //self.$TriggerEvent($JssorNavigatorEvents$.$RESET); + }; + + //JssorArrowNavigator Constructor + { + self.$Options = _Options = $Jssor$.$Extend({ + $Steps: 1 + }, options); + + _Steps = _Options.$Steps; + } +}; + +//$JssorThumbnailNavigator$ +var $JssorThumbnailNavigator$ = window.$JssorThumbnailNavigator$ = function (elmt, options) { + var _Self = this; + var _Length; + var _Count; + var _CurrentIndex; + var _Options; + var _NavigationItems = []; + + var _Width; + var _Height; + var _Lanes; + var _SpacingX; + var _SpacingY; + var _PrototypeWidth; + var _PrototypeHeight; + var _DisplayPieces; + + var _Slider; + var _CurrentMouseOverIndex = -1; + + var _SlidesContainer; + var _ThumbnailPrototype; + + $JssorObject$.call(_Self); + elmt = $Jssor$.$GetElement(elmt); + + function NavigationItem(item, index) { + var self = this; + var _Wrapper; + var _Button; + var _Thumbnail; + + function Highlight(mouseStatus) { + _Button.$Selected(_CurrentIndex == index); + } + + function OnNavigationRequest(event) { + if (!_Slider.$LastDragSucceded()) { + var tail = _Lanes - index % _Lanes; + var slideVirtualIndex = _Slider.$GetVirtualIndex((index + tail) / _Lanes - 1); + var itemVirtualIndex = slideVirtualIndex * _Lanes + _Lanes - tail; + _Self.$TriggerEvent($JssorNavigatorEvents$.$NAVIGATIONREQUEST, itemVirtualIndex); + } + + //$JssorDebug$.$Log("navigation request"); + } + + $JssorDebug$.$Execute(function () { + self.$Wrapper = undefined; + }); + + self.$Index = index; + + self.$Highlight = Highlight; + + //NavigationItem Constructor + { + _Thumbnail = item.$Thumb || item.$Image || $Jssor$.$CreateDiv(); + self.$Wrapper = _Wrapper = $Jssor$.$BuildElement(_ThumbnailPrototype, "thumbnailtemplate", _Thumbnail, true); + + _Button = $Jssor$.$Buttonize(_Wrapper); + if (_Options.$ActionMode & 1) + $Jssor$.$AddEvent(_Wrapper, "click", OnNavigationRequest); + if (_Options.$ActionMode & 2) + $Jssor$.$AddEvent(_Wrapper, "mouseover", $Jssor$.$MouseOverOutFilter(OnNavigationRequest, _Wrapper)); + } + } + + _Self.$GetCurrentIndex = function () { + return _CurrentIndex; + }; + + _Self.$SetCurrentIndex = function (index, virtualIndex, temp) { + var oldIndex = _CurrentIndex; + _CurrentIndex = index; + if (oldIndex != -1) + _NavigationItems[oldIndex].$Highlight(); + _NavigationItems[index].$Highlight(); + + if (!temp) { + _Slider.$PlayTo(_Slider.$GetVirtualIndex(Math.floor(virtualIndex / _Lanes))); + } + }; + + _Self.$Show = function (hide) { + $Jssor$.$ShowElement(elmt, hide); + }; + + _Self.$Relocate = $Jssor$.$EmptyFunction; + + var _Initialized; + _Self.$Reset = function (length, items, loadingContainer) { + if (!_Initialized) { + _Length = length; + _Count = Math.ceil(_Length / _Lanes); + _CurrentIndex = -1; + _DisplayPieces = Math.min(_DisplayPieces, items.length); + + var horizontal = _Options.$Orientation & 1; + + var slideWidth = _PrototypeWidth + (_PrototypeWidth + _SpacingX) * (_Lanes - 1) * (1 - horizontal); + var slideHeight = _PrototypeHeight + (_PrototypeHeight + _SpacingY) * (_Lanes - 1) * horizontal; + + var slidesContainerWidth = slideWidth + (slideWidth + _SpacingX) * (_DisplayPieces - 1) * horizontal; + var slidesContainerHeight = slideHeight + (slideHeight + _SpacingY) * (_DisplayPieces - 1) * (1 - horizontal); + + $Jssor$.$CssPosition(_SlidesContainer, "absolute"); + $Jssor$.$CssOverflow(_SlidesContainer, "hidden"); + if (_Options.$AutoCenter & 1) { + $Jssor$.$CssLeft(_SlidesContainer, (_Width - slidesContainerWidth) / 2); + } + if (_Options.$AutoCenter & 2) { + $Jssor$.$CssTop(_SlidesContainer, (_Height - slidesContainerHeight) / 2); + } + //$JssorDebug$.$Execute(function () { + // if (!_Options.$AutoCenter) { + // var slidesContainerTop = $Jssor$.$CssTop(_SlidesContainer); + // var slidesContainerLeft = $Jssor$.$CssLeft(_SlidesContainer); + + // if (isNaN(slidesContainerTop)) { + // $JssorDebug$.$Fail("Position 'top' wrong specification of thumbnail navigator slides container (
      ...
      ), \r\nwhen option $ThumbnailNavigatorOptions.$AutoCenter set to 0, it should be specified in pixel (like
      )"); + // } + + // if (isNaN(slidesContainerLeft)) { + // $JssorDebug$.$Fail("Position 'left' wrong specification of thumbnail navigator slides container (
      ...
      ), \r\nwhen option $ThumbnailNavigatorOptions.$AutoCenter set to 0, it should be specified in pixel (like
      )"); + // } + // } + //}); + $Jssor$.$CssWidth(_SlidesContainer, slidesContainerWidth); + $Jssor$.$CssHeight(_SlidesContainer, slidesContainerHeight); + + var slideItemElmts = []; + $Jssor$.$Each(items, function (item, index) { + var navigationItem = new NavigationItem(item, index); + var navigationItemWrapper = navigationItem.$Wrapper; + + var columnIndex = Math.floor(index / _Lanes); + var laneIndex = index % _Lanes; + + $Jssor$.$CssLeft(navigationItemWrapper, (_PrototypeWidth + _SpacingX) * laneIndex * (1 - horizontal)); + $Jssor$.$CssTop(navigationItemWrapper, (_PrototypeHeight + _SpacingY) * laneIndex * horizontal); + + if (!slideItemElmts[columnIndex]) { + slideItemElmts[columnIndex] = $Jssor$.$CreateDiv(); + $Jssor$.$AppendChild(_SlidesContainer, slideItemElmts[columnIndex]); + } + + $Jssor$.$AppendChild(slideItemElmts[columnIndex], navigationItemWrapper); + + _NavigationItems.push(navigationItem); + }); + + var thumbnailSliderOptions = $Jssor$.$Extend({ + $HWA: false, + $AutoPlay: false, + $NaviQuitDrag: false, + $SlideWidth: slideWidth, + $SlideHeight: slideHeight, + $SlideSpacing: _SpacingX * horizontal + _SpacingY * (1 - horizontal), + $MinDragOffsetToSlide: 12, + $SlideDuration: 200, + $PauseOnHover: 1, + $PlayOrientation: _Options.$Orientation, + $DragOrientation: _Options.$DisableDrag ? 0 : _Options.$Orientation + }, _Options); + + _Slider = new $JssorSlider$(elmt, thumbnailSliderOptions); + + _Initialized = true; + } + + //_Self.$TriggerEvent($JssorNavigatorEvents$.$RESET); + }; + + //JssorThumbnailNavigator Constructor + { + _Self.$Options = _Options = $Jssor$.$Extend({ + $SpacingX: 3, + $SpacingY: 3, + $DisplayPieces: 1, + $Orientation: 1, + $AutoCenter: 3, + $ActionMode: 1 + }, options); + + //Sodo statement for development time intellisence only + $JssorDebug$.$Execute(function () { + _Options = $Jssor$.$Extend({ + $Lanes: undefined, + $Width: undefined, + $Height: undefined + }, _Options); + }); + + _Width = $Jssor$.$CssWidth(elmt); + _Height = $Jssor$.$CssHeight(elmt); + + $JssorDebug$.$Execute(function () { + if (!_Width) + $JssorDebug$.$Fail("width of 'thumbnavigator' container not specified."); + if (!_Height) + $JssorDebug$.$Fail("height of 'thumbnavigator' container not specified."); + }); + + _SlidesContainer = $Jssor$.$FindChild(elmt, "slides", true); + _ThumbnailPrototype = $Jssor$.$FindChild(_SlidesContainer, "prototype"); + + $JssorDebug$.$Execute(function () { + if (!_ThumbnailPrototype) + $JssorDebug$.$Fail("prototype of 'thumbnavigator' not defined."); + }); + + _PrototypeWidth = $Jssor$.$CssWidth(_ThumbnailPrototype); + _PrototypeHeight = $Jssor$.$CssHeight(_ThumbnailPrototype); + + $Jssor$.$RemoveElement(_ThumbnailPrototype, _SlidesContainer); + + _Lanes = _Options.$Lanes || 1; + _SpacingX = _Options.$SpacingX; + _SpacingY = _Options.$SpacingY; + _DisplayPieces = _Options.$DisplayPieces; + } +}; + +//$JssorCaptionSliderBase$ +function $JssorCaptionSliderBase$() { + $JssorAnimator$.call(this, 0, 0); + this.$Revert = $Jssor$.$EmptyFunction; +} + +var $JssorCaptionSlider$ = window.$JssorCaptionSlider$ = function (container, captionSlideOptions, playIn) { + $JssorDebug$.$Execute(function () { + if (!captionSlideOptions.$CaptionTransitions) { + $JssorDebug$.$Error("'$CaptionSliderOptions' option error, '$CaptionSliderOptions.$CaptionTransitions' not specified."); + } + //else if (!$Jssor$.$IsArray(captionSlideOptions.$CaptionTransitions)) { + // $JssorDebug$.$Error("'$CaptionSliderOptions' option error, '$CaptionSliderOptions.$CaptionTransitions' is not an array."); + //} + }); + + var _Self = this; + var _ImmediateOutCaptionHanger; + var _PlayMode = playIn ? captionSlideOptions.$PlayInMode : captionSlideOptions.$PlayOutMode; + + var _CaptionTransitions = captionSlideOptions.$CaptionTransitions; + var _CaptionTuningFetcher = { $Transition: "t", $Delay: "d", $Duration: "du", x: "x", y: "y", $Rotate: "r", $Zoom: "z", $Opacity: "f", $BeginTime: "b" }; + var _CaptionTuningTransfer = { + $Default: function (value, tuningValue) { + if (!isNaN(tuningValue.$Value)) + value = tuningValue.$Value; + else + value *= tuningValue.$Percent; + + return value; + }, + $Opacity: function (value, tuningValue) { + return this.$Default(value - 1, tuningValue); + } + }; + _CaptionTuningTransfer.$Zoom = _CaptionTuningTransfer.$Opacity; + + $JssorAnimator$.call(_Self, 0, 0); + + function GetCaptionItems(element, level) { + + var itemsToPlay = []; + var lastTransitionName; + var namedTransitions = []; + var namedTransitionOrders = []; + + //$JssorDebug$.$Execute(function () { + + // var debugInfoElement = $Jssor$.$GetElement("debugInfo"); + + // if (debugInfoElement && playIn) { + + // var text = $Jssor.$InnerHtml(debugInfoElement) + "
      "; + + // $Jssor$.$InnerHtml(debugInfoElement, text); + // } + //}); + + function FetchRawTransition(captionElmt, index) { + var rawTransition = {}; + + $Jssor$.$Each(_CaptionTuningFetcher, function (fetchAttribute, fetchProperty) { + var attributeValue = $Jssor$.$AttributeEx(captionElmt, fetchAttribute + (index || "")); + if (attributeValue) { + var propertyValue = {}; + + if (fetchAttribute == "t") { + //if (($Jssor$.$IsBrowserChrome() || $Jssor$.$IsBrowserSafari() || $Jssor$.$IsBrowserFireFox()) && attributeValue == "*") { + // attributeValue = Math.floor(Math.random() * captionSlideOptions.$CaptionTransitions.length); + // $Jssor$.$Attribute(captionElmt, fetchAttribute + (index || ""), attributeValue); + //} + + propertyValue.$Value = attributeValue; + } + else if (attributeValue.indexOf("%") + 1) + propertyValue.$Percent = $Jssor$.$ParseFloat(attributeValue) / 100; + else + propertyValue.$Value = $Jssor$.$ParseFloat(attributeValue); + + rawTransition[fetchProperty] = propertyValue; + } + }); + + return rawTransition; + } + + function GetRandomTransition() { + return _CaptionTransitions[Math.floor(Math.random() * _CaptionTransitions.length)]; + } + + function EvaluateCaptionTransition(transitionName) { + + var transition; + + if (transitionName == "*") { + transition = GetRandomTransition(); + } + else if (transitionName) { + + //indexed transition allowed, just the same as named transition + var tempTransition = _CaptionTransitions[$Jssor$.$ParseInt(transitionName)] || _CaptionTransitions[transitionName]; + + if ($Jssor$.$IsArray(tempTransition)) { + if (transitionName != lastTransitionName) { + lastTransitionName = transitionName; + namedTransitionOrders[transitionName] = 0; + + namedTransitions[transitionName] = tempTransition[Math.floor(Math.random() * tempTransition.length)]; + } + else { + namedTransitionOrders[transitionName]++; + } + + tempTransition = namedTransitions[transitionName]; + + if ($Jssor$.$IsArray(tempTransition)) { + tempTransition = tempTransition.length && tempTransition[namedTransitionOrders[transitionName] % tempTransition.length]; + + if ($Jssor$.$IsArray(tempTransition)) { + //got transition from array level 3, random for all captions + tempTransition = tempTransition[Math.floor(Math.random() * tempTransition.length)]; + } + //else { + // //got transition from array level 2, in sequence for all adjacent captions with same name specified + // transition = tempTransition; + //} + } + //else { + // //got transition from array level 1, random but same for all adjacent captions with same name specified + // transition = tempTransition; + //} + } + //else { + // //got transition directly from a simple transition object + // transition = tempTransition; + //} + + transition = tempTransition; + + if ($Jssor$.$IsString(transition)) + transition = EvaluateCaptionTransition(transition); + } + + return transition; + } + + var captionElmts = $Jssor$.$Children(element); + $Jssor$.$Each(captionElmts, function (captionElmt, i) { + + var transitionsWithTuning = []; + transitionsWithTuning.$Elmt = captionElmt; + var isCaption = $Jssor$.$AttributeEx(captionElmt, "u") == "caption"; + + $Jssor$.$Each(playIn ? [0, 3] : [2], function (j, k) { + + if (isCaption) { + var transition; + var rawTransition; + + if (j != 2 || !$Jssor$.$AttributeEx(captionElmt, "t3")) { + rawTransition = FetchRawTransition(captionElmt, j); + + if (j == 2 && !rawTransition.$Transition) { + rawTransition.$Delay = rawTransition.$Delay || { $Value: 0 }; + rawTransition = $Jssor$.$Extend(FetchRawTransition(captionElmt, 0), rawTransition); + } + } + + if (rawTransition && rawTransition.$Transition) { + + transition = EvaluateCaptionTransition(rawTransition.$Transition.$Value); + + if (transition) { + + //var transitionWithTuning = $Jssor$.$Extend({ $Delay: 0, $ScaleHorizontal: 1, $ScaleVertical: 1 }, transition); + var transitionWithTuning = $Jssor$.$Extend({ $Delay: 0 }, transition); + + $Jssor$.$Each(rawTransition, function (rawPropertyValue, propertyName) { + var tuningPropertyValue = (_CaptionTuningTransfer[propertyName] || _CaptionTuningTransfer.$Default).apply(_CaptionTuningTransfer, [transitionWithTuning[propertyName], rawTransition[propertyName]]); + if (!isNaN(tuningPropertyValue)) + transitionWithTuning[propertyName] = tuningPropertyValue; + }); + + if (!k) { + if (rawTransition.$BeginTime) + transitionWithTuning.$BeginTime = rawTransition.$BeginTime.$Value || 0; + else if ((_PlayMode) & 2) + transitionWithTuning.$BeginTime = 0; + } + } + } + + transitionsWithTuning.push(transitionWithTuning); + } + + if ((level % 2) && !k) { + //transitionsWithTuning.$Children = GetCaptionItems(captionElmt, lastTransitionName, [].concat(namedTransitions), [].concat(namedTransitionOrders), level + 1); + transitionsWithTuning.$Children = GetCaptionItems(captionElmt, level + 1); + } + }); + + itemsToPlay.push(transitionsWithTuning); + }); + + return itemsToPlay; + } + + function CreateAnimator(item, transition, immediateOut) { + + var animatorOptions = { + $Easing: transition.$Easing, + $Round: transition.$Round, + $During: transition.$During, + $Reverse: playIn && !immediateOut//, + //$Optimize: true + }; + + $JssorDebug$.$Execute(function () { + animatorOptions.$CaptionAnimator = true; + }); + + var captionItem = item; + var captionParent = $Jssor$.$ParentNode(item); + + var captionItemWidth = $Jssor$.$CssWidth(captionItem); + var captionItemHeight = $Jssor$.$CssHeight(captionItem); + var captionParentWidth = $Jssor$.$CssWidth(captionParent); + var captionParentHeight = $Jssor$.$CssHeight(captionParent); + + //var toStyles = {}; + var fromStyles = {}; + var difStyles = {}; + var scaleClip = transition.$ScaleClip || 1; + + //Opacity + if (transition.$Opacity) { + ///toStyles.$Opacity = 2 - transition.$Opacity; + difStyles.$Opacity = 1 - transition.$Opacity; + } + + animatorOptions.$OriginalWidth = captionItemWidth; + animatorOptions.$OriginalHeight = captionItemHeight; + + //Transform + if (transition.$Zoom || transition.$Rotate) { + //toStyles.$Zoom = transition.$Zoom ? transition.$Zoom - 1 : 1; + difStyles.$Zoom = (transition.$Zoom || 2) - 2; + + if ($Jssor$.$IsBrowserIe9Earlier() || $Jssor$.$IsBrowserOpera()) { + //toStyles.$Zoom = Math.min(toStyles.$Zoom, 2); + difStyles.$Zoom = Math.min(difStyles.$Zoom, 1); + } + + fromStyles.$Zoom = 1; + + var rotate = transition.$Rotate || 0; + + //toStyles.$Rotate = rotate * 360; + difStyles.$Rotate = rotate * 360; + fromStyles.$Rotate = 0; + } + //Clip + else if (transition.$Clip) { + var fromStyleClip = { $Top: 0, $Right: captionItemWidth, $Bottom: captionItemHeight, $Left: 0 }; + var toStyleClip = $Jssor$.$Extend({}, fromStyleClip); + + var blockOffset = toStyleClip.$Offset = {}; + + var topBenchmark = transition.$Clip & 4; + var bottomBenchmark = transition.$Clip & 8; + var leftBenchmark = transition.$Clip & 1; + var rightBenchmark = transition.$Clip & 2; + + if (topBenchmark && bottomBenchmark) { + blockOffset.$Top = captionItemHeight / 2 * scaleClip; + blockOffset.$Bottom = -blockOffset.$Top; + } + else if (topBenchmark) + blockOffset.$Bottom = -captionItemHeight * scaleClip; + else if (bottomBenchmark) + blockOffset.$Top = captionItemHeight * scaleClip; + + if (leftBenchmark && rightBenchmark) { + blockOffset.$Left = captionItemWidth / 2 * scaleClip; + blockOffset.$Right = -blockOffset.$Left; + } + else if (leftBenchmark) + blockOffset.$Right = -captionItemWidth * scaleClip; + else if (rightBenchmark) + blockOffset.$Left = captionItemWidth * scaleClip; + + animatorOptions.$Move = transition.$Move; + //toStyles.$Clip = toStyleClip; + difStyles.$Clip = toStyleClip; + fromStyles.$Clip = fromStyleClip; + } + + //Fly + { + var toLeft = 0; + var toTop = 0; + + if (transition.x) + toLeft -= captionParentWidth * transition.x; + + if (transition.y) + toTop -= captionParentHeight * transition.y; + + if (toLeft || toTop || animatorOptions.$Move) { + //toStyles.$Left = toLeft + $Jssor$.$CssLeft(captionItem); + //toStyles.$Top = toTop + $Jssor$.$CssTop(captionItem); + difStyles.$Left = toLeft; + difStyles.$Top = toTop; + } + } + + //duration + var duration = transition.$Duration; + + fromStyles = $Jssor$.$Extend(fromStyles, $Jssor$.$GetStyles(captionItem, difStyles)); + + animatorOptions.$Setter = $Jssor$.$StyleSetterEx(); + + return new $JssorAnimator$(transition.$Delay, duration, animatorOptions, captionItem, fromStyles, difStyles); + } + + function CreateAnimators(streamLineLength, captionItems) { + + $Jssor$.$Each(captionItems, function (captionItem, i) { + + $JssorDebug$.$Execute(function () { + if (captionItem.length) { + var top = $Jssor$.$CssTop(captionItem.$Elmt); + var left = $Jssor$.$CssLeft(captionItem.$Elmt); + var width = $Jssor$.$CssWidth(captionItem.$Elmt); + var height = $Jssor$.$CssHeight(captionItem.$Elmt); + + var error = null; + + if (isNaN(top)) + error = "Style 'top' for caption not specified. Please always specify caption like 'position: absolute; top: ...px; left: ...px; width: ...px; height: ...px;'."; + else if (isNaN(left)) + error = "Style 'left' not specified. Please always specify caption like 'position: absolute; top: ...px; left: ...px; width: ...px; height: ...px;'."; + else if (isNaN(width)) + error = "Style 'width' not specified. Please always specify caption like 'position: absolute; top: ...px; left: ...px; width: ...px; height: ...px;'."; + else if (isNaN(height)) + error = "Style 'height' not specified. Please always specify caption like 'position: absolute; top: ...px; left: ...px; width: ...px; height: ...px;'."; + + if (error) + $JssorDebug$.$Error("Caption " + (i + 1) + " definition error, \r\n" + error + "\r\n" + captionItem.$Elmt.outerHTML); + } + }); + + var animator; + var captionElmt = captionItem.$Elmt; + var transition = captionItem[0]; + var transition3 = captionItem[1]; + + if (transition) { + + animator = CreateAnimator(captionElmt, transition); + streamLineLength = animator.$Locate(transition.$BeginTime == undefined ? streamLineLength : transition.$BeginTime, 1); + } + + streamLineLength = CreateAnimators(streamLineLength, captionItem.$Children); + + if (transition3) { + var animator3 = CreateAnimator(captionElmt, transition3, 1); + animator3.$Locate(streamLineLength, 1); + _Self.$Combine(animator3); + _ImmediateOutCaptionHanger.$Combine(animator3); + } + + if (animator) + _Self.$Combine(animator); + }); + + return streamLineLength; + } + + _Self.$Revert = function () { + _Self.$GoToPosition(_Self.$GetPosition_OuterEnd() * (playIn || 0)); + _ImmediateOutCaptionHanger.$GoToBegin(); + }; + + //Constructor + { + _ImmediateOutCaptionHanger = new $JssorAnimator$(0, 0); + + //var streamLineLength = 0; + //var captionItems = GetCaptionItems(container, null, [], [], 1); + + CreateAnimators(0, _PlayMode ? GetCaptionItems(container, 1) : []); + } +}; + +var $JssorCaptionSlideo$ = window.$JssorCaptionSlideo$ = function (container, captionSlideoOptions, playIn) { + $JssorDebug$.$Execute(function () { + if (!captionSlideoOptions.$CaptionTransitions) { + $JssorDebug$.$Error("'$CaptionSlideoOptions' option error, '$CaptionSlideoOptions.$CaptionTransitions' not specified."); + } + else if (!$Jssor$.$IsArray(captionSlideoOptions.$CaptionTransitions)) { + $JssorDebug$.$Error("'$CaptionSlideoOptions' option error, '$CaptionSlideoOptions.$CaptionTransitions' is not an array."); + } + }); + + var _This = this; + + var _CaptionTransitions = captionSlideoOptions.$CaptionTransitions; + + $JssorAnimator$.call(_This, 0, 0); + + function GetCaptionItems(element, level) { + + var itemsToPlay = []; + + var captionElmts = $Jssor$.$Children(element); + $Jssor$.$Each(captionElmts, function (captionElmt, i) { + var isCaption = $Jssor$.$AttributeEx(captionElmt, "u") == "caption"; + if (isCaption) { + var transitionName = $Jssor$.$AttributeEx(captionElmt, "t"); + var transition = _CaptionTransitions[$Jssor$.$ParseInt(transitionName)] || _CaptionTransitions[transitionName]; + + var transitionName2 = $Jssor$.$AttributeEx(captionElmt, "t2"); + var transition2 = _CaptionTransitions[$Jssor$.$ParseInt(transitionName2)] || _CaptionTransitions[transitionName2]; + + var itemToPlay = { $Elmt: captionElmt, $Transition: transition, $Transition2: transition2 }; + if (level < 3) { + itemsToPlay.concat(GetCaptionItems(captionElmt, level + 1)); + } + itemsToPlay.push(itemToPlay); + } + }); + + return itemsToPlay; + } + + function CreateAnimator(captionElmt, transitions, lastStyles, forIn) { + + $Jssor$.$Each(transitions, function (transition) { + + var animatorOptions = { + $Easing: transition.$Easing, + $Round: transition.$Round, + $During: transition.$During, + $Setter: $Jssor$.$StyleSetterEx() + }; + + var fromStyles = $Jssor$.$Extend($Jssor$.$GetStyles(captionItem, transition), lastStyles); + + var animator = new $JssorAnimator$(transition.$Begin || 0, (transition.$End || 0) - (transition.$Begin || 0), animatorOptions, captionElmt, fromStyles, transition); + + !forIn == !playIn && _This.$Combine(animator); + + var castOptions; + //castOptions = { $Move: slideTransition.$Move, $OriginalWidth: slideContainerWidth, $OriginalHeight: slideContainerHeight }; + + lastStyles = $Jssor$.$Extend(lastStyles, $Jssor$.$Cast(fromStyles, transition, 1, animatorOptions.$Easing, animatorOptions.$During, animatorOptions.$Round, animatorOptions, castOptions)); + }); + + return lastStyles; + } + + function CreateAnimators(captionItems) { + + $Jssor$.$Each(captionItems, function (captionItem, i) { + + $JssorDebug$.$Execute(function () { + if (captionItem.length) { + var top = $Jssor$.$CssTop(captionItem.$Elmt); + var left = $Jssor$.$CssLeft(captionItem.$Elmt); + var width = $Jssor$.$CssWidth(captionItem.$Elmt); + var height = $Jssor$.$CssHeight(captionItem.$Elmt); + + var error = null; + + if (isNaN(top)) + error = "style 'top' not specified"; + else if (isNaN(left)) + error = "style 'left' not specified"; + else if (isNaN(width)) + error = "style 'width' not specified"; + else if (isNaN(height)) + error = "style 'height' not specified"; + + if (error) + throw new Error("Caption " + (i + 1) + " definition error, " + error + ".\r\n" + captionItem.$Elmt.outerHTML); + } + }); + + var captionElmt = captionItem.$Elmt; + + var captionItemWidth = $Jssor$.$CssWidth(captionItem); + var captionItemHeight = $Jssor$.$CssHeight(captionItem); + var captionParentWidth = $Jssor$.$CssWidth(captionParent); + var captionParentHeight = $Jssor$.$CssHeight(captionParent); + + var lastStyles = { $Zoom: 1, $Rotate: 0, $Clip: { $Top: 0, $Right: captionItemWidth, $Bottom: captionItemHeight, $Left: 0 } }; + + lastStyles = CreateAnimator(captionElmt, captionItem.$Transition, lastStyles, true); + CreateAnimator(captionElmt, captionItem.$Transition2, lastStyles, false); + }); + } + + _This.$Revert = function () { + _This.$GoToPosition(-1, true); + } + + //Constructor + { + CreateAnimators(GetCaptionItems(container, 1)); + } +}; + +//Event Table + +//$EVT_CLICK = 21; function(slideIndex[, event]) +//$EVT_DRAG_START = 22; function(position[, virtualPosition, event]) +//$EVT_DRAG_END = 23; function(position, startPosition[, virtualPosition, virtualStartPosition, event]) +//$EVT_SWIPE_START = 24; function(position[, virtualPosition]) +//$EVT_SWIPE_END = 25; function(position[, virtualPosition]) + +//$EVT_LOAD_START = 26; function(slideIndex) +//$EVT_LOAD_END = 27; function(slideIndex) + +//$EVT_POSITION_CHANGE = 202; function(position, fromPosition[, virtualPosition, virtualFromPosition]) +//$EVT_PARK = 203; function(slideIndex, fromIndex) + +//$EVT_PROGRESS_CHANGE = 208; function(slideIndex, progress[, progressBegin, idleBegin, idleEnd, progressEnd]) +//$EVT_STATE_CHANGE = 209; function(slideIndex, progress[, progressBegin, idleBegin, idleEnd, progressEnd]) + +//$EVT_ROLLBACK_START = 210; function(slideIndex, progress[, progressBegin, idleBegin, idleEnd, progressEnd]) +//$EVT_ROLLBACK_END = 211; function(slideIndex, progress[, progressBegin, idleBegin, idleEnd, progressEnd]) + +//$EVT_SLIDESHOW_START = 206; function(slideIndex[, progressBegin, slideshowBegin, slideshowEnd, progressEnd]) +//$EVT_SLIDESHOW_END = 207; function(slideIndex[, progressBegin, slideshowBegin, slideshowEnd, progressEnd]) + +//http://www.jssor.com/development/reference-api.html \ No newline at end of file diff --git a/spree_theme/app/assets/javascripts/jssor.slider.20.min.js b/spree_theme/app/assets/javascripts/jssor.slider.20.min.js new file mode 100644 index 00000000..ad8b7fef --- /dev/null +++ b/spree_theme/app/assets/javascripts/jssor.slider.20.min.js @@ -0,0 +1,2 @@ +(function(k,f,c,j,d,l,g){/*! Jssor */ +new(function(){this.$DebugMode=d;this.$Log=function(c,d){var a=k.console||{},b=this.$DebugMode;if(b&&a.log)a.log(c);else b&&d&&alert(c)};this.$Error=function(b,d){var c=k.console||{},a=this.$DebugMode;if(a&&c.error)c.error(b);else a&&alert(b);if(a)throw d||new Error(b);};this.$Fail=function(a){throw new Error(a);};this.$Assert=function(b,c){var a=this.$DebugMode;if(a)if(!b)throw new Error("Assert failed "+c||"");};this.$Trace=function(c){var a=k.console||{},b=this.$DebugMode;b&&a.log&&a.log(c)};this.$Execute=function(b){var a=this.$DebugMode;a&&b()};this.$LiveStamp=function(c,d){var b=this.$DebugMode;if(b){var a=f.createElement("DIV");a.setAttribute("id",d);c.$Live=a}};this.$C_AbstractProperty=function(){throw new Error("The property is abstract, it should be implemented by subclass.");};this.$C_AbstractMethod=function(){throw new Error("The method is abstract, it should be implemented by subclass.");};function a(b){if(b.constructor===a.caller)throw new Error("Cannot create instance of an abstract class.");}this.$C_AbstractClass=a});var e=k.$JssorEasing$={$EaseSwing:function(a){return-c.cos(a*c.PI)/2+.5},$EaseLinear:function(a){return a},$EaseInQuad:function(a){return a*a},$EaseOutQuad:function(a){return-a*(a-2)},$EaseInOutQuad:function(a){return(a*=2)<1?1/2*a*a:-1/2*(--a*(a-2)-1)},$EaseInCubic:function(a){return a*a*a},$EaseOutCubic:function(a){return(a-=1)*a*a+1},$EaseInOutCubic:function(a){return(a*=2)<1?1/2*a*a*a:1/2*((a-=2)*a*a+2)},$EaseInQuart:function(a){return a*a*a*a},$EaseOutQuart:function(a){return-((a-=1)*a*a*a-1)},$EaseInOutQuart:function(a){return(a*=2)<1?1/2*a*a*a*a:-1/2*((a-=2)*a*a*a-2)},$EaseInQuint:function(a){return a*a*a*a*a},$EaseOutQuint:function(a){return(a-=1)*a*a*a*a+1},$EaseInOutQuint:function(a){return(a*=2)<1?1/2*a*a*a*a*a:1/2*((a-=2)*a*a*a*a+2)},$EaseInSine:function(a){return 1-c.cos(a*c.PI/2)},$EaseOutSine:function(a){return c.sin(a*c.PI/2)},$EaseInOutSine:function(a){return-1/2*(c.cos(c.PI*a)-1)},$EaseInExpo:function(a){return a==0?0:c.pow(2,10*(a-1))},$EaseOutExpo:function(a){return a==1?1:-c.pow(2,-10*a)+1},$EaseInOutExpo:function(a){return a==0||a==1?a:(a*=2)<1?1/2*c.pow(2,10*(a-1)):1/2*(-c.pow(2,-10*--a)+2)},$EaseInCirc:function(a){return-(c.sqrt(1-a*a)-1)},$EaseOutCirc:function(a){return c.sqrt(1-(a-=1)*a)},$EaseInOutCirc:function(a){return(a*=2)<1?-1/2*(c.sqrt(1-a*a)-1):1/2*(c.sqrt(1-(a-=2)*a)+1)},$EaseInElastic:function(a){if(!a||a==1)return a;var b=.3,d=.075;return-(c.pow(2,10*(a-=1))*c.sin((a-d)*2*c.PI/b))},$EaseOutElastic:function(a){if(!a||a==1)return a;var b=.3,d=.075;return c.pow(2,-10*a)*c.sin((a-d)*2*c.PI/b)+1},$EaseInOutElastic:function(a){if(!a||a==1)return a;var b=.45,d=.1125;return(a*=2)<1?-.5*c.pow(2,10*(a-=1))*c.sin((a-d)*2*c.PI/b):c.pow(2,-10*(a-=1))*c.sin((a-d)*2*c.PI/b)*.5+1},$EaseInBack:function(a){var b=1.70158;return a*a*((b+1)*a-b)},$EaseOutBack:function(a){var b=1.70158;return(a-=1)*a*((b+1)*a+b)+1},$EaseInOutBack:function(a){var b=1.70158;return(a*=2)<1?1/2*a*a*(((b*=1.525)+1)*a-b):1/2*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)},$EaseInBounce:function(a){return 1-e.$EaseOutBounce(1-a)},$EaseOutBounce:function(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},$EaseInOutBounce:function(a){return a<1/2?e.$EaseInBounce(a*2)*.5:e.$EaseOutBounce(a*2-1)*.5+.5},$EaseGoBack:function(a){return 1-c.abs(2-1)},$EaseInWave:function(a){return 1-c.cos(a*c.PI*2)},$EaseOutWave:function(a){return c.sin(a*c.PI*2)},$EaseOutJump:function(a){return 1-((a*=2)<1?(a=1-a)*a*a:(a-=1)*a*a)},$EaseInJump:function(a){return(a*=2)<1?a*a*a:(a=2-a)*a*a}},h=k.$Jease$={$Swing:e.$EaseSwing,$Linear:e.$EaseLinear,$InQuad:e.$EaseInQuad,$OutQuad:e.$EaseOutQuad,$InOutQuad:e.$EaseInOutQuad,$InCubic:e.$EaseInCubic,$OutCubic:e.$EaseOutCubic,$InOutCubic:e.$EaseInOutCubic,$InQuart:e.$EaseInQuart,$OutQuart:e.$EaseOutQuart,$InOutQuart:e.$EaseInOutQuart,$InQuint:e.$EaseInQuint,$OutQuint:e.$EaseOutQuint,$InOutQuint:e.$EaseInOutQuint,$InSine:e.$EaseInSine,$OutSine:e.$EaseOutSine,$InOutSine:e.$EaseInOutSine,$InExpo:e.$EaseInExpo,$OutExpo:e.$EaseOutExpo,$InOutExpo:e.$EaseInOutExpo,$InCirc:e.$EaseInCirc,$OutCirc:e.$EaseOutCirc,$InOutCirc:e.$EaseInOutCirc,$InElastic:e.$EaseInElastic,$OutElastic:e.$EaseOutElastic,$InOutElastic:e.$EaseInOutElastic,$InBack:e.$EaseInBack,$OutBack:e.$EaseOutBack,$InOutBack:e.$EaseInOutBack,$InBounce:e.$EaseInBounce,$OutBounce:e.$EaseOutBounce,$InOutBounce:e.$EaseInOutBounce,$GoBack:e.$EaseGoBack,$InWave:e.$EaseInWave,$OutWave:e.$EaseOutWave,$OutJump:e.$EaseOutJump,$InJump:e.$EaseInJump};k.$JssorDirection$={$TO_LEFT:1,$TO_RIGHT:2,$TO_TOP:4,$TO_BOTTOM:8,$HORIZONTAL:3,$VERTICAL:12,$GetDirectionHorizontal:function(a){return a&3},$GetDirectionVertical:function(a){return a&12},$IsHorizontal:function(a){return a&3},$IsVertical:function(a){return a&12}};var b=k.$Jssor$=new function(){var h=this,Ab=/\S+/g,L=1,jb=2,nb=3,mb=4,rb=5,M,s=0,i=0,t=0,z=0,A=0,D=navigator,vb=D.appName,o=D.userAgent,y=f.documentElement,q=parseFloat;function Jb(){if(!M){M={$Touchable:"ontouchstart"in k||"createTouch"in f};var a;if(D.pointerEnabled||(a=D.msPointerEnabled))M.$TouchActionAttr=a?"msTouchAction":"touchAction"}return M}function v(h){if(!s){s=-1;if(vb=="Microsoft Internet Explorer"&&!!k.attachEvent&&!!k.ActiveXObject){var e=o.indexOf("MSIE");s=L;t=q(o.substring(e+5,o.indexOf(";",e)));/*@cc_on z=@_jscript_version@*/;i=f.documentMode||t}else if(vb=="Netscape"&&!!k.addEventListener){var d=o.indexOf("Firefox"),b=o.indexOf("Safari"),g=o.indexOf("Chrome"),c=o.indexOf("AppleWebKit");if(d>=0){s=jb;i=q(o.substring(d+8))}else if(b>=0){var j=o.substring(0,b).lastIndexOf("/");s=g>=0?mb:nb;i=q(o.substring(j+1,b))}else{var a=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/i.exec(o);if(a){s=L;i=t=q(a[1])}}if(c>=0)A=q(o.substring(c+12))}else{var a=/(opera)(?:.*version|)[ \/]([\w.]+)/i.exec(o);if(a){s=rb;i=q(a[2])}}}return h==s}function r(){return v(L)}function T(){return r()&&(i<6||f.compatMode=="BackCompat")}function Bb(){return v(jb)}function lb(){return v(nb)}function Eb(){return v(mb)}function qb(){return v(rb)}function gb(){return lb()&&A>534&&A<535}function H(){v();return A>537||i>42||s==L&&i>=11}function R(){return r()&&i<9}function hb(a){var b,c;return function(f){if(!b){b=d;var e=a.substr(0,1).toUpperCase()+a.substr(1);n([a].concat(["WebKit","ms","Moz","O","webkit"]),function(h,d){var b=a;if(d)b=h+e;if(f.style[b]!=g)return c=b})}return c}}function fb(b){var a;return function(c){a=a||hb(b)(c)||b;return a}}var N=fb("transform");function ub(a){return{}.toString.call(a)}var K;function Gb(){if(!K){K={};n(["Boolean","Number","String","Function","Array","Date","RegExp","Object"],function(a){K["[object "+a+"]"]=a.toLowerCase()})}return K}function n(b,d){var a,c;if(ub(b)=="[object Array]"){for(a=0;a-1;f--){var d=c[f],e=ab(i);x(e,x(d));b.$CssCssText(e,d.style.cssText);b.$InsertBefore(e,d);b.$RemoveElement(d)}return a};function Hb(a){var l=this,p="",r=["av","pv","ds","dn"],e=[],q,k=0,i=0,d=0;function j(){J(a,q,e[d||k||i&2||i]);b.$Css(a,"pointer-events",d?"none":"")}function c(){k=0;j();h.$RemoveEvent(f,"mouseup",c);h.$RemoveEvent(f,"touchend",c);h.$RemoveEvent(f,"touchcancel",c)}function o(a){if(d)h.$CancelEvent(a);else{k=4;j();h.$AddEvent(f,"mouseup",c);h.$AddEvent(f,"touchend",c);h.$AddEvent(f,"touchcancel",c)}}l.$Selected=function(a){if(a===g)return i;i=a&2||a&1;j()};l.$Enable=function(a){if(a===g)return!d;d=a?0:3;j()};l.$Elmt=a=h.$GetElement(a);var m=b.$Split(x(a));if(m)p=m.shift();n(r,function(a){e.push(p+a)});q=eb(" ",e);e.unshift("");h.$AddEvent(a,"mousedown",o);h.$AddEvent(a,"touchstart",o)}h.$Buttonize=function(a){return new Hb(a)};h.$Css=G;h.$CssN=db;h.$CssP=Kb;h.$CssOverflow=m("overflow");h.$CssTop=m("top",2);h.$CssLeft=m("left",2);h.$CssWidth=m("width",2);h.$CssHeight=m("height",2);h.$CssMarginLeft=m("marginLeft",2);h.$CssMarginTop=m("marginTop",2);h.$CssPosition=m("position");h.$CssDisplay=m("display");h.$CssZIndex=m("zIndex",1);h.$CssFloat=function(b,a){return G(b,r()?"styleFloat":"cssFloat",a)};h.$CssOpacity=function(b,a,c){if(a!=g)Fb(b,a,c);else return Db(b)};h.$CssCssText=function(a,b){if(b!=g)a.style.cssText=b;else return a.style.cssText};var X={$Opacity:h.$CssOpacity,$Top:h.$CssTop,$Left:h.$CssLeft,$Width:h.$CssWidth,$Height:h.$CssHeight,$Position:h.$CssPosition,$Display:h.$CssDisplay,$ZIndex:h.$CssZIndex};h.$GetStyles=function(c,b){var a={};n(b,function(d,b){if(X[b])a[b]=X[b](c)});return a};function w(f,l){var e=R(),b=H(),d=gb(),i=N(f);function k(b,d,a){var e=b.$TransformPoint(p(-d/2,-a/2)),f=b.$TransformPoint(p(d/2,-a/2)),g=b.$TransformPoint(p(d/2,a/2)),h=b.$TransformPoint(p(-d/2,a/2));b.$TransformPoint(p(300,300));return p(c.min(e.x,f.x,g.x,h.x)+d/2,c.min(e.y,f.y,g.y,h.y)+a/2)}function a(d,a){a=a||{};var f=a.$TranslateZ||0,l=(a.$RotateX||0)%360,m=(a.$RotateY||0)%360,o=(a.$Rotate||0)%360,p=a.$ScaleZ;if(e){f=0;l=0;m=0;p=0}var c=new Cb(a.$TranslateX,a.$TranslateY,f);c.$RotateX(l);c.$RotateY(m);c.$RotateZ(o);c.$Skew(a.$SkewX,a.$SkewY);c.$Scale(a.$ScaleX,a.$ScaleY,p);if(b){c.$Move(a.$MoveX,a.$MoveY);d.style[i]=c.$Format3d()}else if(!z||z<9){var j="";if(o||a.$ScaleX!=g&&a.$ScaleX!=1||a.$ScaleY!=g&&a.$ScaleY!=1){var n=k(c,a.$OriginalWidth,a.$OriginalHeight);h.$CssMarginTop(d,n.y);h.$CssMarginLeft(d,n.x);j=c.$Format2d()}var r=d.style.filter,s=new RegExp(/[\s]*progid:DXImageTransform\.Microsoft\.Matrix\([^\)]*\)/g),q=C(r,[s],j);U(d,q)}}w=function(e,c){c=c||{};var i=c.$MoveX,k=c.$MoveY,f;n(X,function(a,b){f=c[b];f!==g&&a(e,f)});h.$SetStyleClip(e,c.$Clip);if(!b){i!=g&&h.$CssLeft(e,c.$OriginalX+i);k!=g&&h.$CssTop(e,c.$OriginalY+k)}if(c.$Transform)if(d)yb(h.$CreateCallback(j,P,e,c));else a(e,c)};h.$SetStyleTransform=P;if(d)h.$SetStyleTransform=w;if(e)h.$SetStyleTransform=a;else if(!b)a=P;h.$SetStyles=w;w(f,l)}h.$SetStyleTransform=w;h.$SetStyles=w;function Cb(k,l,p){var d=this,b=[1,0,0,0,0,1,0,0,0,0,1,0,k||0,l||0,p||0,1],i=c.sin,h=c.cos,m=c.tan;function f(a){return a*c.PI/180}function o(a,b){return{x:a,y:b}}function n(b,c,f,g,i,l,n,o,q,t,u,w,y,A,C,F,a,d,e,h,j,k,m,p,r,s,v,x,z,B,D,E){return[b*a+c*j+f*r+g*z,b*d+c*k+f*s+g*B,b*e+c*m+f*v+g*D,b*h+c*p+f*x+g*E,i*a+l*j+n*r+o*z,i*d+l*k+n*s+o*B,i*e+l*m+n*v+o*D,i*h+l*p+n*x+o*E,q*a+t*j+u*r+w*z,q*d+t*k+u*s+w*B,q*e+t*m+u*v+w*D,q*h+t*p+u*x+w*E,y*a+A*j+C*r+F*z,y*d+A*k+C*s+F*B,y*e+A*m+C*v+F*D,y*h+A*p+C*x+F*E]}function e(c,a){return n.apply(j,(a||b).concat(c))}d.$Matrix=function(){return b};d.$Scale=function(a,c,d){if(a==g)a=1;if(c==g)c=1;if(d==g)d=1;if(a!=1||c!=1||d!=1)b=e([a,0,0,0,0,c,0,0,0,0,d,0,0,0,0,1])};d.$Translate=function(a,c,d){if(a||c||d)b=e([1,0,0,0,0,1,0,0,0,0,1,0,a||0,c||0,d||0,1])};d.$Move=function(a,c,d){b[12]+=a||0;b[13]+=c||0;b[14]+=d||0};d.$RotateX=function(c){if(c){a=f(c);var d=h(a),g=i(a);b=e([1,0,0,0,0,d,g,0,0,-g,d,0,0,0,0,1])}};d.$RotateY=function(c){if(c){a=f(c);var d=h(a),g=i(a);b=e([d,0,-g,0,0,1,0,0,g,0,d,0,0,0,0,1])}};d.$RotateZ=function(c){if(c){a=f(c);var d=h(a),g=i(a);b=e([d,g,0,0,-g,d,0,0,0,0,1,0,0,0,0,1])}};d.$Skew=function(a,c){if(a||c){k=f(a);l=f(c);b=e([1,m(l),0,0,m(k),1,0,0,0,0,1,0,0,0,0,1])}};d.$TransformPoint=function(c){var a=e(b,[1,0,0,0,0,1,0,0,0,0,1,0,c.x,c.y,0,1]);return o(a[12],a[13])};d.$Format3d=function(){return"matrix3d("+b.join(",")+")"};d.$Format2d=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+b[0]+", M12="+b[4]+", M21="+b[1]+", M22="+b[5]+", SizingMethod='auto expand')"}}new(function(){var a=this;function b(d,g){for(var j=d[0].length,i=d.length,h=g[0].length,f=[],c=0;c=e||j<=f))j=((j-f)%p+p)%p+f;if(!D||v||g!=j){var k=c.min(j,e);k=c.max(k,f);if(!D||v||k!=m){if(J){var l=(k-i)/(C||1);if(h.$Reverse)l=1-l;var n=b.$Cast(O,J,l,H,G,I,h);if(x)b.$Each(n,function(b,a){x[a]&&x[a](L,b)});else b.$SetStyles(L,n)}a.$OnInnerOffsetChange(m-i,k-i);m=k;b.$Each(w,function(b,c){var a=o=n*o)a=n;u(a);if(!v&&a*o>=n*o)M(B);else r(K)}}function t(h,i,j){if(!q){q=d;v=j;B=i;h=c.max(h,f);h=c.min(h,e);n=h;o=ni&&g<=s};a.$SetLoopLength=function(a){p=a};a.$Shift=P;a.$Join=E;a.$Combine=function(a,b){E(a,0,b)};a.$Chain=function(a){E(a,1)};a.$Expand=function(a){e+=a};a.$GetPosition_InnerBegin=function(){return i};a.$GetPosition_InnerEnd=function(){return s};a.$GetPosition_OuterBegin=function(){return f};a.$GetPosition_OuterEnd=function(){return e};a.$OnPositionChange=a.$OnStart=a.$OnStop=a.$OnInnerOffsetChange=b.$EmptyFunction;a.$Version=b.$GetNow();h=b.$Extend({$Interval:16,$IntervalMax:50},h);p=h.$LoopLength;x=h.$Setter;f=i=z;e=s=z+C;I=h.$Round||{};G=h.$During||{};H=b.$FormatEasings(h.$Easing)};var p=k.$JssorSlideshowFormations$=new function(){var h=this,b=0,a=1,f=2,e=3,s=1,r=2,t=4,q=8,w=256,x=512,v=1024,u=2048,j=u+s,i=u+r,o=x+s,m=x+r,n=w+t,k=w+q,l=v+t,p=v+q;function y(a){return(a&r)==r}function z(a){return(a&t)==t}function g(b,a,c){c.push(a);b[a]=b[a]||[];b[a].push(c)}h.$FormationStraight=function(f){for(var d=f.$Cols,e=f.$Rows,s=f.$Assembly,t=f.$Count,r=[],a=0,b=0,p=d-1,q=e-1,h=t-1,c,b=0;b=0&&c=0&&h=0&&c=0&&df||d>h){switch(e){case j:case m:a++;break;case k:case l:case o:case i:b++;break;case p:case n:default:a--}if(a<0||b<0||a>f||b>h){switch(e){case j:case m:a=f;b++;break;case o:case i:b=h;a++;break;case k:case l:b=h;a--;break;case p:case n:default:a=0;b++}if(b>h)b=h;else if(b<0)b=0;else if(a>f)a=f;else if(a<0)a=0}d=b;c=a}}return r};h.$FormationSquare=function(i){var a=i.$Cols||1,b=i.$Rows||1,j=[],d,e,f,h,k;f=ab?(a-b)/2:0;k=c.round(c.max(a/2,b/2))+1;for(d=0;d1||a.$Clip;if(a.$Zoom||a.$Rotate){var H=d;if(b.$IsBrowserIe9Earlier())if(a.$Cols*a.$Rows>1)H=l;else I=l;if(H){e.$Zoom=a.$Zoom?a.$Zoom-1:1;f.$Zoom=1;if(b.$IsBrowserIe9Earlier()||b.$IsBrowserOpera())e.$Zoom=c.min(e.$Zoom,2);var N=a.$Rotate||0;e.$Rotate=N*360*(x?-1:1);f.$Rotate=0}}if(I){var h=u.$Offset={};if(a.$Clip){var w=a.$ScaleClip||1;if(C&&z){h.$Top=g.$Height/2*w;h.$Bottom=-h.$Top}else if(C)h.$Bottom=-g.$Height*w;else if(z)h.$Top=g.$Height*w;if(B&&A){h.$Left=g.$Width/2*w;h.$Right=-h.$Left}else if(B)h.$Right=-g.$Width*w;else if(A)h.$Left=g.$Width*w}s.$Clip=u;f.$Clip=g[t]}var L=n?1:-1,M=p?1:-1;if(a.x)e.$MoveX+=o*a.x*L;if(a.y)e.$MoveY+=m*a.y*M;b.$Each(e,function(a,c){if(b.$IsNumeric(a))if(a!=f[c])s[c]=a-f[c]});v[t]=k?f:e;var D=a.$FramesCount,y=c.round(j*a.$Delay/a.$Interval);i[t]=new Array(y);i[t].$Min=y;i[t].$Max=y+D-1;for(var F=0;F<=D;F++){var E=b.$Cast(f,s,F/D,a.$Easing,a.$During,a.$Round,{$Move:a.$Move,$OriginalWidth:o,$OriginalHeight:m});E.$ZIndex=E.$ZIndex||1;i[t].push(E)}})});p.reverse();b.$Each(p,function(a){b.$Each(a,function(c){var f=c[0],e=c[1],d=f+","+e,a=h;if(e||f)a=b.$CloneNode(h);b.$SetStyles(a,v[d]);b.$CssOverflow(a,"hidden");b.$CssPosition(a,"absolute");B.$AddClipElement(a);n[d]=a;b.$ShowElement(a,!k)})})}function w(){var b=this,c=0;m.call(b,0,v);b.$OnPositionChange=function(d,b){if(b-c>h){c=b;a&&a.$ShowFrame(b);g&&g.$ShowFrame(b)}};b.$Transition=r}f.$GetTransition=function(){var a=0,b=u.$Transitions,d=b.length;if(x)a=y++%d;else a=c.floor(c.random()*d);b[a]&&(b[a].$Index=a);return b[a]};f.$Initialize=function(w,x,l,m,b){r=b;b=i(b,h);var j=m.$Item,e=l.$Item;j["no-image"]=!m.$Image;e["no-image"]=!l.$Image;var n=j,p=e,u=b,d=b.$Brother||i({},h);if(!b.$SlideOut){n=e;p=j}var t=d.$Shift||0;g=new o(k,p,d,c.max(t-d.$Interval,0),s,q);a=new o(k,n,u,c.max(d.$Interval-t,0),s,q);g.$ShowFrame(0);a.$ShowFrame(0);v=c.max(g.$EndTime,a.$EndTime);f.$Index=w};f.$Clear=function(){k.$Clear();g=j;a=j};f.$GetProcessor=function(){var b=j;if(a)b=new w;return b};if(b.$IsBrowserIe9Earlier()||b.$IsBrowserOpera()||z&&b.$WebKitVersion()<537)h=16;n.call(f);m.call(f,-1e7,1e7)};var i=k.$JssorSlider$=function(p,hc){var h=this;function Fc(){var a=this;m.call(a,-1e8,2e8);a.$GetCurrentSlideInfo=function(){var b=a.$GetPosition_Display(),d=c.floor(b),f=t(d),e=b-c.floor(b);return{$Index:f,$VirtualIndex:d,$Position:e}};a.$OnPositionChange=function(b,a){var e=c.floor(a);if(e!=a&&a>b)e++;Wb(e,d);h.$TriggerEvent(i.$EVT_POSITION_CHANGE,t(a),t(b),a,b)}}function Ec(){var a=this;m.call(a,0,0,{$LoopLength:r});b.$Each(C,function(b){D&1&&b.$SetLoopLength(r);a.$Chain(b);b.$Shift(fb/dc)})}function Dc(){var a=this,b=Vb.$Elmt;m.call(a,-1,2,{$Easing:e.$EaseLinear,$Setter:{$Position:bc},$LoopLength:r},b,{$Position:1},{$Position:-2});a.$Wrapper=b}function rc(o,n){var b=this,e,f,g,k,c;m.call(b,-1e8,2e8,{$IntervalMax:100});b.$OnStart=function(){O=d;R=j;h.$TriggerEvent(i.$EVT_SWIPE_START,t(w.$GetPosition()),w.$GetPosition())};b.$OnStop=function(){O=l;k=l;var a=w.$GetCurrentSlideInfo();h.$TriggerEvent(i.$EVT_SWIPE_END,t(w.$GetPosition()),w.$GetPosition());!a.$Position&&Hc(a.$VirtualIndex,s)};b.$OnPositionChange=function(i,h){var b;if(k)b=c;else{b=f;if(g){var d=h/g;b=a.$SlideEasing(d)*(f-e)+e}}w.$GoToPosition(b)};b.$PlayCarousel=function(a,d,c,h){e=a;f=d;g=c;w.$GoToPosition(a);b.$GoToPosition(0);b.$PlayToPosition(c,h)};b.$StandBy=function(a){k=d;c=a;b.$Play(a,j,d)};b.$SetStandByPosition=function(a){c=a};b.$MoveCarouselTo=function(a){w.$GoToPosition(a)};w=new Fc;w.$Combine(o);w.$Combine(n)}function sc(){var c=this,a=Zb();b.$CssZIndex(a,0);b.$Css(a,"pointerEvents","none");c.$Elmt=a;c.$AddClipElement=function(c){b.$AppendChild(a,c);b.$ShowElement(a)};c.$Clear=function(){b.$HideElement(a);b.$Empty(a)}}function Bc(k,f){var e=this,q,H,x,o,y=[],w,B,W,G,Q,F,g,v,p,eb;m.call(e,-u,u+1,{$SlideItemAnimator:d});function E(a){q&&q.$Revert();T(k,a,0);F=d;q=new I.$Class(k,I,b.$ParseFloat(b.$AttributeEx(k,"idle"))||qc);q.$GoToPosition(0)}function Y(){q.$VersionK||c>J)){var j=l,q=K/J*c/g;if(a.$FillMode&1)j=q>1;else if(a.$FillMode&2)j=q<1;m=j?g*J/c:K;k=j?J:c*K/g}b.$CssWidth(o,m);b.$CssHeight(o,k);b.$CssTop(o,(J-k)/2);b.$CssLeft(o,(K-m)/2)}b.$CssPosition(o,"absolute");h.$TriggerEvent(i.$EVT_LOAD_END,f)}}b.$HideElement(r);p&&p(e)}function X(b,c,d,g){if(g==R&&s==f&&P)if(!Gc){var a=t(b);A.$Initialize(a,f,c,e,d);c.$HideContentForSlideshow();U.$Shift(a-U.$GetPosition_OuterBegin()-1);U.$GoToPosition(a);z.$PlayCarousel(b,b,0)}}function ab(b){if(b==R&&s==f){if(!g){var a=j;if(A)if(A.$Index==f)a=A.$GetProcessor();else A.$Clear();Y();g=new zc(k,f,a,q);g.$SetPlayer(p)}!g.$IsPlaying()&&g.$Replay()}}function S(d,h,l){if(d==f){if(d!=h)C[h]&&C[h].$ParkOut();else!l&&g&&g.$AdjustIdleOnPark();p&&p.$Enable();var m=R=b.$GetNow();e.$LoadImage(b.$CreateCallback(j,ab,m))}else{var k=c.min(f,d),i=c.max(f,d),o=c.min(i-k,k+r-i),n=u+a.$LazyLoading-1;(!Q||o<=n)&&e.$LoadImage()}}function bb(){if(s==f&&g){g.$Stop();p&&p.$Quit();p&&p.$Disable();g.$OpenSlideshowPanel()}}function db(){s==f&&g&&g.$Stop()}function Z(a){!M&&h.$TriggerEvent(i.$EVT_CLICK,f,a)}function O(){p=v.pInstance;g&&g.$SetPlayer(p)}e.$LoadImage=function(c,a){a=a||x;if(y.length&&!G){b.$ShowElement(a);if(!W){W=d;h.$TriggerEvent(i.$EVT_LOAD_START,f);b.$Each(y,function(a){if(!b.$Attribute(a,"src")){a.src=b.$AttributeEx(a,"src2");b.$CssDisplay(a,a["display-origin"])}})}b.$LoadImages(y,o,b.$CreateCallback(j,N,c,a))}else N(c,a)};e.$GoForNextSlide=function(){var h=f;if(a.$AutoPlaySteps<0)h-=r;var d=h+a.$AutoPlaySteps*xc;if(D&2)d=t(d);if(!(D&1))d=c.max(0,c.min(d,r-u));if(d!=f){if(A){var e=A.$GetTransition(r);if(e){var i=R=b.$GetNow(),g=C[t(d)];return g.$LoadImage(b.$CreateCallback(j,X,d,g,e,i),x)}}nb(d)}};e.$TryActivate=function(){S(f,f,d)};e.$ParkOut=function(){p&&p.$Quit();p&&p.$Disable();e.$UnhideContentForSlideshow();g&&g.$Abort();g=j;E()};e.$StampSlideItemElements=function(a){a=eb+"_"+a};e.$HideContentForSlideshow=function(){b.$HideElement(k)};e.$UnhideContentForSlideshow=function(){b.$ShowElement(k)};e.$EnablePlayer=function(){p&&p.$Enable()};function T(a,c,e){if(b.$Attribute(a,"jssor-slider"))return;if(!F){if(a.tagName=="IMG"){y.push(a);if(!b.$Attribute(a,"src")){Q=d;a["display-origin"]=b.$CssDisplay(a);b.$HideElement(a)}}b.$IsBrowserIe9Earlier()&&b.$CssZIndex(a,(b.$CssZIndex(a)||0)+1)}var f=b.$Children(a);b.$Each(f,function(f){var h=f.tagName,i=b.$AttributeEx(f,"u");if(i=="player"&&!v){v=f;if(v.pInstance)O();else b.$AddEvent(v,"dataavailable",O)}if(i=="caption"){if(c){b.$CssTransformOrigin(f,b.$AttributeEx(f,"to"));b.$CssBackfaceVisibility(f,b.$AttributeEx(f,"bf"));b.$AttributeEx(f,"3d")&&b.$CssTransformStyle(f,"preserve-3d")}else if(!b.$IsBrowserIE()){var g=b.$CloneNode(f,l,d);b.$InsertBefore(g,f,a);b.$RemoveElement(f,a);f=g;c=d}}else if(!F&&!e&&!o){if(h=="A"){if(b.$AttributeEx(f,"u")=="image")o=b.$FindChildByTag(f,"IMG");else o=b.$FindChild(f,"image",d);if(o){w=f;b.$CssDisplay(w,"block");b.$SetStyles(w,V);B=b.$CloneNode(w,d);b.$CssPosition(w,"relative");b.$CssOpacity(B,0);b.$Css(B,"backgroundColor","#000")}}else if(h=="IMG"&&b.$AttributeEx(f,"u")=="image")o=f;if(o){o.border=0;b.$SetStyles(o,V)}}T(f,c,e+1)})}e.$OnInnerOffsetChange=function(c,b){var a=u-b;bc(H,a)};e.$Index=f;n.call(e);b.$CssPerspective(k,b.$AttributeEx(k,"p"));b.$CssPerspectiveOrigin(k,b.$AttributeEx(k,"po"));var L=b.$FindChild(k,"thumb",d);if(L){e.$Thumb=b.$CloneNode(L);b.$HideElement(L)}b.$ShowElement(k);x=b.$CloneNode(cb);b.$CssZIndex(x,1e3);b.$AddEvent(k,"click",Z);E(d);e.$Image=o;e.$Link=B;e.$Item=k;e.$Wrapper=H=k;b.$AppendChild(H,x);h.$On(203,S);h.$On(28,db);h.$On(24,bb)}function zc(y,f,p,q){var a=this,n=0,u=0,g,j,e,c,k,t,r,o=C[f];m.call(a,0,0);function v(){b.$Empty(N);fc&&k&&o.$Link&&b.$AppendChild(N,o.$Link);b.$ShowElement(N,!k&&o.$Image)}function w(){a.$Replay()}function x(b){r=b;a.$Stop();a.$Replay()}a.$Replay=function(){var b=a.$GetPosition_Display();if(!B&&!O&&!r&&s==f){if(!b){if(g&&!k){k=d;a.$OpenSlideshowPanel(d);h.$TriggerEvent(i.$EVT_SLIDESHOW_START,f,n,u,g,c)}v()}var l,p=i.$EVT_STATE_CHANGE;if(b!=c)if(b==e)l=c;else if(b==j)l=e;else if(!b)l=j;else l=a.$GetPlayToPosition();h.$TriggerEvent(p,f,b,n,j,e,c);var m=P&&(!E||F);if(b==c)(e!=c&&!(E&12)||m)&&o.$GoForNextSlide();else(m||b!=e)&&a.$PlayToPosition(l,w)}};a.$AdjustIdleOnPark=function(){e==c&&e==a.$GetPosition_Display()&&a.$GoToPosition(j)};a.$Abort=function(){A&&A.$Index==f&&A.$Clear();var b=a.$GetPosition_Display();b=g){k=l;v();o.$UnhideContentForSlideshow();A.$Clear();h.$TriggerEvent(i.$EVT_SLIDESHOW_END,f,n,u,g,c)}h.$TriggerEvent(i.$EVT_PROGRESS_CHANGE,f,a,n,j,e,c)};a.$SetPlayer=function(a){if(a&&!t){t=a;a.$On($JssorPlayer$.$EVT_SWITCH,x)}};p&&a.$Chain(p);g=a.$GetPosition_OuterEnd();a.$Chain(q);j=g+q.$IdleBegin;e=g+q.$IdleEnd;c=a.$GetPosition_OuterEnd()}function Mb(a,c,d){b.$CssLeft(a,c);b.$CssTop(a,d)}function bc(c,b){var a=x>0?x:gb,d=Bb*b*(a&1),e=Cb*b*(a>>1&1);Mb(c,d,e)}function Rb(){pb=O;Kb=z.$GetPlayToPosition();G=w.$GetPosition()}function ic(){Rb();if(B||!F&&E&12){z.$Stop();h.$TriggerEvent(i.$EVT_FREEZE)}}function gc(f){if(!B&&(F||!(E&12))&&!z.$IsPlaying()){var d=w.$GetPosition(),b=c.ceil(G);if(f&&c.abs(H)>=a.$MinDragOffsetToSlide){b=c.ceil(d);b+=eb}if(!(D&1))b=c.min(r-u,c.max(b,0));var e=c.abs(b-d);e=1-c.pow(1-e,5);if(!M&&pb)z.$Continue(Kb);else if(d==b){tb.$EnablePlayer();tb.$TryActivate()}else z.$PlayCarousel(d,b,e*Xb)}}function Ib(a){!b.$AttributeEx(b.$EvtSrc(a),"nodrag")&&b.$CancelEvent(a)}function vc(a){ac(a,1)}function ac(a,c){a=b.$GetEvent(a);var k=b.$EvtSrc(a);if(!L&&!b.$AttributeEx(k,"nodrag")&&wc()&&(!c||a.touches.length==1)){B=d;Ab=l;R=j;b.$AddEvent(f,c?"touchmove":"mousemove",Db);b.$GetNow();M=0;ic();if(!pb)x=0;if(c){var g=a.touches[0];vb=g.clientX;wb=g.clientY}else{var e=b.$MousePosition(a);vb=e.x;wb=e.y}H=0;bb=0;eb=0;h.$TriggerEvent(i.$EVT_DRAG_START,t(G),G,a)}}function Db(e){if(B){e=b.$GetEvent(e);var f;if(e.type!="mousemove"){var l=e.touches[0];f={x:l.clientX,y:l.clientY}}else f=b.$MousePosition(e);if(f){var j=f.x-vb,k=f.y-wb;if(c.floor(G)!=G)x=x||gb&L;if((j||k)&&!x){if(L==3)if(c.abs(k)>c.abs(j))x=2;else x=1;else x=L;if(jb&&x==1&&c.abs(k)-c.abs(j)>3)Ab=d}if(x){var a=k,i=Cb;if(x==1){a=j;i=Bb}if(!(D&1)){if(a>0){var g=i*s,h=a-g;if(h>0)a=g+c.sqrt(h)*5}if(a<0){var g=i*(r-u-s),h=-a-g;if(h>0)a=-g-c.sqrt(h)*5}}if(H-bb<-2)eb=0;else if(H-bb>2)eb=-1;bb=H;H=a;sb=G-H/i/(Z||1);if(H&&x&&!Ab){b.$CancelEvent(e);if(!O)z.$StandBy(sb);else z.$SetStandByPosition(sb)}}}}}function mb(){tc();if(B){B=l;b.$GetNow();b.$RemoveEvent(f,"mousemove",Db);b.$RemoveEvent(f,"touchmove",Db);M=H;z.$Stop();var a=w.$GetPosition();h.$TriggerEvent(i.$EVT_DRAG_END,t(a),a,t(G),G);E&12&&Rb();gc(d)}}function mc(c){if(M){b.$StopEvent(c);var a=b.$EvtSrc(c);while(a&&v!==a){a.tagName=="A"&&b.$CancelEvent(c);try{a=a.parentNode}catch(d){break}}}}function Lb(a){C[s];s=t(a);tb=C[s];Wb(a);return s}function Hc(a,b){x=0;Lb(a);h.$TriggerEvent(i.$EVT_PARK,t(a),b)}function Wb(a,c){yb=a;b.$Each(S,function(b){b.$SetCurrentIndex(t(a),a,c)})}function wc(){var b=i.$DragRegistry||0,a=Y;if(jb)a&1&&(a&=1);i.$DragRegistry|=a;return L=a&~b}function tc(){if(L){i.$DragRegistry&=~Y;L=0}}function Zb(){var a=b.$CreateDiv();b.$SetStyles(a,V);b.$CssPosition(a,"absolute");return a}function t(a){return(a%r+r)%r}function nc(b,d){if(d)if(!D){b=c.min(c.max(b+yb,0),r-u);d=l}else if(D&2){b=t(b+yb);d=l}nb(b,a.$SlideDuration,d)}function zb(){b.$Each(S,function(a){a.$Show(a.$Options.$ChanceToShow<=F)})}function kc(){if(!F){F=1;zb();if(!B){E&12&&gc();E&3&&C[s].$TryActivate()}}}function jc(){if(F){F=0;zb();B||!(E&12)||ic()}}function lc(){V={$Width:K,$Height:J,$Top:0,$Left:0};b.$Each(T,function(a){b.$SetStyles(a,V);b.$CssPosition(a,"absolute");b.$CssOverflow(a,"hidden");b.$HideElement(a)});b.$SetStyles(cb,V)}function lb(b,a){nb(b,a,d)}function nb(h,f,k){if(Tb&&(!B&&(F||!(E&12))||a.$NaviQuitDrag)){O=d;B=l;z.$Stop();if(f==g)f=Xb;var e=Eb.$GetPosition_Display(),b=h;if(k){b=e+h;if(h>0)b=c.ceil(b);else b=c.floor(b)}if(D&2)b=t(b);if(!(D&1))b=c.max(0,c.min(b,r-u));var j=(b-e)%r;b=e+j;var i=e==b?0:f*c.abs(j);i=c.min(i,f*u*1.5);z.$PlayCarousel(e,b,i||1)}}h.$PlayTo=nb;h.$GoTo=function(a){w.$GoToPosition(Lb(a))};h.$Next=function(){lb(1)};h.$Prev=function(){lb(-1)};h.$Pause=function(){P=l};h.$Play=function(){if(!P){P=d;C[s]&&C[s].$TryActivate()}};h.$SetSlideshowTransitions=function(b){a.$SlideshowOptions.$Transitions=b};h.$SetCaptionTransitions=function(a){I.$Transitions=a;I.$Version=b.$GetNow()};h.$SlidesCount=function(){return T.length};h.$CurrentIndex=function(){return s};h.$IsAutoPlaying=function(){return P};h.$IsDragging=function(){return B};h.$IsSliding=function(){return O};h.$IsMouseOver=function(){return!F};h.$LastDragSucceded=function(){return M};function X(){return b.$CssWidth(y||p)}function ib(){return b.$CssHeight(y||p)}h.$OriginalWidth=h.$GetOriginalWidth=X;h.$OriginalHeight=h.$GetOriginalHeight=ib;function Gb(c,d){if(c==g)return b.$CssWidth(p);if(!y){var a=b.$CreateDiv(f);b.$ClassName(a,b.$ClassName(p));b.$CssCssText(a,b.$CssCssText(p));b.$CssDisplay(a,"block");b.$CssPosition(a,"relative");b.$CssTop(a,0);b.$CssLeft(a,0);b.$CssOverflow(a,"visible");y=b.$CreateDiv(f);b.$CssPosition(y,"absolute");b.$CssTop(y,0);b.$CssLeft(y,0);b.$CssWidth(y,b.$CssWidth(p));b.$CssHeight(y,b.$CssHeight(p));b.$CssTransformOrigin(y,"0 0");b.$AppendChild(y,a);var i=b.$Children(p);b.$AppendChild(p,y);b.$Css(p,"backgroundImage","");b.$Each(i,function(c){b.$AppendChild(b.$AttributeEx(c,"noscale")?p:a,c);b.$AttributeEx(c,"autocenter")&&Nb.push(c)})}Z=c/(d?b.$CssHeight:b.$CssWidth)(y);b.$CssScale(y,Z);var h=d?Z*X():c,e=d?c:Z*ib();b.$CssWidth(p,h);b.$CssHeight(p,e);b.$Each(Nb,function(a){var c=b.$ParseInt(b.$AttributeEx(a,"autocenter"));b.$CenterElement(a,c)})}h.$ScaleHeight=h.$GetScaleHeight=function(a){if(a==g)return b.$CssHeight(p);Gb(a,d)};h.$ScaleWidth=h.$SetScaleWidth=h.$GetScaleWidth=Gb;h.$GetVirtualIndex=function(a){var d=c.ceil(t(fb/dc)),b=t(a-s+d);if(b>u){if(a-s>r/2)a-=r;else if(a-s<=-r/2)a+=r}else a=s+b-d;return a};n.call(h);h.$Elmt=p=b.$GetElement(p);var a=b.$Extend({$FillMode:0,$LazyLoading:1,$ArrowKeyNavigation:1,$StartIndex:0,$AutoPlay:l,$Loop:1,$HWA:d,$NaviQuitDrag:d,$AutoPlaySteps:1,$AutoPlayInterval:3e3,$PauseOnHover:1,$SlideDuration:500,$SlideEasing:e.$EaseOutQuad,$MinDragOffsetToSlide:20,$SlideSpacing:0,$Cols:1,$Align:0,$UISearchMode:1,$PlayOrientation:1,$DragOrientation:1},hc);a.$HWA=a.$HWA&&b.$IsBrowser3dSafe();if(a.$Idle!=g)a.$AutoPlayInterval=a.$Idle;if(a.$ParkingPosition!=g)a.$Align=a.$ParkingPosition;var gb=a.$PlayOrientation&3,xc=(a.$PlayOrientation&4)/-4||1,db=a.$SlideshowOptions,I=b.$Extend({$Class:q,$PlayInMode:1,$PlayOutMode:1,$HWA:a.$HWA},a.$CaptionSliderOptions);I.$Transitions=I.$Transitions||I.$CaptionTransitions;var qb=a.$BulletNavigatorOptions,W=a.$ArrowNavigatorOptions,ab=a.$ThumbnailNavigatorOptions,Q=!a.$UISearchMode,y,v=b.$FindChild(p,"slides",Q),cb=b.$FindChild(p,"loading",Q)||b.$CreateDiv(f),Jb=b.$FindChild(p,"navigator",Q),ec=b.$FindChild(p,"arrowleft",Q),cc=b.$FindChild(p,"arrowright",Q),Hb=b.$FindChild(p,"thumbnavigator",Q),pc=b.$CssWidth(v),oc=b.$CssHeight(v),V,T=[],yc=b.$Children(v);b.$Each(yc,function(a){if(a.tagName=="DIV"&&!b.$AttributeEx(a,"u"))T.push(a);else b.$IsBrowserIe9Earlier()&&b.$CssZIndex(a,(b.$CssZIndex(a)||0)+1)});var s=-1,yb,tb,r=T.length,K=a.$SlideWidth||pc,J=a.$SlideHeight||oc,Yb=a.$SlideSpacing,Bb=K+Yb,Cb=J+Yb,dc=gb&1?Bb:Cb,u=c.min(a.$Cols,r),hb,x,L,Ab,S=[],Sb,Ub,Qb,fc,Gc,P,E=a.$PauseOnHover,qc=a.$AutoPlayInterval,Xb=a.$SlideDuration,rb,ub,fb,Tb=u1&&rb&&(!b.$IsBrowserIE()||b.$BrowserVersion()>=8)}fb=ub||u>=r||!(D&1)?0:a.$Align;Y=(u>1||fb?gb:-1)&a.$DragOrientation;var xb=v,C=[],A,N,Fb=b.$Device(),jb=Fb.$Touchable,G,pb,Kb,sb;Fb.$TouchActionAttr&&b.$Css(xb,Fb.$TouchActionAttr,([j,"pan-y","pan-x","none"])[Y]||"");U=new Dc;if(ub)A=new rb(Vb,K,J,db,jb);b.$AppendChild(hb,U.$Wrapper);b.$CssOverflow(v,"hidden");N=Zb();b.$Css(N,"backgroundColor","#000");b.$CssOpacity(N,0);b.$InsertBefore(N,xb.firstChild,xb);for(var ob=0;ob=q-h.$Cols);r=c}c.$GetCurrentIndex=function(){return e};c.$SetCurrentIndex=function(b,a,c){if(c)e=a;else{e=b;p(r)}};c.$Show=p;var m;c.$Reset=function(c){q=c;e=0;if(!m){b.$AddEvent(a,"click",b.$CreateCallback(j,k,-i));b.$AddEvent(g,"click",b.$CreateCallback(j,k,i));b.$Buttonize(a);b.$Buttonize(g);m=d}};c.$Options=f=b.$Extend({$Steps:1},h);i=f.$Steps;if(f.$Scale==l){b.$Attribute(a,"noscale",d);b.$Attribute(g,"noscale",d)}if(f.$AutoCenter){b.$Attribute(a,"autocenter",f.$AutoCenter);b.$Attribute(g,"autocenter",f.$AutoCenter)}};k.$JssorThumbnailNavigator$=function(g,B){var h=this,y,p,a,v=[],z,x,e,q,r,u,t,m,s,f,k;n.call(h);g=b.$GetElement(g);function A(n,f){var g=this,c,m,l;function q(){m.$Selected(p==f)}function i(d){if(d||!s.$LastDragSucceded()){var a=e-f%e,b=s.$GetVirtualIndex((f+a)/e-1),c=b*e+e-a;h.$TriggerEvent(o.$NAVIGATIONREQUEST,c)}}g.$Index=f;g.$Highlight=q;l=n.$Thumb||n.$Image||b.$CreateDiv();g.$Wrapper=c=b.$BuildElement(k,"thumbnailtemplate",l,d);m=b.$Buttonize(c);a.$ActionMode&1&&b.$AddEvent(c,"click",b.$CreateCallback(j,i,0));a.$ActionMode&2&&b.$AddEvent(c,"mouseover",b.$MouseOverOutFilter(b.$CreateCallback(j,i,1),c))}h.$GetCurrentIndex=function(){return p};h.$SetCurrentIndex=function(b,d,f){var a=p;p=b;a!=-1&&v[a].$Highlight();v[b].$Highlight();!f&&s.$PlayTo(s.$GetVirtualIndex(c.floor(d/e)))};h.$Show=function(a){b.$ShowElement(g,a)};var w;h.$Reset=function(F,D){if(!w){y=F;c.ceil(y/e);p=-1;m=c.min(m,D.length);var h=a.$Orientation&1,n=u+(u+q)*(e-1)*(1-h),k=t+(t+r)*(e-1)*h,B=n+(n+q)*(m-1)*h,o=k+(k+r)*(m-1)*(1-h);b.$CssPosition(f,"absolute");b.$CssOverflow(f,"hidden");a.$AutoCenter&1&&b.$CssLeft(f,(z-B)/2);a.$AutoCenter&2&&b.$CssTop(f,(x-o)/2);b.$CssWidth(f,B);b.$CssHeight(f,o);var j=[];b.$Each(D,function(l,g){var i=new A(l,g),d=i.$Wrapper,a=c.floor(g/e),k=g%e;b.$CssLeft(d,(u+q)*k*(1-h));b.$CssTop(d,(t+r)*k*h);if(!j[a]){j[a]=b.$CreateDiv();b.$AppendChild(f,j[a])}b.$AppendChild(j[a],d);v.push(i)});var E=b.$Extend({$AutoPlay:l,$NaviQuitDrag:l,$SlideWidth:n,$SlideHeight:k,$SlideSpacing:q*h+r*(1-h),$MinDragOffsetToSlide:12,$SlideDuration:200,$PauseOnHover:1,$PlayOrientation:a.$Orientation,$DragOrientation:a.$NoDrag||a.$DisableDrag?0:a.$Orientation},a);s=new i(g,E);w=d}};h.$Options=a=b.$Extend({$SpacingX:0,$SpacingY:0,$Cols:1,$Orientation:1,$AutoCenter:3,$ActionMode:1},B);z=b.$CssWidth(g);x=b.$CssHeight(g);f=b.$FindChild(g,"slides",d);k=b.$FindChild(f,"prototype");u=b.$CssWidth(k);t=b.$CssHeight(k);b.$RemoveElement(k,f);e=a.$Rows||1;q=a.$SpacingX;r=a.$SpacingY;m=a.$Cols;a.$Scale==l&&b.$Attribute(g,"noscale",d)};function q(e,d,c){var a=this;m.call(a,0,c);a.$Revert=b.$EmptyFunction;a.$IdleBegin=0;a.$IdleEnd=c}k.$JssorCaptionSlideo$=function(n,f,l){var a=this,o,g={},i=f.$Transitions,c=new m(0,0);m.call(a,0,0);function j(d,c){var a={};b.$Each(d,function(d,f){var e=g[f];if(e){if(b.$IsPlainObject(d))d=j(d,c||f=="e");else if(c)if(b.$IsNumeric(d))d=o[d];a[e]=d}});return a}function k(e,c){var a=[],d=b.$Children(e);b.$Each(d,function(d){var h=b.$AttributeEx(d,"u")=="caption";if(h){var e=b.$AttributeEx(d,"t"),g=i[b.$ParseInt(e)]||i[e],f={$Elmt:d,$Transition:g};a.push(f)}if(c<5)a=a.concat(k(d,c+1))});return a}function r(d,e,a){b.$Each(e,function(g){var e=j(g),f=b.$FormatEasings(e.$Easing);if(e.$Left){e.$MoveX=e.$Left;f.$MoveX=f.$Left;delete e.$Left}if(e.$Top){e.$MoveY=e.$Top;f.$MoveY=f.$Top;delete e.$Top}var h={$Easing:f,$OriginalWidth:a.$Width,$OriginalHeight:a.$Height},i=new m(g.b,g.d,h,d,a,e);c.$Combine(i);a=b.$AddDif(a,e)});return a}function q(a){b.$Each(a,function(f){var a=f.$Elmt,e=b.$CssWidth(a),d=b.$CssHeight(a),c={$Left:b.$CssLeft(a),$Top:b.$CssTop(a),$MoveX:0,$MoveY:0,$Opacity:1,$ZIndex:b.$CssZIndex(a)||0,$Rotate:0,$RotateX:0,$RotateY:0,$ScaleX:1,$ScaleY:1,$TranslateX:0,$TranslateY:0,$TranslateZ:0,$SkewX:0,$SkewY:0,$Width:e,$Height:d,$Clip:{$Top:0,$Right:e,$Bottom:d,$Left:0}};c.$OriginalX=c.$Left;c.$OriginalY=c.$Top;r(a,f.$Transition,c)})}function t(g,f,h){var e=g.b-f;if(e){var b=new m(f,e);b.$Combine(c,d);b.$Shift(h);a.$Combine(b)}a.$Expand(g.d);return e}function s(f){var d=c.$GetPosition_OuterBegin(),e=0;b.$Each(f,function(c,f){c=b.$Extend({d:l},c);t(c,d,e);d=c.b;e+=c.d;if(!f||c.t==2){a.$IdleBegin=d;a.$IdleEnd=d+c.d}})}a.$Revert=function(){a.$GoToPosition(-1,d)};o=[h.$Swing,h.$Linear,h.$InQuad,h.$OutQuad,h.$InOutQuad,h.$InCubic,h.$OutCubic,h.$InOutCubic,h.$InQuart,h.$OutQuart,h.$InOutQuart,h.$InQuint,h.$OutQuint,h.$InOutQuint,h.$InSine,h.$OutSine,h.$InOutSine,h.$InExpo,h.$OutExpo,h.$InOutExpo,h.$InCirc,h.$OutCirc,h.$InOutCirc,h.$InElastic,h.$OutElastic,h.$InOutElastic,h.$InBack,h.$OutBack,h.$InOutBack,h.$InBounce,h.$OutBounce,h.$InOutBounce,h.$GoBack,h.$InWave,h.$OutWave,h.$OutJump,h.$InJump];var u={$Top:"y",$Left:"x",$Bottom:"m",$Right:"t",$Rotate:"r",$RotateX:"rX",$RotateY:"rY",$ScaleX:"sX",$ScaleY:"sY",$TranslateX:"tX",$TranslateY:"tY",$TranslateZ:"tZ",$SkewX:"kX",$SkewY:"kY",$Opacity:"o",$Easing:"e",$ZIndex:"i",$Clip:"c"};b.$Each(u,function(b,a){g[b]=a});q(k(n,1));c.$GoToPosition(-1);var p=f.$Breaks||[],e=[].concat(p[b.$ParseInt(b.$AttributeEx(n,"b"))]||[]);e.push({b:c.$GetPosition_OuterEnd(),d:e.length?0:l});s(e);a.$GoToPosition(-1)}})(window,document,Math,null,true,false) \ No newline at end of file diff --git a/spree_theme/app/assets/javascripts/jssor.slider.one.js b/spree_theme/app/assets/javascripts/jssor.slider.one.js index 538a3b96..29e559a3 100644 --- a/spree_theme/app/assets/javascripts/jssor.slider.one.js +++ b/spree_theme/app/assets/javascripts/jssor.slider.one.js @@ -1,3 +1,2 @@ -//= require jssor.slider/jssor.core -//= require jssor.slider/jssor.utils -//= require jssor.slider/jssor.slider \ No newline at end of file +//= require jssor.19/jssor +//= require jssor.19/jssor.slider diff --git a/spree_theme/app/assets/javascripts/jssor.slider/jssor.core.js b/spree_theme/app/assets/javascripts/jssor.slider/jssor.core.js deleted file mode 100644 index 6059399b..00000000 --- a/spree_theme/app/assets/javascripts/jssor.slider/jssor.core.js +++ /dev/null @@ -1,169 +0,0 @@ -/* -* Jssor.Core 16.0 -* http://www.jssor.com/ -* -* TERMS OF USE - Jssor.Core -* -* Copyright 2014 Jssor -* -* Permission is hereby granted, free of charge, to any person obtaining -* a copy of this software and associated documentation files (the -* "Software"), to deal in the Software without restriction, including -* without limitation the rights to use, copy, modify, merge, publish, -* distribute, sublicense, and/or sell copies of the Software, and to -* permit persons to whom the Software is furnished to do so, subject to -* the following conditions: -* -* The above copyright notice and this permission notice shall be -* included in all copies or substantial portions of the Software. -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -/*! Jssor */ -$Jssor$ = window.$Jssor$ = window.$Jssor$ || {}; - - -//$JssorDebug$ -var $JssorDebug$ = new function () { - - this.$DebugMode = true; - - // Methods - - this.$Log = function (msg, important) { - var console = window.console || {}; - var debug = this.$DebugMode; - - if (debug && console.log) { - console.log(msg); - } else if (debug && important) { - alert(msg); - } - }; - - this.$Error = function (msg, e) { - var console = window.console || {}; - var debug = this.$DebugMode; - - if (debug && console.error) { - console.error(msg); - } else if (debug) { - alert(msg); - } - - if (debug) { - // since we're debugging, fail fast by crashing - throw e || new Error(msg); - } - }; - - this.$Fail = function (msg) { - throw new Error(msg); - }; - - this.$Assert = function (value, msg) { - var debug = this.$DebugMode; - if (debug) { - if (!value) - throw new Error("Assert failed " + msg || ""); - } - }; - - this.$Trace = function (msg) { - var console = window.console || {}; - var debug = this.$DebugMode; - - if (debug && console.log) { - console.log(msg); - } - }; - - this.$Execute = function (func) { - var debug = this.$DebugMode; - if (debug) - func(); - }; - - this.$LiveStamp = function (obj, id) { - var stamp = document.createElement("DIV"); - stamp.setAttribute("id", id); - - obj.$Live = stamp; - }; -}; - - -//$JssorEventManager$ -var $JssorEventManager$ = function () { - var self = this; - // Fields - - var listeners = {}; // dictionary of eventName --> array of handlers - - // Methods - - self.$On = self.addEventListener = function (eventName, handler) { - if (typeof (handler) != "function") { - return; - } - - if (!listeners[eventName]) { - listeners[eventName] = []; - } - - listeners[eventName].push(handler); - }; - - self.$Off = self.removeEventListener = function (eventName, handler) { - var handlers = listeners[eventName]; - - if (typeof (handler) != "function") { - return; - } else if (!handlers) { - return; - } - - for (var i = 0; i < handlers.length; i++) { - if (handler == handlers[i]) { - handlers.splice(i, 1); - return; - } - } - }; - - self.$ClearEventListeners = function (eventName) { - if (listeners[eventName]) { - delete listeners[eventName]; - } - }; - - self.$TriggerEvent = function (eventName) { - var handlers = listeners[eventName]; - var args = []; - - if (!handlers) { - return; - } - - for (var i = 1; i < arguments.length; i++) { - args.push(arguments[i]); - } - - for (var i = 0; i < handlers.length; i++) { - try { - handlers[i].apply(window, args); - } catch (e) { - // handler threw an error, ignore, go on to next one - $JssorDebug$.$Error(e.name + " while executing " + eventName + - " handler: " + e.message, e); - } - } - }; -}; \ No newline at end of file diff --git a/spree_theme/app/assets/javascripts/jssor.slider/jssor.slider.js b/spree_theme/app/assets/javascripts/jssor.slider/jssor.slider.js deleted file mode 100644 index 46d0b95c..00000000 --- a/spree_theme/app/assets/javascripts/jssor.slider/jssor.slider.js +++ /dev/null @@ -1,4025 +0,0 @@ -/// -/// - -/* -* Jssor.Slider 17.0 -* http://www.jssor.com/ -* -* TERMS OF USE - Jssor.Slider -* -* Copyright 2014 Jssor -* -* Permission is hereby granted, free of charge, to any person obtaining -* a copy of this software and associated documentation files (the -* "Software"), to deal in the Software without restriction, including -* without limitation the rights to use, copy, modify, merge, publish, -* distribute, sublicense, and/or sell copies of the Software, and to -* permit persons to whom the Software is furnished to do so, subject to -* the following conditions: -* -* The above copyright notice and this permission notice shall be -* included in all copies or substantial portions of the Software. -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -var $JssorSlider$; -var $JssorSlideshowFormations$ = window.$JssorSlideshowFormations$ = {}; -var $JssorSlideshowRunner$; - -new function () { - //Constants +++++++ - - var COLUMN_INCREASE = 0; - var COLUMN_DECREASE = 1; - var ROW_INCREASE = 2; - var ROW_DECREASE = 3; - - var DIRECTION_HORIZONTAL = 0x0003; - var DIRECTION_VERTICAL = 0x000C; - - var TO_LEFT = 0x0001; - var TO_RIGHT = 0x0002; - var TO_TOP = 0x0004; - var TO_BOTTOM = 0x0008; - - var FROM_LEFT = 0x0100; - var FROM_TOP = 0x0200; - var FROM_RIGHT = 0x0400; - var FROM_BOTTOM = 0x0800; - - var ASSEMBLY_BOTTOM_LEFT = FROM_BOTTOM + TO_LEFT; - var ASSEMBLY_BOTTOM_RIGHT = FROM_BOTTOM + TO_RIGHT; - var ASSEMBLY_TOP_LEFT = FROM_TOP + TO_LEFT; - var ASSEMBLY_TOP_RIGHT = FROM_TOP + TO_RIGHT; - var ASSEMBLY_LEFT_TOP = FROM_LEFT + TO_TOP; - var ASSEMBLY_LEFT_BOTTOM = FROM_LEFT + TO_BOTTOM; - var ASSEMBLY_RIGHT_TOP = FROM_RIGHT + TO_TOP; - var ASSEMBLY_RIGHT_BOTTOM = FROM_RIGHT + TO_BOTTOM; - - //Constants ------- - - //Formation Definition +++++++ - function isToLeft(roadValue) { - return (roadValue & TO_LEFT) == TO_LEFT; - } - - function isToRight(roadValue) { - return (roadValue & TO_RIGHT) == TO_RIGHT; - } - - function isToTop(roadValue) { - return (roadValue & TO_TOP) == TO_TOP; - } - - function isToBottom(roadValue) { - return (roadValue & TO_BOTTOM) == TO_BOTTOM; - } - - function PushFormationOrder(arr, order, formationItem) { - formationItem.push(order); - arr[order] = arr[order] || []; - arr[order].push(formationItem); - } - - $JssorSlideshowFormations$.$FormationStraight = function (transition) { - var cols = transition.$Cols; - var rows = transition.$Rows; - var formationDirection = transition.$Assembly; - var count = transition.$Count; - var a = []; - var i = 0; - var col = 0; - var r = 0; - var cl = cols - 1; - var rl = rows - 1; - var il = count - 1; - var cr; - var order; - for (r = 0; r < rows; r++) { - for (col = 0; col < cols; col++) { - cr = r + ',' + col; - switch (formationDirection) { - case ASSEMBLY_BOTTOM_LEFT: - order = il - (col * rows + (rl - r)); - break; - case ASSEMBLY_RIGHT_TOP: - order = il - (r * cols + (cl - col)); - break; - case ASSEMBLY_TOP_LEFT: - order = il - (col * rows + r); - case ASSEMBLY_LEFT_TOP: - order = il - (r * cols + col); - break; - case ASSEMBLY_BOTTOM_RIGHT: - order = col * rows + r; - break; - case ASSEMBLY_LEFT_BOTTOM: - order = r * cols + (cl - col); - break; - case ASSEMBLY_TOP_RIGHT: - order = col * rows + (rl - r); - break; - default: - order = r * cols + col; - break; //ASSEMBLY_RIGHT_BOTTOM - } - PushFormationOrder(a, order, [r, col]); - } - } - - return a; - }; - - $JssorSlideshowFormations$.$FormationSwirl = function (transition) { - var cols = transition.$Cols; - var rows = transition.$Rows; - var formationDirection = transition.$Assembly; - var count = transition.$Count; - var a = []; - var hit = []; - var i = 0; - var col = 0; - var r = 0; - var cl = cols - 1; - var rl = rows - 1; - var il = count - 1; - var cr; - var courses; - var course = 0; - switch (formationDirection) { - case ASSEMBLY_BOTTOM_LEFT: - col = cl; - r = 0; - courses = [ROW_INCREASE, COLUMN_DECREASE, ROW_DECREASE, COLUMN_INCREASE]; - break; - case ASSEMBLY_RIGHT_TOP: - col = 0; - r = rl; - courses = [COLUMN_INCREASE, ROW_DECREASE, COLUMN_DECREASE, ROW_INCREASE]; - break; - case ASSEMBLY_TOP_LEFT: - col = cl; - r = rl; - courses = [ROW_DECREASE, COLUMN_DECREASE, ROW_INCREASE, COLUMN_INCREASE]; - break; - case ASSEMBLY_LEFT_TOP: - col = cl; - r = rl; - courses = [COLUMN_DECREASE, ROW_DECREASE, COLUMN_INCREASE, ROW_INCREASE]; - break; - case ASSEMBLY_BOTTOM_RIGHT: - col = 0; - r = 0; - courses = [ROW_INCREASE, COLUMN_INCREASE, ROW_DECREASE, COLUMN_DECREASE]; - break; - case ASSEMBLY_LEFT_BOTTOM: - col = cl; - r = 0; - courses = [COLUMN_DECREASE, ROW_INCREASE, COLUMN_INCREASE, ROW_DECREASE]; - break; - case ASSEMBLY_TOP_RIGHT: - col = 0; - r = rl; - courses = [ROW_DECREASE, COLUMN_INCREASE, ROW_INCREASE, COLUMN_DECREASE]; - break; - default: - col = 0; - r = 0; - courses = [COLUMN_INCREASE, ROW_INCREASE, COLUMN_DECREASE, ROW_DECREASE]; - break; //ASSEMBLY_RIGHT_BOTTOM - } - i = 0; - while (i < count) { - cr = r + ',' + col; - if (col >= 0 && col < cols && r >= 0 && r < rows && !hit[cr]) { - //a[cr] = i++; - hit[cr] = true; - PushFormationOrder(a, i++, [r, col]); - } - else { - switch (courses[course++ % courses.length]) { - case COLUMN_INCREASE: - col--; - break; - case ROW_INCREASE: - r--; - break; - case COLUMN_DECREASE: - col++; - break; - case ROW_DECREASE: - r++; - break; - } - } - - switch (courses[course % courses.length]) { - case COLUMN_INCREASE: - col++; - break; - case ROW_INCREASE: - r++; - break; - case COLUMN_DECREASE: - col--; - break; - case ROW_DECREASE: - r--; - break; - } - } - return a; - }; - - $JssorSlideshowFormations$.$FormationZigZag = function (transition) { - var cols = transition.$Cols; - var rows = transition.$Rows; - var formationDirection = transition.$Assembly; - var count = transition.$Count; - var a = []; - var i = 0; - var col = 0; - var r = 0; - var cl = cols - 1; - var rl = rows - 1; - var il = count - 1; - var cr; - var courses; - var course = 0; - switch (formationDirection) { - case ASSEMBLY_BOTTOM_LEFT: - col = cl; - r = 0; - courses = [ROW_INCREASE, COLUMN_DECREASE, ROW_DECREASE, COLUMN_DECREASE]; - break; - case ASSEMBLY_RIGHT_TOP: - col = 0; - r = rl; - courses = [COLUMN_INCREASE, ROW_DECREASE, COLUMN_DECREASE, ROW_DECREASE]; - break; - case ASSEMBLY_TOP_LEFT: - col = cl; - r = rl; - courses = [ROW_DECREASE, COLUMN_DECREASE, ROW_INCREASE, COLUMN_DECREASE]; - break; - case ASSEMBLY_LEFT_TOP: - col = cl; - r = rl; - courses = [COLUMN_DECREASE, ROW_DECREASE, COLUMN_INCREASE, ROW_DECREASE]; - break; - case ASSEMBLY_BOTTOM_RIGHT: - col = 0; - r = 0; - courses = [ROW_INCREASE, COLUMN_INCREASE, ROW_DECREASE, COLUMN_INCREASE]; - break; - case ASSEMBLY_LEFT_BOTTOM: - col = cl; - r = 0; - courses = [COLUMN_DECREASE, ROW_INCREASE, COLUMN_INCREASE, ROW_INCREASE]; - break; - case ASSEMBLY_TOP_RIGHT: - col = 0; - r = rl; - courses = [ROW_DECREASE, COLUMN_INCREASE, ROW_INCREASE, COLUMN_INCREASE]; - break; - default: - col = 0; - r = 0; - courses = [COLUMN_INCREASE, ROW_INCREASE, COLUMN_DECREASE, ROW_INCREASE]; - break; //ASSEMBLY_RIGHT_BOTTOM - } - i = 0; - while (i < count) { - cr = r + ',' + col; - if (col >= 0 && col < cols && r >= 0 && r < rows && typeof (a[cr]) == 'undefined') { - PushFormationOrder(a, i++, [r, col]); - //a[cr] = i++; - switch (courses[course % courses.length]) { - case COLUMN_INCREASE: - col++; - break; - case ROW_INCREASE: - r++; - break; - case COLUMN_DECREASE: - col--; - break; - case ROW_DECREASE: - r--; - break; - } - } - else { - switch (courses[course++ % courses.length]) { - case COLUMN_INCREASE: - col--; - break; - case ROW_INCREASE: - r--; - break; - case COLUMN_DECREASE: - col++; - break; - case ROW_DECREASE: - r++; - break; - } - switch (courses[course++ % courses.length]) { - case COLUMN_INCREASE: - col++; - break; - case ROW_INCREASE: - r++; - break; - case COLUMN_DECREASE: - col--; - break; - case ROW_DECREASE: - r--; - break; - } - } - } - return a; - }; - - $JssorSlideshowFormations$.$FormationStraightStairs = function (transition) { - var cols = transition.$Cols; - var rows = transition.$Rows; - var formationDirection = transition.$Assembly; - var count = transition.$Count; - var a = []; - var i = 0; - var col = 0; - var r = 0; - var cl = cols - 1; - var rl = rows - 1; - var il = count - 1; - var cr; - switch (formationDirection) { - case ASSEMBLY_BOTTOM_LEFT: - case ASSEMBLY_TOP_RIGHT: - case ASSEMBLY_TOP_LEFT: - case ASSEMBLY_BOTTOM_RIGHT: - var C = 0; - var R = 0; - break; - case ASSEMBLY_LEFT_BOTTOM: - case ASSEMBLY_RIGHT_TOP: - case ASSEMBLY_LEFT_TOP: - case ASSEMBLY_RIGHT_BOTTOM: - var C = cl; - var R = 0; - break; - default: - formationDirection = ASSEMBLY_RIGHT_BOTTOM; - var C = cl; - var R = 0; - break; - } - col = C; - r = R; - while (i < count) { - cr = r + ',' + col; - if (isToTop(formationDirection) || isToRight(formationDirection)) { - PushFormationOrder(a, il - i++, [r, col]); - //a[cr] = il - i++; - } - else { - PushFormationOrder(a, i++, [r, col]); - //a[cr] = i++; - } - switch (formationDirection) { - case ASSEMBLY_BOTTOM_LEFT: - case ASSEMBLY_TOP_RIGHT: - col--; - r++; - break; - case ASSEMBLY_TOP_LEFT: - case ASSEMBLY_BOTTOM_RIGHT: - col++; - r--; - break; - case ASSEMBLY_LEFT_BOTTOM: - case ASSEMBLY_RIGHT_TOP: - col--; - r--; - break; - case ASSEMBLY_RIGHT_BOTTOM: - case ASSEMBLY_LEFT_TOP: - default: - col++; - r++; - break; - } - if (col < 0 || r < 0 || col > cl || r > rl) { - switch (formationDirection) { - case ASSEMBLY_BOTTOM_LEFT: - case ASSEMBLY_TOP_RIGHT: - C++; - break; - case ASSEMBLY_LEFT_BOTTOM: - case ASSEMBLY_RIGHT_TOP: - case ASSEMBLY_TOP_LEFT: - case ASSEMBLY_BOTTOM_RIGHT: - R++; - break; - case ASSEMBLY_RIGHT_BOTTOM: - case ASSEMBLY_LEFT_TOP: - default: - C--; - break; - } - if (C < 0 || R < 0 || C > cl || R > rl) { - switch (formationDirection) { - case ASSEMBLY_BOTTOM_LEFT: - case ASSEMBLY_TOP_RIGHT: - C = cl; - R++; - break; - case ASSEMBLY_TOP_LEFT: - case ASSEMBLY_BOTTOM_RIGHT: - R = rl; - C++; - break; - case ASSEMBLY_LEFT_BOTTOM: - case ASSEMBLY_RIGHT_TOP: R = rl; C--; - break; - case ASSEMBLY_RIGHT_BOTTOM: - case ASSEMBLY_LEFT_TOP: - default: - C = 0; - R++; - break; - } - if (R > rl) - R = rl; - else if (R < 0) - R = 0; - else if (C > cl) - C = cl; - else if (C < 0) - C = 0; - } - r = R; - col = C; - } - } - return a; - }; - - $JssorSlideshowFormations$.$FormationSquare = function (transition) { - var cols = transition.$Cols || 1; - var rows = transition.$Rows || 1; - var arr = []; - var i = 0; - var col; - var r; - var dc; - var dr; - var cr; - dc = cols < rows ? (rows - cols) / 2 : 0; - dr = cols > rows ? (cols - rows) / 2 : 0; - cr = Math.round(Math.max(cols / 2, rows / 2)) + 1; - for (col = 0; col < cols; col++) { - for (r = 0; r < rows; r++) - PushFormationOrder(arr, cr - Math.min(col + 1 + dc, r + 1 + dr, cols - col + dc, rows - r + dr), [r, col]); - } - return arr; - }; - - $JssorSlideshowFormations$.$FormationRectangle = function (transition) { - var cols = transition.$Cols || 1; - var rows = transition.$Rows || 1; - var arr = []; - var i = 0; - var col; - var r; - var cr; - cr = Math.round(Math.min(cols / 2, rows / 2)) + 1; - for (col = 0; col < cols; col++) { - for (r = 0; r < rows; r++) - PushFormationOrder(arr, cr - Math.min(col + 1, r + 1, cols - col, rows - r), [r, col]); - } - return arr; - }; - - $JssorSlideshowFormations$.$FormationRandom = function (transition) { - var a = []; - var r, col, i; - for (r = 0; r < transition.$Rows; r++) { - for (col = 0; col < transition.$Cols; col++) - PushFormationOrder(a, Math.ceil(100000 * Math.random()) % 13, [r, col]); - } - - return a; - }; - - $JssorSlideshowFormations$.$FormationCircle = function (transition) { - var cols = transition.$Cols || 1; - var rows = transition.$Rows || 1; - var arr = []; - var i = 0; - var col; - var r; - var hc = cols / 2 - 0.5; - var hr = rows / 2 - 0.5; - for (col = 0; col < cols; col++) { - for (r = 0; r < rows; r++) - PushFormationOrder(arr, Math.round(Math.sqrt(Math.pow(col - hc, 2) + Math.pow(r - hr, 2))), [r, col]); - } - return arr; - }; - - $JssorSlideshowFormations$.$FormationCross = function (transition) { - var cols = transition.$Cols || 1; - var rows = transition.$Rows || 1; - var arr = []; - var i = 0; - var col; - var r; - var hc = cols / 2 - 0.5; - var hr = rows / 2 - 0.5; - for (col = 0; col < cols; col++) { - for (r = 0; r < rows; r++) - PushFormationOrder(arr, Math.round(Math.min(Math.abs(col - hc), Math.abs(r - hr))), [r, col]); - } - return arr; - }; - - $JssorSlideshowFormations$.$FormationRectangleCross = function (transition) { - var cols = transition.$Cols || 1; - var rows = transition.$Rows || 1; - var arr = []; - var i = 0; - var col; - var r; - var hc = cols / 2 - 0.5; - var hr = rows / 2 - 0.5; - var cr = Math.max(hc, hr) + 1; - for (col = 0; col < cols; col++) { - for (r = 0; r < rows; r++) - PushFormationOrder(arr, Math.round(cr - Math.max(hc - Math.abs(col - hc), hr - Math.abs(r - hr))) - 1, [r, col]); - } - return arr; - }; - - function GetFormation(transition) { - - var formationInstance = transition.$Formation(transition); - - return transition.$Reverse ? formationInstance.reverse() : formationInstance; - - } //GetFormation - - //var _PrototypeTransitions = []; - function EnsureTransitionInstance(options, slideshowInterval) { - - var _SlideshowTransition = { - $Interval: slideshowInterval, //Delay to play next frame - $Duration: 1, //Duration to finish the entire transition - $Delay: 0, //Delay to assembly blocks - $Cols: 1, //Number of columns - $Rows: 1, //Number of rows - $Opacity: 0, //Fade block or not - $Zoom: 0, //Zoom block or not - $Clip: 0, //Clip block or not - $Move: false, //Move block or not - $SlideOut: false, //Slide the previous slide out to display next slide instead - $FlyDirection: 0, //Specify fly transform with direction - $Reverse: false, //Reverse the assembly or not - $Formation: $JssorSlideshowFormations$.$FormationRandom, //Shape that assembly blocks as - $Assembly: ASSEMBLY_RIGHT_BOTTOM, //The way to assembly blocks - $ChessMode: { $Column: 0, $Row: 0 }, //Chess move or fly direction - $Easing: $JssorEasing$.$EaseSwing, //Specify variation of speed during transition - $Round: {}, - $Blocks: [], - $During: {} - }; - - $JssorUtils$.$Extend(_SlideshowTransition, options); - - _SlideshowTransition.$Count = _SlideshowTransition.$Cols * _SlideshowTransition.$Rows; - if ($JssorUtils$.$IsFunction(_SlideshowTransition.$Easing)) - _SlideshowTransition.$Easing = { $Default: _SlideshowTransition.$Easing }; - - _SlideshowTransition.$FramesCount = Math.ceil(_SlideshowTransition.$Duration / _SlideshowTransition.$Interval); - _SlideshowTransition.$EasingInstance = GetEasing(_SlideshowTransition); - - _SlideshowTransition.$GetBlocks = function (width, height) { - width /= _SlideshowTransition.$Cols; - height /= _SlideshowTransition.$Rows; - var wh = width + 'x' + height; - if (!_SlideshowTransition.$Blocks[wh]) { - _SlideshowTransition.$Blocks[wh] = { $Width: width, $Height: height }; - for (var col = 0; col < _SlideshowTransition.$Cols; col++) { - for (var r = 0; r < _SlideshowTransition.$Rows; r++) - _SlideshowTransition.$Blocks[wh][r + ',' + col] = { $Top: r * height, $Right: col * width + width, $Bottom: r * height + height, $Left: col * width }; - } - } - - return _SlideshowTransition.$Blocks[wh]; - }; - - if (_SlideshowTransition.$Brother) { - _SlideshowTransition.$Brother = EnsureTransitionInstance(_SlideshowTransition.$Brother, slideshowInterval); - _SlideshowTransition.$SlideOut = true; - } - - return _SlideshowTransition; - } - - function GetEasing(transition) { - var easing = transition.$Easing; - if (!easing.$Default) - easing.$Default = $JssorEasing$.$EaseSwing; - - var duration = transition.$FramesCount; - - var cache = easing.$Cache; - if (!cache) { - var enumerator = $JssorUtils$.$Extend({}, transition.$Easing, transition.$Round); - cache = easing.$Cache = {}; - - $JssorUtils$.$Each(enumerator, function (v, easingName) { - var easingFunction = easing[easingName] || easing.$Default; - var round = transition.$Round[easingName] || 1; - - if (!$JssorUtils$.$IsArray(easingFunction.$Cache)) - easingFunction.$Cache = []; - - var easingFunctionCache = easingFunction.$Cache[duration] = easingFunction.$Cache[duration] || []; - - if (!easingFunctionCache[round]) { - easingFunctionCache[round] = [0]; - for (var t = 1; t <= duration; t++) { - var tRound = t / duration * round; - var tRoundFloor = Math.floor(tRound); - if (tRound != tRoundFloor) - tRound -= tRoundFloor; - easingFunctionCache[round][t] = easingFunction(tRound); - } - } - - cache[easingName] = easingFunctionCache; - - }); - } - - return cache; - } //GetEasing - - //Formation Definition ------- - - function JssorSlideshowPlayer(slideContainer, slideElement, slideTransition, beginTime, slideContainerWidth, slideContainerHeight) { - var _Self = this; - - var _Block; - var _StartStylesArr = {}; - var _AnimationStylesArrs = {}; - var _AnimationBlockItems = []; - var _StyleStart; - var _StyleEnd; - var _StyleDif; - var _ChessModeColumn = slideTransition.$ChessMode.$Column || 0; - var _ChessModeRow = slideTransition.$ChessMode.$Row || 0; - - var _Blocks = slideTransition.$GetBlocks(slideContainerWidth, slideContainerHeight); - var _FormationInstance = GetFormation(slideTransition); - var _MaxOrder = _FormationInstance.length - 1; - var _Period = slideTransition.$Duration + slideTransition.$Delay * _MaxOrder; - var _EndTime = beginTime + _Period; - - var _SlideOut = slideTransition.$SlideOut; - var _IsIn; - - _EndTime += $JssorUtils$.$IsBrowserChrome() ? 260 : 50; - - _Self.$EndTime = _EndTime; - - _Self.$ShowFrame = function (time) { - time -= beginTime; - - var isIn = time < _Period; - - if (isIn || _IsIn) { - _IsIn = isIn; - - if (!_SlideOut) - time = _Period - time; - - var frameIndex = Math.ceil(time / slideTransition.$Interval); - - $JssorUtils$.$Each(_AnimationStylesArrs, function (value, index) { - - var itemFrameIndex = Math.max(frameIndex, value.$Min); - itemFrameIndex = Math.min(itemFrameIndex, value.length - 1); - - if (value.$LastFrameIndex != itemFrameIndex) { - if (!value.$LastFrameIndex && !_SlideOut) { - $JssorUtils$.$ShowElement(_AnimationBlockItems[index]); - } - else if (itemFrameIndex == value.$Max && _SlideOut) { - $JssorUtils$.$HideElement(_AnimationBlockItems[index]); - } - value.$LastFrameIndex = itemFrameIndex; - $JssorUtils$.$SetStylesEx(_AnimationBlockItems[index], value[itemFrameIndex]); - } - }); - } - }; - - function DisableHWA(elmt) { - $JssorUtils$.$DisableHWA(elmt); - - var children = $JssorUtils$.$GetChildren(elmt); - - $JssorUtils$.$Each(children, function (child) { - DisableHWA(child); - }); - } - - //constructor - { - slideElement = $JssorUtils$.$CloneNode(slideElement, true); - DisableHWA(slideElement); - if ($JssorUtils$.$IsBrowserIe9Earlier()) { - var hasImage = !slideElement["no-image"]; - var slideChildElements = $JssorUtils$.$FindChildrenByTag(slideElement, null, true); - $JssorUtils$.$Each(slideChildElements, function (slideChildElement) { - if (hasImage || slideChildElement["jssor-slider"]) - $JssorUtils$.$CssOpacity(slideChildElement, $JssorUtils$.$CssOpacity(slideChildElement), true); - }); - } - - $JssorUtils$.$Each(_FormationInstance, function (formationItems, order) { - $JssorUtils$.$Each(formationItems, function (formationItem) { - var row = formationItem[0]; - var col = formationItem[1]; - { - var columnRow = row + ',' + col; - - var chessHorizontal = false; - var chessVertical = false; - var chessRotate = false; - - if (_ChessModeColumn && col % 2) { - if ($JssorDirection$.$IsHorizontal(_ChessModeColumn)) { - chessHorizontal = !chessHorizontal; - } - if ($JssorDirection$.$IsVertical(_ChessModeColumn)) { - chessVertical = !chessVertical; - } - - if (_ChessModeColumn & 16) - chessRotate = !chessRotate; - } - - if (_ChessModeRow && row % 2) { - if ($JssorDirection$.$IsHorizontal(_ChessModeRow)) { - chessHorizontal = !chessHorizontal; - } - if ($JssorDirection$.$IsVertical(_ChessModeRow)) { - chessVertical = !chessVertical; - } - if (_ChessModeRow & 16) - chessRotate = !chessRotate; - } - - slideTransition.$Top = slideTransition.$Top || (slideTransition.$Clip & 4); - slideTransition.$Bottom = slideTransition.$Bottom || (slideTransition.$Clip & 8); - slideTransition.$Left = slideTransition.$Left || (slideTransition.$Clip & 1); - slideTransition.$Right = slideTransition.$Right || (slideTransition.$Clip & 2); - - var topBenchmark = chessVertical ? slideTransition.$Bottom : slideTransition.$Top; - var bottomBenchmark = chessVertical ? slideTransition.$Top : slideTransition.$Bottom; - var leftBenchmark = chessHorizontal ? slideTransition.$Right : slideTransition.$Left; - var rightBenchmark = chessHorizontal ? slideTransition.$Left : slideTransition.$Right; - - //$JssorDebug$.$Execute(function () { - // topBenchmark = bottomBenchmark = leftBenchmark = rightBenchmark = false; - //}); - - slideTransition.$Clip = topBenchmark || bottomBenchmark || leftBenchmark || rightBenchmark; - - _StyleDif = {}; - _StyleEnd = { $Top: 0, $Left: 0, $Opacity: 1, $Width: slideContainerWidth, $Height: slideContainerHeight }; - _StyleStart = $JssorUtils$.$Extend({}, _StyleEnd); - _Block = $JssorUtils$.$Extend({}, _Blocks[columnRow]); - - if (slideTransition.$Opacity) { - _StyleEnd.$Opacity = 2 - slideTransition.$Opacity; - } - - if (slideTransition.$ZIndex) { - _StyleEnd.$ZIndex = slideTransition.$ZIndex; - _StyleStart.$ZIndex = 0; - } - - var allowClip = slideTransition.$Cols * slideTransition.$Rows > 1 || slideTransition.$Clip; - - if (slideTransition.$Zoom || slideTransition.$Rotate) { - var allowRotate = true; - if ($JssorUtils$.$IsBrowserIE() && $JssorUtils$.$GetBrowserEngineVersion() < 9) { - if (slideTransition.$Cols * slideTransition.$Rows > 1) - allowRotate = false; - else - allowClip = false; - } - - if (allowRotate) { - _StyleEnd.$Zoom = slideTransition.$Zoom ? slideTransition.$Zoom - 1 : 1; - _StyleStart.$Zoom = 1; - - if ($JssorUtils$.$IsBrowserIe9Earlier() || $JssorUtils$.$IsBrowserOpera()) - _StyleEnd.$Zoom = Math.min(_StyleEnd.$Zoom, 2); - - var rotate = slideTransition.$Rotate; - if (rotate == true) - rotate = 1; - - _StyleEnd.$Rotate = rotate * 360 * ((chessRotate) ? -1 : 1); - _StyleStart.$Rotate = 0; - } - } - - if (allowClip) { - if (slideTransition.$Clip) { - var clipScale = slideTransition.$ScaleClip || 1; - var blockOffset = _Block.$Offset = {}; - if (topBenchmark && bottomBenchmark) { - blockOffset.$Top = _Blocks.$Height / 2 * clipScale; - blockOffset.$Bottom = -blockOffset.$Top; - } - else if (topBenchmark) { - blockOffset.$Bottom = -_Blocks.$Height * clipScale; - } - else if (bottomBenchmark) { - blockOffset.$Top = _Blocks.$Height * clipScale; - } - - if (leftBenchmark && rightBenchmark) { - blockOffset.$Left = _Blocks.$Width / 2 * clipScale; - blockOffset.$Right = -blockOffset.$Left; - } - else if (leftBenchmark) { - blockOffset.$Right = -_Blocks.$Width * clipScale; - } - else if (rightBenchmark) { - blockOffset.$Left = _Blocks.$Width * clipScale; - } - } - - _StyleDif.$Clip = _Block; - _StyleStart.$Clip = _Blocks[columnRow]; - } - - if (slideTransition.$FlyDirection) { - - var direction = slideTransition.$FlyDirection; - - if (!chessHorizontal) - direction = $JssorDirection$.$ChessHorizontal(direction); - - if (!chessVertical) - direction = $JssorDirection$.$ChessVertical(direction); - - var scaleHorizontal = slideTransition.$ScaleHorizontal || 1; - var scaleVertical = slideTransition.$ScaleVertical || 1; - - if ($JssorDirection$.$IsToLeft(direction)) { - _StyleEnd.$Left += slideContainerWidth * scaleHorizontal; - } - else if ($JssorDirection$.$IsToRight(direction)) { - _StyleEnd.$Left -= slideContainerWidth * scaleHorizontal; - } - if ($JssorDirection$.$IsToTop(direction)) { - _StyleEnd.$Top += slideContainerHeight * scaleVertical; - } - else if ($JssorDirection$.$IsToBottom(direction)) { - _StyleEnd.$Top -= slideContainerHeight * scaleVertical; - } - } - - $JssorUtils$.$Each(_StyleEnd, function (propertyEnd, property) { - if ($JssorUtils$.$IsNumeric(propertyEnd)) { - if (propertyEnd != _StyleStart[property]) { - _StyleDif[property] = propertyEnd - _StyleStart[property]; - } - } - }); - - _StartStylesArr[columnRow] = _SlideOut ? _StyleStart : _StyleEnd; - - var animationStylesArr = []; - var virtualFrameCount = Math.round(order * slideTransition.$Delay / slideTransition.$Interval); - _AnimationStylesArrs[columnRow] = new Array(virtualFrameCount); - _AnimationStylesArrs[columnRow].$Min = virtualFrameCount; - - var framesCount = slideTransition.$FramesCount; - for (var frameN = 0; frameN <= framesCount; frameN++) { - var styleFrameN = {}; - - $JssorUtils$.$Each(_StyleDif, function (propertyDiff, property) { - var propertyEasings = slideTransition.$EasingInstance[property] || slideTransition.$EasingInstance.$Default; - var propertyEasingArray = propertyEasings[slideTransition.$Round[property] || 1]; - - var propertyDuring = slideTransition.$During[property] || [0, 1]; - var propertyFrameN = (frameN / framesCount - propertyDuring[0]) / propertyDuring[1] * framesCount; - propertyFrameN = Math.round(Math.min(framesCount, Math.max(propertyFrameN, 0))); - - var propertyEasingValue = propertyEasingArray[propertyFrameN]; - - if ($JssorUtils$.$IsNumeric(propertyDiff)) { - styleFrameN[property] = _StyleStart[property] + propertyDiff * propertyEasingValue; - } - else { - var value = styleFrameN[property] = $JssorUtils$.$Extend({}, _StyleStart[property]); - value.$Offset = []; - $JssorUtils$.$Each(propertyDiff.$Offset, function (rectX, n) { - var offsetValue = rectX * propertyEasingValue; - value.$Offset[n] = offsetValue; - value[n] += offsetValue; - }); - } - }); - - if (_StyleStart.$Zoom) { - styleFrameN.$Transform = { $Rotate: styleFrameN.$Rotate || 0, $Scale: styleFrameN.$Zoom, $OriginalWidth: slideContainerWidth, $OriginalHeight: slideContainerHeight }; - } - if (styleFrameN.$Clip && slideTransition.$Move) { - var styleFrameNClipOffset = styleFrameN.$Clip.$Offset; - var offsetY = (styleFrameNClipOffset.$Top || 0) + (styleFrameNClipOffset.$Bottom || 0); - var offsetX = (styleFrameNClipOffset.$Left || 0) + (styleFrameNClipOffset.$Right || 0); - - styleFrameN.$Left = (styleFrameN.$Left || 0) + offsetX; - styleFrameN.$Top = (styleFrameN.$Top || 0) + offsetY; - styleFrameN.$Clip.$Left -= offsetX; - styleFrameN.$Clip.$Right -= offsetX; - styleFrameN.$Clip.$Top -= offsetY; - styleFrameN.$Clip.$Bottom -= offsetY; - } - - styleFrameN.$ZIndex = styleFrameN.$ZIndex || 1; - - _AnimationStylesArrs[columnRow].push(styleFrameN); - } - - } //for - }); - }); - - _FormationInstance.reverse(); - $JssorUtils$.$Each(_FormationInstance, function (formationItems) { - $JssorUtils$.$Each(formationItems, function (formationItem) { - var row = formationItem[0]; - var col = formationItem[1]; - - var columnRow = row + ',' + col; - - var image = slideElement; - if (col || row) - image = $JssorUtils$.$CloneNode(slideElement, true); - - $JssorUtils$.$SetStyles(image, _StartStylesArr[columnRow]); - $JssorUtils$.$CssOverflow(image, "hidden"); - - $JssorUtils$.$CssPosition(image, "absolute"); - slideContainer.$AddClipElement(image); - _AnimationBlockItems[columnRow] = image; - $JssorUtils$.$ShowElement(image, _SlideOut); - }); - }); - } - } - - //JssorSlideshowRunner++++++++ - var _SlideshowRunnerCount = 1; - $JssorSlideshowRunner$ = window.$JssorSlideshowRunner$ = function (slideContainer, slideContainerWidth, slideContainerHeight, slideshowOptions, handleTouchEventOnly) { - - var _SelfSlideshowRunner = this; - - //var _State = 0; //-1 fullfill, 0 clean, 1 initializing, 2 stay, 3 playing - var _EndTime; - - var _SliderFrameCount; - - var _SlideshowPlayerBelow; - var _SlideshowPlayerAbove; - - var _PrevItem; - var _SlideItem; - - var _TransitionIndex = 0; - var _TransitionsOrder = slideshowOptions.$TransitionsOrder; - - var _SlideshowTransition; - - var _SlideshowPerformance = 16; - - function SlideshowProcessor() { - var _SelfSlideshowProcessor = this; - var _CurrentTime = 0; - - $JssorAnimator$.call(_SelfSlideshowProcessor, 0, _EndTime); - - _SelfSlideshowProcessor.$OnPositionChange = function (oldPosition, newPosition) { - if ((newPosition - _CurrentTime) > _SlideshowPerformance) { - _CurrentTime = newPosition; - - _SlideshowPlayerAbove && _SlideshowPlayerAbove.$ShowFrame(newPosition); - _SlideshowPlayerBelow && _SlideshowPlayerBelow.$ShowFrame(newPosition); - } - }; - - _SelfSlideshowProcessor.$Transition = _SlideshowTransition; - } - - //member functions - _SelfSlideshowRunner.$GetTransition = function (slideCount) { - var n = 0; - - var transitions = slideshowOptions.$Transitions; - - var transitionCount = transitions.length; - - if (_TransitionsOrder) { /*Sequence*/ - if (transitionCount > slideCount && ($JssorUtils$.$IsBrowserChrome() || $JssorUtils$.$IsBrowserSafari() || $JssorUtils$.$IsBrowserFireFox())) { - transitionCount -= transitionCount % slideCount; - } - n = _TransitionIndex++ % transitionCount; - } - else { /*Random*/ - n = Math.floor(Math.random() * transitionCount); - } - - transitions[n] && (transitions[n].$Index = n); - - return transitions[n]; - }; - - _SelfSlideshowRunner.$Initialize = function (slideIndex, prevIndex, slideItem, prevItem, slideshowTransition) { - $JssorDebug$.$Execute(function () { - if (_SlideshowPlayerBelow) { - $JssorDebug$.$Fail("slideshow runner has not been cleared."); - } - }); - - _SlideshowTransition = slideshowTransition; - - slideshowTransition = EnsureTransitionInstance(slideshowTransition, _SlideshowPerformance); - - _SlideItem = slideItem; - _PrevItem = prevItem; - - var prevSlideElement = prevItem.$Item; - var currentSlideElement = slideItem.$Item; - prevSlideElement["no-image"] = !prevItem.$Image; - currentSlideElement["no-image"] = !slideItem.$Image; - - var slideElementAbove = prevSlideElement; - var slideElementBelow = currentSlideElement; - - var slideTransitionAbove = slideshowTransition; - var slideTransitionBelow = slideshowTransition.$Brother || EnsureTransitionInstance({}, _SlideshowPerformance); - - if (!slideshowTransition.$SlideOut) { - slideElementAbove = currentSlideElement; - slideElementBelow = prevSlideElement; - } - - var shift = slideTransitionBelow.$Shift || 0; - - _SlideshowPlayerBelow = new JssorSlideshowPlayer(slideContainer, slideElementBelow, slideTransitionBelow, Math.max(shift - slideTransitionBelow.$Interval, 0), slideContainerWidth, slideContainerHeight); - _SlideshowPlayerAbove = new JssorSlideshowPlayer(slideContainer, slideElementAbove, slideTransitionAbove, Math.max(slideTransitionBelow.$Interval - shift, 0), slideContainerWidth, slideContainerHeight); - - _SlideshowPlayerBelow.$ShowFrame(0); - _SlideshowPlayerAbove.$ShowFrame(0); - - _EndTime = Math.max(_SlideshowPlayerBelow.$EndTime, _SlideshowPlayerAbove.$EndTime); - - _SelfSlideshowRunner.$Index = slideIndex; - }; - - _SelfSlideshowRunner.$Clear = function () { - slideContainer.$Clear(); - _SlideshowPlayerBelow = null; - _SlideshowPlayerAbove = null; - }; - - _SelfSlideshowRunner.$GetProcessor = function () { - var slideshowProcessor = null; - - if (_SlideshowPlayerAbove) - slideshowProcessor = new SlideshowProcessor(); - - return slideshowProcessor; - }; - - //Constructor - { - if ($JssorUtils$.$IsBrowserIe9Earlier() || $JssorUtils$.$IsBrowserOpera() || (handleTouchEventOnly && $JssorUtils$.$GetWebKitVersion < 537)) { - _SlideshowPerformance = 32; - } - - $JssorEventManager$.call(_SelfSlideshowRunner); - $JssorAnimator$.call(_SelfSlideshowRunner, -10000000, 10000000); - - $JssorDebug$.$LiveStamp(_SelfSlideshowRunner, "slideshow_runner_" + _SlideshowRunnerCount++); - } - }; - //JssorSlideshowRunner-------- - - //JssorSlider - function JssorSlider(elmt, options) { - var _SelfSlider = this; - - //private classes - function Conveyor() { - var _SelfConveyor = this; - $JssorAnimator$.call(_SelfConveyor, -100000000, 200000000); - - _SelfConveyor.$GetCurrentSlideInfo = function () { - var positionDisplay = _SelfConveyor.$GetPosition_Display(); - var virtualIndex = Math.floor(positionDisplay); - var slideIndex = GetRealIndex(virtualIndex); - var slidePosition = positionDisplay - Math.floor(positionDisplay); - - return { $Index: slideIndex, $VirtualIndex: virtualIndex, $Position: slidePosition }; - }; - - _SelfConveyor.$OnPositionChange = function (oldPosition, newPosition) { - var index = Math.floor(newPosition); - if (index != newPosition && newPosition > oldPosition) - index++; - - ResetNavigator(index, true); - - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_POSITION_CHANGE, GetRealIndex(newPosition), GetRealIndex(oldPosition), newPosition, oldPosition); - }; - } - - //Carousel - function Carousel() { - var _SelfCarousel = this; - - $JssorAnimator$.call(_SelfCarousel, 0, 0, { $LoopLength: _SlideCount }); - - //Carousel Constructor - { - $JssorUtils$.$Each(_SlideItems, function (slideItem) { - (_Loop & 1) && slideItem.$SetLoopLength(_SlideCount); - _SelfCarousel.$Chain(slideItem); - slideItem.$Shift(_ParkingPosition / _StepLength); - }); - } - } - //Carousel - - //Slideshow - function Slideshow() { - var _SelfSlideshow = this; - var _Wrapper = _SlideContainer.$Elmt; - - $JssorAnimator$.call(_SelfSlideshow, -1, 2, { $Easing: $JssorEasing$.$EaseLinear, $Setter: { $Position: SetPosition }, $LoopLength: _SlideCount }, _Wrapper, { $Position: 1 }, { $Position: -1 }); - - _SelfSlideshow.$Wrapper = _Wrapper; - - //Slideshow Constructor - { - $JssorDebug$.$Execute(function () { - $JssorUtils$.$SetAttribute(_SlideContainer.$Elmt, "debug-id", "slide_container"); - }); - } - } - //Slideshow - - //CarouselPlayer - function CarouselPlayer(carousel, slideshow) { - var _SelfCarouselPlayer = this; - var _FromPosition; - var _ToPosition; - var _Duration; - var _StandBy; - var _StandByPosition; - - $JssorAnimator$.call(_SelfCarouselPlayer, -100000000, 200000000); - - _SelfCarouselPlayer.$OnStart = function () { - _IsSliding = true; - _LoadingTicket = null; - - //EVT_SWIPE_START - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_SWIPE_START, GetRealIndex(_Conveyor.$GetPosition()), _Conveyor.$GetPosition()); - }; - - _SelfCarouselPlayer.$OnStop = function () { - - _IsSliding = false; - _StandBy = false; - - var currentSlideInfo = _Conveyor.$GetCurrentSlideInfo(); - - //EVT_SWIPE_END - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_SWIPE_END, GetRealIndex(_Conveyor.$GetPosition()), _Conveyor.$GetPosition()); - - if (!currentSlideInfo.$Position) { - OnPark(currentSlideInfo.$VirtualIndex, _CurrentSlideIndex); - } - }; - - _SelfCarouselPlayer.$OnPositionChange = function (oldPosition, newPosition) { - var toPosition; - - if (_StandBy) - toPosition = _StandByPosition; - else { - toPosition = _ToPosition; - - if (_Duration) - toPosition = _Options.$SlideEasing(newPosition / _Duration) * (_ToPosition - _FromPosition) + _FromPosition; - } - - _Conveyor.$GoToPosition(toPosition); - }; - - _SelfCarouselPlayer.$PlayCarousel = function (fromPosition, toPosition, duration, callback) { - $JssorDebug$.$Execute(function () { - if (_SelfCarouselPlayer.$IsPlaying()) - $JssorDebug$.$Fail("The carousel is already playing."); - }); - - _FromPosition = fromPosition; - _ToPosition = toPosition; - _Duration = duration; - - _Conveyor.$GoToPosition(fromPosition); - _SelfCarouselPlayer.$GoToPosition(0); - - _SelfCarouselPlayer.$PlayToPosition(duration, callback); - }; - - _SelfCarouselPlayer.$StandBy = function (standByPosition) { - _StandBy = true; - _StandByPosition = standByPosition; - _SelfCarouselPlayer.$Play(standByPosition, null, true); - }; - - _SelfCarouselPlayer.$SetStandByPosition = function (standByPosition) { - _StandByPosition = standByPosition; - }; - - _SelfCarouselPlayer.$MoveCarouselTo = function (position) { - _Conveyor.$GoToPosition(position); - }; - - //CarouselPlayer Constructor - { - _Conveyor = new Conveyor(); - - _Conveyor.$Combine(carousel); - _Conveyor.$Combine(slideshow); - } - } - //CarouselPlayer - - //SlideContainer - function SlideContainer() { - var _Self = this; - var elmt = CreatePanel(); - - $JssorUtils$.$CssZIndex(elmt, 0); - - _Self.$Elmt = elmt; - - _Self.$AddClipElement = function (clipElement) { - $JssorUtils$.$AppendChild(elmt, clipElement); - $JssorUtils$.$ShowElement(elmt); - }; - - _Self.$Clear = function () { - $JssorUtils$.$HideElement(elmt); - $JssorUtils$.$ClearInnerHtml(elmt); - }; - } - //SlideContainer - - //SlideItem - function SlideItem(slideElmt, slideIndex) { - - var _SelfSlideItem = this; - - var _CaptionSliderIn; - var _CaptionSliderOut; - var _CaptionSliderCurrent; - var _IsCaptionSliderPlayingWhenDragStart; - - var _Wrapper; - var _BaseElement = slideElmt; - - var _LoadingScreen; - - var _ImageItem; - var _ImageElmts = []; - var _LinkItemOrigin; - var _LinkItem; - var _ImageLoading; - var _ImageLoaded; - var _ImageLazyLoading; - var _ContentRefreshed; - - var _Processor; - - var _PlayerInstanceElement; - var _PlayerInstance; - - var _SequenceNumber; //for debug only - - $JssorAnimator$.call(_SelfSlideItem, -_DisplayPieces, _DisplayPieces + 1, { $SlideItemAnimator: true }); - - function ResetCaptionSlider(fresh) { - _CaptionSliderOut && _CaptionSliderOut.$Revert(); - _CaptionSliderIn && _CaptionSliderIn.$Revert(); - - RefreshContent(slideElmt, fresh); - _ContentRefreshed = true; - - _CaptionSliderIn = new _CaptionSliderOptions.$Class(slideElmt, _CaptionSliderOptions, 1); - $JssorDebug$.$LiveStamp(_CaptionSliderIn, "caption_slider_" + _CaptionSliderCount + "_in"); - _CaptionSliderOut = new _CaptionSliderOptions.$Class(slideElmt, _CaptionSliderOptions); - $JssorDebug$.$LiveStamp(_CaptionSliderOut, "caption_slider_" + _CaptionSliderCount + "_out"); - - $JssorDebug$.$Execute(function () { - _CaptionSliderCount++; - }); - - _CaptionSliderOut.$GoToBegin(); - _CaptionSliderIn.$GoToBegin(); - } - - function EnsureCaptionSliderVersion() { - if (_CaptionSliderIn.$Version < _CaptionSliderOptions.$Version) { - ResetCaptionSlider(); - } - } - - //event handling begin - function LoadImageCompleteEventHandler(completeCallback, loadingScreen, image) { - if (!_ImageLoaded) { - _ImageLoaded = true; - - if (_ImageItem && image) { - var imageWidth = image.width; - var imageHeight = image.height; - var fillWidth = imageWidth; - var fillHeight = imageHeight; - - if (imageWidth && imageHeight && _Options.$FillMode) { - - //0 stretch, 1 contain (keep aspect ratio and put all inside slide), 2 cover (keep aspect ratio and cover whole slide), 4 actual size, 5 contain for large image, actual size for small image, default value is 0 - if (_Options.$FillMode & 3 && (!(_Options.$FillMode & 4) || imageWidth > _SlideWidth || imageHeight > _SlideHeight)) { - var fitHeight = false; - var ratio = _SlideWidth / _SlideHeight * imageHeight / imageWidth; - - if (_Options.$FillMode & 1) { - fitHeight = (ratio > 1); - } - else if (_Options.$FillMode & 2) { - fitHeight = (ratio < 1); - } - fillWidth = fitHeight ? imageWidth * _SlideHeight / imageHeight : _SlideWidth; - fillHeight = fitHeight ? _SlideHeight : imageHeight * _SlideWidth / imageWidth; - } - - $JssorUtils$.$CssWidth(_ImageItem, fillWidth); - $JssorUtils$.$CssHeight(_ImageItem, fillHeight); - $JssorUtils$.$CssTop(_ImageItem, (_SlideHeight - fillHeight) / 2); - $JssorUtils$.$CssLeft(_ImageItem, (_SlideWidth - fillWidth) / 2); - } - - $JssorUtils$.$CssPosition(_ImageItem, "absolute"); - - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_LOAD_END, slideItem); - } - } - - $JssorUtils$.$HideElement(loadingScreen); - completeCallback && completeCallback(_SelfSlideItem); - } - - function LoadSlideshowImageCompleteEventHandler(nextIndex, nextItem, slideshowTransition, loadingTicket) { - if (loadingTicket == _LoadingTicket && _CurrentSlideIndex == slideIndex && _AutoPlay) { - if (!_Frozen) { - var nextRealIndex = GetRealIndex(nextIndex); - _SlideshowRunner.$Initialize(nextRealIndex, slideIndex, nextItem, _SelfSlideItem, slideshowTransition); - nextItem.$HideContentForSlideshow(); - _Slideshow.$Locate(nextRealIndex, 1); - _Slideshow.$GoToPosition(nextRealIndex); - _CarouselPlayer.$PlayCarousel(nextIndex, nextIndex, 0); - } - } - } - - function SlideReadyEventHandler(loadingTicket) { - if (loadingTicket == _LoadingTicket && _CurrentSlideIndex == slideIndex) { - - if (!_Processor) { - var slideshowProcessor = null; - if (_SlideshowRunner) { - if (_SlideshowRunner.$Index == slideIndex) - slideshowProcessor = _SlideshowRunner.$GetProcessor(); - else - _SlideshowRunner.$Clear(); - } - - EnsureCaptionSliderVersion(); - - _Processor = new Processor(slideIndex, slideshowProcessor, _SelfSlideItem.$GetCaptionSliderIn(), _SelfSlideItem.$GetCaptionSliderOut()); - _Processor.$SetPlayer(_PlayerInstance); - } - - !_Processor.$IsPlaying() && _Processor.$Replay(); - } - } - - function ParkEventHandler(currentIndex, previousIndex) { - if (currentIndex == slideIndex) { - - if (currentIndex != previousIndex) - _SlideItems[previousIndex] && _SlideItems[previousIndex].$ParkOut(); - - _PlayerInstance && _PlayerInstance.$Enable(); - - //park in - var loadingTicket = _LoadingTicket = $JssorUtils$.$GetNow(); - _SelfSlideItem.$LoadImage($JssorUtils$.$CreateCallback(null, SlideReadyEventHandler, loadingTicket)); - } - else { - var distance = Math.abs(slideIndex - currentIndex); - var loadRange = _DisplayPieces + _Options.$LazyLoading; - if (!_ImageLazyLoading || distance <= loadRange || _SlideCount - distance <= loadRange) { - _SelfSlideItem.$LoadImage(); - } - } - } - - function SwipeStartEventHandler() { - if (_CurrentSlideIndex == slideIndex && _Processor) { - _Processor.$Stop(); - _PlayerInstance && _PlayerInstance.$Quit(); - _PlayerInstance && _PlayerInstance.$Disable(); - _Processor.$OpenSlideshowPanel(); - } - } - - function DragStartEventHandler() { - if (_CurrentSlideIndex == slideIndex && _Processor) { - _Processor.$Stop(); - } - } - - function LinkClickEventHandler(event) { - if (_LastDragSucceded) { - $JssorUtils$.$CancelEvent(event); - } - else { - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_CLICK, slideIndex, event); - } - } - - function PlayerAvailableEventHandler() { - _PlayerInstance = _PlayerInstanceElement.pInstance; - _Processor && _Processor.$SetPlayer(_PlayerInstance); - } - - _SelfSlideItem.$LoadImage = function (completeCallback, loadingScreen) { - loadingScreen = loadingScreen || _LoadingScreen; - - if (_ImageElmts.length && !_ImageLoaded) { - - $JssorUtils$.$ShowElement(loadingScreen); - - if (!_ImageLoading) { - _ImageLoading = true; - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_LOAD_START); - - $JssorUtils$.$Each(_ImageElmts, function (imageElmt) { - - if (!imageElmt.src) { - imageElmt.src = $JssorUtils$.$GetAttributeEx(imageElmt, "src2"); - $JssorUtils$.$CssDisplay(imageElmt, imageElmt["display-origin"]); - } - }); - } - $JssorUtils$.$LoadImages(_ImageElmts, _ImageItem, $JssorUtils$.$CreateCallback(null, LoadImageCompleteEventHandler, completeCallback, loadingScreen)); - } - else { - LoadImageCompleteEventHandler(completeCallback, loadingScreen); - } - }; - - _SelfSlideItem.$GoForNextSlide = function () { - if (_SlideshowRunner) { - var slideshowTransition = _SlideshowRunner.$GetTransition(_SlideCount); - - if (slideshowTransition) { - var loadingTicket = _LoadingTicket = $JssorUtils$.$GetNow(); - - var nextIndex = slideIndex + 1 * _PlayReverse; - var nextItem = _SlideItems[GetRealIndex(nextIndex)]; - return nextItem.$LoadImage($JssorUtils$.$CreateCallback(null, LoadSlideshowImageCompleteEventHandler, nextIndex, nextItem, slideshowTransition, loadingTicket), _LoadingScreen); - } - } - - PlayTo(_CurrentSlideIndex + _Options.$AutoPlaySteps * _PlayReverse); - }; - - _SelfSlideItem.$TryActivate = function () { - ParkEventHandler(slideIndex, slideIndex); - }; - - _SelfSlideItem.$ParkOut = function () { - //park out - _PlayerInstance && _PlayerInstance.$Quit(); - _PlayerInstance && _PlayerInstance.$Disable(); - _SelfSlideItem.$UnhideContentForSlideshow(); - _Processor && _Processor.$Abort(); - _Processor = null; - ResetCaptionSlider(); - }; - - //for debug only - _SelfSlideItem.$StampSlideItemElements = function (stamp) { - stamp = _SequenceNumber + "_" + stamp; - - $JssorDebug$.$Execute(function () { - if (_ImageItem) - $JssorUtils$.$SetAttribute(_ImageItem, "debug-id", stamp + "_slide_item_image_id"); - - $JssorUtils$.$SetAttribute(slideElmt, "debug-id", stamp + "_slide_item_item_id"); - }); - - $JssorDebug$.$Execute(function () { - $JssorUtils$.$SetAttribute(_Wrapper, "debug-id", stamp + "_slide_item_wrapper_id"); - }); - - $JssorDebug$.$Execute(function () { - $JssorUtils$.$SetAttribute(_LoadingScreen, "debug-id", stamp + "_loading_container_id"); - }); - }; - - _SelfSlideItem.$HideContentForSlideshow = function () { - $JssorUtils$.$HideElement(slideElmt); - }; - - _SelfSlideItem.$UnhideContentForSlideshow = function () { - $JssorUtils$.$ShowElement(slideElmt); - }; - - _SelfSlideItem.$EnablePlayer = function () { - _PlayerInstance && _PlayerInstance.$Enable(); - }; - - function RefreshContent(elmt, fresh, level) { - if (elmt["jssor-slider"] || $JssorUtils$.$GetAttribute(elmt, "u") == "thumb") - return; - - level = level || 0; - - if (!_ContentRefreshed) { - if (elmt.tagName == "IMG") { - _ImageElmts.push(elmt); - - if (!elmt.src) { - _ImageLazyLoading = true; - elmt["display-origin"] = $JssorUtils$.$CssDisplay(elmt); - $JssorUtils$.$HideElement(elmt); - } - } - if ($JssorUtils$.$IsBrowserIe9Earlier()) { - $JssorUtils$.$CssZIndex(elmt, ($JssorUtils$.$CssZIndex(elmt) || 0) + 1); - } - if (_Options.$HWA && $JssorUtils$.$GetWebKitVersion() > 0) { - //if ((_HandleTouchEventOnly && ($JssorUtils$.$GetWebKitVersion() < 534 || !_SlideshowEnabled)) || (!_HandleTouchEventOnly && $JssorUtils$.$GetWebKitVersion() < 535)) { - // $JssorUtils$.$EnableHWA(elmt); - //} - if (!_HandleTouchEventOnly || ($JssorUtils$.$GetWebKitVersion() < 534 || !_SlideshowEnabled)) { - $JssorUtils$.$EnableHWA(elmt); - } - } - } - - var childElements = $JssorUtils$.$GetChildren(elmt); - - $JssorUtils$.$Each(childElements, function (childElement, i) { - - var uAttribute = $JssorUtils$.$GetAttributeEx(childElement, "u"); - if (uAttribute == "player" && !_PlayerInstanceElement) { - _PlayerInstanceElement = childElement; - if (_PlayerInstanceElement.pInstance) { - PlayerAvailableEventHandler(); - } - else { - $JssorUtils$.$AddEvent(_PlayerInstanceElement, "dataavailable", PlayerAvailableEventHandler); - } - } - - if (uAttribute == "caption") { - if (!$JssorUtils$.$IsBrowserIE() && !fresh) { - var captionElement = $JssorUtils$.$CloneNode(childElement, true); - $JssorUtils$.$InsertBefore(elmt, captionElement, childElement); - $JssorUtils$.$RemoveChild(elmt, childElement); - childElement = captionElement; - - fresh = true; - } - } - else if (!_ContentRefreshed && !level && !_ImageItem && $JssorUtils$.$GetAttributeEx(childElement, "u") == "image") { - _ImageItem = childElement; - - if (_ImageItem) { - if (_ImageItem.tagName == "A") { - _LinkItemOrigin = _ImageItem; - $JssorUtils$.$SetStyles(_LinkItemOrigin, _StyleDef); - - _LinkItem = $JssorUtils$.$CloneNode(_ImageItem, false); - //cancel click event on
      element when a drag of slide succeeded - $JssorUtils$.$AddEvent(_LinkItem, "click", LinkClickEventHandler); - - $JssorUtils$.$SetStyles(_LinkItem, _StyleDef); - $JssorUtils$.$CssDisplay(_LinkItem, "block"); - $JssorUtils$.$CssOpacity(_LinkItem, 0); - $JssorUtils$.$Css(_LinkItem, "backgroundColor", "#000"); - - _ImageItem = $JssorUtils$.$FindFirstChildByTag(_ImageItem, "IMG"); - - $JssorDebug$.$Execute(function () { - if (!_ImageItem) { - $JssorDebug$.$Error("slide html code definition error, no 'IMG' found in a 'image with link' slide.\r\n" + elmt.outerHTML); - } - }); - } - _ImageItem.border = 0; - - $JssorUtils$.$SetStyles(_ImageItem, _StyleDef); - } - } - - RefreshContent(childElement, fresh, level + 1); - }); - } - - _SelfSlideItem.$OnInnerOffsetChange = function (oldOffset, newOffset) { - var slidePosition = _DisplayPieces - newOffset; - - SetPosition(_Wrapper, slidePosition); - - //following lines are for future usage, not ready yet - //if (!_IsDragging || !_IsCaptionSliderPlayingWhenDragStart) { - // var _DealWithParallax; - // if (IsCurrentSlideIndex(slideIndex)) { - // if (_CaptionSliderOptions.$PlayOutMode == 2) - // _DealWithParallax = true; - // } - // else { - // if (!_CaptionSliderOptions.$PlayInMode) { - // //PlayInMode: 0 none - // _CaptionSliderIn.$GoToEnd(); - // } - // //else if (_CaptionSliderOptions.$PlayInMode == 1) { - // // //PlayInMode: 1 chain - // // _CaptionSliderIn.$GoToBegin(); - // //} - // else if (_CaptionSliderOptions.$PlayInMode == 2) { - // //PlayInMode: 2 parallel - // _DealWithParallax = true; - // } - // } - - // if (_DealWithParallax) { - // _CaptionSliderIn.$GoToPosition((_CaptionSliderIn.$GetPosition_OuterEnd() - _CaptionSliderIn.$GetPosition_OuterBegin()) * Math.abs(newOffset - 1) * .8 + _CaptionSliderIn.$GetPosition_OuterBegin()); - // } - //} - }; - - _SelfSlideItem.$GetCaptionSliderIn = function () { - return _CaptionSliderIn; - }; - - _SelfSlideItem.$GetCaptionSliderOut = function () { - return _CaptionSliderOut; - }; - - _SelfSlideItem.$Index = slideIndex; - - $JssorEventManager$.call(_SelfSlideItem); - - //SlideItem Constructor - { - - var thumb = $JssorUtils$.$FindFirstChildByAttribute(slideElmt, "thumb"); - if (thumb) { - _SelfSlideItem.$Thumb = $JssorUtils$.$CloneNode(thumb, true); - $JssorUtils$.$RemoveAttribute(thumb, "id"); - $JssorUtils$.$HideElement(thumb); - } - $JssorUtils$.$ShowElement(slideElmt); - - _LoadingScreen = $JssorUtils$.$CloneNode(_LoadingContainer, true); - $JssorUtils$.$CssZIndex(_LoadingScreen, 1000); - - //cancel click event on element when a drag of slide succeeded - $JssorUtils$.$AddEvent(slideElmt, "click", LinkClickEventHandler); - - ResetCaptionSlider(true); - - _SelfSlideItem.$Image = _ImageItem; - _SelfSlideItem.$Link = _LinkItem; - - _SelfSlideItem.$Item = slideElmt; - - _SelfSlideItem.$Wrapper = _Wrapper = slideElmt; - $JssorUtils$.$AppendChild(_Wrapper, _LoadingScreen); - - _SelfSlider.$On(203, ParkEventHandler); - _SelfSlider.$On(22, DragStartEventHandler); - _SelfSlider.$On(24, SwipeStartEventHandler); - - $JssorDebug$.$Execute(function () { - _SequenceNumber = _SlideItemCreatedCount++; - }); - - $JssorDebug$.$Execute(function () { - $JssorUtils$.$SetAttribute(_Wrapper, "debug-id", "slide-" + slideIndex); - }); - } - } - //SlideItem - - //Processor - function Processor(slideIndex, slideshowProcessor, captionSliderIn, captionSliderOut) { - - var _SelfProcessor = this; - - var _ProgressBegin = 0; - var _SlideshowBegin = 0; - var _SlideshowEnd; - var _CaptionInBegin; - var _IdleBegin; - var _IdleEnd; - var _ProgressEnd; - - var _IsSlideshowRunning; - var _IsRollingBack; - - var _PlayerInstance; - var _IsPlayerOnService; - - var slideItem = _SlideItems[slideIndex]; - - $JssorAnimator$.call(_SelfProcessor, 0, 0); - - function UpdateLink() { - - $JssorUtils$.$ClearChildren(_LinkContainer); - - if (_ShowLink && _IsSlideshowRunning && slideItem.$Link) { - $JssorUtils$.$AppendChild(_LinkContainer, slideItem.$Link); - } - - $JssorUtils$.$ShowElement(_LinkContainer, _IsSlideshowRunning || !slideItem.$Image); - } - - function ProcessCompleteEventHandler() { - - if (_IsRollingBack) { - _IsRollingBack = false; - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_ROLLBACK_END, slideIndex, _IdleEnd, _ProgressBegin, _IdleBegin, _IdleEnd, _ProgressEnd); - _SelfProcessor.$GoToPosition(_IdleBegin); - } - - _SelfProcessor.$Replay(); - } - - function PlayerSwitchEventHandler(isOnService) { - _IsPlayerOnService = isOnService; - - _SelfProcessor.$Stop(); - _SelfProcessor.$Replay(); - } - - _SelfProcessor.$Replay = function () { - - var currentPosition = _SelfProcessor.$GetPosition_Display(); - - if (!_IsDragging && !_IsSliding && !_IsPlayerOnService && _CurrentSlideIndex == slideIndex) { - - if (!currentPosition) { - if (_SlideshowEnd && !_IsSlideshowRunning) { - _IsSlideshowRunning = true; - - _SelfProcessor.$OpenSlideshowPanel(true); - - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_SLIDESHOW_START, slideIndex, _ProgressBegin, _SlideshowBegin, _SlideshowEnd, _ProgressEnd); - } - - UpdateLink(); - } - - var toPosition; - var stateEvent = JssorSlider.$EVT_STATE_CHANGE; - - if (currentPosition != _ProgressEnd) { - if (currentPosition == _IdleEnd) { - toPosition = _ProgressEnd; - } - else if (currentPosition == _IdleBegin) { - toPosition = _IdleEnd; - } - else if (!currentPosition) { - toPosition = _IdleBegin; - } - else if (currentPosition > _IdleEnd) { - _IsRollingBack = true; - toPosition = _IdleEnd; - stateEvent = JssorSlider.$EVT_ROLLBACK_START; - } - else { - //continue from break (by drag or lock) - toPosition = _SelfProcessor.$GetPlayToPosition(); - } - } - - _SelfSlider.$TriggerEvent(stateEvent, slideIndex, currentPosition, _ProgressBegin, _IdleBegin, _IdleEnd, _ProgressEnd); - - var allowAutoPlay = _AutoPlay && (!_HoverToPause || _HoverStatus); - - if (currentPosition == _ProgressEnd) { - allowAutoPlay && slideItem.$GoForNextSlide(); - } - else if (allowAutoPlay || currentPosition != _IdleEnd) { - _SelfProcessor.$PlayToPosition(toPosition, ProcessCompleteEventHandler); - } - } - }; - - _SelfProcessor.$Abort = function () { - _SlideshowRunner && _SlideshowRunner.$Index == slideIndex && _SlideshowRunner.$Clear(); - - var currentPosition = _SelfProcessor.$GetPosition_Display(); - if (currentPosition < _ProgressEnd) { - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_STATE_CHANGE, slideIndex, -currentPosition - 1, _ProgressBegin, _IdleBegin, _IdleEnd, _ProgressEnd); - } - }; - - _SelfProcessor.$OpenSlideshowPanel = function (open) { - if (slideshowProcessor) { - $JssorUtils$.$CssOverflow(_SlideshowPanel, open && slideshowProcessor.$Transition.$Outside ? "" : "hidden"); - } - }; - - _SelfProcessor.$OnInnerOffsetChange = function (oldPosition, newPosition) { - - if (_IsSlideshowRunning && newPosition >= _SlideshowEnd) { - _IsSlideshowRunning = false; - UpdateLink(); - slideItem.$UnhideContentForSlideshow(); - _SlideshowRunner.$Clear(); - - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_SLIDESHOW_END, slideIndex, _ProgressBegin, _SlideshowBegin, _SlideshowEnd, _ProgressEnd); - } - - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_PROGRESS_CHANGE, slideIndex, newPosition, _ProgressBegin, _IdleBegin, _IdleEnd, _ProgressEnd); - }; - - _SelfProcessor.$SetPlayer = function (playerInstance) { - if (playerInstance && !_PlayerInstance) { - _PlayerInstance = playerInstance; - - playerInstance.$On($JssorPlayer$.$EVT_SWITCH, PlayerSwitchEventHandler); - } - }; - - //Processor Constructor - { - if (slideshowProcessor) { - _SelfProcessor.$Chain(slideshowProcessor); - } - - _SlideshowEnd = _SelfProcessor.$GetPosition_OuterEnd(); - _CaptionInBegin = _SelfProcessor.$GetPosition_OuterEnd(); - _SelfProcessor.$Chain(captionSliderIn); - _IdleBegin = captionSliderIn.$GetPosition_OuterEnd(); - _IdleEnd = _IdleBegin + _Options.$AutoPlayInterval; - - captionSliderOut.$Shift(_IdleEnd); - _SelfProcessor.$Combine(captionSliderOut); - _ProgressEnd = _SelfProcessor.$GetPosition_OuterEnd(); - } - } - //Processor - //private classes - - function SetPosition(elmt, position) { - var orientation = _DragOrientation > 0 ? _DragOrientation : _PlayOrientation; - var x = _StepLengthX * position * (orientation & 1); - var y = _StepLengthY * position * ((orientation >> 1) & 1); - - if (!$JssorUtils$.$IsBrowserChrome()) { - x = Math.round(x); - y = Math.round(y); - } - - if ($JssorUtils$.$IsBrowserIE() && $JssorUtils$.$GetBrowserVersion() >= 10 && $JssorUtils$.$GetBrowserVersion() < 11) { - elmt.style.msTransform = "translate(" + x + "px, " + y + "px)"; - } - else if ($JssorUtils$.$IsBrowserChrome() && $JssorUtils$.$GetBrowserVersion() >= 30 && $JssorUtils$.$GetBrowserVersion() < 34) { - elmt.style.WebkitTransition = "transform 0s"; - elmt.style.WebkitTransform = "translate3d(" + x + "px, " + y + "px, 0px) perspective(2000px)"; - } - else { - $JssorUtils$.$CssLeft(elmt, x); - $JssorUtils$.$CssTop(elmt, y); - } - } - - //Event handling begin - - function OnMouseDown(event) { - _LastDragSucceded = 0; - - var tagName = $JssorUtils$.$GetEventSrcElement(event).tagName; - if (!_DragOrientationRegistered && tagName != "INPUT" && tagName != "TEXTAREA" && RegisterDrag()) { - OnDragStart(event); - } - } - - function OnDragStart(event) { - _DragStart_CarouselPlaying = _IsSliding; - - _IsDragging = true; - _DragInvalid = false; - _LoadingTicket = null; - - $JssorUtils$.$AddEvent(document, _MoveEvent, OnDragMove); - - _LastTimeMoveByDrag = $JssorUtils$.$GetNow() - 50; - _DragStartPlayToPosition = _CarouselPlayer.$GetPlayToPosition(); - _CarouselPlayer.$Stop(); - - if (!_DragStart_CarouselPlaying) - _DragOrientation = 0; - - if (_HandleTouchEventOnly) { - var touchPoint = event.touches[0]; - _DragStartMouseX = touchPoint.clientX; - _DragStartMouseY = touchPoint.clientY; - } - else { - var mousePoint = $JssorUtils$.$GetMousePosition(event); - - _DragStartMouseX = mousePoint.x; - _DragStartMouseY = mousePoint.y; - - $JssorUtils$.$CancelEvent(event); - } - - _DragOffsetTotal = 0; - _DragOffsetLastTime = 0; - _DragIndexAdjust = 0; - _DragStartPosition = _Conveyor.$GetPosition(); - - //Trigger EVT_DRAGSTART - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_DRAG_START, GetRealIndex(_DragStartPosition), _DragStartPosition, event); - } - - function OnDragMove(event) { - if (_IsDragging && (!$JssorUtils$.$IsBrowserIe9Earlier() || event.button)) { - var actionPoint; - - if (_HandleTouchEventOnly) { - var touches = event.touches; - if (touches && touches.length > 0) { - actionPoint = new $JssorPoint$(touches[0].clientX, touches[0].clientY); - } - } - else { - actionPoint = $JssorUtils$.$GetMousePosition(event); - } - - if (actionPoint) { - var distanceX = actionPoint.x - _DragStartMouseX; - var distanceY = actionPoint.y - _DragStartMouseY; - - - if (Math.floor(_DragStartPosition) != _DragStartPosition) - _DragOrientation = _DragOrientation || (_PlayOrientation & _DragOrientationRegistered); - - if ((distanceX || distanceY) && !_DragOrientation) { - if (_DragOrientationRegistered == 3) { - if (Math.abs(distanceY) > Math.abs(distanceX)) { - _DragOrientation = 2; - } - else - _DragOrientation = 1; - } - else { - _DragOrientation = _DragOrientationRegistered; - } - - if (_HandleTouchEventOnly && _DragOrientation == 1 && Math.abs(distanceY) - Math.abs(distanceX) > 3) { - _DragInvalid = true; - } - } - - if (_DragOrientation) { - var distance = distanceY; - var stepLength = _StepLengthY; - - if (_DragOrientation == 1) { - distance = distanceX; - stepLength = _StepLengthX; - } - - if (!(_Loop & 1)) { - if (distance > 0) { - var normalDistance = stepLength * _CurrentSlideIndex; - var sqrtDistance = distance - normalDistance; - if (sqrtDistance > 0) { - distance = normalDistance + Math.sqrt(sqrtDistance) * 5; - } - } - - if (distance < 0) { - var normalDistance = stepLength * (_SlideCount - _DisplayPieces - _CurrentSlideIndex); - var sqrtDistance = -distance - normalDistance; - - if (sqrtDistance > 0) { - distance = -normalDistance - Math.sqrt(sqrtDistance) * 5; - } - } - } - - if (_DragOffsetTotal - _DragOffsetLastTime < -2) { - _DragIndexAdjust = 1; - } - else if (_DragOffsetTotal - _DragOffsetLastTime > 2) { - _DragIndexAdjust = 0; - } - - _DragOffsetLastTime = _DragOffsetTotal; - _DragOffsetTotal = distance; - _PositionToGoByDrag = _DragStartPosition - _DragOffsetTotal / stepLength / (_ScaleRatio || 1); - - if (_DragOffsetTotal && _DragOrientation && !_DragInvalid) { - $JssorUtils$.$CancelEvent(event); - if (!_IsSliding) { - _CarouselPlayer.$StandBy(_PositionToGoByDrag); - } - else - _CarouselPlayer.$SetStandByPosition(_PositionToGoByDrag); - } - else if ($JssorUtils$.$IsBrowserIe9Earlier()) { - $JssorUtils$.$CancelEvent(event); - } - } - } - } - else { - OnDragEnd(event); - } - } - - function OnDragEnd(event) { - UnregisterDrag(); - - if (_IsDragging) { - - _IsDragging = false; - - _LastTimeMoveByDrag = $JssorUtils$.$GetNow(); - - $JssorUtils$.$RemoveEvent(document, _MoveEvent, OnDragMove); - - _LastDragSucceded = _DragOffsetTotal; - - _LastDragSucceded && $JssorUtils$.$CancelEvent(event); - - _CarouselPlayer.$Stop(); - - var currentPosition = _Conveyor.$GetPosition(); - - //Trigger EVT_DRAG_END - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_DRAG_END, GetRealIndex(currentPosition), currentPosition, GetRealIndex(_DragStartPosition), _DragStartPosition, event); - - var toPosition = Math.floor(_DragStartPosition); - - if (Math.abs(_DragOffsetTotal) >= _Options.$MinDragOffsetToSlide) { - toPosition = Math.floor(currentPosition); - toPosition += _DragIndexAdjust; - } - - if (!(_Loop & 1)) { - toPosition = Math.min(_SlideCount - _DisplayPieces, Math.max(toPosition, 0)); - } - - var t = Math.abs(toPosition - currentPosition); - t = 1 - Math.pow(1 - t, 5); - - if (!_LastDragSucceded && _DragStart_CarouselPlaying) { - _CarouselPlayer.$Continue(_DragStartPlayToPosition); - } - else if (currentPosition == toPosition) { - _CurrentSlideItem.$EnablePlayer(); - _CurrentSlideItem.$TryActivate(); - } - else { - _CarouselPlayer.$PlayCarousel(currentPosition, toPosition, t * _SlideDuration); - } - } - } - //Event handling end - - function SetCurrentSlideIndex(index) { - _PrevSlideItem = _SlideItems[_CurrentSlideIndex]; - _PreviousSlideIndex = _CurrentSlideIndex; - _CurrentSlideIndex = GetRealIndex(index); - _CurrentSlideItem = _SlideItems[_CurrentSlideIndex]; - ResetNavigator(index); - return _CurrentSlideIndex; - } - - function OnPark(slideIndex, prevIndex) { - _DragOrientation = 0; - - SetCurrentSlideIndex(slideIndex); - - //Trigger EVT_PARK - _SelfSlider.$TriggerEvent(JssorSlider.$EVT_PARK, GetRealIndex(slideIndex), prevIndex); - } - - function ResetNavigator(index, temp) { - _TempSlideIndex = index; - $JssorUtils$.$Each(_Navigators, function (navigator) { - navigator.$SetCurrentIndex(GetRealIndex(index), index, temp); - }); - } - - function RegisterDrag() { - var dragRegistry = JssorSlider.$DragRegistry || 0; - var dragOrientation = _DragEnabled; - if (_HandleTouchEventOnly) - (dragOrientation & 1) && (dragOrientation &= 1); - JssorSlider.$DragRegistry |= dragOrientation; - - return (_DragOrientationRegistered = dragOrientation & ~dragRegistry); - } - - function UnregisterDrag() { - if (_DragOrientationRegistered) { - JssorSlider.$DragRegistry &= ~_DragEnabled; - _DragOrientationRegistered = 0; - } - } - - function CreatePanel() { - var div = $JssorUtils$.$CreateDivElement(); - - $JssorUtils$.$SetStyles(div, _StyleDef); - $JssorUtils$.$CssPosition(div, "absolute"); - - return div; - } - - function GetRealIndex(index) { - return (index % _SlideCount + _SlideCount) % _SlideCount; - } - - function IsCurrentSlideIndex(index) { - return GetRealIndex(index) == _CurrentSlideIndex; - } - - function IsPreviousSlideIndex(index) { - return GetRealIndex(index) == _PreviousSlideIndex; - } - - //Navigation Request Handler - function NavigationClickHandler(index, relative) { - if (relative) { - if (!_Loop) { - //Stop at threshold - index = Math.min(Math.max(index + _TempSlideIndex, 0), _SlideCount - _DisplayPieces); - relative = false; - } - else if (_Loop & 2) { - //Rewind - index = GetRealIndex(index + _TempSlideIndex); - relative = false; - } - } - PlayTo(index, _Options.$SlideDuration, relative); - } - - function ShowNavigators() { - $JssorUtils$.$Each(_Navigators, function (navigator) { - navigator.$Show(navigator.$Options.$ChanceToShow > _HoverStatus); - }); - } - - function MainContainerMouseOutEventHandler(event) { - event = $JssorUtils$.$GetEvent(event); - // we have to watch out for a tricky case: a mouseout occurs on a - // child element, but the mouse is still inside the parent element. - // the mouseout event will bubble up to us. this happens in all - // browsers, so we need to correct for this. technique from: - // http://www.quirksmode.org/js/events_mouse.html - var from = event.target ? event.target : event.srcElement; - var to = event.relatedTarget ? event.relatedTarget : event.toElement; - - if (!$JssorUtils$.$IsChild(elmt, from) || $JssorUtils$.$IsChild(elmt, to)) { - // the mouseout needs to start from this or a child node, and it - // needs to end on this or an outer node. - return; - } - - _HoverStatus = 1; - - ShowNavigators(); - - _SlideItems[_CurrentSlideIndex].$TryActivate(); - } - - function MainContainerMouseOverEventHandler() { - _HoverStatus = 0; - - ShowNavigators(); - } - - function AdjustSlidesContainerSize() { - _StyleDef = { $Width: _SlideWidth, $Height: _SlideHeight, $Top: 0, $Left: 0 }; - - $JssorUtils$.$Each(_SlideElmts, function (slideElmt, i) { - - $JssorUtils$.$SetStyles(slideElmt, _StyleDef); - $JssorUtils$.$CssPosition(slideElmt, "absolute"); - $JssorUtils$.$CssOverflow(slideElmt, "hidden"); - - $JssorUtils$.$HideElement(slideElmt); - }); - - $JssorUtils$.$SetStyles(_LoadingContainer, _StyleDef); - } - - function PlayToOffset(offset, slideDuration) { - PlayTo(offset, slideDuration, true); - } - - function PlayTo(slideIndex, slideDuration, relative) { - /// - /// PlayTo( slideIndex [, slideDuration] ); //Play slider to position 'slideIndex' within a period calculated base on 'slideDuration'. - /// - /// - /// slide slideIndex or position will be playing to - /// - /// - /// base slide duration in milliseconds to calculate the whole duration to complete this play request. - /// default value is '$SlideDuration' value which is specified when initialize the slider. - /// - /// http://msdn.microsoft.com/en-us/library/vstudio/bb385682.aspx - /// http://msdn.microsoft.com/en-us/library/vstudio/hh542720.aspx - if (_CarouselEnabled && (!_IsDragging || _Options.$NaviQuitDrag)) { - _IsSliding = true; - _IsDragging = false; - _CarouselPlayer.$Stop(); - - { - //Slide Duration - if ($JssorUtils$.$IsUndefined(slideDuration)) - slideDuration = _SlideDuration; - - var positionDisplay = _Carousel.$GetPosition_Display(); - var positionTo = slideIndex; - if (relative) { - positionTo = positionDisplay + slideIndex; - if (slideIndex > 0) - positionTo = Math.ceil(positionTo); - else - positionTo = Math.floor(positionTo); - } - - - if (!(_Loop & 1)) { - positionTo = GetRealIndex(positionTo); - positionTo = Math.max(0, Math.min(positionTo, _SlideCount - _DisplayPieces)); - } - - var positionOffset = (positionTo - positionDisplay) % _SlideCount; - positionTo = positionDisplay + positionOffset; - - var duration = positionDisplay == positionTo ? 0 : slideDuration * Math.abs(positionOffset); - duration = Math.min(duration, slideDuration * _DisplayPieces * 1.5); - - _CarouselPlayer.$PlayCarousel(positionDisplay, positionTo, duration || 1); - } - } - } - - //private functions - - //member functions - - _SelfSlider.$PlayTo = PlayTo; - - _SelfSlider.$GoTo = function (slideIndex) { - /// - /// instance.$GoTo( slideIndex ); //Go to the specifed slide immediately with no play. - /// - PlayTo(slideIndex, 1); - }; - - _SelfSlider.$Next = function () { - /// - /// instance.$Next(); //Play the slider to next slide. - /// - PlayToOffset(1); - }; - - _SelfSlider.$Prev = function () { - /// - /// instance.$Prev(); //Play the slider to previous slide. - /// - PlayToOffset(-1); - }; - - _SelfSlider.$Pause = function () { - /// - /// instance.$Pause(); //Pause the slider, prevent it from auto playing. - /// - _AutoPlay = false; - }; - - _SelfSlider.$Play = function () { - /// - /// instance.$Play(); //Start auto play if the slider is currently paused. - /// - if (!_AutoPlay) { - _AutoPlay = true; - _SlideItems[_CurrentSlideIndex] && _SlideItems[_CurrentSlideIndex].$TryActivate(); - } - }; - - _SelfSlider.$SetSlideshowTransitions = function (transitions) { - /// - /// instance.$SetSlideshowTransitions( transitions ); //Reset slideshow transitions for the slider. - /// - $JssorDebug$.$Execute(function () { - if (!transitions || !transitions.length) { - $JssorDebug$.$Error("Can not set slideshow transitions, no transitions specified."); - } - }); - - _Options.$SlideshowOptions.$Transitions = transitions; - }; - - _SelfSlider.$SetCaptionTransitions = function (transitions) { - /// - /// instance.$SetCaptionTransitions( transitions ); //Reset caption transitions for the slider. - /// - $JssorDebug$.$Execute(function () { - if (!transitions || !transitions.length) { - $JssorDebug$.$Error("Can not set caption transitions, no transitions specified"); - } - }); - - _CaptionSliderOptions.$CaptionTransitions = transitions; - _CaptionSliderOptions.$Version = $JssorUtils$.$GetNow(); - }; - - _SelfSlider.$SlidesCount = function () { - /// - /// instance.$SlidesCount(); //Retrieve slides count of the slider. - /// - return _SlideElmts.length; - }; - - _SelfSlider.$CurrentIndex = function () { - /// - /// instance.$CurrentIndex(); //Retrieve current slide index of the slider. - /// - return _CurrentSlideIndex; - }; - - _SelfSlider.$IsAutoPlaying = function () { - /// - /// instance.$IsAutoPlaying(); //Retrieve auto play status of the slider. - /// - return _AutoPlay; - }; - - _SelfSlider.$IsDragging = function () { - /// - /// instance.$IsDragging(); //Retrieve drag status of the slider. - /// - return _IsDragging; - }; - - _SelfSlider.$IsSliding = function () { - /// - /// instance.$IsSliding(); //Retrieve right<-->left sliding status of the slider. - /// - return _IsSliding; - }; - - _SelfSlider.$IsMouseOver = function () { - /// - /// instance.$IsMouseOver(); //Retrieve mouse over status of the slider. - /// - return !_HoverStatus; - }; - - _SelfSlider.$LastDragSucceded = function () { - /// - /// instance.$IsLastDragSucceded(); //Retrieve last drag succeded status, returns 0 if failed, returns drag offset if succeded - /// - return _LastDragSucceded; - }; - - _SelfSlider.$GetOriginalWidth = function () { - /// - /// instance.$GetOriginalWidth(); //Retrieve original width of the slider. - /// - return $JssorUtils$.$CssWidth(_ScaleWrapper || elmt); - }; - - _SelfSlider.$GetOriginalHeight = function () { - /// - /// instance.$GetOriginalWidth(); //Retrieve original height of the slider. - /// - return $JssorUtils$.$CssHeight(_ScaleWrapper || elmt); - }; - - _SelfSlider.$GetScaleWidth = function () { - /// - /// instance.$GetScaleWidth(); //Retrieve scaled width the slider currently displays. - /// - return $JssorUtils$.$CssWidth(elmt); - }; - - _SelfSlider.$GetScaleHeight = function () { - /// - /// instance.$GetScaleHeight(); //Retrieve scaled height the slider currently displays. - /// - return $JssorUtils$.$CssHeight(elmt); - }; - - _SelfSlider.$SetScaleWidth = function (width) { - /// - /// instance.$SetScaleWidth( width ); //Scale the slider to new width and keep aspect ratio. - /// - $JssorDebug$.$Execute(function () { - if (!width || width < 0) { - $JssorDebug$.$Fail("'$SetScaleWidth' error, 'width' should be positive value."); - } - }); - - if (!_ScaleWrapper) { - $JssorDebug$.$Execute(function () { - var originalWidthStr = $JssorUtils$.$Css(elmt, "width"); - var originalHeightStr = $JssorUtils$.$Css(elmt, "height"); - var originalWidth = $JssorUtils$.$CssP(elmt, "width"); - var originalHeight = $JssorUtils$.$CssP(elmt, "height"); - - if (!originalWidthStr) { - $JssorDebug$.$Fail("Cannot scale jssor slider, 'width' of 'outer container' not specified. Please specify 'width' in pixel. e.g. 'width: 600px;'"); - } - - if (!originalHeightStr) { - $JssorDebug$.$Fail("Cannot scale jssor slider, 'height' of 'outer container' not specified. Please specify 'height' in pixel. e.g. 'height: 300px;'"); - } - - if (originalWidthStr.indexOf('%') != -1) { - $JssorDebug$.$Fail("Cannot scale jssor slider, 'width' of 'outer container' not valid. Please specify 'width' in pixel. e.g. 'width: 600px;'"); - } - - if (originalHeightStr.indexOf('%') != -1) { - $JssorDebug$.$Fail("Cannot scale jssor slider, 'height' of 'outer container' not valid. Please specify 'height' in pixel. e.g. 'height: 300px;'"); - } - - if (!originalWidth) { - $JssorDebug$.$Fail("Cannot scale jssor slider, 'width' of 'outer container' not valid. 'width' of 'outer container' should be positive number. e.g. 'width: 600px;'"); - } - - if (!originalHeight) { - $JssorDebug$.$Fail("Cannot scale jssor slider, 'height' of 'outer container' not valid. 'height' of 'outer container' should be positive number. e.g. 'height: 300px;'"); - } - }); - - //var innerWrapper = $JssorUtils$.$CloneNode(elmt, false); - //$JssorUtils$.$RemoveAttribute(innerWrapper, "id"); - var innerWrapper = $JssorUtils$.$CreateDivElement(document); - $JssorUtils$.$CssCssText(innerWrapper, $JssorUtils$.$CssCssText(elmt)); - $JssorUtils$.$SetClassName(innerWrapper, $JssorUtils$.$GetClassName(elmt)); - - $JssorUtils$.$CssPosition(innerWrapper, "relative"); - $JssorUtils$.$CssTop(innerWrapper, 0); - $JssorUtils$.$CssLeft(innerWrapper, 0); - $JssorUtils$.$CssOverflow(innerWrapper, "visible"); - - //_ScaleWrapper = $JssorUtils$.$CloneNode(elmt, false); - //$JssorUtils$.$RemoveAttribute(_ScaleWrapper, "id"); - //$JssorUtils$.$CssCssText(_ScaleWrapper, ""); - _ScaleWrapper = $JssorUtils$.$CreateDivElement(document); - - $JssorUtils$.$CssPosition(_ScaleWrapper, "absolute"); - $JssorUtils$.$CssTop(_ScaleWrapper, 0); - $JssorUtils$.$CssLeft(_ScaleWrapper, 0); - $JssorUtils$.$CssWidth(_ScaleWrapper, $JssorUtils$.$CssWidth(elmt)); - $JssorUtils$.$CssHeight(_ScaleWrapper, $JssorUtils$.$CssHeight(elmt)); - $JssorUtils$.$SetStyleTransformOrigin(_ScaleWrapper, "0 0"); - - $JssorUtils$.$AppendChild(_ScaleWrapper, innerWrapper); - - var children = $JssorUtils$.$GetChildren(elmt); - $JssorUtils$.$AppendChild(elmt, _ScaleWrapper); - - $JssorUtils$.$Css(elmt, "backgroundImage", ""); - - var noMoveElmts = { - "navigator": _BulletNavigatorOptions && _BulletNavigatorOptions.$Scale == false, - "arrowleft": _ArrowNavigatorOptions && _ArrowNavigatorOptions.$Scale == false, - "arrowright": _ArrowNavigatorOptions && _ArrowNavigatorOptions.$Scale == false, - "thumbnavigator": _ThumbnailNavigatorOptions && _ThumbnailNavigatorOptions.$Scale == false, - "thumbwrapper": _ThumbnailNavigatorOptions && _ThumbnailNavigatorOptions.$Scale == false - }; - - $JssorUtils$.$Each(children, function (child) { - $JssorUtils$.$AppendChild(noMoveElmts[$JssorUtils$.$GetAttributeEx(child, "u")] ? elmt : innerWrapper, child); - }); - - $JssorUtils$.$ShowElement(innerWrapper); - $JssorUtils$.$ShowElement(_ScaleWrapper); - } - - $JssorDebug$.$Execute(function () { - if (!_InitialScrollWidth) { - _InitialScrollWidth = _SelfSlider.$Elmt.scrollWidth; - } - }); - - _ScaleRatio = width / $JssorUtils$.$CssWidth(_ScaleWrapper); - $JssorUtils$.$SetStyleScale(_ScaleWrapper, _ScaleRatio); - - $JssorUtils$.$CssWidth(elmt, width); - $JssorUtils$.$CssHeight(elmt, _ScaleRatio * $JssorUtils$.$CssHeight(_ScaleWrapper)); - - $JssorUtils$.$Each(_Navigators, function (navigator) { - navigator.$Relocate(); - }); - }; - - _SelfSlider.$GetVirtualIndex = function (index) { - var parkingIndex = Math.ceil(GetRealIndex(_ParkingPosition / _StepLength)); - var displayIndex = GetRealIndex(index - _CurrentSlideIndex + parkingIndex); - - if (displayIndex > _DisplayPieces) { - if (index - _CurrentSlideIndex > _SlideCount / 2) - index -= _SlideCount; - else if (index - _CurrentSlideIndex <= -_SlideCount / 2) - index += _SlideCount; - } - else { - index = _CurrentSlideIndex + displayIndex - parkingIndex; - } - - return index; - }; - - //member functions - - //Inherit $JssorEventManager$ - $JssorEventManager$.call(this); - - //initialize member variables - _SelfSlider.$Elmt = elmt = $JssorUtils$.$GetElement(elmt); - //initialize member variables - - var _InitialScrollWidth; //for debug only - var _CaptionSliderCount = 1; //for debug only - - $JssorDebug$.$Execute(function () { - var outerContainerElmt = $JssorUtils$.$GetElement(elmt); - if (!outerContainerElmt) - $JssorDebug$.$Fail("Outer container '" + elmt + "' not found."); - }); - - var _Options = $JssorUtils$.$Extend({ - $FillMode: 0, //[Optional] The way to fill image in slide, 0 stretch, 1 contain (keep aspect ratio and put all inside slide), 2 cover (keep aspect ratio and cover whole slide), 4 actual size, 5 contain for large image, actual size for small image, default value is 0 - $LazyLoading: 1, //[Optional] For image with lazy loading format (), by default it will be loaded only when the slide comes. - //But an integer value (maybe 1, 2 or 3) indicates that how far of nearby slides should be loaded immediately as well, default value is 1. - $StartIndex: 0, //[Optional] Index of slide to display when initialize, default value is 0 - $AutoPlay: false, //[Optional] Whether to auto play, default value is false - $Loop: 1, //[Optional] Enable loop(circular) of carousel or not, 0: stop, 1: loop, 2 rewind, default value is 1 - $HWA: true, //[Optional] Enable hardware acceleration or not, default value is true - $NaviQuitDrag: true, - $AutoPlaySteps: 1, //[Optional] Steps to go of every play (this options applys only when slideshow disabled), default value is 1 - $AutoPlayInterval: 3000, //[Optional] Interval to play next slide since the previous stopped if a slideshow is auto playing, default value is 3000 - $PauseOnHover: 1, //[Optional] Whether to pause when mouse over if a slider is auto playing, 0 no pause, 1 pause for desktop, 2 pause for touch device, 3 pause for desktop and touch device, default value is 1 - - $SlideDuration: 500, //[Optional] Specifies default duration (swipe) for slide in milliseconds, default value is 400 - $SlideEasing: $JssorEasing$.$EaseOutQuad, //[Optional] Specifies easing for right to left animation, default value is $JssorEasing$.$EaseOutQuad - $MinDragOffsetToSlide: 20, //[Optional] Minimum drag offset that trigger slide, default value is 20 - $SlideSpacing: 0, //[Optional] Space between each slide in pixels, default value is 0 - $DisplayPieces: 1, //[Optional] Number of pieces to display (the slideshow would be disabled if the value is set to greater than 1), default value is 1 - $ParkingPosition: 0, //[Optional] The offset position to park slide (this options applys only when slideshow disabled), default value is 0. - $UISearchMode: 1, //[Optional] The way (0 parellel, 1 recursive, default value is recursive) to search UI components (slides container, loading screen, navigator container, arrow navigator container, thumbnail navigator container etc. - $PlayOrientation: 1, //[Optional] Orientation to play slide (for auto play, navigation), 1 horizental, 2 vertical, 5 horizental reverse, 6 vertical reverse, default value is 1 - $DragOrientation: 1 //[Optional] Orientation to drag slide, 0 no drag, 1 horizental, 2 vertical, 3 both, default value is 1 (Note that the $DragOrientation should be the same as $PlayOrientation when $DisplayPieces is greater than 1, or parking position is not 0) - - }, options); - - //Sodo statement for development time intellisence only - $JssorDebug$.$Execute(function () { - _Options = $JssorUtils$.$Extend({ - $ArrowKeyNavigation: undefined, - $SlideWidth: undefined, - $SlideHeight: undefined, - $SlideshowOptions: undefined, - $CaptionSliderOptions: undefined, - $BulletNavigatorOptions: undefined, - $ArrowNavigatorOptions: undefined, - $ThumbnailNavigatorOptions: undefined - }, - _Options); - }); - - var _PlayOrientation = _Options.$PlayOrientation & 3; - var _PlayReverse = (_Options.$PlayOrientation & 4) / -4 || 1; - - var _SlideshowOptions = _Options.$SlideshowOptions; - var _CaptionSliderOptions = $JssorUtils$.$Extend({ $Class: $JssorCaptionSliderBase$, $PlayInMode: 1, $PlayOutMode: 1 }, _Options.$CaptionSliderOptions); - var _BulletNavigatorOptions = _Options.$BulletNavigatorOptions; - var _ArrowNavigatorOptions = _Options.$ArrowNavigatorOptions; - var _ThumbnailNavigatorOptions = _Options.$ThumbnailNavigatorOptions; - - $JssorDebug$.$Execute(function () { - if (_SlideshowOptions && !_SlideshowOptions.$Class) { - $JssorDebug$.$Fail("Option $SlideshowOptions error, class not specified."); - } - }); - - $JssorDebug$.$Execute(function () { - if (_Options.$CaptionSliderOptions && !_Options.$CaptionSliderOptions.$Class) { - $JssorDebug$.$Fail("Option $CaptionSliderOptions error, class not specified."); - } - }); - - $JssorDebug$.$Execute(function () { - if (_BulletNavigatorOptions && !_BulletNavigatorOptions.$Class) { - $JssorDebug$.$Fail("Option $BulletNavigatorOptions error, class not specified."); - } - }); - - $JssorDebug$.$Execute(function () { - if (_ArrowNavigatorOptions && !_ArrowNavigatorOptions.$Class) { - $JssorDebug$.$Fail("Option $ArrowNavigatorOptions error, class not specified."); - } - }); - - $JssorDebug$.$Execute(function () { - if (_ThumbnailNavigatorOptions && !_ThumbnailNavigatorOptions.$Class) { - $JssorDebug$.$Fail("Option $ArrowNavigatorOptions error, class not specified."); - } - }); - - var _UISearchMode = _Options.$UISearchMode; - var _ScaleWrapper; - var _SlidesContainer = $JssorUtils$.$FindFirstChildByAttribute(elmt, "slides", null, _UISearchMode); - var _LoadingContainer = $JssorUtils$.$FindFirstChildByAttribute(elmt, "loading", null, _UISearchMode) || $JssorUtils$.$CreateDivElement(document); - var _NavigatorContainer = $JssorUtils$.$FindFirstChildByAttribute(elmt, "navigator", null, _UISearchMode); - - var _ArrowLeft = $JssorUtils$.$FindFirstChildByAttribute(elmt, "arrowleft", null, _UISearchMode); - var _ArrowRight = $JssorUtils$.$FindFirstChildByAttribute(elmt, "arrowright", null, _UISearchMode); - - var _ThumbnailNavigatorContainer = $JssorUtils$.$FindFirstChildByAttribute(elmt, "thumbnavigator", null, _UISearchMode); - - var _SlidesContainerWidth = $JssorUtils$.$CssWidth(_SlidesContainer); - var _SlidesContainerHeight = $JssorUtils$.$CssHeight(_SlidesContainer); - - $JssorDebug$.$Execute(function () { - if (isNaN(_SlidesContainerWidth)) - $JssorDebug$.$Fail("Width of slides container wrong specification, it should be specified by inline style in pixels (like style='width: 600px;')."); - - if ($JssorUtils$.$IsUndefined(_SlidesContainerWidth)) - $JssorDebug$.$Fail("Width of slides container not specified, it should be specified by inline style in pixels (like style='width: 600px;')."); - - if (isNaN(_SlidesContainerHeight)) - $JssorDebug$.$Fail("Height of slides container wrong specification, it should be specified by inline style in pixels (like style='height: 300px;')."); - - if ($JssorUtils$.$IsUndefined(_SlidesContainerHeight)) - $JssorDebug$.$Fail("Height of slides container not specified, it should be specified by inline style in pixels (like style='height: 300px;')."); - - var slidesContainerOverflow = $JssorUtils$.$CssOverflow(_SlidesContainer); - var slidesContainerOverflowX = $JssorUtils$.$Css(_SlidesContainer, "overflowX"); - var slidesContainerOverflowY = $JssorUtils$.$Css(_SlidesContainer, "overflowY"); - if (slidesContainerOverflow != "hidden" && (slidesContainerOverflowX != "hidden" || slidesContainerOverflowY != "hidden")) - $JssorDebug$.$Fail("Overflow of slides container wrong specification, it should be specified as 'hidden' (style='overflow:hidden;')."); - - //var slidesContainerTop = $JssorUtils$.$CssTop(_SlidesContainer); - //var slidesContainerLeft = $JssorUtils$.$CssLeft(_SlidesContainer); - - //if (isNaN(slidesContainerTop)) - // $JssorDebug$.$Fail("Top of slides container wrong specification, it should be specified by inline style in pixels (like style='top: 0px;')."); - - //if ($JssorUtils$.$IsUndefined(slidesContainerTop)) - // $JssorDebug$.$Fail("Top of slides container not specified, it should be specified by inline style in pixels (like style='top: 0px;')."); - - //if (isNaN(slidesContainerLeft)) - // $JssorDebug$.$Fail("Left of slides container wrong specification, it should be specified by inline style in pixels (like style='left: 0px;')."); - - //if ($JssorUtils$.$IsUndefined(slidesContainerLeft)) - // $JssorDebug$.$Fail("Left of slides container not specified, it should be specified by inline style in pixels (like style='left: 0px;')."); - }); - - $JssorDebug$.$Execute(function () { - if (!$JssorUtils$.$IsNumeric(_Options.$DisplayPieces)) - $JssorDebug$.$Fail("Option $DisplayPieces error, it should be a numeric value and greater than or equal to 1."); - - if (_Options.$DisplayPieces < 1) - $JssorDebug$.$Fail("Option $DisplayPieces error, it should be greater than or equal to 1."); - - if (_Options.$DisplayPieces > 1 && _Options.$DragOrientation && _Options.$DragOrientation != _PlayOrientation) - $JssorDebug$.$Fail("Option $DragOrientation error, it should be 0 or the same of $PlayOrientation when $DisplayPieces is greater than 1."); - - if (!$JssorUtils$.$IsNumeric(_Options.$ParkingPosition)) - $JssorDebug$.$Fail("Option $ParkingPosition error, it should be a numeric value."); - - if (_Options.$ParkingPosition && _Options.$DragOrientation && _Options.$DragOrientation != _PlayOrientation) - $JssorDebug$.$Fail("Option $DragOrientation error, it should be 0 or the same of $PlayOrientation when $ParkingPosition is not equal to 0."); - }); - - var _StyleDef; - - var _SlideElmts = []; - - { - var slideElmts = $JssorUtils$.$GetChildren(_SlidesContainer); - $JssorUtils$.$Each(slideElmts, function (slideElmt) { - if (slideElmt.tagName == "DIV" && !$JssorUtils$.$GetAttributeEx(slideElmt, "u")) { - _SlideElmts.push(slideElmt); - } - }); - } - - $JssorDebug$.$Execute(function () { - if (_SlideElmts.length < 1) { - $JssorDebug$.$Error("Slides html code definition error, there must be at least 1 slide to initialize a slider."); - } - }); - - var _SlideItemCreatedCount = 0; //for debug only - var _SlideItemReleasedCount = 0; //for debug only - - var _PreviousSlideIndex; - var _CurrentSlideIndex = -1; - var _TempSlideIndex; - var _PrevSlideItem; - var _CurrentSlideItem; - var _SlideCount = _SlideElmts.length; - - var _SlideWidth = _Options.$SlideWidth || _SlidesContainerWidth; - var _SlideHeight = _Options.$SlideHeight || _SlidesContainerHeight; - - var _SlideSpacing = _Options.$SlideSpacing; - var _StepLengthX = _SlideWidth + _SlideSpacing; - var _StepLengthY = _SlideHeight + _SlideSpacing; - var _StepLength = (_PlayOrientation & 1) ? _StepLengthX : _StepLengthY; - var _DisplayPieces = Math.min(_Options.$DisplayPieces, _SlideCount); - - var _SlideshowPanel; - var _CurrentBoardIndex = 0; - var _DragOrientation; - var _DragOrientationRegistered; - var _DragInvalid; - - var _HandleTouchEventOnly; - - var _Navigators = []; - var _BulletNavigator; - var _ArrowNavigator; - var _ThumbnailNavigator; - - var _ShowLink; - - var _Frozen; - var _AutoPlay; - var _AutoPlaySteps = _Options.$AutoPlaySteps; - var _HoverToPause = _Options.$PauseOnHover; - var _AutoPlayInterval = _Options.$AutoPlayInterval; - var _SlideDuration = _Options.$SlideDuration; - - var _SlideshowRunnerClass; - var _TransitionsOrder; - - var _SlideshowEnabled; - var _ParkingPosition; - var _CarouselEnabled = _DisplayPieces < _SlideCount; - var _Loop = _CarouselEnabled ? _Options.$Loop : 0; - - var _DragEnabled; - var _LastDragSucceded; - - var _HoverStatus = 1; //0 Hovering, 1 Not hovering - - //Variable Definition - var _IsSliding; - var _IsDragging; - var _LoadingTicket; - - //The X position of mouse/touch when a drag start - var _DragStartMouseX = 0; - //The Y position of mouse/touch when a drag start - var _DragStartMouseY = 0; - var _DragOffsetTotal; - var _DragOffsetLastTime; - var _DragIndexAdjust; - - var _Carousel; - var _Conveyor; - var _Slideshow; - var _CarouselPlayer; - var _SlideContainer = new SlideContainer(); - var _ScaleRatio; - - //$JssorSlider$ Constructor - { - _AutoPlay = _Options.$AutoPlay; - _SelfSlider.$Options = options; - - AdjustSlidesContainerSize(); - - elmt["jssor-slider"] = true; - - //_SlideshowPanel = CreatePanel(); - //$JssorUtils$.$CssZIndex(elmt, $JssorUtils$.$CssZIndex(elmt)); - //$JssorUtils$.$CssLeft(_SlideshowPanel, $JssorUtils$.$CssLeft(_SlidesContainer)); - //$JssorUtils$.$CssZIndex(_SlidesContainer, $JssorUtils$.$CssZIndex(_SlidesContainer)); - //$JssorUtils$.$CssTop(_SlideshowPanel, $JssorUtils$.$CssTop(_SlidesContainer)); - $JssorUtils$.$CssZIndex(_SlidesContainer, $JssorUtils$.$CssZIndex(_SlidesContainer) || 0); - $JssorUtils$.$CssPosition(_SlidesContainer, "absolute"); - _SlideshowPanel = $JssorUtils$.$CloneNode(_SlidesContainer); - $JssorUtils$.$InsertBefore($JssorUtils$.$GetParentNode(_SlidesContainer), _SlideshowPanel, _SlidesContainer); - - if (_SlideshowOptions) { - _ShowLink = _SlideshowOptions.$ShowLink; - _SlideshowRunnerClass = _SlideshowOptions.$Class; - - $JssorDebug$.$Execute(function () { - if (!_SlideshowOptions.$Transitions || !_SlideshowOptions.$Transitions.length) { - $JssorDebug$.$Error("Invalid '$SlideshowOptions', no '$Transitions' specified."); - } - }); - - _SlideshowEnabled = _DisplayPieces == 1 && _SlideCount > 1 && _SlideshowRunnerClass && (!$JssorUtils$.$IsBrowserIE() || $JssorUtils$.$GetBrowserVersion() >= 8); - } - - _ParkingPosition = (_SlideshowEnabled || _DisplayPieces >= _SlideCount || !(_Loop & 1)) ? 0 : _Options.$ParkingPosition; - - _DragEnabled = ((_DisplayPieces > 1 || _ParkingPosition) ? _PlayOrientation : -1) & _Options.$DragOrientation; - - //SlideBoard - var _SlideboardElmt = _SlidesContainer; - var _SlideItems = []; - - var _SlideshowRunner; - var _LinkContainer; - - var _DownEvent = "mousedown"; - var _MoveEvent = "mousemove"; - var _UpEvent = "mouseup"; - var _CancelEvent; - - var _LastTimeMoveByDrag; - var _DragStartPosition; - var _DragStart_CarouselPlaying; - var _DragStartPlayToPosition; - var _PositionToGoByDrag; - - //SlideBoard Constructor - { - - if (window.navigator.msPointerEnabled) { - - _DownEvent = "MSPointerDown"; - _MoveEvent = "MSPointerMove"; - _UpEvent = "MSPointerUp"; - _CancelEvent = "MSPointerCancel"; - - if (_DragEnabled) { - var touchAction = "none"; - if (_DragEnabled == 1) { - touchAction = "pan-y"; - } - else if (_DragEnabled == 2) { - touchAction = "pan-x"; - } - - $JssorUtils$.$SetAttribute(_SlideboardElmt.style, "-ms-touch-action", touchAction); - } - } - else if ("ontouchstart" in window || "createTouch" in document) { - _HandleTouchEventOnly = true; - - _DownEvent = "touchstart"; - _MoveEvent = "touchmove"; - _UpEvent = "touchend"; - _CancelEvent = "touchcancel"; - } - - _Slideshow = new Slideshow(); - - if (_SlideshowEnabled) - _SlideshowRunner = new _SlideshowRunnerClass(_SlideContainer, _SlideWidth, _SlideHeight, _SlideshowOptions, _HandleTouchEventOnly); - - $JssorUtils$.$AppendChild(_SlideshowPanel, _Slideshow.$Wrapper); - $JssorUtils$.$CssOverflow(_SlidesContainer, "hidden"); - - //link container - { - _LinkContainer = CreatePanel(); - $JssorUtils$.$Css(_LinkContainer, "backgroundColor", "#000"); - $JssorUtils$.$CssOpacity(_LinkContainer, 0); - $JssorUtils$.$InsertBefore(_SlideboardElmt, _LinkContainer, _SlideboardElmt.firstChild); - } - - for (var i = 0; i < _SlideElmts.length; i++) { - var slideElmt = _SlideElmts[i]; - var slideItem = new SlideItem(slideElmt, i); - _SlideItems.push(slideItem); - } - - $JssorUtils$.$HideElement(_LoadingContainer); - - $JssorDebug$.$Execute(function () { - $JssorUtils$.$SetAttribute(_LoadingContainer, "debug-id", "loading-container"); - }); - - _Carousel = new Carousel() - _CarouselPlayer = new CarouselPlayer(_Carousel, _Slideshow); - - $JssorDebug$.$Execute(function () { - $JssorUtils$.$SetAttribute(_SlideboardElmt, "debug-id", "slide-board"); - }); - - if (_DragEnabled) { - $JssorUtils$.$AddEvent(_SlidesContainer, _DownEvent, OnMouseDown); - $JssorUtils$.$AddEvent(document, _UpEvent, OnDragEnd); - _CancelEvent && $JssorUtils$.$AddEvent(document, _CancelEvent, OnDragEnd); - } - } - //SlideBoard - - _HoverToPause &= _HandleTouchEventOnly ? 2 : 1; - - //Bullet Navigator - if (_NavigatorContainer && _BulletNavigatorOptions) { - _BulletNavigator = new _BulletNavigatorOptions.$Class(_NavigatorContainer, _BulletNavigatorOptions); - _Navigators.push(_BulletNavigator); - } - - //Arrow Navigator - if (_ArrowNavigatorOptions && _ArrowLeft && _ArrowRight) { - _ArrowNavigator = new _ArrowNavigatorOptions.$Class(_ArrowLeft, _ArrowRight, _ArrowNavigatorOptions); - _Navigators.push(_ArrowNavigator); - } - - //Thumbnail Navigator - if (_ThumbnailNavigatorContainer && _ThumbnailNavigatorOptions) { - _ThumbnailNavigatorOptions.$StartIndex = _Options.$StartIndex; - _ThumbnailNavigator = new _ThumbnailNavigatorOptions.$Class(_ThumbnailNavigatorContainer, _ThumbnailNavigatorOptions); - _Navigators.push(_ThumbnailNavigator); - } - - $JssorUtils$.$Each(_Navigators, function (navigator) { - navigator.$Reset(_SlideCount, _SlideItems, _LoadingContainer); - navigator.$On($JssorNavigatorEvents$.$NAVIGATIONREQUEST, NavigationClickHandler); - }); - - _SelfSlider.$SetScaleWidth(_SelfSlider.$GetOriginalWidth()); - - $JssorUtils$.$AddEvent(elmt, "mouseout", MainContainerMouseOutEventHandler); - $JssorUtils$.$AddEvent(elmt, "mouseover", MainContainerMouseOverEventHandler); - - ShowNavigators(); - - //Keyboard Navigation - if (_Options.$ArrowKeyNavigation) { - $JssorUtils$.$AddEvent(document, "keydown", function (e) { - if (e.keyCode == $JssorKeyCode$.$LEFT) { - //Arrow Left - PlayToOffset(-1); - } - else if (e.keyCode == $JssorKeyCode$.$RIGHT) { - //Arrow Right - PlayToOffset(1); - } - }); - } - - var startPosition = _Options.$StartIndex; - if (!(_Loop & 1)) { - startPosition = Math.max(0, Math.min(startPosition, _SlideCount - _DisplayPieces)); - } - _CarouselPlayer.$PlayCarousel(startPosition, startPosition, 0); - } - } - //Jssor Slider - - //JssorSlider.$ASSEMBLY_BOTTOM_LEFT = ASSEMBLY_BOTTOM_LEFT; - //JssorSlider.$ASSEMBLY_BOTTOM_RIGHT = ASSEMBLY_BOTTOM_RIGHT; - //JssorSlider.$ASSEMBLY_TOP_LEFT = ASSEMBLY_TOP_LEFT; - //JssorSlider.$ASSEMBLY_TOP_RIGHT = ASSEMBLY_TOP_RIGHT; - //JssorSlider.$ASSEMBLY_LEFT_TOP = ASSEMBLY_LEFT_TOP; - //JssorSlider.$ASSEMBLY_LEFT_BOTTOM = ASSEMBLY_LEFT_BOTTOM; - //JssorSlider.$ASSEMBLY_RIGHT_TOP = ASSEMBLY_RIGHT_TOP; - //JssorSlider.$ASSEMBLY_RIGHT_BOTTOM = ASSEMBLY_RIGHT_BOTTOM; - - JssorSlider.$EVT_CLICK = 21; - JssorSlider.$EVT_DRAG_START = 22; - JssorSlider.$EVT_DRAG_END = 23; - JssorSlider.$EVT_SWIPE_START = 24; - JssorSlider.$EVT_SWIPE_END = 25; - - JssorSlider.$EVT_LOAD_START = 26; - JssorSlider.$EVT_LOAD_END = 27; - - JssorSlider.$EVT_POSITION_CHANGE = 202; - JssorSlider.$EVT_PARK = 203; - - JssorSlider.$EVT_SLIDESHOW_START = 206; - JssorSlider.$EVT_SLIDESHOW_END = 207; - - JssorSlider.$EVT_PROGRESS_CHANGE = 208; - JssorSlider.$EVT_STATE_CHANGE = 209; - JssorSlider.$EVT_ROLLBACK_START = 210; - JssorSlider.$EVT_ROLLBACK_END = 211; - - window.$JssorSlider$ = $JssorSlider$ = JssorSlider; - - //(function ($) { - // jQuery.fn.jssorSlider = function (options) { - // return this.each(function () { - // return $(this).data('jssorSlider') || $(this).data('jssorSlider', new JssorSlider(this, options)); - // }); - // }; - //})(jQuery); - - //window.jQuery && (jQuery.fn.jssorSlider = function (options) { - // return this.each(function () { - // return jQuery(this).data('jssorSlider') || jQuery(this).data('jssorSlider', new JssorSlider(this, options)); - // }); - //}); -}; - -//$JssorBulletNavigator$ -var $JssorNavigatorEvents$ = { - $NAVIGATIONREQUEST: 1, - $INDEXCHANGE: 2, - $RESET: 3 -}; - -var $JssorBulletNavigator$ = window.$JssorBulletNavigator$ = function (elmt, options) { - var self = this; - $JssorEventManager$.call(self); - - elmt = $JssorUtils$.$GetElement(elmt); - - var _Count; - var _Length; - var _Width; - var _Height; - var _CurrentIndex; - var _CurrentInnerIndex = 0; - var _Options; - var _Steps; - var _Lanes; - var _SpacingX; - var _SpacingY; - var _Orientation; - var _ItemPrototype; - var _PrototypeWidth; - var _PrototypeHeight; - - var _ButtonElements = []; - var _Buttons = []; - - function Highlight(index) { - if (index != -1) - _Buttons[index].$Activate(index == _CurrentInnerIndex); - } - - function OnNavigationRequest(index) { - self.$TriggerEvent($JssorNavigatorEvents$.$NAVIGATIONREQUEST, index * _Steps); - } - - self.$Elmt = elmt; - self.$GetCurrentIndex = function () { - return _CurrentIndex; - }; - - self.$SetCurrentIndex = function (index) { - if (index != _CurrentIndex) { - var lastInnerIndex = _CurrentInnerIndex; - var innerIndex = Math.floor(index / _Steps); - _CurrentInnerIndex = innerIndex; - _CurrentIndex = index; - - Highlight(lastInnerIndex); - Highlight(innerIndex); - - //self.$TriggerEvent($JssorNavigatorEvents$.$INDEXCHANGE, index); - } - }; - - self.$Show = function (show) { - $JssorUtils$.$ShowElement(elmt, show); - }; - - var _Located; - self.$Relocate = function (force) { - if (!_Located || _Options.$Scale == false) { - if (_Options.$AutoCenter & 1) { - $JssorUtils$.$CssLeft(elmt, ($JssorUtils$.$CssWidth($JssorUtils$.$GetParentNode(elmt)) - _Width) / 2); - } - if (_Options.$AutoCenter & 2) { - $JssorUtils$.$CssTop(elmt, ($JssorUtils$.$CssHeight($JssorUtils$.$GetParentNode(elmt)) - _Height) / 2); - } - - _Located = true; - } - }; - - var _Initialized; - self.$Reset = function (length) { - if (!_Initialized) { - _Length = length; - _Count = Math.ceil(length / _Steps); - _CurrentInnerIndex = 0; - - var itemOffsetX = _PrototypeWidth + _SpacingX; - var itemOffsetY = _PrototypeHeight + _SpacingY; - - var maxIndex = Math.ceil(_Count / _Lanes) - 1; - - _Width = _PrototypeWidth + itemOffsetX * (!_Orientation ? maxIndex : _Lanes - 1); - _Height = _PrototypeHeight + itemOffsetY * (_Orientation ? maxIndex : _Lanes - 1); - - $JssorUtils$.$CssWidth(elmt, _Width); - $JssorUtils$.$CssHeight(elmt, _Height); - - //self.$Relocate(true); - - for (var buttonIndex = 0; buttonIndex < _Count; buttonIndex++) { - - var numberDiv = $JssorUtils$.$CreateSpanElement(); - $JssorUtils$.$SetInnerText(numberDiv, buttonIndex + 1); - - var div = $JssorUtils$.$BuildElement(_ItemPrototype, "NumberTemplate", numberDiv, true); - $JssorUtils$.$CssPosition(div, "absolute"); - - var columnIndex = buttonIndex % (maxIndex + 1); - $JssorUtils$.$CssLeft(div, !_Orientation ? itemOffsetX * columnIndex : buttonIndex % _Lanes * itemOffsetX); - $JssorUtils$.$CssTop(div, _Orientation ? itemOffsetY * columnIndex : Math.floor(buttonIndex / (maxIndex + 1)) * itemOffsetY); - - $JssorUtils$.$AppendChild(elmt, div); - _ButtonElements[buttonIndex] = div; - - if (_Options.$ActionMode & 1) - $JssorUtils$.$AddEvent(div, "click", $JssorUtils$.$CreateCallback(null, OnNavigationRequest, buttonIndex)); - - if (_Options.$ActionMode & 2) - $JssorUtils$.$AddEvent(div, "mouseover", $JssorUtils$.$CreateCallback(null, OnNavigationRequest, buttonIndex)); - - _Buttons[buttonIndex] = $JssorUtils$.$Buttonize(div); - } - - //self.$TriggerEvent($JssorNavigatorEvents$.$RESET); - _Initialized = true; - } - }; - - //JssorBulletNavigator Constructor - { - self.$Options = _Options = $JssorUtils$.$Extend({ - $SpacingX: 0, - $SpacingY: 0, - $Orientation: 1, - $ActionMode: 1 - }, options); - - //Sodo statement for development time intellisence only - $JssorDebug$.$Execute(function () { - _Options = $JssorUtils$.$Extend({ - $Steps: undefined, - $Lanes: undefined - }, _Options); - }); - - _ItemPrototype = $JssorUtils$.$FindFirstChildByAttribute(elmt, "prototype"); - - $JssorDebug$.$Execute(function () { - if (!_ItemPrototype) - $JssorDebug$.$Fail("Navigator item prototype not defined."); - - if (isNaN($JssorUtils$.$CssWidth(_ItemPrototype))) { - $JssorDebug$.$Fail("Width of 'navigator item prototype' not specified."); - } - - if (isNaN($JssorUtils$.$CssHeight(_ItemPrototype))) { - $JssorDebug$.$Fail("Height of 'navigator item prototype' not specified."); - } - }); - - _PrototypeWidth = $JssorUtils$.$CssWidth(_ItemPrototype); - _PrototypeHeight = $JssorUtils$.$CssHeight(_ItemPrototype); - - $JssorUtils$.$RemoveChild(elmt, _ItemPrototype); - - _Steps = _Options.$Steps || 1; - _Lanes = _Options.$Lanes || 1; - _SpacingX = _Options.$SpacingX; - _SpacingY = _Options.$SpacingY; - _Orientation = _Options.$Orientation - 1; - } -}; - -var $JssorArrowNavigator$ = window.$JssorArrowNavigator$ = function (arrowLeft, arrowRight, options) { - var self = this; - $JssorEventManager$.call(self); - - $JssorDebug$.$Execute(function () { - //var arrowLeft = $JssorUtils$.$FindFirstChildByAttribute(elmt, "arrowleft", null, uiSearchMode); - //var arrowRight = $JssorUtils$.$FindFirstChildByAttribute(elmt, "arrowright", null, uiSearchMode); - - if (!arrowLeft) - $JssorDebug$.$Fail("Option '$ArrowNavigatorOptions' spepcified, but UI 'arrowleft' not defined. Define 'arrowleft' to enable direct navigation, or remove option '$ArrowNavigatorOptions' to disable direct navigation."); - - if (!arrowRight) - $JssorDebug$.$Fail("Option '$ArrowNavigatorOptions' spepcified, but UI 'arrowright' not defined. Define 'arrowright' to enable direct navigation, or remove option '$ArrowNavigatorOptions' to disable direct navigation."); - - if (isNaN($JssorUtils$.$CssWidth(arrowLeft))) { - $JssorDebug$.$Fail("Width of 'arrow left' not specified."); - } - - if (isNaN($JssorUtils$.$CssWidth(arrowRight))) { - $JssorDebug$.$Fail("Width of 'arrow right' not specified."); - } - - if (isNaN($JssorUtils$.$CssHeight(arrowLeft))) { - $JssorDebug$.$Fail("Height of 'arrow left' not specified."); - } - - if (isNaN($JssorUtils$.$CssHeight(arrowRight))) { - $JssorDebug$.$Fail("Height of 'arrow right' not specified."); - } - }); - - //var arrowLeft = $JssorUtils$.$FindFirstChildByAttribute(elmt, "arrowleft", null, uiSearchMode); - //var arrowRight = $JssorUtils$.$FindFirstChildByAttribute(elmt, "arrowright", null, uiSearchMode); - var _Length; - var _CurrentIndex; - var _Options; - var _Steps; - var _ParentNode = $JssorUtils$.$GetParentNode(arrowLeft); - var _ArrowWidth = $JssorUtils$.$CssWidth(arrowLeft); - var _ArrowHeight = $JssorUtils$.$CssHeight(arrowLeft); - - function OnNavigationRequest(steps) { - self.$TriggerEvent($JssorNavigatorEvents$.$NAVIGATIONREQUEST, steps, true); - } - - self.$GetCurrentIndex = function () { - return _CurrentIndex; - }; - - self.$SetCurrentIndex = function (index, virtualIndex, temp) { - if (temp) { - _CurrentIndex = virtualIndex; - } - else { - _CurrentIndex = index; - } - //self.$TriggerEvent($JssorNavigatorEvents$.$INDEXCHANGE, index); - }; - - self.$Show = function (show) { - $JssorUtils$.$ShowElement(arrowLeft, show); - $JssorUtils$.$ShowElement(arrowRight, show); - }; - - var _Located; - self.$Relocate = function (force) { - if (!_Located || _Options.$Scale == false) { - - var containerWidth = $JssorUtils$.$CssWidth(_ParentNode); - var containerHeight = $JssorUtils$.$CssHeight(_ParentNode); - - if (_Options.$AutoCenter & 1) { - $JssorUtils$.$CssLeft(arrowLeft, (containerWidth - _ArrowWidth) / 2); - $JssorUtils$.$CssLeft(arrowRight, (containerWidth - _ArrowWidth) / 2); - } - - if (_Options.$AutoCenter & 2) { - $JssorUtils$.$CssTop(arrowLeft, (containerHeight - _ArrowHeight) / 2); - $JssorUtils$.$CssTop(arrowRight, (containerHeight - _ArrowHeight) / 2); - } - - _Located = true; - } - }; - - var _Initialized; - self.$Reset = function (length) { - _Length = length; - _CurrentIndex = 0; - - if (!_Initialized) { - - //self.$Relocate(true); - - $JssorUtils$.$AddEvent(arrowLeft, "click", $JssorUtils$.$CreateCallback(null, OnNavigationRequest, -_Steps)); - $JssorUtils$.$AddEvent(arrowRight, "click", $JssorUtils$.$CreateCallback(null, OnNavigationRequest, _Steps)); - - $JssorUtils$.$Buttonize(arrowLeft); - $JssorUtils$.$Buttonize(arrowRight); - - _Initialized = true; - } - - //self.$TriggerEvent($JssorNavigatorEvents$.$RESET); - }; - - //JssorArrowNavigator Constructor - { - self.$Options = _Options = $JssorUtils$.$Extend({ - $Steps: 1 - }, options); - - _Steps = _Options.$Steps; - } -}; - -//$JssorThumbnailNavigator$ -var $JssorThumbnailNavigator$ = window.$JssorThumbnailNavigator$ = function (elmt, options) { - var _Self = this; - var _Length; - var _Count; - var _CurrentIndex; - var _Options; - var _NavigationItems = []; - - var _Width; - var _Height; - var _Lanes; - var _SpacingX; - var _SpacingY; - var _PrototypeWidth; - var _PrototypeHeight; - var _DisplayPieces; - - var _Slider; - var _CurrentMouseOverIndex = -1; - - var _SlidesContainer; - var _ThumbnailPrototype; - - $JssorEventManager$.call(_Self); - elmt = $JssorUtils$.$GetElement(elmt); - - function NavigationItem(item, index) { - var self = this; - var _Wrapper; - var _Button; - var _Thumbnail; - - function Highlight(mouseStatus) { - _Button.$Activate(_CurrentIndex == index); - } - - function OnNavigationRequest(event) { - if (!_Slider.$LastDragSucceded()) { - var tail = _Lanes - index % _Lanes; - var slideVirtualIndex = _Slider.$GetVirtualIndex((index + tail) / _Lanes - 1); - var itemVirtualIndex = slideVirtualIndex * _Lanes + _Lanes - tail; - _Self.$TriggerEvent($JssorNavigatorEvents$.$NAVIGATIONREQUEST, itemVirtualIndex); - } - } - - $JssorDebug$.$Execute(function () { - self.$Wrapper = undefined; - }); - - self.$Index = index; - - self.$Highlight = Highlight; - - //NavigationItem Constructor - { - _Thumbnail = item.$Thumb || item.$Image || $JssorUtils$.$CreateDivElement(); - self.$Wrapper = _Wrapper = $JssorUtils$.$BuildElement(_ThumbnailPrototype, "ThumbnailTemplate", _Thumbnail, true); - - _Button = $JssorUtils$.$Buttonize(_Wrapper); - if (_Options.$ActionMode & 1) - $JssorUtils$.$AddEvent(_Wrapper, "click", OnNavigationRequest); - if (_Options.$ActionMode & 2) - $JssorUtils$.$AddEvent(_Wrapper, "mouseover", OnNavigationRequest); - } - } - - _Self.$GetCurrentIndex = function () { - return _CurrentIndex; - }; - - _Self.$SetCurrentIndex = function (index, virtualIndex, temp) { - var oldIndex = _CurrentIndex; - _CurrentIndex = index; - if (oldIndex != -1) - _NavigationItems[oldIndex].$Highlight(); - _NavigationItems[index].$Highlight(); - - if (!temp) { - _Slider.$PlayTo(_Slider.$GetVirtualIndex(Math.floor(virtualIndex / _Lanes))); - } - }; - - _Self.$Show = function (show) { - $JssorUtils$.$ShowElement(elmt, show); - }; - - _Self.$Relocate = $JssorUtils$.$EmptyFunction; - - var _Initialized; - _Self.$Reset = function (length, items, loadingContainer) { - if (!_Initialized) { - _Length = length; - _Count = Math.ceil(_Length / _Lanes); - _CurrentIndex = -1; - _DisplayPieces = Math.min(_DisplayPieces, items.length); - - var horizontal = _Options.$Orientation & 1; - - var slideWidth = _PrototypeWidth + (_PrototypeWidth + _SpacingX) * (_Lanes - 1) * (1 - horizontal); - var slideHeight = _PrototypeHeight + (_PrototypeHeight + _SpacingY) * (_Lanes - 1) * horizontal; - - var slidesContainerWidth = slideWidth + (slideWidth + _SpacingX) * (_DisplayPieces - 1) * horizontal; - var slidesContainerHeight = slideHeight + (slideHeight + _SpacingY) * (_DisplayPieces - 1) * (1 - horizontal); - - $JssorUtils$.$CssPosition(_SlidesContainer, "absolute"); - $JssorUtils$.$CssOverflow(_SlidesContainer, "hidden"); - if (_Options.$AutoCenter & 1) { - $JssorUtils$.$CssLeft(_SlidesContainer, (_Width - slidesContainerWidth) / 2); - } - if (_Options.$AutoCenter & 2) { - $JssorUtils$.$CssTop(_SlidesContainer, (_Height - slidesContainerHeight) / 2); - } - //$JssorDebug$.$Execute(function () { - // if (!_Options.$AutoCenter) { - // var slidesContainerTop = $JssorUtils$.$CssTop(_SlidesContainer); - // var slidesContainerLeft = $JssorUtils$.$CssLeft(_SlidesContainer); - - // if (isNaN(slidesContainerTop)) { - // $JssorDebug$.$Fail("Position 'top' wrong specification of thumbnail navigator slides container (
      ...
      ), \r\nwhen option $ThumbnailNavigatorOptions.$AutoCenter set to 0, it should be specified by inline style in pixels (like
      )"); - // } - - // if (isNaN(slidesContainerLeft)) { - // $JssorDebug$.$Fail("Position 'left' wrong specification of thumbnail navigator slides container (
      ...
      ), \r\nwhen option $ThumbnailNavigatorOptions.$AutoCenter set to 0, it should be specified by inline style in pixels (like
      )"); - // } - // } - //}); - $JssorUtils$.$CssWidth(_SlidesContainer, slidesContainerWidth); - $JssorUtils$.$CssHeight(_SlidesContainer, slidesContainerHeight); - - var slideItemElmts = []; - $JssorUtils$.$Each(items, function (item, index) { - var navigationItem = new NavigationItem(item, index); - var navigationItemWrapper = navigationItem.$Wrapper; - - var columnIndex = Math.floor(index / _Lanes); - var laneIndex = index % _Lanes; - - $JssorUtils$.$CssLeft(navigationItemWrapper, (_PrototypeWidth + _SpacingX) * laneIndex * (1 - horizontal)); - $JssorUtils$.$CssTop(navigationItemWrapper, (_PrototypeHeight + _SpacingY) * laneIndex * horizontal); - - if (!slideItemElmts[columnIndex]) { - slideItemElmts[columnIndex] = $JssorUtils$.$CreateDivElement(); - $JssorUtils$.$AppendChild(_SlidesContainer, slideItemElmts[columnIndex]); - } - - $JssorUtils$.$AppendChild(slideItemElmts[columnIndex], navigationItemWrapper); - - _NavigationItems.push(navigationItem); - }); - - var thumbnailSliderOptions = $JssorUtils$.$Extend({ - $AutoPlay: false, - $NaviQuitDrag: false, - $SlideWidth: slideWidth, - $SlideHeight: slideHeight, - $SlideSpacing: _SpacingX * horizontal + _SpacingY * (1 - horizontal), - $MinDragOffsetToSlide: 12, - $SlideDuration: 200, - $PauseOnHover: 1, - $PlayOrientation: _Options.$Orientation, - $DragOrientation: _Options.$DisableDrag ? 0 : _Options.$Orientation - }, _Options); - - _Slider = new $JssorSlider$(elmt, thumbnailSliderOptions); - - _Initialized = true; - } - - //_Self.$TriggerEvent($JssorNavigatorEvents$.$RESET); - }; - - //JssorThumbnailNavigator Constructor - { - _Self.$Options = _Options = $JssorUtils$.$Extend({ - $SpacingX: 3, - $SpacingY: 3, - $DisplayPieces: 1, - $Orientation: 1, - $AutoCenter: 3, - $ActionMode: 1 - }, options); - - //Sodo statement for development time intellisence only - $JssorDebug$.$Execute(function () { - _Options = $JssorUtils$.$Extend({ - $Lanes: undefined, - $Width: undefined, - $Height: undefined - }, _Options); - }); - - _Width = $JssorUtils$.$CssWidth(elmt); - _Height = $JssorUtils$.$CssHeight(elmt); - - $JssorDebug$.$Execute(function () { - if (!_Width) - $JssorDebug$.$Fail("width of 'thumbnavigator' container not specified."); - if (!_Height) - $JssorDebug$.$Fail("height of 'thumbnavigator' container not specified."); - }); - - _SlidesContainer = $JssorUtils$.$FindFirstChildByAttribute(elmt, "slides"); - _ThumbnailPrototype = $JssorUtils$.$FindFirstChildByAttribute(_SlidesContainer, "prototype"); - - $JssorDebug$.$Execute(function () { - if (!_ThumbnailPrototype) - $JssorDebug$.$Fail("prototype of 'thumbnavigator' not defined."); - }); - - _PrototypeWidth = $JssorUtils$.$CssWidth(_ThumbnailPrototype); - _PrototypeHeight = $JssorUtils$.$CssHeight(_ThumbnailPrototype); - - $JssorUtils$.$RemoveChild(_SlidesContainer, _ThumbnailPrototype); - - _Lanes = _Options.$Lanes || 1; - _SpacingX = _Options.$SpacingX; - _SpacingY = _Options.$SpacingY; - _DisplayPieces = _Options.$DisplayPieces; - } -}; - -//$JssorCaptionSlider$ -function $JssorCaptionSliderBase$() { - $JssorAnimator$.call(this, 0, 0); - this.$Revert = $JssorUtils$.$EmptyFunction; -} - -var $JssorCaptionSlider$ = window.$JssorCaptionSlider$ = function (container, captionSlideOptions, playIn) { - $JssorDebug$.$Execute(function () { - if (!captionSlideOptions.$CaptionTransitions) { - $JssorDebug$.$Error("'$CaptionSliderOptions' option error, '$CaptionSliderOptions.$CaptionTransitions' not specified."); - } - //else if (!$JssorUtils$.$IsArray(captionSlideOptions.$CaptionTransitions)) { - // $JssorDebug$.$Error("'$CaptionSliderOptions' option error, '$CaptionSliderOptions.$CaptionTransitions' is not an array."); - //} - }); - - var _Self = this; - var _ImmediateOutCaptionHanger; - var _PlayMode = playIn ? captionSlideOptions.$PlayInMode : captionSlideOptions.$PlayOutMode; - - var _CaptionTransitions = captionSlideOptions.$CaptionTransitions; - var _CaptionTuningFetcher = { $Transition: "t", $Delay: "d", $Duration: "du", $ScaleHorizontal: "x", $ScaleVertical: "y", $Rotate: "r", $Zoom: "z", $Opacity: "f", $BeginTime: "b" }; - var _CaptionTuningTransfer = { - $Default: function (value, tuningValue) { - if (!isNaN(tuningValue.$Value)) - value = tuningValue.$Value; - else - value *= tuningValue.$Percent; - - return value; - }, - $Opacity: function (value, tuningValue) { - return this.$Default(value - 1, tuningValue); - } - }; - _CaptionTuningTransfer.$Zoom = _CaptionTuningTransfer.$Opacity; - - $JssorAnimator$.call(_Self, 0, 0); - - function GetCaptionItems(element, level) { - - var itemsToPlay = []; - var lastTransitionName; - var namedTransitions = []; - var namedTransitionOrders = []; - - //$JssorDebug$.$Execute(function () { - - // var debugInfoElement = $JssorUtils$.$GetElement("debugInfo"); - - // if (debugInfoElement && playIn) { - - // var text = $JssorUtils$.$GetInnerHtml(debugInfoElement) + "
      "; - - // $JssorUtils$.$SetInnerHtml(debugInfoElement, text); - // } - //}); - - function FetchRawTransition(captionElmt, index) { - var rawTransition = {}; - - $JssorUtils$.$Each(_CaptionTuningFetcher, function (fetchAttribute, fetchProperty) { - var attributeValue = $JssorUtils$.$GetAttributeEx(captionElmt, fetchAttribute + (index || "")); - if (attributeValue) { - var propertyValue = {}; - - if (fetchAttribute == "t") { - //if (($JssorUtils$.$IsBrowserChrome() || $JssorUtils$.$IsBrowserSafari() || $JssorUtils$.$IsBrowserFireFox()) && attributeValue == "*") { - // attributeValue = Math.floor(Math.random() * captionSlideOptions.$CaptionTransitions.length); - // $JssorUtils$.$SetAttribute(captionElmt, fetchAttribute + (index || ""), attributeValue); - //} - - propertyValue.$Value = attributeValue; - } - else if (attributeValue.indexOf("%") + 1) - propertyValue.$Percent = $JssorUtils$.$ParseFloat(attributeValue) / 100; - else - propertyValue.$Value = $JssorUtils$.$ParseFloat(attributeValue); - - rawTransition[fetchProperty] = propertyValue; - } - }); - - return rawTransition; - } - - function GetRandomTransition() { - //return _CaptionTransitions.length && _CaptionTransitions[Math.floor(Math.random() * 42737 / (i + 1)) % _CaptionTransitions.length]; - return _CaptionTransitions[Math.floor(Math.random() * _CaptionTransitions.length)]; - } - - function EvaluateCaptionTransition(transitionName) { - - var transition; - - if (transitionName == "*") { - transition = GetRandomTransition(); - } - else if (transitionName) { - - //indexed transition allowed, just the same as named transition - var tempTransition = _CaptionTransitions[$JssorUtils$.$ParseInt(transitionName)] || _CaptionTransitions[transitionName]; - - if ($JssorUtils$.$IsArray(tempTransition)) { - if (transitionName != lastTransitionName) { - lastTransitionName = transitionName; - namedTransitionOrders[transitionName] = 0; - - namedTransitions[transitionName] = tempTransition[Math.floor(Math.random() * tempTransition.length)]; - } - else { - namedTransitionOrders[transitionName]++; - } - - tempTransition = namedTransitions[transitionName]; - - if ($JssorUtils$.$IsArray(tempTransition)) { - tempTransition = tempTransition.length && tempTransition[namedTransitionOrders[transitionName] % tempTransition.length]; - - if ($JssorUtils$.$IsArray(tempTransition)) { - //got transition from array level 3, random for all captions - tempTransition = tempTransition[Math.floor(Math.random() * tempTransition.length)]; - } - //else { - // //got transition from array level 2, in sequence for all adjacent captions with same name specified - // transition = tempTransition; - //} - } - //else { - // //got transition from array level 1, random but same for all adjacent captions with same name specified - // transition = tempTransition; - //} - } - //else { - // //got transition directly from a simple transition object - // transition = tempTransition; - //} - - transition = tempTransition; - - if ($JssorUtils$.$IsString(transition)) - transition = EvaluateCaptionTransition(transition); - } - - return transition; - } - - var captionElmts = $JssorUtils$.$GetChildren(element); - $JssorUtils$.$Each(captionElmts, function (captionElmt, i) { - - var transitionsWithTuning = []; - transitionsWithTuning.$Elmt = captionElmt; - var isCaption = $JssorUtils$.$GetAttributeEx(captionElmt, "u") == "caption"; - - $JssorUtils$.$Each(playIn ? [0, 3] : [2], function (j, k) { - - if (isCaption) { - var transition; - var rawTransition; - - if (j != 2 || !$JssorUtils$.$GetAttributeEx(captionElmt, "t3")) { - rawTransition = FetchRawTransition(captionElmt, j); - - if (j == 2 && !rawTransition.$Transition) { - rawTransition.$Delay = rawTransition.$Delay || { $Value: 0 }; - rawTransition = $JssorUtils$.$Extend(FetchRawTransition(captionElmt, 0), rawTransition); - } - } - - if (rawTransition && rawTransition.$Transition) { - - transition = EvaluateCaptionTransition(rawTransition.$Transition.$Value); - - if (transition) { - - var transitionWithTuning = $JssorUtils$.$Extend({ $Delay: 0, $ScaleHorizontal: 1, $ScaleVertical: 1 }, transition); - - $JssorUtils$.$Each(rawTransition, function (rawPropertyValue, propertyName) { - var tuningPropertyValue = (_CaptionTuningTransfer[propertyName] || _CaptionTuningTransfer.$Default).apply(_CaptionTuningTransfer, [transitionWithTuning[propertyName], rawTransition[propertyName]]); - if (!isNaN(tuningPropertyValue)) - transitionWithTuning[propertyName] = tuningPropertyValue; - }); - - if (!k) { - if (rawTransition.$BeginTime) - transitionWithTuning.$BeginTime = rawTransition.$BeginTime.$Value || 0; - else if ((_PlayMode) & 2) - transitionWithTuning.$BeginTime = 0; - } - } - } - - transitionsWithTuning.push(transitionWithTuning); - } - - if ((level % 2) && !k) { - //transitionsWithTuning.$Children = GetCaptionItems(captionElmt, lastTransitionName, [].concat(namedTransitions), [].concat(namedTransitionOrders), level + 1); - transitionsWithTuning.$Children = GetCaptionItems(captionElmt, level + 1); - } - }); - - itemsToPlay.push(transitionsWithTuning); - }); - - return itemsToPlay; - } - - function CreateAnimator(item, transition, immediateOut) { - - var animatorOptions = { - $Easing: transition.$Easing, - $Round: transition.$Round, - $During: transition.$During, - $Reverse: playIn && !immediateOut, - $Optimize: true - }; - - $JssorDebug$.$Execute(function () { - animatorOptions.$CaptionAnimator = true; - }); - - var captionItem = item; - var captionParent = $JssorUtils$.$GetParentNode(item); - - var captionItemWidth = $JssorUtils$.$CssWidth(captionItem); - var captionItemHeight = $JssorUtils$.$CssHeight(captionItem); - var captionParentWidth = $JssorUtils$.$CssWidth(captionParent); - var captionParentHeight = $JssorUtils$.$CssHeight(captionParent); - - var toStyles = {}; - var fromStyles = {}; - var scaleClip = transition.$ScaleClip || 1; - - //Opacity - if (transition.$Opacity) { - toStyles.$Opacity = 2 - transition.$Opacity; - } - - animatorOptions.$OriginalWidth = captionItemWidth; - animatorOptions.$OriginalHeight = captionItemHeight; - - //Transform - if (transition.$Zoom || transition.$Rotate) { - toStyles.$Zoom = transition.$Zoom ? transition.$Zoom - 1 : 1; - - if ($JssorUtils$.$IsBrowserIe9Earlier() || $JssorUtils$.$IsBrowserOpera()) - toStyles.$Zoom = Math.min(toStyles.$Zoom, 2); - - fromStyles.$Zoom = 1; - - var rotate = transition.$Rotate || 0; - if (rotate == true) - rotate = 1; - - toStyles.$Rotate = rotate * 360; - fromStyles.$Rotate = 0; - } - //Clip - else if (transition.$Clip) { - var fromStyleClip = { $Top: 0, $Right: captionItemWidth, $Bottom: captionItemHeight, $Left: 0 }; - var toStyleClip = $JssorUtils$.$Extend({}, fromStyleClip); - - var blockOffset = toStyleClip.$Offset = {}; - - var topBenchmark = transition.$Clip & 4; - var bottomBenchmark = transition.$Clip & 8; - var leftBenchmark = transition.$Clip & 1; - var rightBenchmark = transition.$Clip & 2; - - if (topBenchmark && bottomBenchmark) { - blockOffset.$Top = captionItemHeight / 2 * scaleClip; - blockOffset.$Bottom = -blockOffset.$Top; - } - else if (topBenchmark) - blockOffset.$Bottom = -captionItemHeight * scaleClip; - else if (bottomBenchmark) - blockOffset.$Top = captionItemHeight * scaleClip; - - if (leftBenchmark && rightBenchmark) { - blockOffset.$Left = captionItemWidth / 2 * scaleClip; - blockOffset.$Right = -blockOffset.$Left; - } - else if (leftBenchmark) - blockOffset.$Right = -captionItemWidth * scaleClip; - else if (rightBenchmark) - blockOffset.$Left = captionItemWidth * scaleClip; - - animatorOptions.$Move = transition.$Move; - toStyles.$Clip = toStyleClip; - fromStyles.$Clip = fromStyleClip; - } - - //Fly - { - var direction = transition.$FlyDirection; - - var toLeft = 0; - var toTop = 0; - - var scaleHorizontal = transition.$ScaleHorizontal; - var scaleVertical = transition.$ScaleVertical; - - if ($JssorDirection$.$IsToLeft(direction)) { - toLeft -= captionParentWidth * scaleHorizontal; - } - else if ($JssorDirection$.$IsToRight(direction)) { - toLeft += captionParentWidth * scaleHorizontal; - } - - if ($JssorDirection$.$IsToTop(direction)) { - toTop -= captionParentHeight * scaleVertical; - } - else if ($JssorDirection$.$IsToBottom(direction)) { - toTop += captionParentHeight * scaleVertical; - } - - if (toLeft || toTop || animatorOptions.$Move) { - toStyles.$Left = toLeft + $JssorUtils$.$CssLeft(captionItem); - toStyles.$Top = toTop + $JssorUtils$.$CssTop(captionItem); - } - } - - //duration - var duration = transition.$Duration; - - fromStyles = $JssorUtils$.$Extend(fromStyles, $JssorUtils$.$GetStyles(captionItem, toStyles)); - - animatorOptions.$Setter = $JssorUtils$.$GetStyleSetterEx(); - - return new $JssorAnimator$(transition.$Delay, duration, animatorOptions, captionItem, fromStyles, toStyles); - } - - function CreateAnimators(streamLineLength, captionItems) { - - $JssorUtils$.$Each(captionItems, function (captionItem, i) { - - $JssorDebug$.$Execute(function () { - if (captionItem.length) { - var top = $JssorUtils$.$CssTop(captionItem.$Elmt); - var left = $JssorUtils$.$CssLeft(captionItem.$Elmt); - var width = $JssorUtils$.$CssWidth(captionItem.$Elmt); - var height = $JssorUtils$.$CssHeight(captionItem.$Elmt); - - var error = null; - - if (isNaN(top)) - error = "Style 'top' for caption not specified. Please always specify caption like 'position: absolute; top: ...px; left: ...px; width: ...px; height: ...px;'."; - else if (isNaN(left)) - error = "Style 'left' not specified. Please always specify caption like 'position: absolute; top: ...px; left: ...px; width: ...px; height: ...px;'."; - else if (isNaN(width)) - error = "Style 'width' not specified. Please always specify caption like 'position: absolute; top: ...px; left: ...px; width: ...px; height: ...px;'."; - else if (isNaN(height)) - error = "Style 'height' not specified. Please always specify caption like 'position: absolute; top: ...px; left: ...px; width: ...px; height: ...px;'."; - - if (error) - $JssorDebug$.$Error("Caption " + (i + 1) + " definition error, \r\n" + error + "\r\n" + captionItem.$Elmt.outerHTML); - } - }); - - var animator; - var captionElmt = captionItem.$Elmt; - var transition = captionItem[0]; - var transition3 = captionItem[1]; - - if (transition) { - - animator = CreateAnimator(captionElmt, transition); - streamLineLength = animator.$Locate($JssorUtils$.$IsUndefined(transition.$BeginTime) ? streamLineLength : transition.$BeginTime, 1); - } - - streamLineLength = CreateAnimators(streamLineLength, captionItem.$Children); - - if (transition3) { - var animator3 = CreateAnimator(captionElmt, transition3, 1); - animator3.$Locate(streamLineLength, 1); - _Self.$Combine(animator3); - _ImmediateOutCaptionHanger.$Combine(animator3); - } - - if (animator) - _Self.$Combine(animator); - }); - - return streamLineLength; - } - - _Self.$Revert = function () { - _Self.$GoToPosition(_Self.$GetPosition_OuterEnd() * (playIn || 0)); - _ImmediateOutCaptionHanger.$GoToBegin(); - }; - - //Constructor - { - _ImmediateOutCaptionHanger = new $JssorAnimator$(0, 0); - - //var streamLineLength = 0; - //var captionItems = GetCaptionItems(container, null, [], [], 1); - - CreateAnimators(0, _PlayMode ? GetCaptionItems(container, 1) : []); - } -}; - -//Event Table - -//$EVT_CLICK = 21; function(slideIndex[, event]) -//$EVT_DRAG_START = 22; function(position[, virtualPosition, event]) -//$EVT_DRAG_END = 23; function(position, startPosition[, virtualPosition, virtualStartPosition, event]) -//$EVT_SWIPE_START = 24; function(position[, virtualPosition]) -//$EVT_SWIPE_END = 25; function(position[, virtualPosition]) - -//$EVT_LOAD_START = 26; function(slideIndex) -//$EVT_LOAD_END = 27; function(slideIndex) - -//$EVT_POSITION_CHANGE = 202; function(position, fromPosition[, virtualPosition, virtualFromPosition]) -//$EVT_PARK = 203; function(slideIndex, fromIndex) - -//$EVT_PROGRESS_CHANGE = 208; function(slideIndex, progress[, progressBegin, idleBegin, idleEnd, progressEnd]) -//$EVT_STATE_CHANGE = 209; function(slideIndex, progress[, progressBegin, idleBegin, idleEnd, progressEnd]) - -//$EVT_ROLLBACK_START = 210; function(slideIndex, progress[, progressBegin, idleBegin, idleEnd, progressEnd]) -//$EVT_ROLLBACK_END = 211; function(slideIndex, progress[, progressBegin, idleBegin, idleEnd, progressEnd]) - -//$EVT_SLIDESHOW_START = 206; function(slideIndex[, progressBegin, slideshowBegin, slideshowEnd, progressEnd]) -//$EVT_SLIDESHOW_END = 207; function(slideIndex[, progressBegin, slideshowBegin, slideshowEnd, progressEnd]) - -//http://www.jssor.com/development/reference-api.html diff --git a/spree_theme/app/assets/javascripts/jssor.slider/jssor.utils.js b/spree_theme/app/assets/javascripts/jssor.slider/jssor.utils.js deleted file mode 100644 index f9e84d48..00000000 --- a/spree_theme/app/assets/javascripts/jssor.slider/jssor.utils.js +++ /dev/null @@ -1,2522 +0,0 @@ -/// - -/* -* Jssor.Utils 17.0 -* http://www.jssor.com/ -* -* TERMS OF USE - Jssor.Utils -* -* Copyright 2014 Jssor -* -* Permission is hereby granted, free of charge, to any person obtaining -* a copy of this software and associated documentation files (the -* "Software"), to deal in the Software without restriction, including -* without limitation the rights to use, copy, modify, merge, publish, -* distribute, sublicense, and/or sell copies of the Software, and to -* permit persons to whom the Software is furnished to do so, subject to -* the following conditions: -* -* The above copyright notice and this permission notice shall be -* included in all copies or substantial portions of the Software. -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - - -//$JssorPoint$ -var $JssorPoint$; - -(function () { - - $JssorPoint$ = function (x, y) { - - // Properties - - this.x = typeof (x) == "number" ? x : 0; - this.y = typeof (y) == "number" ? y : 0; - - }; - - // Methods - - var SDPointPrototype = $JssorPoint$.prototype; - - SDPointPrototype.$Plus = function (point) { - return new $JssorPoint$(this.x + point.x, this.y + point.y); - }; - - SDPointPrototype.$Minus = function (point) { - return new $JssorPoint$(this.x - point.x, this.y - point.y); - }; - - SDPointPrototype.$Times = function (factor) { - return new $JssorPoint$(this.x * factor, this.y * factor); - }; - - SDPointPrototype.$Divide = function (factor) { - return new $JssorPoint$(this.x / factor, this.y / factor); - }; - - SDPointPrototype.$Negate = function () { - return new $JssorPoint$(-this.x, -this.y); - }; - - SDPointPrototype.$DistanceTo = function (point) { - return Math.sqrt(Math.pow(this.x - point.x, 2) + - Math.pow(this.y - point.y, 2)); - }; - - SDPointPrototype.$Apply = function (func) { - return new $JssorPoint$(func(this.x), func(this.y)); - }; - - SDPointPrototype.$Equals = function (point) { - return (point instanceof $JssorPoint$) && - (this.x === point.x) && (this.y === point.y); - }; - - SDPointPrototype.$ToString = function () { - return "(" + this.x + "," + this.y + ")"; - }; - -})(); - -//$JssorEasing$ -var $JssorEasing$ = window.$JssorEasing$ = { - $EaseLinear: function (t) { - return t; - }, - $EaseGoBack: function (t) { - return 1 - Math.abs((t *= 2) - 1); - }, - $EaseSwing: function (t) { - return -Math.cos(t * Math.PI) / 2 + .5; - }, - $EaseInQuad: function (t) { - return t * t; - }, - $EaseOutQuad: function (t) { - return -t * (t - 2); - }, - $EaseInOutQuad: function (t) { - return (t *= 2) < 1 ? 1 / 2 * t * t : -1 / 2 * (--t * (t - 2) - 1); - }, - $EaseInCubic: function (t) { - return t * t * t; - }, - $EaseOutCubic: function (t) { - return (t -= 1) * t * t + 1; - }, - $EaseInOutCubic: function (t) { - return (t *= 2) < 1 ? 1 / 2 * t * t * t : 1 / 2 * ((t -= 2) * t * t + 2); - }, - $EaseInQuart: function (t) { - return t * t * t * t; - }, - $EaseOutQuart: function (t) { - return -((t -= 1) * t * t * t - 1); - }, - $EaseInOutQuart: function (t) { - return (t *= 2) < 1 ? 1 / 2 * t * t * t * t : -1 / 2 * ((t -= 2) * t * t * t - 2); - }, - $EaseInQuint: function (t) { - return t * t * t * t * t; - }, - $EaseOutQuint: function (t) { - return (t -= 1) * t * t * t * t + 1; - }, - $EaseInOutQuint: function (t) { - return (t *= 2) < 1 ? 1 / 2 * t * t * t * t * t : 1 / 2 * ((t -= 2) * t * t * t * t + 2); - }, - $EaseInSine: function (t) { - return 1 - Math.cos(t * Math.PI / 2); - }, - $EaseOutSine: function (t) { - return Math.sin(t * Math.PI / 2); - }, - $EaseInOutSine: function (t) { - return -1 / 2 * (Math.cos(Math.PI * t) - 1); - }, - $EaseInExpo: function (t) { - return t == 0 ? 0 : Math.pow(2, 10 * (t - 1)); - }, - $EaseOutExpo: function (t) { - return t == 1 ? 1 : -Math.pow(2, -10 * t) + 1; - }, - $EaseInOutExpo: function (t) { - return t == 0 || t == 1 ? t : (t *= 2) < 1 ? 1 / 2 * Math.pow(2, 10 * (t - 1)) : 1 / 2 * (-Math.pow(2, -10 * --t) + 2); - }, - $EaseInCirc: function (t) { - return -(Math.sqrt(1 - t * t) - 1); - }, - $EaseOutCirc: function (t) { - return Math.sqrt(1 - (t -= 1) * t); - }, - $EaseInOutCirc: function (t) { - return (t *= 2) < 1 ? -1 / 2 * (Math.sqrt(1 - t * t) - 1) : 1 / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1); - }, - $EaseInElastic: function (t) { - if (!t || t == 1) - return t; - var p = .3, s = .075; - return -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * 2 * Math.PI / p)); - }, - $EaseOutElastic: function (t) { - if (!t || t == 1) - return t; - var p = .3, s = .075; - return Math.pow(2, -10 * t) * Math.sin((t - s) * 2 * Math.PI / p) + 1; - }, - $EaseInOutElastic: function (t) { - if (!t || t == 1) - return t; - var p = .45, s = .1125; - return (t *= 2) < 1 ? -.5 * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * 2 * Math.PI / p) : Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * 2 * Math.PI / p) * .5 + 1; - }, - $EaseInBack: function (t) { - var s = 1.70158; - return t * t * ((s + 1) * t - s); - }, - $EaseOutBack: function (t) { - var s = 1.70158; - return (t -= 1) * t * ((s + 1) * t + s) + 1; - }, - $EaseInOutBack: function (t) { - var s = 1.70158; - return (t *= 2) < 1 ? 1 / 2 * t * t * (((s *= 1.525) + 1) * t - s) : 1 / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2); - }, - $EaseInBounce: function (t) { - return 1 - $JssorEasing$.$EaseOutBounce(1 - t) - }, - $EaseOutBounce: function (t) { - return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375; - }, - $EaseInOutBounce: function (t) { - return t < 1 / 2 ? $JssorEasing$.$EaseInBounce(t * 2) * .5 : $JssorEasing$.$EaseOutBounce(t * 2 - 1) * .5 + .5; - }, - $EaseInWave: function (t) { - return 1 - Math.cos(t * Math.PI * 2) - }, - $EaseOutWave: function (t) { - return Math.sin(t * Math.PI * 2); - }, - $EaseOutJump: function (t) { - return 1 - (((t *= 2) < 1) ? (t = 1 - t) * t * t : (t -= 1) * t * t); - }, - $EaseInJump: function (t) { - return ((t *= 2) < 1) ? t * t * t : (t = 2 - t) * t * t; - } -}; - -var $JssorDirection$ = window.$JssorDirection$ = { - $TO_LEFT: 0x0001, - $TO_RIGHT: 0x0002, - $TO_TOP: 0x0004, - $TO_BOTTOM: 0x0008, - $HORIZONTAL: 0x0003, - $VERTICAL: 0x000C, - $LEFTRIGHT: 0x0003, - $TOPBOTOM: 0x000C, - $TOPLEFT: 0x0005, - $TOPRIGHT: 0x0006, - $BOTTOMLEFT: 0x0009, - $BOTTOMRIGHT: 0x000A, - $AROUND: 0x000F, - - $GetDirectionHorizontal: function (direction) { - return direction & 0x0003; - }, - $GetDirectionVertical: function (direction) { - return direction & 0x000C; - }, - $ChessHorizontal: function (direction) { - return (~direction & 0x0003) + (direction & 0x000C); - }, - $ChessVertical: function (direction) { - return (~direction & 0x000C) + (direction & 0x0003); - }, - $IsToLeft: function (direction) { - return (direction & 0x0003) == 0x0001; - }, - $IsToRight: function (direction) { - return (direction & 0x0003) == 0x0002; - }, - $IsToTop: function (direction) { - return (direction & 0x000C) == 0x0004; - }, - $IsToBottom: function (direction) { - return (direction & 0x000C) == 0x0008; - }, - $IsHorizontal: function (direction) { - return (direction & 0x0003) > 0; - }, - $IsVertical: function (direction) { - return (direction & 0x000C) > 0; - } -}; - -var $JssorKeyCode$ = { - $BACKSPACE: 8, - $COMMA: 188, - $DELETE: 46, - $DOWN: 40, - $END: 35, - $ENTER: 13, - $ESCAPE: 27, - $HOME: 36, - $LEFT: 37, - $NUMPAD_ADD: 107, - $NUMPAD_DECIMAL: 110, - $NUMPAD_DIVIDE: 111, - $NUMPAD_ENTER: 108, - $NUMPAD_MULTIPLY: 106, - $NUMPAD_SUBTRACT: 109, - $PAGE_DOWN: 34, - $PAGE_UP: 33, - $PERIOD: 190, - $RIGHT: 39, - $SPACE: 32, - $TAB: 9, - $UP: 38 -}; - -var $JssorAlignment$ = { - $TopLeft: 0x11, - $TopCenter: 0x12, - $TopRight: 0x14, - $MiddleLeft: 0x21, - $MiddleCenter: 0x22, - $MiddleRight: 0x24, - $BottomLeft: 0x41, - $BottomCenter: 0x42, - $BottomRight: 0x44, - - $IsTop: function (aligment) { - return aligment & 0x10 > 0; - }, - $IsMiddle: function (alignment) { - return alignment & 0x20 > 0; - }, - $IsBottom: function (alignment) { - return alignment & 0x40 > 0; - }, - $IsLeft: function (alignment) { - return alignment & 0x01 > 0; - }, - $IsCenter: function (alignment) { - return alignment & 0x02 > 0; - }, - $IsRight: function (alignment) { - return alignment & 0x04 > 0; - } -}; - -var $JssorMatrix$; - -var $JssorBrowser$ = { - $UNKNOWN: 0, - $IE: 1, - $FIREFOX: 2, - $SAFARI: 3, - $CHROME: 4, - $OPERA: 5 -}; - -var $ROWSER_UNKNOWN$ = 0; -var $ROWSER_IE$ = 1; -var $ROWSER_FIREFOX$ = 2; -var $ROWSER_SAFARI$ = 3; -var $ROWSER_CHROME$ = 4; -var $ROWSER_OPERA$ = 5; - -var $JssorAnimator$; - -// $JssorUtils$ is a static class, so make it singleton instance -var $JssorUtils$ = window.$JssorUtils$ = new function () { - - // Fields - - var self = this; - - var arrActiveX = ["Msxml2.XMLHTTP", "Msxml3.XMLHTTP", "Microsoft.XMLHTTP"]; - var supportedImageFormats = { - "bmp": false, - "jpeg": true, - "jpg": true, - "png": true, - "tif": false, - "wdp": false - }; - - var browser = $JssorBrowser$.$UNKNOWN; - var browserRuntimeVersion = 0; - var browserEngineVersion = 0; - var browserJavascriptVersion = 0; - var webkitVersion = 0; - - var app = navigator.appName; - var ver = navigator.appVersion; - var ua = navigator.userAgent; - - var urlParams = {}; - - function DetectBrowser() { - if (!browser) { - if (app == "Microsoft Internet Explorer" && - !!window.attachEvent && !!window.ActiveXObject) { - - var ieOffset = ua.indexOf("MSIE"); - browser = $JssorBrowser$.$IE; - browserEngineVersion = parseFloat(ua.substring(ieOffset + 5, ua.indexOf(";", ieOffset))); - - //check IE javascript version - /*@cc_on - browserJavascriptVersion = @_jscript_version; - @*/ - - // update: for intranet sites and compat view list sites, IE sends - // an IE7 User-Agent to the server to be interoperable, and even if - // the page requests a later IE version, IE will still report the - // IE7 UA to JS. we should be robust to self. - //var docMode = document.documentMode; - //if (typeof docMode !== "undefined") { - // browserRuntimeVersion = docMode; - //} - - browserRuntimeVersion = document.documentMode || browserEngineVersion; - - } - else if (app == "Netscape" && !!window.addEventListener) { - - var ffOffset = ua.indexOf("Firefox"); - var saOffset = ua.indexOf("Safari"); - var chOffset = ua.indexOf("Chrome"); - var webkitOffset = ua.indexOf("AppleWebKit"); - - if (ffOffset >= 0) { - browser = $JssorBrowser$.$FIREFOX; - browserRuntimeVersion = parseFloat(ua.substring(ffOffset + 8)); - } - else if (saOffset >= 0) { - var slash = ua.substring(0, saOffset).lastIndexOf("/"); - browser = (chOffset >= 0) ? $JssorBrowser$.$CHROME : $JssorBrowser$.$SAFARI; - browserRuntimeVersion = parseFloat(ua.substring(slash + 1, saOffset)); - } - - if (webkitOffset >= 0) - webkitVersion = parseFloat(ua.substring(webkitOffset + 12)); - } - else { - var match = /(opera)(?:.*version|)[ \/]([\w.]+)/i.exec(ua); - if (match) { - browser = $JssorBrowser$.$OPERA; - browserRuntimeVersion = parseFloat(match[2]); - } - } - } - } - - function IsBrowserIE() { - DetectBrowser(); - return browser == $ROWSER_IE$; - } - - function IsBrowserIeQuirks() { - - return IsBrowserIE() && (browserRuntimeVersion < 6 || document.compatMode == "BackCompat"); //Composite to "CSS1Compat" - } - - function IsBrowserFireFox() { - DetectBrowser(); - return browser == $ROWSER_FIREFOX$; - } - - function IsBrowserSafari() { - DetectBrowser(); - return browser == $ROWSER_SAFARI$; - } - - function IsBrowserChrome() { - DetectBrowser(); - return browser == $ROWSER_CHROME$; - } - - function IsBrowserOpera() { - DetectBrowser(); - return browser == $ROWSER_OPERA$; - } - - function IsBrowserBadTransform() { - return IsBrowserSafari() && (webkitVersion > 534) && (webkitVersion < 535); - } - - function IsBrowserSafeHWA() { - return IsBrowserSafari() && (webkitVersion < 535); - } - - function IsBrowserIe9Earlier() { - - //IE 8- and chrome 1 won't fade well - return IsBrowserIE() && browserRuntimeVersion < 9; // || (IsBrowserChrome() && browserRuntimeVersion < 2); - } - - var _TransformProperty; - function GetTransformProperty(elmt) { - - if (!_TransformProperty) { - // Note that in some versions of IE9 it is critical that - // msTransform appear in this list before MozTransform - - each(['transform', 'WebkitTransform', 'msTransform', 'MozTransform', 'OTransform'], function (property) { - if (!self.$IsUndefined(elmt.style[property])) { - _TransformProperty = property; - return true; - } - }); - - _TransformProperty = _TransformProperty || "transform"; - } - - return _TransformProperty; - } - - // Constructor - { - //Ignore urlParams - // // Url parameters - - // var query = window.location.search.substring(1); // ignore '?' - // var parts = query.split('&'); - - // for (var i = 0; i < parts.length; i++) { - // var part = parts[i]; - // var sep = part.indexOf('='); - - // if (sep > 0) { - // urlParams[part.substring(0, sep)] = - // decodeURIComponent(part.substring(sep + 1)); - // } - // } - - // Browser behaviors - - } - - // Helpers - function getOffsetParent(elmt, isFixed) { - // IE and Opera "fixed" position elements don't have offset parents. - // regardless, if it's fixed, its offset parent is the body. - if (isFixed && elmt != document.body) { - return document.body; - } else { - return elmt.offsetParent; - } - } - - function toString(obj) { - return Object.prototype.toString.call(obj); - } - - // [[Class]] -> type pairs - var class2type; - - function each(object, callback) { - if (toString(object) == "[object Array]") { - for (var i = 0; i < object.length; i++) { - if (callback(object[i], i, object)) { - break; - } - } - } else { - for (var name in object) { - if (callback(object[name], name, object)) { - break; - } - } - } - } - - function GetClass2Type() { - if (!class2type) { - class2type = {}; - each(["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Object"], function (name) { - class2type["[object " + name + "]"] = name.toLowerCase(); - }); - } - - return class2type; - } - - function type(obj) { - return obj == null ? String(obj) : GetClass2Type()[toString(obj)] || "object"; - } - - function isPlainObject(obj) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if (!obj || type(obj) !== "object" || obj.nodeType || self.$IsWindow(obj)) { - return false; - } - - var hasOwn = Object.prototype.hasOwnProperty; - - try { - // Not own constructor property must be Object - if (obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) { - return false; - } - } catch (e) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for (key in obj) { } - - return key === undefined || hasOwn.call(obj, key); - } - - function Delay(code, delay) { - setTimeout(code, delay || 0); - } - - function RemoveByReg(str, reg) { - var m = reg.exec(str); - - if (m) { - var header = str.substr(0, m.index); - var tailer = str.substr(m.lastIndex + 1, str.length - (m.lastIndex + 1)); - str = header + tailer; - } - - return str; - } - - function BuildNewCss(oldCss, removeRegs, replaceValue) { - var css = (!oldCss || oldCss == "inherit") ? "" : oldCss; - - each(removeRegs, function (removeReg) { - var m = removeReg.exec(css); - - if (m) { - var header = css.substr(0, m.index); - var tailer = css.substr(m.lastIndex + 1, css.length - (m.lastIndex + 1)); - css = header + tailer; - } - }); - - css = replaceValue + (css.indexOf(" ") != 0 ? " " : "") + css; - - return css; - } - - function SetStyleFilterIE(elmt, value) { - if (browserRuntimeVersion < 9) { - elmt.style.filter = value; - } - } - - function SetStyleMatrixIE(elmt, matrix, offset) { - //matrix is not for ie9+ running in ie8- mode - if (browserJavascriptVersion < 9) { - var oldFilterValue = elmt.style.filter; - var matrixReg = new RegExp(/[\s]*progid:DXImageTransform\.Microsoft\.Matrix\([^\)]*\)/g); - var matrixValue = matrix ? "progid:DXImageTransform.Microsoft.Matrix(" + "M11=" + matrix[0][0] + ", M12=" + matrix[0][1] + ", M21=" + matrix[1][0] + ", M22=" + matrix[1][1] + ", SizingMethod='auto expand')" : ""; - - var newFilterValue = BuildNewCss(oldFilterValue, [matrixReg], matrixValue); - - SetStyleFilterIE(elmt, newFilterValue); - - self.$CssMarginTop(elmt, offset.y); - self.$CssMarginLeft(elmt, offset.x); - } - } - - // Methods - - self.$IsBrowserIE = IsBrowserIE; - - self.$IsBrowserIeQuirks = IsBrowserIeQuirks; - - self.$IsBrowserFireFox = IsBrowserFireFox; - - self.$IsBrowserSafari = IsBrowserSafari; - - self.$IsBrowserChrome = IsBrowserChrome; - - self.$IsBrowserOpera = IsBrowserOpera; - - self.$IsBrowserBadTransform = IsBrowserBadTransform; - - self.$IsBrowserSafeHWA = IsBrowserSafeHWA; - - self.$IsBrowserIe9Earlier = IsBrowserIe9Earlier; - - self.$GetBrowserVersion = function () { - return browserRuntimeVersion; - }; - - self.$GetBrowserEngineVersion = function () { - return browserEngineVersion || browserRuntimeVersion; - }; - - self.$GetWebKitVersion = function () { - return webkitVersion; - }; - - self.$Delay = Delay; - - self.$GetElement = function (elmt) { - if (self.$IsString(elmt)) { - elmt = document.getElementById(elmt); - } - - return elmt; - }; - - self.$GetElementPosition = function (elmt) { - elmt = self.$GetElement(elmt); - var result = new $JssorPoint$(); - - // technique from: - // http://www.quirksmode.org/js/findpos.html - // with special check for "fixed" elements. - - while (elmt) { - result.x += elmt.offsetLeft; - result.y += elmt.offsetTop; - - var isFixed = self.$GetElementStyle(elmt).position == "fixed"; - - if (isFixed) { - result = result.$Plus(self.$GetPageScroll(window)); - } - - elmt = getOffsetParent(elmt, isFixed); - } - - return result; - }; - - self.$GetElementSize = function (elmt) { - elmt = self.$GetElement(elmt); - return new $JssorPoint$(elmt.clientWidth, elmt.clientHeight); - }; - - self.$GetEvent = function (event) { - return event ? event : window.event; - }; - - self.$GetEventSrcElement = function (event) { - event = self.$GetEvent(event); - return event.target || event.srcElement || document; - }; - - self.$GetEventDstElement = function (event) { - event = self.$GetEvent(event); - return event.relatedTarget || event.toElement; - }; - - self.$GetMousePosition = function (event) { - event = self.$GetEvent(event); - var result = new $JssorPoint$(); - - // technique from: - // http://www.quirksmode.org/js/events_properties.html - - if (event.type == "DOMMouseScroll" && - IsBrowserFireFox() && browserRuntimeVersion < 3) { - // hack for FF2 which reports incorrect position for mouse scroll - result.x = event.screenX; - result.y = event.screenY; - } else if (typeof (event.pageX) == "number") { - result.x = event.pageX; - result.y = event.pageY; - } else if (typeof (event.clientX) == "number") { - result.x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; - result.y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop; - } else { - $JssorDebug$.$Fail("Unknown event mouse position, no known technique."); - } - - return result; - }; - - self.$GetMouseScroll = function (event) { - event = self.$GetEvent(event); - var delta = 0; // default value - - // technique from: - // http://blog.paranoidferret.com/index.php/2007/10/31/javascript-tutorial-the-scroll-wheel/ - - if (typeof (event.wheelDelta) == "number") { - delta = event.wheelDelta; - } else if (typeof (event.detail) == "number") { - delta = event.detail * -1; - } else { - $JssorDebug$.$Fail("Unknown event mouse scroll, no known technique."); - } - - // normalize value to [-1, 1] - return delta ? delta / Math.abs(delta) : 0; - }; - - self.$GetPageScroll = function (window) { - var result = new $JssorPoint$(); - var docElmt = window.document.documentElement || {}; - var body = window.document.body || {}; - - // technique from: - // http://www.howtocreate.co.uk/tutorials/javascript/browserwindow - - if (typeof (window.pageXOffset) == "number") { - // most browsers - result.x = window.pageXOffset; - result.y = window.pageYOffset; - } else if (body.scrollLeft || body.scrollTop) { - // W3C spec, IE6+ in quirks mode - result.x = body.scrollLeft; - result.y = body.scrollTop; - } else if (docElmt.scrollLeft || docElmt.scrollTop) { - // IE6+ in standards mode - result.x = docElmt.scrollLeft; - result.y = docElmt.scrollTop; - } - - // note: we specifically aren't testing for typeof here, because IE sets - // the appropriate variables undefined instead of 0 under certain - // conditions. self means we also shouldn't fail if none of the three - // cases are hit; we'll just assume the page scroll is 0. - - return result; - }; - - self.$GetWindowSize = function (window) { - var result = new $JssorPoint$(); - - // technique from: - // http://www.howtocreate.co.uk/tutorials/javascript/browserwindow - - //jQuery way to get window size, but support ie quirks mode - var checkElement = (IsBrowserIeQuirks() ? window.document.body : window.document.documentElement); - - result.x = checkElement.clientWidth; - result.y = checkElement.clientHeight; - - return result; - }; - - //self.$MakeAjaxRequest = function (url, callback) { - // var async = typeof (callback) == "function"; - // var req = null; - - // if (async) { - // var actual = callback; - // var callback = function () { - // Delay($JssorUtils$.$CreateCallback(null, actual, req), 1); - // }; - // } - - // if (window.ActiveXObject) { - // for (var i = 0; i < arrActiveX.length; i++) { - // try { - // req = new ActiveXObject(arrActiveX[i]); - // break; - // } catch (e) { - // continue; - // } - // } - // } else if (window.XMLHttpRequest) { - // req = new XMLHttpRequest(); - // } - - // if (!req) { - // $JssorDebug$.$Fail("Browser doesn't support XMLHttpRequest."); - // } - - // if (async) { - // req.onreadystatechange = function () { - // if (req.readyState == 4) { - // // prevent memory leaks by breaking circular reference now - // req.onreadystatechange = new Function(); - // callback(); - // } - // }; - // } - - // try { - // req.open("GET", url, async); - // req.send(null); - // } catch (e) { - // $JssorDebug$.$Log(e.name + " while making AJAX request: " + e.message); - - // req.onreadystatechange = null; - // req = null; - - // if (async) { - // callback(); - // } - // } - - // return async ? null : req; - //}; - - //self.$ParseXml = function (string) { - // var xmlDoc = null; - - // if (window.ActiveXObject) { - // try { - // xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); - // xmlDoc.async = false; - // xmlDoc.loadXML(string); - // } catch (e) { - // $JssorDebug$.$Log(e.name + " while parsing XML (ActiveX): " + e.message); - // } - // } else if (window.DOMParser) { - // try { - // var parser = new DOMParser(); - // xmlDoc = parser.parseFromString(string, "text/xml"); - // } catch (e) { - // $JssorDebug$.$Log(e.name + " while parsing XML (DOMParser): " + e.message); - // } - // } else { - // $JssorDebug$.$Fail("Browser doesn't support XML DOM."); - // } - - // return xmlDoc; - //}; - - function Css(elmt, name, value) { - /// - /// access css - /// $JssorUtils$.$Css(elmt, name); //get css value - /// $JssorUtils$.$Css(elmt, name, value); //set css value - /// - /// - /// the element to access css - /// - /// - /// the name of css property - /// - /// - /// the value to set - /// - if (value != undefined) { - elmt.style[name] = value; - } - else { - var style = elmt.currentStyle || elmt.style; - value = style[name]; - - if(value == "" && window.getComputedStyle) { - style = elmt.ownerDocument.defaultView.getComputedStyle(elmt, null); - - style && (value = style.getPropertyValue(name) || style[name]); - } - - return value; - } - } - - function CssN(elmt, name, value, isDimensional) { - /// - /// access css as numeric - /// $JssorUtils$.$CssN(elmt, name); //get css value - /// $JssorUtils$.$CssN(elmt, name, value); //set css value - /// - /// - /// the element to access css - /// - /// - /// the name of css property - /// - /// - /// the value to set - /// - if (value != undefined) { - isDimensional && (value += "px"); - Css(elmt, name, value); - } - else { - return parseFloat(Css(elmt, name)); - } - } - - function CssP(elmt, name, value) { - /// - /// access css in pixel as numeric, like 'top', 'left', 'width', 'height' - /// $JssorUtils$.$CssP(elmt, name); //get css value - /// $JssorUtils$.$CssP(elmt, name, value); //set css value - /// - /// - /// the element to access css - /// - /// - /// the name of css property - /// - /// - /// the value to set - /// - return CssN(elmt, name, value, true); - } - - function CssProxy(name, numericOrDimension) { - /// - /// create proxy to access css, CssProxy(name[, numericOrDimension]); - /// - /// - /// the element to access css - /// - /// - /// not set: access original css, 1: access css as numeric, 2: access css in pixel as numeric - /// - var isDimensional = numericOrDimension & 2; - var cssAccessor = numericOrDimension ? CssN : Css; - return function (elmt, value) { - return cssAccessor(elmt, name, value, isDimensional); - }; - } - - function GetStyleOpacity(elmt) { - if (IsBrowserIE() && browserEngineVersion < 9) { - var match = /opacity=([^)]*)/.exec(elmt.style.filter || ""); - return match ? (parseFloat(match[1]) / 100) : 1; - } - else - return parseFloat(elmt.style.opacity || "1"); - } - - function SetStyleOpacity(elmt, opacity, ie9EarlierForce) { - - if (IsBrowserIE() && browserEngineVersion < 9) { - //var filterName = "filter"; // browserEngineVersion < 8 ? "filter" : "-ms-filter"; - var finalFilter = elmt.style.filter || ""; - - // for CSS filter browsers (IE), remove alpha filter if it's unnecessary. - // update: doing self always since IE9 beta seems to have broken the - // behavior if we rely on the programmatic filters collection. - var alphaReg = new RegExp(/[\s]*alpha\([^\)]*\)/g); - - // important: note the lazy star! self protects against - // multiple filters; we don't want to delete the other ones. - // update: also trimming extra whitespace around filter. - - var ieOpacity = Math.round(100 * opacity); - var alphaFilter = ""; - if (ieOpacity < 100 || ie9EarlierForce) { - alphaFilter = "alpha(opacity=" + ieOpacity + ") "; - //elmt.style["-ms-filter"] = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + ieOpacity + ") "; - } - - var newFilterValue = BuildNewCss(finalFilter, [alphaReg], alphaFilter); - - SetStyleFilterIE(elmt, newFilterValue); - } - - //if (!IsBrowserIE() || browserEngineVersion >= 9) - else { - elmt.style.opacity = opacity == 1 ? "" : Math.round(opacity * 100) / 100; - } - } - - function SetStyleTransformInternal(elmt, transform) { - var rotate = transform.$Rotate || 0; - var scale = transform.$Scale == undefined ? 1 : transform.$Scale; - - if (IsBrowserIe9Earlier()) { - var matrix = self.$CreateMatrix(rotate / 180 * Math.PI, scale, scale); - SetStyleMatrixIE(elmt, (!rotate && scale == 1) ? null : matrix, self.$GetMatrixOffset(matrix, transform.$OriginalWidth, transform.$OriginalHeight)); - } - else { - //rotate(15deg) scale(.5) translateZ(0) - var transformProperty = GetTransformProperty(elmt); - if (transformProperty) { - var transformValue = "rotate(" + rotate % 360 + "deg) scale(" + scale + ")"; - if ($JssorUtils$.$IsBrowserChrome() && webkitVersion > 535) - transformValue += " perspective(2000px)"; - - elmt.style[transformProperty] = transformValue; - } - } - } - - self.$SetStyleTransform = function (elmt, transform) { - if (IsBrowserBadTransform()) { - Delay(self.$CreateCallback(null, SetStyleTransformInternal, elmt, transform)); - } - else { - SetStyleTransformInternal(elmt, transform); - } - }; - - self.$SetStyleTransformOrigin = function (elmt, transformOrigin) { - var transformProperty = GetTransformProperty(elmt); - - if (transformProperty) - elmt.style[transformProperty + "Origin"] = transformOrigin; - }; - - self.$SetStyleScale = function (elmt, scale) { - - if (IsBrowserIE() && browserEngineVersion < 9 || (browserEngineVersion < 10 && IsBrowserIeQuirks())) { - elmt.style.zoom = (scale == 1) ? "" : scale; - } - else { - var transformProperty = GetTransformProperty(elmt); - - if (transformProperty) { - //rotate(15deg) scale(.5) - var transformValue = "scale(" + scale + ")"; - - var oldTransformValue = elmt.style[transformProperty]; - var scaleReg = new RegExp(/[\s]*scale\(.*?\)/g); - - var newTransformValue = BuildNewCss(oldTransformValue, [scaleReg], transformValue); - - elmt.style[transformProperty] = newTransformValue; - } - } - }; - - self.$EnableHWA = function (elmt) { - if (!elmt.style[GetTransformProperty(elmt)] || elmt.style[GetTransformProperty(elmt)] == "none") - elmt.style[GetTransformProperty(elmt)] = "perspective(2000px)"; - }; - - self.$DisableHWA = function (elmt) { - //if (force || elmt.style[GetTransformProperty(elmt)] == "perspective(2000px)") - elmt.style[GetTransformProperty(elmt)] = "none"; - }; - - var ie8OffsetWidth = 0; - var ie8OffsetHeight = 0; - var ie8WindowResizeCallbackHandlers; - //var ie8LastVerticalScrollbar; - //var toggleInfo = ""; - - function Ie8WindowResizeFilter(window) { - - var trigger = true; - - var checkElement = (IsBrowserIeQuirks() ? window.document.body : window.document.documentElement); - if (checkElement) { - //check vertical bar - //var hasVerticalBar = checkElement.scrollHeight > checkElement.clientHeight; - //var verticalBarToggle = hasVerticalBar != ie8LastVerticalScrollbar; - //ie8LastVerticalScrollbar = hasVerticalBar; - - var widthChange = checkElement.offsetWidth - ie8OffsetWidth; - var heightChange = checkElement.offsetHeight - ie8OffsetHeight; - if (widthChange || heightChange) { - - ie8OffsetWidth += widthChange; - ie8OffsetHeight += heightChange; - } - else - trigger = false; - } - - trigger && each(ie8WindowResizeCallbackHandlers, function (handler) { - handler(); - }); - } - - self.$OnWindowResize = function (window, handler) { - - if (IsBrowserIE() && browserEngineVersion < 9) { - if (!ie8WindowResizeCallbackHandlers) { - ie8WindowResizeCallbackHandlers = [handler]; - handler = self.$CreateCallback(null, Ie8WindowResizeFilter, window); - } - else { - ie8WindowResizeCallbackHandlers.push(handler); - return; - } - } - - self.$AddEvent(window, "resize", handler); - }; - - self.$AddEvent = function (elmt, eventName, handler, useCapture) { - elmt = self.$GetElement(elmt); - - // technique from: - // http://blog.paranoidferret.com/index.php/2007/08/10/javascript-working-with-events/ - - if (elmt.addEventListener) { - if (eventName == "mousewheel") { - elmt.addEventListener("DOMMouseScroll", handler, useCapture); - } - // we are still going to add the mousewheel -- not a mistake! - // self is for opera, since it uses onmousewheel but needs addEventListener. - elmt.addEventListener(eventName, handler, useCapture); - } - else if (elmt.attachEvent) { - elmt.attachEvent("on" + eventName, handler); - if (useCapture && elmt.setCapture) { - elmt.setCapture(); - } - } - - $JssorDebug$.$Execute(function () { - if (!elmt.addEventListener && !elmt.attachEvent) { - $JssorDebug$.$Fail("Unable to attach event handler, no known technique."); - } - }); - - }; - - self.$RemoveEvent = function (elmt, eventName, handler, useCapture) { - elmt = self.$GetElement(elmt); - - // technique from: - // http://blog.paranoidferret.com/index.php/2007/08/10/javascript-working-with-events/ - - if (elmt.removeEventListener) { - if (eventName == "mousewheel") { - elmt.removeEventListener("DOMMouseScroll", handler, useCapture); - } - // we are still going to remove the mousewheel -- not a mistake! - // self is for opera, since it uses onmousewheel but needs removeEventListener. - elmt.removeEventListener(eventName, handler, useCapture); - } - else if (elmt.detachEvent) { - elmt.detachEvent("on" + eventName, handler); - if (useCapture && elmt.releaseCapture) { - elmt.releaseCapture(); - } - } - - $JssorDebug$.$Execute(function () { - if (!elmt.removeEventListener && !elmt.detachEvent) { - $JssorDebug$.$Fail("Unable to detach event handler, no known technique."); - } - }); - }; - - self.$FireEvent = function (elmt, eventName) { - //var document = elmt.document; - - $JssorDebug$.$Execute(function () { - if (!document.createEvent && !document.createEventObject) { - $JssorDebug$.$Fail("Unable to fire event, no known technique."); - } - - if (!elmt.dispatchEvent && !elmt.fireEvent) { - $JssorDebug$.$Fail("Unable to fire event, no known technique."); - } - }); - - var evento; - - if (document.createEvent) { - evento = document.createEvent("HTMLEvents"); - evento.initEvent(eventName, false, false); - elmt.dispatchEvent(evento); - } - else { - var ieEventName = "on" + eventName; - evento = document.createEventObject(); - //event.eventType = ieEventName; - //event.eventName = ieEventName; - - elmt.fireEvent(ieEventName, evento); - } - }; - - self.$AddEventBrowserMouseUp = function (handler, userCapture) { - self.$AddEvent((IsBrowserIe9Earlier()) ? document : window, "mouseup", handler, userCapture); - }; - - self.$RemoveEventBrowserMouseUp = function (handler, userCapture) { - self.$RemoveEvent((IsBrowserIe9Earlier()) ? document : window, "mouseup", handler, userCapture); - }; - - self.$AddEventBrowserMouseDown = function (handler, userCapture) { - self.$AddEvent((IsBrowserIe9Earlier()) ? document : window, "mousedown", handler, userCapture); - }; - - self.$RemoveEventBrowserMouseDown = function (handler, userCapture) { - self.$RemoveEvent((IsBrowserIe9Earlier()) ? document : window, "mousedown", handler, userCapture); - }; - - self.$CancelEvent = function (event) { - event = self.$GetEvent(event); - - // technique from: - // http://blog.paranoidferret.com/index.php/2007/08/10/javascript-working-with-events/ - - if (event.preventDefault) { - event.preventDefault(); // W3C for preventing default - } - - event.cancel = true; // legacy for preventing default - event.returnValue = false; // IE for preventing default - }; - - self.$StopEvent = function (event) { - event = self.$GetEvent(event); - - // technique from: - // http://blog.paranoidferret.com/index.php/2007/08/10/javascript-working-with-events/ - - if (event.stopPropagation) { - event.stopPropagation(); // W3C for stopping propagation - } - - event.cancelBubble = true; // IE for stopping propagation - }; - - self.$CreateCallback = function (object, method) { - // create callback args - var initialArgs = []; - for (var i = 2; i < arguments.length; i++) { - initialArgs.push(arguments[i]); - } - - // create closure to apply method - var callback = function () { - // concatenate new args, but make a copy of initialArgs first - var args = initialArgs.concat([]); - for (var i = 0; i < arguments.length; i++) { - args.push(arguments[i]); - } - - return method.apply(object, args); - }; - - $JssorDebug$.$LiveStamp(callback, "callback_" + ($JssorUtils$.$GetNow() & 11111111)); - - return callback; - }; - - var _Freeer; - self.$FreeElement = function (elmt) { - if (!_Freeer) - _Freeer = self.$CreateDivElement(); - - if (elmt) { - $JssorUtils$.$AppendChild(_Freeer, elmt); - $JssorUtils$.$ClearInnerHtml(_Freeer); - } - }; - - self.$SetInnerText = function (elmt, text) { - var textNode = document.createTextNode(text); - self.$ClearInnerHtml(elmt); - elmt.appendChild(textNode); - }; - - self.$GetInnerText = function (elmt) { - return elmt.textContent || elmt.innerText; - }; - - self.$GetInnerHtml = function (elmt) { - return elmt.innerHTML; - }; - - self.$SetInnerHtml = function (elmt, html) { - elmt.innerHTML = html; - }; - - self.$ClearInnerHtml = function (elmt) { - elmt.innerHTML = ""; - }; - - self.$EncodeHtml = function (text) { - var div = self.$CreateDivElement(); - self.$SetInnerText(div, text); - return self.$GetInnerHtml(div); - }; - - self.$DecodeHtml = function (html) { - var div = self.$CreateDivElement(); - self.$SetInnerHtml(div, html); - return self.$GetInnerText(div); - }; - - self.$SelectElement = function (elmt) { - var userSelection; - if (window.getSelection) { - //W3C default - userSelection = window.getSelection(); - } - var theRange = null; - if (document.createRange) { - theRange = document.createRange(); - theRange.selectNode(elmt); - } - else { - theRange = document.body.createTextRange(); - theRange.moveToElementText(elmt); - theRange.select(); - } - //set user selection - if (userSelection) - userSelection.addRange(theRange); - }; - - self.$DeselectElements = function () { - if (document.selection) { - document.selection.empty(); - } else if (window.getSelection) { - window.getSelection().removeAllRanges(); - } - }; - - self.$GetChildren = function (elmt) { - var children = []; - - for (var tmpEl = elmt.firstChild; tmpEl; tmpEl = tmpEl.nextSibling) { - if (tmpEl.nodeType == 1) { - children.push(tmpEl); - } - } - - return children; - }; - - function FindFirstChildByAttribute(elmt, attrValue, attrName, deep) { - if (!attrName) - attrName = "u"; - - for (elmt = elmt ? elmt.firstChild : null; elmt; elmt = elmt.nextSibling) { - if (elmt.nodeType == 1) { - if (self.$GetAttributeEx(elmt, attrName) == attrValue) - return elmt; - - if (deep) { - var childRet = FindFirstChildByAttribute(elmt, attrValue, attrName, deep); - if (childRet) - return childRet; - } - } - } - } - - self.$FindFirstChildByAttribute = FindFirstChildByAttribute; - - function FindChildrenByAttribute(elmt, attrValue, attrName, deep) { - if (!attrName) - attrName = "u"; - - var ret = []; - - for (elmt = elmt ? elmt.firstChild : null; elmt; elmt = elmt.nextSibling) { - if (elmt.nodeType == 1) { - if (self.$GetAttributeEx(elmt, attrName) == attrValue) - ret.push(elmt); - - if (deep) { - var childRet = FindChildrenByAttribute(elmt, attrValue, attrName, deep); - if (childRet.length) - ret = ret.concat(childRet); - } - } - } - - return ret; - } - - self.$FindChildrenByAttribute = FindChildrenByAttribute; - - function FindFirstChildByTag(elmt, tagName, deep) { - - for (elmt = elmt ? elmt.firstChild : null; elmt; elmt = elmt.nextSibling) { - if (elmt.nodeType == 1) { - if (elmt.tagName == tagName) - return elmt; - - if (deep) { - var childRet = FindFirstChildByTag(elmt, tagName, deep); - if (childRet) - return childRet; - } - } - } - } - - self.$FindFirstChildByTag = FindFirstChildByTag; - - function FindChildrenByTag(elmt, tagName, deep) { - var ret = []; - - for (elmt = elmt ? elmt.firstChild : null; elmt; elmt = elmt.nextSibling) { - if (elmt.nodeType == 1) { - if (!tagName || elmt.tagName == tagName) - ret.push(elmt); - - if (deep) { - var childRet = FindChildrenByTag(elmt, tagName, true); - if (childRet.length) - ret = ret.concat(childRet); - } - } - } - - return ret; - } - - self.$FindChildrenByTag = FindChildrenByTag; - - self.$GetElementsByTagName = function (elmt, tagName) { - return elmt.getElementsByTagName(tagName); - }; - - self.$Extend = function (target) { - for (var i = 1; i < arguments.length; i++) { - - var options = arguments[i]; - - // Only deal with non-null/undefined values - if (options) { - // Extend the base object - for (var name in options) { - target[name] = options[name]; - } - } - } - - // Return the modified object - return target; - }; - - self.$Unextend = function (target, options) { - $JssorDebug$.$Assert(options); - - var unextended = {}; - - // Extend the base object - for (var name in target) { - if (target[name] != options[name]) { - unextended[name] = target[name]; - } - } - - // Return the modified object - return unextended; - }; - - self.$IsUndefined = function (obj) { - return type(obj) == "undefined"; - }; - - self.$IsFunction = function (obj) { - return type(obj) == "function"; - }; - - self.$IsArray = Array.isArray || function (obj) { - return type(obj) == "array"; - }; - - self.$IsString = function (obj) { - return type(obj) == "string"; - }; - - self.$IsNumeric = function (obj) { - return !isNaN(parseFloat(obj)) && isFinite(obj); - }; - - self.$IsWindow = function (obj) { - return obj != null && obj == obj.window; - }; - - self.$Type = type; - - // args is for internal usage only - self.$Each = each; - - self.$IsPlainObject = isPlainObject; - - self.$CreateDivElement = function (doc) { - return self.$CreateElement("DIV", doc); - }; - - self.$CreateSpanElement = function (doc) { - return self.$CreateElement("SPAN", doc); - }; - - self.$CreateElement = function (tagName, doc) { - doc = doc || document; - return doc.createElement(tagName); - }; - - self.$EmptyFunction = function () { }; - - self.$GetAttribute = function (elmt, name) { - return elmt.getAttribute(name); - }; - - self.$GetAttributeEx = function (elmt, name) { - return self.$GetAttribute(elmt, name) || self.$GetAttribute(elmt, "data-" + name); - }; - - self.$SetAttribute = function (elmt, name, value) { - elmt.setAttribute(name, value); - }; - - self.$GetClassName = function (elmt) { - return elmt.className; - }; - - self.$SetClassName = function (elmt, className) { - elmt.className = className || ""; - }; - - self.$GetParentNode = function (elmt) { - return elmt.parentNode; - }; - - self.$HideElement = function (elmt) { - self.$CssDisplay(elmt, "none"); - }; - - self.$HideElements = function (elmts) { - for (var i = 0; i < elmts.length; i++) { - self.$HideElement(elmts[i]); - } - }; - - self.$ShowElement = function (elmt, show) { - self.$CssDisplay(elmt, show == false ? "none" : ""); - }; - - self.$ShowElements = function (elmts) { - for (var i = 0; i < elmts.length; i++) { - self.$ShowElement(elmts[i]); - } - }; - - self.$RemoveAttribute = function (elmt, attrbuteName) { - elmt.removeAttribute(attrbuteName); - }; - - self.$CanClearClip = function () { - //return !IsBrowserIE() || browserEngineVersion > 9 || (browserRuntimeVersion > 7 && !IsBrowserIeQuirks()); - return IsBrowserIE() && browserRuntimeVersion < 10; - }; - - self.$SetStyleClip = function (elmt, clip) { - if (clip) { - elmt.style.clip = "rect(" + Math.round(clip.$Top) + "px " + Math.round(clip.$Right) + "px " + Math.round(clip.$Bottom) + "px " + Math.round(clip.$Left) + "px)"; - } - else { - var cssText = elmt.style.cssText; - var clipRegs = [ - new RegExp(/[\s]*clip: rect\(.*?\)[;]?/i), - new RegExp(/[\s]*cliptop: .*?[;]?/i), - new RegExp(/[\s]*clipright: .*?[;]?/i), - new RegExp(/[\s]*clipbottom: .*?[;]?/i), - new RegExp(/[\s]*clipleft: .*?[;]?/i) - ]; - - var newCssText = BuildNewCss(cssText, clipRegs, ""); - - $JssorUtils$.$CssCssText(elmt, newCssText); - } - }; - - self.$GetNow = function () { - return new Date().getTime(); - }; - - self.$AppendChild = function (elmt, child) { - elmt.appendChild(child); - }; - - self.$AppendChildren = function (elmt, children) { - each(children, function (child) { - self.$AppendChild(elmt, child); - }); - }; - - self.$InsertBefore = function (elmt, child, refObject) { - elmt.insertBefore(child, refObject); - }; - - self.$InsertAdjacentHtml = function (elmt, where, text) { - elmt.insertAdjacentHTML(where, text); - }; - - self.$RemoveChild = function (elmt, child) { - elmt.removeChild(child); - }; - - self.$RemoveChildren = function (elmt, children) { - each(children, function (child) { - self.$RemoveChild(elmt, child); - }); - }; - - self.$ClearChildren = function (elmt) { - self.$RemoveChildren(elmt, self.$GetChildren(elmt)); - }; - - self.$ParseInt = function (str, radix) { - return parseInt(str, radix || 10); - }; - - self.$ParseFloat = function (str) { - return parseFloat(str); - }; - - self.$IsChild = function (elmtA, elmtB) { - var body = document.body; - while (elmtB && elmtA != elmtB && body != elmtB) { - try { - elmtB = elmtB.parentNode; - } catch (e) { - // Firefox sometimes fires events for XUL elements, which throws - // a "permission denied" error. so this is not a child. - return false; - } - } - return elmtA == elmtB; - }; - - self.$ToLowerCase = function (value) { - if (value) - value = value.toLowerCase(); - - return value; - }; - - self.$CloneNode = function (elmt, deep) { - return elmt.cloneNode(deep); - }; - - function LoadImageCallback(callback, image, abort) { - image.onload = null; - image.abort = null; - - if (callback) - callback(image, abort); - } - - self.$LoadImage = function (src, callback) { - if (self.$IsBrowserOpera() && browserRuntimeVersion < 11.6 || !src) { - LoadImageCallback(callback, null); - } - else { - var image = new Image(); - image.onload = self.$CreateCallback(null, LoadImageCallback, callback, image); - image.onabort = self.$CreateCallback(null, LoadImageCallback, callback, image, true); - image.src = src; - } - }; - - self.$LoadImages = function (imageElmts, mainImageElmt, callback) { - - var _ImageLoading = imageElmts.length + 1; - - function LoadImageCompleteEventHandler(image, abort) { - _ImageLoading--; - if (mainImageElmt && image && image.src == mainImageElmt.src) - mainImageElmt = image; - !_ImageLoading && callback && callback(mainImageElmt); - } - - $JssorUtils$.$Each(imageElmts, function (imageElmt) { - $JssorUtils$.$LoadImage(imageElmt.src, LoadImageCompleteEventHandler); - }); - - LoadImageCompleteEventHandler(); - }; - - self.$BuildElement = function (template, tagName, replacer, createCopy) { - if (createCopy) - template = $JssorUtils$.$CloneNode(template, true); - - var templateHolders = $JssorUtils$.$GetElementsByTagName(template, tagName); - for (var j = templateHolders.length - 1; j > -1; j--) { - var templateHolder = templateHolders[j]; - var replaceItem = $JssorUtils$.$CloneNode(replacer, true); - $JssorUtils$.$SetClassName(replaceItem, $JssorUtils$.$GetClassName(templateHolder)); - $JssorUtils$.$CssCssText(replaceItem, templateHolder.style.cssText); - - var thumbnailPlaceHolderParent = $JssorUtils$.$GetParentNode(templateHolder); - $JssorUtils$.$InsertBefore(thumbnailPlaceHolderParent, replaceItem, templateHolder); - $JssorUtils$.$RemoveChild(thumbnailPlaceHolderParent, templateHolder); - } - - return template; - }; - - var _MouseDownButtons; - var _MouseOverButtons = []; - function JssorButtonEx(elmt) { - var _Self = this; - - var _OriginClassName; - - var _IsMouseDown; //class name 'dn' - var _IsActive; //class name 'av' - - function Highlight() { - var className = _OriginClassName; - - if (_IsMouseDown) { - className += 'dn'; - } - else if (_IsActive) { - className += "av"; - } - - $JssorUtils$.$SetClassName(elmt, className); - } - - function OnMouseDown(event) { - _MouseDownButtons.push(_Self); - - _IsMouseDown = true; - - Highlight(); - } - - _Self.$MouseUp = function () { - /// - /// Internal member function, do not use it. - /// - /// - - _IsMouseDown = false; - - Highlight(); - }; - - _Self.$Activate = function (activate) { - _IsActive = activate; - - Highlight(); - }; - - //JssorButtonEx Constructor - { - elmt = self.$GetElement(elmt); - - if (!_MouseDownButtons) { - self.$AddEventBrowserMouseUp(function () { - var oldMouseDownButtons = _MouseDownButtons; - _MouseDownButtons = []; - - each(oldMouseDownButtons, function (button) { - button.$MouseUp(); - }); - }); - - _MouseDownButtons = []; - } - - _OriginClassName = self.$GetClassName(elmt); - - $JssorUtils$.$AddEvent(elmt, "mousedown", OnMouseDown); - } - } - - self.$Buttonize = function (elmt) { - return new JssorButtonEx(elmt); - }; - - self.$Css = Css; - self.$CssN = CssN; - self.$CssP = CssP; - - self.$CssOverflow = CssProxy("overflow"); - - self.$CssTop = CssProxy("top", 2); - self.$CssLeft = CssProxy("left", 2); - self.$CssWidth = CssProxy("width", 2); - self.$CssHeight = CssProxy("height", 2); - self.$CssMarginLeft = CssProxy("marginLeft", 2); - self.$CssMarginTop = CssProxy("marginTop", 2); - self.$CssPosition = CssProxy("position"); - self.$CssDisplay = CssProxy("display"); - self.$CssZIndex = CssProxy("zIndex", 1); - self.$CssFloat = function (elmt, float) { - return Css(elmt, IsBrowserIE() ? "styleFloat" : "cssFloat", float); - }; - self.$CssOpacity = function (elmt, opacity, ie9EarlierForce) { - if (opacity != undefined) { - SetStyleOpacity(elmt, opacity, ie9EarlierForce); - } - else { - return GetStyleOpacity(elmt); - } - }; - self.$CssCssText = function (elmt, text) { - if (text != undefined) { - elmt.style.cssText = text; - } - else { - return elmt.style.cssText; - } - }; - - var _StyleGetter = { - $Opacity: self.$CssOpacity, - $Top: self.$CssTop, - $Left: self.$CssLeft, - $Width: self.$CssWidth, - $Height: self.$CssHeight, - $Position: self.$CssPosition, - $Display: self.$CssDisplay, - $ZIndex: self.$CssZIndex - }; - - //var _StyleGetter = { - // $Opacity: self.$GetStyleOpacity, - // $Top: self.$GetStyleTop, - // $Left: self.$GetStyleLeft, - // $Width: self.$GetStyleWidth, - // $Height: self.$GetStyleHeight, - // $Position: self.$GetStylePosition, - // $Display: self.$GetStyleDisplay, - // $ZIndex: self.$GetStyleZIndex - //}; - - var _StyleSetterReserved; - - //var _StyleSetterReserved = { - // $Opacity: self.$SetStyleOpacity, - // $Top: self.$SetStyleTop, - // $Left: self.$SetStyleLeft, - // $Width: self.$SetStyleWidth, - // $Height: self.$SetStyleHeight, - // $Display: self.$SetStyleDisplay, - // $Clip: self.$SetStyleClip, - // $MarginLeft: self.$SetStyleMarginLeft, - // $MarginTop: self.$SetStyleMarginTop, - // $Transform: self.$SetStyleTransform, - // $Position: self.$SetStylePosition, - // $ZIndex: self.$SetStyleZIndex - //}; - - function GetStyleSetter() { - if (!_StyleSetterReserved) { - _StyleSetterReserved = self.$Extend({ - $MarginTop: self.$CssMarginTop, - $MarginLeft: self.$CssMarginLeft, - $Clip: self.$SetStyleClip, - $Transform: self.$SetStyleTransform - }, _StyleGetter); - } - return _StyleSetterReserved; - } - - function GetStyleSetterEx() { - GetStyleSetter(); - - //For Compression Only - _StyleSetterReserved.$Transform = _StyleSetterReserved.$Transform; - - return _StyleSetterReserved; - } - - self.$GetStyleSetter = GetStyleSetter; - - self.$GetStyleSetterEx = GetStyleSetterEx; - - self.$GetStyles = function (elmt, originStyles) { - GetStyleSetter(); - - var styles = {}; - - each(originStyles, function (value, key) { - if (_StyleGetter[key]) { - styles[key] = _StyleGetter[key](elmt); - } - }); - - return styles; - }; - - self.$SetStyles = function (elmt, styles) { - var styleSetter = GetStyleSetter(); - - each(styles, function (value, key) { - styleSetter[key] && styleSetter[key](elmt, value); - }); - }; - - self.$SetStylesEx = function (elmt, styles) { - GetStyleSetterEx(); - - self.$SetStyles(elmt, styles); - }; - - $JssorMatrix$ = new function () { - var _This = this; - - function Multiply(ma, mb) { - var acs = ma[0].length; - var rows = ma.length; - var cols = mb[0].length; - - var matrix = []; - - for (var r = 0; r < rows; r++) { - var row = matrix[r] = []; - for (var c = 0; c < cols; c++) { - var unitValue = 0; - - for (var ac = 0; ac < acs; ac++) { - unitValue += ma[r][ac] * mb[ac][c]; - } - - row[c] = unitValue; - } - } - - return matrix; - } - - _This.$ScaleX = function (matrix, sx) { - return _This.$ScaleXY(matrix, sx, 0); - }; - - _This.$ScaleY = function (matrix, sy) { - return _This.$ScaleXY(matrix, 0, sy); - }; - - _This.$ScaleXY = function (matrix, sx, sy) { - return Multiply(matrix, [[sx, 0], [0, sy]]); - }; - - _This.$TransformPoint = function (matrix, p) { - var pMatrix = Multiply(matrix, [[p.x], [p.y]]); - - return new $JssorPoint$(pMatrix[0][0], pMatrix[1][0]); - }; - }; - - self.$CreateMatrix = function (alpha, scaleX, scaleY) { - var cos = Math.cos(alpha); - var sin = Math.sin(alpha); - //var r11 = cos; - //var r21 = sin; - //var r12 = -sin; - //var r22 = cos; - - //var m11 = cos * scaleX; - //var m12 = -sin * scaleY; - //var m21 = sin * scaleX; - //var m22 = cos * scaleY; - - return [[cos * scaleX, -sin * scaleY], [sin * scaleX, cos * scaleY]]; - }; - - self.$GetMatrixOffset = function (matrix, width, height) { - var p1 = $JssorMatrix$.$TransformPoint(matrix, new $JssorPoint$(-width / 2, -height / 2)); - var p2 = $JssorMatrix$.$TransformPoint(matrix, new $JssorPoint$(width / 2, -height / 2)); - var p3 = $JssorMatrix$.$TransformPoint(matrix, new $JssorPoint$(width / 2, height / 2)); - var p4 = $JssorMatrix$.$TransformPoint(matrix, new $JssorPoint$(-width / 2, height / 2)); - - return new $JssorPoint$(Math.min(p1.x, p2.x, p3.x, p4.x) + width / 2, Math.min(p1.y, p2.y, p3.y, p4.y) + height / 2); - }; -}; - -$JssorAnimator$ = function (delay, duration, options, elmt, fromStyles, toStyles) { - delay = delay || 0; - - var _This = this; - var _AutoPlay; - var _Hiden; - var _CombineMode; - var _PlayToPosition; - var _PlayDirection; - var _NoStop; - var _TimeStampLastFrame = 0; - - var _SubEasings; - var _SubRounds; - var _SubDurings; - var _Callback; - - var _Position_Current = 0; - var _Position_Display = 0; - var _Hooked; - - var _Position_InnerBegin = delay; - var _Position_InnerEnd = delay + duration; - var _Position_OuterBegin; - var _Position_OuterEnd; - var _LoopLength; - - var _NestedAnimators = []; - var _StyleSetter; - - function GetPositionRange(position, begin, end) { - var range = 0; - - if (position < begin) - range = -1; - - else if (position > end) - range = 1; - - return range; - } - - function GetInnerPositionRange(position) { - return GetPositionRange(position, _Position_InnerBegin, _Position_InnerEnd); - } - - function GetOuterPositionRange(position) { - return GetPositionRange(position, _Position_OuterBegin, _Position_OuterEnd); - } - - function Shift(offset) { - _Position_OuterBegin += offset; - _Position_OuterEnd += offset; - _Position_InnerBegin += offset; - _Position_InnerEnd += offset; - - _Position_Current += offset; - _Position_Display += offset; - - $JssorUtils$.$Each(_NestedAnimators, function (animator) { - animator, animator.$Shift(offset); - }); - } - - function Locate(position, relative) { - var offset = position - _Position_OuterBegin + delay * relative; - - Shift(offset); - - //$JssorDebug$.$Execute(function () { - // _This.$Position_InnerBegin = _Position_InnerBegin; - // _This.$Position_InnerEnd = _Position_InnerEnd; - // _This.$Position_OuterBegin = _Position_OuterBegin; - // _This.$Position_OuterEnd = _Position_OuterEnd; - //}); - - return _Position_OuterEnd; - } - - function GoToPosition(positionOuter, force) { - var trimedPositionOuter = positionOuter; - - if (_LoopLength && (trimedPositionOuter >= _Position_OuterEnd || trimedPositionOuter <= _Position_OuterBegin)) { - trimedPositionOuter = ((trimedPositionOuter - _Position_OuterBegin) % _LoopLength + _LoopLength) % _LoopLength + _Position_OuterBegin; - } - - if (!_Hooked || _NoStop || force || _Position_Current != trimedPositionOuter) { - - var positionToDisplay = Math.min(trimedPositionOuter, _Position_OuterEnd); - positionToDisplay = Math.max(positionToDisplay, _Position_OuterBegin); - - if (!_Hooked || _NoStop || force || positionToDisplay != _Position_Display) { - if (toStyles) { - var currentStyles = toStyles; - - if (fromStyles) { - var interPosition = (positionToDisplay - _Position_InnerBegin) / (duration || 1); - if (options.$Optimize && $JssorUtils$.$IsBrowserChrome() && duration) - interPosition = Math.round(interPosition * duration / 16) / duration * 16; - if (options.$Reverse) - interPosition = 1 - interPosition; - - currentStyles = {}; - - for (var key in toStyles) { - var round = _SubRounds[key] || 1; - var during = _SubDurings[key] || [0, 1]; - var propertyInterPosition = (interPosition - during[0]) / during[1]; - propertyInterPosition = Math.min(Math.max(propertyInterPosition, 0), 1); - propertyInterPosition = propertyInterPosition * round; - var floorPosition = Math.floor(propertyInterPosition); - if (propertyInterPosition != floorPosition) - propertyInterPosition -= floorPosition; - - var easing = _SubEasings[key] || _SubEasings.$Default; - var easingValue = easing(propertyInterPosition); - var currentPropertyValue; - var value = fromStyles[key]; - var toValue = toStyles[key]; - - if ($JssorUtils$.$IsNumeric(toValue)) { - currentPropertyValue = value + (toValue - value) * easingValue; - } - else { - currentPropertyValue = $JssorUtils$.$Extend({ $Offset: {} }, fromStyles[key]); - - $JssorUtils$.$Each(toValue.$Offset, function (rectX, n) { - var offsetValue = rectX * easingValue; - currentPropertyValue.$Offset[n] = offsetValue; - currentPropertyValue[n] += offsetValue; - }); - } - currentStyles[key] = currentPropertyValue; - } - } - - if (fromStyles.$Zoom) { - currentStyles.$Transform = { $Rotate: currentStyles.$Rotate || 0, $Scale: currentStyles.$Zoom, $OriginalWidth: options.$OriginalWidth, $OriginalHeight: options.$OriginalHeight }; - } - - if (toStyles.$Clip && options.$Move) { - var styleFrameNClipOffset = currentStyles.$Clip.$Offset; - - var offsetY = (styleFrameNClipOffset.$Top || 0) + (styleFrameNClipOffset.$Bottom || 0); - var offsetX = (styleFrameNClipOffset.$Left || 0) + (styleFrameNClipOffset.$Right || 0); - - currentStyles.$Left = (currentStyles.$Left || 0) + offsetX; - currentStyles.$Top = (currentStyles.$Top || 0) + offsetY; - currentStyles.$Clip.$Left -= offsetX; - currentStyles.$Clip.$Right -= offsetX; - currentStyles.$Clip.$Top -= offsetY; - currentStyles.$Clip.$Bottom -= offsetY; - } - - if (currentStyles.$Clip && $JssorUtils$.$CanClearClip() && !currentStyles.$Clip.$Top && !currentStyles.$Clip.$Left && (currentStyles.$Clip.$Right == options.$OriginalWidth) && (currentStyles.$Clip.$Bottom == options.$OriginalHeight)) - currentStyles.$Clip = null; - - $JssorUtils$.$Each(currentStyles, function (value, key) { - _StyleSetter[key] && _StyleSetter[key](elmt, value); - }); - } - - _This.$OnInnerOffsetChange(_Position_Display - _Position_InnerBegin, positionToDisplay - _Position_InnerBegin); - } - - _Position_Display = positionToDisplay; - - $JssorUtils$.$Each(_NestedAnimators, function (animator, i) { - var nestedAnimator = positionOuter < _Position_Current ? _NestedAnimators[_NestedAnimators.length - i - 1] : animator; - nestedAnimator.$GoToPosition(positionOuter, force); - }); - - var positionOld = _Position_Current; - var positionNew = positionOuter; - - _Position_Current = trimedPositionOuter; - _Hooked = true; - - _This.$OnPositionChange(positionOld, positionNew); - } - } - - function Join(animator, combineMode) { - /// - /// Combine another animator as nested animator - /// - /// - /// An instance of $JssorAnimator$ - /// - /// - /// 0: parallel - place the animator parallel to this animator. - /// 1: chain - chain the animator at the _Position_InnerEnd of this animator. - /// - $JssorDebug$.$Execute(function () { - if (combineMode !== 0 && combineMode !== 1) - $JssorDebug$.$Fail("Argument out of range, the value of 'combineMode' should be either 0 or 1."); - }); - - if (combineMode) - animator.$Locate(_Position_OuterEnd, 1); - - _Position_OuterEnd = Math.max(_Position_OuterEnd, animator.$GetPosition_OuterEnd()); - _NestedAnimators.push(animator); - } - - function PlayFrame() { - if (_AutoPlay) { - var now = $JssorUtils$.$GetNow(); - var timeOffset = Math.min(now - _TimeStampLastFrame, $JssorUtils$.$IsBrowserOpera() ? 80 : 20); - var timePosition = _Position_Current + timeOffset * _PlayDirection; - _TimeStampLastFrame = now; - - if (timePosition * _PlayDirection >= _PlayToPosition * _PlayDirection) - timePosition = _PlayToPosition; - - GoToPosition(timePosition); - - if (!_NoStop && timePosition * _PlayDirection >= _PlayToPosition * _PlayDirection) { - Stop(_Callback); - } - else { - $JssorUtils$.$Delay(PlayFrame, options.$Interval); - } - } - } - - function PlayToPosition(toPosition, callback, noStop) { - if (!_AutoPlay) { - _AutoPlay = true; - _NoStop = noStop - _Callback = callback; - toPosition = Math.max(toPosition, _Position_OuterBegin); - toPosition = Math.min(toPosition, _Position_OuterEnd); - _PlayToPosition = toPosition; - _PlayDirection = _PlayToPosition < _Position_Current ? -1 : 1; - _This.$OnStart(); - _TimeStampLastFrame = $JssorUtils$.$GetNow(); - PlayFrame(); - } - } - - function Stop(callback) { - if (_AutoPlay) { - _NoStop = _AutoPlay = _Callback = false; - _This.$OnStop(); - - if (callback) - callback(); - } - } - - _This.$Play = function (positionLength, callback, noStop) { - PlayToPosition(positionLength ? _Position_Current + positionLength : _Position_OuterEnd, callback, noStop); - }; - - _This.$PlayToPosition = function (position, callback, noStop) { - PlayToPosition(position, callback, noStop); - }; - - _This.$PlayToBegin = function (callback, noStop) { - PlayToPosition(_Position_OuterBegin, callback, noStop); - }; - - _This.$PlayToEnd = function (callback, noStop) { - PlayToPosition(_Position_OuterEnd, callback, noStop); - }; - - _This.$Stop = function () { - Stop(); - }; - - _This.$Continue = function (toPosition) { - PlayToPosition(toPosition); - }; - - _This.$GetPosition = function () { - return _Position_Current; - }; - - _This.$GetPlayToPosition = function () { - return _PlayToPosition; - }; - - _This.$GetPosition_Display = function () { - return _Position_Display; - }; - - _This.$GoToPosition = GoToPosition; - - _This.$GoToBegin = function () { - GoToPosition(_Position_OuterBegin, true); - }; - - _This.$GoToEnd = function () { - GoToPosition(_Position_OuterEnd, true); - }; - - _This.$Move = function (offset) { - GoToPosition(_Position_Current + offset); - }; - - _This.$CombineMode = function () { - return _CombineMode; - }; - - _This.$GetDuration = function () { - return duration; - }; - - _This.$IsPlaying = function () { - return _AutoPlay; - }; - - _This.$IsOnTheWay = function () { - return _Position_Current > _Position_InnerBegin && _Position_Current <= _Position_InnerEnd; - }; - - _This.$SetLoopLength = function (length) { - _LoopLength = length; - }; - - _This.$Locate = Locate; - - _This.$Shift = Shift; - - _This.$Join = Join; - - _This.$Combine = function (animator) { - /// - /// Combine another animator parallel to this animator - /// - /// - /// An instance of $JssorAnimator$ - /// - Join(animator, 0); - }; - - _This.$Chain = function (animator) { - /// - /// Chain another animator at the _Position_InnerEnd of this animator - /// - /// - /// An instance of $JssorAnimator$ - /// - Join(animator, 1); - }; - - _This.$GetPosition_InnerBegin = function () { - /// - /// Internal member function, do not use it. - /// - /// - /// - return _Position_InnerBegin; - }; - - _This.$GetPosition_InnerEnd = function () { - /// - /// Internal member function, do not use it. - /// - /// - /// - return _Position_InnerEnd; - }; - - _This.$GetPosition_OuterBegin = function () { - /// - /// Internal member function, do not use it. - /// - /// - /// - return _Position_OuterBegin; - }; - - _This.$GetPosition_OuterEnd = function () { - /// - /// Internal member function, do not use it. - /// - /// - /// - return _Position_OuterEnd; - }; - - _This.$OnPositionChange = $JssorUtils$.$EmptyFunction; - _This.$OnStart = $JssorUtils$.$EmptyFunction; - _This.$OnStop = $JssorUtils$.$EmptyFunction; - _This.$OnInnerOffsetChange = $JssorUtils$.$EmptyFunction; - _This.$Version = $JssorUtils$.$GetNow(); - - //Constructor` 1 - { - options = $JssorUtils$.$Extend({ - $Interval: 16 - }, options); - - //Sodo statement, for development time intellisence only - $JssorDebug$.$Execute(function () { - options = $JssorUtils$.$Extend({ - $LoopLength: undefined, - $Setter: undefined, - $Easing: undefined - }, options); - }); - - _LoopLength = options.$LoopLength; - - _StyleSetter = $JssorUtils$.$Extend({}, $JssorUtils$.$GetStyleSetter(), options.$Setter); - - _Position_OuterBegin = _Position_InnerBegin = delay; - _Position_OuterEnd = _Position_InnerEnd = delay + duration; - - var _SubRounds = options.$Round || {}; - var _SubDurings = options.$During || {}; - _SubEasings = $JssorUtils$.$Extend({ $Default: $JssorUtils$.$IsFunction(options.$Easing) && options.$Easing || $JssorEasing$.$EaseSwing }, options.$Easing); - } -}; - -function $JssorPlayerClass$() { - - var _SelfPlayer = this; - var _PlayerControllers = []; - - function PlayerController(playerElement) { - var _SelfPlayerController = this; - var _PlayerInstance; - var _PlayerInstantces = []; - - function OnPlayerInstanceDataAvailable(event) { - var srcElement = $JssorUtils$.$GetEventSrcElement(event); - _PlayerInstance = srcElement.pInstance; - - $JssorUtils$.$RemoveEvent(srcElement, "dataavailable", OnPlayerInstanceDataAvailable); - $JssorUtils$.$Each(_PlayerInstantces, function (playerInstance) { - if (playerInstance != _PlayerInstance) { - playerInstance.$Remove(); - } - }); - - playerElement.pTagName = _PlayerInstance.tagName; - _PlayerInstantces = null; - } - - function HandlePlayerInstance(playerInstanceElement) { - var playerHandler; - - if (!playerInstanceElement.pInstance) { - var playerHandlerAttribute = $JssorUtils$.$GetAttributeEx(playerInstanceElement, "pHandler"); - - if ($JssorPlayer$[playerHandlerAttribute]) { - $JssorUtils$.$AddEvent(playerInstanceElement, "dataavailable", OnPlayerInstanceDataAvailable); - playerHandler = new $JssorPlayer$[playerHandlerAttribute](playerElement, playerInstanceElement); - _PlayerInstantces.push(playerHandler); - - $JssorDebug$.$Execute(function () { - if ($JssorUtils$.$Type(playerHandler.$Remove) != "function") { - $JssorDebug$.$Fail("'pRemove' interface not implemented for player handler '" + playerHandlerAttribute + "'."); - } - }); - } - } - - return playerHandler; - } - - _SelfPlayerController.$InitPlayerController = function () { - if (!playerElement.pInstance && !HandlePlayerInstance(playerElement)) { - - var playerInstanceElements = $JssorUtils$.$GetChildren(playerElement); - - $JssorUtils$.$Each(playerInstanceElements, function (playerInstanceElement) { - HandlePlayerInstance(playerInstanceElement); - }); - } - }; - } - - _SelfPlayer.$EVT_SWITCH = 21; - - _SelfPlayer.$FetchPlayers = function (elmt) { - elmt = elmt || document.body; - - var playerElements = $JssorUtils$.$FindChildrenByAttribute(elmt, "player", null, true); - - $JssorUtils$.$Each(playerElements, function (playerElement) { - if (!_PlayerControllers[playerElement.pId]) { - playerElement.pId = _PlayerControllers.length; - _PlayerControllers.push(new PlayerController(playerElement)); - } - var playerController = _PlayerControllers[playerElement.pId]; - playerController.$InitPlayerController(); - }); - }; -} \ No newline at end of file diff --git a/spree_theme/app/assets/javascripts/scotchPanels.js b/spree_theme/app/assets/javascripts/scotchPanels.js new file mode 100644 index 00000000..4dd18fc3 --- /dev/null +++ b/spree_theme/app/assets/javascripts/scotchPanels.js @@ -0,0 +1,656 @@ +/* +* scotchPanels - v1.0.3 - 2014-09-25 +* https://github.com/scotch-io/scotch-panels +* Copyright (c) 2014 Nicholas Cerminara +*/ +// Start with Semicolon to block +;(function($) { + + // Enable Strict Mode + 'use strict'; + + // Create Panels Array + var panels = []; + + // Has done CSS3 browser support check? + var browserSupportTest = false; + var has3d = false; + var hasTransitions = false; + + // Plugin Default Settings + var defaults = { + + // General Config + containerSelector: 'body', + type: 'html', // html, iframe, video, image + + // Styles + direction: 'top', // top, left, right, bottom + duration: 300, // ms + transition: 'ease', // linear, ease, ease-in, ease-out, ease-in-out, cubic-bezier(P1x,P1y,P2x,P2y) + + // Browser Support + easingPluginTransition: 'easeInCirc', + useCSS: true, // Consider not using if have Fixed Elements + useEasingPlugin: false, // http://gsgd.co.uk/sandbox/jquery/easing/ only for browser support + + // Image Options + imageURL: false, + + // Iframe Options + iframeURL: false, + + // Video Options + autoPlayVideo: true, + youtubeID: false, + youTubeTheme: 'light', + + // TranslateX Options + distanceX: '70%', + + // TranslateY Options + forceMinHeight: false, + minHeight: '200px', + + // Triggers + closeAfter: 0, // ms + startOpened: false, + startOpenedDelay: 0, // ms + + // Event Helpers + clickSelector: false, + enableEscapeKey: true, + hoverSelector: false, + touchSelector: false, + + // Callbacks + beforePanelOpen: function() {}, + afterPanelOpen: function() {}, + beforePanelClose: function() {}, + afterPanelClose: function() {} + }; + + + $.fn.scotchPanel = function(options) { + + // Check to see if Default Options are Set + if (typeof options === 'undefined') { + options = {}; + } + + // Check to see if an element is even selected + if (this.length === 0) return this; + + // Support selecting Panels + if (this.length > 1) { + + // Loop through all selected scotch panels + this.each(function() { + // Add panel to array + panels.push($(this).scotchPanel(options)); + }); + + // Public Functions Functionality for all at once + panels.open = function() { + for (var i = 0; i < panels.length; i++) { + panels[i].open(); + } + }; + panels.close = function() { + for (var i = 0; i < panels.length; i++) { + panels[i].close(); + } + }; + panels.toggle = function() { + for (var i = 0; i < panels.length; i++) { + panels[i].toggle(); + } + }; + + // Return the Scotch Panels + return panels; + } + + // Create Current Scotch Panel Object + var panel = {}; + panel = this; + + + /*========================================= + = PRIVATE FUNCTIONS = + =========================================*/ + // Prep everything + var init = function() { + + // Do CSS3 Check! + if (!browserSupportTest) { + browserSupportTest = true; + has3d = browserSupport.transition(); + hasTransitions = browserSupport.translate3d(); + } + + // Check for HTML5 data attributes instead + for (var key in defaults) { + if (defaults.hasOwnProperty(key)) { + if (panel.attr('data-'+key.toLowerCase())) { + options[key] = panel.data(key.toLowerCase()); + } + } + } + + // Merge Custom Plugin Settings with Default + panel.settings = $.extend({}, defaults, options); + + // Start DOM and CSS Modifications + setup(); + }; + + + // DOM / CSS Changes / Make Things Happen + var setup = function() { + + // Wrap the panel! + var container = $(panel.settings.containerSelector); + if (!container.hasClass('scotchified')) { + container.wrapInner('
      ').addClass('scotchified'); + } + + // Scotch Panel Wrapper CSS + $('.scotch-panel-wrapper').css({ + 'position': 'relative', + 'overflow': 'hidden', + 'width': '100%' + }); + // Scotch Panel Canvas CSS + $('.scotch-panel-canvas').css({ + 'position': 'relative', + 'height': '100%', + 'width': '100%' + }); + // Do 3D Stuff separate + if (panel.settings.useCSS) { + $('.scotch-panel-canvas').css({ + '-moz-transform': 'translate3d(0, 0, 0)', + '-ms-transform': 'translate3d(0, 0, 0)', + '-o-transform': 'translate3d(0, 0, 0)', + '-webkit-transform': 'translate3d(0, 0, 0)', + 'transform': 'translate3d(0, 0, 0)', + '-moz-backface-visibility': 'hidden', + '-ms-backface-visibility': 'hidden', + '-o-backface-visibility': 'hidden', + '-webkit-backface-visibility': 'hidden', + 'backface-visibility': 'hidden' + }); + } + + // Figure out which off canvas style is used (left, top, right) + if (panel.settings.direction == 'top') { + panel.height = panel.height(); + panel.addClass('scotch-panel-top'); + + panel.css({ + 'bottom': '100%', + 'left': '0', + 'width': '100%', + 'position': 'absolute', + 'z-index': '888888', + 'overflow': 'hidden' + }); + } + if (panel.settings.direction == 'bottom') { + panel.height = panel.height(); + panel.addClass('scotch-panel-bottom'); + + panel.css({ + 'top': '100%', + 'left': '0', + 'width': '100%', + 'position': 'absolute', + 'z-index': '888888', + 'overflow': 'hidden' + }); + } + if (panel.settings.direction == 'left') { + panel.addClass('scotch-panel-left'); + + panel.css({ + 'top': '0', + 'left': '-' + panel.settings.distanceX, + 'width': panel.settings.distanceX, + 'height': '100%', + 'position': 'absolute', + 'z-index': '888888', + 'overflow': 'hidden' + }); + } + if (panel.settings.direction == 'right') { + panel.addClass('scotch-panel-right'); + + panel.css({ + 'top': '0', + 'right': '-' + panel.settings.distanceX, + 'width': panel.settings.distanceX, + 'height': '100%', + 'position': 'absolute', + 'z-index': '888888', + 'overflow': 'hidden' + }); + } + panel.css({ + '-moz-backface-visibility': 'hidden', + '-ms-backface-visibility': 'hidden', + '-o-backface-visibility': 'hidden', + '-webkit-backface-visibility': 'hidden', + 'backface-visibility': 'hidden' + }); + + // Photo Logic + if (panel.settings.type == 'image' && panel.settings.imageURL) { + panel.css({ + '-o-background-size': 'cover', + '-ms-background-size': 'cover', + '-moz-background-size': 'cover', + '-webkit-background-size': 'cover', + 'background-size': 'cover', + 'background-position': '50% 0', + 'background-repeat': 'no-repeat', + 'background-image': 'url('+panel.settings.imageURL+')' + }); + + // Update Panel Height if top or bottom + if (panel.settings.direction == 'top' || panel.settings.direction == 'bottom') { + panel.css('min-height', panel.settings.minHeight); + panel.height = $(panel).height(); + } + } + + // Iframe Logic + if (panel.settings.type == 'iframe' && panel.settings.iframeURL) { + panel.iframeIsLoaded = false; + panel.append(''); + + // Update Panel Height if top or bottom + if (panel.settings.direction == 'top' || panel.settings.direction == 'bottom') { + panel.height = $(panel).height(); + } + } + + // YouTube Logic + if (panel.settings.type == 'video' && panel.settings.youtubeID) { + panel.append('
      '); + + // Update Panel Height if top or bottom + if (panel.settings.direction == 'top' || panel.settings.direction == 'bottom') { + panel.height = $(panel).height(); + } + } + + // Apply CSS3 Transitions if modern browser + if (has3d && hasTransitions) { + applyTransition(panel.settings.transition, panel.settings.duration); + } + + // Open on Start? + if (panel.settings.startOpened) { + setTimeout(function(){ + panel.open(); + }, panel.settings.startOpenedDelay); + } + + // Close after X milliseconds? + if (panel.settings.closeAfter != 0) { + setTimeout(function(){ + panel.close(); + }, panel.settings.closeAfter); + } + }; + + + // Browser Support Object + var browserSupport = { + transition: function() { + // IE 7 + 8 Sucks + if (!window.getComputedStyle) { + return false; + } + + var b = document.body || document.documentElement, + s = b.style, + p = 'transition'; + + if (typeof s[p] == 'string') { return true; } + + // Tests for vendor specific prop + var v = ['Moz', 'webkit', 'Webkit', 'Khtml', 'O', 'ms']; + p = p.charAt(0).toUpperCase() + p.substr(1); + + for (var i=0; i 3.0 diff --git a/spree_theme/app/assets/javascripts/spree/frontend/spree_multi_site.js b/spree_theme/app/assets/javascripts/spree/frontend/spree_multi_site.js new file mode 100644 index 00000000..fa0a16ee --- /dev/null +++ b/spree_theme/app/assets/javascripts/spree/frontend/spree_multi_site.js @@ -0,0 +1 @@ +//= require spree/frontend diff --git a/spree_theme/app/assets/javascripts/spree/frontend/spree_related_products.js b/spree_theme/app/assets/javascripts/spree/frontend/spree_related_products.js new file mode 100644 index 00000000..fa0a16ee --- /dev/null +++ b/spree_theme/app/assets/javascripts/spree/frontend/spree_related_products.js @@ -0,0 +1 @@ +//= require spree/frontend diff --git a/spree_theme/app/assets/javascripts/spree/frontend/spree_theme.js b/spree_theme/app/assets/javascripts/spree/frontend/spree_theme.js new file mode 100644 index 00000000..7537f983 --- /dev/null +++ b/spree_theme/app/assets/javascripts/spree/frontend/spree_theme.js @@ -0,0 +1 @@ +//it is placeholder for test spree ~> 3.0 diff --git a/spree_theme/app/assets/javascripts/store/ckeditor_effect.js b/spree_theme/app/assets/javascripts/store/ckeditor_effect.js new file mode 100644 index 00000000..08e998b6 --- /dev/null +++ b/spree_theme/app/assets/javascripts/store/ckeditor_effect.js @@ -0,0 +1,94 @@ +// handle effect for ckeditor content + +$(document).on('turbolinks:load',function() { + //
      + // + //
      + //
      content 1
      + //
      content 2
      + //
      + //
      + + $(".ck_effect_page_nav a.page").click(function(event){ + var $this = $(this); + var $page_content = $this.parent().siblings('.ck_effect_page_content'); + var i = $this.prevAll('.page').size(); + $page_content.children().removeClass('current').hide().eq(i).addClass('current').show(); + event.preventDefault(); + }) + $(".ck_effect_page_nav a.next").click(function(event){ + var $this = $(this); + var $page_content = $this.parent().siblings('.ck_effect_page_content').children('.current'); + if( $page_content.next().is('*')){ + $page_content.removeClass('current').hide().next().addClass('current').show(); + } + event.preventDefault(); + }) + $(".ck_effect_page_nav a.prev").click(function(event){ + var $this = $(this); + var $page_content = $this.parent().siblings('.ck_effect_page_content').children('.current'); + if( $page_content.prev().is('*')){ + $page_content.removeClass('current').hide().prev().addClass('current').show(); + } + event.preventDefault(); + }) + + //http://stackoverflow.com/questions/5811122/how-to-trigger-a-click-on-a-link-using-jquery + if( $('.ck_effect_screen_logo').is('*')){ + window.setTimeout("$('.ck_effect_screen_logo').children().click()", 3000) + } + + //
      + // link + //
      + $(".ck_effect_hover a").hover(function(event){ + var $this = $(this); + var hover_style = $this.data("hover-style") + // background-color:transparent;color:#e20012;background-image:url('http://aliimg.getstore.cn/358/ckeditor_picture/598_arraw.jpg'); + if( hover_style) + { + var attrs = _.chain(hover_style.split(";")).map( function( attr ){ + line = attr.split(':'); + var cssDirective = line[0].trim(); + var cssValue = line.slice(1).join(':').trim(); + + if (cssDirective.length < 1 || cssValue.length < 1) { + return [] //there is no css directive or value that is of length 0 + }else{ + return [cssDirective, cssValue] + } + }).filter( function(attr){ return attr.length==2;}).value(); + //['color','red'] => { color: 'red' } + attrs = _.object(attrs); + $this.css( attrs); + // it is difficult to parse background-image:url('http://aliimg.getstore.cn/358/ckeditor_picture/598_arraw.jpg'), so just set style + // do not use this way, this would discard original style which not in data-style + //$this.attr( 'style', hover_style ) + } + },function(event){ + var $this = $(this); + var style = $this.data("style") + if( style ) { + var attrs = _.chain(style.split(";")).map( function( attr){ return attr.split(':') + line = attr.split(':'); + var cssDirective = line[0].trim(); + var cssValue = line.slice(1).join(':').trim(); + + if (cssDirective.length < 1 || cssValue.length < 1) { + return [] //there is no css directive or value that is of length 0 + }else{ + return [cssDirective, cssValue] + } + }).filter( function(attr){ return attr.length==2;}).value(); + + attrs = _.object(attrs); + $this.css( attrs); + //$this.attr( 'style', style ) + + }else{ + $this.css({'background-color': '', 'color':''}); + } + }) + // style in json, handle background-image:url('http://aliimg.getstore.cn/358/ckeditor_picture/598_arraw.jpg'); + +}) diff --git a/spree_theme/app/assets/javascripts/store/section_editor.js b/spree_theme/app/assets/javascripts/store/section_editor.js new file mode 100644 index 00000000..36e1c28f --- /dev/null +++ b/spree_theme/app/assets/javascripts/store/section_editor.js @@ -0,0 +1,106 @@ +//= require jquery.ajax +//= require interface.js + +$(document).on('turbolinks:load',function() { + + if (typeof(g_client_info) != 'undefined' && g_client_info.is_preview==true) + { + if (typeof(g_selector_gadget) == 'undefined' || g_selector_gadget == null) { + g_selector_gadget = new SelectorGadget(); + g_selector_gadget.setMode('interactive'); + } + $( "#editor_panel a.close" ).click( + function() { $(this).parent().hide(); $( "#editor_panel_icon" ).show();} + ); + $( "#editor_panel_icon" ).click( + function() { $( "#editor_panel" ).show(); } + ); + + //$('body').layout({ applyDefaultStyles: true, + // stateManagement__enabled: true //enable stateManagement - automatic cookie load & save enabled by default + //}); + + //$("#section_select_dialog").dialog({ autoOpen: false, + // buttons: { "Cancel": function() { $(this).dialog("close"); }, + // "OK": function() { submit_layout_tree_form( 'add_child',null, $(this).find('[name="selected_section_id"]').val()); + // $(this).dialog("close"); } + // }, + // width:500,height:245 }); + + $("#section_select_dialog .titles li").click(function(){ + $(this).parent().children().removeClass('selected'); + $(this).addClass('selected'); + $(this).parent().next().children().removeClass('selected'); + $(this).parent().next().children().eq($(this).index()).addClass('selected'); + $(this).parent().siblings('input').val($(this).attr('data-section-id')); + }); + $("#section_select_dialog .dialog_close_button").click(function(){ + $.simplemodal.close(); + }); + $("#section_select_dialog .dialog_ok_button").click(function(){ + $('#selected_section_id').val($('#section_select_dialog [name="selected_section_id"]').val()); + + submit_layout_tree_form( this ); + $.simplemodal.close(); + }); + // add, remove, move section + + // event is erase when layout tree updated. + $("#layout_tree_form .click_editable").editable(function(value, settings) { + var jquery_element = $(this); + var url = Spree.routes.admin_page_layouts( jquery_element.data('tid') )+'/'+jquery_element.data('lid'); + var submitdata = {}; + submitdata[settings.name] = value; + //submitdata[settings.id] = self.id; + $.ajax({ dataType: 'json', url: url, type: 'put', data : submitdata, + success: function(data){ + // data is null, "nocontent" returned + // jquery_element.html(data.page_layout.title); + } + }); + return(value); + }, + { //since dblclick would trigger click, for a link, we should not click,dblclick together + event : "click_editable", + name : "page_layout[title]", + cssclass : "editable", + style : "inherit" + }); + + $(document).on( 'click',"#layout_tree_form .click_editable",function(){ + self = $(this); + + $('#selected_page_layout_id').val(self.data('lid')); + $('#layout_editor_form').trigger('submit'); + + }); + + $(document).on('mouseover',"#editors .tabs li", function(){ + $(this).parent().find('a').removeClass('selected'); + $(this).find('a').addClass('selected'); + $(this).parent().next().children().hide(); + $(this).parent().next().children().eq($(this).index()).show(); + $("#selected_editor_id").val($(this).attr('data-id')); + }); + + } +}); +function submit_layout_tree_form ( currentTarget ) { + var target = $(currentTarget); + var page_layout_id = target.data('id'); + + var op = target.data('op'); + if(op=='list_section'){ + $('#layout_id').val(page_layout_id); + $('#section_select_dialog').simplemodal({ minHeight:300, minWidth: 600, + overlayCss:{ 'background-color': 'gray' }, + containerCss: {'background-color': 'white', 'overflow' :'auto' } + }); + return; + } + + $('#op').val(op); + // layout_id, selected_section_id could be null. + if (page_layout_id) $('#layout_id').val(page_layout_id); + $('#layout_tree_form').trigger('submit'); +} diff --git a/spree_theme/app/assets/javascripts/store/section_effect.js b/spree_theme/app/assets/javascripts/store/section_effect.js new file mode 100644 index 00000000..bb4cd74e --- /dev/null +++ b/spree_theme/app/assets/javascripts/store/section_effect.js @@ -0,0 +1,375 @@ +//= require image_zoom +//= require jquery.menuhover +//= require jquery.ias.dev +//= require jquery.sidr +//= require store/section_effect_scroll +//= require store/ckeditor_effect + +function AddFavorite() { + var url = window.location; + var title = document.title; + var ua = navigator.userAgent.toLowerCase(); + if (ua.indexOf("360se") > -1) { + alert(Spree.translations.unsupported_browser_add_favorite); + } + else if (ua.indexOf("msie 8") > -1) { + window.external.AddToFavoritesBar(url, title); //IE8 + } + else if (document.all) { + try{ + window.external.addFavorite(url, title); + }catch(e){ + alert(Spree.translations.unsupported_browser_add_favorite); + } + } + //else if(window.sidebar) { + // // add rel=sidebar + // // firefox handle it. + //} + else {// firefox,chrome,safair + alert(Spree.translations.unsupported_browser_add_favorite); + } +} + +function SetHome(){ + try{ + this.style.behavior='url(#default#homepage)'; + this.setHomePage(window.location); + }catch(e){ + alert(Spree.translations.unsupported_browser_set_home); + } +} + + + +$(document).on('turbolinks:load',function() { + //return to top + $('.return_top').click(function(){ + //var $element =$(this); + //$("#return_top").hide(); + //$(window).scroll(function(){ + // if ($(window).scrollTop()>100){ + // $("#return_top").fadeIn(500); + // } + // else{ + // $("#return_top").fadeOut(1500); + // } + //}); + $("body,html").animate({scrollTop:0},1000); + return false; + }); + + // change bg,border when hovering + $('.hoverable').hover(function(){ + $('.inner',this).addClass( 'hover' ); + }, function(){ + $('.inner',this).removeClass( 'hover' ); + }); + + // like taobao, show big image when hovering product image. + $('.zoomable').each(function(i, element){ + var $element =$(element); + var $main_image_wrapper = $element.find('.main_image_wrapper'); + $element.find('.thumbnails a').click(function(){ + var $this = $(this); + $main_image_wrapper.find('img').data('big-image', $this.find('img').data('big-image')); + }); + $element.imageZoom({ + zoomType: 'standard', + lens:true, + preloadImages: false, + alwaysOn:false, + thumbConfig: { + containerSelector: null//'.thumbnails' + }, + zoomViewerConfig:{ + width: $main_image_wrapper.width()-2, // 2 is border l+r + height: $main_image_wrapper.height()-2 + }, + zoomPadConfig: { + containerSelector: '.main_image_wrapper' + } + }); + }); + + + $('.lightboxable').each( function(i, element){ + + var $element =$(element); + var $main_image = $element.find('.main_image_wrapper img'); + var jsonData =[]; + var thumbnails = $element.find('.thumbnails img'); + if( thumbnails.is('*') ){ + thumbnails.each(function(j,img){ + jsonData.push({ url:$(img).data('big-image'), title: img.alt }); + }); + }else{ + jsonData.push({ url:$main_image.data('big-image'), title: $main_image.attr('alt') }); + } + + $main_image.lightbox({ + fitToScreen: true, + jsonData: jsonData, + loopImages: true, + imageClickClose: false, + disableNavbarLinks: true + }); + + }); + + // scroll to target + $('.effect_scroll').click(function() { + var $body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html') : $('body')) : $('html,body'); + var $self = $(this); + var $target = $($self.attr('href')); + if($target.is('*')) { + $body.animate({ + scrollTop : ($target.offset().top - 120) + }, 500); + return false; + } + }); + + + if($("#map").is('*')) { + // initialize baid map. + initMap(); + }; + + // dom + // div.hover_effect_xxx + // .child_1 + // .child_2 + // div.hover_effect_xxx + // .child_1 + // .child_2 + + //menu effect slide + $(".hover_effect_slide").each(function(index, element) { + //nav sliding + var height = '' + $('.child_1', element).height() + 'px'; + var offset = '-' + height; + //$('.name',element).css({ height: height}); + $('.child_2', element).css({ + bottom : offset, + height : height + }); + //nav sliding + $(element).hover(function() { + $(".child_1", this).stop().animate({ + top : offset, + left : '0px' + }, { + queue : false, + duration : 300 + }); + $(".child_2", this).stop().animate({ + bottom : '0px', + left : '0px' + }, { + queue : false, + duration : 300 + }); + }, function() { + $(".child_1", this).stop().animate({ + top : '0px', + left : '0px' + }, { + queue : false, + duration : 300 + }); + $(".child_2", this).stop().animate({ + bottom : offset, + left : '0px' + }, { + queue : false, + duration : 300 + }); + }); + }); + // + $('.hover_effect_show').hover(function() { + $('.child_2', this).stop().slideDown(); + }, function() { + $('.child_2', this).stop().slideUp(); + }); + //slides the element with class "menu_body" when mouse is over the paragraph + $(".hover_effect_expansion .child_1").mouseover(function() { + $(this).parents('.hover_effect_expansion').addClass('hovered').siblings().removeClass('hovered'); + $(this).next(".child_2").slideDown(500); + $(this).parents('.hover_effect_expansion').siblings().find('.child_2').slideUp("slow"); + }); + + $(".hover_effect_overlay").hover(function() { + var offset = '-' + $('.child_1', this).width() + 'px'; + $(".child_2", this).stop().animate({ + top : '0', + left : offset + }, { + queue : false, + duration : 400 + }); + }, function() { + $(".child_2", this).stop().animate({ + top : '0px', + left : '0px' + }, { + queue : false, + duration : 400 + }); + }); + $(".hover_effect_multi_level_menu").each(function(index, element) { + // navigation horizental two level menu + // menu item1 | menu item2 hovering | menu item3 + // | menu item21 | + // | menu item22 | + $("ul ul", element).css({ + display: "none" + }); // Opera Fix + $("ul li", element).hover(function() { + $(this).find('ul:first').css({ + visibility: "visible", + display: "none" + }).slideDown("normal"); + }, function() { + $(this).find('ul:first').css({ + visibility: "hidden" + }); + }); + + }); + // usage: compute child_2 display position of window for effect popup + // html
      + //
      + //
      + // params: direction- there are five option values t,r,b,l,rl, + // it composite of three character. + // xya: x axis, y axis, a alignment. ex. lbl, position left bottom, align left + function compute_popup_position( $container, direction ){ + var $self = $container; + var child1 = $(".child_1", $self); + var child2 = $(".child_2", $self); + var offset = child1.offset(); + // get silbings, get parent.width, get current + // get currentTarge.pageX, + var position = [0,0]; + // top, left + var block = $(window); + var scroll_top = block.scrollTop(); + var scroll_left = block.scrollLeft(); + if ( direction == 'rl' ){ + var p = $self.parent().width() / 2 - $self.position().left - $self.width(); + if(p >= 0) {// pop up on right side of child2 + position[0] = offset.top - (child2.height() - child1.height() ) / 2 - scroll_top; + position[1] = offset.left + child1.width(); + } else {// pop up on left side of $self + position[0] = offset.top - (child2.height() - child1.height() ) / 2 - scroll_top; + position[1] = offset.left - child2.width(); + } + }else if ( direction == 'b' ){ + position[0] = offset.top + child1.height() - scroll_top;; + position[1] = offset.left - (child2.width() - child1.width() ) / 2 - scroll_left; + }else if ( direction == 't' ){ + position[0] = offset.top - child2.height() - scroll_top;; + position[1] = offset.left - (child2.width() - child1.width() ) / 2 - scroll_left; + }else if ( direction == 'l' ){ + position[0] = offset.top - (child2.height() - child1.height() ) / 2 - scroll_top; + position[1] = offset.left - child2.width(); + }else if ( direction == 'lbl' ){ + position[0] = offset.top - (child2.height() - child1.height() ) - scroll_top; + position[1] = offset.left - child2.width(); + } + return position; + } + + $(".hover_effect_popup").hover(function(e) { + var $this = $(this); + var direction = 'rl'; + if ($this.hasClass('direction-t')){ + direction = 't'; + } + var position = compute_popup_position( $this, direction ); + //console.log( "pos y=%d, x=%d", position[0], position[1] ); + $(".child_2", this).simplemodal({ + appendTo: '#page-wrapper', + closeHTML:'', // remove a.close, or get incorrect container demension + modal : false, + focus : false, + position : position, + fixed : false + }); + }, function() { + $.simplemodal.close(); + }); + + // popup menu, enable mouse hover on popup div, user could click menu on it. + $(".hover_effect_popup_menu_l,.hover_effect_popup_menu").each(function(i, element){ + var $self = $(element); + var direction = 'b';// popup at bottom, center as well. + if ($self.hasClass('hover_effect_popup_menu_l')){ + direction = 'l'; + }else if ($self.hasClass('hover_effect_popup_menu_lbl')){ + direction = 'lbl'; + } + function activate_element( ){ + var $hover_effect_container = this.$hover_effect_container; + var position = compute_popup_position( $hover_effect_container, direction ); + //console.log( "pos y=%d, x=%d", position[0], position[1] ); + $(".child_2", $hover_effect_container).simplemodal({ + appendTo: '#page-wrapper', + closeHTML:'', // remove a.close, or get incorrect container demension + modal : false, + focus : false, + position : position, + fixed : false + }); + }; + function deactivate_element( ){ + $.simplemodal.close(); + }; + var child1 = $(".child_1", this); + var child2 = $(".child_2", this); + // eliminate empty popup simplemodal + if(child2 && child2.children().html().trim().length>0){ + $(element).menuhover({ + activate: activate_element, + deactivate: deactivate_element, + submenuDirection: direction, + $hover: child2 + }); + } + }); + $(".click_effect_sider").each(function(i, element){ + var child2 = $(".child_2", element); + //var class_names = $(".child_2", element).attr('class').replace(/(^\s+)|(\s+$)/g,"").replace(/\s+/g,'.'); + $(".child_1", element).sidr({ + name: 'sidr'+i, + body: '#page-inner', // append into page innner, apply page css. + displace: false, + renaming: false, + source: function(){ + return ( child2.is("*") ? child2[0].outerHTML : "no content"); + } + }); + + }); + + $(".sidr").on( 'click touchstart',".sidr_close",function(e){ + //
      + //
      + e.stopPropagation(); + var sidr_name = $(this).parents('.sidr').attr('id'); + $.sidr( 'close', sidr_name); + + }); + $("#page").on( 'click touchstart',".sidr_overlay",function(e){ + //
      + //
      + //sidr0-overlay + e.preventDefault(); + e.stopPropagation(); + var sidr_name = $(this).attr('id').split('-').shift(); + $.sidr( 'close',sidr_name); + }); + +}); diff --git a/spree_theme/app/assets/javascripts/store/section_effect.mobile.js b/spree_theme/app/assets/javascripts/store/section_effect.mobile.js new file mode 100644 index 00000000..84ab9388 --- /dev/null +++ b/spree_theme/app/assets/javascripts/store/section_effect.mobile.js @@ -0,0 +1,56 @@ + +$(document).on('turbolinks:load',function() { + //"content_layout s_551_2 c_549 effect_infinitescroll u_container" + var section_css_class_regex = /\bs\_([0-9]+)\_([0-9]+)\b/; + + //$("#page").on( 'tap', '.sidr_overlay', function(e) { + // e.stopPropagation(); + // e.preventDefault(); /* should not trigger link under overlay*/ + // //sidr0-overlay + // var sidr_name = $(this).attr('id').split('-').shift(); + // $.sidr( 'close', sidr_name ); + //}); + // prevent scrolling happen + //$('#page').on('drag', '.sidr_overlay', function(e) { + // // prevent default horizontal scrolling + // e.preventDefault(); + //}); + + + $('.infinitescroll').each(function(i, element){ + var $element = $(element); + var css_class = $element.attr('class'); + var matches = css_class.match( section_css_class_regex ); + var section_css_class = matches[0] + var section_id = matches[1]; +//console.debug( section_css_class, '.'+section_css_class+" .pagination .next a") + if( $('.pagination', this).is('*') ){ + var ias = jQuery.ias({ + container: '.'+section_css_class+"> .inner", + item: ' .c_'+section_id, + pagination: '.'+section_css_class+" .pagination", + next: '.'+section_css_class+" .pagination .next a" + }); + //disable spinner since it maybe always showing if too much scroll event. + // shows a spinner (a.k.a. loader) + //ias.extension(new IASSpinnerExtension()); + // shows a trigger after page 3 + ias.extension(new IASTriggerExtension({offset: 3})); + ias.extension(new IASNoneLeftExtension()); + //$element.infinitescroll({ + // loading: { + // msgText: "努力加载中...", + // finishedMsg: "恭喜你,已无更多内容." + // }, + // //debug : true, + // contentSelector : '.'+section_css_class+"> .inner", + // navSelector : '.'+section_css_class+" .pagination", + // // selector for the paged navigation (it will be hidden) + // nextSelector : '.'+section_css_class+" .pagination .next a", + // // selector for the NEXT link (to page 2) + // itemSelector : '.'+section_css_class+' .c_'+section_id, + // // selector for all items you'll retrieve + //}); + } + }); +}); diff --git a/spree_theme/app/assets/javascripts/store/section_effect_scroll.js b/spree_theme/app/assets/javascripts/store/section_effect_scroll.js new file mode 100644 index 00000000..a662654c --- /dev/null +++ b/spree_theme/app/assets/javascripts/store/section_effect_scroll.js @@ -0,0 +1,134 @@ +// it is using jssor.20 for effect slider + +$(document).on('turbolinks:load',function() { + $(".swiper-container").each(function(index, element) { + + var mySwiper = new Swiper (element, { + direction: 'horizontal', + loop: true, + autoplay: 3000, + // 如果需要分页器 + pagination: '.swiper-pagination', + + // 如果需要前进后退按钮 + //nextButton: '.swiper-button-next', + //prevButton: '.swiper-button-prev', + + // 如果需要滚动条 + //scrollbar: '.swiper-scrollbar', + }) + }) + function ScaleSlider(event) { + // console.debug( jssor_slider ) + //Object { data=slider, originalEvent=Event load, type="load", timeStamp=0, more...} + var slider = event.data + var refSize = slider.$Elmt.parentNode.clientWidth; + if (refSize) { + refSize = Math.min(refSize, 1920); + slider.$ScaleWidth(refSize); + } + //else { + // window.setTimeout(ScaleSlider, 30); + //} + } + // dom structure + //
      + // + //
      + //
      slide1
      + //
      slide2
      + //
      + //
      + $(".effect_slider").each(function(index, element) { + var $self = $(element); + var $parent = $self.parent(); + //slides + var $slides = $self.children("[data-u='slides']"); + var $arrow_navigator = $self.children(".arrowleft"); + var $bullet_navigator = $self.children("[data-u='navigator']"); + // for feature fullwidth + var parent_width = $parent.width(); + // if parent height is 1, use width. it is for product image slider on mobile + var height = $slides.height(); + var width = $slides.width(); + + $self.css({ height: height, width: width }); + $slides.css({ height: height, width: width }); + + var transitions = { fade: [{$Duration:1200,$Opacity:2}] }; + var options = null, slideshow_options=null; + var auto_play = ( $slides.data('auto-play') == null ? true : $slides.data('auto-play') ); + var display_pieces = $slides.data('display-pieces'); + var transition_name = $slides.data('transition'); + + + if( display_pieces ){ + var slide_width = $self.find("[data-u='slides']>div").width(); + var display_piece = Math.ceil( width / slide_width ); + // get width of a slide + options = { + $AutoPlay: auto_play, //[Optional] Whether to auto play, to enable slideshow, this option must be set to true, default value is false + $AutoPlaySteps: 1, //[Optional] Steps to go for each navigation request (this options applys only when slideshow disabled), the default value is 1 + $AutoPlayInterval: 0, //[Optional] Interval (in milliseconds) to go for next slide since the previous stopped if the slider is auto playing, default value is 3000 + $PauseOnHover: 4, //[Optional] Whether to pause when mouse over if a slider is auto playing, 0 no pause, 1 pause for desktop, 2 pause for touch device, 3 pause for desktop and touch device, 4 freeze for desktop, 8 freeze for touch device, 12 freeze for desktop and touch device, default value is 1 + + $ArrowKeyNavigation: true, //[Optional] Allows keyboard (arrow key) navigation or not, default value is false + $SlideEasing: $JssorEasing$.$EaseLinear, //[Optional] Specifies easing for right to left animation, default value is $JssorEasing$.$EaseOutQuad + $SlideDuration: 1600, //[Optional] Specifies default duration (swipe) for slide in milliseconds, default value is 500 + $MinDragOffsetToSlide: 20, //[Optional] Minimum drag offset to trigger slide , default value is 20 + $SlideWidth: slide_width, //it is requried //[Optional] Width of every slide in pixels, default value is width of 'slides' container + //$SlideHeight: 100, //[Optional] Height of every slide in pixels, default value is height of 'slides' container + $SlideSpacing: 0, //[Optional] Space between each slide in pixels, default value is 0 + $DisplayPieces: display_piece, //it is required //[Optional] Number of pieces to display (the slideshow would be disabled if the value is set to greater than 1), the default value is 1 + $Cols: display_piece, // new for 2.0 + $ParkingPosition: 0, //[Optional] The offset position to park slide (this options applys only when slideshow disabled), default value is 0. + $UISearchMode: 1, //[Optional] The way (0 parellel, 1 recursive, default value is 1) to search UI components (slides container, loading screen, navigator container, arrow navigator container, thumbnail navigator container etc). + $PlayOrientation: 1, //[Optional] Orientation to play slide (for auto play, navigation), 1 horizental, 2 vertical, 5 horizental reverse, 6 vertical reverse, default value is 1 + $DragOrientation: 1 //[Optional] Orientation to drag slide, 0 no drag, 1 horizental, 2 vertical, 3 either, default value is 1 (Note that the $DragOrientation should be the same as $PlayOrientation when $DisplayPieces is greater than 1, or parking position is not 0) + }; + + } else{ + // arrow or bullet navigator + options = { + $AutoPlay : auto_play, + $FillMode : 2 + }; + if( $bullet_navigator.is('*')){ + options['$BulletNavigatorOptions'] = { + $Class : $JssorBulletNavigator$, + $ChanceToShow : 2, + $AutoCenter : 1 + } + } + if( $arrow_navigator.is('*')){ + options['$ArrowNavigatorOptions'] = { + $Class : $JssorArrowNavigator$, + $ChanceToShow : 1, + $AutoCenter : 2 + } + } + if( transitions[transition_name] ){ + options['$SlideshowOptions'] = { + $Class: $JssorSlideshowRunner$, + $Transitions: transitions[transition_name] + } + } + + } + if( $slides.children().length>0){ + var jssor_slider1 = new $JssorSlider$($self.get(0), options); + //responsive code begin + //you can remove responsive code if you don't want the slider scales while window resizes + //Scale slider immediately + if ( parent_width != width){ + ScaleSlider({ data:jssor_slider1} ); + } + + //Scale slider while window load/resize/orientationchange. + $(window).bind("load", jssor_slider1, ScaleSlider); + $(window).bind("resize",jssor_slider1, ScaleSlider); + $(window).bind("orientationchange", jssor_slider1, ScaleSlider); + //responsive code end + } + }); +}); diff --git a/spree_theme/app/assets/javascripts/store/spree_essential_blog.js b/spree_theme/app/assets/javascripts/store/spree_essential_blog.js new file mode 100644 index 00000000..fa0a16ee --- /dev/null +++ b/spree_theme/app/assets/javascripts/store/spree_essential_blog.js @@ -0,0 +1 @@ +//= require spree/frontend diff --git a/spree_theme/app/assets/javascripts/store/spree_theme.client.js b/spree_theme/app/assets/javascripts/store/spree_theme.client.js index c6cfa32f..51a9714b 100644 --- a/spree_theme/app/assets/javascripts/store/spree_theme.client.js +++ b/spree_theme/app/assets/javascripts/store/spree_theme.client.js @@ -1,8 +1,15 @@ -//= require jquery -//= require jquery.validate/localization/messages_zh-CN.js -//= require jquery.simplemodal.js +//= require jquery.validate.min +//= require jquery.validate/localization/messages_zh-CN +//= require jquery.lightbox.custom +//= require store/section_effect +//= require store/section_editor + +$(document).on('turbolinks:load',function() { + // disable progress-bar, coolpadwebkit do not support + //if( !g_client_info.is_mobile ){ + // Turbolinks.enableProgressBar(); + //} -$(document).ready(function() { // template theme selection for designer shop $( "#embeded_content_wrapper" ).hover( function() { $(this).show(); $( "#embeded_content_wrapper_icon" ).hide();}, @@ -11,21 +18,15 @@ $(document).ready(function() { $( "#embeded_content_wrapper_icon" ).hover( function() { $( "#embeded_content_wrapper" ).show(); } ); - -}); -$(document).ready(function() { - // initialize sections - $($("input.fixed_container").val()).floatBar({ - bodyWidth:980, vertical:"top", moveOnOff:false, focusOnOff:false - }); - $("input.hover_effect_container").each(function(index, element){ - var children = $(element).siblings('div'); - if( children.length == 2){ - var child1 = $(children[0]); var child2 = $(children[1]); - child2.on('mouseenter',function(){ child1.show();child2.hide(); }) - child1.on('mouseout', function(){child2.show();child1.hide();}) - } - }) + + + // code for theme, should move to template_themes.js + $(".u_dialog").delegate( "a.cancel,button.cancel", "click",function(){ + $.simplemodal.close(); + }); + // Make flash messages disappear + setTimeout('$(".alert-auto-disappear").slideUp()', 5000); + }); // copy from project https://github.com/citrus/spree_variant_options @@ -35,9 +36,9 @@ $(document).ready(function() { // allow_select_outofstock: By setting allow_select_outofstock to true, when an user selects variant options it will automatically update any form's input variant_id with an data-form-type="variant" attribute. // default_instock: (default: false) If this is option is set to true, it will automatically preselect in-stock variant options. function VariantOptions(params) { - var view_style = params['view_style'] + var view_style = params['view_style']; var options = params['options']; - var container_selector = params['container_selector'] + var container_selector = params['container_selector']; var allow_backorders = !params['track_inventory_levels'] || params['allow_backorders']; var allow_select_outofstock = params['allow_select_outofstock']; var default_instock = params['default_instock']; @@ -45,7 +46,7 @@ function VariantOptions(params) { var option_types, option_values_container, index = 0; // option_types: all option_types included option_values // option_values_container: a container for option_values of an option_type - var available_variant_ids = []; // base on selected option value, there are some available variant ids + var available_variant_ids = []; // base on selected option value, there are some available variant ids var buttons; @@ -63,7 +64,7 @@ function VariantOptions(params) { }); } } - + // set current option type function update(i) { index = isNaN(i) ? index : i; @@ -76,15 +77,15 @@ function VariantOptions(params) { } // enable option values of current option type function enable(btns) { - var bt = btns.not('.unavailable').removeClass('locked') + var bt = btns.not('.unavailable').removeClass('locked'); if (!allow_select_outofstock && !allow_backorders){ - bt = bt.filter('.in-stock') - } + bt = bt.filter('.in-stock'); + } return bt.filter('.auto-click').removeClass('auto-click').click(); } function advance() { - index++ + index++; update(); inventory(buttons.removeClass('locked')); enable(buttons); @@ -108,14 +109,14 @@ function VariantOptions(params) { var a = $(this); //return if has class unavailable locked if( a.hasClass("unavailable") || a.hasClass("locked")){ - return + return; } //if (!allow_select_outofstock && !allow_backorders){ // bt = bt.filter('.in-stock') - //} - + //} + if (a.filter('.selected').length>0){ - // unclick selected, + // unclick selected, clear(option_types.index(a.parents('.variant-option:first'))); }else{ if (!option_values_container.has(a).length) { @@ -126,8 +127,8 @@ function VariantOptions(params) { advance(); if (target_variant=find_variant()) { toggle(target_variant); - } - } + } + } } @@ -158,27 +159,28 @@ function VariantOptions(params) { function hide_all_variant_images() { $('li.vtmb').hide(); } - + function inventory(btns) { // for each option_value there is collection of available variants - // given option_values, Intersection of those collections is final available variants + // given option_values, Intersection of those collections is final available variants var variant_ids, variants, count = 0, selected = {}; - var sels = $.map(option_types.find('a.selected'), function(i) { return i.rel }); - + var sels = $.map(option_types.find('a.selected'), function(i) { return i.rel; }); + variants = get_variant_objects(sels); - available_variant_ids = $.map(variants, function(i) { return i.id }); + available_variant_ids = $.map(variants, function(i) { return i.id; }); btns.removeClass('in-stock out-of-stock unavailable').each(function(i, element) { variants = get_variant_objects([].concat( sels, element.rel)); - variant_ids = $.map(variants, function(i) { return i.id }); + variant_ids = $.map(variants, function(i) { return i.id; }); if (variant_ids.length == 0) { disable($(element).addClass('unavailable locked')); } else if (variant_ids.length == 1) { var _var = variants.pop(); - $(element).addClass((allow_backorders || _var.count) ? available_variant_ids.length == 1 ? 'in-stock auto-click' : 'in-stock' : 'out-of-stock'); + $(element).addClass((allow_backorders ||_var.in_stock) ? available_variant_ids.length == 1 ? 'in-stock auto-click' : 'in-stock' : 'out-of-stock'); + //$(element).addClass((allow_backorders || _var.count) ? available_variant_ids.length == 1 ? 'in-stock auto-click' : 'in-stock' : 'out-of-stock'); } else if (allow_backorders) { $(element).addClass('in-stock'); } else { - $.each(variants, function(variant) { count += variant.count }); + $.each(variants, function(variant) { count += (variant.in_stock ? 1 : 0); }); $(element).addClass(count ? 'in-stock' : 'out-of-stock'); } }); @@ -189,10 +191,10 @@ function VariantOptions(params) { //------------------------------------------------------------------------------------------ function init_for_slide_style() { option_types = $(container_selector+" .variant-option"); - option_types.find('a.option-value').click( handle_click_for_slide_style ); + option_types.find('a.option-value').click( handle_click_for_slide_style ); $(container_selector+' button.next').click( next_step_click ); $(container_selector+' button.back').click( back_step_click ); - + initialize_option_view(); } @@ -202,21 +204,21 @@ function VariantOptions(params) { update_model(); // hide button back if index =0 if (index==0){ - $(container_selector+' button.back').attr('disabled', true); + $(container_selector+' button.back').attr('disabled', true); }else{ - $(container_selector+' button.back').attr('disabled', false); + $(container_selector+' button.back').attr('disabled', false); } if ((index+1) == option_types.length){ - $(container_selector+' button.next').attr('disabled', true); + $(container_selector+' button.next').attr('disabled', true); }else{ - $(container_selector+' button.next').attr('disabled', false); + $(container_selector+' button.next').attr('disabled', false); } - + // select one, or no option image show. if( option_values_container.find("a.option-value.selected").length == 0) { option_values_container.find("a.option-value:first").click(); } - option_values_container.show() + option_values_container.show(); } // update // update data, option_values_container,buttons @@ -224,49 +226,49 @@ function VariantOptions(params) { option_values_container = $(option_types.get(index)); buttons = option_values_container.find('a.option-value'); } - - // update price? + + // update price? function update_view() { - //show + //show var option_type_id_and_option_value_id = buttons.filter('.selected').attr('rel').split('-'); option_values_container.find(' .olge').hide(); option_values_container.find(' .lge-'+option_type_id_and_option_value_id[1]).show(); } - + function next_step_click() { index++; initialize_option_view(); } - + function back_step_click() { index--; initialize_option_view(); } - + function handle_click_for_slide_style(evt) { evt.preventDefault(); var a = $(this); var target_variant= null; //return if has class unavailable locked if( a.hasClass("unavailable") || a.hasClass("locked")|| a.hasClass("selected")){ - return - } + return; + } buttons.not(a).removeClass('selected'); a.addClass('selected'); - + update_view(); - - target_variant=find_variant() + + target_variant=find_variant(); toggle(target_variant); - + } // end slide style //========================================================================================== - + //========================================================================================== // common method for option value //------------------------------------------------------------------------------------------ - + function index_of_array(array, obj) { for(var i = 0; i < array.length; i++){ if(array[i] == obj) { @@ -275,21 +277,21 @@ function VariantOptions(params) { } return -1; } - + function to_f(string) { return parseFloat(string.replace(/[^\d\.]/g, '')); } function find_variant() { - var form_container = $(container_selector).parents('form:first') - var rels = $.map(option_types.find('a.selected'), function(i) { return i.rel }); + var form_container = $(container_selector).parents('form:first'); + var rels = $.map(option_types.find('a.selected'), function(i) { return i.rel; }); var variants = get_variant_objects(rels); if (rels.length == option_types.length) { return variants.pop(); } else { var prices = []; - $.each(variants, function(i, variant) { prices.push(variant.price) }); + $.each(variants, function(i, variant) { prices.push(variant.price); }); prices = $.unique(prices).sort(function(a, b) { return to_f(a) < to_f(b) ? -1 : 1; }); @@ -301,16 +303,16 @@ function VariantOptions(params) { return false; } } - + // get variants by selected option_vlaues function get_variant_objects(rels) { - var variant_objects = [] + var variant_objects = []; var i, ids, obj, variants = {}; if (typeof(rels) == 'string') { rels = [rels]; } var otid, ovid, opt, opv; i = rels.length; try { - for(var i=0; i 0 || allow_backorders) + if (target_variant.in_stock || allow_backorders) form_container.find('button[type=submit]').attr('disabled', false).fadeTo(100, 1); try { show_variant_images(target_variant.id); @@ -347,17 +349,17 @@ function VariantOptions(params) { } else { form_container.find('input.variant_id').val(''); form_container.find('button[type=submit]').attr('disabled', true).fadeTo(0, 0.5); - var price = form_container.find('.price').addClass('unselected') + var price = form_container.find('.price').addClass('unselected'); // Replace product price by "(select)" only when there are at least 1 variant not out-of-stock - var variants = $("div.variant-option.index-0") + var variants = $("div.variant-option.index-0"); if (variants.find("a.option-value.out-of-stock").length != variants.find("a.option-value").length) price.text('(select)'); } } - // end common methods + // end common methods //========================================================================================== - + // it is unused for now. function option_value_click_handler(){ evt.preventDefault(); @@ -365,16 +367,18 @@ function VariantOptions(params) { var a = $(this); //return if has class unavailable locked selected if( a.hasClass("unavailable") || a.hasClass("locked") || a.hasClass("selected")){ - return - } + return; + } // select option type // select current clicked option value - // correct next all selected option value - } - - if( view_style == 'slide' ){ - $(document).ready(init_for_slide_style); - }else{ - $(document).ready(init); + // correct next all selected option value } + // FIXME turbolinks use event turbolinks:load + //if( Object.getOwnPropertyNames(options).length>0){ + // if( view_style == 'slide' ){ + // $(document).ready(init_for_slide_style); + // }else{ + // $(document).ready(init); + // } + //} }; diff --git a/spree_theme/app/assets/javascripts/store/spree_theme.js b/spree_theme/app/assets/javascripts/store/spree_theme.js index b7518535..590f4c1b 100644 --- a/spree_theme/app/assets/javascripts/store/spree_theme.js +++ b/spree_theme/app/assets/javascripts/store/spree_theme.js @@ -1,81 +1,12 @@ +//= require underscore-min //= require jquery //= require jquery_ujs //= require jquery.form -//= require jquery.layout -//= require jquery.ajax -//= require jssor.slider.one +//= require jquery.simplemodal +//= require jssor.slider.20.min +//= require swiper.jquery.min //= require spree/frontend //= require store/spree_theme.client -//= require interface.js +//= require store/spree_theme.routes //= require jquery.jeditable.js -//= require jquery.floatBar.js - -$(document).ready(function() { - if (typeof(g_is_preview) != 'undefined' && g_is_preview==true) - { - if (typeof(g_selector_gadget) == 'undefined' || g_selector_gadget == null) { - g_selector_gadget = new SelectorGadget(); - g_selector_gadget.setMode('interactive'); - } - - $('body').layout({ applyDefaultStyles: true, - stateManagement__enabled: true // enable stateManagement - automatic cookie load & save enabled by default - }); - - //$("#section_select_dialog").dialog({ autoOpen: false, - // buttons: { "Cancel": function() { $(this).dialog("close"); }, - // "OK": function() { submit_layout_tree_form( 'add_child',null, $(this).find('[name="selected_section_id"]').val()); - // $(this).dialog("close"); } - // }, - // width:500,height:245 }); - - $("#section_select_dialog .titles li").click(function(){ - $(this).parent().children().removeClass('selected'); - $(this).addClass('selected'); - $(this).parent().next().children().removeClass('selected'); - $(this).parent().next().children().eq($(this).index()).addClass('selected'); - $(this).parent().siblings('input').val($(this).attr('data-section-id')) - }); - $("#section_select_dialog .dialog_close_button").click(function(){ - $.modal.close(); - }) - $("#section_select_dialog .dialog_ok_button").click(function(){ - submit_layout_tree_form( 'add_child',null, $('#section_select_dialog [name="selected_section_id"]').val()); - $.modal.close(); - }) - // add, remove, move section - $('.add_section_button').click(function(){ - var page_layout_id = $(this).data('id'); - $('#layout_id').val(page_layout.id); - $('#section_select_dialog').modal({ minHeight:300, minWidth: 600 }); - }) - $('.remove_section_button').click(function(){ - var page_layout_id = $(this).data('id'); - if (confirm('Really?')) submit_layout_tree_form('del_self', page_layout.id ) - }) - $('.move_section_to_left_button').click(function(){ - var page_layout_id = $(this).data('id'); - submit_layout_tree_form('move_left',page_layout.id ) - }) - $('.move_section_to_right_button').click(function(){ - var page_layout_id = $(this).data('id'); - submit_layout_tree_form('move_right',page_layout.id ) - }) - $('.promote_section_button').click(function(){ - var page_layout_id = $(this).data('id'); - submit_layout_tree_form('promote',page_layout.id ) - }) - $('.demote_section_button').click(function(){ - var page_layout_id = $(this).data('id'); - submit_layout_tree_form('demote',page_layout.id ) - }) - } -}) -function submit_layout_tree_form (op, layout_id, selected_section_id) { - $('#op').val(op); - // layout_id, selected_section_id could be null. - if (layout_id) $('#layout_id').val(layout_id); - if (selected_section_id) $('#selected_section_id').val(selected_section_id); - $('#layout_tree_form').trigger('submit'); -} - +//= require turbolinks diff --git a/spree_theme/app/assets/javascripts/store/spree_theme.login.js b/spree_theme/app/assets/javascripts/store/spree_theme.login.js new file mode 100644 index 00000000..52e9ebc1 --- /dev/null +++ b/spree_theme/app/assets/javascripts/store/spree_theme.login.js @@ -0,0 +1 @@ +//= require spree diff --git a/spree_theme/app/assets/javascripts/store/spree_theme.mobile.js b/spree_theme/app/assets/javascripts/store/spree_theme.mobile.js new file mode 100644 index 00000000..bbacf445 --- /dev/null +++ b/spree_theme/app/assets/javascripts/store/spree_theme.mobile.js @@ -0,0 +1,14 @@ +//= require jquery +//= require jquery_ujs +//= require jquery.form +//= require jquery.finger.16.min +//= require jquery.simplemodal.mobile +//= require jssor.slider.20.min +//= require spree/frontend +//= require store/spree_theme.client +//= require store/spree_theme.routes +//= require jquery.jeditable.js +// require bootstrap-sprockets +//= require store/section_effect.mobile +//= require store/weixin_support +//= require turbolinks diff --git a/spree_theme/app/assets/javascripts/store/spree_theme.routes.js b/spree_theme/app/assets/javascripts/store/spree_theme.routes.js new file mode 100644 index 00000000..1cf93825 --- /dev/null +++ b/spree_theme/app/assets/javascripts/store/spree_theme.routes.js @@ -0,0 +1,5 @@ + +Spree.routes.admin_template_themes = Spree.pathFor('admin/template_themes') +Spree.routes.admin_page_layouts = function(template_theme_id) { + return Spree.pathFor('admin/template_themes/'+template_theme_id+'/page_layouts') +} diff --git a/spree_theme/app/assets/javascripts/store/weixin_support.js b/spree_theme/app/assets/javascripts/store/weixin_support.js new file mode 100644 index 00000000..18833b25 --- /dev/null +++ b/spree_theme/app/assets/javascripts/store/weixin_support.js @@ -0,0 +1,39 @@ +//= require jweixin-1.1.0 +//= require store/weixin_support + +if( g_client_info.is_weixin && getstore.wx_cfg_params ){ + wx.config({ + debug: getstore.wx_cfg_params.debug, + appId: getstore.wx_cfg_params.app_id, + timestamp: getstore.wx_cfg_params.timestamp, + nonceStr: getstore.wx_cfg_params.nonce_str, + signature: getstore.wx_cfg_params.signature, + jsApiList: getstore.wx_cfg_params.js_api_list + }); + + wx.ready(function () { + wx.onMenuShareTimeline({ + title: getstore.share_data.desc, + desc:getstore.share_data.title, + link: getstore.share_data.link, + imgUrl: getstore.share_data.img_url, + success: function () { + }, + cancel: function () { + } + }); + wx.onMenuShareAppMessage({ + title: getstore.share_data.title, + desc: getstore.share_data.desc, + link: getstore.share_data.link, + imgUrl: getstore.share_data.img_url, + type: '', + dataUrl: '', + success: function () { + }, + cancel: function () { + } + }); + }); + +} diff --git a/spree_theme/app/assets/javascripts/superfish.js b/spree_theme/app/assets/javascripts/superfish.js new file mode 100644 index 00000000..d594a739 --- /dev/null +++ b/spree_theme/app/assets/javascripts/superfish.js @@ -0,0 +1,262 @@ +/* + * jQuery Superfish Menu Plugin - v1.7.5 + * Copyright (c) 2014 Joel Birch + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ + +;(function ($, w) { + "use strict"; + + var methods = (function () { + // private properties and methods go here + var c = { + bcClass: 'sf-breadcrumb', + menuClass: 'sf-js-enabled', + anchorClass: 'sf-with-ul', + menuArrowClass: 'sf-arrows' + }, + ios = (function () { + var ios = /iPhone|iPad|iPod/i.test(navigator.userAgent); + if (ios) { + // iOS clicks only bubble as far as body children + $(w).load(function () { + $('body').children().on('click', $.noop); + }); + } + return ios; + })(), + wp7 = (function () { + var style = document.documentElement.style; + return ('behavior' in style && 'fill' in style && /iemobile/i.test(navigator.userAgent)); + })(), + unprefixedPointerEvents = (function () { + return (!!w.PointerEvent); + })(), + toggleMenuClasses = function ($menu, o) { + var classes = c.menuClass; + if (o.cssArrows) { + classes += ' ' + c.menuArrowClass; + } + $menu.toggleClass(classes); + }, + setPathToCurrent = function ($menu, o) { + return $menu.find('li.' + o.pathClass).slice(0, o.pathLevels) + .addClass(o.hoverClass + ' ' + c.bcClass) + .filter(function () { + return ($(this).children(o.popUpSelector).hide().show().length); + }).removeClass(o.pathClass); + }, + toggleAnchorClass = function ($li) { + $li.children('a').toggleClass(c.anchorClass); + }, + toggleTouchAction = function ($menu) { + var msTouchAction = $menu.css('ms-touch-action'); + var touchAction = $menu.css('touch-action'); + touchAction = touchAction || msTouchAction; + touchAction = (touchAction === 'pan-y') ? 'auto' : 'pan-y'; + $menu.css({ + 'ms-touch-action': touchAction, + 'touch-action': touchAction + }); + }, + applyHandlers = function ($menu, o) { + var targets = 'li:has(' + o.popUpSelector + ')'; + if ($.fn.hoverIntent && !o.disableHI) { + $menu.hoverIntent(over, out, targets); + } + else { + $menu + .on('mouseenter.superfish', targets, over) + .on('mouseleave.superfish', targets, out); + } + var touchevent = 'MSPointerDown.superfish'; + if (unprefixedPointerEvents) { + touchevent = 'pointerdown.superfish'; + } + if (!ios) { + touchevent += ' touchend.superfish'; + } + if (wp7) { + touchevent += ' mousedown.superfish'; + } + $menu + .on('focusin.superfish', 'li', over) + .on('focusout.superfish', 'li', out) + .on(touchevent, 'a', o, touchHandler); + }, + touchHandler = function (e) { + var $this = $(this), + $ul = $this.siblings(e.data.popUpSelector); + + if ($ul.length > 0 && $ul.is(':hidden')) { + $this.one('click.superfish', false); + if (e.type === 'MSPointerDown' || e.type === 'pointerdown') { + $this.trigger('focus'); + } else { + $.proxy(over, $this.parent('li'))(); + } + } + }, + over = function () { + var $this = $(this), + o = getOptions($this); + clearTimeout(o.sfTimer); + $this.siblings().superfish('hide').end().superfish('show'); + }, + out = function () { + var $this = $(this), + o = getOptions($this); + if (ios) { + $.proxy(close, $this, o)(); + } + else { + clearTimeout(o.sfTimer); + o.sfTimer = setTimeout($.proxy(close, $this, o), o.delay); + } + }, + close = function (o) { + o.retainPath = ($.inArray(this[0], o.$path) > -1); + this.superfish('hide'); + + if (!this.parents('.' + o.hoverClass).length) { + o.onIdle.call(getMenu(this)); + if (o.$path.length) { + $.proxy(over, o.$path)(); + } + } + }, + getMenu = function ($el) { + return $el.closest('.' + c.menuClass); + }, + getOptions = function ($el) { + return getMenu($el).data('sf-options'); + }; + + return { + // public methods + hide: function (instant) { + if (this.length) { + var $this = this, + o = getOptions($this); + if (!o) { + return this; + } + var not = (o.retainPath === true) ? o.$path : '', + $ul = $this.find('li.' + o.hoverClass).add(this).not(not).removeClass(o.hoverClass).children(o.popUpSelector), + speed = o.speedOut; + + if (instant) { + $ul.show(); + speed = 0; + } + o.retainPath = false; + o.onBeforeHide.call($ul); + $ul.stop(true, true).animate(o.animationOut, speed, function () { + var $this = $(this); + o.onHide.call($this); + }); + } + return this; + }, + show: function () { + var o = getOptions(this); + if (!o) { + return this; + } + var $this = this.addClass(o.hoverClass), + $ul = $this.children(o.popUpSelector); + + o.onBeforeShow.call($ul); + $ul.stop(true, true).animate(o.animation, o.speed, function () { + o.onShow.call($ul); + }); + return this; + }, + destroy: function () { + return this.each(function () { + var $this = $(this), + o = $this.data('sf-options'), + $hasPopUp; + if (!o) { + return false; + } + $hasPopUp = $this.find(o.popUpSelector).parent('li'); + clearTimeout(o.sfTimer); + toggleMenuClasses($this, o); + toggleAnchorClass($hasPopUp); + toggleTouchAction($this); + // remove event handlers + $this.off('.superfish').off('.hoverIntent'); + // clear animation's inline display style + $hasPopUp.children(o.popUpSelector).attr('style', function (i, style) { + return style.replace(/display[^;]+;?/g, ''); + }); + // reset 'current' path classes + o.$path.removeClass(o.hoverClass + ' ' + c.bcClass).addClass(o.pathClass); + $this.find('.' + o.hoverClass).removeClass(o.hoverClass); + o.onDestroy.call($this); + $this.removeData('sf-options'); + }); + }, + init: function (op) { + return this.each(function () { + var $this = $(this); + if ($this.data('sf-options')) { + return false; + } + var o = $.extend({}, $.fn.superfish.defaults, op), + $hasPopUp = $this.find(o.popUpSelector).parent('li'); + o.$path = setPathToCurrent($this, o); + + $this.data('sf-options', o); + + toggleMenuClasses($this, o); + toggleAnchorClass($hasPopUp); + toggleTouchAction($this); + applyHandlers($this, o); + + $hasPopUp.not('.' + c.bcClass).superfish('hide', true); + + o.onInit.call(this); + }); + } + }; + })(); + + $.fn.superfish = function (method, args) { + if (methods[method]) { + return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } + else if (typeof method === 'object' || ! method) { + return methods.init.apply(this, arguments); + } + else { + return $.error('Method ' + method + ' does not exist on jQuery.fn.superfish'); + } + }; + + $.fn.superfish.defaults = { + popUpSelector: 'ul,.sf-mega', // within menu context + hoverClass: 'sfHover', + pathClass: 'overrideThisToUse', + pathLevels: 1, + delay: 800, + animation: {opacity: 'show'}, + animationOut: {opacity: 'hide'}, + speed: 'normal', + speedOut: 'fast', + cssArrows: true, + disableHI: false, + onInit: $.noop, + onBeforeShow: $.noop, + onShow: $.noop, + onBeforeHide: $.noop, + onHide: $.noop, + onIdle: $.noop, + onDestroy: $.noop + }; + +})(jQuery, window); diff --git a/spree_theme/app/assets/javascripts/swiper.jquery.min.js b/spree_theme/app/assets/javascripts/swiper.jquery.min.js new file mode 100644 index 00000000..3d379c7b --- /dev/null +++ b/spree_theme/app/assets/javascripts/swiper.jquery.min.js @@ -0,0 +1,18 @@ +/** + * Swiper 3.4.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * + * http://www.idangero.us/swiper/ + * + * Copyright 2017, Vladimir Kharlampidi + * The iDangero.us + * http://www.idangero.us/ + * + * Licensed under MIT + * + * Released on: March 10, 2017 + */ +!function(){"use strict";var e,a=function(t,s){function r(e){return Math.floor(e)}function i(){var e=x.params.autoplay,a=x.slides.eq(x.activeIndex);a.attr("data-swiper-autoplay")&&(e=a.attr("data-swiper-autoplay")||x.params.autoplay),x.autoplayTimeoutId=setTimeout(function(){x.params.loop?(x.fixLoop(),x._slideNext(),x.emit("onAutoplay",x)):x.isEnd?s.autoplayStopOnLast?x.stopAutoplay():(x._slideTo(0),x.emit("onAutoplay",x)):(x._slideNext(),x.emit("onAutoplay",x))},e)}function n(a,t){var s=e(a.target);if(!s.is(t))if("string"==typeof t)s=s.parents(t);else if(t.nodeType){var r;return s.parents().each(function(e,a){a===t&&(r=t)}),r?t:void 0}if(0!==s.length)return s[0]}function o(e,a){a=a||{};var t=window.MutationObserver||window.WebkitMutationObserver,s=new t(function(e){e.forEach(function(e){x.onResize(!0),x.emit("onObserverUpdate",x,e)})});s.observe(e,{attributes:void 0===a.attributes||a.attributes,childList:void 0===a.childList||a.childList,characterData:void 0===a.characterData||a.characterData}),x.observers.push(s)}function l(e){e.originalEvent&&(e=e.originalEvent);var a=e.keyCode||e.charCode;if(!x.params.allowSwipeToNext&&(x.isHorizontal()&&39===a||!x.isHorizontal()&&40===a))return!1;if(!x.params.allowSwipeToPrev&&(x.isHorizontal()&&37===a||!x.isHorizontal()&&38===a))return!1;if(!(e.shiftKey||e.altKey||e.ctrlKey||e.metaKey||document.activeElement&&document.activeElement.nodeName&&("input"===document.activeElement.nodeName.toLowerCase()||"textarea"===document.activeElement.nodeName.toLowerCase()))){if(37===a||39===a||38===a||40===a){var t=!1;if(x.container.parents("."+x.params.slideClass).length>0&&0===x.container.parents("."+x.params.slideActiveClass).length)return;var s={left:window.pageXOffset,top:window.pageYOffset},r=window.innerWidth,i=window.innerHeight,n=x.container.offset();x.rtl&&(n.left=n.left-x.container[0].scrollLeft);for(var o=[[n.left,n.top],[n.left+x.width,n.top],[n.left,n.top+x.height],[n.left+x.width,n.top+x.height]],l=0;l=s.left&&p[0]<=s.left+r&&p[1]>=s.top&&p[1]<=s.top+i&&(t=!0)}if(!t)return}x.isHorizontal()?(37!==a&&39!==a||(e.preventDefault?e.preventDefault():e.returnValue=!1),(39===a&&!x.rtl||37===a&&x.rtl)&&x.slideNext(),(37===a&&!x.rtl||39===a&&x.rtl)&&x.slidePrev()):(38!==a&&40!==a||(e.preventDefault?e.preventDefault():e.returnValue=!1),40===a&&x.slideNext(),38===a&&x.slidePrev()),x.emit("onKeyPress",x,a)}}function p(e){var a=0,t=0,s=0,r=0;return"detail"in e&&(t=e.detail),"wheelDelta"in e&&(t=-e.wheelDelta/120),"wheelDeltaY"in e&&(t=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(a=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(a=t,t=0),s=10*a,r=10*t,"deltaY"in e&&(r=e.deltaY),"deltaX"in e&&(s=e.deltaX),(s||r)&&e.deltaMode&&(1===e.deltaMode?(s*=40,r*=40):(s*=800,r*=800)),s&&!a&&(a=s<1?-1:1),r&&!t&&(t=r<1?-1:1),{spinX:a,spinY:t,pixelX:s,pixelY:r}}function d(e){e.originalEvent&&(e=e.originalEvent);var a=0,t=x.rtl?-1:1,s=p(e);if(x.params.mousewheelForceToAxis)if(x.isHorizontal()){if(!(Math.abs(s.pixelX)>Math.abs(s.pixelY)))return;a=s.pixelX*t}else{if(!(Math.abs(s.pixelY)>Math.abs(s.pixelX)))return;a=s.pixelY}else a=Math.abs(s.pixelX)>Math.abs(s.pixelY)?-s.pixelX*t:-s.pixelY;if(0!==a){if(x.params.mousewheelInvert&&(a=-a),x.params.freeMode){var r=x.getWrapperTranslate()+a*x.params.mousewheelSensitivity,i=x.isBeginning,n=x.isEnd;if(r>=x.minTranslate()&&(r=x.minTranslate()),r<=x.maxTranslate()&&(r=x.maxTranslate()),x.setWrapperTransition(0),x.setWrapperTranslate(r),x.updateProgress(),x.updateActiveIndex(),(!i&&x.isBeginning||!n&&x.isEnd)&&x.updateClasses(),x.params.freeModeSticky?(clearTimeout(x.mousewheel.timeout),x.mousewheel.timeout=setTimeout(function(){x.slideReset()},300)):x.params.lazyLoading&&x.lazy&&x.lazy.load(),x.emit("onScroll",x,e),x.params.autoplay&&x.params.autoplayDisableOnInteraction&&x.stopAutoplay(),0===r||r===x.maxTranslate())return}else{if((new window.Date).getTime()-x.mousewheel.lastScrollTime>60)if(a<0)if(x.isEnd&&!x.params.loop||x.animating){if(x.params.mousewheelReleaseOnEdges)return!0}else x.slideNext(),x.emit("onScroll",x,e);else if(x.isBeginning&&!x.params.loop||x.animating){if(x.params.mousewheelReleaseOnEdges)return!0}else x.slidePrev(),x.emit("onScroll",x,e);x.mousewheel.lastScrollTime=(new window.Date).getTime()}return e.preventDefault?e.preventDefault():e.returnValue=!1,!1}}function m(a,t){a=e(a);var s,r,i,n=x.rtl?-1:1;s=a.attr("data-swiper-parallax")||"0",r=a.attr("data-swiper-parallax-x"),i=a.attr("data-swiper-parallax-y"),r||i?(r=r||"0",i=i||"0"):x.isHorizontal()?(r=s,i="0"):(i=s,r="0"),r=r.indexOf("%")>=0?parseInt(r,10)*t*n+"%":r*t*n+"px",i=i.indexOf("%")>=0?parseInt(i,10)*t+"%":i*t+"px",a.transform("translate3d("+r+", "+i+",0px)")}function u(e){return 0!==e.indexOf("on")&&(e=e[0]!==e[0].toUpperCase()?"on"+e[0].toUpperCase()+e.substring(1):"on"+e),e}if(!(this instanceof a))return new a(t,s);var c={direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,autoplay:!1,autoplayDisableOnInteraction:!0,autoplayStopOnLast:!1,iOSEdgeSwipeDetection:!1,iOSEdgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",coverflow:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:!0},flip:{slideShadows:!0,limitRotation:!0},cube:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94},fade:{crossFade:!1},parallax:!1,zoom:!1,zoomMax:3,zoomMin:1,zoomToggle:!0,scrollbar:null,scrollbarHide:!0,scrollbarDraggable:!1,scrollbarSnapOnRelease:!1,keyboardControl:!1,mousewheelControl:!1,mousewheelReleaseOnEdges:!1,mousewheelInvert:!1,mousewheelForceToAxis:!1,mousewheelSensitivity:1,mousewheelEventsTarged:"container",hashnav:!1,hashnavWatchState:!1,history:!1,replaceState:!1,breakpoints:void 0,spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,centeredSlides:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,onlyExternal:!1,threshold:0,touchMoveStopPropagation:!0,touchReleaseOnEdges:!1,uniqueNavElements:!0,pagination:null,paginationElement:"span",paginationClickable:!1,paginationHide:!1,paginationBulletRender:null,paginationProgressRender:null,paginationFractionRender:null,paginationCustomRender:null,paginationType:"bullets",resistance:!0,resistanceRatio:.85,nextButton:null,prevButton:null,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,lazyLoading:!1,lazyLoadingInPrevNext:!1,lazyLoadingInPrevNextAmount:1,lazyLoadingOnTransitionStart:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,control:void 0,controlInverse:!1,controlBy:"slide",normalizeSlideIndex:!0,allowSwipeToPrev:!0,allowSwipeToNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",passiveListeners:!0,containerModifierClass:"swiper-container-",slideClass:"swiper-slide",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",bulletClass:"swiper-pagination-bullet",bulletActiveClass:"swiper-pagination-bullet-active",buttonDisabledClass:"swiper-button-disabled",paginationCurrentClass:"swiper-pagination-current",paginationTotalClass:"swiper-pagination-total",paginationHiddenClass:"swiper-pagination-hidden",paginationProgressbarClass:"swiper-pagination-progressbar",paginationClickableClass:"swiper-pagination-clickable",paginationModifierClass:"swiper-pagination-",lazyLoadingClass:"swiper-lazy",lazyStatusLoadingClass:"swiper-lazy-loading",lazyStatusLoadedClass:"swiper-lazy-loaded",lazyPreloaderClass:"swiper-lazy-preloader",notificationClass:"swiper-notification",preloaderClass:"preloader",zoomContainerClass:"swiper-zoom-container",observer:!1,observeParents:!1,a11y:!1,prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",runCallbacksOnInit:!0},g=s&&s.virtualTranslate;s=s||{};var h={};for(var v in s)if("object"!=typeof s[v]||null===s[v]||(s[v].nodeType||s[v]===window||s[v]===document||"undefined"!=typeof Dom7&&s[v]instanceof Dom7||"undefined"!=typeof jQuery&&s[v]instanceof jQuery))h[v]=s[v];else{h[v]={};for(var f in s[v])h[v][f]=s[v][f]}for(var w in c)if(void 0===s[w])s[w]=c[w];else if("object"==typeof s[w])for(var y in c[w])void 0===s[w][y]&&(s[w][y]=c[w][y]);var x=this;if(x.params=s,x.originalParams=h,x.classNames=[],void 0!==e&&"undefined"!=typeof Dom7&&(e=Dom7),(void 0!==e||(e="undefined"==typeof Dom7?window.Dom7||window.Zepto||window.jQuery:Dom7))&&(x.$=e,x.currentBreakpoint=void 0,x.getActiveBreakpoint=function(){if(!x.params.breakpoints)return!1;var e,a=!1,t=[];for(e in x.params.breakpoints)x.params.breakpoints.hasOwnProperty(e)&&t.push(e);t.sort(function(e,a){return parseInt(e,10)>parseInt(a,10)});for(var s=0;s=window.innerWidth&&!a&&(a=e);return a||"max"},x.setBreakpoint=function(){var e=x.getActiveBreakpoint();if(e&&x.currentBreakpoint!==e){var a=e in x.params.breakpoints?x.params.breakpoints[e]:x.originalParams,t=x.params.loop&&a.slidesPerView!==x.params.slidesPerView;for(var s in a)x.params[s]=a[s];x.currentBreakpoint=e,t&&x.destroyLoop&&x.reLoop(!0)}},x.params.breakpoints&&x.setBreakpoint(),x.container=e(t),0!==x.container.length)){if(x.container.length>1){var T=[];return x.container.each(function(){T.push(new a(this,s))}),T}x.container[0].swiper=x,x.container.data("swiper",x),x.classNames.push(x.params.containerModifierClass+x.params.direction),x.params.freeMode&&x.classNames.push(x.params.containerModifierClass+"free-mode"),x.support.flexbox||(x.classNames.push(x.params.containerModifierClass+"no-flexbox"),x.params.slidesPerColumn=1),x.params.autoHeight&&x.classNames.push(x.params.containerModifierClass+"autoheight"),(x.params.parallax||x.params.watchSlidesVisibility)&&(x.params.watchSlidesProgress=!0),x.params.touchReleaseOnEdges&&(x.params.resistanceRatio=0),["cube","coverflow","flip"].indexOf(x.params.effect)>=0&&(x.support.transforms3d?(x.params.watchSlidesProgress=!0,x.classNames.push(x.params.containerModifierClass+"3d")):x.params.effect="slide"),"slide"!==x.params.effect&&x.classNames.push(x.params.containerModifierClass+x.params.effect),"cube"===x.params.effect&&(x.params.resistanceRatio=0,x.params.slidesPerView=1,x.params.slidesPerColumn=1,x.params.slidesPerGroup=1,x.params.centeredSlides=!1,x.params.spaceBetween=0,x.params.virtualTranslate=!0),"fade"!==x.params.effect&&"flip"!==x.params.effect||(x.params.slidesPerView=1,x.params.slidesPerColumn=1,x.params.slidesPerGroup=1,x.params.watchSlidesProgress=!0,x.params.spaceBetween=0,void 0===g&&(x.params.virtualTranslate=!0)),x.params.grabCursor&&x.support.touch&&(x.params.grabCursor=!1),x.wrapper=x.container.children("."+x.params.wrapperClass),x.params.pagination&&(x.paginationContainer=e(x.params.pagination),x.params.uniqueNavElements&&"string"==typeof x.params.pagination&&x.paginationContainer.length>1&&1===x.container.find(x.params.pagination).length&&(x.paginationContainer=x.container.find(x.params.pagination)),"bullets"===x.params.paginationType&&x.params.paginationClickable?x.paginationContainer.addClass(x.params.paginationModifierClass+"clickable"):x.params.paginationClickable=!1,x.paginationContainer.addClass(x.params.paginationModifierClass+x.params.paginationType)),(x.params.nextButton||x.params.prevButton)&&(x.params.nextButton&&(x.nextButton=e(x.params.nextButton),x.params.uniqueNavElements&&"string"==typeof x.params.nextButton&&x.nextButton.length>1&&1===x.container.find(x.params.nextButton).length&&(x.nextButton=x.container.find(x.params.nextButton))),x.params.prevButton&&(x.prevButton=e(x.params.prevButton),x.params.uniqueNavElements&&"string"==typeof x.params.prevButton&&x.prevButton.length>1&&1===x.container.find(x.params.prevButton).length&&(x.prevButton=x.container.find(x.params.prevButton)))),x.isHorizontal=function(){return"horizontal"===x.params.direction},x.rtl=x.isHorizontal()&&("rtl"===x.container[0].dir.toLowerCase()||"rtl"===x.container.css("direction")),x.rtl&&x.classNames.push(x.params.containerModifierClass+"rtl"),x.rtl&&(x.wrongRTL="-webkit-box"===x.wrapper.css("display")),x.params.slidesPerColumn>1&&x.classNames.push(x.params.containerModifierClass+"multirow"),x.device.android&&x.classNames.push(x.params.containerModifierClass+"android"),x.container.addClass(x.classNames.join(" ")),x.translate=0,x.progress=0,x.velocity=0,x.lockSwipeToNext=function(){x.params.allowSwipeToNext=!1,x.params.allowSwipeToPrev===!1&&x.params.grabCursor&&x.unsetGrabCursor()},x.lockSwipeToPrev=function(){x.params.allowSwipeToPrev=!1,x.params.allowSwipeToNext===!1&&x.params.grabCursor&&x.unsetGrabCursor()},x.lockSwipes=function(){x.params.allowSwipeToNext=x.params.allowSwipeToPrev=!1,x.params.grabCursor&&x.unsetGrabCursor()},x.unlockSwipeToNext=function(){x.params.allowSwipeToNext=!0,x.params.allowSwipeToPrev===!0&&x.params.grabCursor&&x.setGrabCursor()},x.unlockSwipeToPrev=function(){x.params.allowSwipeToPrev=!0,x.params.allowSwipeToNext===!0&&x.params.grabCursor&&x.setGrabCursor()},x.unlockSwipes=function(){x.params.allowSwipeToNext=x.params.allowSwipeToPrev=!0,x.params.grabCursor&&x.setGrabCursor()},x.setGrabCursor=function(e){x.container[0].style.cursor="move",x.container[0].style.cursor=e?"-webkit-grabbing":"-webkit-grab",x.container[0].style.cursor=e?"-moz-grabbin":"-moz-grab",x.container[0].style.cursor=e?"grabbing":"grab"},x.unsetGrabCursor=function(){x.container[0].style.cursor=""},x.params.grabCursor&&x.setGrabCursor(),x.imagesToLoad=[],x.imagesLoaded=0,x.loadImage=function(e,a,t,s,r,i){function n(){i&&i()}var o;e.complete&&r?n():a?(o=new window.Image,o.onload=n,o.onerror=n,s&&(o.sizes=s),t&&(o.srcset=t),a&&(o.src=a)):n()},x.preloadImages=function(){function e(){void 0!==x&&null!==x&&x&&(void 0!==x.imagesLoaded&&x.imagesLoaded++,x.imagesLoaded===x.imagesToLoad.length&&(x.params.updateOnImagesReady&&x.update(),x.emit("onImagesReady",x)))}x.imagesToLoad=x.container.find("img");for(var a=0;a1)for(e=0;ex.slides.length)break;a.push(x.slides.eq(s)[0])}else a.push(x.slides.eq(x.activeIndex)[0]);for(e=0;et?r:t}t&&x.wrapper.css("height",t+"px")},x.updateContainerSize=function(){var e,a;e=void 0!==x.params.width?x.params.width:x.container[0].clientWidth,a=void 0!==x.params.height?x.params.height:x.container[0].clientHeight,0===e&&x.isHorizontal()||0===a&&!x.isHorizontal()||(e=e-parseInt(x.container.css("padding-left"),10)-parseInt(x.container.css("padding-right"),10),a=a-parseInt(x.container.css("padding-top"),10)-parseInt(x.container.css("padding-bottom"),10),x.width=e,x.height=a,x.size=x.isHorizontal()?x.width:x.height)},x.updateSlidesSize=function(){x.slides=x.wrapper.children("."+x.params.slideClass),x.snapGrid=[],x.slidesGrid=[],x.slidesSizesGrid=[];var e,a=x.params.spaceBetween,t=-x.params.slidesOffsetBefore,s=0,i=0;if(void 0!==x.size){"string"==typeof a&&a.indexOf("%")>=0&&(a=parseFloat(a.replace("%",""))/100*x.size),x.virtualSize=-a,x.rtl?x.slides.css({marginLeft:"",marginTop:""}):x.slides.css({marginRight:"",marginBottom:""});var n;x.params.slidesPerColumn>1&&(n=Math.floor(x.slides.length/x.params.slidesPerColumn)===x.slides.length/x.params.slidesPerColumn?x.slides.length:Math.ceil(x.slides.length/x.params.slidesPerColumn)*x.params.slidesPerColumn,"auto"!==x.params.slidesPerView&&"row"===x.params.slidesPerColumnFill&&(n=Math.max(n,x.params.slidesPerView*x.params.slidesPerColumn)));var o,l=x.params.slidesPerColumn,p=n/l,d=p-(x.params.slidesPerColumn*p-x.slides.length);for(e=0;e1){var u,c,g;"column"===x.params.slidesPerColumnFill?(c=Math.floor(e/l),g=e-c*l,(c>d||c===d&&g===l-1)&&++g>=l&&(g=0,c++),u=c+g*n/l,m.css({"-webkit-box-ordinal-group":u,"-moz-box-ordinal-group":u,"-ms-flex-order":u,"-webkit-order":u,order:u})):(g=Math.floor(e/p),c=e-g*p),m.css("margin-"+(x.isHorizontal()?"top":"left"),0!==g&&x.params.spaceBetween&&x.params.spaceBetween+"px").attr("data-swiper-column",c).attr("data-swiper-row",g)}"none"!==m.css("display")&&("auto"===x.params.slidesPerView?(o=x.isHorizontal()?m.outerWidth(!0):m.outerHeight(!0),x.params.roundLengths&&(o=r(o))):(o=(x.size-(x.params.slidesPerView-1)*a)/x.params.slidesPerView,x.params.roundLengths&&(o=r(o)),x.isHorizontal()?x.slides[e].style.width=o+"px":x.slides[e].style.height=o+"px"),x.slides[e].swiperSlideSize=o,x.slidesSizesGrid.push(o),x.params.centeredSlides?(t=t+o/2+s/2+a,0===s&&0!==e&&(t=t-x.size/2-a),0===e&&(t=t-x.size/2-a),Math.abs(t)<.001&&(t=0),i%x.params.slidesPerGroup==0&&x.snapGrid.push(t),x.slidesGrid.push(t)):(i%x.params.slidesPerGroup==0&&x.snapGrid.push(t),x.slidesGrid.push(t),t=t+o+a),x.virtualSize+=o+a,s=o,i++)}x.virtualSize=Math.max(x.virtualSize,x.size)+x.params.slidesOffsetAfter;var h;if(x.rtl&&x.wrongRTL&&("slide"===x.params.effect||"coverflow"===x.params.effect)&&x.wrapper.css({width:x.virtualSize+x.params.spaceBetween+"px"}),x.support.flexbox&&!x.params.setWrapperSize||(x.isHorizontal()?x.wrapper.css({width:x.virtualSize+x.params.spaceBetween+"px"}):x.wrapper.css({height:x.virtualSize+x.params.spaceBetween+"px"})),x.params.slidesPerColumn>1&&(x.virtualSize=(o+x.params.spaceBetween)*n,x.virtualSize=Math.ceil(x.virtualSize/x.params.slidesPerColumn)-x.params.spaceBetween,x.isHorizontal()?x.wrapper.css({width:x.virtualSize+x.params.spaceBetween+"px"}):x.wrapper.css({height:x.virtualSize+x.params.spaceBetween+"px"}),x.params.centeredSlides)){for(h=[],e=0;e1&&x.snapGrid.push(x.virtualSize-x.size)}0===x.snapGrid.length&&(x.snapGrid=[0]),0!==x.params.spaceBetween&&(x.isHorizontal()?x.rtl?x.slides.css({marginLeft:a+"px"}):x.slides.css({marginRight:a+"px"}):x.slides.css({marginBottom:a+"px"})),x.params.watchSlidesProgress&&x.updateSlidesOffset()}},x.updateSlidesOffset=function(){for(var e=0;ex.size&&(s=!0));for(a=x.activeIndex-1;a>=0;a--)x.slides[a]&&!s&&(r+=x.slides[a].swiperSlideSize,t++,r>x.size&&(s=!0))}else for(e=x.activeIndex+1;e=0&&i0&&n<=x.size||i<=0&&n>=x.size)&&x.slides.eq(t).addClass(x.params.slideVisibleClass)}s.progress=x.rtl?-r:r}}},x.updateProgress=function(e){void 0===e&&(e=x.translate||0);var a=x.maxTranslate()-x.minTranslate(),t=x.isBeginning,s=x.isEnd;0===a?(x.progress=0,x.isBeginning=x.isEnd=!0):(x.progress=(e-x.minTranslate())/a,x.isBeginning=x.progress<=0,x.isEnd=x.progress>=1),x.isBeginning&&!t&&x.emit("onReachBeginning",x),x.isEnd&&!s&&x.emit("onReachEnd",x),x.params.watchSlidesProgress&&x.updateSlidesProgress(e),x.emit("onProgress",x,x.progress)},x.updateActiveIndex=function(){var e,a,t,s=x.rtl?x.translate:-x.translate;for(a=0;a=x.slidesGrid[a]&&s=x.slidesGrid[a]&&s=x.slidesGrid[a]&&(e=a);x.params.normalizeSlideIndex&&(e<0||void 0===e)&&(e=0),t=Math.floor(e/x.params.slidesPerGroup),t>=x.snapGrid.length&&(t=x.snapGrid.length-1),e!==x.activeIndex&&(x.snapIndex=t,x.previousIndex=x.activeIndex,x.activeIndex=e,x.updateClasses(),x.updateRealIndex())},x.updateRealIndex=function(){x.realIndex=parseInt(x.slides.eq(x.activeIndex).attr("data-swiper-slide-index")||x.activeIndex,10)},x.updateClasses=function(){x.slides.removeClass(x.params.slideActiveClass+" "+x.params.slideNextClass+" "+x.params.slidePrevClass+" "+x.params.slideDuplicateActiveClass+" "+x.params.slideDuplicateNextClass+" "+x.params.slideDuplicatePrevClass);var a=x.slides.eq(x.activeIndex);a.addClass(x.params.slideActiveClass),s.loop&&(a.hasClass(x.params.slideDuplicateClass)?x.wrapper.children("."+x.params.slideClass+":not(."+x.params.slideDuplicateClass+')[data-swiper-slide-index="'+x.realIndex+'"]').addClass(x.params.slideDuplicateActiveClass):x.wrapper.children("."+x.params.slideClass+"."+x.params.slideDuplicateClass+'[data-swiper-slide-index="'+x.realIndex+'"]').addClass(x.params.slideDuplicateActiveClass));var t=a.next("."+x.params.slideClass).addClass(x.params.slideNextClass);x.params.loop&&0===t.length&&(t=x.slides.eq(0),t.addClass(x.params.slideNextClass));var r=a.prev("."+x.params.slideClass).addClass(x.params.slidePrevClass);if(x.params.loop&&0===r.length&&(r=x.slides.eq(-1),r.addClass(x.params.slidePrevClass)),s.loop&&(t.hasClass(x.params.slideDuplicateClass)?x.wrapper.children("."+x.params.slideClass+":not(."+x.params.slideDuplicateClass+')[data-swiper-slide-index="'+t.attr("data-swiper-slide-index")+'"]').addClass(x.params.slideDuplicateNextClass):x.wrapper.children("."+x.params.slideClass+"."+x.params.slideDuplicateClass+'[data-swiper-slide-index="'+t.attr("data-swiper-slide-index")+'"]').addClass(x.params.slideDuplicateNextClass),r.hasClass(x.params.slideDuplicateClass)?x.wrapper.children("."+x.params.slideClass+":not(."+x.params.slideDuplicateClass+')[data-swiper-slide-index="'+r.attr("data-swiper-slide-index")+'"]').addClass(x.params.slideDuplicatePrevClass):x.wrapper.children("."+x.params.slideClass+"."+x.params.slideDuplicateClass+'[data-swiper-slide-index="'+r.attr("data-swiper-slide-index")+'"]').addClass(x.params.slideDuplicatePrevClass)),x.paginationContainer&&x.paginationContainer.length>0){var i,n=x.params.loop?Math.ceil((x.slides.length-2*x.loopedSlides)/x.params.slidesPerGroup):x.snapGrid.length;if(x.params.loop?(i=Math.ceil((x.activeIndex-x.loopedSlides)/x.params.slidesPerGroup),i>x.slides.length-1-2*x.loopedSlides&&(i-=x.slides.length-2*x.loopedSlides),i>n-1&&(i-=n),i<0&&"bullets"!==x.params.paginationType&&(i=n+i)):i=void 0!==x.snapIndex?x.snapIndex:x.activeIndex||0,"bullets"===x.params.paginationType&&x.bullets&&x.bullets.length>0&&(x.bullets.removeClass(x.params.bulletActiveClass),x.paginationContainer.length>1?x.bullets.each(function(){e(this).index()===i&&e(this).addClass(x.params.bulletActiveClass)}):x.bullets.eq(i).addClass(x.params.bulletActiveClass)),"fraction"===x.params.paginationType&&(x.paginationContainer.find("."+x.params.paginationCurrentClass).text(i+1),x.paginationContainer.find("."+x.params.paginationTotalClass).text(n)),"progress"===x.params.paginationType){var o=(i+1)/n,l=o,p=1;x.isHorizontal()||(p=o,l=1),x.paginationContainer.find("."+x.params.paginationProgressbarClass).transform("translate3d(0,0,0) scaleX("+l+") scaleY("+p+")").transition(x.params.speed)}"custom"===x.params.paginationType&&x.params.paginationCustomRender&&(x.paginationContainer.html(x.params.paginationCustomRender(x,i+1,n)),x.emit("onPaginationRendered",x,x.paginationContainer[0]))}x.params.loop||(x.params.prevButton&&x.prevButton&&x.prevButton.length>0&&(x.isBeginning?(x.prevButton.addClass(x.params.buttonDisabledClass),x.params.a11y&&x.a11y&&x.a11y.disable(x.prevButton)):(x.prevButton.removeClass(x.params.buttonDisabledClass),x.params.a11y&&x.a11y&&x.a11y.enable(x.prevButton))),x.params.nextButton&&x.nextButton&&x.nextButton.length>0&&(x.isEnd?(x.nextButton.addClass(x.params.buttonDisabledClass),x.params.a11y&&x.a11y&&x.a11y.disable(x.nextButton)):(x.nextButton.removeClass(x.params.buttonDisabledClass),x.params.a11y&&x.a11y&&x.a11y.enable(x.nextButton))))},x.updatePagination=function(){if(x.params.pagination&&x.paginationContainer&&x.paginationContainer.length>0){var e="";if("bullets"===x.params.paginationType){for(var a=x.params.loop?Math.ceil((x.slides.length-2*x.loopedSlides)/x.params.slidesPerGroup):x.snapGrid.length,t=0;t";x.paginationContainer.html(e),x.bullets=x.paginationContainer.find("."+x.params.bulletClass),x.params.paginationClickable&&x.params.a11y&&x.a11y&&x.a11y.initPagination()}"fraction"===x.params.paginationType&&(e=x.params.paginationFractionRender?x.params.paginationFractionRender(x,x.params.paginationCurrentClass,x.params.paginationTotalClass):' / ',x.paginationContainer.html(e)),"progress"===x.params.paginationType&&(e=x.params.paginationProgressRender?x.params.paginationProgressRender(x,x.params.paginationProgressbarClass):'',x.paginationContainer.html(e)),"custom"!==x.params.paginationType&&x.emit("onPaginationRendered",x,x.paginationContainer[0])}},x.update=function(e){function a(){x.rtl,x.translate;t=Math.min(Math.max(x.translate,x.maxTranslate()),x.minTranslate()),x.setWrapperTranslate(t),x.updateActiveIndex(),x.updateClasses()}if(x){x.updateContainerSize(),x.updateSlidesSize(),x.updateProgress(),x.updatePagination(),x.updateClasses(),x.params.scrollbar&&x.scrollbar&&x.scrollbar.set();var t;if(e){x.controller&&x.controller.spline&&(x.controller.spline=void 0),x.params.freeMode?(a(),x.params.autoHeight&&x.updateAutoHeight()):(("auto"===x.params.slidesPerView||x.params.slidesPerView>1)&&x.isEnd&&!x.params.centeredSlides?x.slideTo(x.slides.length-1,0,!1,!0):x.slideTo(x.activeIndex,0,!1,!0))||a()}else x.params.autoHeight&&x.updateAutoHeight()}},x.onResize=function(e){x.params.onBeforeResize&&x.params.onBeforeResize(x),x.params.breakpoints&&x.setBreakpoint();var a=x.params.allowSwipeToPrev,t=x.params.allowSwipeToNext;x.params.allowSwipeToPrev=x.params.allowSwipeToNext=!0,x.updateContainerSize(),x.updateSlidesSize(),("auto"===x.params.slidesPerView||x.params.freeMode||e)&&x.updatePagination(),x.params.scrollbar&&x.scrollbar&&x.scrollbar.set(),x.controller&&x.controller.spline&&(x.controller.spline=void 0);var s=!1;if(x.params.freeMode){var r=Math.min(Math.max(x.translate,x.maxTranslate()),x.minTranslate());x.setWrapperTranslate(r),x.updateActiveIndex(),x.updateClasses(),x.params.autoHeight&&x.updateAutoHeight()}else x.updateClasses(),s=("auto"===x.params.slidesPerView||x.params.slidesPerView>1)&&x.isEnd&&!x.params.centeredSlides?x.slideTo(x.slides.length-1,0,!1,!0):x.slideTo(x.activeIndex,0,!1,!0);x.params.lazyLoading&&!s&&x.lazy&&x.lazy.load(),x.params.allowSwipeToPrev=a,x.params.allowSwipeToNext=t,x.params.onAfterResize&&x.params.onAfterResize(x)},x.touchEventsDesktop={start:"mousedown",move:"mousemove",end:"mouseup"},window.navigator.pointerEnabled?x.touchEventsDesktop={start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled&&(x.touchEventsDesktop={start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}),x.touchEvents={start:x.support.touch||!x.params.simulateTouch?"touchstart":x.touchEventsDesktop.start,move:x.support.touch||!x.params.simulateTouch?"touchmove":x.touchEventsDesktop.move,end:x.support.touch||!x.params.simulateTouch?"touchend":x.touchEventsDesktop.end},(window.navigator.pointerEnabled||window.navigator.msPointerEnabled)&&("container"===x.params.touchEventsTarget?x.container:x.wrapper).addClass("swiper-wp8-"+x.params.direction),x.initEvents=function(e){var a=e?"off":"on",t=e?"removeEventListener":"addEventListener",r="container"===x.params.touchEventsTarget?x.container[0]:x.wrapper[0],i=x.support.touch?r:document,n=!!x.params.nested;if(x.browser.ie)r[t](x.touchEvents.start,x.onTouchStart,!1),i[t](x.touchEvents.move,x.onTouchMove,n),i[t](x.touchEvents.end,x.onTouchEnd,!1);else{if(x.support.touch){var o=!("touchstart"!==x.touchEvents.start||!x.support.passiveListener||!x.params.passiveListeners)&&{passive:!0,capture:!1};r[t](x.touchEvents.start,x.onTouchStart,o),r[t](x.touchEvents.move,x.onTouchMove,n),r[t](x.touchEvents.end,x.onTouchEnd,o)}(s.simulateTouch&&!x.device.ios&&!x.device.android||s.simulateTouch&&!x.support.touch&&x.device.ios)&&(r[t]("mousedown",x.onTouchStart,!1),document[t]("mousemove",x.onTouchMove,n),document[t]("mouseup",x.onTouchEnd,!1))}window[t]("resize",x.onResize),x.params.nextButton&&x.nextButton&&x.nextButton.length>0&&(x.nextButton[a]("click",x.onClickNext),x.params.a11y&&x.a11y&&x.nextButton[a]("keydown",x.a11y.onEnterKey)),x.params.prevButton&&x.prevButton&&x.prevButton.length>0&&(x.prevButton[a]("click",x.onClickPrev),x.params.a11y&&x.a11y&&x.prevButton[a]("keydown",x.a11y.onEnterKey)),x.params.pagination&&x.params.paginationClickable&&(x.paginationContainer[a]("click","."+x.params.bulletClass,x.onClickIndex),x.params.a11y&&x.a11y&&x.paginationContainer[a]("keydown","."+x.params.bulletClass,x.a11y.onEnterKey)),(x.params.preventClicks||x.params.preventClicksPropagation)&&r[t]("click",x.preventClicks,!0)},x.attachEvents=function(){x.initEvents()},x.detachEvents=function(){x.initEvents(!0)},x.allowClick=!0,x.preventClicks=function(e){x.allowClick||(x.params.preventClicks&&e.preventDefault(),x.params.preventClicksPropagation&&x.animating&&(e.stopPropagation(),e.stopImmediatePropagation()))},x.onClickNext=function(e){e.preventDefault(),x.isEnd&&!x.params.loop||x.slideNext()},x.onClickPrev=function(e){e.preventDefault(),x.isBeginning&&!x.params.loop||x.slidePrev()},x.onClickIndex=function(a){a.preventDefault();var t=e(this).index()*x.params.slidesPerGroup +;x.params.loop&&(t+=x.loopedSlides),x.slideTo(t)},x.updateClickedSlide=function(a){var t=n(a,"."+x.params.slideClass),s=!1;if(t)for(var r=0;rx.slides.length-x.loopedSlides+l/2?(x.fixLoop(),o=x.wrapper.children("."+x.params.slideClass+'[data-swiper-slide-index="'+i+'"]:not(.'+x.params.slideDuplicateClass+")").eq(0).index(),setTimeout(function(){x.slideTo(o)},0)):x.slideTo(o):o>x.slides.length-l?(x.fixLoop(),o=x.wrapper.children("."+x.params.slideClass+'[data-swiper-slide-index="'+i+'"]:not(.'+x.params.slideDuplicateClass+")").eq(0).index(),setTimeout(function(){x.slideTo(o)},0)):x.slideTo(o)}else x.slideTo(o)}};var b,C,S,z,M,P,E,I,k,D,L="input, select, textarea, button, video",B=Date.now(),H=[];x.animating=!1,x.touches={startX:0,startY:0,currentX:0,currentY:0,diff:0};var G,X;x.onTouchStart=function(a){if(a.originalEvent&&(a=a.originalEvent),(G="touchstart"===a.type)||!("which"in a)||3!==a.which){if(x.params.noSwiping&&n(a,"."+x.params.noSwipingClass))return void(x.allowClick=!0);if(!x.params.swipeHandler||n(a,x.params.swipeHandler)){var t=x.touches.currentX="touchstart"===a.type?a.targetTouches[0].pageX:a.pageX,s=x.touches.currentY="touchstart"===a.type?a.targetTouches[0].pageY:a.pageY;if(!(x.device.ios&&x.params.iOSEdgeSwipeDetection&&t<=x.params.iOSEdgeSwipeThreshold)){if(b=!0,C=!1,S=!0,M=void 0,X=void 0,x.touches.startX=t,x.touches.startY=s,z=Date.now(),x.allowClick=!0,x.updateContainerSize(),x.swipeDirection=void 0,x.params.threshold>0&&(I=!1),"touchstart"!==a.type){var r=!0;e(a.target).is(L)&&(r=!1),document.activeElement&&e(document.activeElement).is(L)&&document.activeElement.blur(),r&&a.preventDefault()}x.emit("onTouchStart",x,a)}}}},x.onTouchMove=function(a){if(a.originalEvent&&(a=a.originalEvent),!G||"mousemove"!==a.type){if(a.preventedByNestedSwiper)return x.touches.startX="touchmove"===a.type?a.targetTouches[0].pageX:a.pageX,void(x.touches.startY="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY);if(x.params.onlyExternal)return x.allowClick=!1,void(b&&(x.touches.startX=x.touches.currentX="touchmove"===a.type?a.targetTouches[0].pageX:a.pageX,x.touches.startY=x.touches.currentY="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY,z=Date.now()));if(G&&x.params.touchReleaseOnEdges&&!x.params.loop)if(x.isHorizontal()){if(x.touches.currentXx.touches.startX&&x.translate>=x.minTranslate())return}else if(x.touches.currentYx.touches.startY&&x.translate>=x.minTranslate())return;if(G&&document.activeElement&&a.target===document.activeElement&&e(a.target).is(L))return C=!0,void(x.allowClick=!1);if(S&&x.emit("onTouchMove",x,a),!(a.targetTouches&&a.targetTouches.length>1)){if(x.touches.currentX="touchmove"===a.type?a.targetTouches[0].pageX:a.pageX,x.touches.currentY="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY,void 0===M){var t;x.isHorizontal()&&x.touches.currentY===x.touches.startY||!x.isHorizontal()&&x.touches.currentX===x.touches.startX?M=!1:(t=180*Math.atan2(Math.abs(x.touches.currentY-x.touches.startY),Math.abs(x.touches.currentX-x.touches.startX))/Math.PI,M=x.isHorizontal()?t>x.params.touchAngle:90-t>x.params.touchAngle)}if(M&&x.emit("onTouchMoveOpposite",x,a),void 0===X&&(x.touches.currentX===x.touches.startX&&x.touches.currentY===x.touches.startY||(X=!0)),b){if(M)return void(b=!1);if(X){x.allowClick=!1,x.emit("onSliderMove",x,a),a.preventDefault(),x.params.touchMoveStopPropagation&&!x.params.nested&&a.stopPropagation(),C||(s.loop&&x.fixLoop(),E=x.getWrapperTranslate(),x.setWrapperTransition(0),x.animating&&x.wrapper.trigger("webkitTransitionEnd transitionend oTransitionEnd MSTransitionEnd msTransitionEnd"),x.params.autoplay&&x.autoplaying&&(x.params.autoplayDisableOnInteraction?x.stopAutoplay():x.pauseAutoplay()),D=!1,!x.params.grabCursor||x.params.allowSwipeToNext!==!0&&x.params.allowSwipeToPrev!==!0||x.setGrabCursor(!0)),C=!0;var r=x.touches.diff=x.isHorizontal()?x.touches.currentX-x.touches.startX:x.touches.currentY-x.touches.startY;r*=x.params.touchRatio,x.rtl&&(r=-r),x.swipeDirection=r>0?"prev":"next",P=r+E;var i=!0;if(r>0&&P>x.minTranslate()?(i=!1,x.params.resistance&&(P=x.minTranslate()-1+Math.pow(-x.minTranslate()+E+r,x.params.resistanceRatio))):r<0&&PE&&(P=E),x.params.threshold>0){if(!(Math.abs(r)>x.params.threshold||I))return void(P=E);if(!I)return I=!0,x.touches.startX=x.touches.currentX,x.touches.startY=x.touches.currentY,P=E,void(x.touches.diff=x.isHorizontal()?x.touches.currentX-x.touches.startX:x.touches.currentY-x.touches.startY)}x.params.followFinger&&((x.params.freeMode||x.params.watchSlidesProgress)&&x.updateActiveIndex(),x.params.freeMode&&(0===H.length&&H.push({position:x.touches[x.isHorizontal()?"startX":"startY"],time:z}),H.push({position:x.touches[x.isHorizontal()?"currentX":"currentY"],time:(new window.Date).getTime()})),x.updateProgress(P),x.setWrapperTranslate(P))}}}}},x.onTouchEnd=function(a){if(a.originalEvent&&(a=a.originalEvent),S&&x.emit("onTouchEnd",x,a),S=!1,b){x.params.grabCursor&&C&&b&&(x.params.allowSwipeToNext===!0||x.params.allowSwipeToPrev===!0)&&x.setGrabCursor(!1);var t=Date.now(),s=t-z;if(x.allowClick&&(x.updateClickedSlide(a),x.emit("onTap",x,a),s<300&&t-B>300&&(k&&clearTimeout(k),k=setTimeout(function(){x&&(x.params.paginationHide&&x.paginationContainer.length>0&&!e(a.target).hasClass(x.params.bulletClass)&&x.paginationContainer.toggleClass(x.params.paginationHiddenClass),x.emit("onClick",x,a))},300)),s<300&&t-B<300&&(k&&clearTimeout(k),x.emit("onDoubleTap",x,a))),B=Date.now(),setTimeout(function(){x&&(x.allowClick=!0)},0),!b||!C||!x.swipeDirection||0===x.touches.diff||P===E)return void(b=C=!1);b=C=!1;var r;if(r=x.params.followFinger?x.rtl?x.translate:-x.translate:-P,x.params.freeMode){if(r<-x.minTranslate())return void x.slideTo(x.activeIndex);if(r>-x.maxTranslate())return void(x.slides.length1){var i=H.pop(),n=H.pop(),o=i.position-n.position,l=i.time-n.time;x.velocity=o/l,x.velocity=x.velocity/2,Math.abs(x.velocity)150||(new window.Date).getTime()-i.time>300)&&(x.velocity=0)}else x.velocity=0;x.velocity=x.velocity*x.params.freeModeMomentumVelocityRatio,H.length=0;var p=1e3*x.params.freeModeMomentumRatio,d=x.velocity*p,m=x.translate+d;x.rtl&&(m=-m);var u,c=!1,g=20*Math.abs(x.velocity)*x.params.freeModeMomentumBounceRatio;if(mx.minTranslate())x.params.freeModeMomentumBounce?(m-x.minTranslate()>g&&(m=x.minTranslate()+g),u=x.minTranslate(),c=!0,D=!0):m=x.minTranslate();else if(x.params.freeModeSticky){var h,v=0;for(v=0;v-m){h=v;break}m=Math.abs(x.snapGrid[h]-m)=x.params.longSwipesMs)&&(x.updateProgress(),x.updateActiveIndex()))}var f,w=0,y=x.slidesSizesGrid[0];for(f=0;f=x.slidesGrid[f]&&r=x.slidesGrid[f]&&(w=f,y=x.slidesGrid[x.slidesGrid.length-1]-x.slidesGrid[x.slidesGrid.length-2]);var T=(r-x.slidesGrid[w])/y;if(s>x.params.longSwipesMs){if(!x.params.longSwipes)return void x.slideTo(x.activeIndex);"next"===x.swipeDirection&&(T>=x.params.longSwipesRatio?x.slideTo(w+x.params.slidesPerGroup):x.slideTo(w)),"prev"===x.swipeDirection&&(T>1-x.params.longSwipesRatio?x.slideTo(w+x.params.slidesPerGroup):x.slideTo(w))}else{if(!x.params.shortSwipes)return void x.slideTo(x.activeIndex);"next"===x.swipeDirection&&x.slideTo(w+x.params.slidesPerGroup),"prev"===x.swipeDirection&&x.slideTo(w)}}},x._slideTo=function(e,a){return x.slideTo(e,a,!0,!0)},x.slideTo=function(e,a,t,s){void 0===t&&(t=!0),void 0===e&&(e=0),e<0&&(e=0),x.snapIndex=Math.floor(e/x.params.slidesPerGroup),x.snapIndex>=x.snapGrid.length&&(x.snapIndex=x.snapGrid.length-1);var r=-x.snapGrid[x.snapIndex];if(x.params.autoplay&&x.autoplaying&&(s||!x.params.autoplayDisableOnInteraction?x.pauseAutoplay(a):x.stopAutoplay()),x.updateProgress(r),x.params.normalizeSlideIndex)for(var i=0;i=Math.floor(100*x.slidesGrid[i])&&(e=i);return!(!x.params.allowSwipeToNext&&rx.translate&&r>x.maxTranslate()&&(x.activeIndex||0)!==e)&&(void 0===a&&(a=x.params.speed),x.previousIndex=x.activeIndex||0,x.activeIndex=e,x.updateRealIndex(),x.rtl&&-r===x.translate||!x.rtl&&r===x.translate?(x.params.autoHeight&&x.updateAutoHeight(),x.updateClasses(),"slide"!==x.params.effect&&x.setWrapperTranslate(r),!1):(x.updateClasses(),x.onTransitionStart(t),0===a||x.browser.lteIE9?(x.setWrapperTranslate(r),x.setWrapperTransition(0),x.onTransitionEnd(t)):(x.setWrapperTranslate(r),x.setWrapperTransition(a),x.animating||(x.animating=!0,x.wrapper.transitionEnd(function(){x&&x.onTransitionEnd(t)}))),!0)))},x.onTransitionStart=function(e){void 0===e&&(e=!0),x.params.autoHeight&&x.updateAutoHeight(),x.lazy&&x.lazy.onTransitionStart(),e&&(x.emit("onTransitionStart",x),x.activeIndex!==x.previousIndex&&(x.emit("onSlideChangeStart",x),x.activeIndex>x.previousIndex?x.emit("onSlideNextStart",x):x.emit("onSlidePrevStart",x)))},x.onTransitionEnd=function(e){x.animating=!1,x.setWrapperTransition(0),void 0===e&&(e=!0),x.lazy&&x.lazy.onTransitionEnd(),e&&(x.emit("onTransitionEnd",x),x.activeIndex!==x.previousIndex&&(x.emit("onSlideChangeEnd",x),x.activeIndex>x.previousIndex?x.emit("onSlideNextEnd",x):x.emit("onSlidePrevEnd",x))),x.params.history&&x.history&&x.history.setHistory(x.params.history,x.activeIndex),x.params.hashnav&&x.hashnav&&x.hashnav.setHash()},x.slideNext=function(e,a,t){if(x.params.loop){if(x.animating)return!1;x.fixLoop();x.container[0].clientLeft;return x.slideTo(x.activeIndex+x.params.slidesPerGroup,a,e,t)}return x.slideTo(x.activeIndex+x.params.slidesPerGroup,a,e,t)},x._slideNext=function(e){return x.slideNext(!0,e,!0)},x.slidePrev=function(e,a,t){if(x.params.loop){if(x.animating)return!1;x.fixLoop();x.container[0].clientLeft;return x.slideTo(x.activeIndex-1,a,e,t)}return x.slideTo(x.activeIndex-1,a,e,t)},x._slidePrev=function(e){return x.slidePrev(!0,e,!0)},x.slideReset=function(e,a,t){return x.slideTo(x.activeIndex,a,e)},x.disableTouchControl=function(){return x.params.onlyExternal=!0,!0},x.enableTouchControl=function(){return x.params.onlyExternal=!1,!0},x.setWrapperTransition=function(e,a){x.wrapper.transition(e),"slide"!==x.params.effect&&x.effects[x.params.effect]&&x.effects[x.params.effect].setTransition(e),x.params.parallax&&x.parallax&&x.parallax.setTransition(e),x.params.scrollbar&&x.scrollbar&&x.scrollbar.setTransition(e),x.params.control&&x.controller&&x.controller.setTransition(e,a),x.emit("onSetTransition",x,e)},x.setWrapperTranslate=function(e,a,t){var s=0,i=0;x.isHorizontal()?s=x.rtl?-e:e:i=e,x.params.roundLengths&&(s=r(s),i=r(i)),x.params.virtualTranslate||(x.support.transforms3d?x.wrapper.transform("translate3d("+s+"px, "+i+"px, 0px)"):x.wrapper.transform("translate("+s+"px, "+i+"px)")),x.translate=x.isHorizontal()?s:i;var n,o=x.maxTranslate()-x.minTranslate();n=0===o?0:(e-x.minTranslate())/o,n!==x.progress&&x.updateProgress(e),a&&x.updateActiveIndex(),"slide"!==x.params.effect&&x.effects[x.params.effect]&&x.effects[x.params.effect].setTranslate(x.translate),x.params.parallax&&x.parallax&&x.parallax.setTranslate(x.translate),x.params.scrollbar&&x.scrollbar&&x.scrollbar.setTranslate(x.translate),x.params.control&&x.controller&&x.controller.setTranslate(x.translate,t),x.emit("onSetTranslate",x,x.translate)},x.getTranslate=function(e,a){var t,s,r,i;return void 0===a&&(a="x"),x.params.virtualTranslate?x.rtl?-x.translate:x.translate:(r=window.getComputedStyle(e,null),window.WebKitCSSMatrix?(s=r.transform||r.webkitTransform,s.split(",").length>6&&(s=s.split(", ").map(function(e){return e.replace(",",".")}).join(", ")),i=new window.WebKitCSSMatrix("none"===s?"":s)):(i=r.MozTransform||r.OTransform||r.MsTransform||r.msTransform||r.transform||r.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),t=i.toString().split(",")),"x"===a&&(s=window.WebKitCSSMatrix?i.m41:16===t.length?parseFloat(t[12]):parseFloat(t[4])),"y"===a&&(s=window.WebKitCSSMatrix?i.m42:16===t.length?parseFloat(t[13]):parseFloat(t[5])),x.rtl&&s&&(s=-s),s||0)},x.getWrapperTranslate=function(e){return void 0===e&&(e=x.isHorizontal()?"x":"y"),x.getTranslate(x.wrapper[0],e)},x.observers=[],x.initObservers=function(){if(x.params.observeParents)for(var e=x.container.parents(),a=0;aa.length&&(x.loopedSlides=a.length);var t,s=[],r=[];for(a.each(function(t,i){var n=e(this);t=a.length-x.loopedSlides&&s.push(i),n.attr("data-swiper-slide-index",t)}),t=0;t=0;t--)x.wrapper.prepend(e(s[t].cloneNode(!0)).addClass(x.params.slideDuplicateClass))},x.destroyLoop=function(){x.wrapper.children("."+x.params.slideClass+"."+x.params.slideDuplicateClass).remove(),x.slides.removeAttr("data-swiper-slide-index")},x.reLoop=function(e){var a=x.activeIndex-x.loopedSlides;x.destroyLoop(),x.createLoop(),x.updateSlidesSize(),e&&x.slideTo(a+x.loopedSlides,0,!1)},x.fixLoop=function(){var e;x.activeIndex=2*x.loopedSlides||x.activeIndex>x.slides.length-2*x.params.slidesPerView)&&(e=-x.slides.length+x.activeIndex+x.loopedSlides,e+=x.loopedSlides,x.slideTo(e,0,!1,!0))},x.appendSlide=function(e){if(x.params.loop&&x.destroyLoop(),"object"==typeof e&&e.length)for(var a=0;a
      '),t.append(d)),0===m.length&&(m=e('
      '),t.append(m)),d.length&&(d[0].style.opacity=Math.max(-s,0)),m.length&&(m[0].style.opacity=Math.max(s,0))}t.transform("translate3d("+l+"px, "+p+"px, 0px) rotateX("+o+"deg) rotateY("+n+"deg)")}},setTransition:function(a){if(x.slides.transition(a).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(a),x.params.virtualTranslate&&0!==a){var t=!1;x.slides.eq(x.activeIndex).transitionEnd(function(){if(!t&&x&&e(this).hasClass(x.params.slideActiveClass)){t=!0,x.animating=!1;for(var a=["webkitTransitionEnd","transitionend","oTransitionEnd","MSTransitionEnd","msTransitionEnd"],s=0;s
      '),x.wrapper.append(a)),a.css({height:x.width+"px"})):(a=x.container.find(".swiper-cube-shadow"),0===a.length&&(a=e('
      '),x.container.append(a))));for(var s=0;s-1&&(t=90*s+90*o,x.rtl&&(t=90*-s-90*o)),r.transform(m),x.params.cube.slideShadows){var u=x.isHorizontal()?r.find(".swiper-slide-shadow-left"):r.find(".swiper-slide-shadow-top"),c=x.isHorizontal()?r.find(".swiper-slide-shadow-right"):r.find(".swiper-slide-shadow-bottom");0===u.length&&(u=e('
      '),r.append(u)),0===c.length&&(c=e('
      '),r.append(c)),u.length&&(u[0].style.opacity=Math.max(-o,0)),c.length&&(c[0].style.opacity=Math.max(o,0))}}if(x.wrapper.css({"-webkit-transform-origin":"50% 50% -"+x.size/2+"px","-moz-transform-origin":"50% 50% -"+x.size/2+"px","-ms-transform-origin":"50% 50% -"+x.size/2+"px","transform-origin":"50% 50% -"+x.size/2+"px"}),x.params.cube.shadow)if(x.isHorizontal())a.transform("translate3d(0px, "+(x.width/2+x.params.cube.shadowOffset)+"px, "+-x.width/2+"px) rotateX(90deg) rotateZ(0deg) scale("+x.params.cube.shadowScale+")");else{var g=Math.abs(t)-90*Math.floor(Math.abs(t)/90),h=1.5-(Math.sin(2*g*Math.PI/360)/2+Math.cos(2*g*Math.PI/360)/2),v=x.params.cube.shadowScale,f=x.params.cube.shadowScale/h,w=x.params.cube.shadowOffset;a.transform("scale3d("+v+", 1, "+f+") translate3d(0px, "+(x.height/2+w)+"px, "+-x.height/2/f+"px) rotateX(-90deg)")}var y=x.isSafari||x.isUiWebView?-x.size/2:0;x.wrapper.transform("translate3d(0px,0,"+y+"px) rotateX("+(x.isHorizontal()?0:t)+"deg) rotateY("+(x.isHorizontal()?-t:0)+"deg)")},setTransition:function(e){x.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),x.params.cube.shadow&&!x.isHorizontal()&&x.container.find(".swiper-cube-shadow").transition(e)}},coverflow:{setTranslate:function(){for(var a=x.translate,t=x.isHorizontal()?-a+x.width/2:-a+x.height/2,s=x.isHorizontal()?x.params.coverflow.rotate:-x.params.coverflow.rotate,r=x.params.coverflow.depth,i=0,n=x.slides.length;i
      '),o.append(f)),0===w.length&&(w=e('
      '),o.append(w)),f.length&&(f[0].style.opacity=d>0?d:0),w.length&&(w[0].style.opacity=-d>0?-d:0)}}if(x.browser.ie){x.wrapper[0].style.perspectiveOrigin=t+"px 50%"}},setTransition:function(e){x.slides.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)}}},x.lazy={initialImageLoaded:!1,loadImageInSlide:function(a,t){if(void 0!==a&&(void 0===t&&(t=!0),0!==x.slides.length)){var s=x.slides.eq(a),r=s.find("."+x.params.lazyLoadingClass+":not(."+x.params.lazyStatusLoadedClass+"):not(."+x.params.lazyStatusLoadingClass+")");!s.hasClass(x.params.lazyLoadingClass)||s.hasClass(x.params.lazyStatusLoadedClass)||s.hasClass(x.params.lazyStatusLoadingClass)||(r=r.add(s[0])),0!==r.length&&r.each(function(){var a=e(this);a.addClass(x.params.lazyStatusLoadingClass);var r=a.attr("data-background"),i=a.attr("data-src"),n=a.attr("data-srcset"),o=a.attr("data-sizes");x.loadImage(a[0],i||r,n,o,!1,function(){if(void 0!==x&&null!==x&&x){if(r?(a.css("background-image",'url("'+r+'")'),a.removeAttr("data-background")):(n&&(a.attr("srcset",n),a.removeAttr("data-srcset")),o&&(a.attr("sizes",o),a.removeAttr("data-sizes")),i&&(a.attr("src",i),a.removeAttr("data-src"))),a.addClass(x.params.lazyStatusLoadedClass).removeClass(x.params.lazyStatusLoadingClass),s.find("."+x.params.lazyPreloaderClass+", ."+x.params.preloaderClass).remove(),x.params.loop&&t){var e=s.attr("data-swiper-slide-index");if(s.hasClass(x.params.slideDuplicateClass)){var l=x.wrapper.children('[data-swiper-slide-index="'+e+'"]:not(.'+x.params.slideDuplicateClass+")");x.lazy.loadImageInSlide(l.index(),!1)}else{var p=x.wrapper.children("."+x.params.slideDuplicateClass+'[data-swiper-slide-index="'+e+'"]');x.lazy.loadImageInSlide(p.index(),!1)}}x.emit("onLazyImageReady",x,s[0],a[0])}}),x.emit("onLazyImageLoad",x,s[0],a[0])})}},load:function(){var a,t=x.params.slidesPerView;if("auto"===t&&(t=0),x.lazy.initialImageLoaded||(x.lazy.initialImageLoaded=!0),x.params.watchSlidesVisibility)x.wrapper.children("."+x.params.slideVisibleClass).each(function(){x.lazy.loadImageInSlide(e(this).index())});else if(t>1)for(a=x.activeIndex;a1||x.params.lazyLoadingInPrevNextAmount&&x.params.lazyLoadingInPrevNextAmount>1){var s=x.params.lazyLoadingInPrevNextAmount,r=t,i=Math.min(x.activeIndex+r+Math.max(s,r),x.slides.length),n=Math.max(x.activeIndex-Math.max(r,s),0);for(a=x.activeIndex+t;a0&&x.lazy.loadImageInSlide(o.index());var l=x.wrapper.children("."+x.params.slidePrevClass);l.length>0&&x.lazy.loadImageInSlide(l.index())}},onTransitionStart:function(){x.params.lazyLoading&&(x.params.lazyLoadingOnTransitionStart||!x.params.lazyLoadingOnTransitionStart&&!x.lazy.initialImageLoaded)&&x.lazy.load()},onTransitionEnd:function(){x.params.lazyLoading&&!x.params.lazyLoadingOnTransitionStart&&x.lazy.load()}},x.scrollbar={isTouched:!1,setDragPosition:function(e){var a=x.scrollbar,t=x.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].pageX:e.pageX||e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].pageY:e.pageY||e.clientY,s=t-a.track.offset()[x.isHorizontal()?"left":"top"]-a.dragSize/2,r=-x.minTranslate()*a.moveDivider,i=-x.maxTranslate()*a.moveDivider;si&&(s=i),s=-s/a.moveDivider,x.updateProgress(s),x.setWrapperTranslate(s,!0)},dragStart:function(e){var a=x.scrollbar;a.isTouched=!0,e.preventDefault(),e.stopPropagation(),a.setDragPosition(e),clearTimeout(a.dragTimeout),a.track.transition(0),x.params.scrollbarHide&&a.track.css("opacity",1),x.wrapper.transition(100),a.drag.transition(100),x.emit("onScrollbarDragStart",x)},dragMove:function(e){var a=x.scrollbar;a.isTouched&&(e.preventDefault?e.preventDefault():e.returnValue=!1,a.setDragPosition(e),x.wrapper.transition(0),a.track.transition(0),a.drag.transition(0),x.emit("onScrollbarDragMove",x))},dragEnd:function(e){var a=x.scrollbar;a.isTouched&&(a.isTouched=!1,x.params.scrollbarHide&&(clearTimeout(a.dragTimeout),a.dragTimeout=setTimeout(function(){a.track.css("opacity",0),a.track.transition(400)},1e3)),x.emit("onScrollbarDragEnd",x),x.params.scrollbarSnapOnRelease&&x.slideReset())},draggableEvents:function(){return x.params.simulateTouch!==!1||x.support.touch?x.touchEvents:x.touchEventsDesktop}(),enableDraggable:function(){var a=x.scrollbar,t=x.support.touch?a.track:document;e(a.track).on(a.draggableEvents.start,a.dragStart),e(t).on(a.draggableEvents.move,a.dragMove),e(t).on(a.draggableEvents.end,a.dragEnd)},disableDraggable:function(){var a=x.scrollbar,t=x.support.touch?a.track:document;e(a.track).off(a.draggableEvents.start,a.dragStart),e(t).off(a.draggableEvents.move,a.dragMove),e(t).off(a.draggableEvents.end,a.dragEnd)},set:function(){if(x.params.scrollbar){var a=x.scrollbar;a.track=e(x.params.scrollbar),x.params.uniqueNavElements&&"string"==typeof x.params.scrollbar&&a.track.length>1&&1===x.container.find(x.params.scrollbar).length&&(a.track=x.container.find(x.params.scrollbar)),a.drag=a.track.find(".swiper-scrollbar-drag"),0===a.drag.length&&(a.drag=e('
      '),a.track.append(a.drag)),a.drag[0].style.width="",a.drag[0].style.height="",a.trackSize=x.isHorizontal()?a.track[0].offsetWidth:a.track[0].offsetHeight,a.divider=x.size/x.virtualSize,a.moveDivider=a.divider*(a.trackSize/x.size),a.dragSize=a.trackSize*a.divider,x.isHorizontal()?a.drag[0].style.width=a.dragSize+"px":a.drag[0].style.height=a.dragSize+"px",a.divider>=1?a.track[0].style.display="none":a.track[0].style.display="",x.params.scrollbarHide&&(a.track[0].style.opacity=0)}},setTranslate:function(){if(x.params.scrollbar){var e,a=x.scrollbar,t=(x.translate,a.dragSize);e=(a.trackSize-a.dragSize)*x.progress,x.rtl&&x.isHorizontal()?(e=-e,e>0?(t=a.dragSize-e,e=0):-e+a.dragSize>a.trackSize&&(t=a.trackSize+e)):e<0?(t=a.dragSize+e,e=0):e+a.dragSize>a.trackSize&&(t=a.trackSize-e),x.isHorizontal()?(x.support.transforms3d?a.drag.transform("translate3d("+e+"px, 0, 0)"):a.drag.transform("translateX("+e+"px)"),a.drag[0].style.width=t+"px"):(x.support.transforms3d?a.drag.transform("translate3d(0px, "+e+"px, 0)"):a.drag.transform("translateY("+e+"px)"),a.drag[0].style.height=t+"px"),x.params.scrollbarHide&&(clearTimeout(a.timeout),a.track[0].style.opacity=1,a.timeout=setTimeout(function(){a.track[0].style.opacity=0,a.track.transition(400)},1e3))}},setTransition:function(e){x.params.scrollbar&&x.scrollbar.drag.transition(e)}},x.controller={LinearSpline:function(e,a){var t=function(){var e,a,t;return function(s,r){for(a=-1,e=s.length;e-a>1;)s[t=e+a>>1]<=r?a=t:e=t;return e}}();this.x=e,this.y=a,this.lastIndex=e.length-1;var s,r;this.x.length;this.interpolate=function(e){return e?(r=t(this.x,e),s=r-1,(e-this.x[s])*(this.y[r]-this.y[s])/(this.x[r]-this.x[s])+this.y[s]):0}},getInterpolateFunction:function(e){x.controller.spline||(x.controller.spline=x.params.loop?new x.controller.LinearSpline(x.slidesGrid,e.slidesGrid):new x.controller.LinearSpline(x.snapGrid,e.snapGrid))},setTranslate:function(e,t){function s(a){e=a.rtl&&"horizontal"===a.params.direction?-x.translate:x.translate,"slide"===x.params.controlBy&&(x.controller.getInterpolateFunction(a),i=-x.controller.spline.interpolate(-e)),i&&"container"!==x.params.controlBy||(r=(a.maxTranslate()-a.minTranslate())/(x.maxTranslate()-x.minTranslate()),i=(e-x.minTranslate())*r+a.minTranslate()),x.params.controlInverse&&(i=a.maxTranslate()-i),a.updateProgress(i),a.setWrapperTranslate(i,!1,x),a.updateActiveIndex()}var r,i,n=x.params.control;if(Array.isArray(n))for(var o=0;o-1?"DOMMouseScroll":function(){var e="onwheel"in document;if(!e){var a=document.createElement("div");a.setAttribute("onwheel","return;"),e="function"==typeof a.onwheel}return!e&&document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0&&(e=document.implementation.hasFeature("Events.wheel","3.0")),e}()?"wheel":"mousewheel"),x.disableMousewheelControl=function(){if(!x.mousewheel.event)return!1;var a=x.container;return"container"!==x.params.mousewheelEventsTarged&&(a=e(x.params.mousewheelEventsTarged)),a.off(x.mousewheel.event,d),x.params.mousewheelControl=!1,!0},x.enableMousewheelControl=function(){if(!x.mousewheel.event)return!1;var a=x.container;return"container"!==x.params.mousewheelEventsTarged&&(a=e(x.params.mousewheelEventsTarged)),a.on(x.mousewheel.event,d),x.params.mousewheelControl=!0,!0},x.parallax={setTranslate:function(){x.container.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){m(this,x.progress)}),x.slides.each(function(){var a=e(this);a.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){m(this,Math.min(Math.max(a[0].progress,-1),1))})})},setTransition:function(a){void 0===a&&(a=x.params.speed),x.container.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y]").each(function(){var t=e(this),s=parseInt(t.attr("data-swiper-parallax-duration"),10)||a;0===a&&(s=0),t.transition(s)})}},x.zoom={scale:1,currentScale:1,isScaling:!1,gesture:{slide:void 0,slideWidth:void 0,slideHeight:void 0,image:void 0,imageWrap:void 0,zoomMax:x.params.zoomMax},image:{isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},velocity:{x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0},getDistanceBetweenTouches:function(e){if(e.targetTouches.length<2)return 1;var a=e.targetTouches[0].pageX,t=e.targetTouches[0].pageY,s=e.targetTouches[1].pageX,r=e.targetTouches[1].pageY;return Math.sqrt(Math.pow(s-a,2)+Math.pow(r-t,2))},onGestureStart:function(a){var t=x.zoom;if(!x.support.gestures){if("touchstart"!==a.type||"touchstart"===a.type&&a.targetTouches.length<2)return;t.gesture.scaleStart=t.getDistanceBetweenTouches(a)}if(!(t.gesture.slide&&t.gesture.slide.length||(t.gesture.slide=e(this),0===t.gesture.slide.length&&(t.gesture.slide=x.slides.eq(x.activeIndex)),t.gesture.image=t.gesture.slide.find("img, svg, canvas"),t.gesture.imageWrap=t.gesture.image.parent("."+x.params.zoomContainerClass),t.gesture.zoomMax=t.gesture.imageWrap.attr("data-swiper-zoom")||x.params.zoomMax,0!==t.gesture.imageWrap.length)))return void(t.gesture.image=void 0);t.gesture.image.transition(0),t.isScaling=!0},onGestureChange:function(e){var a=x.zoom;if(!x.support.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;a.gesture.scaleMove=a.getDistanceBetweenTouches(e)}a.gesture.image&&0!==a.gesture.image.length&&(x.support.gestures?a.scale=e.scale*a.currentScale:a.scale=a.gesture.scaleMove/a.gesture.scaleStart*a.currentScale,a.scale>a.gesture.zoomMax&&(a.scale=a.gesture.zoomMax-1+Math.pow(a.scale-a.gesture.zoomMax+1,.5)),a.scalea.image.touchesStart.x)return void(a.image.isTouched=!1);if(!x.isHorizontal()&&Math.floor(a.image.minY)===Math.floor(a.image.startY)&&a.image.touchesCurrent.ya.image.touchesStart.y)return void(a.image.isTouched=!1)}e.preventDefault(),e.stopPropagation(),a.image.isMoved=!0,a.image.currentX=a.image.touchesCurrent.x-a.image.touchesStart.x+a.image.startX,a.image.currentY=a.image.touchesCurrent.y-a.image.touchesStart.y+a.image.startY,a.image.currentXa.image.maxX&&(a.image.currentX=a.image.maxX-1+Math.pow(a.image.currentX-a.image.maxX+1,.8)),a.image.currentYa.image.maxY&&(a.image.currentY=a.image.maxY-1+Math.pow(a.image.currentY-a.image.maxY+1,.8)),a.velocity.prevPositionX||(a.velocity.prevPositionX=a.image.touchesCurrent.x),a.velocity.prevPositionY||(a.velocity.prevPositionY=a.image.touchesCurrent.y),a.velocity.prevTime||(a.velocity.prevTime=Date.now()),a.velocity.x=(a.image.touchesCurrent.x-a.velocity.prevPositionX)/(Date.now()-a.velocity.prevTime)/2,a.velocity.y=(a.image.touchesCurrent.y-a.velocity.prevPositionY)/(Date.now()-a.velocity.prevTime)/2,Math.abs(a.image.touchesCurrent.x-a.velocity.prevPositionX)<2&&(a.velocity.x=0),Math.abs(a.image.touchesCurrent.y-a.velocity.prevPositionY)<2&&(a.velocity.y=0),a.velocity.prevPositionX=a.image.touchesCurrent.x,a.velocity.prevPositionY=a.image.touchesCurrent.y,a.velocity.prevTime=Date.now(),a.gesture.imageWrap.transform("translate3d("+a.image.currentX+"px, "+a.image.currentY+"px,0)")}}},onTouchEnd:function(e,a){var t=e.zoom;if(t.gesture.image&&0!==t.gesture.image.length){if(!t.image.isTouched||!t.image.isMoved)return t.image.isTouched=!1,void(t.image.isMoved=!1);t.image.isTouched=!1,t.image.isMoved=!1;var s=300,r=300,i=t.velocity.x*s,n=t.image.currentX+i,o=t.velocity.y*r,l=t.image.currentY+o;0!==t.velocity.x&&(s=Math.abs((n-t.image.currentX)/t.velocity.x)),0!==t.velocity.y&&(r=Math.abs((l-t.image.currentY)/t.velocity.y));var p=Math.max(s,r);t.image.currentX=n,t.image.currentY=l;var d=t.image.width*t.scale,m=t.image.height*t.scale;t.image.minX=Math.min(t.gesture.slideWidth/2-d/2,0),t.image.maxX=-t.image.minX,t.image.minY=Math.min(t.gesture.slideHeight/2-m/2,0),t.image.maxY=-t.image.minY,t.image.currentX=Math.max(Math.min(t.image.currentX,t.image.maxX),t.image.minX),t.image.currentY=Math.max(Math.min(t.image.currentY,t.image.maxY),t.image.minY),t.gesture.imageWrap.transition(p).transform("translate3d("+t.image.currentX+"px, "+t.image.currentY+"px,0)")}},onTransitionEnd:function(e){var a=e.zoom;a.gesture.slide&&e.previousIndex!==e.activeIndex&&(a.gesture.image.transform("translate3d(0,0,0) scale(1)"),a.gesture.imageWrap.transform("translate3d(0,0,0)"),a.gesture.slide=a.gesture.image=a.gesture.imageWrap=void 0,a.scale=a.currentScale=1)},toggleZoom:function(a,t){var s=a.zoom;if(s.gesture.slide||(s.gesture.slide=a.clickedSlide?e(a.clickedSlide):a.slides.eq(a.activeIndex),s.gesture.image=s.gesture.slide.find("img, svg, canvas"),s.gesture.imageWrap=s.gesture.image.parent("."+a.params.zoomContainerClass)),s.gesture.image&&0!==s.gesture.image.length){var r,i,n,o,l,p,d,m,u,c,g,h,v,f,w,y,x,T;void 0===s.image.touchesStart.x&&t?(r="touchend"===t.type?t.changedTouches[0].pageX:t.pageX,i="touchend"===t.type?t.changedTouches[0].pageY:t.pageY):(r=s.image.touchesStart.x,i=s.image.touchesStart.y),s.scale&&1!==s.scale?(s.scale=s.currentScale=1,s.gesture.imageWrap.transition(300).transform("translate3d(0,0,0)"),s.gesture.image.transition(300).transform("translate3d(0,0,0) scale(1)"),s.gesture.slide=void 0):(s.scale=s.currentScale=s.gesture.imageWrap.attr("data-swiper-zoom")||a.params.zoomMax,t?(x=s.gesture.slide[0].offsetWidth,T=s.gesture.slide[0].offsetHeight,n=s.gesture.slide.offset().left,o=s.gesture.slide.offset().top,l=n+x/2-r,p=o+T/2-i,u=s.gesture.image[0].offsetWidth,c=s.gesture.image[0].offsetHeight,g=u*s.scale,h=c*s.scale,v=Math.min(x/2-g/2,0),f=Math.min(T/2-h/2,0),w=-v,y=-f,d=l*s.scale,m=p*s.scale,dw&&(d=w),my&&(m=y)):(d=0,m=0),s.gesture.imageWrap.transition(300).transform("translate3d("+d+"px, "+m+"px,0)"),s.gesture.image.transition(300).transform("translate3d(0,0,0) scale("+s.scale+")"))}},attachEvents:function(a){var t=a?"off":"on";if(x.params.zoom){var s=(x.slides,!("touchstart"!==x.touchEvents.start||!x.support.passiveListener||!x.params.passiveListeners)&&{passive:!0,capture:!1});x.support.gestures?(x.slides[t]("gesturestart",x.zoom.onGestureStart,s),x.slides[t]("gesturechange",x.zoom.onGestureChange,s),x.slides[t]("gestureend",x.zoom.onGestureEnd,s)):"touchstart"===x.touchEvents.start&&(x.slides[t](x.touchEvents.start,x.zoom.onGestureStart,s),x.slides[t](x.touchEvents.move,x.zoom.onGestureChange,s),x.slides[t](x.touchEvents.end,x.zoom.onGestureEnd,s)),x[t]("touchStart",x.zoom.onTouchStart),x.slides.each(function(a,s){e(s).find("."+x.params.zoomContainerClass).length>0&&e(s)[t](x.touchEvents.move,x.zoom.onTouchMove)}),x[t]("touchEnd",x.zoom.onTouchEnd),x[t]("transitionEnd",x.zoom.onTransitionEnd),x.params.zoomToggle&&x.on("doubleTap",x.zoom.toggleZoom)}},init:function(){x.zoom.attachEvents()},destroy:function(){x.zoom.attachEvents(!0)}},x._plugins=[];for(var Y in x.plugins){var A=x.plugins[Y](x,x.params[Y]);A&&x._plugins.push(A)}return x.callPlugins=function(e){for(var a=0;a'),notify:function(e){var a=x.a11y.liveRegion;0!==a.length&&(a.html(""),a.html(e))},init:function(){x.params.nextButton&&x.nextButton&&x.nextButton.length>0&&(x.a11y.makeFocusable(x.nextButton),x.a11y.addRole(x.nextButton,"button"),x.a11y.addLabel(x.nextButton,x.params.nextSlideMessage)),x.params.prevButton&&x.prevButton&&x.prevButton.length>0&&(x.a11y.makeFocusable(x.prevButton),x.a11y.addRole(x.prevButton,"button"),x.a11y.addLabel(x.prevButton,x.params.prevSlideMessage)),e(x.container).append(x.a11y.liveRegion)},initPagination:function(){x.params.pagination&&x.params.paginationClickable&&x.bullets&&x.bullets.length&&x.bullets.each(function(){var a=e(this);x.a11y.makeFocusable(a),x.a11y.addRole(a,"button"),x.a11y.addLabel(a,x.params.paginationBulletMessage.replace(/{{index}}/,a.index()+1))})},destroy:function(){x.a11y.liveRegion&&x.a11y.liveRegion.length>0&&x.a11y.liveRegion.remove()}},x.init=function(){x.params.loop&&x.createLoop(),x.updateContainerSize(),x.updateSlidesSize(),x.updatePagination(),x.params.scrollbar&&x.scrollbar&&(x.scrollbar.set(),x.params.scrollbarDraggable&&x.scrollbar.enableDraggable()),"slide"!==x.params.effect&&x.effects[x.params.effect]&&(x.params.loop||x.updateProgress(),x.effects[x.params.effect].setTranslate()),x.params.loop?x.slideTo(x.params.initialSlide+x.loopedSlides,0,x.params.runCallbacksOnInit):(x.slideTo(x.params.initialSlide,0,x.params.runCallbacksOnInit),0===x.params.initialSlide&&(x.parallax&&x.params.parallax&&x.parallax.setTranslate(),x.lazy&&x.params.lazyLoading&&(x.lazy.load(),x.lazy.initialImageLoaded=!0))),x.attachEvents(),x.params.observer&&x.support.observer&&x.initObservers(),x.params.preloadImages&&!x.params.lazyLoading&&x.preloadImages(),x.params.zoom&&x.zoom&&x.zoom.init(),x.params.autoplay&&x.startAutoplay(),x.params.keyboardControl&&x.enableKeyboardControl&&x.enableKeyboardControl(),x.params.mousewheelControl&&x.enableMousewheelControl&&x.enableMousewheelControl(),x.params.hashnavReplaceState&&(x.params.replaceState=x.params.hashnavReplaceState),x.params.history&&x.history&&x.history.init(),x.params.hashnav&&x.hashnav&&x.hashnav.init(),x.params.a11y&&x.a11y&&x.a11y.init(),x.emit("onInit",x)},x.cleanupStyles=function(){x.container.removeClass(x.classNames.join(" ")).removeAttr("style"),x.wrapper.removeAttr("style"),x.slides&&x.slides.length&&x.slides.removeClass([x.params.slideVisibleClass,x.params.slideActiveClass,x.params.slideNextClass,x.params.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-column").removeAttr("data-swiper-row"),x.paginationContainer&&x.paginationContainer.length&&x.paginationContainer.removeClass(x.params.paginationHiddenClass),x.bullets&&x.bullets.length&&x.bullets.removeClass(x.params.bulletActiveClass),x.params.prevButton&&e(x.params.prevButton).removeClass(x.params.buttonDisabledClass),x.params.nextButton&&e(x.params.nextButton).removeClass(x.params.buttonDisabledClass),x.params.scrollbar&&x.scrollbar&&(x.scrollbar.track&&x.scrollbar.track.length&&x.scrollbar.track.removeAttr("style"),x.scrollbar.drag&&x.scrollbar.drag.length&&x.scrollbar.drag.removeAttr("style"))},x.destroy=function(e,a){x.detachEvents(),x.stopAutoplay(),x.params.scrollbar&&x.scrollbar&&x.params.scrollbarDraggable&&x.scrollbar.disableDraggable(),x.params.loop&&x.destroyLoop(),a&&x.cleanupStyles(),x.disconnectObservers(),x.params.zoom&&x.zoom&&x.zoom.destroy(),x.params.keyboardControl&&x.disableKeyboardControl&&x.disableKeyboardControl(),x.params.mousewheelControl&&x.disableMousewheelControl&&x.disableMousewheelControl(),x.params.a11y&&x.a11y&&x.a11y.destroy(),x.params.history&&!x.params.replaceState&&window.removeEventListener("popstate",x.history.setHistoryPopState),x.params.hashnav&&x.hashnav&&x.hashnav.destroy(),x.emit("onDestroy"),e!==!1&&(x=null)},x.init(),x}};a.prototype={isSafari:function(){var e=window.navigator.userAgent.toLowerCase();return e.indexOf("safari")>=0&&e.indexOf("chrome")<0&&e.indexOf("android")<0}(),isUiWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},browser:{ie:window.navigator.pointerEnabled||window.navigator.msPointerEnabled,ieTouch:window.navigator.msPointerEnabled&&window.navigator.msMaxTouchPoints>1||window.navigator.pointerEnabled&&window.navigator.maxTouchPoints>1,lteIE9:function(){var e=document.createElement("div");return e.innerHTML="",1===e.getElementsByTagName("i").length}()},device:function(){var e=window.navigator.userAgent,a=e.match(/(Android);?[\s\/]+([\d.]+)?/),t=e.match(/(iPad).*OS\s([\d_]+)/),s=e.match(/(iPod)(.*OS\s([\d_]+))?/),r=!t&&e.match(/(iPhone\sOS|iOS)\s([\d_]+)/);return{ios:t||r||s,android:a}}(),support:{touch:window.Modernizr&&Modernizr.touch===!0||function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)}(),transforms3d:window.Modernizr&&Modernizr.csstransforms3d===!0||function(){var e=document.createElement("div").style;return"webkitPerspective"in e||"MozPerspective"in e||"OPerspective"in e||"MsPerspective"in e||"perspective"in e}(),flexbox:function(){for(var e=document.createElement("div").style,a="alignItems webkitAlignItems webkitBoxAlign msFlexAlign mozBoxAlign webkitFlexDirection msFlexDirection mozBoxDirection mozBoxOrient webkitBoxDirection webkitBoxOrient".split(" "),t=0;t0?e?this[0].offsetWidth+parseFloat(this.css("margin-right"))+parseFloat(this.css("margin-left")):this[0].offsetWidth:null})),window.Swiper=a}(),"undefined"!=typeof module?module.exports=window.Swiper:"function"==typeof define&&define.amd&&define([],function(){"use strict";return window.Swiper}); +//# sourceMappingURL=maps/swiper.jquery.min.js.map diff --git a/spree_theme/app/assets/stylesheets/_bootstrap_custom.scss b/spree_theme/app/assets/stylesheets/_bootstrap_custom.scss new file mode 100644 index 00000000..02dc1f51 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/_bootstrap_custom.scss @@ -0,0 +1,50 @@ +// Core variables and mixins +@import "bootstrap/variables"; +@import "bootstrap/mixins"; + +// Reset and dependencies +@import "bootstrap/normalize"; +@import "bootstrap/print"; +//@import "bootstrap/glyphicons"; + +// Core CSS +@import "bootstrap/scaffolding"; +@import "bootstrap/type"; +@import "bootstrap/code"; +@import "bootstrap/grid"; +@import "bootstrap/tables"; +@import "bootstrap/forms"; +@import "bootstrap/buttons"; + +// Components +@import "bootstrap/component-animations"; +@import "bootstrap/dropdowns"; +@import "bootstrap/button-groups"; +@import "bootstrap/input-groups"; +@import "bootstrap/navs"; +@import "bootstrap/navbar"; +@import "bootstrap/breadcrumbs"; +@import "bootstrap/pagination"; +@import "bootstrap/pager"; +@import "bootstrap/labels"; +@import "bootstrap/badges"; +@import "bootstrap/jumbotron"; +@import "bootstrap/thumbnails"; +@import "bootstrap/alerts"; +@import "bootstrap/progress-bars"; +@import "bootstrap/media"; +@import "bootstrap/list-group"; +@import "bootstrap/panels"; +@import "bootstrap/responsive-embed"; +@import "bootstrap/wells"; +@import "bootstrap/close"; + +// Components w/ JavaScript +@import "bootstrap/modals"; +@import "bootstrap/tooltip"; +@import "bootstrap/popovers"; +@import "bootstrap/carousel"; + +// Utility classes +@import "bootstrap/utilities"; +@import "bootstrap/responsive-utilities"; diff --git a/spree_theme/app/assets/stylesheets/admin/login_abc.scss b/spree_theme/app/assets/stylesheets/admin/login_abc.scss new file mode 100644 index 00000000..981cf983 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/admin/login_abc.scss @@ -0,0 +1,17 @@ + + .admin-container{ + margin: 150px auto 0 auto; + width: 500px; + } + + .admin-container-title{ + text-align:center; + color:white; + } + + + .new_spree_user{ + .form-group{ + text-align: left; + } + } diff --git a/spree_theme/app/assets/stylesheets/admin/plugins/font-awesome-extra.css b/spree_theme/app/assets/stylesheets/admin/plugins/font-awesome-extra.css index 9479d3dd..e69de29b 100644 --- a/spree_theme/app/assets/stylesheets/admin/plugins/font-awesome-extra.css +++ b/spree_theme/app/assets/stylesheets/admin/plugins/font-awesome-extra.css @@ -1,6 +0,0 @@ -.icon-eye:before { - content: "\f06e"; -} -.icon-check-circle:before { - content: "\f058"; -} diff --git a/spree_theme/app/assets/stylesheets/admin/plugins/font-awesome-extra2.css b/spree_theme/app/assets/stylesheets/admin/plugins/font-awesome-extra2.css new file mode 100644 index 00000000..e69de29b diff --git a/spree_theme/app/assets/stylesheets/admin/spree_essential_blog.css b/spree_theme/app/assets/stylesheets/admin/spree_essential_blog.css new file mode 100644 index 00000000..64cd9a96 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/admin/spree_essential_blog.css @@ -0,0 +1,4 @@ +/* + *= require spree/backend + *= require admin/plugins/font-awesome-extra2 +*/ diff --git a/spree_theme/app/assets/stylesheets/admin/spree_theme.css b/spree_theme/app/assets/stylesheets/admin/spree_theme.css index 6408834e..7d8ba533 100644 --- a/spree_theme/app/assets/stylesheets/admin/spree_theme.css +++ b/spree_theme/app/assets/stylesheets/admin/spree_theme.css @@ -17,10 +17,8 @@ text-shadow: none; width: 90%; } -#page_layout_tree_inner ul { - background-image: none; -} */ + #page_layout_config_form .select2-container { width: 100% !important; -} \ No newline at end of file +} diff --git a/spree_theme/app/assets/stylesheets/admin_login.css b/spree_theme/app/assets/stylesheets/admin_login.css deleted file mode 100644 index ce21cf89..00000000 --- a/spree_theme/app/assets/stylesheets/admin_login.css +++ /dev/null @@ -1,38 +0,0 @@ - body{ - background-color: #EFEFEF; - font-size: 90%; - } - - .admin-box{ - } - .admin-container{ - margin: 250px auto 0 auto; - width: 500px; - background-color: #73CD54; - padding:15px 40px; - /* copy from http://www.cnblogs.com/leejersey/p/3187039.html */ - -moz-border-radius: 15px; /* Firefox */ - -webkit-border-radius: 15px; /* Safari 和 Chrome */ - border-radius: 15px; /* Opera 10.5+, 以及使用了IE-CSS3的IE浏览器 */ - - -moz-box-shadow: 5px 5px 8px #000; /* Firefox */ - -webkit-box-shadow: 5px 5px 8px #000; /* Safari 和 Chrome */ - box-shadow: 5px 5px 8px #000; /* Opera 10.5+, 以及使用了IE-CSS3的IE浏览器 */ - - } - .admin-container-title{ - text-align:center; - color:white; - } - - .admin-container form{ - margin: 0 0 0 115px; - } - .admin-container label{ color:white; } - .admin-container input[type='submit']{ - color: #009DE6; - /* background-color: #009DE6; - border: solid 1px #009DE6; - */ - padding: 2px 25px; - } diff --git a/spree_theme/app/assets/stylesheets/image_zoom.css b/spree_theme/app/assets/stylesheets/image_zoom.css new file mode 100644 index 00000000..ecc7f2e8 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/image_zoom.css @@ -0,0 +1,38 @@ +.image-zoom{ + display: inline-block; + cursor: default; + position: relative; +} +.zoom-loading{ + text-align: center; + width: 32px; + height: 32px; + background: url(/shops/shared/images/zoom/loading.gif) no-repeat 0 0 transparent; + z-index: 110; + position: absolute; +} +.zoom-lens{ + background: url(/shops/shared/images/zoom/zoom.png) repeat scroll 0 0; + cursor: move; + z-index: 120; + position: absolute; +} +.zoom-viewer { + overflow: hidden; + position: absolute; + background: #FFF; + z-index: 110; + border: 1px solid #DDDDDD; + +} +.zoom-viewer img { + position: absolute; +} +.zoom-iframe { + z-index: -1; + filter:alpha(opacity=0); + -moz-opacity: 0.80; + opacity: 0.80; + position:absolute; + display:block; +} \ No newline at end of file diff --git a/spree_theme/app/assets/stylesheets/interface.css b/spree_theme/app/assets/stylesheets/interface.css index 39437272..d8636a6d 100644 --- a/spree_theme/app/assets/stylesheets/interface.css +++ b/spree_theme/app/assets/stylesheets/interface.css @@ -2,7 +2,7 @@ .sg_cover /* for interface.js*/ { position:absolute !important; - z-index:999999 !important; + z-index:99 !important; background:white !important; margin:0px !important; padding:0px !important; @@ -24,7 +24,7 @@ } .sg_border{ position:absolute !important; - z-index:999999 !important; + z-index:99 !important; background:white !important; background-color:orange !important; margin:0px !important; @@ -53,4 +53,4 @@ .sg_rejected{ background-color:#F00 !important; background-image:none !important; -} \ No newline at end of file +} diff --git a/spree_theme/app/assets/stylesheets/jquery.layout.css b/spree_theme/app/assets/stylesheets/jquery.layout.css index 14e507b5..6185acf4 100644 --- a/spree_theme/app/assets/stylesheets/jquery.layout.css +++ b/spree_theme/app/assets/stylesheets/jquery.layout.css @@ -19,9 +19,10 @@ * Just to make demo-pages look better - not actually relevant to Layout! */ body { - font-family: Geneva, Arial, Helvetica, sans-serif; +/* font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 100%; *font-size: 80%; +*/ } /* diff --git a/spree_theme/app/assets/stylesheets/jquery.lightbox.css b/spree_theme/app/assets/stylesheets/jquery.lightbox.css new file mode 100644 index 00000000..38c50475 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/jquery.lightbox.css @@ -0,0 +1,110 @@ +#lightbox{ + position: absolute; + left: 0; + width: 100%; + z-index: 100; + text-align: center; + line-height: 0; + } + +#lightbox a img{ border: none; } + +#outerImageContainer{ + position: relative; + background-color: #fff; + width: 250px; + height: 250px; + margin: 0 auto; + } + +#imageContainer{ + padding: 10px; + } + +.lightbox-loading{ + position: absolute; + top: 40%; + left: 0%; + height: 25%; + width: 100%; + text-align: center; + line-height: 0; + } +#hoverNav{ + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 10; + } +#imageContainer>#hoverNav{ left: 0;} +#hoverNav a{ outline: none;} + +#prevLink, #nextLink{ + width: 49%; + height: 100%; + background: transparent url(/shops/shared/images/lightbox/blank.gif) no-repeat; /* Trick IE into showing hover */ + display: block; + } +#prevLink { left: 0; float: left;} +#nextLink { right: 0; float: right;} +#prevLink:hover, #prevLink:visited:hover { background: url(/shops/shared/images/lightbox/prev.gif) left 50% no-repeat; } +#nextLink:hover, #nextLink:visited:hover { background: url(/shops/shared/images/lightbox/next.gif) right 50% no-repeat; } + +/*** START : next / previous text links ***/ +#nextLinkText, #prevLinkText{ +color: #FF9834; +font-weight:bold; +text-decoration: none; +} +#nextLinkText{ +padding-left: 20px; +} +#prevLinkText{ +padding-right: 20px; +} +/*** END : next / previous text links ***/ +/*** START : added padding when navbar is on top ***/ + +.ontop #imageData { + padding-top: 5px; +} + +/*** END : added padding when navbar is on top ***/ + +#imageDataContainer{ + font: 10px Verdana, Helvetica, sans-serif; + background-color: #fff; + margin: 0 auto; + line-height: 1.4em; + } + +#imageData{ + padding:0 10px; + } +#imageData #imageDetails{ width: 70%; float: left; text-align: left; } +#imageData #caption{ font-weight: bold; } +#imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em; } +#imageData #numberDisplay a { color: black; padding-left: 5px; padding-right: 5px;} +#imageData #bottomNavClose{ width: 66px; float: right; padding-bottom: 0.7em; } +#imageData #helpDisplay {clear: left; float: left; display: block; } + +.lightbox-overlay{ + position: absolute; + top: 0; + left: 0; + z-index: 90; + width: 100%; + height: 500px; + background-color: #000; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6 !important; + display: none; + } + + +#lightboxIframe { + display: none; +} diff --git a/spree_theme/app/assets/stylesheets/spree/backend/spree_multi_site.css b/spree_theme/app/assets/stylesheets/spree/backend/spree_multi_site.css new file mode 100644 index 00000000..a5cec986 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/spree/backend/spree_multi_site.css @@ -0,0 +1,3 @@ +/* + *= require spree/backend +*/ diff --git a/spree_theme/app/assets/stylesheets/spree/backend/spree_related_products.css b/spree_theme/app/assets/stylesheets/spree/backend/spree_related_products.css new file mode 100644 index 00000000..a5cec986 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/spree/backend/spree_related_products.css @@ -0,0 +1,3 @@ +/* + *= require spree/backend +*/ diff --git a/spree_theme/app/assets/stylesheets/spree/backend/spree_theme.css b/spree_theme/app/assets/stylesheets/spree/backend/spree_theme.css new file mode 100644 index 00000000..30dbdd00 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/spree/backend/spree_theme.css @@ -0,0 +1 @@ +/* it is placeholder for test spree ~> 3.0 */ diff --git a/spree_theme/app/assets/stylesheets/spree/frontend/spree_multi_site.css b/spree_theme/app/assets/stylesheets/spree/frontend/spree_multi_site.css new file mode 100644 index 00000000..ad7db303 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/spree/frontend/spree_multi_site.css @@ -0,0 +1,3 @@ +/* + *= require spree/frontend +*/ diff --git a/spree_theme/app/assets/stylesheets/spree/frontend/spree_related_products.css b/spree_theme/app/assets/stylesheets/spree/frontend/spree_related_products.css new file mode 100644 index 00000000..ad7db303 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/spree/frontend/spree_related_products.css @@ -0,0 +1,3 @@ +/* + *= require spree/frontend +*/ diff --git a/spree_theme/app/assets/stylesheets/spree/frontend/spree_theme.css b/spree_theme/app/assets/stylesheets/spree/frontend/spree_theme.css new file mode 100644 index 00000000..30dbdd00 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/spree/frontend/spree_theme.css @@ -0,0 +1 @@ +/* it is placeholder for test spree ~> 3.0 */ diff --git a/spree_theme/app/assets/stylesheets/store/_spree_theme_variables.scss b/spree_theme/app/assets/stylesheets/store/_spree_theme_variables.scss new file mode 100644 index 00000000..7cb6e8d7 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/store/_spree_theme_variables.scss @@ -0,0 +1,62 @@ +/*--------------------------------------*/ +/* Colors +/*--------------------------------------*/ +$c_green: #8dba53 !default; /* Spree green */ +$c_red: #e45353 !default; /* Error red */ + +$layout_background_color: #FFFFFF !default; +$title_text_color: #404042 !default; +$body_text_color: #404042 !default; +$link_text_color: #00ADEE !default; + +$product_background_color: #FFFFFF !default; +$product_title_text_color: #404042 !default; +$product_body_text_color: #404042 !default; +$product_link_text_color: #BBBBBB !default; + +/*--------------------------------------*/ +/* Fonts import from remote +/*--------------------------------------*/ +/*@import url(//fonts.googleapis.com/css?family=Ubuntu:400,700,400italic,700italic|&subset=latin,cyrillic,greek,greek-ext,latin-ext,cyrillic-ext); +*/ + +/*--------------------------------------*/ +/* Font families +/*--------------------------------------*/ +$ff_base: 'Ubuntu', sans-serif !default; + +/*-------------------------------------- + | Font sizes + |-------------------------------------- + |- Navigation + | */ + $header_navigation_font_size: 14px !default; + $horizontal_navigation_font_size: 16px !default; + $main_navigation_header_font_size: 14px !default; + $main_navigation_font_size: 12px !default; +/*|------------------------------------ + |- Product Listing + | */ + $product_list_name_font_size: 12px !default; + $product_list_price_font_size: 16px !default; + $product_list_header_font_size: 20px !default; + $product_list_search_font_size: 14px !default; +/*|------------------------------------ + |- Product Details + | */ + $product_detail_name_font_size: 24px !default; + $product_detail_description_font_size: 12px !default; + $product_detail_price_font_size: 20px !default; + $product_detail_title_font_size: 14px !default; +/*|------------------------------------ + |- Basic + | */ + $heading_font_size: 24px !default; + $sub_heading_font_size: 14px !default; + $button_font_size: 12px !default; + $input_box_font_size: 13px !default; + $base_font_size: 12px !default; + $border_color: lighten($body_text_color, 60) !default; + $default_border: 1px solid $border_color !default; + $button_border_color: rgba(0, 138, 189, .75) !default; + $table_head_color: lighten($body_text_color, 60) !default; diff --git a/spree_theme/app/assets/stylesheets/store/ck_hack.css b/spree_theme/app/assets/stylesheets/store/ck_hack.css new file mode 100644 index 00000000..f65f3b5a --- /dev/null +++ b/spree_theme/app/assets/stylesheets/store/ck_hack.css @@ -0,0 +1,6 @@ +/* eliminate margin of tag p +

      xyz

      +*/ +.ck_nomargin p { + margin: 0; +} diff --git a/spree_theme/app/assets/stylesheets/store/spree_china_checkout.css b/spree_theme/app/assets/stylesheets/store/spree_china_checkout.css new file mode 100644 index 00000000..4eb40635 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/store/spree_china_checkout.css @@ -0,0 +1,22 @@ +/* copy from spree_china_checkout, for rspec test, dummy require precompile assets*/ +.checkout-content{ + border: 1px solid #e5e5e5; + margin: 0 0 10px 0; +} +.checkout-content h2{ + background-color: #f7f7f7; + margin: 0; + padding: 2px 10px; + } +.checkout-content .form-wrapper{ + padding:10px; + } + +.checkout-content h2 a { display: none; } +.checkout-content .summary-wrapper { padding:10px; display: none; } +.checkout-content.enabled-step .summary-wrapper{ display: block; } +.checkout-content.enabled-step h2 a { display: inline-block; } +.checkout-content.disabled-step .form-wrapper{ position: relative; display: none; } +.checkout-content.disabled-step .summary-wrapper{ position: relative; display: none; } + +#checkout .wait-for-payment { display:none; } diff --git a/spree_theme/app/assets/stylesheets/store/spree_theme.client.css b/spree_theme/app/assets/stylesheets/store/spree_theme.client.css deleted file mode 100644 index b41fc6d9..00000000 --- a/spree_theme/app/assets/stylesheets/store/spree_theme.client.css +++ /dev/null @@ -1,29 +0,0 @@ -/* - *= require normalize -*/ -#embeded_content_wrapper{ - position: absolute; - top:0; - left:0; - right:0; - height:30px; - border-bottom: solid 1px #EBEBEB; - background-color: #F8F8F8; - z-index: 100; - display: none; -} -#embeded_content_wrapper .theme_selection_wrapper{ - text-align:right; -} - -#embeded_content_wrapper_icon{ - position: absolute; - top:0; - right:0; - height:30px; - width:30px; - border: solid 1px #EBEBEB; - background-color: #F8F8F8; - z-index: 99; - font-size: 0.7em; -} diff --git a/spree_theme/app/assets/stylesheets/store/spree_theme.client.scss b/spree_theme/app/assets/stylesheets/store/spree_theme.client.scss new file mode 100644 index 00000000..c1f6c5f4 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/store/spree_theme.client.scss @@ -0,0 +1,65 @@ +@import 'store/spree_theme_variables'; +@import 'image_zoom'; +@import 'swiper.min'; +@import 'jquery.lightbox'; +@import 'store/spree_china_checkout'; +@import 'store/ck_hack'; + +html.turbolinks-progress-bar::before { + background-color: red !important; + height: 2px !important; +} + +/* mobile required it as well */ +#embeded_content_wrapper{ + position: absolute; + top:0; + left:0; + right:0; + height:30px; + border-bottom: solid 1px #EBEBEB; + background-color: #F8F8F8; + z-index: 100; + display: none; +} +#embeded_content_wrapper .theme_selection_wrapper{ + text-align:right; +} + +#embeded_content_wrapper_icon{ + position: absolute; + top:0; + right:0; + height:30px; + width:30px; + border: solid 1px #EBEBEB; + background-color: #F8F8F8; + z-index: 99; + font-size: 0.7em; +} +/* state name */ +.hidden { + display: none; +} + +/*--------------------------------------*/ +/* Flash notices & errors +/*--------------------------------------*/ +/* +.flash { + padding: 10px; + color: $layout_background_color; + font-weight: bold; + margin-bottom: 10px; + + &.notice { + background-color: $link_text_color; + } + &.success { + background-color: $c_green; + } + &.error { + background-color: $c_red; + } +} +*/ diff --git a/spree_theme/app/assets/stylesheets/store/spree_theme.css b/spree_theme/app/assets/stylesheets/store/spree_theme.css deleted file mode 100644 index e9b929ef..00000000 --- a/spree_theme/app/assets/stylesheets/store/spree_theme.css +++ /dev/null @@ -1,110 +0,0 @@ -/* - *= require spree_theme_base - *= require jquery.layout - *= require normalize - *= require interface -*/ - -#editor_panel -{height:260px; -} -#page_layout_tree_inner -{ - height:200px; - overflow: auto; -} -.param_value_editor -{ - height:200px; - overflow: auto; -} -.editor-header -{ - background-color: #B6B6B6; -} - - -.block -{ - border: solid 1px gray; - padding: 2px; - margin: 2px; -} - -.menu li{ - padding:5px; - float:left; -} -ul.tabs{list-style:none; margin:0;padding:0;} -.tabs li{ - padding:5px; - float:left; -} - -#editors span.option_item -{ - display:inline-block; - width:170px; -} - -#editors div.pv{ - padding:2px; - -} -#editors span.pv-name -{ - display:inline-block; - width:150px; -} - -#editors input.pv-psv, select.pv-psv -{ - display:inline-block; - width:120px; -} -#editors input.pv-pv -{ - display:inline-block; - width:120px; -} -#section_select_dialog ul -{ - list-style:none; margin: 0; padding: 0; -} -#section_select_dialog ul.titles li -{ - white-space:nowrap; -} - -#section_select_dialog li.selected -{ - background-color: silver; -} -#section_select_dialog .details .selected -{ - display:block; -} -#section_select_dialog .details div -{ - display:none; -} - -#editors label, #menu_and_template label -{ - margin:0; - padding:0; - display:inline; -} -#publish ul -{ - margin:0; - padding:0; -} - -#editor_panel a.selected -{ - background-color: #22A7F2; - color: white; - font-weight: bold; -} - diff --git a/spree_theme/app/assets/stylesheets/store/spree_theme.css.scss b/spree_theme/app/assets/stylesheets/store/spree_theme.css.scss new file mode 100644 index 00000000..8f912e91 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/store/spree_theme.css.scss @@ -0,0 +1,155 @@ +@import "spree_theme_base"; +@import "interface"; + +#editor_panel +{ position: fixed; + bottom:0; + left:0; + right:0; + height:248px; + border-bottom: solid 1px #EBEBEB; + background-color: #F8F8F8; + z-index: 100; + display: none; +} +#editor_panel a.close{ + position: absolute; + top:0; + right:0; + display: inline-block; + padding:5px; +} +#editor_panel_icon{ + position: fixed; + bottom:0; + right:0; + height:30px; + width:30px; + border: solid 1px #EBEBEB; + background-color: #F8F8F8; + z-index: 99; + font-size: 0.7em; +} +#page_layout_tree_inner +{ + height:200px; + overflow: auto; + .page_layout { + background-color: transparent; + } + .page_layout:hover { + background-color: #ebebeb; + } +} + +.param_value_editor +{ + height:200px; + overflow: auto; +} +.editor-header +{ + background-color: #B6B6B6; +} + + +.block +{ + border: solid 1px gray; + padding: 2px; + margin: 2px; +} +.block_header{ height:32px; } + +.menu li{ + padding:5px; + float:left; +} +ul.tabs{list-style:none; margin:0;padding:0;} +.tabs li{ + padding: 5px; + float:left; +} + +#editors span.option_item +{ + display:inline-block; + width:170px; +} + +#editors div.pv{ + padding:2px; + background-color: transparent; + &:hover{ + background-color: #ebebeb; + } +} +#editors span.pv-name +{ + display:inline-block; + width:150px; +} + +#editors input.pv-psv, select.pv-psv +{ + display:inline-block; + width:120px; +} +#editors input.pv-pv +{ + display:inline-block; + width:120px; +} +#editors [type="checkbox"]{ + vertical-align: bottom; +} + +#section_select_dialog ul +{ + list-style:none; margin: 0; padding: 0; +} +#section_select_dialog ul.titles li +{ + white-space:nowrap; +} + +#section_select_dialog li.selected +{ + background-color: silver; +} +#section_select_dialog .details .selected +{ + display:block; +} +#section_select_dialog .details div +{ + display:none; +} + +#editors label, #menu_and_template label +{ + margin:0; + padding:0; + display:inline; +} +#publish ul +{ + margin:0; + padding:0; +} + +#editor_panel a.selected +{ + background-color: #22A7F2; + color: white; + font-weight: bold; +} + +#dialog_for_editor{ + background-color:white; + padding: 25px 35px; + display:none; +} + +.simplemodal-overlay{ background-color:black; } +form.editable input { color: black; } diff --git a/spree_theme/app/assets/stylesheets/store/spree_theme.desktop.scss b/spree_theme/app/assets/stylesheets/store/spree_theme.desktop.scss new file mode 100644 index 00000000..5fbe9ca5 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/store/spree_theme.desktop.scss @@ -0,0 +1,2 @@ +@import 'normalize'; +@import 'store/spree_theme.client'; diff --git a/spree_theme/app/assets/stylesheets/store/spree_theme.mobile.scss b/spree_theme/app/assets/stylesheets/store/spree_theme.mobile.scss new file mode 100644 index 00000000..9bdcda3a --- /dev/null +++ b/spree_theme/app/assets/stylesheets/store/spree_theme.mobile.scss @@ -0,0 +1,3 @@ +@import "font-awesome"; +@import "bootstrap_custom"; +@import 'store/spree_theme.client'; diff --git a/spree_theme/app/assets/stylesheets/store/swiper.min.css b/spree_theme/app/assets/stylesheets/store/swiper.min.css new file mode 100644 index 00000000..b222bea4 --- /dev/null +++ b/spree_theme/app/assets/stylesheets/store/swiper.min.css @@ -0,0 +1,15 @@ +/** + * Swiper 3.4.2 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * + * http://www.idangero.us/swiper/ + * + * Copyright 2017, Vladimir Kharlampidi + * The iDangero.us + * http://www.idangero.us/ + * + * Licensed under MIT + * + * Released on: March 10, 2017 + */ +.swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate(0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.swiper-container-multirow>.swiper-wrapper{-webkit-box-lines:multiple;-moz-box-lines:multiple;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{-webkit-flex-shrink:0;-ms-flex:0 0 auto;flex-shrink:0;width:100%;height:100%;position:relative}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-transition-property:-webkit-transform,height;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform,height}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-wp8-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;-moz-background-size:27px 44px;-webkit-background-size:27px 44px;background-size:27px 44px;background-position:center;background-repeat:no-repeat}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");left:10px;right:auto}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");right:10px;left:auto}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-container-horizontal>.swiper-pagination-bullets,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:10px;left:0;width:100%}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-moz-appearance:none;-ms-appearance:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-white .swiper-pagination-bullet{background:#fff}.swiper-pagination-bullet-active{opacity:1;background:#007aff}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-container-vertical>.swiper-pagination-bullets{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);-moz-transform:translate3d(0,-50%,0);-o-transform:translate(0,-50%);-ms-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:5px 0;display:block}.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 5px}.swiper-pagination-progress{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progress .swiper-pagination-progressbar{background:#007aff;position:absolute;left:0;top:0;width:100%;height:100%;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left top}.swiper-container-rtl .swiper-pagination-progress .swiper-pagination-progressbar{-webkit-transform-origin:right top;-moz-transform-origin:right top;-ms-transform-origin:right top;-o-transform-origin:right top;transform-origin:right top}.swiper-container-horizontal>.swiper-pagination-progress{width:100%;height:4px;left:0;top:0}.swiper-container-vertical>.swiper-pagination-progress{width:4px;height:100%;left:0;top:0}.swiper-pagination-progress.swiper-pagination-white{background:rgba(255,255,255,.5)}.swiper-pagination-progress.swiper-pagination-white .swiper-pagination-progressbar{background:#fff}.swiper-pagination-progress.swiper-pagination-black .swiper-pagination-progressbar{background:#000}.swiper-container-3d{-webkit-perspective:1200px;-moz-perspective:1200px;-o-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(right,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-moz-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:-o-linear-gradient(top,rgba(0,0,0,.5),rgba(0,0,0,0));background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-container-coverflow .swiper-wrapper,.swiper-container-flip .swiper-wrapper{-ms-perspective:1200px}.swiper-container-cube,.swiper-container-flip{overflow:visible}.swiper-container-cube .swiper-slide,.swiper-container-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-container-cube .swiper-slide .swiper-slide,.swiper-container-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-active .swiper-slide-active,.swiper-container-flip .swiper-slide-active,.swiper-container-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top,.swiper-container-flip .swiper-slide-shadow-bottom,.swiper-container-flip .swiper-slide-shadow-left,.swiper-container-flip .swiper-slide-shadow-right,.swiper-container-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-slide{visibility:hidden;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;width:100%;height:100%}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide{pointer-events:none;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;transition-property:opacity}.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-zoom-container{width:100%;height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-pack:center;-moz-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-align:center;-moz-box-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-moz-transform-origin:50%;transform-origin:50%;-webkit-animation:swiper-preloader-spin 1s steps(12,end) infinite;-moz-animation:swiper-preloader-spin 1s steps(12,end) infinite;animation:swiper-preloader-spin 1s steps(12,end) infinite}.swiper-lazy-preloader:after{display:block;content:"";width:100%;height:100%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:50%;-webkit-background-size:100%;background-size:100%;background-repeat:no-repeat}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}@-webkit-keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg)}}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/spree_theme/app/controllers/spree/admin/blogs_controller.rb b/spree_theme/app/controllers/spree/admin/blogs_controller.rb new file mode 100644 index 00000000..ad371eb0 --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/blogs_controller.rb @@ -0,0 +1,20 @@ +class Spree::Admin::BlogsController < Spree::Admin::ResourceController + + def show + redirect_to admin_blogs_path + end + +private + + def find_resource + Spree::Blog.find_by_permalink!(params[:id]) + end + + def collection + params[:search] ||= {} + params[:search][:meta_sort] ||= "name.asc" + @search = Spree::Blog.search(params[:q]) + @collection = @search.result.page(params[:page]).per(Spree::Config[:admin_orders_per_page]) + end + +end diff --git a/spree_comments/app/controllers/spree/admin/comment_types_controller.rb b/spree_theme/app/controllers/spree/admin/comment_types_controller.rb similarity index 100% rename from spree_comments/app/controllers/spree/admin/comment_types_controller.rb rename to spree_theme/app/controllers/spree/admin/comment_types_controller.rb diff --git a/spree_comments/app/controllers/spree/admin/comments_controller.rb b/spree_theme/app/controllers/spree/admin/comments_controller.rb similarity index 100% rename from spree_comments/app/controllers/spree/admin/comments_controller.rb rename to spree_theme/app/controllers/spree/admin/comments_controller.rb diff --git a/spree_theme/app/controllers/spree/admin/disqus_settings_controller.rb b/spree_theme/app/controllers/spree/admin/disqus_settings_controller.rb new file mode 100644 index 00000000..6cfa3456 --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/disqus_settings_controller.rb @@ -0,0 +1,24 @@ +class Spree::Admin::DisqusSettingsController < Spree::Admin::BaseController + + def show + @preferences = ['disqus_shortname'] + @config = Spree::BlogConfiguration.new + end + + def edit + @preferences = ['disqus_shortname'] + @config = Spree::BlogConfiguration.new + end + + def update + config = Spree::BlogConfiguration.new + + params.each do |name, value| + next unless config.has_preference? name + config[name] = value + end + + redirect_to admin_disqus_settings_path + end + +end diff --git a/spree_theme/app/controllers/spree/admin/general_settings_controller_decorator.rb b/spree_theme/app/controllers/spree/admin/general_settings_controller_decorator.rb new file mode 100644 index 00000000..cd02d25b --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/general_settings_controller_decorator.rb @@ -0,0 +1,28 @@ + Spree::Admin::GeneralSettingsController.class_eval do + #override original, update site model + def edit + @preferences_security = [:allow_ssl_in_production, + :allow_ssl_in_staging, :allow_ssl_in_development_and_test, + :check_for_spree_alerts] + @preferences_currency = [:display_currency, :hide_cents] + end + + + def update + #params.each do |name, value| + # next unless Spree::Config.has_preference? name + # Spree::Config[name] = value + #end + current_store.update_attributes store_params + + current_store.site.update_attributes site_params + + flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:general_settings)) + redirect_to edit_admin_general_settings_path + end + + def site_params + params.require(:site).permit(Spree::PermittedAttributes.site_attributes) + end + + end diff --git a/spree_theme/app/controllers/spree/admin/images_controller_decorator.rb b/spree_theme/app/controllers/spree/admin/images_controller_decorator.rb new file mode 100644 index 00000000..e65ebeee --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/images_controller_decorator.rb @@ -0,0 +1,24 @@ +Spree::Admin::ImagesController.class_eval do + #create.before :update_paperclip_settings + #update.before :update_paperclip_settings + + private + # we do not support this feature now. + # copy from image_settings_controller + # by default Spree::Image.attachment_definitions is set before site initialize, we need reset it after get site. + #def update_paperclip_settings + # if Spree::Config[:use_s3] + # s3_creds = { :access_key_id => Spree::Config[:s3_access_key], :secret_access_key => Spree::Config[:s3_secret], :bucket => Spree::Config[:s3_bucket] } + # Spree::Image.attachment_definitions[:attachment][:storage] = :s3 + # Spree::Image.attachment_definitions[:attachment][:s3_credentials] = s3_creds + # Spree::Image.attachment_definitions[:attachment][:s3_headers] = ActiveSupport::JSON.decode(Spree::Config[:s3_headers]) + # Spree::Image.attachment_definitions[:attachment][:bucket] = Spree::Config[:s3_bucket] + # else + # Spree::Image.attachment_definitions[:attachment].delete :storage + # end + # Spree::Image.attachment_definitions[:attachment][:styles] = ActiveSupport::JSON.decode(Spree::Config[:attachment_styles]).symbolize_keys! + # Spree::Image.attachment_definitions[:attachment][:path] = Spree::Config[:attachment_path] + # Spree::Image.attachment_definitions[:attachment][:default_url] = Spree::Config[:attachment_default_url] + # Spree::Image.attachment_definitions[:attachment][:default_style] = Spree::Config[:attachment_default_style] + #end +end diff --git a/spree_comments/app/controllers/spree/admin/orders_controller_decorator.rb b/spree_theme/app/controllers/spree/admin/orders_controller_decorator.rb similarity index 100% rename from spree_comments/app/controllers/spree/admin/orders_controller_decorator.rb rename to spree_theme/app/controllers/spree/admin/orders_controller_decorator.rb diff --git a/spree_theme/app/controllers/spree/admin/page_layout_controller.rb b/spree_theme/app/controllers/spree/admin/page_layout_controller.rb deleted file mode 100644 index aebd2294..00000000 --- a/spree_theme/app/controllers/spree/admin/page_layout_controller.rb +++ /dev/null @@ -1,97 +0,0 @@ -module Spree - module Admin - class PageLayoutController< ResourceController - respond_to :html, :json, :js #update title required json - - def update_resource - @template_theme = TemplateTheme.find( params[:template_theme_id]) - assigned_resource_ids = params[:assigned_resource_ids] - #assigned_resource_ids could be [''] - assigned_resource_ids.select!(&:present?) if assigned_resource_ids.kind_of? Array - section_piece_with_resources = @page_layout.section_pieces.with_resources.first - if assigned_resource_ids.present? - if section_piece_with_resources.present? - section_piece_with_resources.wrapped_resources.each_with_index{|wrapped_resource,index| - resource_id = assigned_resource_ids[index] - resource = wrapped_resource.resource_class.find resource_id - @template_theme.assign_resource(resource, @page_layout, index) - } - else# assigned taxon - assigned_resource_ids = assigned_resource_ids.split(',') if assigned_resource_ids.kind_of? String - assigned_resource_ids.each_with_index{|resource_id, index| - resource = SpreeTheme.taxon_class.find resource_id - @template_theme.assign_resource(resource, @page_layout, index) - } - end - else #unassign resource - if section_piece_with_resources.present? - section_piece_with_resources.wrapped_resources.each_with_index{|wrapped_resource,index| - @template_theme.unassign_resource(wrapped_resource.resource_class , @page_layout, index) - } - else - @template_theme.unassign_resource(SpreeTheme.taxon_class, @page_layout) - end - end - @assigned_resources = @template_theme.assigned_resources_by_page_layout( @page_layout ) - end - - #update section_context - def update_context - section_contexts = params[:section_contexts] - specific_taxon_ids = params[:specific_taxon_ids] - if section_contexts.present? - @page_layout.update_section_context(section_contexts ) - else - @page_layout.update_section_context( PageLayout::ContextEnum.either ) - end - @template_theme = TemplateTheme.find( params[:template_theme_id]) - if specific_taxon_ids.present? - @specific_taxons = Spree::SpecificTaxon.find specific_taxon_ids.split(',') - @specific_taxons.each_with_index{|resource, index| - @template_theme.assign_resource(resource, @page_layout, index) - } - else - @specific_taxons = [] - @template_theme.assigned_resources(Spree::SpecificTaxon,@page_layout).each_with_index{|assigned_resource,index| - if assigned_resource.present? - @template_theme.unassign_resource(Spree::SpecificTaxon, @page_layout, index) - end - } - end - - end - - #update datasource - def update_data_source - section_data_source = params[:section_data_source] - if section_data_source.present? - @page_layout.update_data_source(section_data_source.to_sym ) - else - @page_layout.update_data_source( PageLayout::DataSourceEmpty ) - end - end - - def update_other - view_as_clickable = params[:view_as_clickable] - @page_layout.update_content_param( {:view_as_clickable=>view_as_clickable} ) - end - - def config_resource - @template_theme = TemplateTheme.find( params[:template_theme_id] ) - end - - def config_context - @template_theme = TemplateTheme.find( params[:template_theme_id] ) - end - - def config_data_source - @template_theme = TemplateTheme.find( params[:template_theme_id] ) - end - - def config_other - @template_theme = TemplateTheme.find( params[:template_theme_id] ) - end - - end - end -end \ No newline at end of file diff --git a/spree_theme/app/controllers/spree/admin/page_layouts_controller.rb b/spree_theme/app/controllers/spree/admin/page_layouts_controller.rb new file mode 100644 index 00000000..2fb68d3e --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/page_layouts_controller.rb @@ -0,0 +1,106 @@ +module Spree + module Admin + class PageLayoutsController< ResourceController + respond_to :html, :json, :js #update title required json + + def update_resource + @template_theme = TemplateTheme.find( params[:template_theme_id]) + assigned_resource_ids = params[:assigned_resource_ids] + #assigned_resource_ids could be [''] + assigned_resource_ids.select!(&:present?) if assigned_resource_ids.kind_of? Array + section_piece_resources = @page_layout.section_piece_resources + # now we are use related products in taxon, fix it when using relation_type + data_source_based_resource = nil #@page_layout.data_source_based_resources + + if assigned_resource_ids.present? + if section_piece_resources.present? + section_piece_resources.each_with_index{|section_resource,index| + resource_id = assigned_resource_ids[index] + resource = section_resource.resource_class.find resource_id + @template_theme.assign_resource(resource, @page_layout, index) + } + elsif data_source_based_resource.present? + resource_id = assigned_resource_ids.first + resource = data_source_based_resource.resource_class.find resource_id + @template_theme.assign_resource(resource, @page_layout) + else# assigned taxon + assigned_resource_ids = assigned_resource_ids.split(',') if assigned_resource_ids.kind_of? String + assigned_resource_ids.each_with_index{|resource_id, index| + resource = SpreeTheme.taxon_class.find resource_id + @template_theme.assign_resource(resource, @page_layout, index) + } + end + else #unassign resource + if section_piece_resources.present? + section_piece_resources.each_with_index{|section_resource,index| + @template_theme.unassign_resource(section_resource.resource_class , @page_layout, index) + } + elsif data_source_based_resource.present? + @template_theme.unassign_resource(data_source_based_resource.resource_class, @page_layout) + else + @template_theme.unassign_resource(SpreeTheme.taxon_class, @page_layout) + end + end + @assigned_resources = @template_theme.assigned_resources_by_page_layout( @page_layout ) + end + + #update section_context + def update_context + section_contexts = params[:section_contexts] + specific_taxon_ids = params[:specific_taxon_ids] + if section_contexts.present? + @page_layout.update_section_context(section_contexts ) + else + @page_layout.update_section_context( PageLayout::ContextEnum.either ) + end + @template_theme = TemplateTheme.find( params[:template_theme_id]) + if specific_taxon_ids.present? + @specific_taxons = Spree::SpecificTaxon.find specific_taxon_ids.split(',') + @specific_taxons.each_with_index{|resource, index| + @template_theme.assign_resource(resource, @page_layout, index) + } + else + @specific_taxons = [] + @template_theme.assigned_resources(Spree::SpecificTaxon,@page_layout).each_with_index{|assigned_resource,index| + if assigned_resource.present? + @template_theme.unassign_resource(Spree::SpecificTaxon, @page_layout, index) + end + } + end + + end + + #update datasource + def update_data_source + section_data_source = params[:section_data_source] + if section_data_source.blank? || section_data_source == 'none' + @page_layout.update_data_source( PageLayout::DataSourceNone ) + else + @page_layout.update_data_source(section_data_source.to_sym ) + end + end + + def update_other + view_as_clickable = params[:view_as_clickable] + @page_layout.update_content_param( {:view_as_clickable=>view_as_clickable} ) + end + + def config_resource + @template_theme = TemplateTheme.find( params[:template_theme_id] ) + end + + def config_context + @template_theme = TemplateTheme.find( params[:template_theme_id] ) + end + + def config_data_source + @template_theme = TemplateTheme.find( params[:template_theme_id] ) + end + + def config_other + @template_theme = TemplateTheme.find( params[:template_theme_id] ) + end + + end + end +end diff --git a/spree_theme/app/controllers/spree/admin/post_categories_controller.rb b/spree_theme/app/controllers/spree/admin/post_categories_controller.rb new file mode 100644 index 00000000..e37c38f4 --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/post_categories_controller.rb @@ -0,0 +1,16 @@ +class Spree::Admin::PostCategoriesController < Spree::Admin::ResourceController + + before_action :load_data + + private + + def location_after_save + admin_post_categories_url(@post) + end + + def load_data + @post = Spree::Post.find_by_path(params[:post_id]) + @post_categories = Spree::PostCategory.all + end + +end diff --git a/spree_theme/app/controllers/spree/admin/post_files_controller.rb b/spree_theme/app/controllers/spree/admin/post_files_controller.rb new file mode 100644 index 00000000..17348763 --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/post_files_controller.rb @@ -0,0 +1,27 @@ +class Spree::Admin::PostFilesController < Spree::Admin::ResourceController + + before_action :load_data + + create.before :set_viewable + update.before :set_viewable + destroy.before :destroy_before + + private + + def location_after_save + admin_post_files_url(@post) + end + + def load_data + @post = Spree::Post.friendly.find(params[:post_id]) + end + + def set_viewable + @post_file.viewable = @post + end + + def destroy_before + @viewable = @post_file.viewable + end + +end diff --git a/spree_theme/app/controllers/spree/admin/post_products_controller.rb b/spree_theme/app/controllers/spree/admin/post_products_controller.rb new file mode 100644 index 00000000..0a39db8c --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/post_products_controller.rb @@ -0,0 +1,25 @@ +class Spree::Admin::PostProductsController < Spree::Admin::BaseController + + before_action :load_data + + def create + position = @post.products.count + @product = Spree::Variant.find(params[:variant_id]).product + Spree::PostProduct.create(:post_id => @post.id, :product_id => @product.id, :position => position) + render :partial => "spree/admin/post_products/related_products_table", :locals => { :post => @post }, :layout => false + end + + def destroy + @related = Spree::PostProduct.find(params[:id]) + if @related.destroy + render_js_for_destroy + end + end + + private + + def load_data + @post = Spree::Post.find_by_path(params[:post_id]) + end + +end diff --git a/spree_theme/app/controllers/spree/admin/posts_controller.rb b/spree_theme/app/controllers/spree/admin/posts_controller.rb new file mode 100644 index 00000000..8b21869d --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/posts_controller.rb @@ -0,0 +1,41 @@ + +class Spree::Admin::PostsController < Spree::Admin::ResourceController + + update.before :set_category_ids + + def index + session[:return_to] = request.url + respond_with(@collection) + end + + def new + @post = Spree::Post.new + @post.posted_at ||= Time.now + end + +private + + def set_category_ids + if params[:post] && params[:post][:taxon_ids].present? + params[:post][:taxon_ids] = params[:post][:taxon_ids].split(',') + end + end + + def location_after_save + #in this way keep current page of posts after save. + admin_posts_url + end + + def find_resource + Spree::Post.friendly.find(params[:id]) + end + + def collection + return @collection if @collection.present? + params[:search] ||= {} + params[:search][:meta_sort] ||= "posted_at.desc" + @search = Spree::Post.search(params[:q]) + @collection = @search.result.page(params[:page]).per( params[:per_page] || Spree::Config[:admin_orders_per_page]) + end + +end diff --git a/spree_theme/app/controllers/spree/admin/products_controller_decorator.rb b/spree_theme/app/controllers/spree/admin/products_controller_decorator.rb new file mode 100644 index 00000000..df20cc23 --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/products_controller_decorator.rb @@ -0,0 +1,10 @@ +module Spree + module Admin + ProductsController.class_eval do + def related + load_resource + @relation_types = Spree::Product.relation_types + end + end + end +end diff --git a/spree_theme/app/controllers/spree/admin/products_controller_decorator2.rb b/spree_theme/app/controllers/spree/admin/products_controller_decorator2.rb new file mode 100644 index 00000000..d1921d8a --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/products_controller_decorator2.rb @@ -0,0 +1,18 @@ + Spree::Admin::ProductsController.class_eval do + update.before :prepare_more_params + create.before :prepare_more_params + around_action :only=>[:create,:edit, :update, :destroy] do |controller, action_block| + Spree::MultiSiteSystem.with_context_free_taxon{ + action_block.call + } + end + + + private + def prepare_more_params + if params[:product][:global_taxon_ids].present? + params[:product][:global_taxon_ids] = params[:product][:global_taxon_ids].split(',') + end + end + + end diff --git a/spree_theme/app/controllers/spree/admin/relation_types_controller.rb b/spree_theme/app/controllers/spree/admin/relation_types_controller.rb new file mode 100644 index 00000000..f4bee4d0 --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/relation_types_controller.rb @@ -0,0 +1,6 @@ +module Spree + module Admin + class RelationTypesController < ResourceController + end + end +end diff --git a/spree_theme/app/controllers/spree/admin/relations_controller.rb b/spree_theme/app/controllers/spree/admin/relations_controller.rb new file mode 100644 index 00000000..af7b8e4d --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/relations_controller.rb @@ -0,0 +1,80 @@ +module Spree + module Admin + class RelationsController < BaseController + before_action :load_data, only: [:create, :destroy] + + respond_to :js, :html + + def create + @relation = Relation.new(relation_params) + @relation.relatable = @product + @relation.related_to = Spree::Variant.find(relation_params[:related_to_id]).product + @relation.save + + respond_with(@relation) + end + + def update + @relation = Relation.find(params[:id]) + @relation.update_attribute :discount_amount, relation_params[:discount_amount] || 0 + + redirect_to(related_admin_product_url(@relation.relatable)) + end + + def update_positions + params[:positions].each do |id, index| + model_class.where(id: id).update_all(position: index) + end + + respond_to do |format| + format.js { render text: 'Ok' } + end + end + + def destroy + @relation = Relation.find(params[:id]) + if @relation.destroy + flash[:success] = flash_message_for(@relation, :successfully_removed) + + respond_with(@relation) do |format| + format.html { redirect_to location_after_destroy } + format.js { render :partial => "spree/admin/shared/destroy" } + end + + else + + respond_with(@relation) do |format| + format.html { redirect_to location_after_destroy } + end + end + end + + private + + def relation_params + params.require(:relation).permit(*permitted_attributes) + end + + def permitted_attributes + [ + :related_to, + :relation_type, + :relatable, + :related_to_id, + :discount_amount, + :relation_type_id, + :related_to_type, + :position + ] + end + + def load_data + @product = Spree::Product.friendly.find(params[:product_id]) + end + + def model_class + Spree::Relation + end + end + end +end diff --git a/spree_theme/app/controllers/spree/admin/sites_controller.rb b/spree_theme/app/controllers/spree/admin/sites_controller.rb new file mode 100644 index 00000000..e4dbdbda --- /dev/null +++ b/spree_theme/app/controllers/spree/admin/sites_controller.rb @@ -0,0 +1,43 @@ +module Spree + module Admin + class SitesController< Spree::Admin::ResourceController + before_action :ensure_access_allowed + #resource_controller + self.create.after( :create_after ) + + def index + @sites = Site.ransack(params[:q]).result.page(params[:page]).per(params[:per_page]) + end + + def new + @user = @site.users.build + super + end + + def create + @user = Spree.user_class.new(params[:user]) + @site.users << @user + super + end + + def create_after + @site.users.first.roles << Role.find_by_name("admin") + # should not add @site.name as suffix of role.name, User.admin require :name="admin" + if @site.has_sample? + @site.load_sample + #@site.update_attributes!(:loading_sample=>true) + # add job to load sample + #Delayed::Job.enqueue SampleSeedJob.new( @site ) + end + end + + private + def ensure_access_allowed + unless Spree::Store.current.god? + raise CanCan::AccessDenied.new("Not authorized!", :access, Site) + #redirect_to Spree::Site.current.admin_url + end + end + end + end +end diff --git a/spree_theme/app/controllers/spree/admin/template_files_controller.rb b/spree_theme/app/controllers/spree/admin/template_files_controller.rb index c6a2a585..ae7de44a 100644 --- a/spree_theme/app/controllers/spree/admin/template_files_controller.rb +++ b/spree_theme/app/controllers/spree/admin/template_files_controller.rb @@ -1,11 +1,18 @@ module Spree module Admin class TemplateFilesController < Spree::Admin::ResourceController - - + + def collection - model_class.where( ["theme_id in (?)", Spree::Site.current.template_theme_ids] ).includes(:template_theme) + return @collection if @collection.present? + # params[:q] can be blank upon pagination + params[:q] = {} if params[:q].blank? + + @collection = model_class.where( ["theme_id in (?)", Spree::Store.current.template_theme_ids] ).includes(:template_theme) + @search = @collection.ransack(params[:q]) + + @search.result.page(params[:page]).per(Spree::Config[:admin_orders_per_page]).order('theme_id') end - end + end end -end +end diff --git a/spree_theme/app/controllers/spree/admin/template_themes_controller.rb b/spree_theme/app/controllers/spree/admin/template_themes_controller.rb index c9dad796..05a5c3b0 100644 --- a/spree_theme/app/controllers/spree/admin/template_themes_controller.rb +++ b/spree_theme/app/controllers/spree/admin/template_themes_controller.rb @@ -1,13 +1,13 @@ module Spree module Admin class TemplateThemesController < ResourceController #Spree::Admin::BaseController - #before_filter :load_theme, :only => [:apply, :import, :edit, :update, :release, :copy_theme] + #before_action :load_theme, :only => [:apply, :import, :edit, :update, :release, :copy_theme] respond_to :html, :json, :js #update title required json def index native end - + #list themes def native @themes = TemplateTheme.native @@ -19,106 +19,76 @@ def foreign @themes = @themes.select{|theme| theme.template_releases.present?} end - # description - import theme with taxonomy into current site - # in this way, it is simpler for user, click 'buy', done. - def import - imported_theme = @template_theme.import_with_resource( ) - if imported_theme.present? - if imported_theme.site.template_themes.count == 1 - imported_theme.site.apply_theme imported_theme - end - flash[:success] = Spree.t('notice_messages.theme_imported') - else - flash[:success] = Spree.t('notice_messages.theme_not_imported') - end - - respond_to do |format| - format.html { redirect_to(foreign_admin_template_themes_url) } - end - end - + #apply this theme to site def apply - SpreeTheme.site_class.current.apply_theme @template_theme - respond_with(@template_theme) + Spree::Store.current.apply_theme @template_theme + respond_with(@template_theme) end begin 'design shop' - - def prepare_import - end - + + #def prepare_import + #end + #copy selected theme to new theme def copy @original_theme = TemplateTheme.find(params[:id]) #copy theme, layout, param_value - @new_theme = @original_theme.copy_to_new - + @new_theme = @original_theme.duplicate + respond_to do |format| format.html { redirect_to(admin_template_themes_url) } - end + end end def release - #create template_release before call lg.release - if @template_theme.has_native_layout? + #create template_release before call lg.release + if @template_theme.has_native_layout? @template_theme.release end - @themes = TemplateTheme.native - render :action=>'native' - end - - - def create - invoke_callbacks(:create, :before) - @object.attributes = params[object_name] - if @object.save - invoke_callbacks(:create, :after) - flash[:success] = flash_message_for(@object, :successfully_created) - respond_with(@object) do |format| - format.html { redirect_to location_after_save } - format.js { render :layout => false } - end - else - invoke_callbacks(:create, :fails) - respond_with(@object) + if @template_theme.mobile.present? + @template_theme.mobile.release end + flash[:success] = Spree.t('notice_messages.theme_released') + @themes = TemplateTheme.native + render :action=>'native' end end - - - + + + protected def collection_actions [:index, :native, :foreign] end - - # description - it is not using + + # description - it is not using # params # assigned_resource_ids: required, a hash, key is page_layout_id - # ex. {"30"=>[""], "3"=>[""]} - # template_files: required, a array of template_file attributes + # ex. {"30"=>[""], "3"=>[""]} + # template_files: required, a array of template_file attributes #def import # #FIXME support config template when import theme - # #template_files = params[:template_files].collect{|file| TemplateFile.new( file) }.select{|file| file.attachment.present? } + # #template_files = params[:template_files].collect{|file| TemplateFile.new( file) }.select{|file| file.attachment.present? } # #assigned_resource_ids = Hash[ params[:assigned_resource_ids].collect{|key,val| # # [key.to_i,{ @template_theme.get_resource_class_key(SpreeTheme.taxon_class) => val.select(&:present?).collect(&:to_i)}] # #}] # #new_theme_attributes = { :assigned_resource_ids=>assigned_resource_ids, # # :template_files => template_files - # #} + # #} # imported_theme = @template_theme.import( new_theme_attributes = {} ) # if imported_theme.present? # flash[:success] = Spree.t('notice_messages.theme_imported') # else # flash[:success] = Spree.t('notice_messages.theme_not_imported') - # end + # end # respond_to do |format| # format.html { redirect_to(foreign_admin_template_themes_url) } - # end + # end #end - + end end end diff --git a/spree_theme/app/controllers/spree/api/v1/auth_controller.rb b/spree_theme/app/controllers/spree/api/v1/auth_controller.rb new file mode 100644 index 00000000..17458ec3 --- /dev/null +++ b/spree_theme/app/controllers/spree/api/v1/auth_controller.rb @@ -0,0 +1,100 @@ +module Spree + module Api + module V1 + class AuthController < Spree::Api::BaseController + skip_before_action :authenticate_user + skip_before_action :load_user + skip_before_action :load_user_roles + skip_before_action :authorize_for_order + + def sign_up + @user = Spree.user_class.new(user_params) + @user.generate_spree_api_key! unless @user.spree_api_key + if @user.save + respond_with(@user, status: 201, default_template: :sign_in) + else + invalid_resource!(@user) + end + end + #curl -X POST -d 'user[email]=xxx@getstore.cn&user[password]=xxxxxx' http://localhost:3000/api/v1/auth/sign_in + def sign_in + if @user = Spree.user_class.find_for_database_authentication(login: user_params[:email]) + if @user.valid_password? user_params[:password] + + @user.generate_spree_api_key! unless @user.spree_api_key + # render 'spree/api/v1/auth/token' + respond_with(@user) + else + # Wrong Password + render json: { + error: "Email or password invalid.", + errors: { + password: ["incorrect"] + } + }, status: 422 + end + else + # User Not Found + render json: { + error: "Email or password invalid.", + errors: { + email: ["not found"] + } + }, status: 422 + end + end + + # def facebook + # if params[:facebook_access_token] + # begin + # facebook_access_token = params[:facebook_access_token] + # graph = Koala::Facebook::API.new(facebook_access_token) + # profile = graph.get_object("me", fields:[:id, :name, :email]) + # facebook_uid = profile["id"] + # api_user_authentication = Spree::ApiUserAuthentication.where(uid: facebook_uid, provider: 'facebook').first + # if !api_user_authentication + # email = profile["email"] + # if email.present? && Spree.user_class.where(email: email).exists? + # # email exists + # render json: { + # error: "Email already exists.", + # errors: { + # email: ["already exists"] + # } + # }, status: 422 + # else + # if email.blank? then + # # temp hack + # email = "#{profile['id']}@nonexistentfbuseremail.com" + # end + # @user = Spree.user_class.create!( + # email: email, + # password: Devise.friendly_token.first(8) + # ) + # @user.api_user_authentications.create!(provider: 'facebook', uid: facebook_uid) + # end + # else + # @user = Spree.user_class.find(api_user_authentication.user_id) + # end + # @user.generate_spree_api_key! unless @user.spree_api_key + # respond_with(@user, default_template: :sign_in) + # rescue Koala::Facebook::AuthenticationError => e + # # email exists + # render json: { + # error: "Facebook access token invalid.", + # errors: { + # facebook_access_token: ["Invalid"] + # } + # }, status: 422 + # end + # end + # end + def user_params + params.require(:user).permit(permitted_user_attributes | + [bill_address_attributes: permitted_address_attributes, + ship_address_attributes: permitted_address_attributes]) + end + end + end + end +end diff --git a/spree_theme/app/controllers/spree/api/v1/page_layouts_controller.rb b/spree_theme/app/controllers/spree/api/v1/page_layouts_controller.rb new file mode 100644 index 00000000..0981cab8 --- /dev/null +++ b/spree_theme/app/controllers/spree/api/v1/page_layouts_controller.rb @@ -0,0 +1,49 @@ +module Spree + module Api + module V1 + class PageLayoutsController < Spree::Api::BaseController + #initializers/rabl_extra.rb is not working right. + #get sight from api/controller_setup + + def show + @page_layout = page_layout + respond_with(@page_layout) + end + + def jstree + show + end + + def update + authorize! :update, page_layout + if page_layout.update_attributes(page_layout_params) + respond_with(page_layout, status: 200, default_template: :show) + else + invalid_resource!(page_layout) + end + end + + private + + def template_theme + if params[:template_theme_id].present? + @template_theme ||= Spree::TemplateTheme.accessible_by(current_ability, :read).find(params[:template_theme_id]) + end + end + + def page_layout + @page_layout ||= template_theme.page_layouts.accessible_by(current_ability, :read).find(params[:id]) + end + + def page_layout_params + if params[:page_layout] && !params[:page_layout].empty? + + params.require(:page_layout).permit(permitted_page_layout_attributes) + else + {} + end + end + end + end + end +end diff --git a/spree_theme/app/controllers/spree/api/v1/relations_controller.rb b/spree_theme/app/controllers/spree/api/v1/relations_controller.rb new file mode 100644 index 00000000..29c003bb --- /dev/null +++ b/spree_theme/app/controllers/spree/api/v1/relations_controller.rb @@ -0,0 +1,81 @@ +module Spree + module Api + module V1 + class RelationsController < Spree::Api::BaseController + before_action :load_data, only: [:create, :destroy] + before_action :find_relation, only: [:update, :destroy] + + def create + authorize! :create, Relation + @relation = @product.relations.new(relation_params) + @relation.relatable = @product + @relation.related_to = Spree::Variant.find(relation_params[:related_to_id]).product + if @relation.save + respond_with(@relation, status: 201, default_template: :show) + else + invalid_resource!(@relation) + end + end + + def update + authorize! :update, Relation + if @relation.update_attributes(relation_params) + respond_with(@relation, status: 200, default_template: :show) + else + invalid_resource!(@relation) + end + end + + def update_positions + authorize! :update, Relation + params[:positions].each do |id, index| + model_class.where(id: id).update_all(position: index) + end + + respond_to do |format| + format.json { render nothing: true, status: 200 } + format.js { render text: 'Ok' } + end + end + + def destroy + authorize! :destroy, Relation + @relation.destroy + respond_with(@relation, status: 204) + end + + private + + def relation_params + params.require(:relation).permit(*permitted_attributes) + end + + def permitted_attributes + [ + :related_to, + :relation_type, + :relatable, + :related_to_id, + :discount_amount, + :relation_type_id, + :related_to_type, + :position + ] + end + + def load_data + @product = Spree::Product.friendly.find(params[:product_id]) + end + + def find_relation + @relation = Relation.find(params[:id]) + end + + def model_class + Spree::Relation + end + end + + end + end +end diff --git a/spree_theme/app/controllers/spree/api/v1/template_themes_controller.rb b/spree_theme/app/controllers/spree/api/v1/template_themes_controller.rb new file mode 100644 index 00000000..f14d50ad --- /dev/null +++ b/spree_theme/app/controllers/spree/api/v1/template_themes_controller.rb @@ -0,0 +1,21 @@ +module Spree + module Api + module V1 + class TemplateThemesController < Spree::Api::BaseController + + def show + respond_with(template_theme) + end + + # Because JSTree wants parameters in a *slightly* different format + def jstree + show + end + + def template_theme + @template_theme ||= Spree::TemplateTheme.accessible_by(current_ability, :read).find(params[:id]) + end + end + end + end +end diff --git a/spree_theme/app/controllers/spree/api/v1/variants_controller_decorator.rb b/spree_theme/app/controllers/spree/api/v1/variants_controller_decorator.rb new file mode 100644 index 00000000..16134ef8 --- /dev/null +++ b/spree_theme/app/controllers/spree/api/v1/variants_controller_decorator.rb @@ -0,0 +1,8 @@ +Spree::Api::V1::VariantsController.class_eval do + def index + # since variant have no site_id, we should join product here + @variants = scope.joins(:product).includes({ option_values: :option_type }, :product, :default_price, :images, { stock_items: :stock_location }) + .ransack(params[:q]).result.page(params[:page]).per(params[:per_page]) + respond_with(@variants) + end +end diff --git a/spree_theme/app/controllers/spree/api/v1/wechats_controller.rb b/spree_theme/app/controllers/spree/api/v1/wechats_controller.rb new file mode 100644 index 00000000..145f77c0 --- /dev/null +++ b/spree_theme/app/controllers/spree/api/v1/wechats_controller.rb @@ -0,0 +1,9 @@ +class Spree::Api::V1::WechatsController < Spree::Api::BaseController + skip_before_action :authenticate_user + # For details on the DSL available within this file, see https://github.com/Eric-Guo/wechat#wechat_responder---rails-responder-controller-dsl + wechat_responder + + on :text do |request, content| + request.reply.text "echo: #{content}" # Just echo + end +end diff --git a/spree_theme/app/controllers/spree/comments_controller.rb b/spree_theme/app/controllers/spree/comments_controller.rb index 11244424..836e1f6a 100644 --- a/spree_theme/app/controllers/spree/comments_controller.rb +++ b/spree_theme/app/controllers/spree/comments_controller.rb @@ -1,15 +1,15 @@ module Spree class CommentsController < StoreController - before_filter :initialize_comment, :only => [:create, :new_to_site] - + before_action :initialize_comment, :only => [:create, :new_to_site] + def new_to_site - @comment.commentable = Spree::Site.current + @comment.commentable = Spree::Store.current end - + def create - @comment.attributes = object_params + @comment.attributes = permitted_resource_params if @comment.save - flash[:success] = Spree.t(:comment_successfully_created, :scope=>@comment.comment_scope) + flash[:success] = Spree.t(:comment_successfully_created) respond_with(@comment) do |format| format.html { redirect_to :back } format.js { render :layout => false } @@ -18,28 +18,17 @@ def create respond_with(@comment) end end - + private - + def initialize_comment @comment = Comment.new( ) @comment.user = try_spree_current_user end - - # comment{commentable_id, commentable_type, user_email} - def object_params - comment_params = params[:comment] - #user_email = comment_params.delete( :user_email ) - #if user_email - # user = User.find_or_initialize_by_email( user_email ) - # if user.persited? - # comment_params[:user_id] = user.id - # else - # comment_params[:user] = user - # end - #end - comment_params - end + + def permitted_resource_params + params.require('comment').permit( permitted_attributes.comment_attributes ) + end end - -end \ No newline at end of file + +end diff --git a/spree_theme/app/controllers/spree/decorators/api_products_controller_decorator.rb b/spree_theme/app/controllers/spree/decorators/api_products_controller_decorator.rb new file mode 100644 index 00000000..e69de29b diff --git a/spree_theme/app/controllers/spree/decorators/api_shipments_controller_decorator.rb b/spree_theme/app/controllers/spree/decorators/api_shipments_controller_decorator.rb new file mode 100644 index 00000000..4c2cd296 --- /dev/null +++ b/spree_theme/app/controllers/spree/decorators/api_shipments_controller_decorator.rb @@ -0,0 +1,6 @@ +Spree::Api::V1::ShipmentsController.class_eval do + def comments + shipment + @comment_types = Spree::CommentType.where(:applies_to => "Shipment") + end +end diff --git a/spree_theme/app/controllers/spree/decorators/api_taxons_controller_decorator.rb b/spree_theme/app/controllers/spree/decorators/api_taxons_controller_decorator.rb index 326d057a..84197a8c 100644 --- a/spree_theme/app/controllers/spree/decorators/api_taxons_controller_decorator.rb +++ b/spree_theme/app/controllers/spree/decorators/api_taxons_controller_decorator.rb @@ -1,14 +1,14 @@ -Spree::Api::TaxonsController.class_eval do - # read global taxon of dalianshops from other site +Spree::Api::V1::TaxonsController.class_eval do + # read global taxon of dalianshops from other site def global - + if params[:ids] - @taxons = Spree::Taxon.accessible_by(current_ability, :read).unscoped.where(:site_id=>Spree::Site.globalsite.id ).where(:id => params[:ids].split(",")) + @taxons = Spree::Taxon.accessible_by(current_ability, :read).unscoped.where(:site_id=>Spree::Store.god.id ).where(:id => params[:ids].split(",")) else - @taxons = Spree::Taxon.accessible_by(current_ability, :read).unscoped.where(:site_id=>Spree::Site.globalsite.id ).order(:taxonomy_id, :lft).ransack(params[:q]).result + @taxons = Spree::Taxon.accessible_by(current_ability, :read).unscoped.where(:site_id=>Spree::Store.god.id ).order(:taxonomy_id, :lft).ransack(params[:q]).result end @taxons = @taxons.page(params[:page]).per(params[:per_page]) respond_with(@taxons, :default_template => :index) - + end -end \ No newline at end of file +end diff --git a/spree_theme/app/controllers/spree/decorators/base_controller_decorator.rb b/spree_theme/app/controllers/spree/decorators/base_controller_decorator.rb index b2517309..eb674029 100644 --- a/spree_theme/app/controllers/spree/decorators/base_controller_decorator.rb +++ b/spree_theme/app/controllers/spree/decorators/base_controller_decorator.rb @@ -1,31 +1,22 @@ #encoding: utf-8 -module Spree - BaseController.class_eval do - #rescue_from CanCan::AccessDenied do |exception| - # return spree_theme_admin_unauthorized - #end - - #def spree_theme_admin_unauthorized - # Rails.logger.debug "yes, it is calling spree_theme_admin_unauthorized" - # if try_spree_current_user - # flash[:error] = Spree.t(:authorization_failure) - # redirect_to '/unauthorized' - # else - # store_location - # url = new_admin_session_path - # redirect_to url - # end - #end - #override spree_core/controller_helper/auth#unauthorized - def unauthorized - url = new_admin_session_path - if try_spree_current_user - flash[:error] = Spree.t(:authorization_failure) - redirect_to new_admin_session_path - else - store_location - redirect_to new_admin_session_path - end - end +Spree::BaseController.class_eval do + prepend_before_action :set_multi_site_scope + def set_multi_site_scope + Spree::MultiSiteSystem.bind end -end \ No newline at end of file +end + +Spree::Api::BaseController.class_eval do + prepend_before_action :set_multi_site_scope + def set_multi_site_scope + Spree::MultiSiteSystem.bind + end +end + +module Spree::Admin + BaseController.class_eval do + rescue_from CanCan::AccessDenied do |exception| + redirect_to admin_login_path + end + end +end diff --git a/spree_theme/app/controllers/spree/decorators/checkout_controller_decorator.rb b/spree_theme/app/controllers/spree/decorators/checkout_controller_decorator.rb index 871f2794..a046dd47 100644 --- a/spree_theme/app/controllers/spree/decorators/checkout_controller_decorator.rb +++ b/spree_theme/app/controllers/spree/decorators/checkout_controller_decorator.rb @@ -1,39 +1,15 @@ #encoding: utf-8 module Spree CheckoutController.class_eval do - # Updates the order and advances to the next state (when possible.) - def update - if @order.update_attributes(object_params) - fire_event('spree.checkout.update') + before_action :associate_terminal - while(@order.next) do - if pay_with_billing_integration? - break - end - end - #since update is override, call it explicitly for alipay - if pay_with_billing_integration? - handle_billing_integration - return - end - - unless @order.completed? - flash[:error] = @order.errors.full_messages.join("\n") - redirect_to checkout_state_path(@order.state) and return - end - - if @order.completed? - session[:order_id] = nil - flash.notice = Spree.t(:order_processed_successfully) - flash[:commerce_tracking] = "nothing special" - redirect_to completion_route - else - redirect_to checkout_state_path(@order.state) - end - else - render :edit + def associate_terminal + @order ||= current_order + if @order + @order.associate_terminal!(current_terminal) if @order.user_terminal != current_terminal end end + private # For payment step, filter order parameters to produce the expected nested # attributes for a single payment and its source, discarding attributes @@ -53,14 +29,6 @@ def object_params end params[:order] end - - def pay_with_billing_integration? - if @order.next_step_complete? - if @order.pending_payments.first.payment_method.kind_of? BillingIntegration - return true - end - end - return false - end + end end diff --git a/spree_theme/app/controllers/spree/decorators/orders_controller_decorator.rb b/spree_theme/app/controllers/spree/decorators/orders_controller_decorator.rb index c086008a..e43c12b7 100644 --- a/spree_theme/app/controllers/spree/decorators/orders_controller_decorator.rb +++ b/spree_theme/app/controllers/spree/decorators/orders_controller_decorator.rb @@ -1,6 +1,7 @@ #encoding: utf-8 module Spree OrdersController.class_eval do - respond_to :html, :js + # action :update, :edit, :show, :populate support ajax + respond_to :html, :js end -end \ No newline at end of file +end diff --git a/spree_theme/app/controllers/spree/decorators/store_controller_decorator.rb b/spree_theme/app/controllers/spree/decorators/store_controller_decorator.rb index 82e4cbb2..2e9a3275 100644 --- a/spree_theme/app/controllers/spree/decorators/store_controller_decorator.rb +++ b/spree_theme/app/controllers/spree/decorators/store_controller_decorator.rb @@ -3,11 +3,18 @@ module Spree StoreController.class_eval do #override spree_front/store_controller#unauthorized def unauthorized - if @template.blank? + if @theme.blank? # unlogged user access /account would trigger unauthorized without initialize_template, initialize_template( root_path ) end render 'spree/shared/unauthorized', :status => 401 - end + end + + def config_locale + # under_construction,unauthorized @theme is nil + return @theme.locale if @theme && @theme.locale.present? + Spree::Frontend::Config[:locale] + end + end end \ No newline at end of file diff --git a/spree_theme/app/controllers/spree/page_layouts_controller.rb b/spree_theme/app/controllers/spree/page_layouts_controller.rb new file mode 100644 index 00000000..832d174f --- /dev/null +++ b/spree_theme/app/controllers/spree/page_layouts_controller.rb @@ -0,0 +1,79 @@ +module Spree + class PageLayoutsController < Spree::StoreController + + def edit + @template_theme = TemplateTheme.find( params[:template_theme_id] ) + @page_layout = PageLayout.find( params[:id] ) + + respond_to do |format| + format.js{ render "application/dialog_for_editor"} + end + + end + + def update + @template_theme = TemplateTheme.find( params[:template_theme_id] ) + @page_layout = PageLayout.find( params[:id] ) + + if @page_layout.update_attributes( permitted_resource_attributes ) + respond_with(@page_layout) do |format| + format.js { render :layout => false } + end + else + respond_with(@page_layout) do |format| + format.js { render layout: false } + end + end + end + + # params + # layout_id: selected page_layout_id + # selected_section_id: selected section_root_id + def update_layout_tree + @theme = TemplateTheme.find(params[:id]) + op = params[:op] + selected_page_layout_id = params[:layout_id] + selected_section_id = params[:selected_section_id] + selected_type = params[:selected_type] + @selected_page_layout = @theme.page_layout.self_and_descendants.find(selected_page_layout_id) + if op=='promote' + @selected_page_layout.promote + elsif op=='demote' + @selected_page_layout.demote + elsif op=='move_left' + @selected_page_layout.move_left + elsif op=='move_right' + @selected_page_layout.move_right + elsif op=='add_child' + section = Spree::Section.roots.find(selected_section_id) + #if selected_type=='Section' + @theme.add_section(section,@selected_page_layout) + #else + # @selected_page_layout.add_layout_tree(selected_id) + #end + #@layout.reload + elsif op=='del_self' + @selected_page_layout.destroy unless @selected_page_layout.root? + @selected_page_layout = @selected_page_layout.parent + #FIXME update param_values in editor + #@layout.reload + end + @theme.page_layout.reload #layout is changed + render :partial=>"layout_tree1" + end + + # user disable a section in the current layout tree + def disable_section + layout_id = params[:layout_id] + layout = PageLayout.find(layout_id) + se = PageEvent::SectionEvent.new("disable_section", layout ) + se.notify + end + + def permitted_resource_attributes + params.require('page_layout').permit( permitted_attributes.page_layout_attributes ) + end + + end + +end \ No newline at end of file diff --git a/spree_theme/app/controllers/spree/sites_controller.rb b/spree_theme/app/controllers/spree/sites_controller.rb new file mode 100644 index 00000000..0e408c35 --- /dev/null +++ b/spree_theme/app/controllers/spree/sites_controller.rb @@ -0,0 +1,78 @@ +module Spree + class SitesController< StoreController + #respond_to :html,:js + + def one_click_trial + @site = Site.new + end + + def new + if params[:template_theme_id].present? + @template_theme = Spree::TemplateTheme.foreign.find params[:template_theme_id] + end + @site = Site.new + @user = @site.users.build + @store = @site.stores.build + end + + # called from www.tld home page + def quick_lunch + + @site = create_site( permitted_resource_params ) + if @site.persisted? + redirect_to @site.admin_url + else + redirect_to root_path() + end + end + + def show + @site = Site.find(params[:id]) + render :after_new + end + + def create + @site = create_site( permitted_resource_params ) + if @site.persisted? + flash[:success] = Spree.t(:site_successfully_opened, :site_name => @site.name) + #redirect_to @site.admin_url, format: 'js', status: 303 + respond_with(@site) do |format| + format.html { redirect_to @site.admin_url } + format.js { render :js => "window.location = '#{@site.admin_url}'" } + end + else + respond_with(@site) do |format| + format.js { render :action => 'new'} + end + end + end + + # options + def create_site( permitted_site_params) + site = Site.new(permitted_site_params) + if site.save + # should not add @site.name as suffix of role.name, User.admin require :name="admin" + if site.has_sample? + site.load_sample + #@site.update_attributes!(:loading_sample=>true) + # add job to load sample + #Delayed::Job.enqueue SampleSeedJob.new( @site ) + end + else + flash[:error] = Spree.t('errors.messages.could_not_create_site') + end + site + end + + private + def permitted_resource_params + params[object_name].present? ? params.require(object_name).permit! : ActionController::Parameters.new + end + + def object_name + 'site' + end + + end + +end diff --git a/spree_theme/app/controllers/spree/template_themes_controller.rb b/spree_theme/app/controllers/spree/template_themes_controller.rb index 8058c1c8..7d24665f 100644 --- a/spree_theme/app/controllers/spree/template_themes_controller.rb +++ b/spree_theme/app/controllers/spree/template_themes_controller.rb @@ -1,69 +1,68 @@ module Spree class TemplateThemesController < Spree::StoreController + before_action :allow_iframe_requests + helper 'spree/products' - before_filter :add_view_path delegate :taxon_class,:site_class, :to=>:"SpreeTheme" + # support database_theme and file_theme def page - #if SpreeTheme.site_class.current.dalianshops? - # redirect_to new_site_path - #end - end - - def under_construction - #logger.debug "request.env[/devise/]= #{request.env['devise.mapping']},#{warden.inspect}" + if file_theme_instance.present? + @searcher = build_searcher(params.merge(include_images: true)) + @products = @searcher.retrieve_products + @products = @products.includes(:possible_promotions) if @products.respond_to?(:includes) + @taxonomies = Spree::Taxonomy.includes(root: :children) + render file_theme_instance.index_page + end + end + + def under_construction + #logger.debug "request.env[/devise/]= #{request.env['devise.mapping']},#{warden.inspect}" #require spree_auth_devise - render "under_construction", layout:"under_construction" + render "under_construction", layout: "under_construction" end - + # @theme is required for xhr def new_admin_session - @user = Spree::User.new + #@user = Spree::User.new end - + # @theme is required for xhr def create_admin_session user_params = params[:spree_user] @user = Spree.user_class.unscoped.admin.find_for_authentication(:email => user_params[:email]) if @user.present? if @user.valid_password?(user_params[:password]) - sign_in :spree_user, @user - end + sign_in :spree_user, @user + end end #spree_user_signed_in? defined in devise/lib/controllers/helpers.rb if spree_user_signed_in? #warden.authenticate? # host is required, current_user.site may not be current site, we allow user login from dalianshops.com respond_with do |format| - format.html{ redirect_to admin_url(:host=> current_spree_user.site.subdomain ) } + # site_custom_domain/admin conficlt with site.dalianshops.com/admin + # current host maybe dalianshops.com or custom domain + if is_from_system_domain? + format.html{ redirect_to admin_url(:host=> current_spree_user.site.subdomain ) } + else + format.html{ redirect_to admin_url } + end end else - flash.now[:error] = t('devise.failure.invalid') + flash.now[:error] = t('devise.failure.invalid') render "new_admin_session" end end - - - + + + # params for preview # d: domain of website # c: menu_id def preview - - # @lg = PageTag::PageGenerator.previewer( @menu, @theme, {:resource=>(@resource.nil? ? nil:@resource),:controller=>self}) - # html = @lg.generate - # css,js = @lg.generate_assets - #insert css to html - # style = %Q!! - #editor_panel require @theme, @editors, @editor ... - # html.insert(html.index(""),style) - # html.insert(html.index(""),@editor_panel) - # respond_to do |format| - # format.html {render :text => html} - # end - - end - + end + # params # layout_id: selected page_layout_id # selected_section_id: selected section_root_id @@ -73,33 +72,33 @@ def update_layout_tree selected_page_layout_id = params[:layout_id] selected_section_id = params[:selected_section_id] selected_type = params[:selected_type] - @selected_page_layout = @theme.page_layout.self_and_descendants.find(selected_page_layout_id) + @selected_page_layout = @theme.page_layouts.find(selected_page_layout_id) if op=='promote' @selected_page_layout.promote elsif op=='demote' @selected_page_layout.demote elsif op=='move_left' @selected_page_layout.move_left - elsif op=='move_right' + elsif op=='move_right' @selected_page_layout.move_right - elsif op=='add_child' - section = Spree::Section.roots.find(selected_section_id) - #if selected_type=='Section' + elsif op=='add_child' + section = Spree::Section.roots.find(selected_section_id) + #if selected_type=='Section' @theme.add_section(section,@selected_page_layout) #else - # @selected_page_layout.add_layout_tree(selected_id) + # @selected_page_layout.add_layout_tree(selected_id) #end - #@layout.reload + #@layout.reload elsif op=='del_self' @selected_page_layout.destroy unless @selected_page_layout.root? @selected_page_layout = @selected_page_layout.parent - #FIXME update param_values in editor + #FIXME update param_values in editor #@layout.reload end - @theme.page_layout.reload #layout is changed - render :partial=>"layout_tree1" + @theme.page_layout_root.reload #layout is changed + render :partial=>"layout_tree1" end - + # user disable a section in the current layout tree def disable_section layout_id = params[:layout_id] @@ -107,23 +106,25 @@ def disable_section se = PageEvent::SectionEvent.new("disable_section", layout ) se.notify end - + def get_param_values theme_id = params[:selected_theme_id] editor_id = params[:selected_editor_id] layout_id = params[:selected_page_layout_id] - + theme = TemplateTheme.find(theme_id) editor = Editor.find(editor_id) - page_layout = PageLayout.find(layout_id) + page_layout = PageLayout.find(layout_id) prepare_params_for_editors(theme, editor, page_layout) - + respond_to do |format| - format.html + format.html format.js {render :partial=>'editors1'} - end + end end - + + # * params - terminal_id + def update_param_value param_value_event = params[:param_value_event] editing_param_value_id = params[:editing_param_value_id].to_i @@ -131,35 +132,37 @@ def update_param_value theme_id = params[:selected_theme_id] editor_id = params[:selected_editor_id] layout_id = params[:selected_page_layout_id] + terminal_id = params[:terminal_id] param_value_keys = params.keys.select{|k| k=~/pv[\d]+/} - + param_value_params = params["pv#{editing_param_value_id}"] - source_param_value = ParamValue.find(editing_param_value_id, :include=>[:section_param, :section]) + source_param_value = ParamValue.includes(:section_param).find(editing_param_value_id) updated_html_attribute_values = do_update_param_value(source_param_value, param_value_params, param_value_event, editing_html_attribute_id) - + # param_value = ParamValue.find(editing_param_value_id) - theme = TemplateTheme.find(theme_id) + theme = TemplateTheme.find(theme_id) editor = Editor.find(editor_id) - page_layout = PageLayout.find(layout_id) - prepare_params_for_editors(theme,editor,page_layout) - + page_layout = PageLayout.find(layout_id) + user_terminal = nil#UserTerminal.where( terminal_id: terminal_id ).first + prepare_params_for_editors(theme,editor, page_layout, user_terminal) + respond_to do |format| - format.html + format.html format.js {render :partial=>'update_param_value',:locals=>{:source_param_value=>source_param_value,:updated_html_attribute_values=>updated_html_attribute_values}} - end - + end + end - - - + + + # Usage, update a param_value by param_value_param - # Params, param_value ParamValue instance + # Params, param_value ParamValue instance # param_value_params, hash, format as {"84"=>{"pvalue"=>"section_name", "psvalue"=>"0t"}} # Return, all updated_html_attribute_values, may include html_attribute_value belongs to other section, also include the source change, it is the first, # it cause the serial changes. def do_update_param_value(param_value, param_value_params, param_value_event, editing_html_attribute_id) - html_attribute = html_attribute_value_params = nil + html_attribute = html_attribute_value_params = nil param_value_params.keys.each {|ha_id| ha_id = ha_id.to_i if editing_html_attribute_id.nil? or editing_html_attribute_id==ha_id @@ -167,65 +170,61 @@ def do_update_param_value(param_value, param_value_params, param_value_event, ed html_attribute_value_params = param_value_params[ha_id.to_s] #event_params = {:html_attribute=>html_attribute,:html_attribute_value_params=>html_attribute_value_params} #param_value.raise_event(param_value_event, event_params) - end + end } param_value.update_html_attribute_value(html_attribute, html_attribute_value_params, param_value_event ) #param_value.save param_value.updated_html_attribute_values end - + # usage - 1. popup file upload dialog - # 2. handle submitted file + # 2. handle submitted file # params # html_attribute_id - # param_value_id, + # param_value_id, # template_file - {"attachment"=>#>} def upload_file_dialog @dialog_content="upload_dialog_content" @param_value_id = params[:param_value_id] @html_attribute_id = params[:html_attribute_id].to_i - @param_value = ParamValue.find(@param_value_id, :include=>[:section_param=>:section_piece_param]) + @param_value = ParamValue.includes(:section_param=>:section_piece_param).find(@param_value_id) #@editor = @param_value.section_param.section_piece_param.editor - if request.post? - #TODO replace same name of template file - uploaded_image = TemplateFile.new( params[:template_file] ) - if uploaded_image.valid? - uploaded_image['theme_id']=@param_value.theme_id - if uploaded_image.save - # update param value to selected uploaded image - param_value_params={@html_attribute_id.to_s=>{"unset"=>"0", "pvalue0"=>uploaded_image.attachment_file_name, "psvalue0"=>"0i"}} - param_value_event = ParamValue::EventEnum[:pv_changed] - editing_html_attribute_id = @html_attribte_id - @updated_html_attribute_values = do_update_param_value(@param_value, param_value_params, param_value_event, editing_html_attribute_id) - # get all param values by selected editor - #@param_values = ParamValue.within_section(@param_value).within_editor(@editor) - # update param value - render :partial=>'after_upload_dialog' - end - else - end + if request.post? + #TODO replace same name of template file + uploaded_image = TemplateFile.new( params.require(:template_file).permit! ) + uploaded_image['theme_id']=@param_value.theme_id + uploaded_image.save! + # update param value to selected uploaded image + param_value_params={@html_attribute_id.to_s=>{"unset"=>"0", "pvalue0"=>uploaded_image.attachment_file_name, "psvalue0"=>"0i"}} + param_value_event = ParamValue::EventEnum[:pv_changed] + editing_html_attribute_id = @html_attribte_id + @updated_html_attribute_values = do_update_param_value(@param_value, param_value_params, param_value_event, editing_html_attribute_id) + # get all param values by selected editor + # update param value + render :partial=>'after_upload_dialog' else @theme = TemplateTheme.find(@param_value.theme_id) - model_dialog("File upload dialog",@dialog_content) + render "dialog_for_editor" + end end - - + + def check_upload_file_name file_name = params[:file_name] is_existing = TemplateFile.exists?( ["file_name=?", file_name]) if is_existing # render "replace" else - # render "upload" + # render "upload" end end - + # path for /new_site, view new_site is placeholder as cart, account... def new_site - + end - + private def model_dialog(dialog_title, dialog_content) @dialog_title = dialog_title @@ -234,13 +233,25 @@ def model_dialog(dialog_title, dialog_content) format.js{ render "application/model_dialog"} end end - + def render_message(message) respond_to do |format| format.js{ render "message_box", :locals=>{:message=>message}} end end + def is_from_system_domain? + #consider localhost? + request.host.end_with? Site.system_top_domain + end + + #对于 realdesign 允许 iframe, 360广告推广需要 X-Frame-Options + def allow_iframe_requests + if request.host.include? "realdesign" + response.headers.delete('X-Frame-Options') + end + end + end -end \ No newline at end of file +end diff --git a/spree_theme/app/helpers/spree/admin/base_helper_decorator.rb b/spree_theme/app/helpers/spree/admin/base_helper_decorator.rb deleted file mode 100644 index b82d7feb..00000000 --- a/spree_theme/app/helpers/spree/admin/base_helper_decorator.rb +++ /dev/null @@ -1,19 +0,0 @@ -module Spree - module Admin - module BaseHelper - def page_contexts_for_options( ) - options = [] - Spree::Taxon::PageContextEnum.each_pair{|sym, obj| - options<< [Spree.t("section_context.#{ sym }"), obj] - } - if Spree::Site.current.dalianshops? - Spree::Taxon::PageContextForFirstSiteEnum.each_pair{|sym, obj| - options<< [Spree.t("section_context.#{ sym }"), obj] - } - end - - options - end - end - end -end \ No newline at end of file diff --git a/spree_theme/app/helpers/spree/admin/posts_helper.rb b/spree_theme/app/helpers/spree/admin/posts_helper.rb new file mode 100644 index 00000000..9ab3a244 --- /dev/null +++ b/spree_theme/app/helpers/spree/admin/posts_helper.rb @@ -0,0 +1,32 @@ +module Spree::Admin::PostsHelper + + def inside_contents_tab? + @inside_contents_tab ||= !request.fullpath.scan(Regexp.new(extension_routes.join("|"))).empty? + end + + def contents_tab + content_tag :li, :class => inside_contents_tab? ? 'selected' : nil do + link_to I18n.t('spree.admin.shared.contents_tab.content'), extension_routes.first + end + end + + def mini_cover( post ) + options = {:alt=> 'post mini image'} + if post.cover.present? + image_tag post.cover.url(:mini), options + else + image_tag "noimage/mini.png", options + end + + end + +private + + def extension_routes + @extension_routes ||= SpreeEssentials.essentials.map { |key, cls| + route = cls.tab[:route] || "admin_#{key}" + send("#{route}_path") rescue "##{key}" + } + end + +end diff --git a/spree_theme/app/helpers/spree/admin/sites_helper.rb b/spree_theme/app/helpers/spree/admin/sites_helper.rb new file mode 100644 index 00000000..ff490d77 --- /dev/null +++ b/spree_theme/app/helpers/spree/admin/sites_helper.rb @@ -0,0 +1,17 @@ +module Spree + module Admin::SitesHelper + # spree's error_message_on would cause error in app/views/spree/admin/sites/_user.html.erb + # ActionView::Template::Error (`@site[users_attributes][0]' is not allowed as an instance variable name) + # use this replace it original :error_message_on + def customer_error_message_on(f,method) + # it is copied from spree_core/app/helper/spree/admin/base_helper.rb #12 error_message_on + obj = f.object + if obj && obj.errors[method].present? + errors = obj.errors[method].map { |err| h(err) }.join('
      ').html_safe + content_tag(:span, errors, :class => 'formError') + else + '' + end + end + end +end \ No newline at end of file diff --git a/spree_theme/app/helpers/spree/base_helper_decorator.rb b/spree_theme/app/helpers/spree/base_helper_decorator.rb new file mode 100644 index 00000000..b5ee64ce --- /dev/null +++ b/spree_theme/app/helpers/spree/base_helper_decorator.rb @@ -0,0 +1,63 @@ +module Spree + module BaseHelper + + def wechat_config_params(config_options = {}) + #if controller.request.original_url =~ /design.getstore.cn/ + # config_options[:debug] = true + #end + account = config_options[:account] + # copy from module Wechat::Helpers + # not default account + config = Wechat.config() + domain_name = config.trusted_domain_fullname + api = Wechat.api + app_id = config.corpid || config.appid + + page_url = if domain_name + "#{domain_name}#{controller.request.original_fullpath}" + else + controller.request.original_url + end + page_url = controller.request.original_url + js_hash = api.jsapi_ticket.signature(page_url) + + config_params = { + debug: !!config_options[:debug], + app_id: app_id, + timestamp: js_hash[:timestamp], + nonce_str: js_hash[:noncestr], + signature: js_hash[:signature], + js_api_list: config_options[:api]||[] + } + + end + + def wechat_share_data( current_page ) + url = if current_page.product_tag.present? + current_page.product_tag.simple_image_url( :medium ) + else + image_url( 'missing/wxshare.png') + end + + share_data = { + title: current_page.title.to_json, + desc: 'this is description', + link: controller.request.original_url, + img_url: url + } + end + + + private + # override original, always return style for feature :aliyun_oss + # Returns style of image or nil + def image_style_from_method_name(method_name) + if method_name.to_s.match(/_image\z/) && style = method_name.to_s.sub(/_image\z/, '') + #possible_styles = Spree::Image.attachment_definitions[:attachment][:styles] + #style if style.in? possible_styles.with_indifferent_access + style + end + end + + end +end diff --git a/spree_theme/app/helpers/spree/bases_helper_decorator.rb b/spree_theme/app/helpers/spree/bases_helper_decorator.rb deleted file mode 100644 index 87ab4b8a..00000000 --- a/spree_theme/app/helpers/spree/bases_helper_decorator.rb +++ /dev/null @@ -1,159 +0,0 @@ -module Spree - module BaseHelper - #================================================================================================== - # template methods, using by template - #================================================================================================== - #these methos has to be in BaseHelpler, controller may be TemplateThemes Cart Checkout User Order.. - #override original in BaseHelper - def breadcrumbs(current_page_tag, separator=" » ") - # current_page_tag is nil in page /unauthorized - return "" if current_page?("/") || current_page_tag.nil? ||current_page_tag.page_home? - separator = raw(separator) - crumbs = [content_tag(:li, link_to(Spree.t(:home), spree.root_path) + separator)] - if current_page_tag - #crumbs << content_tag(:li, link_to(Spree.t(:products), products_path) + separator) - crumbs << current_page_tag.ancestors.collect { |ancestor| content_tag(:li, link_to(ancestor.name , (ancestor.path)) + separator) } unless current_page_tag.ancestors.empty? - crumbs << content_tag(:li, content_tag(:span, link_to(current_page_tag.name , current_page_tag.path))) - end - crumb_list = content_tag(:ul, raw(crumbs.flatten.map{|li| li.mb_chars}.join), class: 'inline') - content_tag(:nav, crumb_list, id: 'breadcrumbs', class: 'sixteen columns') - end - - def link_to_product_thumbnail( current_piece, i ) - link_to( image_tag(i.attachment.url( current_piece.get_content_param_by_key(:thumbnail_style))), - i.attachment.url( current_piece.get_content_param_by_key(:main_image_style)) - ) - end - - def product_main_image( current_piece, product ) - Spree::MultiSiteSystem.with_context_site_product_images{ - main_image_style = current_piece.get_content_param_by_key(:main_image_style) - send("#{main_image_style}_image", product, :itemprop => "image") - } - end - - # override resource path, add taxon into path - def product_path( product ) - "/0/#{product.id}" - end - - #================================================================================================== - # Editor methods - #================================================================================================== - - def my_remote_function(options) - full_query_path = options[:query_path]+"?"+options[:query_params].to_param - form = options[:submit] - confirm_function = options[:confirm] - callback = nil - # callback = %q! function (data, textStatus, xhr){ $("#editors").html(xhr.responseText); }! - function = " ajax_post('#{full_query_path}','#{form}','script');return false;" - if confirm_function.present? - function = "if(confirm_function){#{function}}" - end - function - end - # for speed up partial, create these helpers instead of partial - - def partial_editor( editor, param_values) - #local_params: editor, param_values - @param_category_ids = [] - <<-EOS -
      - #{ param_values.collect{|param_value| partial_param_value( param_value )}.join } -
      - EOS - end - - def partial_param_value( param_value) - #params: html_attribute_hash {id=>html_attribute} - # - #local_params: param_value, param_category - param_category = param_value.section_param.section_piece_param.param_category - section_piece_param = param_value.section_param.section_piece_param - ha_array = param_value.section_param.html_attributes # excluded disabled by section - tags = '' - unless @param_category_ids.include? param_category.id - @param_category_ids << param_category.id - tags = %Q(
      H:#{param_category.slug}
      ) - end - - ha_array.collect{|html_attribute| - tags << partial_html_attribute_value( param_value, html_attribute ) - } - tags - end - - def partial_html_attribute_value( param_value, html_attribute ) - #params: @theme - #local params: html_attribute, param_value - bool_true = Spree::HtmlAttribute::BOOL_TRUE - bool_false = Spree::HtmlAttribute::BOOL_FALSE - section_piece_param = param_value.section_param.section_piece_param - ha = html_attribute - pv_div_id = "pv_#{param_value.id}_#{ha.id}" - pv_ele_id = "pv#{param_value.id}[#{ha.id}]" - pv_link_id = pv_div_id+'_a' - hav = Spree::HtmlAttributeValue.parse_from(param_value, ha) - display = ( hav.hidden? ? "display:none" : "" ) - query_path = update_param_value_template_theme_path( @theme ) - tags = "" - ha.repeats.times{ |i| - psvalue, pvalue,unit = hav["psvalue#{i}"],hav["pvalue#{i}"],hav["unit#{i}"] - possible_values = ha.possible_selected_values(i) - possible_values_descriptions = ha.possible_selected_values_descriptions(i) - units = ha.units - onchange = my_remote_function( :submit=>"layout_editor_form",:query_path=>query_path, :query_params => hav.build_url_params(:psv_changed), :if=>'') - element_style = "display:none;" - if ha.manual_entry?(psvalue) - element_style="display:inline-block;" - end - manual_value_onchange = my_remote_function( :submit=>"layout_editor_form",:query_path=>query_path, :query_params => hav.build_url_params(:pv_changed)) - passible_value_tag = "" - manual_value_tag = "" - manual_unit_tag = "" - if possible_values.size>1 - passible_value_tag << select(pv_ele_id,"psvalue#{i}", possible_values.each_index.collect{|j| [possible_values_descriptions[j],possible_values[j]] },{:selected =>psvalue }, {:class=>"pv-psv", :onchange=>onchange}) - else - passible_value_tag << hidden_field_tag("#{pv_ele_id}[psvalue#{i}]", psvalue ) - end - - if html_attribute.is_special?(:bool) - manual_value_tag << radio_button_tag("#{pv_ele_id}[pvalue#{i}]", bool_true,pvalue==bool_true, :onchange=>manual_value_onchange )+"Yes" - manual_value_tag << radio_button_tag("#{pv_ele_id}[pvalue#{i}]", bool_false,pvalue==bool_false, :onchange=>manual_value_onchange )+"No" - elsif html_attribute.is_special?(:image) - manual_value_tag << select("#{pv_ele_id}","pvalue#{i}", Spree::TemplateFile.all.collect{|item| [item.attachment_file_name, item.attachment_file_name]}, {:selected=>pvalue ,:include_blank=>"Please select "},{ :onchange=>manual_value_onchange}) - manual_value_tag << link_to( "upload file...",{:controller=>"spree/template_themes", :action=>"upload_file_dialog",:param_value_id=>param_value.id, :html_attribute_id=>html_attribute.id, :selected_editor_id=>@editor.id},:method =>:get,:remote=>true ) - else - manual_value_tag << text_field_tag("#{pv_ele_id}[pvalue#{i}]", pvalue, {:class=>"pv-pv", :onchange=>manual_value_onchange}) - end - if units - manual_unit_tag << select(pv_ele_id,"unit#{i}", units.collect{|psv| [psv, psv] },{:selected => unit}, {:class=>"pv-psv", :style=>element_style, :onchange=>manual_value_onchange}) - end - tags.concat <<-EOS1 -
      -
      #{passible_value_tag}
      -
      #{manual_value_tag}
      -
      #{manual_unit_tag}
      -
      - EOS1 - } - unset_tag = "" - unset_onchange = my_remote_function( :submit=>"layout_editor_form",:query_path=>query_path, :query_params => hav.build_url_params(:unset_changed)) - unset_tag<< check_box_tag(pv_ele_id+"[unset]", bool_true, hav.unset?, :onchange=>unset_onchange) - unset_tag<< label_tag(pv_ele_id+"[unset]", "Unset") - - <<-EOS2 -
      -
      #{ha.title} -
      -
      - #{tags} -
      -
      #{unset_tag}
      -
      - EOS2 - end - - end -end \ No newline at end of file diff --git a/spree_theme/app/helpers/spree/decorator/admin/base_helper_decorator.rb b/spree_theme/app/helpers/spree/decorator/admin/base_helper_decorator.rb new file mode 100644 index 00000000..6108d458 --- /dev/null +++ b/spree_theme/app/helpers/spree/decorator/admin/base_helper_decorator.rb @@ -0,0 +1,19 @@ +module Spree + module Admin + module BaseHelper + def page_contexts_for_options( ) + options = [] + Spree::Taxon::PageContextEnum.each_pair{|sym, obj| + options<< [Spree.t("section_context.#{ sym }"), obj] + } + if Spree::Store.current.god? + Spree::Taxon::PageContextForFirstSiteEnum.each_pair{|sym, obj| + options<< [Spree.t("section_context.#{ sym }"), obj] + } + end + + options + end + end + end +end diff --git a/spree_theme/app/helpers/spree/decorator/api/api_helpers_decorator.rb b/spree_theme/app/helpers/spree/decorator/api/api_helpers_decorator.rb new file mode 100644 index 00000000..b3282b5e --- /dev/null +++ b/spree_theme/app/helpers/spree/decorator/api/api_helpers_decorator.rb @@ -0,0 +1,14 @@ +module Spree + module Api + module ApiHelpers + ATTRIBUTES_FOR_THEME = [ + :page_layout_attributes] + + mattr_reader *ATTRIBUTES_FOR_THEME + + @@page_layout_attributes = [ + :id, :title, :parent_id, :template_theme_id + ] + end + end +end diff --git a/spree_theme/app/helpers/spree/decorator/base_helper_decorator.rb b/spree_theme/app/helpers/spree/decorator/base_helper_decorator.rb new file mode 100644 index 00000000..0e55de62 --- /dev/null +++ b/spree_theme/app/helpers/spree/decorator/base_helper_decorator.rb @@ -0,0 +1,317 @@ +module Spree + module BaseHelper + #include SpreeTheme::TemplateBaseHelper + def method_missing(method_name, *args, &block) + if image_style = image_style_from_method_name(method_name) + define_image_method(image_style) + self.send(method_name, *args) + elsif template_theme_id = template_theme_id_from_method_name( method_name ) + #Rails.logger.debug "self=#{self}, method_name=#{method_name} template_theme_id=#{template_theme_id}" + define_compiled_template_theme_method( template_theme_id ) + self.send(method_name, *args) + else + super + end + end + #================================================================================================== + # template methods, using by template + #================================================================================================== + #these methos has to be in BaseHelpler, controller may be TemplateThemes Cart Checkout User Order.. + #override original in BaseHelper + def meta_data + #object = instance_variable_get('@'+controller_name.singularize) + object = instance_variable_get('@resource') + meta = {} + + if object.kind_of? ActiveRecord::Base + meta[:keywords] = object.meta_keywords if object[:meta_keywords].present? + meta[:description] = object.meta_description if object[:meta_description].present? + end + + #if meta[:description].blank? && object.kind_of?(Spree::Product) + # meta[:description] = strip_tags(truncate(object.description, length: 160, separator: ' ')) + #end + + meta.reverse_merge!({ + keywords: current_store.meta_keywords, + description: current_store.meta_description, + }) if meta[:keywords].blank? or meta[:description].blank? + meta + end + + + def breadcrumbs(current_page_tag, separator=" » ") + # current_page_tag is nil in page /unauthorized + return "" if current_page?("/") || current_page_tag.nil? ||current_page_tag.home? + separator = raw(separator) + crumbs = [content_tag(:li, link_to(Spree.t(:home), spree.root_path) + separator)] + if current_page_tag + #crumbs << content_tag(:li, link_to(Spree.t(:products), products_path) + separator) + crumbs << current_page_tag.ancestors.collect { |ancestor| content_tag(:li, link_to(ancestor.name , (ancestor.path)) + separator) } unless current_page_tag.ancestors.empty? + crumbs << content_tag(:li, content_tag(:span, link_to(current_page_tag.name , current_page_tag.path))) + end + crumb_list = content_tag(:ul, raw(crumbs.flatten.map{|li| li.mb_chars}.join), class: 'inline') + content_tag(:nav, crumb_list, id: 'breadcrumbs', class: 'sixteen columns') + end + + def link_to_product_thumbnail( current_piece, i ) + link_to( image_tag(i.attachment.url( current_piece.get_content_param_by_key(:thumbnail_style))), + i.attachment.url( current_piece.get_content_param_by_key(:main_image_style)) + ) + end + + #def product_main_image( current_piece, product ) + # Spree::MultiSiteSystem.with_context_site_product_images{ + # main_image_style = current_piece.get_content_param_by_key(:main_image_style) + # main_image_position = current_piece.get_content_param_by_key(:main_image_position) + # if main_image_position>0 + # if product.images[main_image_position].present? + # create_product_image_tag(product.images[main_image_position], product, {:itemprop => "image"}, main_image_style) + # end + # else + # send("#{main_image_style}_image", product, :itemprop => "image") + # end + # } + #end + + # override resource path, add taxon into path + def product_path( product ) + "/0/#{product.id}" + end + + # * params + # * page - WrappedMenu + # * page_index - start from 0, for compatible, default is 0 + def menu_item_atom( current_piece, page, page_index = 0) + return '' if current_piece.enabled_depth < page.depth + + leaves_content = '' + unless page.leaf? + child_index = page_index # consider all descendants as one list for even/odd + leaves_content = content_tag(:ul, raw( page.children.map{|child| child_index+=1 ;menu_item_atom( current_piece, child, child_index )}.join ), class: "depth#{page.depth+1}" ) + end + cycle_css_class = (page_index%2 == 0 ? 'even' : 'odd') + item_content = content_tag(:span, page.name, class: 'name' ) + + item_content= if page.clickable? + if page.current? + link_to item_content, page.path, page.extra_html_attributes.merge( { :class=>"selected depth#{page.depth} #{cycle_css_class}" } ) + else + link_to item_content, page.path, page.extra_html_attributes.merge( { :class=>"depth#{page.depth} #{cycle_css_class}" } ) + end + else + link_to item_content, page.path, page.extra_html_attributes.merge( { :class=>"noclick depth#{page.depth} #{cycle_css_class}", :href=>'javascript:void(0)' } ) + end + + content_tag(:li, raw( item_content+ leaves_content ) ) + end + + + # a container could has + def get_container_class( current_piece ) + css_classes = current_piece.effects.join(' ') # current_piece.piece_selector + ' ' + current_piece.as_child_selector + ' ' + + # how many columns are there? + # handling data iteration? + # Rails.logger.debug "current_piece=#{current_piece.id},#{current_piece.title}, current_piece.is_container?=#{current_piece.is_container?}, current_piece.template.running_data_sources.present?=#{current_piece.template.running_data_sources.present?}" + if current_piece.is_container? + running_data_item = current_piece.template.running_data_item + if running_data_item.present? + current_page = current_piece.template.page_generator.current_page_tag + column_count = current_piece.template.running_data_source_sction_piece.column_count + i = current_piece.template.running_data_item_index + #Rails.logger.debug "i=#{i}, column_count=#{column_count}, current_piece.template.running_data_source_sction_piece=#{current_piece.template.running_data_source_sction_piece.id}" + css_classes << ' data_first' if column_count>0 && i==0 + css_classes << ' data_last' if column_count>0 && ((i+1)%column_count==0) + css_classes << " data_#{i+1}" + + case running_data_item.model + when Spree::Taxon + css_classes << ' data_current' if running_data_item.current? + css_classes << ' data_current_ancestor' if current_page.ancestor_ids.include?(running_data_item.id) + when Spree::Product + when Spree::Post + end + + end + end + if current_piece.parent.effects.present? + css_classes << " child_#{current_piece.nth_of_siblings}" + end + + css_classes + end + + def get_menu_items( current_piece ) + # for feature hmenu show descendants of current page + # we should check :page first. + running_data_item = current_piece.template.running_data_item + if running_data_item.is_a? PageTag::Menus::WrappedMenu + running_data_item.children + else + current_piece.template.menu.try(:children) || [] + end + end + + # in template_tag have no method link_to, content_tag, it have to be in base_helper + #def page_attribute( template_tag, attribue_name ) + # page = template_tag.running_data_item_by_class( PageTag::Menus::WrappedMenu ) || @current_page + # attribute_value = page.send attribue_name + # if template_tag.current_piece.clickable? + # link_to attribute_value, page.path, page.extra_html_attributes + # else + # content_tag :span, attribute_value, {:id=>"p_#{template_tag.current_piece.id}_#{page.id}"} + # end + #end + + def product_attribute( template_tag, attribue_name ) + + end + + def link_to_cart_badge + css_class = nil + if simple_current_order.nil? or simple_current_order.item_count.zero? + css_class = 'empty' + else + css_class = 'full' + end + link_to simple_current_order.item_count, spree.cart_path, :class => "cart-info #{css_class}" + end + + + #================================================================================================== + # Editor methods + #================================================================================================== + + def my_remote_function(options) + full_query_path = options[:query_path]+"?"+options[:query_params].to_param + form = options[:submit] + confirm_function = options[:confirm] + callback = nil + # callback = %q! function (data, textStatus, xhr){ $("#editors").html(xhr.responseText); }! + function = " ajax_post('#{full_query_path}','#{form}','script');return false;" + if confirm_function.present? + function = "if(confirm_function){#{function}}" + end + function + end + # for speed up partial, create these helpers instead of partial + + def partial_editor( editor, param_values) + #local_params: editor, param_values + @param_category_ids = [] + <<-EOS +
      + #{ param_values.collect{|param_value| partial_param_value( param_value )}.join } +
      + EOS + end + + def partial_param_value( param_value) + #params: html_attribute_hash {id=>html_attribute} + # + #local_params: param_value, param_category + param_category = param_value.section_param.section_piece_param.param_category + section_piece_param = param_value.section_param.section_piece_param + ha_array = param_value.section_param.html_attributes # excluded disabled by section + tags = '' + unless @param_category_ids.include? param_category.id + @param_category_ids << param_category.id + tags = %Q(
      H:#{param_category.slug}
      ) + end + + ha_array.collect{|html_attribute| + tags << partial_html_attribute_value( param_value, html_attribute ) + } + tags + end + + def partial_html_attribute_value( param_value, html_attribute ) + #params: @theme + #local params: html_attribute, param_value + bool_true = Spree::HtmlAttribute::BOOL_TRUE + bool_false = Spree::HtmlAttribute::BOOL_FALSE + section_piece_param = param_value.section_param.section_piece_param + ha = html_attribute + pv_div_id = "pv_#{param_value.id}_#{ha.id}" + pv_ele_id = "pv#{param_value.id}[#{ha.id}]" + pv_link_id = pv_div_id+'_a' + hav = Spree::HtmlAttributeValue.parse_from(param_value, ha) + display = ( hav.hidden? ? "display:none" : "" ) + query_path = update_param_value_template_theme_path( @theme ) + tags = "" + ha.repeats.times{ |i| + psvalue, pvalue,unit = hav["psvalue#{i}"],hav["pvalue#{i}"],hav["unit#{i}"] + possible_values = ha.possible_selected_values(i) + possible_values_descriptions = ha.possible_selected_values_descriptions(i) + units = ha.units + onchange = my_remote_function( :submit=>"layout_editor_form",:query_path=>query_path, :query_params => hav.build_url_params(:psv_changed), :if=>'') + element_style = "display:none;" + if ha.manual_entry?(psvalue) + element_style="display:inline-block;" + end + manual_value_onchange = my_remote_function( :submit=>"layout_editor_form",:query_path=>query_path, :query_params => hav.build_url_params(:pv_changed)) + passible_value_tag = "" + manual_value_tag = "" + manual_unit_tag = "" + if possible_values.size>1 + passible_value_tag << select(pv_ele_id,"psvalue#{i}", possible_values.each_with_index.collect{|possible_value, j| [possible_values_descriptions[j],possible_value] },{:selected =>psvalue }, {:class=>"pv-psv", :onchange=>onchange}) + else + passible_value_tag << hidden_field_tag("#{pv_ele_id}[psvalue#{i}]", psvalue ) + end + + if html_attribute.is_special?(:bool) + manual_value_tag << radio_button_tag("#{pv_ele_id}[pvalue#{i}]", bool_true,pvalue==bool_true, :onchange=>manual_value_onchange )+"Yes" + manual_value_tag << radio_button_tag("#{pv_ele_id}[pvalue#{i}]", bool_false,pvalue==bool_false, :onchange=>manual_value_onchange )+"No" + elsif html_attribute.is_special?(:image) + manual_value_tag << select("#{pv_ele_id}","pvalue#{i}", param_value.template_theme.template_files.collect{|item| [item.attachment_file_name, item.attachment_file_name]}, {:selected=>pvalue ,:include_blank=>"Please select "},{ :onchange=>manual_value_onchange}) + manual_value_tag << link_to( "upload file...", spree.upload_file_dialog_template_theme_path( param_value.template_theme,:param_value_id=>param_value.id, :html_attribute_id=>html_attribute.id, :selected_editor_id=>@editor.id),:method =>:get,:remote=>true ) + else + manual_value_tag << text_field_tag("#{pv_ele_id}[pvalue#{i}]", pvalue, {:class=>"pv-pv", :onchange=>manual_value_onchange}) + end + if units + manual_unit_tag << select(pv_ele_id,"unit#{i}", units.collect{|psv| [psv, psv] },{:selected => unit}, {:class=>"pv-psv", :style=>element_style, :onchange=>manual_value_onchange}) + end + tags.concat <<-EOS1 +
      +
      #{passible_value_tag}
      +
      #{manual_value_tag}
      +
      #{manual_unit_tag}
      +
      + EOS1 + } + unset_tag = "" + unset_onchange = my_remote_function( :submit=>"layout_editor_form",:query_path=>query_path, :query_params => hav.build_url_params(:unset_changed)) + unset_tag<< check_box_tag(pv_ele_id+"[unset]", bool_true, hav.unset?, :onchange=>unset_onchange) + unset_tag<< label_tag(pv_ele_id+"[unset]", "Unset") + + <<-EOS2 +
      +
      #{ha.title} +
      +
      + #{tags} +
      +
      #{unset_tag}
      +
      + EOS2 + end + + private + + def define_compiled_template_theme_method( template_theme_id ) + template_theme = Spree::TemplateTheme.find template_theme_id + method_name = template_theme.complied_method_name +Rails.logger.info "SpreeTheme definde_method: #{method_name} #{self.object_id}" + self.send("instance_eval", "def #{method_name}; #{template_theme.compiled_template_theme.src}; end", '(TemplateThemesHelper)') + end + + # Returns style of image or nil + def template_theme_id_from_method_name(method_name) + regex = Spree::TemplateTheme.complied_method_name_prefix_regex + if method_name.to_s.match(regex) && template_theme_id = method_name.to_s.sub(regex, '') + template_theme_id if Spree::TemplateTheme.exists?( template_theme_id ) + end + end + + end +end diff --git a/spree_theme/app/helpers/spree/decorator/frontend_helper_decorator.rb b/spree_theme/app/helpers/spree/decorator/frontend_helper_decorator.rb new file mode 100644 index 00000000..d31f944d --- /dev/null +++ b/spree_theme/app/helpers/spree/decorator/frontend_helper_decorator.rb @@ -0,0 +1,12 @@ +Spree::FrontendHelper.module_eval do + def flash_messages(opts = {}) + ignore_types = ["order_completed"].concat(Array(opts[:ignore_types]).map(&:to_s) || []) + + flash.each do |msg_type, text| + unless ignore_types.include?(msg_type) + concat(content_tag :div, text, class: "alert alert-#{msg_type} alert-auto-disappear") + end + end + nil + end +end diff --git a/spree_theme/app/helpers/spree/posts_helper.rb b/spree_theme/app/helpers/spree/posts_helper.rb new file mode 100644 index 00000000..57a41600 --- /dev/null +++ b/spree_theme/app/helpers/spree/posts_helper.rb @@ -0,0 +1,20 @@ +module Spree::PostsHelper + + def post_seo_path(blog, post) + spree.full_post_path(blog, post.year, post.month, post.day, post.to_param) + end + + def post_seo_url(blog, post) + spree.full_post_url(blog, post.year, post.month, post.day, post.to_param) + end + + def post_rss(post) + output = [] + post.images.each do |image| + output << image_tag(image.attachment.url, :alt => image.alt) + end + output << post.rendered_body + output.join("\n").html_safe + end + +end diff --git a/spree_theme/app/jobs/sample_seed_job.rb b/spree_theme/app/jobs/sample_seed_job.rb new file mode 100644 index 00000000..7efe4e38 --- /dev/null +++ b/spree_theme/app/jobs/sample_seed_job.rb @@ -0,0 +1,13 @@ +class SampleSeedJob < Struct.new(:site) + def perform + Spree::Site.current = site + #site.users.first, it require `spree_users`.`site_id` =current_site.id + admin_user = site.users.first + site.load_sample + Spree::UserMailer.load_sample(admin_user).deliver + end + + def success(job) + site.update_attributes!(:loading_sample=>false) + end +end diff --git a/spree_theme/app/mailers/spree/base_mailer_decorator.rb b/spree_theme/app/mailers/spree/base_mailer_decorator.rb new file mode 100644 index 00000000..f498e2fb --- /dev/null +++ b/spree_theme/app/mailers/spree/base_mailer_decorator.rb @@ -0,0 +1,9 @@ + Spree::BaseMailer.class_eval do + + #before_action :initialize_mail_settings #it is supported by rails4 + + # initialize setting for current site, copy from MailMethodsController + def initialize_mail_settings + Spree::Core::MailSettings.init + end + end diff --git a/spree_theme/app/mailers/spree/user_mailer.rb b/spree_theme/app/mailers/spree/user_mailer.rb new file mode 100644 index 00000000..34f937e7 --- /dev/null +++ b/spree_theme/app/mailers/spree/user_mailer.rb @@ -0,0 +1,20 @@ +class Spree::UserMailer < ActionMailer::Base + default :from => "rubyecommerce@gmail.com" + + def load_sample(user) + @user = user + mail(:to => user.email, + :subject => user.site[:name] ) + end + if Rails.env =~ /development|test/ + class Preview < MailView + def load_sample() + site = Spree::Site.create!(:name=>"ABC",:domain=>"www.example.com") + user = site.users.create!(:email=>'abc@example.com',:password=>"spree123",:password_confirmation=>"spree123") + mail = Spree::UserMailer.load_sample(user) + site.destroy + mail + end + end + end +end diff --git a/spree_theme/app/models/concerns/shared/template_theme_path.rb b/spree_theme/app/models/concerns/shared/template_theme_path.rb new file mode 100644 index 00000000..218bd53d --- /dev/null +++ b/spree_theme/app/models/concerns/shared/template_theme_path.rb @@ -0,0 +1,67 @@ +module Shared + module TemplateThemePath + extend ActiveSupport::Concern + class_methods do + def complied_method_name_prefix_regex + /\A_cttm_at[\d]+_/ + end + end + # * params + # * usage - may be [css, js, ruby, ehtml, card.ehtml, home.ehtml, list.ehtml ..] + def file_name(usage) + usage = usage.to_s unless usage.is_a? String + if usage =~ /[\w]+\.ehtml/ + name = usage.split('.').first + "l#{original_page_layout_root.id}#{name}.html.erb" + elsif usage =~ /ehtml/ + "l#{original_page_layout_root.id}.html.erb" + else + "l#{original_page_layout_root.id}.#{usage}" + end + end + + # folder name 'layouts' is required, rails look for layout in folder named 'layouts' + def path + # self.id is not accurate, it may use imported theme of design site. + # on other side, design site may release template first time. current_template_release = nil + if self.current_template_release.present? + File.join( File::SEPARATOR+'layouts', "t#{self.current_template_release.theme_id}_r#{self.release_id}") + else + File.join( File::SEPARATOR+'layouts', "t#{self.id}_r#{self.release_id}") + end + end + + def document_path + File.join( original_template_theme.store.document_path, self.path) + end + + # * params + # * targe - could be css, js + # * return js or css document file path, ex /shops/development/1/layouts/t1_r1/l1_t1.css + def file_path( target ) + # theme.site do not work. + File.join( original_template_theme.store.path, self.path, file_name(target)) + end + + def layout_path + document_file_path( 'ruby' ) + end + + def document_file_path( target ) + File.join( document_path, file_name(target) ) + end + # compliled template theme method format + # _cttm_at{current_template_release.updated_at.to_i}_#{current_template_release.theme_id} + # method for generate page, consider template theme may refer to another template_theme in design shop + def complied_method_name + method_name = "#{complied_method_name_prefix}#{current_template_release.theme_id}" + end + + + def complied_method_name_prefix + "_cttm_at#{current_template_release.updated_at.to_i}_" + end + + + end +end diff --git a/spree_theme/app/models/concerns/template_resource_path.rb b/spree_theme/app/models/concerns/template_resource_path.rb new file mode 100644 index 00000000..7dba9ce6 --- /dev/null +++ b/spree_theme/app/models/concerns/template_resource_path.rb @@ -0,0 +1,63 @@ + module TemplateResourcePath + #模板中数据生成自己的路径 + def build_path( taxon=nil ) + + case self + when SpreeTheme.taxon_class + build_taxon_path + when Spree::Product + build_product_path(taxon) + when SpreeTheme.post_class + build_post_path(taxon) + end + + end + + + #taxon + def build_taxon_path + # consider extra_html_attributes first + # self.id, self.slug would be nil if it is class DefaultTaxon + self.extra_html_attributes.try(:[],:href) || context_routes[current_context] || "/#{self.id.to_i}-#{self.permalink.to_s.split('/').last}" + end + + #product + def build_product_path(taxon) + #Rails.logger.debug "build_product_path taxon = #{taxon.id}, partial_path=#{taxon.partial_path}, build_taxon_path=#{taxon.build_taxon_path}, current_context=#{taxon.current_context} " + taxon.partial_path + "/#{self.id}-#{self.friendly_id}" + end + + #post + def build_post_path(taxon) + "/post"+ taxon.partial_path + "/#{self.id}-#{self.friendly_id}" + end + + # taxon partial path + def partial_path + # menu.id would be nil if it is class DefaultTaxon + if( self.persisted? && !self.home? ) + build_taxon_path + else + # 1. in case default home page show all products, + # 2. prevent '//10-cup', it is required + "/#{self.id.to_i}" + end + end + + #https://github.com/spree-contrib/spree_sitemap/blob/master/lib/spree_sitemap/spree_defaults.rb + #def add_login(options = {}) + # add(login_path, options) + #end + + #def add_signup(options = {}) + # add(signup_path, options) + #end + + #def add_account(options = {}) + # add(account_path, options) + #end + + #def add_password_reset(options = {}) + # add(new_spree_user_password_path, options) + #end + end diff --git a/spree_theme/app/models/decorators/taxon_has_many_posts_decorator.rb b/spree_theme/app/models/decorators/taxon_has_many_posts_decorator.rb new file mode 100644 index 00000000..37373553 --- /dev/null +++ b/spree_theme/app/models/decorators/taxon_has_many_posts_decorator.rb @@ -0,0 +1,4 @@ +Spree::Taxon.class_eval do + has_many :post_classifications, dependent: :delete_all, inverse_of: :post + has_many :posts, through: :post_classifications +end diff --git a/spree_theme/app/models/default_taxon.rb b/spree_theme/app/models/default_taxon.rb index aa958199..f760168c 100644 --- a/spree_theme/app/models/default_taxon.rb +++ b/spree_theme/app/models/default_taxon.rb @@ -1,51 +1,63 @@ class DefaultTaxon < SpreeTheme.taxon_class - attr_accessor :root + attr_accessor :root # * params # * context - one of ContextEnum member def self.instance_by_context( context ) unless context_routes.key?( context ) - raise "unimplement for context:#{context}" + raise "unimplement for context:#{context}" end - request_fullpath = context_routes[context] + request_fullpath = context_routes[context] instance( request_fullpath ) end - - #it should work for DefaultTaxon.instance and DefaultTaxonRoot.instance + + #it should work for DefaultTaxon.instance and DefaultTaxonRoot.instance def self.instance( request_fullpath=nil) default_taxon = self.new() default_taxon.request_fullpath = request_fullpath default_taxon end - - # get default taxon tree, default menu tree using by theme - # menu section would call default_taxon.children - def children - [] - end - # - def ancestors - [root] - end - - def root? - false - end - - + + # get default taxon tree, default menu tree using by theme + # menu section would call default_taxon.children + def children + [] + end + # + def ancestors + [root] + end + + def parent + root + end + + def root? + false + end + + def leaf? + true + end + + # menu_item_atom required + def depth + 1 + end + def name - case current_context + case current_context when ContextEnum.checkout Spree.t(:checkout) when ContextEnum.cart Spree.t(:shopping_cart) else Spree.t("default_page.#{current_context}") - end + end end - - def page_home? + + def home? current_context == ContextEnum.home end - + end diff --git a/spree_theme/app/models/default_taxon_root.rb b/spree_theme/app/models/default_taxon_root.rb index bac3f65d..14ecd1ae 100644 --- a/spree_theme/app/models/default_taxon_root.rb +++ b/spree_theme/app/models/default_taxon_root.rb @@ -2,27 +2,27 @@ class DefaultTaxonRoot < DefaultTaxon attr_accessor :default_taxon, :taxonomy # initialize default_taxon after self initialzed, use the newest request_fullpath def default_taxon - if @default_taxon.nil? + if @default_taxon.nil? @default_taxon = DefaultTaxon.instance( self.request_fullpath ) @default_taxon.root = self # required by inherited_page_context end @default_taxon end - + def children taxons = case current_context when ContextEnum.login - [ DefaultTaxon.instance_by_context( ContextEnum.login ), + [ DefaultTaxon.instance_by_context( ContextEnum.login ), DefaultTaxon.instance_by_context( ContextEnum.signup ) ].each{|taxon| taxon.root = self} when ContextEnum.account - [ DefaultTaxon.instance_by_context( ContextEnum.account ), + [ DefaultTaxon.instance_by_context( ContextEnum.account ), DefaultTaxon.instance_by_context( ContextEnum.logout ) ].each{|taxon| taxon.root = self} - else + else [self.default_taxon] end - + end - + def taxonomy @taxonomy ||= DefaultTaxonomy.new( self ) end @@ -34,20 +34,23 @@ def self_and_descendants def root? true end - + def root self end - + # menu_item_atom required + def depth + 0 + end end -class DefaultTaxonomy +class DefaultTaxonomy attr_accessor :name, :default_taxon_root def initialize( default_taxon) self.default_taxon_root = default_taxon end - + def name Spree.t "default_page.taxonomy" end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/page_event/global_param_value_event.rb b/spree_theme/app/models/page_event/global_param_value_event.rb index 09f51489..37594e82 100644 --- a/spree_theme/app/models/page_event/global_param_value_event.rb +++ b/spree_theme/app/models/page_event/global_param_value_event.rb @@ -61,43 +61,6 @@ def block_width_event_handler( param_value_event ) is_value_changed = (param_value_event.event == ParamValue::EventEnum[:pv_changed]) # value changed or unit changed is_fixed = self.fixed? source_section_name = param_value_event.source_section_name - part_triggered = ['center_part','left_part','right_part'].include? source_section_name - page_triggered = ['root'].include? source_section_name - # width of one in these three changed. - if self.section_slug=='center_area' - left_part = self.children.select{|s| s.section_slug=='left_part'}.first - right_part = self.children.select{|s| s.section_slug=='right_part'}.first - center_part = self.children.select{|s| s.section_slug=='center_part'}.first - Rails.logger.debug "left_part=#{left_part}, right_part=#{right_part}, center_part=#{center_part}" - if part_triggered - if false #is_fixed, enable fixed center_area later. - center_part_width = center_part.html_attribute_values( 'block_width' ) - if source_section_name == 'left_part' - center_part_width['pvalue']+= param_value_event.difference - - elsif source_section_name == 'right_part' - - else - - end - else - left_part_block_width = left_part.html_attribute_values( 'block_width' ) - left_part_block_margin = left_part.html_attribute_values( 'block_margin' ) - right_part_block_width = right_part.html_attribute_values( 'block_width' ) - right_part_block_margin = right_part.html_attribute_values( 'block_margin' ) - center_part_inner_margin = center_part.html_attribute_values( 'inner_margin' ) - if source_section_name == 'left_part' - center_part_inner_margin['pvalue3']+= param_value_event.difference - left_part_block_margin['pvalue1'] = -left_part_block_width['pvalue'] #margin-right = -left_part.width - elsif source_section_name == 'right_part' - center_part_inner_margin['pvalue1']+= param_value_event.difference - right_part_block_margin['pvalue3'] = -right_part_block_width['pvalue'] #margin-left = -right_part.width - end - self.updated_html_attribute_values.push(center_part_inner_margin, left_part_block_margin, right_part_block_margin) - end - - end - end end diff --git a/spree_theme/app/models/page_event/param_value_event.rb b/spree_theme/app/models/page_event/param_value_event.rb index c1e784b9..d4a48c03 100644 --- a/spree_theme/app/models/page_event/param_value_event.rb +++ b/spree_theme/app/models/page_event/param_value_event.rb @@ -1,136 +1,177 @@ module PageEvent class ParamValueEvent < ParamValueEventBase - # it should return updated_html_attribute_values, action collect them and update the editor. + # it should return updated_html_attribute_values, action collect them and update the editor. def notify( ) - param_conditions = self.param_value.section_param.section_piece_param.param_conditions - + param_conditions = param_value_condition + unless param_conditions[self.html_attribute.id].nil? -# Rails.logger.debug "param_conditions=#{param_conditions.inspect},self.event=#{self.event}" - #event handler is html_attribute.slug + event + handler + #event handler is html_attribute.slug + event + handler if param_conditions[self.html_attribute.id].include?(self.event) #html_attribute.slug may contain '-', we only allow a-z,A-Z,0-9,_ by [/\w+/] html_page = self.param_value.template_theme.html_page html_piece = html_page.partial_htmls.select{|hp| hp.page_layout.id==self.param_value.page_layout_id }.pop -# Rails.logger.debug "self.param_value=#{self.param_value.inspect}" -# Rails.logger.debug "html_piece=#{html_piece.inspect}" +# Rails.logger.debug "self.param_value=#{self.param_value.inspect}" +# Rails.logger.debug "html_piece=#{html_piece.inspect}" #self.updated_html_attribute_values.concat( ) - self.send( handler_name, html_piece) - end + self.send( handler_name, html_piece) + end end self.updated_html_attribute_values end - + + def param_value_condition + self.param_value.section_param.section_piece_param.param_conditions + end + def event_name return event end - + def handler_name "#{self.html_attribute.slug[/\w+/]}_#{self.event_name}_handler" end - + def height_pv_changed_handler(partial_html) - height = partial_html.height - if height>0 + dimension_changed_handler(partial_html, 'height') + #height = partial_html.height + #if height>0 + # margin, border, padding = partial_html.margin, partial_html.border, partial_html.padding + # val = partial_html.html_attribute_values('inner_height') + # inner_height_value = height + # [0,2].each{|i|#0:top, 2: bottom + # inner_height_value-= margin[i] + # inner_height_value-= border[i] + # inner_height_value-= padding[i] + # } + # hav = partial_html.html_attribute_values("block_height") + # computed_inner_height['psvalue'] = hav['psvalue'] + # computed_inner_height['pvalue'] = inner_height_value + # computed_inner_height['unit'] = hav['unit'] + # computed_inner_height['unset'] = Spree::HtmlAttribute::BOOL_FALSE + # self.updated_html_attribute_values.push(computed_inner_height) + #else + # computed_inner_height = partial_html.html_attribute_values('inner_height') + # computed_inner_height['unset'] = Spree::HtmlAttribute::BOOL_TRUE + # self.updated_html_attribute_values.push(computed_inner_height) + #end + end + + + def width_pv_changed_handler(partial_html) + dimension_changed_handler(partial_html, 'width') + end + + # compute inner dimension is required by baidu map + #html_attribute_name could be width, height + def dimension_changed_handler(partial_html, html_attribute_name) + trbl = (html_attribute_name == 'width' ? [1,3] : [0,2]) + val = partial_html.send( html_attribute_name ) + hav = partial_html.html_attribute_values("block_#{html_attribute_name}") + # width/height is 100%, unset inner width/height + if val>0 && !hav.unset? && hav['unit']!='%' margin, border, padding = partial_html.margin, partial_html.border, partial_html.padding - computed_inner_height = partial_html.html_attribute_values('inner_height') - inner_height_value = height - [0,2].each{|i|#0:top, 2: bottom - inner_height_value-= margin[i] - inner_height_value-= border[i] - inner_height_value-= padding[i] - } - hav = partial_html.html_attribute_values("block_height") - computed_inner_height['psvalue'] = hav['psvalue'] - computed_inner_height['pvalue'] = inner_height_value - computed_inner_height['unit'] = hav['unit'] - computed_inner_height['unset'] = Spree::HtmlAttribute::BOOL_FALSE - self.updated_html_attribute_values.push(computed_inner_height) + + computed_inner = partial_html.html_attribute_values("inner_#{html_attribute_name}") + inner_value = val + trbl.each{|i|#0:top, 2: bottom + inner_value-= margin[i] + inner_value-= border[i] + inner_value-= padding[i] + } + computed_inner['psvalue'] = hav['psvalue'] + computed_inner['pvalue'] = inner_value + computed_inner['unit'] = hav['unit'] + computed_inner['unset'] = Spree::HtmlAttribute::BOOL_FALSE + self.updated_html_attribute_values.push(computed_inner) else - computed_inner_height = partial_html.html_attribute_values('inner_height') - computed_inner_height['unset'] = Spree::HtmlAttribute::BOOL_TRUE - self.updated_html_attribute_values.push(computed_inner_height) + computed_inner = partial_html.html_attribute_values("inner_#{html_attribute_name}") + computed_inner['unset'] = Spree::HtmlAttribute::BOOL_TRUE + self.updated_html_attribute_values.push(computed_inner) end end + + # TODO width_pv_changed_handler, should not bigger than its parent's width. def border_pv_changed_handler(partial_html) height_pv_changed_handler( partial_html ) - end + end def margin_pv_changed_handler(partial_html) height_pv_changed_handler( partial_html ) - end + end def padding_pv_changed_handler(partial_html) - height_pv_changed_handler( partial_html ) - end + height_pv_changed_handler( partial_html ) + end alias_method :height_unset_changed_handler, :height_pv_changed_handler alias_method :border_unset_changed_handler, :height_pv_changed_handler alias_method :margin_unset_changed_handler, :height_pv_changed_handler alias_method :padding_unset_changed_handler, :height_pv_changed_handler - - # here are two tipical layouts, + alias_method :width_unset_changed_handler, :width_pv_changed_handler + + # here are two tipical layouts, # Layout Example fluid --> fixed fixed --> fluid - # layout_root1 + # layout_root1 # +----center_area # | +-------center_part # | |-------header_part # | |-------left_part - # | +-------right_part - # |----footer - # - # layout_root2 + # | +-------right_part + # |----footer + # + # layout_root2 # +--page # | +----center_area # | | +-------center_part # | | |-------header_part # | | |-------left_part - # | | +-------right_part - # | +----footer + # | | +-------right_part + # | +----footer # +--dialog # +--message_box - + # rules to change layout from fixed to fluid # 1. it only works for container section. # 2. it only works while there are all container section in same level(exclude float section, ex. dialog). - # ex. in layout1. center_area and footer are same level, center_part, header_part, left_part and right_part are same level + # ex. in layout1. center_area and footer are same level, center_part, header_part, left_part and right_part are same level # container and content layout is not horizontal, width-> unset # root is also a container - # rules to change layout from fluid to fixed - + # rules to change layout from fluid to fixed + def page_layout_fixed_event_handler( global_param_value_event ) is_fixed = global_param_value_event.new_html_attribute_value.pvalue - parent_block_width = self.parent_section_instance.html_attribute_values("block_width") unless self.parent.nil? + parent_block_width = self.parent_section_instance.html_attribute_values("block_width") unless self.parent.nil? block_width = html_attribute_values("block_width") block_margin = html_attribute_values("block_margin") block_inner_margin = html_attribute_values("inner_margin") - + if is_fixed to_fixed() else to_fluid() end end - - # a container, content layout attribute of parent is vertical, and have a width value, we could say to_fluid means unset the width. + + # a container, content layout attribute of parent is vertical, and have a width value, we could say to_fluid means unset the width. def to_fluid() if self.root? block_min_width = html_attribute_values("page_min-width") block_width = html_attribute_values("page_width") block_margin = html_attribute_values("page_margin") #block, inner - + block_width['unset'] = HtmlAttribute::BOOL_TRUE block_width['hidden'] = HtmlAttribute::BOOL_TRUE block_min_width['unset'] = HtmlAttribute::BOOL_FALSE block_min_width['hidden'] = HtmlAttribute::BOOL_FALSE self.updated_html_attribute_values.push(block_width,block_min_width,block_margin ) elsif self.section.slug=='container' - - - end + + + end end - - # a container, if have no width value, content layout attribute of ancestors are vertical, to_fixed means change nothing. - # if have width value and bigger than available width, we could say to_fixed means unset the width. + + # a container, if have no width value, content layout attribute of ancestors are vertical, to_fixed means change nothing. + # if have width value and bigger than available width, we could say to_fixed means unset the width. def to_fixed() if self.root? block_min_width = html_attribute_values("page_min-width") @@ -142,14 +183,14 @@ def to_fixed() block_min_width['unset'] = HtmlAttribute::BOOL_TRUE block_min_width['hidden'] = HtmlAttribute::BOOL_TRUE block_margin['unset'] = HtmlAttribute::BOOL_FALSE - block_margin['psvalue'] = 'auto' - + block_margin['psvalue'] = 'auto' + self.updated_html_attribute_values.push(block_width,block_min_width,block_margin ) elsif self.section.slug=='container' - + end end - + end - -end \ No newline at end of file + +end diff --git a/spree_theme/app/models/page_tag/current_page.rb b/spree_theme/app/models/page_tag/current_page.rb index 234407ee..88e487d4 100644 --- a/spree_theme/app/models/page_tag/current_page.rb +++ b/spree_theme/app/models/page_tag/current_page.rb @@ -5,59 +5,83 @@ # -> named_resource (blog_posts, products) # -> current_resource( product, blog_post ) # # those tags required current section_instance -# +# # tags in page # template.current_section.menu == template.menus.select # template.current_section.param_values == template.param_values.select module PageTag class CurrentPage < Menus::WrappedMenu - attr_accessor :page_generator,:website_tag, :template_tag, :product_tag - delegate :theme, :menu, :resource, :to => :page_generator - delegate :is_preview, :to => :page_generator - delegate :design?, :to => :website_tag, :prefix=>"site" - alias_attribute :model, :menu #Menus::WrappedMenu use model - - def initialize(page_generator_instance) - self.page_generator = page_generator_instance - self.website_tag = ::PageTag::WebsiteTag.new(page_generator_instance) - self.template_tag = ::PageTag::TemplateTag.new(page_generator_instance) + attr_accessor :page_generator,:website_tag, :template_tag, :product_tag, :post_tag + delegate :theme, :resource, :product, :post, :to => :page_generator + delegate :is_preview, :released_page_path, :to => :page_generator + delegate :design?, :to => :website_tag, :prefix=>"site" + alias_attribute :page, :model + alias_attribute :website, :website_tag + + def initialize(page_generator) + self.page_generator = page_generator + self.website_tag = ::PageTag::WebsiteTag.new(page_generator) + self.template_tag = ::PageTag::TemplateTag.new(page_generator) # it is required to generate path self.collection_tag = ::PageTag::Menus.new(self.template_tag) - # get current product - if self.page_generator.resource.present? - self.product_tag = Products::WrappedProduct.new( self.collection_tag, page_generator.resource) - else - self.product_tag = nil + self.model = self.page_generator.menu #Menus::WrappedMenu required model + + # current product + if self.page_generator.product.present? + products_tag = Products.new( page_generator, [ page_generator.product ], self ) + self.product_tag = products_tag.wrapped_models.first + end + + # current post + if self.page_generator.post.present? + posts_tag = Products.new( page_generator, [ page_generator.post ], self ) + self.post_tag = posts_tag.wrapped_models.first end + end - - #title is current page title, resource.title-menu.title-website.title + + #title is current page title, resource.title-page.title-website.title def title - if detail_page? - "#{resource.name} - #{menu.name} - #{website_tag.name}" + if page.meta_title.present? + page.meta_title + elsif home? #|| page.root? + # do not show page name for root, for case, show all products on home page. + # should show page name for root, + # for case, user click taxon root( products ) -> click a product, now current page is 'products' + # home page point to product category root. show website.name as title. + website.name + elsif detail_page? + "#{resource.name} - #{page.name} - #{website.name}" else - "#{menu.name} - #{website_tag.name}" - end + "#{page.name} - #{website.name}" + end end - #is given section context valid to current page + #is given section context valid to current page def valid_context? - #Rails.logger.debug "valid=#{menu.current_context}, self.template_tag.current_piece=#{self.template_tag.current_piece.title}" - ret = theme.valid_context?(template_tag.current_piece.page_layout, menu) - #(self.template_tag.current_piece.context? menu.current_context) + #Rails.logger.debug "valid=#{page.current_context}, self.template_tag.current_piece=#{self.template_tag.current_piece.title}" + ret = theme.valid_context?(template_tag.current_piece.page_layout, page) + #(self.template_tag.current_piece.context? page.current_context) end - + def detail_page? resource.present? end - + # when render for cart/account, should output '<%=yield %>' # store it in section piece would not work, controller.render_to_string would parse it. def reyield '<%=yield %>' end + + def agent_selector( request_user_agent ) + user_agent = UserAgent.parse request_user_agent + # Rails.logger.debug "request_user_agent=#{request_user_agent}, user_agent=#{user_agent.to_s}" + "#{( user_agent.browser=='Internet Explorer' ? 'ie' : user_agent.browser )} #{user_agent.version.to_s.to_i}".to_url + end + + end - -end +end diff --git a/spree_theme/app/models/page_tag/menus.rb b/spree_theme/app/models/page_tag/menus.rb index 71c66b71..6a167105 100644 --- a/spree_theme/app/models/page_tag/menus.rb +++ b/spree_theme/app/models/page_tag/menus.rb @@ -1,10 +1,10 @@ module PageTag class Menus < Base class WrappedMenu < WrappedModel - self.accessable_attributes=[:id,:name,:icon, :path, :permalink, :is_clickable?, :page_home?,:depth, :leaf?,:root?,:persisted?, :extra_html_attributes, :description] + self.accessable_attributes=[:id, :name, :icon, :summary, :build_path, :friendly_id, :tooltips, :is_clickable?, :home?,:depth, :leaf?,:root?,:persisted?, :extra_html_attributes, :description, :replaced_by ] delegate *self.accessable_attributes, :to => :model - delegate :taxonomy, :to => :model - + delegate :taxonomy, :root, :persisted?, :right_sibling, :left_sibling, :to => :model + def children self.model.children.collect{|item| WrappedMenu.new(self.collection_tag, item)} end @@ -14,20 +14,28 @@ def descendants end def ancestors - self.model.ancestors.collect{|item| PageTag::Menus::WrappedMenu.new(self.collection_tag, item)} + self.model.ancestors.collect{|item| WrappedMenu.new(self.collection_tag, item)} end - + + def ancestor_ids + if @ancestor_ids.nil? + # model could be default taxon, ancestors may be array other than where() + @ancestor_ids = self.model.ancestors.map(&:id) + end + @ancestor_ids + end + # url link to the menu itme's page(each menu itme link to a page). def current? (self.collection_tag.template_tag.page_generator.menu.id == self.model.id) || (self.collection_tag.template_tag.page_generator.menu.id == self.model.replaced_by) end - + def clickable? is_clickable? end - + # template.products replace it. - #get current page's resource by template.current_piece + #get current page's resource by template.current_piece #def resources() # objs = [] # data_source = self.collection_tag.template_tag.current_piece.data_source @@ -38,12 +46,12 @@ def clickable? # searcher = Spree::Config.searcher_class.new({:taxon => self.id}) # objs = searcher.retrieve_products # elsif data_source == 'this_product' - # #default_taxon.id is 0 - # objs = [self.resource] #menu.products.where(:id=>resource.id) + # #default_taxon.id is 0 + # objs = [self.resource] #menu.products.where(:id=>resource.id) # elsif data_source == 'gpvs_theme' # objs = Spree::MultiSiteSystem.with_context_site1_themes{ # searcher = Spree::Config.searcher_class.new({:taxon => self.id}) - # searcher.retrieve_products.where('spree_products.theme_id>0') + # searcher.retrieve_products.where('spree_products.theme_id>0') # } # end # if objs.present? @@ -52,69 +60,79 @@ def clickable? # end # objs #end - - def partial_path - # menu.id would be nil if it is class DefaultTaxon - if model.persisted? - path - else - # in case default home page show all products, - # to prevent '//10-cup', it is required - "/#{self.model.id.to_i}" - end + + #def partial_path + # # menu.id would be nil if it is class DefaultTaxon + # if( model.persisted? && !model.home? ) + # path + # else + # # in case default home page show all products, + # # to prevent '//10-cup', it is required + # "/#{self.model.id.to_i}" + # end + #end + def path + build_path + end + + def resource_taxon_id + replaced_by > 0 ? replaced_by : id end + end attr_accessor :menus_cache #store all menus of template, key is page_layout_id, value is menu tree - attr_accessor :template_tag, :page_generator + attr_accessor :template_tag + #:page_generator #model.path require page_generator delegate :page_generator, :to=>:template_tag - + def initialize(template_tag) self.template_tag = template_tag self.menus_cache = {} end - # get menu root assigned to section instance - # 1. containerA(menu) - taxonomy_name - # - hmenu - # 2. containerB- hmenu(menu) - # for menu assignment easy, method 1 is not support any more + # get menu root assigned to section instance + # 1. containerA(taxon_root) - taxonomy_name + # - hmenu + # 2. containerB- hmenu( taxon_root ) + # 3. containerC- taxon_name( taxon ) + # - container( taxon.products ) + # - product_name + # for menu assignment easy, method 1 is not support any more def get( wrapped_page_layout, resource_position=0 ) - key = wrapped_page_layout.to_key + key = wrapped_page_layout.to_key menu_tree = nil unless menus_cache.key? key - #wrapped_page_layout.assigned_menu_id may not exist for some reason. + #wrapped_page_layout.assigned_menu_id may not exist for some reason. assigned_menu_id = wrapped_page_layout.assigned_menu_id(resource_position) - if assigned_menu_id>0 and SpreeTheme.taxon_class.exists?( assigned_menu_id ) + if assigned_menu_id>0 && SpreeTheme.taxon_class.exists?( assigned_menu_id ) menu_tree = SpreeTheme.taxon_class.find( assigned_menu_id ).self_and_descendants end - menus_cache[key] = menu_tree + menus_cache[key] = menu_tree end - + if menus_cache[key].blank? - # get default menu - if wrapped_page_layout.section.present? - wrapped_resource = wrapped_page_layout.section.section_piece.wrapped_resources[resource_position] - if wrapped_resource.present? - menus_cache[key] = DefaultTaxonRoot.instance_by_context( wrapped_resource.context ).self_and_descendants - end + # get default menu, with_resources may return [] since support assign resource to container. + section_resource = wrapped_page_layout.section_piece_resources.slice resource_position + if section_resource + menus_cache[key] = DefaultTaxonRoot.instance_by_context( section_resource.context ).self_and_descendants end end -#Rails.logger.debug "wrapped_page_layout=#{key}, menu_tree=#{menu_tree}" + #Rails.logger.debug "wrapped_page_layout=#{key}#{wrapped_page_layout.title}, menu_tree=#{menu_tree.inspect}" if menus_cache[key].present? WrappedMenu.new( self, menus_cache[key].first) - else - nil + else + nil end end - + def menu( resource_position=0 ) get( template_tag.current_piece, resource_position ) end - + def menu2 get( template_tag.current_piece, 1 ) end - + end end diff --git a/spree_theme/app/models/page_tag/model_attribute.rb b/spree_theme/app/models/page_tag/model_attribute.rb new file mode 100644 index 00000000..3dc35451 --- /dev/null +++ b/spree_theme/app/models/page_tag/model_attribute.rb @@ -0,0 +1,34 @@ +module PageTag + #get attributes from current datasource + class ModelAttribute + + attr_accessor :wrapped_model,:current_piece, :options + attr_accessor :helpers + delegate :tag, :image_tag, :content_tag, :to=> :helpers + + + # Params + # options - file + def initialize( current_piece, wrapped_model, options = {}) + self.wrapped_model = wrapped_model + self.current_piece = current_piece + self.options = options + self.helpers = ActionController::Base.helpers + end + + + def get( attribute_name ) + raise "please implement ModelAttribute.get" + end + + + def pretty_datetime(time) + [I18n.l(time.to_date, format: :long), time.strftime("%l:%M %p")].join(" ") + end + + def pretty_date(time, format= :long) + I18n.l(time.to_date, format: format) + end + + end +end diff --git a/spree_theme/app/models/page_tag/model_collection.rb b/spree_theme/app/models/page_tag/model_collection.rb index c247619a..c7f2c364 100644 --- a/spree_theme/app/models/page_tag/model_collection.rb +++ b/spree_theme/app/models/page_tag/model_collection.rb @@ -2,12 +2,12 @@ module PageTag class ModelCollection < Base include Enumerable class_attribute :accessable_attributes - self.accessable_attributes=[:num_pages,:current_page,:total_pages,:limit_value] + self.accessable_attributes=[:num_pages,:current_page,:total_pages,:limit_value] delegate *self.accessable_attributes, :to => :models attr_accessor :models, :wrapped_taxon - + def initialize(page_generator_instance, models, wrapped_taxon) super(page_generator_instance) self.models = models @@ -15,18 +15,24 @@ def initialize(page_generator_instance, models, wrapped_taxon) end def wrapped_models - raise 'not implement' + raise 'not implement' end - + def has_pages? - models.respond_to?(:num_pages) + #kaminari supported + models.respond_to?(:current_page) end - + def each(&block) self.wrapped_models.each{|item| yield item } self end + + def index( wrapped_model ) + self.wrapped_models.index wrapped_model + end + end end diff --git a/spree_theme/app/models/page_tag/page_attribute.rb b/spree_theme/app/models/page_tag/page_attribute.rb new file mode 100644 index 00000000..5dba7dea --- /dev/null +++ b/spree_theme/app/models/page_tag/page_attribute.rb @@ -0,0 +1,56 @@ +module PageTag + #get attributes from current datasource + class PageAttribute < ModelAttribute + alias_attribute :wrapped_page, :wrapped_model + + def get( attribute_name ) + attribute_value = case attribute_name + when :icon + if wrapped_page.icon.present? + tag('img', :src=>wrapped_page.icon.attachment.url(:original), :u=>'image', :alt=>wrapped_page.name, :class=>"img-responsive" ) + else + '' + end + when :summary + wrapped_page.send attribute_name, self.current_piece.truncate_at + when :more # it is same as clickable wrapped_page name + #get more text from page.html_attributes[:title] || Spree.t('more') + Spree.t('more') + when :root_name + wrapped_page.name + when :root_tooltips + wrapped_page.tooltips + when :icon_angle_right + '>' + when :icon_angle_left + '<' + when :placeholder # get text from current_piece.alternative_text + self.options.delete(:attribute_placeholder) || Spree.t(:placeholder) + else + wrapped_page.send attribute_name + end + if self.current_piece.clickable? || attribute_name==:more + html_options = wrapped_page.extra_html_attributes + html_options[:href] ||= wrapped_page.path + html_options[:class] ||= 'selected' if wrapped_page.current? + if attribute_name == :summary + attribute_value << content_tag(:a, "[#{Spree.t(:detail)}]", html_options) + else + if wrapped_page.clickable? + content_tag(:a, attribute_value, html_options) + else + attribute_value + end + end + elsif attribute_name==:name + # make it as link anchor, wrapped with span, css text-* applicable + content_tag :span, attribute_value, {:id=>"p_#{self.current_piece.id}_#{wrapped_page.id}"} + else + attribute_value + end + + end + + + end +end diff --git a/spree_theme/app/models/page_tag/page_generator.rb b/spree_theme/app/models/page_tag/page_generator.rb index cd5be5f9..9077c598 100644 --- a/spree_theme/app/models/page_tag/page_generator.rb +++ b/spree_theme/app/models/page_tag/page_generator.rb @@ -1,36 +1,37 @@ #in layout, there are some eruby, all available varibles should be here. -module PageTag +module PageTag class PageGenerator - - attr_accessor :template_release, :menu, :theme, :resource # resource could be product, blog_post, flash, file, image... + + attr_accessor :template_release, :menu, :theme + attr_accessor :resource, :product, :post # resource could be product, blog_post, flash, file, image... attr_accessor :editor - + #these attributes are for templates attr_accessor :current_page_tag attr_accessor :context - # * renderer - could be current controller or Erubis::Eruby, + # * renderer - could be current controller or Erubis::Eruby, # we would like to use helper method of rails, so now is using controller as renderer # * resource_options - parameter for resource, for example, pagination attr_accessor :is_preview, :controller, :renderer, :resource_options - # - attr_accessor :ehtml, :ecss, :ejs + #ehtmls 字符串数组,对应不同的context + attr_accessor :ehtmls,:ehtml, :ecss, :ejs, :ruby delegate :generate, :generate_assets, :to=>:renderer delegate :html,:css,:js, :to=>:renderer - + class << self #page generator has two interface, builder and generator #builder only build content: ehtml,js,css #def builder( theme ) - # self.new( theme, menu=nil) + # self.new( theme, menu=nil) #end - + #designer release a template def releaser( theme) pg = self.new( theme, menu=nil) pg.build pg end - + #generator generate content: html,js,css # params: # theme: template theme, a template may not released. @@ -39,23 +40,26 @@ def previewer(menu, theme=nil, options={}) pg = self.new( theme, menu, options) pg.build pg - end + end #generator generate content: html,js,css def generator(menu, theme=nil, options={}) self.new( theme, menu, options) end + end - - def initialize( theme, menu, options={}) + + def initialize( theme, menu, options={}) self.theme = theme self.menu = menu - self.resource = nil + self.resource = self.product = self.post = nil self.is_preview = options[:preview].present? - + self.editor = options[:editor] if options[:resource].present? self.resource = options[:resource] + identify_resource( self.resource ) end + html = css = js = nil ehtml = ecss = ejs = nil #init template variables, used in templates @@ -63,76 +67,101 @@ def initialize( theme, menu, options={}) initialize_context_variables if options[:controller].present? self.controller = options[:controller] - end - self.resource_options = options.slice(:page) + end + self.resource_options = options.slice( :searcher_params, :pagination_params) end - - def url_prefix + + def url_prefix #self.is_preview ? "/preview" : "" "" end - + #def has_editor? # self.editor.present? #end - + #build html, css sourse - def build - self.ehtml, self.ecss, self.ejs = self.theme.page_layout.build_content() - return self.ehtml, self.ecss, self.ejs + def build( special_contexts=[] ) + + self.ehtmls, self.ecss, self.ejs = self.theme.original_page_layout_root.build_content(special_contexts) + self.ehtml = self.ehtmls.first + end - - def release - #build -> generate_assets -> serialize - self.build # build ehtml, ecss, ejs - self.generate_assets # generate css, js - serialize_page(:ehtml) - serialize_page(:css) - serialize_page(:js) - end - + + + #def release( ) + # #build -> generate_assets -> serialize + # self.build # build ehtml, ecss, ejs + # self.generate_assets # generate css, js + # self.ruby = erb.new(self.ehtml).src + # serialize_page(:ehtml) + # serialize_page(:css) + # serialize_page(:js) + # serialize_page(:ruby) + #end + def renderer - if @renderer.blank? + if @renderer.blank? if self.controller.present? @renderer = PageTag::PageRenderer::RailsRenderer.new(self.ehtml, self.ecss, self.ejs, self.context,self.controller) else @renderer = PageTag::PageRenderer::ErubisRenderer.new(self.ehtml, self.ecss, self.ejs, self.context) end - end + end @renderer end - - def build_path( wrapped_model ) + + def build_path( wrapped_model ) url = nil if wrapped_model.kind_of?( Menus::WrappedMenu ) url= url_prefix+ wrapped_model.model.path - else - url= url_prefix+ wrapped_model.path - end + else + url= url_prefix+ wrapped_model.path + end url end - - # *specific_attribute - ehtml,ecss, html, css - def serialize_page(specific_attribute) - specific_attribute_collection = [:css,:js,:ehtml] - raise ArgumentError unless specific_attribute_collection.include?(specific_attribute) - page_content = send(specific_attribute) - if page_content.present? - path = self.theme.document_path - FileUtils.mkdir_p(path) unless File.exists?(path) - - path = self.theme.document_file_path(specific_attribute) - open(path, 'w') do |f| f.puts page_content; end - end + + + #取得模板文件路径,生成页面时使用 + def released_page_path( ) + self.theme.releaser.page_document_path( self.menu ) end - + + + # *specific_attribute - ehtml,ecss, html, css + #def serialize_page(specific_attribute) + # specific_attribute_collection = [:css,:js,:ehtml,:ruby] + # raise ArgumentError unless specific_attribute_collection.include?(specific_attribute) + # page_content = send(specific_attribute) + # if page_content.present? + # path = self.theme.document_path + # FileUtils.mkdir_p(path) unless File.exists?(path) + # path = self.theme.document_file_path(specific_attribute) + # open(path, 'w') do |f| f.puts page_content; end + # end + #end + private - # erb context variables + # erb context variables def initialize_context_variables - self.context = {:current_page=>current_page_tag, + self.context = {:current_page=>current_page_tag, :website=>current_page_tag.website_tag, :template=>current_page_tag.template_tag - } - end - + } + end + + # resource could be product, blog_post, flash, file, image... + def identify_resource( resource ) + self.product = self.post = nil + case resource.class.name + when 'Spree::Product' + self.product = resource + when 'Spree::Post' + self.post = resource + end + end + + def erb( ) + ActionView::Template::Handlers::ERB.erb_implementation + end end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/page_tag/page_renderer/erubis_renderer.rb b/spree_theme/app/models/page_tag/page_renderer/erubis_renderer.rb index e37885b2..18e6faff 100644 --- a/spree_theme/app/models/page_tag/page_renderer/erubis_renderer.rb +++ b/spree_theme/app/models/page_tag/page_renderer/erubis_renderer.rb @@ -1,35 +1,36 @@ +require 'erubis' module PageTag::PageRenderer class ErubisRenderer < Base cattr_accessor :pattern self.pattern = '<\% \%>' - + def initialize( ehtml, ecss, ejs, context) self.ehtml, self.ecss, self.ejs = ehtml, ecss, ejs self.context = context end - + def generate html_eruby = Erubis::Eruby.new(self.ehtml,:pattern=>self.class.pattern) - self.html = html_eruby.evaluate(context) + self.html = html_eruby.evaluate(context) return self.html end - + #generate css and js, they are do not need current menu def generate_assets css_eruby = Erubis::Eruby.new(self.ecss,:pattern=>self.class.pattern) self.css = css_eruby.evaluate(context) return self.css, self.js end - + def generate_from_erb_file() #path = File.join(self.class.layout_base_path, self.theme.file_name('ehtml')) #erb_html = open(path) do |f| f.read end - + #self.ehtml = erb_html #html_eruby = Erubis::Eruby.new(self.ehtml,:pattern=>self.class.pattern) - #self.html = html_eruby.evaluate(context) - + #self.html = html_eruby.evaluate(context) + #return self.html, self.css - end + end end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/page_tag/page_renderer/rails_renderer.rb b/spree_theme/app/models/page_tag/page_renderer/rails_renderer.rb index 91ec6be1..c6d1b7d6 100644 --- a/spree_theme/app/models/page_tag/page_renderer/rails_renderer.rb +++ b/spree_theme/app/models/page_tag/page_renderer/rails_renderer.rb @@ -12,7 +12,6 @@ def initialize( ehtml, ecss, ejs, context, controller) def generate prepare_instance_variables -#Rails.logger.debug "ehtml=#{ehtml}" self.html = renderer.render_to_string(:inline =>ehtml) return self.html end diff --git a/spree_theme/app/models/page_tag/param_values.rb b/spree_theme/app/models/page_tag/param_values.rb index 42553ff2..643735ed 100644 --- a/spree_theme/app/models/page_tag/param_values.rb +++ b/spree_theme/app/models/page_tag/param_values.rb @@ -4,26 +4,28 @@ class ParamValues def initialize( template_tag ) self.template_tag = template_tag end - + def param_values_hash if @param_values_hash.nil? theme_id = self.template_tag.theme.original_template_theme.id - param_values = Spree::ParamValue.eager_load(section_param: :section_piece_param).where( theme_id: theme_id).order( 'spree_param_values.page_layout_id,spree_section_piece_params.class_name ') - + param_values = Spree::ParamValue.eager_load(section_param: :section_piece_param).where( theme_id: theme_id).order( 'spree_param_values.page_layout_id,spree_section_piece_params.class_name ') + @param_values_hash = param_values.inject({}){|h,pv| sp = pv.section_param key = "#{pv.page_layout_id}_#{sp.section_id}" #keep it same as WrappedPageLayout.to_key - h[key]||=[] + h[key]||=[] h[key]<[computed|normal], get pvalue from 'pvalue' or 'computed_pvalue' + # options: source=>[computed|normal], get pvalue from 'pvalue' or 'computed_pvalue' + # html_attribute_ids=>[],get pvalue only in html_attribute_id in :html_attribute_ids + # ex. css(:inner, {:html_attribute_ids=>[15,21]}) def css( class_name, options={}) class_name = class_name.to_s key = self.template_tag.current_piece.to_key @@ -36,6 +38,7 @@ def css( class_name, options={}) spp = pv.section_param.section_piece_param if spp.class_name == class_name html_attributes = Spree::HtmlAttribute.find_by_ids(pv.html_attribute_ids) +#Rails.logger.debug "class_name = #{class_name}, pv.html_attribute_ids=#{pv.html_attribute_ids.inspect}" for ha in html_attributes next if pv.unset?(ha.id) if ha.is_special?(:image) @@ -49,9 +52,9 @@ def css( class_name, options={}) # should output hidden pv # hidden= pv.hidden?(ha.id) pv_for_ha = pv.pvalue_for_haid(ha.id) -#Rails.logger.debug "pv=#{pv.inspect} ha=#{ha.inspect}" - val << ( pv_for_ha+';' ) - end +#Rails.logger.debug "pv=#{pv.inspect} ha=#{ha.inspect}" + val << ( pv_for_ha+';' ) + end end end end @@ -59,15 +62,15 @@ def css( class_name, options={}) # Rails.logger.debug " class_name=#{class_name}, val=#{val}" val end - + # parent section_piece def root_piece_instance_id if self.section and self.section_piece root_piece = Section.find(section_piece['root_id']) # Rails.logger.debug "root_piece=#{root_piece.inspect}" - "#{section['section_id']}_#{section['section_instance']}_#{root_piece['section_piece_id']}_#{root_piece['section_piece_instance']}" #section_piece_instance always 1. + "#{section['section_id']}_#{section['section_instance']}_#{root_piece['section_piece_id']}_#{root_piece['section_piece_instance']}" #section_piece_instance always 1. end - end - + end + end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/page_tag/post_attribute.rb b/spree_theme/app/models/page_tag/post_attribute.rb new file mode 100644 index 00000000..7cc25e4f --- /dev/null +++ b/spree_theme/app/models/page_tag/post_attribute.rb @@ -0,0 +1,60 @@ +module PageTag + #get attributes from current datasource + class PostAttribute < ModelAttribute + alias_attribute :wrapped_post, :wrapped_model + + def get( attribute_name ) + attribute_value = case attribute_name + when :cover + style = self.current_piece.get_content_param_by_key(:main_image_style) + if wrapped_post.cover.present? + tag('img', :src=>wrapped_post.cover.url(style), :u=>'image', :alt=>'post image', :class=>"img-responsive" ) + else + image_tag "noimage/post_#{style}.png", { :alt=>'missing image', :class=>"img-responsive" } + end + when :file + post_file.attachment_file_name if post_file + when :summary + wrapped_post.send attribute_name, self.current_piece.truncate_at + when :detail + #get more text from page.html_attributes[:title] || Spree.t('more') + self.options.delete(:attribute_placeholder) || Spree.t(:detail) + else + wrapped_post.send attribute_name + end + + if self.current_piece.clickable? + html_options = { href: wrapped_post.path } + if attribute_name == :summary + attribute_value + content_tag(:a, "[#{Spree.t(:detail)}]", html_options) + elsif attribute_name == :file + #file is downloadable + content_tag(:a, post_file.alt.present? ? post_file.alt : wrapped_post.title, { href: post_file.attachment.url, title: attribute_value }) + else + content_tag(:a, attribute_value, html_options) + end + elsif attribute_name == :title + # make it as link anchor + content_tag :span, attribute_value, {:id=>"p_#{self.current_piece.id}_#{wrapped_post.id}"} + elsif attribute_name == :posted_at + case self.current_piece.datetime_style + when :date + pretty_date attribute_value + when :simple_date + pretty_date attribute_value, :simple_date + else + pretty_datetime attribute_value + end + else + attribute_value + end + + end + + + def post_file + options[:file] || wrapped_post.files.first + end + + end +end diff --git a/spree_theme/app/models/page_tag/posts.rb b/spree_theme/app/models/page_tag/posts.rb index 380c4a67..048d148b 100644 --- a/spree_theme/app/models/page_tag/posts.rb +++ b/spree_theme/app/models/page_tag/posts.rb @@ -3,30 +3,33 @@ module PageTag # key is data_source name, value is proper blog_posts_tag # self.blog_posts_tags_cache = {} class Posts < ModelCollection - + class WrappedPost < WrappedModel - self.accessable_attributes=[:id, :title, :body, :posted_at, :cover] + self.accessable_attributes=[:id, :title, :name, :body, :posted_at, :cover, :summary, :author, :files, :build_path] delegate *self.accessable_attributes, :to => :model - - + delegate :wrapped_taxon, to: :collection_tag + + def path - "/post"+ collection_tag.wrapped_taxon.partial_path + "/#{model.id}-#{model.permalink}" - end - end - - + # "/post"+ collection_tag.wrapped_taxon.partial_path + "/#{model.id}-#{model.friendly_id}" + build_path( wrapped_taxon.model ) + end + end + + def wrapped_models - models.collect{|model| WrappedPost.new(self, model) } + return @wrapped_models if @wrapped_models + @wrapped_models = models.collect{|model| WrappedPost.new(self, model) } end - + # means the current select blog post in erubis context. - def current - if @current.nil? and !self.page_generator.resource.nil? - @current = WrappedPost.new( self, page_generator.resource) - end - @current - end - + #def current + # if @current.nil? and !self.page_generator.resource.nil? + # @current = WrappedPost.new( self, page_generator.resource) + # end + # @current + #end + end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/page_tag/product_attribute.rb b/spree_theme/app/models/page_tag/product_attribute.rb new file mode 100644 index 00000000..dbde9a37 --- /dev/null +++ b/spree_theme/app/models/page_tag/product_attribute.rb @@ -0,0 +1,122 @@ +module PageTag + #get attributes from current datasource + class ProductAttribute < ModelAttribute + alias_attribute :wrapped_product, :wrapped_model + + def get( attribute_name ) + attribute_value = case attribute_name + when :name + # make it as link anchor + content_tag :span, wrapped_product.name, {:id=>"p_#{self.current_piece.id}_#{wrapped_product.id}"} + when :image + product_image( wrapped_product, options[:image] ) + when :thumbnail + i = options[:image] + content_tag(:a, create_product_image_tag( i, wrapped_product, {}, current_piece.get_content_param_by_key(:thumbnail_style)), + { href: i.attachment.url( current_piece.get_content_param_by_key(:main_image_style)) } + ) + when :icon_angle_right + '>' + when :icon_angle_left + '<' + when :detail # it is same as clickable name + Spree.t('detail') + else + wrapped_product.send attribute_name + end + if attribute_name== :image && self.current_piece.is_zoomable_image? + # main image + # wrap with a, image-zoom required + # content_tag(:a, attribute_value, { class: 'image-zoom' }) + attribute_value + elsif self.current_piece.clickable? + content_tag(:a, attribute_value, { href: wrapped_product.path }) + else + attribute_value + end + end + + # get image ignore current_piece + def simple_image(style) + product_image_by_spree( wrapped_product.model, style ) + end + + def simple_image_url( style ) + image = image = get_product_image + + if image.present? + image.attachment.url(style) + else + #image_tag "noimage/#{style}.png", options + image_url "noimage/#{style}.png" + end + end + + private + def create_product_image_tag( image, product, options, style) + #Rails.logger.debug " image = #{image} product = #{product}, options= #{options}, style=#{style}" + options.reverse_merge! alt: image.alt.blank? ? product.name : image.alt + # data-big-image for jqzoom, large=600x600 + options.merge! 'data' => { 'big-image'=> image.attachment.url(:large) } + image_tag( image.attachment.url(style), options ) + end + # copy from BaseHelper#define_image_method + def product_image_by_spree(product, style, options = {}) + + image = get_product_image + if image.present? + create_product_image_tag(image, product, options, style) + else + #seems assets digest do not support template .ruby + #image_tag "noimage/#{style}.png", options + options.merge! 'data' => { 'big-image'=> "noimage/large.png" } #zoomable required + image_tag "noimage/#{style}.png", options + end + end + + # * params + # * options - available keys for image_tag + # * specified_image - show this image + def product_image(wrapped_product, specified_image = nil, options = {}) + product = wrapped_product.model + #Spree::MultiSiteSystem.with_context_site_product_images{ + main_image_style = current_piece.get_content_param_by_key(:main_image_style) + main_image_position = current_piece.get_content_param_by_key(:main_image_position) + options.merge! itemprop: "image" + # only main image have title 'click to get lightbox' + if current_piece.lightboxable? + options.merge! title: I18n.t( "theme.product_image.lightboxable") + end + + if specified_image + # mainly for feature product image slider + create_product_image_tag( specified_image, product, options, main_image_style) + elsif main_image_position>0 + if product.images[main_image_position].present? + create_product_image_tag(product.images[main_image_position], product, options, main_image_style) + end + else + product_image_by_spree( product, main_image_style, options) + end + #} + end + + def get_product_image + product = wrapped_product.model + image = nil + if product.images.empty? + if !product.is_a?(Spree::Variant) && !product.variant_images.empty? + image = product.variant_images.first + else + if product.is_a?(Spree::Variant) && !product.product.variant_images.empty? + image = product.product.variant_images.first + end + end + else + image = product.images.first + end + image + end + + end +end diff --git a/spree_theme/app/models/page_tag/products.rb b/spree_theme/app/models/page_tag/products.rb index 6a5c4b49..219980f6 100644 --- a/spree_theme/app/models/page_tag/products.rb +++ b/spree_theme/app/models/page_tag/products.rb @@ -3,27 +3,63 @@ module PageTag # key is data_source name, value is proper blog_posts_tag # self.blog_posts_tags_cache = {} class Products < ModelCollection - + class WrappedProduct < WrappedModel - self.accessable_attributes=[:id,:name,:description,:theme_id,:images,:variant_images,:has_variants?,:price_in, :price, :master, :currency, :variants_and_option_values, :grouped_option_values,:variants_for_option_value, :total_on_hand,:variant_options_hash,:product_customization_types ] + self.accessable_attributes=[:id,:name,:summary, :description,:friendly_id, :theme_id,:images,:variant_images,:has_variants?,:price_in, :price, :master, :currency, :variants_and_option_values, :grouped_option_values,:variants_for_option_value, :total_on_hand,:variant_options_hash,:product_customization_types, :build_path ] delegate *self.accessable_attributes, :to => :model - delegate :template_theme, :to=>:model + delegate :template_theme,:relations_for_relation_type, :taxons, :to=>:model + delegate :wrapped_taxon, to: :collection_tag #:model_name use by small_image def self.model_name Spree::Product.model_name end - + def product_properties self.model.product_properties.includes(:property) end - + def path - collection_tag.wrapped_taxon.partial_path + "/#{model.id}-#{model.slug}" - end - end - + # collection_tag.wrapped_taxon.partial_path + "/#{model.id}-#{model.friendly_id}" + build_path( wrapped_taxon.model ) + end + # product image and variant images + def whole_images + ( self.images + self.variant_images ).uniq + end + + def simple_image( style ) + ProductAttribute.new( nil, self ).simple_image( style ) + end + + def simple_image_url( style ) + ProductAttribute.new( nil, self ).simple_image_url( style ) + end + + def accurate_taxon_tag + current_taxon_model = wrapped_taxon.model + accurate_taxon_model = nil + #get model's taxon, related_products_by_taxon, required. + if current_taxon_model.root? && current_taxon_model.persisted? + accurate_taxon_model = self.taxons.detect{|taxon| taxon.is_descendant_of? current_taxon_model } + end + + if accurate_taxon_model + #collection_tag may cause problem, fix it as meet. + PageTag::Menus::WrappedMenu.new( wrapped_taxon.collection_tag, accurate_taxon_model ) + else + wrapped_taxon + end + + end + + #def related_products_by_relation_type( relation_type ) + # RelatedProducts.new( page_generator, relations_for_relation_type( relation_type), wrapped_taxon, self ) + #end + end + def wrapped_models - models.collect{|model| WrappedProduct.new(self, model) } + return @wrapped_models if @wrapped_models + @wrapped_models = models.collect{|model| WrappedProduct.new(self, model) } end # means the current select blog post in erubis context. @@ -33,6 +69,6 @@ def wrapped_models # end # @current #end - + end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/page_tag/related_products.rb b/spree_theme/app/models/page_tag/related_products.rb new file mode 100644 index 00000000..059710ba --- /dev/null +++ b/spree_theme/app/models/page_tag/related_products.rb @@ -0,0 +1,12 @@ + +module PageTag + class RelatedProducts < Products + + attr_accessor :wrapped_product + + def initialize(page_generator_instance, models, wrapped_taxon, wrapped_product) + super(page_generator_instance, models, wrapped_taxon) + self.wrapped_product = wrapped_product + end + end +end diff --git a/spree_theme/app/models/page_tag/template_tag.rb b/spree_theme/app/models/page_tag/template_tag.rb index db0462a1..756a76ff 100644 --- a/spree_theme/app/models/page_tag/template_tag.rb +++ b/spree_theme/app/models/page_tag/template_tag.rb @@ -1,48 +1,60 @@ +require 'action_view/helpers/tag_helper' +require 'action_view/helpers/asset_tag_helper.rb' module PageTag # template -> param_values # -> menus # -> named_resource (blog_posts, products) # -> current_resource( product, blog_post ) # # those tags required current section_instance -# template is collection of page_layout. each page_layout is section instance +# template is collection of page_layout. each page_layout is section instance class TemplateTag < Base + # should not include helper, asset_host, asset_path would not work + # include ActionView::Helpers::AssetTagHelper + QQOnlineRegEx = /wpa\.qq\.com/ + class WrappedPageLayout < WrappedModel - self.accessable_attributes=[:id,:title,:current_data_source,:wrapped_data_source_param, :data_filter,:current_contexts, :context_either?, :view_as_clickable?, :get_content_param_by_key] - attr_accessor :section_id, :page_layout - delegate *self.accessable_attributes, :to => :page_layout - + MaxTaxonDepth = 9999 + + self.accessable_attributes=[:id,:title,:current_data_source, :wrapped_data_source_param, :data_filter, :data_source_order_by, :current_contexts, :context_either?,\ + :get_content_param_by_key, :get_data_source_param_by_key, :is_container?, :is_image?, :is_zoomable_image?, :effects, :effect_param, :section_pieces, \ + :content_css_class, :section_piece_resources] + attr_accessor :section_id, :page_layout, :parent + + delegate *self.accessable_attributes, to: :page_layout + alias_attribute :template, :collection_tag + def initialize(collection_tag, page_layout, section_id) self.collection_tag = collection_tag - self.page_layout = page_layout + self.page_layout = page_layout self.section_id = section_id end - + def section page_layout.sections.select{|section| section.id == section_id }.first end - + #Usage: css selector for current section piece instance # we may need css selector for current section instance def piece_selector - if self.page_layout.id and self.section_id + if self.page_layout.id && self.section_id "s_#{self.to_key}" end end - + # section piece have no html, only some css, in this case section_selector is required for css which apply to whole section # ex. container title. def section_selector "s_#{page_layout.id}_#{page_layout.section_id}" end - + # some css apply to children but all descendants, so we need a selector to get children - # this selector indicate it is child of some parent + # this selector indicate it is child of some parent # ex. content_layout. def as_child_selector "c_#{page_layout.parent_id}" end - # some css apply to children but all descendants, so we need a selector to get children - # this selector refer to its children + # some css apply to children but all descendants, so we need a selector to get children + # this selector refer to its children def child_selector "c_#{page_layout.id}" end @@ -50,115 +62,527 @@ def child_selector def to_key "#{page_layout.id}_#{section_id}" end - + def assigned_menu_id( resource_position=0 ) assigned_id = self.collection_tag.theme.assigned_resource_id(SpreeTheme.taxon_class, page_layout, resource_position) if assigned_id==0 - assigned_id = page_layout.ancestors.collect{|ancestor| - self.collection_tag.theme.assigned_resource_id(SpreeTheme.taxon_class, ancestor, resource_position) + assigned_id = page_layout.ancestors.collect{|ancestor| + self.collection_tag.theme.assigned_resource_id(SpreeTheme.taxon_class, ancestor, resource_position) }.select{| ancestor_assigned_id | ancestor_assigned_id >0 }.last.to_i #last could be nil end assigned_id end def assigned_image_id - self.collection_tag.theme.assigned_resource_id(Spree::TemplateFile, page_layout) + self.collection_tag.theme.assigned_resource_id( Spree::TemplateFile, page_layout ) end def assigned_text_id - self.collection_tag.theme.assigned_resource_id(Spree::TemplateText, page_layout) + self.collection_tag.theme.assigned_resource_id( Spree::TemplateText, page_layout ) + end + + def assgined_relation_type + self.collection_tag.theme.assigned_resources( Spree::RelationType, page_layout ).first || self.collection_tag.theme.inherited_assigned_resources( Spree::RelationType, page_layout ).first + end + + # start from 1 + def nth_of_siblings + self.collection_tag.cached_page_layouts.values.select{|pl| pl.parent_id == page_layout.parent_id && pl != page_layout && pl.lft < page_layout.lft }.size + 1 + end + + # view content image_style ex. taxon_name, render as or ? + def clickable? + # first bit is clickable + get_content_param_by_key(:clickable) + end + + def hoverable? + # first bit is clickable + get_content_param_by_key(:hoverable) + end + + def zoomable? + is_zoomable_image? && get_content_param_by_key(:zoomable) + end + + def lightboxable? + is_image? && get_content_param_by_key(:lightboxable) + end + + def infinitescroll? + get_data_source_param_by_key( :pagination_style ) == Spree::PageLayout::PaginationStyle.infinitescroll + end + + # view content as grid. + def column_count + is_container? ? get_content_param_by_key( :model_count_in_row ) : 0 + end + + def per_page + return 0 if current_data_source.blank? + is_container? ? get_data_source_param_by_key( :per_page ).to_i : 0 + end + + # pagination as page links enable? + def pagination_enable? + # only container could have pagination + is_container? && get_data_source_param_by_key( :pagination_enable ) + end + + def attribute_name + get_data_source_param_by_key( :attribute_name ) || 'name' + end + + def truncate_at + get_content_param_by_key(:truncate_at) + end + + def datetime_style + get_content_param_by_key(:datetime_style) + end + # get href from + # content_param > current_data_item > default(home) + def href + if clickable? + # current_piece.url > current_data_item.url > current_page.url + return page_layout.href if get_content_param_by_key( :context ) > 0 + return self.collection_tag.running_data_item.path if self.collection_tag.running_data_item.present? + return self.collection_tag.current_page_tag.path + end + end + + # taxon depth for section menu + def enabled_depth + get_data_source_param_by_key(:depth) || MaxTaxonDepth + end + + def attribute_placeholder + get_data_source_param_by_key( :attribute_placeholder ) end end - - attr_accessor :page_layout_tree - attr_accessor :param_values_tag, :menus_tag, :image_tag, :text_tag, :blog_posts_tag - delegate :css, :to => :param_values_tag + + attr_accessor :param_values_tag, :menus_tag, :images_tag, :text_tag, :blog_posts_tag + delegate :css, :to => :param_values_tag delegate :menu,:menu2, :to => :menus_tag - delegate :image, :to => :image_tag + delegate :image, :to => :images_tag delegate :text, :to => :text_tag - delegate :theme, :to => :page_generator + delegate :theme, :current_page_tag, :to => :page_generator + delegate :section_selector, :to =>:current_piece + attr_accessor :current_piece + #we have to store it in template, or missing after select another page_layout. + attr_accessor :running_data_sources, :running_data_items, :running_data_source_sction_pieces, :cached_section_pieces + attr_accessor :helpers + delegate :tag, :image_tag, :content_tag, :to=> :helpers def initialize(page_generator_instance) super(page_generator_instance) self.param_values_tag = ::PageTag::ParamValues.new(self) self.menus_tag = ::PageTag::Menus.new(self) - self.image_tag = ::PageTag::TemplateImage.new(self) + self.images_tag = ::PageTag::TemplateImage.new(self) self.text_tag = ::PageTag::TemplateText.new(self) - self.page_layout_tree = theme.page_layout.self_and_descendants() + self.running_data_sources = [] + self.running_data_source_sction_pieces = [] # data_source belongs to section_piece + self.running_data_items = [] + self.cached_section_pieces = {} + self.helpers = ActionController::Base.helpers end - - #def id - # page_generator.theme.id - #end - + #Usage: call this in template to initialize current section and section_piece # should call this before call any method. #Params: page_layout_id, in fact, it is record of table page_layout. represent a section instance # section_id, it is id of table section, represent a section_piece instance, could be 0. only select page_layout - # + # def select(page_layout_id, section_id=0) + page_layout_id = self.current_piece.page_layout.id if page_layout_id==0 + key = "#{page_layout_id}_#{section_id}" + self.current_piece = cached_section_pieces[key] #current selected section instance, page_layout record - page_layout = page_layout_tree.select{|node| node.id == page_layout_id}.first - #Rails.logger.debug "select #{page_layout.title}, section_id=#{section_id}" - self.current_piece = WrappedPageLayout.new(self, page_layout, section_id) + if self.current_piece.nil? + page_layout = cached_page_layouts[page_layout_id] + self.current_piece = WrappedPageLayout.new(self, page_layout, section_id) + unless page_layout.root? + parent_key = "#{page_layout.parent_id}_0" + #cached_section_pieces[parent_key] may be nil, we do not select + self.current_piece.parent = cached_section_pieces[parent_key] + end + #Rails.logger.debug "-- cached_section_pieces =#{cached_section_pieces.keys.inspect}" + #Rails.logger.debug "-- select #{page_layout.title}, key=#{key}, parent_id=#{page_layout.parent_id}, parent=#{self.current_piece.parent.try(:page_layout).try(:title)}" + self.cached_section_pieces[key] = self.current_piece + end end - - def products( wrapped_taxon ) + + def products( wrapped_taxon, options={} ) objs = [] case self.current_piece.current_data_source - when Spree::PageLayout::DataSourceEnum.gpvs - #objs = menu.products + when Spree::PageLayout::DataSourceEnum.gpvs, Spree::PageLayout::DataSourceEnum.related_products #copy from taxons_controller#show - searcher_params = {:taxon => wrapped_taxon.id}.merge(self.current_piece.wrapped_data_source_param ).merge(self.page_generator.resource_options) - searcher = Spree::Config.searcher_class.new(searcher_params) + #searcher_params = { taxon: wrapped_taxon.resource_taxon_id }.merge(self.current_piece.wrapped_data_source_param ).merge( resource_params ) + searcher = Spree::Config.searcher_class.new( build_searcher_params( wrapped_taxon, options )) #@searcher.current_user = try_spree_current_user #@searcher.current_currency = current_currency - objs = searcher.retrieve_products + objs = searcher.retrieve_products when Spree::PageLayout::DataSourceEnum.gpvs_theme - objs = Spree::MultiSiteSystem.with_context_site1_themes{ - searcher_params ={} - if wrapped_taxon.persisted? - searcher_params.merge!(:search=>{:in_global_taxon=>wrapped_taxon.model} ) - end - searcher_params.merge!(self.current_piece.wrapped_data_source_param ).merge!(self.page_generator.resource_options) - searcher = Spree::Config.searcher_class.new(searcher_params) - searcher.retrieve_products.theme_only.to_a # explicitly load some records, or default_scope would work when out of this block. - } + #searcher_params ={} + #if wrapped_taxon.persisted? + # searcher_params.merge!(:search=>{:in_global_taxon=>wrapped_taxon.model} ) + #end + #searcher_params.merge!(self.current_piece.wrapped_data_source_param ).merge!( resource_params ) + searcher = Spree::Config.searcher_class.new( build_searcher_params( wrapped_taxon ) ) + objs = searcher.retrieve_products.theme_only.to_a # explicitly load some records, or default_scope would work when out of this block. when Spree::PageLayout::DataSourceEnum.this_product - #default_taxon.id is 0 - if self.page_generator.resource.kind_of? Spree::Product - objs = [self.page_generator.resource] + #default_taxon.id is 0 + if self.current_page_tag.product_tag.present? + objs = [self.current_page_tag.product_tag] end end - #Rails.logger.debug "self.current_piece=#{self.current_piece.title},wrapped_taxon = #{wrapped_taxon.name},objs=#{objs.inspect}" + + #Rails.logger.debug "self.current_piece=#{self.current_piece.title},wrapped_taxon = #{wrapped_taxon.name},objs=#{objs.inspect}" if objs.present? # wrapped_taxon may not be current taxon objs = Products.new( self.page_generator, objs, wrapped_taxon ) end - objs + objs end def posts( wrapped_taxon ) - + objs = [] case self.current_piece.current_data_source when Spree::PageLayout::DataSourceEnum.blog #copy from taxons_controller#show - searcher_params = {:taxon => wrapped_taxon.id}.merge(self.current_piece.wrapped_data_source_param ).merge(self.page_generator.resource_options) - searcher = SpreeTheme.post_class.searcher_class.new(searcher_params) + #searcher_params = {taxon: wrapped_taxon.resource_taxon_id}.merge(self.current_piece.wrapped_data_source_param ).merge(self.page_generator.resource_options) + searcher = SpreeTheme.post_class.searcher_class.new( build_searcher_params( wrapped_taxon ) ) #@searcher.current_user = try_spree_current_user #@searcher.current_currency = current_currency - objs = searcher.retrieve_posts + objs = searcher.retrieve_posts when Spree::PageLayout::DataSourceEnum.post - if self.page_generator.resource.kind_of? Spree::Post - objs = [self.page_generator.resource] - end + if self.page_generator.post + objs = [self.page_generator.post] + end end if objs.present? objs = Posts.new( self.page_generator, objs, wrapped_taxon) end - objs + objs + end + + # feature next_post, previous_post + def related_posts( wrapped_taxon, options = {} ) + data_filter = ( options[:data_filter] || self.current_piece.data_filter ) + current_post = (self.running_data_item_by_class( Posts::WrappedPost ) || self.current_page_tag.post_tag ) + objs = [] + if self.page_generator.post.present? + case data_filter + when Spree::PageLayout::DataSourceFilterEnum.next + item = Spree::PostClassification.where( taxon_id: wrapped_taxon.id, post_id: current_post.id ).first.try(:lower_item).try(:post) + objs << item if item.present? + when Spree::PageLayout::DataSourceFilterEnum.previous + item = Spree::PostClassification.where( taxon_id: wrapped_taxon.id, post_id: current_post.id ).first.try(:higher_item).try(:post) + objs << item if item.present? + end + end + if objs.present? + objs = Posts.new( self.page_generator, objs, wrapped_taxon) + end + objs + end + + # products in same taxon + def related_products( options = {} ) + #data_source = ( options[:data_source] || self.current_piece.current_data_source ) + data_filter = ( options[:data_filter] || self.current_piece.data_filter ) + + current_product = (self.running_data_item_by_class( Products::WrappedProduct ) || self.current_page_tag.product_tag ) + if current_product + case data_filter + when Spree::PageLayout::DataSourceFilterEnum.next + item = Spree::Classification.where( taxon_id: current_product.accurate_taxon_tag.id, product_id: current_product.id ).first.try(:lower_item).try(:product) + item.present? ? Products.new( self.page_generator, [item], current_product.accurate_taxon_tag ) : [] + when Spree::PageLayout::DataSourceFilterEnum.previous + item = Spree::Classification.where( taxon_id: current_product.accurate_taxon_tag.id, product_id: self.page_generator.resource.id ).first.try(:higher_item).try(:product) + item.present? ? Products.new( self.page_generator, [item], current_product.accurate_taxon_tag ) : [] + else + products( current_product.accurate_taxon_tag, { search:{ without_ids: [current_product.id]} } ) + end + else + [] + end + end + + def next_product + related_products( data_filter: 'next' ).first + end + + def previous_product + related_products( data_filter: 'previous' ).first + end + + def related_products_by_relation_type + current_product = (self.running_data_item_by_class( Products::WrappedProduct ) || self.current_page_tag.product_tag ) + relation_type = self.current_piece.assgined_relation_type + if current_product && relation_type + current_product.related_products( relation_type ) + else + [] + end + end + + def related_taxons( options = {} ) + data_filter = ( options[:data_filter] || self.current_piece.data_filter ) + taxon = (self.running_data_item_by_class( Menus::WrappedMenu ) || self.current_page_tag ) + objs = [] + if taxon + case data_filter + when Spree::PageLayout::DataSourceFilterEnum.next + item = taxon.right_sibling + objs << item if item.present? + when Spree::PageLayout::DataSourceFilterEnum.previous + item = taxon.left_sibling + objs << item if item.present? + else + objs = taxon.siblings + end + end + objs.collect{|item| Menus::WrappedMenu.new(self.menus_tag, item)} + end + + def next_taxon + related_taxons( data_filter: 'next' ).first + end + + def previous_taxon + related_taxons( data_filter: 'previous' ).first + end + + + # in template_tag have no method link_to, content_tag, it have to be in base_helper + def page_attribute( attribute_name = nil, options = { } ) + attribute_name ||= self.current_piece.attribute_name.to_sym + page = options.delete(:data) + options.merge! attribute_placeholder: current_piece.attribute_placeholder + + unless page + if attribute_name.to_s =~/root\_/ + # in this case, taxonomy have no running_data_item at this time. + # + # + # + # + page = self.menu + else + page = (self.running_data_item_by_class( Menus::WrappedMenu ) || self.current_page_tag) + end + end + # page may be nil + if page + PageAttribute.new( current_piece, page, options ).get( attribute_name ) + else + options.delete(:placeholder) + end + end + + # * params + # * attribute_name - symbol :name, :image, :thumbnail + # * options - + # * data - Products::WrappedProduct + # * placeholder - string + def product_attribute( attribute_name=nil, options = { } ) + attribute_name ||= self.current_piece.attribute_name.to_sym + + wrapped_model = self.running_data_item_by_class( Products::WrappedProduct ) + wrapped_model = options.delete(:data) if options.key?( :data ) + + if wrapped_model + ProductAttribute.new( current_piece, wrapped_model, options ).get( attribute_name ) + else + options.delete(:placeholder) + end + end + + # * params + # * options - file, get specified file of post + def post_attribute( attribute_name=nil, options = { } ) + attribute_name ||= self.current_piece.attribute_name.to_sym + + wrapped_model = ( options.delete(:data) || self.running_data_item_by_class( Posts::WrappedPost )) + options.merge! attribute_placeholder: current_piece.attribute_placeholder + PostAttribute.new( current_piece, wrapped_model, options ).get( attribute_name ) if wrapped_model + end + + def site_attribute( attribute_name ) + website = current_page_tag.website + attribute_value = '' + if attribute_name==:favicon + if website.favicon.present? + attribute_value = tag('link', href: website.favicon.url(:original), type: "image/x-icon", rel: "shortcut icon" ) + end + else + attribute_value = website.send attribute_name + end + if self.current_piece.clickable? + content_tag(:a, attribute_value, {href: '/'}) + elsif attribute_name==:name + # make it as link anchor + content_tag :span, attribute_value, {:id=>"p_#{self.current_piece.id}_#{website.site_id}"} + else + attribute_value + end + end + + def relation_attribute( attribute_name, options = { } ) + relation_type = self.current_piece.assgined_relation_type + attribute_value = relation_type.send attribute_name end + def font_awesome + if current_piece.content_css_class.present? + attribute_value = content_tag :i, "", { :class=>"fa "+current_piece.content_css_class } + if self.current_piece.clickable? + html_attributes = { href: self.current_piece.href } + #always open a new window for qq online support + html_attributes[:target] = '_blank' if html_attributes[:href] =~ QQOnlineRegEx + attribute_value = content_tag( :a, attribute_value, html_attributes) + end + attribute_value + end + + end + + def get_css_classes + + css_classes = '' + # handling data iteration? + # Rails.logger.debug "current_piece=#{current_piece.id},#{current_piece.title}, current_piece.is_container?=#{current_piece.is_container?}, self.running_data_sources.present?=#{self.running_data_sources.present?}" + if current_piece.is_container? + # page_layout.effects only apply to container, or bit conflict. + css_classes << current_piece.effects.join(' ') + if running_data_item.present? + current_page = self.page_generator.current_page_tag + column_count = self.running_data_source_sction_piece.column_count + i = self.running_data_item_index + #Rails.logger.debug "i=#{i}, column_count=#{column_count}, self.running_data_source_sction_piece=#{self.running_data_source_sction_piece.id}" + css_classes << ' data_first' if column_count>0 && i==0 + css_classes << ' data_last' if column_count>0 && ((i+1)%column_count==0) + css_classes << " data_#{i+1}" + + case running_data_item + when Menus::WrappedMenu + css_classes << ' data_current' if running_data_item.current? + css_classes << ' data_current_ancestor' if current_page.ancestor_ids.include?(running_data_item.id) + when Products::WrappedProduct + end + + end + end + if current_piece.parent.effects.present? + css_classes << " child_#{current_piece.nth_of_siblings}" + end + css_classes << " zoomable" if current_piece.zoomable? + css_classes << " hoverable" if current_piece.hoverable? + css_classes << " lightboxable" if current_piece.lightboxable? + css_classes << " infinitescroll" if current_piece.infinitescroll? + + css_classes << " #{current_piece.effect_param}" if current_piece.effect_param.present? + css_classes + + end + + + def cached_page_layouts + if @cached_page_layouts.nil? + @cached_page_layouts = theme.original_page_layouts.includes(:section).inject({}){ |hash,pl| hash[pl.id]=pl; hash } + end + @cached_page_layouts + end + + def running_data_source + running_data_sources.last + end + + def running_data_source_sction_piece + running_data_source_sction_pieces[ running_data_sources.size - 1 ] + end + + def running_data_item + running_data_items[ running_data_sources.size - 1 ] + end + + def running_data_item_index + #running_data_source could be array or resource + case running_data_source + when ModelCollection, Array #page.products,menu.children + running_data_source.index( running_data_item) + else # a page, a product + 0 + end + end + + def running_data_source=( data_source ) + if data_source.nil? + running_data_sources.pop + running_data_source_sction_pieces.pop + running_data_items.pop + else + running_data_sources.push data_source + running_data_source_sction_pieces[ running_data_sources.size - 1 ] = current_piece + end + end + def running_data_item=( data_item ) + running_data_items[ running_data_sources.size - 1 ] = data_item + end + + def running_data_item_by_class( klass ) + running_data_items.select{|item| item.is_a? klass }.last + end + + def build_searcher_params( wrapped_taxon, options={} ) + # a page_layout tree could have sveral gpvs assigned, each gpvs have own pagination + pagination_params = self.page_generator.resource_options[:pagination_params] + # for global search + extrernal_searcher_params = self.page_generator.resource_options[:searcher_params] + # self.current_piece.wrapped_data_source_param per_page + params = { } + params.merge! self.current_piece.wrapped_data_source_param.slice(:per_page) + + #infinitescroll pagination + if pagination_params[:pagination_plid].to_i == current_piece.id + params.merge!( pagination_params.slice(:page) ) + end + params.merge! extrernal_searcher_params + + order_by = self.current_piece.data_source_order_by + + case self.current_piece.current_data_source + when Spree::PageLayout::DataSourceEnum.gpvs, Spree::PageLayout::DataSourceEnum.related_products + # Product.in_taxon 加入排序 order('spree_products_taxons.position ASC'),order_by 将不起作用 + # 因此需要调用 search_scope :in_taxon_without_order + # 不再支持 order_by 'created_at_desc',这样排序无法支持taxon, 并且taxon内的产品排序是按照position,并且默认数据库排序既是created_at desc + if order_by.present? + search = { } + if order_by == 'created_at_desc' + # the newest products of site/taxon order by created_at + search[:sorts] = 'created_at desc' + end + #wrapped_taxon.resource_taxon_id could be nil, ex. DefaultTaxon + if wrapped_taxon.resource_taxon_id.to_i>0 + search[:in_taxon_without_order] = Spree::Taxon.find( wrapped_taxon.resource_taxon_id ) + end + params.merge!( search: search) + else + params.merge!( taxon: wrapped_taxon.resource_taxon_id ) + end + when Spree::PageLayout::DataSourceEnum.blog + params.merge!( taxon: wrapped_taxon.resource_taxon_id ) + when Spree::PageLayout::DataSourceEnum.gpvs_theme + params.merge!( taxon: wrapped_taxon.resource_taxon_id ) + #params.merge!(:search=>{:in_global_taxon=>wrapped_taxon.model} ) if wrapped_taxon.persisted? + end + #Rails.logger.debug " build_searcher_params =#{params.inspect} pagination_params=#{pagination_params.inspect} current_piece.id=#{current_piece.id}" + + params[:search] = options[:search] if options.key?( :search ) + ActionController::Parameters.new params + end + + end end diff --git a/spree_theme/app/models/page_tag/website_tag.rb b/spree_theme/app/models/page_tag/website_tag.rb index 54e85494..bd37ba4a 100644 --- a/spree_theme/app/models/page_tag/website_tag.rb +++ b/spree_theme/app/models/page_tag/website_tag.rb @@ -1,16 +1,21 @@ module PageTag class WebsiteTag < Base - class_attribute :accessable_attributes - self.accessable_attributes = [:id,:name,:design?] - delegate *self.accessable_attributes, :to => :website - - def website - page_generator.theme.website + class_attribute :accessable_attributes_from_store, :accessable_attributes_from_site + self.accessable_attributes_from_store = [:site, :name, :site_id] + self.accessable_attributes_from_site = [] + delegate *self.accessable_attributes_from_store, to: :store + delegate *self.accessable_attributes_from_site, to: :site + + def store + page_generator.theme.store end - def get(function_name) - self.website.send function_name + def design? + store.designable? end + #def get(function_name) + # self.site.send function_name + #end # template_release is nil if designing def public_path(target) diff --git a/spree_theme/app/models/page_tag/wrapped_model.rb b/spree_theme/app/models/page_tag/wrapped_model.rb index 4750b20f..59e7f8f6 100644 --- a/spree_theme/app/models/page_tag/wrapped_model.rb +++ b/spree_theme/app/models/page_tag/wrapped_model.rb @@ -4,15 +4,18 @@ class WrappedModel class_attribute :accessable_attributes self.accessable_attributes = [:id] attr_accessor :collection_tag, :model + + delegate :page_generator, to: :collection_tag + def initialize(collection_tag, model) self.model = model self.collection_tag = collection_tag end - - def path - self.collection_tag.page_generator.build_path( self ) - end - + + #def path + # self.collection_tag.page_generator.build_path( self ) + #end + # def [](attribute_name) # if accessable_attributes.include? attribute_name.to_sym # #support method name @@ -22,4 +25,4 @@ def path # end # end end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/spree/assigned_resource/abstract_section_resource.rb b/spree_theme/app/models/spree/assigned_resource/abstract_section_resource.rb new file mode 100644 index 00000000..e69de29b diff --git a/spree_theme/app/models/spree/assigned_resource/data_source_based_resource.rb b/spree_theme/app/models/spree/assigned_resource/data_source_based_resource.rb new file mode 100644 index 00000000..43ee430c --- /dev/null +++ b/spree_theme/app/models/spree/assigned_resource/data_source_based_resource.rb @@ -0,0 +1,25 @@ +module Spree + module AssignedResource + class DataSourceBasedResource + attr_accessor :page_layout + + def initialize( page_layout ) + self.page_layout = page_layout + end + + def resource_class + if page_layout.current_data_source == Spree::PageLayout::DataSourceEnum.related_products + return Spree::RelationType + end + + child_data_sources = page_layout.children.collect( &:current_data_source ).select( &:present? ) + + if child_data_sources.include? Spree::PageLayout::DataSourceEnum.related_products + return Spree::RelationType + end + + end + + end + end +end diff --git a/spree_theme/app/models/spree/assigned_resource/ids_handler.rb b/spree_theme/app/models/spree/assigned_resource/ids_handler.rb index 528378e5..62e2ce59 100644 --- a/spree_theme/app/models/spree/assigned_resource/ids_handler.rb +++ b/spree_theme/app/models/spree/assigned_resource/ids_handler.rb @@ -1,46 +1,10 @@ -# this is parser for tempate_theme.assigned_resource_ids -# assigned_resource_ids, it is serialized_hash -# { "10"=>{"spree/taxon"=>[1]}, # page_layout.id =>{ assigned_taxon_class_key=>[taxon.id]} -# "3"=>{"spree/template_file"=>[1]} # page_layout.id =>{ assigned_file_class_key=>[file.id]} -# } -# module Spree module AssignedResource module IdsHandler - - def template_resources - resource_collection = [] - assigned_resource_ids.each_pair{|page_layout_key, resources| - if resources.present? - resources.each_pair{|resource_key, resource_ids| - if resource_ids.present? - resource_ids.each_with_index{|resource_id, i| - if resource_id > 0 - resource_collection << Spree::TemplateResource.new( self, page_layout_key, resource_key, resource_id, i ) - end - } - end - } - end - } - resource_collection - end - def create_template_resource( page_layout, resource, position=0 ) - Spree::TemplateResource.new( self, get_page_layout_key( page_layout ), get_resource_class_key( resource.class ), resource.id, position ).save! - end - - - def get_resource_class_key( resource_class ) - # Spree::TemplateFile => "spree/template_file" - resource_class.to_s.underscore - end - - def get_page_layout_key( page_layout ) - page_layout.id.to_s - end - + + end end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/spree/assigned_resource/section_piece_resource.rb b/spree_theme/app/models/spree/assigned_resource/section_piece_resource.rb new file mode 100644 index 00000000..ac93aa59 --- /dev/null +++ b/spree_theme/app/models/spree/assigned_resource/section_piece_resource.rb @@ -0,0 +1,27 @@ +module Spree + module AssignedResource + class SectionPieceResource + attr_accessor :resource, :context + + def initialize( section_piece, resource_and_context ) + + self.resource, self.context = resource_and_context.split(':') + + self.context = (self.context.present? ? self.context.to_sym : DefaultTaxon::ContextEnum.home) + end + + + def resource_class + case self.resource + when 'm' + SpreeTheme.taxon_class + when 't' + Spree::TemplateText + when 'i' + Spree::TemplateFile + end + end + + end + end +end diff --git a/spree_theme/app/models/spree/assigned_resource/section_resource_glue.rb b/spree_theme/app/models/spree/assigned_resource/section_resource_glue.rb new file mode 100644 index 00000000..118d35ca --- /dev/null +++ b/spree_theme/app/models/spree/assigned_resource/section_resource_glue.rb @@ -0,0 +1,34 @@ +module Spree + module AssignedResource + module SectionResourceGlue + + def section_piece_resources + section_piece_with_resources = self.section_pieces.with_resources.first + if section_piece_with_resources.present? + section_piece_with_resources.resource_strings.collect{|res_ctx| + Spree::AssignedResource::SectionPieceResource.new( section_piece_with_resources, res_ctx ) + } + else + [] + end + end + + def data_source_based_resources + #''.present? => false + # self/children data_source include? Spree::PageLayout::DataSourceEnum.related_products + # we have to consider children's data_source, for feature relation_type.name + if self.current_data_source == Spree::PageLayout::DataSourceEnum.related_products + return Spree::AssignedResource::DataSourceBasedResource.new( self ) + end + + child_data_sources = self.children.collect( &:current_data_source ).select( &:present? ) + + if child_data_sources.include? Spree::PageLayout::DataSourceEnum.related_products + return Spree::AssignedResource::DataSourceBasedResource.new( self ) + end + + end + + end + end +end diff --git a/spree_theme/app/models/spree/assigned_resource/source_interface.rb b/spree_theme/app/models/spree/assigned_resource/source_interface.rb deleted file mode 100644 index 830d11df..00000000 --- a/spree_theme/app/models/spree/assigned_resource/source_interface.rb +++ /dev/null @@ -1,14 +0,0 @@ -# all Assignable source should implement source interface -module Spree - module AssignedResource - module SourceInterface - def find_or_copy - raise "please implement it as template source" - end - def importable? - raise "please implement it as template source" - end - end - end -end - \ No newline at end of file diff --git a/spree_theme/app/models/spree/assigned_resource/template_resource.rb b/spree_theme/app/models/spree/assigned_resource/template_resource.rb new file mode 100644 index 00000000..e629e5ac --- /dev/null +++ b/spree_theme/app/models/spree/assigned_resource/template_resource.rb @@ -0,0 +1,56 @@ +# this is class wrapper of tempate_theme.assigned_resource_ids +module Spree + module AssignedResource + class TemplateResource + attr_accessor :template_theme, :page_layout_key, :page_layout_id, :source_key, :source_id, :position + alias_attribute :to_i, :source_id + + def initialize( template_theme, page_layout_key, source_key, source_id, position = 0 ) + self.template_theme = template_theme + self.page_layout_key = page_layout_key # serialized hash key is string + self.page_layout_id = page_layout_key.to_i + self.source_key = source_key + self.source_id = source_id + self.position = position + end + + + #add + def save! + template_theme.assigned_resource_ids[page_layout_key]||={} + template_theme.assigned_resource_ids[page_layout_key][source_key]||=[] + template_theme.assigned_resource_ids[page_layout_key][source_key][position] = source_id + template_theme.save! + end + + #delete + def destroy! + # unassign resource from page_layout node + template_theme.assigned_resource_ids[page_layout_key][source_key][position] = 0 + template_theme.save! + end + + def update_attribute!(key,val) + if key == :page_layout_id + new_page_layout_key = val.to_s + template_theme.assigned_resource_ids[new_page_layout_key] = template_theme.assigned_resource_ids.delete(page_layout_key) + elsif key == :source_id + template_theme.assigned_resource_ids[page_layout_key][source_key][position] = val + end + template_theme.save! + end + + def source_class( ) + # "spree/template_file" => Spree::TemplateFile + source_key.classify.constantize + end + + def source + source_class.find_by_id source_id + end + def unscoped_source + source_class.unscoped.find_by_id source_id + end + end + end +end diff --git a/spree_theme/app/models/spree/assigned_resource/template_resource_glue.rb b/spree_theme/app/models/spree/assigned_resource/template_resource_glue.rb new file mode 100644 index 00000000..906fd394 --- /dev/null +++ b/spree_theme/app/models/spree/assigned_resource/template_resource_glue.rb @@ -0,0 +1,107 @@ +# this is parser for tempate_theme.assigned_resource_ids +# assigned_resource_ids, it is serialized_hash +# { "10"=>{"spree/taxon"=>[1]}, # page_layout.id =>{ assigned_taxon_class_key=>[taxon.id]} +# "3"=>{"spree/template_file"=>[1]} # page_layout.id =>{ assigned_file_class_key=>[file.id]} +# } +# +module Spree + module AssignedResource + module TemplateResourceGlue + + def template_resources + resource_collection = [] + assigned_resource_ids.each_pair{|page_layout_key, resources| + if resources.present? + resources.each_pair{|resource_key, resource_ids| + if resource_ids.present? + resource_ids.each_with_index{|resource_id, i| + if resource_id > 0 + resource_collection << Spree::AssignedResource::TemplateResource.new( self, page_layout_key, resource_key, resource_id, i ) + end + } + end + } + end + } + resource_collection + end + + def create_template_resource( page_layout, resource, position=0 ) + Spree::AssignedResource::TemplateResource.new( self, get_page_layout_key( page_layout ), get_resource_class_key( resource.class ), resource.id, position ).save! + end + + + def get_resource_class_key( resource_class ) + # Spree::TemplateFile => "spree/template_file" + resource_class.to_s.underscore + end + + def get_page_layout_key( page_layout ) + page_layout.id.to_s + end + + def template_resource_by_page_layout + + end + + #def resource_class( page_layout ) + # section_piece_with_resource = page_layout.section_pieces.with_resources.first + #end + + # get resources order by taxon/image/text, + # return array of resources, nil may be contained + def assigned_resources_by_page_layout( selected_page_layout = nil ) + template_resources.select{|template_resource| + template_resource.page_layout_id==selected_page_layout.id + }.collect(&:source) + end + + # all resources used by this theme + # return taxon roots/ images /texts, if none assgined, return [nil] or [] + def assigned_resources( resource_class, selected_page_layout = nil ) + selected_page_layout ||= self.page_layout_root + template_resources.select{|template_resource| + template_resource.source_class == resource_class && template_resource.page_layout_id==selected_page_layout.id + }.collect(&:source) + end + + def inherited_assigned_resources( resource_class, selected_page_layout ) + ancestor_ids = selected_page_layout.ancestors.pluck(:id ) + template_resources.select{|template_resource| + template_resource.source_class == resource_class && ancestor_ids.include?(template_resource.page_layout_id) + }.collect(&:source) + end + + # get assigned menu by specified page_layout_id, page_tag required + # params: + # resource_position: get first( position 0 ) of assigned resources by default + # logged_and_unlogged_menu required this feature + def assigned_resource_id( resource_class, selected_page_layout = nil, resource_position=0 ) + template_resources.select{|template_resource| + template_resource.source_class == resource_class && template_resource.page_layout_id==selected_page_layout.id && template_resource.position == resource_position + }.first.to_i + end + + # assign resource to page_layout node + def assign_resource( resource, selected_page_layout = nil, resource_position = 0 ) + selected_page_layout ||= self.page_layout_root + create_template_resource( selected_page_layout, resource, resource_position ) + end + # unassign resource from page_layout node + def unassign_resource( resource_class, selected_page_layout, resource_position = 0 ) + template_resources.select{|template_resource| + template_resource.source_class == resource_class && template_resource.page_layout_id==selected_page_layout.id && template_resource.position == resource_position + }.each(&:destroy!) + + end + + #clear assigned_resource from theme + def unassign_resource_from_theme!( resource ) + template_resources.select{|template_resource| + template_resource.source == resource + }.each(&:destroy!) + end + + end + end +end diff --git a/spree_theme/app/models/spree/blog.rb b/spree_theme/app/models/spree/blog.rb new file mode 100644 index 00000000..5b7c6a73 --- /dev/null +++ b/spree_theme/app/models/spree/blog.rb @@ -0,0 +1,35 @@ +class Spree::Blog < ActiveRecord::Base + + #attr_accessible :name, :permalink + + has_many :posts, :class_name => "Spree::Post", :dependent => :destroy + has_many :categories, :through => :posts, :source => :post_categories + + validates :name, :presence => true + validates :permalink, :uniqueness => true, :format => { :with => /\A[a-z0-9\-\_\/]+\z/i }, :length => { :within => 3..40 } + + before_validation :normalize_permalink + + def self.find_by_permalink!(path) + super path.to_s.gsub(/(^\/+)|(\/+$)/, "") + end + + def self.find_by_permalink(path) + find_by_permalink!(path) rescue ActiveRecord::RecordNotFound + end + + def self.to_options + self.order(:name).map{|i| [ i.name, i.id ] } + end + + def to_param + self.permalink.gsub(/(^\/+)|(\/+$)/, "") + end + +private + + def normalize_permalink + self.permalink = (permalink.blank? ? name.to_s.to_url : permalink).downcase.gsub(/(^[\/\-\_]+)|([\/\-\_]+$)/, "") + end + +end diff --git a/spree_theme/app/models/spree/blog_configuration.rb b/spree_theme/app/models/spree/blog_configuration.rb new file mode 100644 index 00000000..efed5f66 --- /dev/null +++ b/spree_theme/app/models/spree/blog_configuration.rb @@ -0,0 +1,8 @@ +class Spree::BlogConfiguration < Spree::Preferences::Configuration + + preference :disqus_shortname, :string, :default => '' + + preference :admin_posts_per_page, :integer, default: 10 + preference :posts_per_page, :integer, default: 12 + +end diff --git a/spree_theme/app/models/spree/calculator/related_product_discount.rb b/spree_theme/app/models/spree/calculator/related_product_discount.rb new file mode 100644 index 00000000..03c92190 --- /dev/null +++ b/spree_theme/app/models/spree/calculator/related_product_discount.rb @@ -0,0 +1,50 @@ +module Spree + class Calculator::RelatedProductDiscount < Spree::Calculator + def self.description + Spree.t(:related_product_discount) + end + + def compute(object) + if object.is_a?(Array) + return if object.empty? + order = object.first.order + else + order = object + end + + return unless eligible?(order) + total = order.line_items.inject(0) do |sum, line_item| + relations = Spree::Relation.where(*discount_query(line_item)) + discount_applies_to = relations.map {|rel| rel.related_to.master } + + order.line_items.each do |li| + next unless discount_applies_to.include? li.variant + discount = relations.detect { |rel| rel.related_to.master == li.variant }.discount_amount + sum += if li.quantity < line_item.quantity + (discount * li.quantity) + else + (discount * line_item.quantity) + end + end + + sum + end + + total + end + + def eligible?(order) + order.line_items.any? do |line_item| + Spree::Relation.exists?(discount_query(line_item)) + end + end + + def discount_query(line_item) + [ + 'discount_amount <> 0.0 AND relatable_type = ? AND relatable_id = ?', + 'Spree::Product', + line_item.variant.product.id + ] + end + end +end diff --git a/spree_comments/app/models/spree/comment.rb b/spree_theme/app/models/spree/comment.rb similarity index 79% rename from spree_comments/app/models/spree/comment.rb rename to spree_theme/app/models/spree/comment.rb index 34d1cb5f..0063b55e 100644 --- a/spree_comments/app/models/spree/comment.rb +++ b/spree_theme/app/models/spree/comment.rb @@ -4,7 +4,7 @@ class Spree::Comment < ActiveRecord::Base belongs_to :commentable, :polymorphic => true belongs_to :comment_type - default_scope :order => 'created_at ASC' + default_scope { order( 'created_at ASC' ) } # NOTE: install the acts_as_votable plugin if you # want user to vote on the quality of comments. @@ -15,8 +15,8 @@ class Spree::Comment < ActiveRecord::Base #attr_accessible :commentable_id, :commentable_type, :user_id, :comment_type_id, :comment, :cellphone, :email - # for translations, for each commentable object, title could be different - def comment_scope - commentable.class.name.demodulize.underscore - end + # for translations, for each commentable object, title could be different + #def comment_scope + # commentable.class.name.demodulize.underscore + #end end diff --git a/spree_comments/app/models/spree/comment_type.rb b/spree_theme/app/models/spree/comment_type.rb similarity index 100% rename from spree_comments/app/models/spree/comment_type.rb rename to spree_theme/app/models/spree/comment_type.rb diff --git a/spree_theme/app/models/spree/compiled_template_theme.rb b/spree_theme/app/models/spree/compiled_template_theme.rb new file mode 100644 index 00000000..4225ed2a --- /dev/null +++ b/spree_theme/app/models/spree/compiled_template_theme.rb @@ -0,0 +1,65 @@ +module Spree + class CompiledTemplateTheme + attr_accessor :template_theme + delegate :current_template_release, to: :template_theme + + class << self + def compiled_method_name_prefix_regex + /\A_cttm_at[\d]+_/ + end + end + + def initialize( template_theme ) + self.template_theme = template_theme + end + + def src + #Rails.cache.fetch( compiled_method_name, expires_in: 1.year) do + File.read(template_theme.layout_path) + #end + end + +# def render +# send self.compiled_method_name +# end + +# def method_missing(method_name, *args, &block) +# if template_theme_id = template_theme_id_from_method_name( method_name ) +# #Rails.logger.debug "self=#{self}, method_name=#{method_name} template_theme_id=#{template_theme_id}" +# define_compiled_template_theme_method( template_theme_id ) +# self.send(method_name, *args) +# else +# super +# end +# end + + # compliled template theme method format + # _cttm_at{current_template_release.updated_at.to_i}_#{current_template_release.theme_id} + # method for generate page, consider template theme may refer to another template_theme in design shop + def compiled_method_name + method_name = "#{compiled_method_name_prefix}#{current_template_release.theme_id}" + end + + + def compiled_method_name_prefix + "_cttm_at#{current_template_release.updated_at.to_i}_" + end + + + private + def define_compiled_template_theme_method( template_theme_id ) + + method_name = compiled_method_name +Rails.logger.info "SpreeTheme definde_method: #{method_name} #{self.object_id}" + self.send("instance_eval", "def #{method_name}; #{File.read(template_theme.layout_path)}; end", '(CompiledTemplateTheme)') + end + + # Returns style of image or nil + def template_theme_id_from_method_name(method_name) + regex = self.class.compiled_method_name_prefix_regex + if method_name.to_s.match(regex) && template_theme_id = method_name.to_s.sub(regex, '') + template_theme_id if self.current_template_release.present? + end + end + end +end diff --git a/spree_theme/app/models/spree/context/base.rb b/spree_theme/app/models/spree/context/base.rb index a533c454..e92556ed 100644 --- a/spree_theme/app/models/spree/context/base.rb +++ b/spree_theme/app/models/spree/context/base.rb @@ -1,26 +1,31 @@ module Spree module Context module Base - + # taxon|page_layout contexts, mainly it is about special path - ContextEnum=Struct.new(:home, :list, :detail, :cart, :account, :checkout, :thanks, :signup, :login, :password, :blog, :post, :logout, :either - ) [:home, :list, :detail, :cart, :account, :checkout, :thanks, :signup, :login, :password, :blog, :post, :logout, :""] - + ContextEnum=Struct.new(:home, :list, :detail, :cart, :account, :checkout, :thanks, :signup, :login, :password, :blog, :post, :logout, :search, :either + ) [:home, :list, :detail, :cart, :account, :checkout, :thanks, :signup, :login, :password, :blog, :post, :logout, :search, :""] + # context may be array, if inherited_data_source is empty, [:taxon, :gpvs, :blog, :gpvs_theme] are available datasource for current. - # gpvs is available to every context. - ContextDataSourceMap = Hash.new( [:taxon, :gpvs, :blog, :gpvs_theme] ).merge!( { ContextEnum.detail=>[:this_product], ContextEnum.post=>[:post] } ) + # gpvs is available to every context. + ContextDataSourceMap = Hash.new( [:taxonomy, :taxon, :gpvs, :blog, :gpvs_theme] ).merge!( { ContextEnum.detail=>[:this_product,:related_products], ContextEnum.post=>[:post] } ) DataSourceChainMap = { - :taxon =>[:gpvs,:blog], + taxon: [:gpvs,:blog], #:gpvs=>[:gpv_product,:gpv_group, :gpv_either], - #:gpv_product=>[:product_images,:product_options], - #:gpv_group=>[:group_products,:group_images], + #:gpv_product=>[:product_images,:product_options], + #:gpv_group=>[:group_products,:group_images], #:group_products=>[:product_images,:product_options], - :this_product=>[] + this_product: [:related_products], + related_products: [], + post: [] #keys should inclde all data_sources, test required. - } - DataSourceEnum = Struct.new(:gpvs, :this_product, :taxon, :blog, :post, :gpvs_theme )[:gpvs, :this_product, :taxon, :blog, :post, :gpvs_theme] - DataSourceEmpty = :"" - + } + DataSourceEnum = Struct.new(:none,:gpvs, :this_product, :taxonomy, :taxon, :related_taxon, :blog, :post,:related_posts, :related_products, :gpvs_theme )\ + [:'', :gpvs, :this_product, :taxonomy, :taxon, :related_taxon, :blog, :post,:related_posts, :related_products, :gpvs_theme] + DataSourceNone = :"" + + DataSourceFilterEnum = Struct.new( :next, :previous )\ + ['next', 'previous'] def context_either? raise "unimplement" end diff --git a/spree_theme/app/models/spree/context/taxon.rb b/spree_theme/app/models/spree/context/taxon.rb index e2252dcd..f88fea4b 100644 --- a/spree_theme/app/models/spree/context/taxon.rb +++ b/spree_theme/app/models/spree/context/taxon.rb @@ -3,13 +3,13 @@ module Context module Taxon extend ActiveSupport::Concern include Spree::Context::Base - + included do class_attribute :request_fullpath cattr_accessor :context_routes #(:either, :list,:detail,:cart,:account,:checkout, :thanks,:signup,:login) - self.context_routes = { + self.context_routes = { ContextEnum.home =>"/", ContextEnum.account =>"/account", ContextEnum.logout =>"/logout", @@ -20,51 +20,97 @@ module Taxon ContextEnum.either =>"/" #default_taxon for context :either is home } scope :homes, ->{ where(:page_context=> 1 )} - #FIXME what if home is not assigned to theme? + #FIXME what if home is not assigned to theme? def self.home homes.first end - + + # context is symbol + def self.get_route_by_context( some_context ) + context_routes[ some_context ] || context_routes[ ContextEnum.either ] + end + + # page context is integer + def self.get_route_by_page_context( page_context ) + #convert to symbol context first + get_route_by_context( get_context_by_page_context( page_context ) ) + end + + def self.get_context_by_page_context( target_page_context ) + case target_page_context + when 1 #home + ContextEnum.home + when 2 #cart + ContextEnum.cart + when 3 #checkout + ContextEnum.checkout + when 4 #thanks + ContextEnum.thanks + when 5 #signup + ContextEnum.signup + when 6 #login + ContextEnum.login + when 7 #accout + ContextEnum.account + when 8 + ContextEnum.blog + else + ContextEnum.list + end + end + def path - # menu.id would be nil if it is class DefaultTaxon - context_routes[current_context] || "/#{self.id.to_i}-#{self.permalink.split('/').last}" + # consider extra_html_attributes first + + # self.id, self.slug would be nil if it is class DefaultTaxon + self.extra_html_attributes.try(:[],:href) || context_routes[current_context] || "/#{self.id.to_i}-#{self.permalink.to_s.split('/').last}" end end - + # context of default taxon vary in request_fullpath # ex. /cart context is cart # /user context is account # return :either(detail or list), cart, checkout, register, login def current_context - # consider query_string d=www.dalianshops.com and preview path /template_themes/2/preview - @context_context = nil + @current_context = nil if request_fullpath.present? #for current page, request_fullpath is present - @context_context = get_context_by_full_path( request_fullpath ) + @current_context = get_context_by_full_path( request_fullpath ) end - - if @context_context.nil? + + if @current_context.nil? target_page_context = ( self.page_context>0 ? self.page_context : inherited_page_context ) - @context_context = get_context_by_page_context( target_page_context ) + @current_context = self.class.get_context_by_page_context( target_page_context ) end - @context_context + @current_context end - + def context_either? current_context ==ContextEnum.either end - + + def context_list? + current_context ==ContextEnum.list + end + + def context_blog? + current_context ==ContextEnum.blog + end + + #is it a home page? - def page_home? - page_context == 1 + def home? + # page_context == 1 + # taxon may be assigned to site.home_page, in this case, it would act as home whatever it was. + current_context == ContextEnum.home end - - #support feature + + #support feature def inherited_page_context root.page_context #return page_context if root? #ancestors.map(&:page_context).select{|i| i>0 }.last || 0 end - + def get_context_by_full_path( full_path ) case full_path when /^\/\d[^\/]*\/\d[^\/]*/ #"/3-bags/1-ruby-on-rails-tote" @@ -73,12 +119,12 @@ def get_context_by_full_path( full_path ) ContextEnum.cart when /^\/user/ ContextEnum.account - when /^\/password/ + when /^\/password/ ContextEnum.password - when /^\/account/,/users\/[\d]+\/edit/ #users/2/edit - ContextEnum.account + when /^\/account/,/users\/[\d]+\/edit/ #users/2/edit + ContextEnum.account when /^\/login/, /^\/checkout\/registration/ - ContextEnum.login + ContextEnum.login when /^\/signup/ ContextEnum.signup when /^\/checkout/ @@ -91,10 +137,12 @@ def get_context_by_full_path( full_path ) ContextEnum.post when /^\/logout/ ContextEnum.logout - when '/',/^\/\?/, /^\/template_themes/ + when /^\/products/ + ContextEnum.search + when '/',/^\/\?/, /^\/template_themes/, /^\/preview/ ContextEnum.home else - # it could be blog or list + # it could be blog or list nil # we can not identify it just from path end end @@ -102,30 +150,8 @@ def get_context_by_full_path( full_path ) PageContextEnum = Struct.new(:list, :home, :cart, :account, :signup, :login, :blog)[0, 1, 2, 7, 5, 6, 8] PageContextForFirstSiteEnum = Struct.new(:new_site)[20] - def get_context_by_page_context( target_page_context ) - case target_page_context - when 1 #home - ContextEnum.home - when 2 #cart - ContextEnum.cart - when 3 #checkout - ContextEnum.checkout - when 4 #thanks - ContextEnum.thanks - when 5 #signup - ContextEnum.signup - when 6 #login - ContextEnum.login - when 7 #accout - ContextEnum.account - when 8 - ContextEnum.blog - else - ContextEnum.list - end - end + end end - + end - \ No newline at end of file diff --git a/spree_theme/app/models/spree/decorators/commentable_decorator.rb b/spree_theme/app/models/spree/decorators/commentable_decorator.rb new file mode 100644 index 00000000..01f1ed8d --- /dev/null +++ b/spree_theme/app/models/spree/decorators/commentable_decorator.rb @@ -0,0 +1,15 @@ +Spree::Order.class_eval do + acts_as_commentable +end + +Spree::Shipment.class_eval do + acts_as_commentable +end + +Spree::TemplateTheme.class_eval do + acts_as_commentable +end + +Spree::Store.class_eval do + acts_as_commentable +end diff --git a/spree_theme/app/models/spree/decorators/designable_store_decorator.rb b/spree_theme/app/models/spree/decorators/designable_store_decorator.rb new file mode 100644 index 00000000..4e59cbe0 --- /dev/null +++ b/spree_theme/app/models/spree/decorators/designable_store_decorator.rb @@ -0,0 +1,53 @@ +Spree::Store.class_eval do + # a template_theme belong to store now. + # get themplate_themes belongs to designable store, TemplateTheme.foreign + scope :designable, ->{ where( designable: true )} + belongs_to :template_theme, :foreign_key=>"theme_id" + has_many :template_themes + has_many :template_themes, :dependent=>:destroy + belongs_to :home_page, :foreign_key=>'index_page_id', :class_name=>'Taxon' + + has_one :logo, class_name: 'Spree::StoreLogo', :as => :viewable, :dependent => :destroy + has_one :favicon, class_name: 'Spree::StoreFavicon', :as => :viewable, :dependent => :destroy + + accepts_nested_attributes_for :logo,:favicon + + # shop's resource should be in this folder + def self.document_root + File.join(Rails.root,'public') + end + + def layout + self.template_theme.present? ? self.template_theme.layout_path : nil + end + + # apply theme to site + # params - theme_or_release, TemplateTheme or TemplateRelease + def apply_theme( theme ) + self.theme_id= theme.id + save! + end + + def document_path + self.class.document_root + self.path + end + + def path + # here we have to user self.site_id, site.current may not same as self.site + # ex. current site use a theme of design site to render page + # Store.id + File.join( File::SEPARATOR + 'shops', Rails.env, self.site_id.to_s ) + end + + # for feature show template detail + # access templates of design shop + def template_accessible? + code == 'www' + end + + private + #override original one + def ensure_default_exists_and_is_unique + end + +end diff --git a/spree_theme/app/models/spree/decorators/option_value_decorator.rb b/spree_theme/app/models/spree/decorators/option_value_decorator.rb index 9408386d..48c19dde 100644 --- a/spree_theme/app/models/spree/decorators/option_value_decorator.rb +++ b/spree_theme/app/models/spree/decorators/option_value_decorator.rb @@ -2,11 +2,11 @@ has_one :image, as: :viewable, dependent: :destroy, class_name: "Spree::Image" accepts_nested_attributes_for :image # for unknown reason accepts_nested_attributes_for do not enable image_attributes - #attr_accessible :image_attributes - scope :for_product, lambda { |product| select("DISTINCT #{table_name}.*").where("spree_option_values_variants.variant_id IN (?)", product.variant_ids).joins(:variants) } - + #attr_accessible :image_attributes + + before_save :set_viewable - + private def set_viewable if image.present? @@ -14,56 +14,7 @@ def set_viewable image.viewable_id = self.id end end -end - - -Spree::Product.class_eval do - - def option_values - @_option_values ||= Spree::OptionValue.for_product(self).order(:position).sort_by {|ov| ov.option_type.position } - end - - def grouped_option_values - @_grouped_option_values ||= option_values.group_by(&:option_type) - end - - def variants_for_option_value(value) - @_variant_option_values ||= variants.includes(:option_values).all - @_variant_option_values.select { |i| i.option_value_ids.include?(value.id) } - end - # return { option_id=>{ option_value_id=>{ variant_id=>variant } } } - # - def variant_options_hash - return @_variant_options_hash if @_variant_options_hash - hash = {} - variants.includes(:option_values).each do |variant| - variant.option_values.each do |ov| - otid = ov.option_type_id.to_s - ovid = ov.id.to_s - hash[otid] ||= {} - hash[otid][ovid] ||= {} - hash[otid][ovid][variant.id.to_s] = variant.to_hash - end - end - @_variant_options_hash = hash - end + default_scope { order("#{quoted_table_name}.position") } + scope :for_product, ->(product) { select("DISTINCT #{table_name}.*").where("spree_option_value_variants.variant_id IN (?)", product.variant_ids).joins(:variants) } end - - -Spree::Variant.class_eval do - - include ActionView::Helpers::NumberHelper - - #attr_accessible :option_values - - def to_hash - #actual_price += Calculator::Vat.calculate_tax_on(self) if Spree::Config[:show_price_inc_vat] - { - :id => self.id, - :count => self.total_on_hand, - :price => self.display_price - } - end - -end \ No newline at end of file diff --git a/spree_theme/app/models/spree/decorators/product_decorator.rb b/spree_theme/app/models/spree/decorators/product_decorator.rb new file mode 100644 index 00000000..fe19d049 --- /dev/null +++ b/spree_theme/app/models/spree/decorators/product_decorator.rb @@ -0,0 +1,62 @@ +Spree::Product.class_eval do + + # Finds all products that have the ids matching the given collection of ids. + add_search_scope :without_ids do |*ids| + where.not(id: ids) + end + + #当需要按照其它字段排序时,如 created_at, updated_at, 需要调用这个方法 + add_search_scope :in_taxon_without_order do |taxon| + includes(:classifications). + where('spree_products_taxons.taxon_id' => taxon.self_and_descendants.pluck(:id)) + end + # add_simple_scopes [:ascend_by_created_at, :descend_by_created_at] + # get newer products of site + #whitelisted_ransackable_attributes << 'created_at' + + + scope :for_template, ->{ where.not( theme_id: 0 ) } + # theme_id could not be null in db + # in Rails 4.2.5 + # product.update_attributes( theme_id: '' ), sql is theme_id=NULL + before_validation :fix_attributes + + # refer to https://github.com/AgilTec/spree_variant_options + def option_values + @_option_values ||= Spree::OptionValue.for_product(self) + end + + def grouped_option_values + @_grouped_option_values ||= option_values.group_by(&:option_type) + @_grouped_option_values.sort_by { |option_type, option_values| option_type.position }.reverse + end + + def variants_for_option_value(value) + @_variant_option_values ||= variants.includes(:option_values) + @_variant_option_values.select { |i| i.option_value_ids.include?(value.id) } + end + + # return { option_id=>{ option_value_id=>{ variant_id=>variant } } } + # + def variant_options_hash + return @_variant_options_hash if @_variant_options_hash + hash = {} + variants.includes(:option_values).each do |variant| + variant.option_values.each do |ov| + otid = ov.option_type_id.to_s + ovid = ov.id.to_s + hash[otid] ||= {} + hash[otid][ovid] ||= {} + hash[otid][ovid][variant.id.to_s] = variant.to_hash + end + end + @_variant_options_hash = hash + end + + private + def fix_attributes + unless theme_id.kind_of?( Fixnum ) + self.theme_id = theme_id.to_i + end + end +end diff --git a/spree_theme/app/models/spree/decorators/product_relation_decorator.rb b/spree_theme/app/models/spree/decorators/product_relation_decorator.rb new file mode 100644 index 00000000..cfc5ccb5 --- /dev/null +++ b/spree_theme/app/models/spree/decorators/product_relation_decorator.rb @@ -0,0 +1,106 @@ +Spree::Product.class_eval do + has_many :relations, -> { order(:position) }, as: :relatable + + # When a Spree::Product is destroyed, we also want to destroy all Spree::Relations + # "from" it as well as "to" it. + after_destroy :destroy_product_relations + + # Returns all the Spree::RelationType's which apply_to this class. + def self.relation_types + Spree::RelationType.where(applies_to: to_s).order(:name) + end + + # The AREL Relations that will be used to filter the resultant items. + # + # By default this will remove any items which are deleted, or not yet available. + # + # You can override this method to fine tune the filter. For example, + # to only return Spree::Product's with more than 2 items in stock, you could + # do the following: + # + # def self.relation_filter + # set = super + # set.where('spree_products.count_on_hand >= 2') + # end + # + # This could also feasibly be overridden to sort the result in a + # particular order, or restrict the number of items returned. + def self.relation_filter + where('spree_products.deleted_at' => nil) + .where('spree_products.available_on IS NOT NULL') + .where('spree_products.available_on <= ?', Time.now) + .references(self) + end + + # Decides if there is a relevant Spree::RelationType related to this class + # which should be returned for this method. + # + # If so, it calls relations_for_relation_type. Otherwise it passes + # it up the inheritance chain. + def method_missing(method, *args) + # Fix for Ruby 1.9 + raise NoMethodError if method == :to_ary + + relation_type = find_relation_type(method) + if relation_type.nil? + super + else + relations_for_relation_type(relation_type) + end + end + + def has_related_products?(relation_method) + find_relation_type(relation_method).present? + end + + def destroy_product_relations + # First we destroy relationships "from" this Product to others. + relations.destroy_all + # Next we destroy relationships "to" this Product. + Spree::Relation.where(related_to_type: self.class.to_s).where(related_to_id: id).destroy_all + end + + private + + def find_relation_type(relation_name) + self.class.relation_types.detect { |rt| format_name(rt.name) == format_name(relation_name) } + rescue ActiveRecord::StatementInvalid + # This exception is throw if the relation_types table does not exist. + # And this method is getting invoked during the execution of a migration + # from another extension when both are used in a project. + nil + end + + # Returns all the Products that are related to this record for the given RelationType. + # + # Uses the Relations to find all the related items, and then filters + # them using +Product.relation_filter+ to remove unwanted items. + def relations_for_relation_type(relation_type) + # Find all the relations that belong to us for this RelationType, ordered by position + related_ids = relations.where(relation_type_id: relation_type.id).order(:position).select(:related_to_id) + + # Construct a query for all these records + result = self.class.where(id: related_ids) + + # Merge in the relation_filter if it's available + result = result.merge(self.class.relation_filter) if relation_filter + + # make sure results are in same order as related_ids array (position order) + if result.present? + result.where(id: related_ids).order(:position) + end + + result + end + + # Simple accessor for the class-level relation_filter. + # Could feasibly be overloaded to filter results relative to this + # record (eg. only higher priced items) + def relation_filter + self.class.relation_filter + end + + def format_name(name) + name.to_s.downcase.gsub(' ', '_').pluralize + end +end diff --git a/spree_theme/app/models/spree/decorators/sitemap_decorator.rb b/spree_theme/app/models/spree/decorators/sitemap_decorator.rb new file mode 100644 index 00000000..cc58b15b --- /dev/null +++ b/spree_theme/app/models/spree/decorators/sitemap_decorator.rb @@ -0,0 +1,6 @@ +Spree::Product.class_eval do + def self.last_updated + last_update = order('spree_products.updated_at DESC').first + last_update.try(:updated_at) + end +end diff --git a/spree_theme/app/models/spree/decorators/taxon_decorator.rb b/spree_theme/app/models/spree/decorators/taxon_decorator.rb index 0390ddd0..818476d0 100644 --- a/spree_theme/app/models/spree/decorators/taxon_decorator.rb +++ b/spree_theme/app/models/spree/decorators/taxon_decorator.rb @@ -1,81 +1,40 @@ SpreeTheme.taxon_class.class_eval do include Spree::Context::Taxon - include Spree::AssignedResource::SourceInterface + include TemplateResourcePath before_destroy :remove_from_theme + before_validation :set_default_values #for resource_class.resourceful scope :resourceful,->(theme){ roots } - - belongs_to :replacer, class_name: 'Spree::Taxon', foreign_key: 'replaced_by' + + belongs_to :replacer, class_name: 'Spree::Taxon', foreign_key: 'replaced_by' serialize :html_attributes, Hash #attr_accessible :page_context, :replaced_by, :is_clickable alias_attribute :extra_html_attributes, :html_attributes - + + def summary( truncate_at=100) + #copy from Action View Sanitize Helpers + Rails::Html::FullSanitizer.new.sanitize( description || '' ).truncate( truncate_at ) + end + def remove_from_theme Spree::TemplateTheme.native.each{|theme| - theme.unassign_resource_from_theme! self + theme.unassign_resource_from_theme! self } end - - # it is resource of template_theme - def importable? - root? - end - - # taxon is from other site - def self.find_or_copy( taxon ) - raise "only support taxon root" unless taxon.root? - - existing_taxon = roots.find_by_permalink( taxon.permalink ) - if existing_taxon.blank? - cloned_branch = taxon.clone_branch( ) - cloned_branch.save! - end - existing_taxon||cloned_branch + + + #strange, Mysql2::Error: Column 'page_context' cannot be null: UPDATE `spree_taxons` SET `html_attributes` = '--- {}\n', `page_context` = NULL, `replaced_by` = 491, `updated_at` = '2015-04-08 12:51:34' WHERE `spree_taxons`.`id` = 460 + #"taxon"=>{"name"=>"新闻中心", "replaced_by"=>"491", "page_context"=>"", "is_clickable"=>"1", "description"=>"", "meta_title"=>"", "meta_description"=>"", "meta_keywords"=>""}, + # so set page_context 0 here if it is empty? + def set_default_values + self.page_context = 0 if page_context.blank? + self.replaced_by = 0 if replaced_by.blank? end - - #copy self into current site - def clone_branch( ) - #raise "only copy taxon from design site" unless taxon.site.design? - #raise "taxon exists in current site" if self.class.exists(:permalink=>self.permalink) - cloned_branch = nil - self.site.tap{|site| - original_current_site = Spree::Site.current - Spree::Site.current = site - #copy from http://stackoverflow.com/questions/866528/how-to-best-copy-clone-an-entire-nested-set-from-a-root-element-down-with-new-tr - new_taxonomy = self.taxonomy.dup - # should not save new_taxonomy here, or new_taxonomy.root.site_id is not current site id - h = { self => self.dup } #we start at the root - ordered = self.descendants - #clone subitems - ordered.each do |item| - h[item] = item.dup - end - #resolve relations - ordered.each do |item| - cloned = h[item] - item_parent = h[item.parent] - item_parent.children << cloned if item_parent - # handle icon - end - h.values.each{|cloned| - cloned.site = original_current_site - cloned.taxonomy = new_taxonomy - } - new_taxonomy.site = original_current_site - new_taxonomy.root = h[self] - cloned_branch = h[self] - Spree::Site.current = original_current_site - } - cloned_branch - end - - #deep dup, include icon - def dup - original_dup = super - original_dup.icon = self.icon - original_dup - end -end + def stylish_with_inherited + return self.stylish if self.stylish>0 + return root.stylish + end +end diff --git a/spree_theme/app/models/spree/decorators/template_resource_path_decorator.rb b/spree_theme/app/models/spree/decorators/template_resource_path_decorator.rb new file mode 100644 index 00000000..41abd0ce --- /dev/null +++ b/spree_theme/app/models/spree/decorators/template_resource_path_decorator.rb @@ -0,0 +1,7 @@ +Spree::Product.class_eval do + include TemplateResourcePath +end + +SpreeTheme.post_class.class_eval do + include TemplateResourcePath +end diff --git a/spree_theme/app/models/spree/decorators/user_terminal_decorator.rb b/spree_theme/app/models/spree/decorators/user_terminal_decorator.rb new file mode 100644 index 00000000..adcb1285 --- /dev/null +++ b/spree_theme/app/models/spree/decorators/user_terminal_decorator.rb @@ -0,0 +1,32 @@ +Spree::PaymentMethod.class_eval do + belongs_to :user_terminal +end + +Spree::TemplateTheme.class_eval do + belongs_to :user_terminal +end + +Spree::Order.class_eval do + belongs_to :user_terminal + + # make it longer, alipay out_trade_no should unique + # ORDER_NUMBER_LENGTH = 16 + # ORDER_NUMBER_LETTERS = false + # ORDER_NUMBER_PREFIX = 'R' + + def associate_terminal!( user_terminal ) + self.user_terminal = user_terminal + attrs_to_set = { user_terminal_id: user_terminal.id } + assign_attributes(attrs_to_set) + + if persisted? + # immediately persist the changes we just made, but don't use save since we might have an invalid address associated + self.class.unscoped.where(id: id).update_all(attrs_to_set) + end + end + + def available_payment_methods + #@available_payment_methods ||= (PaymentMethod.available(:front_end) + PaymentMethod.available(:both)).uniq + @available_payment_methods ||= (Spree::PaymentMethod.available_on_front_end).select{|payment_method| payment_method.user_terminal == self.user_terminal } + end +end diff --git a/spree_theme/app/models/spree/decorators/variant_decorator.rb b/spree_theme/app/models/spree/decorators/variant_decorator.rb new file mode 100644 index 00000000..fe9f6aaa --- /dev/null +++ b/spree_theme/app/models/spree/decorators/variant_decorator.rb @@ -0,0 +1,19 @@ +Spree::Variant.class_eval do + + #include ActionView::Helpers::NumberHelper + + #attr_accessible :option_values + + def to_hash + #actual_price += Calculator::Vat.calculate_tax_on(self) if Spree::Config[:show_price_inc_vat] + { + :id => self.id, + #:count => self.total_on_hand, + :in_stock => self.in_stock?, + :price => self.display_price + #:price => number_to_currency(actual_price) + + } + end + +end diff --git a/spree_theme/app/models/spree/fake_website.rb b/spree_theme/app/models/spree/fake_website.rb index c865d95a..fbd6c626 100644 --- a/spree_theme/app/models/spree/fake_website.rb +++ b/spree_theme/app/models/spree/fake_website.rb @@ -1,12 +1,36 @@ module Spree - #it has to be in module Spree, website.template_theme require it. - class FakeWebsite < ActiveRecord::Base + #since spree support multi store, FakeWebsite respresent store now. + #it has to be in module Spree, website.template_theme require it. + class FakeWebsite < ActiveRecord::Base include SpreeTheme::SiteHelper before_validation :set_short_name - + has_many :stores + + class << self + + def current + if Thread.current[:spree_site].nil? + # website = self.find_or_initialize_by_domain_and_name('design.example.com','Design Site' ) + # #or Rails.env.development? + # if website.new_record? + # website.id = 2 + # website.theme_id = 1 + # website.save! + # end + #for test + Thread.current[:spree_site] = new + end + Thread.current[:spree_site] + end + + def current=(some_site) + ::Thread.current[:spree_site] = some_site + end + end + def set_short_name self.short_name = self.name.to_url end end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/spree/global_classification.rb b/spree_theme/app/models/spree/global_classification.rb new file mode 100644 index 00000000..bfef83f2 --- /dev/null +++ b/spree_theme/app/models/spree/global_classification.rb @@ -0,0 +1,10 @@ +module Spree + class GlobalClassification < ActiveRecord::Base + self.table_name = 'spree_products_global_taxons' + belongs_to :product, class_name: "Spree::Product" + belongs_to :taxon, class_name: "Spree::Taxon" + + # For #3494 + validates_uniqueness_of :taxon_id, :scope => :product_id, :message => :already_linked + end +end diff --git a/spree_theme/app/models/spree/html_attribute.rb b/spree_theme/app/models/spree/html_attribute.rb index 98c8c2c1..c9ed3b6b 100644 --- a/spree_theme/app/models/spree/html_attribute.rb +++ b/spree_theme/app/models/spree/html_attribute.rb @@ -2,18 +2,19 @@ module Spree # assume html_attribute could has only one manual selected value, position always is last class HtmlAttribute < ActiveRecord::Base extend FriendlyId + friendly_id :title, :use => :slugged + BOOL_TRUE='1' BOOL_FALSE='0' - + cattr_accessor :psv_for_manual_entry_enum, :unit_collection, :special_enum # slug db,bool,text,src pvalue are special #possible selected value for manual entry - self.psv_for_manual_entry_enum = {:href=>'0u', :bool=>'0b', :text=>'0t', :size=>'l1', :color=>'0c', :src=>'0i',:db=>'0d', :image=>'0i'} - self.unit_collection = {:l=>['px','em']} - - friendly_id :title, :use => :slugged - - + self.psv_for_manual_entry_enum = {:href=>'0u', :bool=>'0b', :text=>'0t', :size=>'l1', :color=>'0c', :src=>'0i',:db=>'0d', :image=>'0i', :opacity=>'l0', :duration=>'l2'} + self.unit_collection = { l: ['px','em'], + d: ['s'] + } + @@html_attribute_hash = nil def self.all_to_hash if @@html_attribute_hash.nil? @@ -22,64 +23,64 @@ def self.all_to_hash end @@html_attribute_hash end - + def self.find_by_ids(html_attribute_ids) (html_attribute_ids.kind_of? ::Array) ? all_to_hash.values_at(*html_attribute_ids) : all_to_hash.fetch(html_attribute_ids) end - - def self.[](key) - all_hash = self.all_to_hash - val = psv_for_manual_entry_enum[key] - all_hash[val.to_s] - end - + + #def self.[](key) + # all_hash = self.all_to_hash + # val = psv_for_manual_entry_enum[key] + # all_hash[val.to_s] + #end + #keys are db, bool, text, src, color #key should only be symbol def is_special?(key) - selected_value?(self.class.psv_for_manual_entry_enum[key.to_sym]) + selected_value?(self.class.psv_for_manual_entry_enum[key.to_sym]) end - + def repeats - (self.pvspecial.size>0 and self.pvspecial.size<=4) ? self.pvspecial.size : 1 + (self.pvspecial.size>0 && self.pvspecial.size<=4) ? self.pvspecial.size : 1 end - + # each i of repeats have its own possible selected values. def possible_selected_values(irepeat = 0) - + if @possible_selected_values.nil? psv = self.pvalues.split(',') psv_for_repeats= [] self.repeats.times{|i| - if self.pvalues.include?('|') + if self.pvalues.include?('|') # 'background-position', 'left|top,center|center,right|bottom,l1|l1', 'Left|top,Center|center,Right|bottom,L1|l1' - psv_for_repeats << psv.collect{|v| v.split('|')[i]} - + psv_for_repeats << psv.collect{|v| v.split('|')[i]} + else - psv_for_repeats<=0 end - + def default_possible_selected_value(repeat=0) if has_default_value? possible_selected_values[self.default_value] end end - + #return default manual value and unit - def default_manual_value(repeat=0) + def default_manual_value(repeat=0) case manual_selected_value when psv_for_manual_entry_enum[:color] ["#000000",''] @@ -146,11 +147,15 @@ def default_manual_value(repeat=0) [0,'px'] when psv_for_manual_entry_enum[:bool] [0,''] + when psv_for_manual_entry_enum[:opacity] + [1,''] + when psv_for_manual_entry_enum[:duration] + [0,''] else ['',''] end end - + def default_properties if @default_properties.nil? @default_properties = {} @@ -166,4 +171,4 @@ def default_properties @default_properties end end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/spree/html_attribute_value.rb b/spree_theme/app/models/spree/html_attribute_value.rb index a36e656c..be1d8ad6 100644 --- a/spree_theme/app/models/spree/html_attribute_value.rb +++ b/spree_theme/app/models/spree/html_attribute_value.rb @@ -1,29 +1,29 @@ -module Spree - class HtmlAttributeValue +module Spree + class HtmlAttributeValue attr_accessor :html_attribute, :param_value attr_accessor :properties #hash {pvalue0, psvalue0, unit0, psvalue0_desc, unset, computed} - + delegate :default_properties, :to=>:html_attribute # create an instance from a string it is param_value.pvalue[html_attribute_id] - # create an instance from hash {pvalue0, psvalue0, unit0} + # create an instance from hash {pvalue0, psvalue0, unit0} # params: computed, html_attribute_id is in section_piece_param.computed_ha_ids. - def self.parse_from(param_value, html_attribute, pvalue_properties={}, computed = false) - + def self.parse_from(param_value, html_attribute, pvalue_properties={}, media_width = 0) + if pvalue_properties.empty? #pvalue_string could be nil, in this case, get default_pvalue_string? - pvalue_properties = do_parse(param_value, html_attribute) + pvalue_properties = do_parse(param_value, html_attribute, media_width) else # build htmlAttributeValue instane from postd params, we need check "unset" param, set to false if it is nil. # tidy posted pvalue_properties, only keep valid values. html_attribute.repeats.times{|i| psvalue = pvalue_properties["psvalue#{i}"] - if html_attribute.manual_entry?( psvalue ) + if html_attribute.manual_entry?( psvalue ) if pvalue_properties["pvalue#{i}"].blank? #user select manual_entry, but have not entry any value pvalue_properties["pvalue#{i}"], pvalue_properties["unit#{i}"] = html_attribute.default_manual_value - end + end #else - # pvalue_properties.except!(["pvalue#{i}","unit#{i}"]) + # pvalue_properties.except!(["pvalue#{i}","unit#{i}"]) end } # if unset is uncheck, 'unset' is nil in posted params. @@ -31,7 +31,7 @@ def self.parse_from(param_value, html_attribute, pvalue_properties={}, computed pvalue_properties["unset"] = HtmlAttribute::BOOL_FALSE end end - + # default unset is checked if pvalue_properties["unset"].nil? pvalue_properties["unset"] = HtmlAttribute::BOOL_TRUE @@ -39,37 +39,37 @@ def self.parse_from(param_value, html_attribute, pvalue_properties={}, computed if pvalue_properties["hidden"].nil? pvalue_properties["hidden"] = HtmlAttribute::BOOL_FALSE end - # is computed value store in param_value.pvalue, true or false, + # is computed value store in param_value.pvalue, true or false, if pvalue_properties["computed"].nil? pvalue_properties["computed"] = HtmlAttribute::BOOL_FALSE end - + return ultra_initialize(param_value, html_attribute, pvalue_properties) end - + #every html_attribute_value, should have defalut value, or pvalue is nil after unset - def self.do_parse(param_value, html_attribute) - #use html attribute value in param_value.pvalue + def self.do_parse(param_value, html_attribute, media_width) + #use html attribute value in param_value.pvalue pvalue_string = param_value.pvalue_for_haid(html_attribute.id) - pvalue_unset = param_value.html_attribute_extra(html_attribute.id,'unset') - pvalue_hidden = param_value.html_attribute_extra(html_attribute.id,'hidden') - pvalue_computed = param_value.html_attribute_extra(html_attribute.id,'computed') - + pvalue_unset = param_value.html_attribute_extra(html_attribute.id,'unset') + pvalue_hidden = param_value.html_attribute_extra(html_attribute.id,'hidden') + pvalue_computed = param_value.html_attribute_extra(html_attribute.id,'computed') + object_properties = {"unset"=>pvalue_unset, "hidden"=>pvalue_hidden, "computed"=>pvalue_computed} - param_value_class = param_value.section_param.section_piece_param.pclass + #param_value_class = param_value.section_param.section_piece_param.pclass if html_attribute.is_special? :text object_properties["psvalue0"] = html_attribute.possible_selected_values.first object_properties["pvalue0"] = pvalue_string elsif html_attribute.is_special? :bool object_properties["psvalue0"] = html_attribute.possible_selected_values.first - object_properties["pvalue0"] = pvalue_string + object_properties["pvalue0"] = pvalue_string elsif html_attribute.is_special? :db object_properties["psvalue0"] = html_attribute.possible_selected_values.first object_properties["pvalue0"] = pvalue_string.to_i else # css and pvalue_string - if pvalue_string.present? + if pvalue_string.present? html_attribute_slug, vals = pvalue_string.split(':') - # 'width:'.split(':') -> ['width'], in this case vals is nil, + # 'width:'.split(':') -> ['width'], in this case vals is nil, # it happened while user select a manul entry and have not enter anything. we should show the empty entry. repeats = html_attribute.repeats val_arr = vals.nil? ? [] : vals.split() @@ -78,7 +78,7 @@ def self.do_parse(param_value, html_attribute) if val.nil? # handle short value. padding:5px; or margin: 5px 5px; # 0,1,2,3 # t,r,b,l 3%2=1, 2%2=0, 1%2=1 - val||= val_arr[i%2] + val||= val_arr[i%2] val||= val_arr[0] end if html_attribute.selected_value?(val) @@ -88,16 +88,16 @@ def self.do_parse(param_value, html_attribute) if html_attribute.is_special?(:color) #border-color has unit hex|rgb object_properties["pvalue#{i}"] = val if html_attribute.has_unit? - object_properties["unit#{i}"] = (val=~/^#/ ? html_attribute.units.first : html_attribute.units.last) + object_properties["unit#{i}"] = (val=~/^#/ ? html_attribute.units.first : html_attribute.units.last) end elsif html_attribute.has_unit? - object_properties["pvalue#{i}"],object_properties["unit#{i}"] = (val.to_i == val.to_f ? val.to_i : val.to_f),val[/[a-z%]+$/] + object_properties["pvalue#{i}"],object_properties["unit#{i}"] = (val.to_i == val.to_f ? val.to_i : val.to_f),val[/[a-z%]+$/] else object_properties["pvalue#{i}"] = val end end } - + elsif html_attribute.has_default_value? object_properties.merge!( html_attribute.default_properties ) end @@ -105,7 +105,7 @@ def self.do_parse(param_value, html_attribute) #Rails.logger.debug "param_value:#{param_value.id}, html_attribute=#{html_attribute.slug},pvalue_string=#{pvalue_string.inspect}, pclass=#{param_value_class},properties=#{object_properties.inspect}" object_properties end - + def self.build_pvalue_from_properties(param_value, html_attribute, pvalue_properties) #use overrided value in pvalue_properties pvalue_string = nil @@ -114,85 +114,90 @@ def self.build_pvalue_from_properties(param_value, html_attribute, pvalue_proper elsif html_attribute.is_special? :bool pvalue_string = pvalue_properties["pvalue0"] elsif html_attribute.is_special? :db - pvalue_string = pvalue_properties["pvalue0"] - elsif html_attribute.is_special? :image - #background-image is special, + pvalue_string = pvalue_properties["pvalue0"] + elsif html_attribute.is_special? :image + #background-image is special, # for param_value: format is css_name:file_name; in this way, editor is easy to parse and render - # for css: format is css_name:url(file_url); - pvalue_string = html_attribute.css_name+':'+ ( html_attribute.manual_entry?(pvalue_properties["psvalue0"]) ? "#{pvalue_properties["pvalue0"]}" : pvalue_properties["psvalue0"] ) + # for css: format is css_name:url(file_url); + pvalue_string = html_attribute.css_name+':'+ ( html_attribute.manual_entry?(pvalue_properties["psvalue0"]) ? "#{pvalue_properties["pvalue0"]}" : pvalue_properties["psvalue0"] ) else - pvalue_string = html_attribute.css_name+':'+ build_css_property_value( html_attribute, pvalue_properties ) + pvalue_string = html_attribute.css_name+':'+ build_css_property_value( html_attribute, pvalue_properties, param_value ) end pvalue_string end - - def self.build_css_property_value( html_attribute, pvalue_properties ) + + def self.build_css_property_value( html_attribute, pvalue_properties, param_value ) val = '' if html_attribute.is_special?(:image) if html_attribute.manual_entry?(pvalue_properties["psvalue0"]) - file = TemplateFile.find_by_attachment_file_name( pvalue_properties["pvalue0"] ) + file = TemplateFile.find_by( theme_id: param_value.theme_id, attachment_file_name: pvalue_properties["pvalue0"] ) if file.present? val = "url(#{file.attachment.url})" end else val = pvalue_properties["psvalue0"] - end + end else - val = html_attribute.repeats.times.collect{|i| + vals = html_attribute.repeats.times.collect{|i| if html_attribute.is_special? :color #no need unit for color - html_attribute.manual_entry?(pvalue_properties["psvalue#{i}"]) ? - "#{pvalue_properties["pvalue#{i}"]}" : pvalue_properties["psvalue#{i}"] + html_attribute.manual_entry?(pvalue_properties["psvalue#{i}"]) ? + "#{pvalue_properties["pvalue#{i}"]}" : pvalue_properties["psvalue#{i}"] else - html_attribute.manual_entry?(pvalue_properties["psvalue#{i}"]) ? - "#{pvalue_properties["pvalue#{i}"]}#{pvalue_properties["unit#{i}"]}" : pvalue_properties["psvalue#{i}"] + html_attribute.manual_entry?(pvalue_properties["psvalue#{i}"]) ? + "#{pvalue_properties["pvalue#{i}"]}#{pvalue_properties["unit#{i}"]}" : pvalue_properties["psvalue#{i}"] end - }.join(' ') + } + if html_attribute.css_name == 'background-size' && html_attribute.selected_value?( vals[0]) + vals = vals.uniq # ['contain' 'contain'] => ['contain'] + end + val = vals.join(' ') end val end - + def self.ultra_initialize(param_value, html_attribute, properties) hav = HtmlAttributeValue.new hav.html_attribute = html_attribute hav.param_value = param_value - hav.properties = properties + hav.properties = properties hav end - - + + # param: properties to string {'pvalue0'=>'90','unit0'=>'px'} -> 'wdith:90px' def build_pvalue(default=false) - + return default ? self.class.build_pvalue_from_properties(param_value, html_attribute, html_attribute.default_properties) : self.class.build_pvalue_from_properties(param_value, html_attribute, properties) end - + def equal_to?(another_instance) - return ((self.html_attribute.id==another_instance.html_attribute.id) and - (self.hidden? == another_instance.hidden?) and - ((self.unset? and another_instance.unset?) or - ((self.unset? == another_instance.unset?) and (self.build_pvalue ==another_instance.build_pvalue) ))) + return ((self.html_attribute.id==another_instance.html_attribute.id) and + (self.hidden? == another_instance.hidden?) and + ((self.unset? and another_instance.unset?) or + ((self.unset? == another_instance.unset?) and (self.build_pvalue ==another_instance.build_pvalue) ))) end - - # get pvalue, psvalue, unit, unset + + # get pvalue, psvalue, unit, unset # if the reperts==1 key are pvalue, psvalue, unit,unset - # if the reperts>1 hav[pvalue{n}],hav[psvalue{n}], hav[unit{n}] ,n start from 0 + # if the reperts>1 hav[pvalue{n}],hav[psvalue{n}], hav[unit{n}] ,n start from 0 def [](key) - + #return properties[key] if key=~/unset/ # pvalue and pvalue0 both return pvalue0 - key=~/[\d]$/ ? properties[key] : properties[key+'0'] - + key=~/[\d]$/ ? properties[key] : properties[key+'0'] + end - - # set pvalue, psvalue, unit, unset + + # set pvalue, psvalue, unit, unset # if the reperts==1 key are pvalue, psvalue, unit,unset - # if the reperts>1 key are pvalue{n}, psvalue{n}, n start from 0 + # if the reperts>1 key are pvalue{n}, psvalue{n}, n start from 0 + # ex. ['pvalue'] = '500px' def []=(key,val) #unset or bool like this way - if val.kind_of?(TrueClass) or val.kind_of?(FalseClass) + if val.kind_of?(TrueClass) || val.kind_of?(FalseClass) val = val ? HtmlAttribute::BOOL_TRUE : HtmlAttribute::BOOL_FALSE - end + end if key=~/unset/ properties[key] = val #it has default value at least while initialize! @@ -203,7 +208,7 @@ def []=(key,val) else self.html_attribute.repeats.times{|i| properties[key+i.to_s] = val - } + } end if key=~/pvalue/ # in code we could set 'width=200' # correct psvalue and unit @@ -218,88 +223,90 @@ def []=(key,val) end end end - + # return pvalue with right type, db:int, bool:bool, text:string def pvalue( irepeat = 0) - casted_value = properties["pvalue#{irepeat}"] + casted_value = properties["pvalue#{irepeat}"] if html_attribute.computable? if unset? casted_value = 0 else casted_value = casted_value.to_i - end + end end casted_value end - + def unset return unset? ? HtmlAttribute::BOOL_TRUE : HtmlAttribute::BOOL_FALSE end - + def unset? return properties["unset"]!=HtmlAttribute::BOOL_FALSE end - + def hidden return hidden? ? HtmlAttribute::BOOL_TRUE : HtmlAttribute::BOOL_FALSE - end - + end + def hidden? return properties["hidden"]==HtmlAttribute::BOOL_TRUE end - + def bool_true? - self.properties['pvalue']==HtmlAttribute::BOOL_TRUE ? true:false + self.properties['pvalue']==HtmlAttribute::BOOL_TRUE ? true:false end - + def manual_entry?(irepeat=0) html_attribute.manual_entry?(properties["psvalue#{irepeat}"]) end - + def computed return properties["computed"] end - + def computed? return properties["computed"]==HtmlAttribute::BOOL_TRUE end - + #request url when pvalue|psvalue|unset changed - # event_enum :ps_changed| :psv_changed + # event_enum :ps_changed| :psv_changed def build_url_params(event_enum) - + { :editing_param_value_id=> param_value.id, :editing_html_attribute_id=>html_attribute.id, :param_value_event=>ParamValue::EventEnum[event_enum]} - + end - + begin 'css selector, name, value' - # from param_value page_layout_id, section_param.section_id, section_param.section_root_id, section_param.class_name get selector and prefix - def css_selector - target = self.param_value.section_param.section_piece_param.class_name + # from param_value page_layout_id, section_param.section_id, section_param.section_root_id, section_param.class_name get selector and prefix + def css_selector + target = attribute_class_name prefix = case target when /cell/ # s_cell or cell - ".s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_root_id} td, .s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_root_id} th" + ".s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_root_id} td, .s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_root_id} th" when /^s\_/ target = target[2..-1] ".s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_root_id}" - when /page/ + when /page|sidr/ "#page" when 'content_layout','first_child','last_child' - ".c_#{self.param_value.page_layout_id}" - when /(label|input|img|button)/ # product_atc, product_quantity - ".s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_root_id}" - when 'as_h','a_h','a','th','td','li' - ".s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_id}" + ".c_#{self.param_value.page_layout_id}" + #when /(label|input|img|button|block)/ # product_atc, product_quantity, block_hover + # ".s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_root_id}" + #when 'as_h','a_h','a','th','td','li' + # ".s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_root_id}" else - ".s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_id}" + ".s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_root_id}" end - - # it has to apply to inner, for root, outer is body, it include editor panel, some css would affect it. + + # it has to apply to inner, for root, outer is body, it include editor panel, some css would affect it. selector = case target - when /content_layout/,/block/,/cell/,'page' - "" + when /content_layout/,'block','block_h',/cell/,'page' + "" + when /block_/ #block_hovered + ".#{target}" when /inner/ - "_#{target}" + "> .inner" when 'as_h','a_sel' #selected:hover, selected " a.selected" when 'a_una' # unavailable, unclickable @@ -307,65 +314,46 @@ def css_selector when 'a','a_h' " a" #when 'first_child','last_child' - # # it is not right way to center content, + # # it is not right way to center content, # # in html, we may add form to wrap each child, first-child do not work in this case. # # padding,margin is applied to inner, it also affect width of outer div # ":#{target[/[a-z]+/]} " when /\_h$/ #button_h " #{target.delete('_h')}" when 'error' #s_error - " label.error" + " label.error" when 'table','label','input','li','img','button','td','th','h6','dt','dd' # product quantity,atc section_piece content just input,add a wrap it. # product images content thumb and main images so here should be section_id, " #{target}" + when /pagination/ + " #{target.sub('-',' ')}" else #noclick, selected " .#{target}" end -#Rails.logger.debug "css selector:#{prefix+selector}, #{attribute_name}:#{attribute_value}" +#Rails.logger.debug "css selector:#{prefix+selector}, #{attribute_name}:#{attribute_value}" prefix+selector - end - + end + def attribute_name self.html_attribute.css_name end + def attribute_value - target_properties = unset? ? default_properties : properties - self.class.build_css_property_value( self.html_attribute, target_properties ) + target_properties = unset? ? default_properties : properties + self.class.build_css_property_value( self.html_attribute, target_properties, self.param_value ) + end + + def attribute_class_name + self.param_value.section_param.section_piece_param.class_name end end - - # update param_value with self + + # update param_value with self def update() #Rails.logger.debug "yes, in HtmlAttributeValue.save" self.param_value.update_html_attribute_value(self.html_attribute, self.properties, 'system') end - - - - # possible selected values are website related, ex. menus. -=begin - def possible_selected_values - if @possible_selected_values.nil? - if html_attribute.is_special? :db - @possible_selected_values = html_attribute.possible_selected_values - else - @possible_selected_values = html_attribute.possible_selected_values - end - end - @possible_selected_values - end - def possible_selected_values_descriptions - if @possible_selected_values_descriptions.nil? - if html_attribute.is_special? :db - @possible_selected_values_descriptions = html_attribute.possible_selected_values_descriptions - #@possible_selected_values_descriptions+=(Menu.roots.collect{|menu| menu.title}) - else - @possible_selected_values_descriptions = html_attribute.possible_selected_values_descriptions - end - end - @possible_selected_values_descriptions - end -=end + end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/spree/html_page.rb b/spree_theme/app/models/spree/html_page.rb index 0893b01d..193076f0 100644 --- a/spree_theme/app/models/spree/html_page.rb +++ b/spree_theme/app/models/spree/html_page.rb @@ -1,41 +1,41 @@ # a template, actually it is html + css + data # sometimes, we want to handle html+css. ex. edit template theme. - - # since page_layout tree is full html page, each page_layout node is a section instance, + + # since page_layout tree is full html page, each page_layout node is a section instance, # is piece of html, it has some param_values, some param_values relate to positioning. # ex. width, height, padding, margin, border. for coding convenient, we want quick accessor # to those html attribute from a page_layout, ex. page_layout.width, page_layout.height. # this HtmlAttributeAccessor just do this. - + # page_layout may has several template. so the right direction is template.one_page_layout.width - -module Spree + +module Spree class HtmlPage# it correspond to template - + attr_accessor :template - + def initialize( template ) self.template = template end - + def param_values # only get param_values of section.root - pvs = ParamValue.eager_load(section_param: :section_piece_param).where(["#{ParamValue.table_name}.theme_id=? and #{SectionParam.table_name}.section_root_id=#{SectionParam.table_name}.section_id", self.template.id]) + pvs = ParamValue.eager_load(section_param: :section_piece_param).where(["#{ParamValue.table_name}.theme_id=? and #{SectionParam.table_name}.section_root_id=#{SectionParam.table_name}.section_id", self.template.id]) end - + # disassemble template into partial_html def partial_htmls @partial_htmls =[] #get general param values for section instances - - page_layouts = self.template.page_layout.self_and_descendants + + page_layouts = self.template.page_layouts # class_name = [block, inner, page, layout] - pvs = self.param_values - + pvs = self.param_values + for page_layout in page_layouts pvs_for_layout = pvs.select{|pv| pv.page_layout_id==page_layout.id} parent_section_instance = @partial_htmls.select{|obj| obj.is_parent_of?(page_layout)}.first - new_section_instance =PartialHtml.new(self, page_layout, parent_section_instance, pvs_for_layout) + new_section_instance =PartialHtml.new(self, page_layout, parent_section_instance, pvs_for_layout) @partial_htmls << new_section_instance if parent_section_instance parent_section_instance.children << new_section_instance @@ -43,19 +43,19 @@ def partial_htmls end return @partial_htmls end - + class PartialHtml # it correspond to page_layout node GlobalParamValueEventEnum={"page_layout_fixed"=>10} SectionEventEnum = {:disabled_event=>1, :removed_event=>2} - + attr_accessor :html_page, :page_layout, :section, :param_values, :parent, :children attr_accessor :updated_html_attribute_values # keep unsaved html_attribute_values - - + + # a page_layout record, infact it is a setion instance. # # parent_section_instance, we need param values of parents of current section instance while handling event, ex. parent's width. - + def initialize(html_page, page_layout, parent_section_instance=nil, pvs=[]) self.page_layout = page_layout self.section = page_layout.section @@ -65,21 +65,21 @@ def initialize(html_page, page_layout, parent_section_instance=nil, pvs=[]) self.updated_html_attribute_values =[] #Rails.logger.debug "PartialHtml.initialize.param_values=#{pvs.inspect}" end - + def is_parent_of?( other_page_layout) self.page_layout.id == other_page_layout.parent_id end - + def children_hash if @children_hash.nil? - @children_hash = children.inject({}){|h, c| h[c.slug] = c;h;} + @children_hash = children.inject({}){|h, c| h[c.slug] = c;h;} end @children_hash end - + # set or get html_attribute_value by key. # key is section_param.class_name+html_attribute.slug. ex."block_width" - # new_attribute_values, instance of HtmlAttributeValue, + # new_attribute_values, instance of HtmlAttributeValue, def html_attribute_values(key) if @html_attribute_value_hash.nil? @html_attribute_value_hash = {} @@ -88,99 +88,100 @@ def html_attribute_values(key) pv.html_attribute_values_hash.values.each{|hav| unique_key = hav.computed? ? "computed_#{class_name}_#{hav.html_attribute.css_name}" : "#{class_name}_#{hav.html_attribute.css_name}" @html_attribute_value_hash[unique_key]=hav - } + } end end hav = @html_attribute_value_hash[key] end - begin "width, height, margin, padding, border only for computing" - # return: 0(self is fluid) or >0(real width) - def width - # it is root and fluid - return 0 if self.root? and !html_attribute_values("page_layout_fixed").bool_true? + begin "width, height, margin, padding, border only for computing" + # return: 0(self is fluid) or >0(real width) + def width + # it is root and fluid + return 0 if self.root? && html_attribute_values("page_width").unset? # it is root and fixed - return html_attribute_values("page_width")['pvalue'] if self.root? - + return html_attribute_values("page_width")['pvalue'] if self.root? + # self width unset, parent content layout is vertical. - if self.html_attribute_values("block_width").unset? and self.parent.content_layout_vertical? + if self.html_attribute_values("block_width").unset? && self.parent.content_layout_vertical? #TODO consider the computed margin, computed_padding caused by 'border image' margin, border, padding = html_attribute_values("inner_margin"), html_attribute_values("inner_border-width"), html_attribute_values("inner_padding") - computed_width = self.parent_width - computed_width -= (margin['pvalue1']+margin['pvalue3']) unless margin.unset? - computed_width -= (border['pvalue1']+border['pvalue3']) unless border.unset? - computed_width -= (padding['pvalue1']+padding['pvalue3']) unless padding.unset? - return computed_width + computed_width = self.parent_width + computed_width -= (margin['pvalue1']+margin['pvalue3']) unless margin.unset? + computed_width -= (border['pvalue1']+border['pvalue3']) unless border.unset? + computed_width -= (padding['pvalue1']+padding['pvalue3']) unless padding.unset? + return computed_width end - - return self.html_attribute_values("block_width")['pvalue'].to_i + + return self.html_attribute_values("block_width")['pvalue'].to_i end - + def parent_width self.parent.width end - - # return: 0(self is fluid) or >0(real width) - def height - # it is root - return 0 if self.root? + + # return: 0(self is fluid) or >0(real width) + def height + # it is root + return 0 if self.root? hav = self.html_attribute_values("block_height") # self width unset, parent content layout is vertical. - return hav.pvalue + return hav.pvalue end - + def margin hav = self.html_attribute_values("inner_margin") # self width unset, parent content layout is vertical. # in case 'auto'.to_i => 0 - return [hav.pvalue(0), hav.pvalue(1), hav.pvalue(2), hav.pvalue(3)] + return [hav.pvalue(0), hav.pvalue(1), hav.pvalue(2), hav.pvalue(3)] end - - def padding + + def padding hav = self.html_attribute_values("inner_padding") # self width unset, parent content layout is vertical. - return [hav.pvalue(0), hav.pvalue(1), hav.pvalue(2), hav.pvalue(3)] + return [hav.pvalue(0), hav.pvalue(1), hav.pvalue(2), hav.pvalue(3)] end - + def border hav = self.html_attribute_values("inner_border-width") # self width unset, parent content layout is vertical. return [hav.pvalue(0), hav.pvalue(1), hav.pvalue(2), hav.pvalue(3)] end - end + end def save updated_html_attribute_values.each{|hav| hav.update } # update param_value.pvalue updated_html_attribute_values.collect{|hav| hav.param_value}.uniq.each{|pv| pv.save} - # save param_value.pvalue - updated_html_attribute_values.pop(updated_html_attribute_values.length) + # save param_value.pvalue + updated_html_attribute_values.pop(updated_html_attribute_values.length) end - + def fixed? #decide by width and parent's content_layout_horizontal - # width=unset && parent's content_layout_horizontal = true or width=100% or fixed=true(only for root) + # width=unset && parent's content_layout_horizontal = true or width=100% or fixed=true(only for root) self.width>0 end - - + + def root? self.page_layout.root? end - + def container? # has html_attribute_value: content_layout_horizontal - ! html_attribute_values("content_layout_clear").nil? + html_attribute_values("content_layout_clear").present? end - + #FIXME def content_layout_vertical? - not html_attribute_values("content_layout_clear").bool_true? + # bootstrap column have no param :content_layout_clear + container? && !html_attribute_values("content_layout_clear").bool_true? end - + def section_slug self.section.slug - end + end alias_method :[],:html_attribute_values end - + end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/spree/image_decorator.rb b/spree_theme/app/models/spree/image_decorator.rb new file mode 100644 index 00000000..80dbcf52 --- /dev/null +++ b/spree_theme/app/models/spree/image_decorator.rb @@ -0,0 +1,45 @@ +Spree::Image.class_eval do + #override attachement[:path] + attachment_definitions[:attachment][:url] = '/shops/:rails_env/:site/products/:id/:basename_:style.:extension' + attachment_definitions[:attachment][:path] = ':rails_root/public/shops/:rails_env/:site/products/:id/:basename_:style.:extension' + attachment_definitions[:attachment][:styles] = { mini: '48x48>', small: '100x100>', product: '240x240>', medium: '350x350>', large: '600x600>' } + + extend SpreeMultiSite::PaperclipAliyunOssHelper + +end + +Spree::Taxon.class_eval do + #override attachement[:path] + #attachment_definitions[:icon][:url] = '/shops/:rails_env/:site/taxons/:id/:style/:basename.:extension' + #attachment_definitions[:icon][:path] = ':rails_root/public/shops/:rails_env/:site/taxons/:id/:style/:basename.:extension' + #extend SpreeMultiSite::PaperclipAliyunOssHelper +end + +#Spree::Post.class_eval do +# #override attachement[:path] +# attachment_definitions[:cover][:url] = '/shops/:rails_env/:site/posts/:id/:basename_:style.:extension' +# attachment_definitions[:cover][:path] = ':rails_root/public/shops/:rails_env/:site/posts/:id/:basename_:style.:extension' +# extend SpreeMultiSite::PaperclipAliyunOssHelper +#end + +#Spree::TemplateFile.class_eval do +# attachment_definitions[:attachment][:url] = "/shops/:rails_env/:site/:class/:id/:basename_:style.:extension" +# attachment_definitions[:attachment][:path] = ":rails_root/public/shops/:rails_env/:site/:class/:id/:basename_:style.:extension" +# extend SpreeMultiSite::PaperclipAliyunOssHelper +#end + +# these class do not define in spree and spree_multi_site, we should specify in +# site_scope_required_classes_with_image_from_other_gems, or cause error uninitialized constant +# eventhough spree_multi_site is in spree_abc, tests in spree_multi_site would not work. +# [['Spree::Post',:cover],['Spree::TemplateFile',:attachment]] +Rails.application.config.spree_multi_site.site_scope_required_classes_with_image_from_other_gems.each do | klass, attachement_name_symbol| +# extra_class.class_eval do +# include Spree::MultiSiteSystem +# end + klass.constantize.class_eval do + # Spree::Post => 'posts' class.to_s.demodulize.underscore.pluralize + attachment_definitions[attachement_name_symbol][:url] = "/shops/:rails_env/:site/:class/:id/:basename_:style.:extension" + attachment_definitions[attachement_name_symbol][:path] = ':rails_root/public/shops/:rails_env/:site/:class/:id/:basename_:style.:extension' + extend SpreeMultiSite::PaperclipAliyunOssHelper + end +end diff --git a/spree_theme/app/models/spree/multi_site_configuration.rb b/spree_theme/app/models/spree/multi_site_configuration.rb new file mode 100644 index 00000000..524d2ac0 --- /dev/null +++ b/spree_theme/app/models/spree/multi_site_configuration.rb @@ -0,0 +1,4 @@ +module Spree + class MultiSiteConfiguration < Preferences::Configuration + end +end diff --git a/spree_theme/app/models/spree/page_layout.rb b/spree_theme/app/models/spree/page_layout.rb index a46c2d3d..f8d6d527 100644 --- a/spree_theme/app/models/spree/page_layout.rb +++ b/spree_theme/app/models/spree/page_layout.rb @@ -1,79 +1,100 @@ +# section param effect on content, we use data_source_param, such as pagination +# section param effect on css, we use content_param, such as clickable, image size + + +# content_param: 内容参数 columns=n/clickable=1/image_size +# css_class_for_js: css 类, 应用于js。 +# css_class: css 类, 应用于css。 CSS bootstrap .col-xs-n, .container, .container-fluid +# content_css_class(css_class_for_font): 字体图标 awesomefont/glyphicon, +# TODO: 定制font-awesome, css_class 可以支持这个功能。 +# data_source: 数据源类型, 菜单/产品/文章 +# data_source_param: 数据源参数 per_page +# 一个模板可以定义产品列表/文章列表的多个显示样式,每个页面可以选择适用的样式。 +# stylish: 样式号码,用于实现上述需求, +# page_layout 和 taxon 分别有自己的样式号码,即页面声明的样式号码与模板的样式号码一致时,显示相应模板 +# 样式号码为0时,表示通用,即这个section适用任意页面,无论这个页面的stylish设置为多少 + + + module Spree class PageLayout < ActiveRecord::Base - #extend FriendlyId include Spree::Context::Base + include Spree::AssignedResource::SectionResourceGlue + + PaginationStyle = Struct.new( :page_links, :pn_links, :infinitescroll, :more, :none )['1', 'pn', 'i', 'm', '0'] - acts_as_nested_set :scope=>"root_id" # scope is for :copy, no need to modify parent_id, lft, rgt. - belongs_to :section - has_many :themes, :class_name => "TemplateTheme",:primary_key=>:root_id,:foreign_key=>:page_layout_root_id - has_many :param_values + # depth is massed up while duplicate full set. so we disable it here. + acts_as_nested_set :scope=>['template_theme_id' ], :depth_column=>'notallowed', :dependent=> :destroy # scope is for :copy, no need to modify lft, rgt. + belongs_to :section + belongs_to :template_theme, :class_name =>'Spree::TemplateTheme' + # has_many :themes, :class_name => "TemplateTheme",:primary_key=>:root_id,:foreign_key=>:page_layout_root_id + has_many :param_values, dependent: :delete_all # this table is used by other site, should not use scope here # we want title to support multi-language, so disable friendly_id - #friendly_id :title, :use => :slugged - #has_many :full_set_nodes, :class_name =>'PageLayout', :foreign_key=>:root_id, :primary_key=>:root_id + # friendly_id :title, :use => :slugged has_many :sections, :class_name =>'Section', :foreign_key=>:root_id, :primary_key=>:section_id has_many :section_pieces, :through=>:sections # remove section relatives after page_layout destroyed. - before_destroy :remove_section - before_save :fix_data_source_param - - scope :full_html_roots, where(:is_full_html=>true,:parent_id=>nil) + # before_destroy :remove_section + before_validation :set_default_values + + delegate :is_html_root?, :is_container?, :is_image?, :is_zoomable_image?, to: :section + + scope :full_html_roots, ->{ where(:is_full_html=>true,:parent_id=>nil) } #attr_accessible :section_id,:title attr_accessor :current_contexts, :inherited_contexts - + class << self - # create component, it is partial layout, no html body, composite of some sections. + # create component, it is partial layout, no html body, composite of some sections. #notice: attribute section_id, title required # section.root.section_piece_id should be 'root' - def create_layout(section, title, attrs={}) - #create record in table page_layouts - layout = create!(:section_id=>section.id) do |obj| - obj.title = title - obj.site_id = SpreeTheme.site_class.current.id - obj.attributes = attrs unless attrs.empty? - obj.section_instance = 1 - obj.is_full_html = section.section_piece.is_root? - end - layout.update_attribute("root_id",obj.id) - layout - end - - + #def create_layout(section, title, attrs={}) + # layout = create!(:section_id=>section.id) do |obj| + # obj.title = title + # obj.attributes = attrs unless attrs.empty? + # obj.section_instance = 1 + # obj.is_full_html = section.section_piece.is_root? + # end + # layout.update_attribute("root_id",obj.id) + # layout + #end + + # user copy decendants of a layout to new root layout while user copy theme to new theme. # since copy to new root, there is no section_instance confliction. - def copy_decendants_to_new_parent(new_parent, original_parent, ordered_nodes) - original_children = ordered_nodes.select{|node| node.parent_id == original_parent.id } - for node in original_children - new_node = node.dup - new_node.parent_id = new_parent.id - new_node.root_id = new_parent.root_id - new_node.save! - if node.has_child? - copy_decendants_to_new_parent(new_node, node, ordered_nodes ) - end - end - # copy_from_root_id means we have copied all decendants from that tree. - if new_parent.root? - update_all(["copy_from_root_id=?",original_parent.id],['root_id=?',new_parent.id]) - end - end - + #def copy_decendants_to_new_parent(new_parent, original_parent, ordered_nodes) + # original_children = ordered_nodes.select{|node| node.parent_id == original_parent.id } + # for node in original_children + # new_node = node.dup + # new_node.parent_id = new_parent.id + # new_node.root_id = new_parent.root_id + # new_node.save! + # if node.has_child? + # copy_decendants_to_new_parent(new_node, node, ordered_nodes ) + # end + # end + # # copy_from_root_id means we have copied all decendants from that tree. + # if new_parent.root? + # where( root_id: new_parent.id ).update_all(["copy_from_root_id=?",original_parent.id]) + # end + #end + # * description - copy :page_layout_tree whole tree - # * params + # * params # * ordered_nodes - whole tree node collection, it is ordered by left # * return - new ordered nodes - def copy_to_new(ordered_nodes, new_attributes = nil) - #create new root first, get new root id. - original_root = ordered_nodes.first - new_layout = original_root.dup - new_layout.root_id = 0 # reset the lft,rgt. - new_layout.save! - new_layout.update_attribute("root_id", new_layout.id) - copy_decendants_to_new_parent(new_layout, original_root, ordered_nodes) - new_layout.reload.self_and_descendants - end + #def copy_to_new(ordered_nodes, new_attributes = nil) + # #create new root first, get new root id. + # original_root = ordered_nodes.first + # new_layout = original_root.dup + # new_layout.root_id = 0 # reset the lft,rgt. + # new_layout.save! + # new_layout.update_attribute("root_id", new_layout.id) + # copy_decendants_to_new_parent(new_layout, original_root, ordered_nodes) + # new_layout.reload.self_and_descendants + #end end - + # verify :come_contexts valid to :target_contexts # home is special list # ex. [:cart] is valid to [:either] taxon <-> page_layout @@ -82,220 +103,349 @@ def copy_to_new(ordered_nodes, new_attributes = nil) # [:list] is invalid to [:home] # [:home] is invalid to [:list] # [:either] is valid to [:home] page_layout <-> page_layout, called by update_section_context - + def self.verify_contexts( some_contexts, target_contexts ) some_contexts = [some_contexts] unless some_contexts.kind_of?( Array ) - #Rails.logger.debug "some_contexts=#{some_contexts.inspect}, target_contexts=#{target_contexts}, [ContextEnum.either]=#{[ContextEnum.either].inspect}" - ( some_contexts==[ContextEnum.either] || target_contexts==[ContextEnum.either] || (target_contexts&some_contexts)==some_contexts ) - #|| (some_contexts==[ContextEnum.home]&&target_contexts.include?(ContextEnum.list)) + #Rails.logger.debug "some_contexts=#{some_contexts.inspect}, target_contexts=#{target_contexts}, [ContextEnum.either]=#{[ContextEnum.either].inspect}, is_valid = #{ret}" + ret = ( some_contexts==[ContextEnum.either] || target_contexts==[ContextEnum.either] || (target_contexts&some_contexts)==some_contexts ) || (some_contexts==[ContextEnum.search] && target_contexts.include?(ContextEnum.list)) + #|| (some_contexts==[ContextEnum.home]&&target_contexts.include?(ContextEnum.list)) end - #theme.document_path use it - def site - SpreeTheme.site_class.find( self.site_id ) + # get section css selector, then replace html with new rendered content + # it is same as TemplateTag/WrappedPageLayout, consider merge them. + #def section_selector + # "s_#{self.id}_#{self.section_id}" + #end + def duplicator + PageLayoutDuplicator.new( self.root ) end - - + begin ' page_layout content' - # a page_layout tree could be whole html or partial html, it depend's on self.section.section_piece.is_root?, + # a page_layout tree could be whole html or partial html, it depend's on self.section.section_piece.is_root?, # it is only for root. - def is_html_root? - self.section.section_piece.is_root? - end - - # view content image_style ex. taxon_name, render as or ? - def view_as_clickable? - # first bit is clickable - if respond_to? :content_param - get_content_param_by_key(:clickable) - else - true - end + + # use as css class, later js select elements by those class + def effects + if @effect_classes.nil? + clickable = get_content_param_by_key( :clickable ) + param_value = get_content_param() + @effect_classes =[] + Section::MouseEffect.each_pair{|effect,val| + # 00001000 + # & 00001111 => val + if( (param_value & Section::MouseEffectMask) == val) + @effect_classes << ( clickable ? "click_effect_#{effect}" : "hover_effect_#{effect}" ) + end + } + end + @effect_classes + end + + # a section could link to .... ex. font-awesome could link to home + def href + some_context = get_content_param_by_key( :context ) + SpreeTheme.taxon_class.get_route_by_page_context( some_context ) + end + + def has_extra_selector? + # hover_bigger child1,child2... data1,data2... zoomable columns>0, data_first,data_last infinitescroll + self.effect_param.present? || self.effects.present? || parent.effects.present? || parent.data_source.present? || self.get_content_param > 0 || parent.get_content_param > 0 || self.data_source_param.present? end - + + # * description - content_param is integer, each bit has own mean for each section. # * params # * key - clickable, taxon_name, render as or ? # - image-size, main product image size, [small|product|large|original] - # + # - columns, eliminate margin-right of last column - bit3, def get_content_param_by_key(key) + # bit 1, 2,3,4,5,6,7,8,9 + # 2+4+8+16+32+64+128 = 254 + default_truncate_at = 100; + # content_param int(11) 4bytes 4*8=32bits case key - when :clickable - content_param&1 >0 - when :main_image_style - #bit 2,3,4 - idx = (content_param&14)>>1 - #default is medium - [:medium, :large, :product, :small, :original ].fetch( idx, :medium ) + when :clickable # apply to container/taxon/product/post attributes + # generate + # bit 1, product:name,image, taxon:name,icon + get_content_param&1 >0 + when :hoverable # apply to container/taxon/product/post attributes + # apply hover css + # bit 12 + get_content_param&2048 >0 + when :lightboxable # product image + # bit 13 + get_content_param&4096 >0 + when :model_count_in_row #bit 1,2,3,4 # apply to container + #how many model this container + get_content_param&15 + when :datetime_style # post time + # bit 2,3,4 + idx = (get_content_param&14)>>1 + # 000x , 001x, 010x, 011x, 100x + [:datetime, :date, :time, :simple_date ].fetch( idx, :datetime ) + + when :main_image_style # section slider, product_image_with_thumbnail + ## bit 2,3,4 + #idx = (get_content_param&14)>>1 + ## default is medium + ## 000x , 001x, 010x, 011x, 100x + #[:medium, :large, :product, :small, :original ].fetch( idx, :medium ) + get_parsed_image_param.image_size when :thumbnail_style - #bit 5,6,7 - idx = (content_param&112)>>4 - [:mini, :large, :medium, :small, :original].fetch( idx, :mini ) + ## bit 5,6,7 + #idx = (get_content_param&112)>>4 + #[:mini, :large, :medium, :small, :original].fetch( idx, :mini ) + get_parsed_image_param.thumbnail_size + when :main_image_position # section product image + ## bit 9, 10, product-image + ## 256 + 512 = 768 + #(get_content_param&768)>>8 + get_parsed_image_param.image_position when :zoomable - #bit 8 - content_param&128>0 - else + # bit 8 + get_content_param&128 > 0 + when :form_enabled # container + # wrap section with form, ex. product quantity, product options, add_to_cart + # by default there is no form any more, add_to_cart button require form, + # bit 10 + get_content_param&512 > 0 + when :form_disabled # + # in some case, we want to disable wrapped form of product attributes, + # ex. show product image only. + # http://jssor.com/development/define-slides-html-code.html + # in slider_scrolling, jssor require
      , not + # bit 11 + get_content_param&1024 > 0 + when :remote_form_enabled # support ajax add to cart + # bit 10&&11 + val = get_content_param + ( val&1024 > 0 ) && ( val&512 > 0 ) + when :truncate_at # post summary + # bit 2, 3, 4, 5, 6, 7, 8, 9, + # 2+ 4+ 8+ 16 +32+ 64+ 128+ 256 = 510 + val = get_content_param&510 + val>0 ? val : default_truncate_at + when :context + #图标生成链接时,需要知道对应的 context. + # bootstrap_glyphicon could link to home/cart... + #bit 2,3,4,5,6 max is 31 + #000010 000100 000110 001000 001010 001100 001110 010000 010010 + #2:home 4:cart 6:checkout 8:thanks 10:signup 12:login 14:account 16:blog 18:list + #1 2 3 4 5 6 7 8 9 # keep it same as taxon.page_context + (get_content_param&62)>>1 + else nil - end + end end - + #:clickable,:main_image_style,:thumbnail_style def update_content_param( options ) options.each_pair{|key, val| - content_param |= val.to_i - } - save! + content_param |= val.to_i + } + save! + end + + # we want to inherit content_param form section, page_layout could override it. + # ex. section have hover effect, page_layout should have hover effect by default. + # get content from section, if self.content_param==0. + def get_content_param + self.content_param == 0 ? section.content_param : self.content_param + end + + # + #返回 ParsedImageStyle + def get_parsed_image_param + parsed_image_style_class = Struct.new(:image_size, :image_position, :thumbnail_size, :thumbnail_position) + parsed_image_style = parsed_image_style_class.new('medium', 0, 'mini', 0) + # image_param 格式 + # medium large,0/mini,0 600w_600h_1x,0/mini,0 + # + if image_param.present? + master_style, thumbnail_style = image_param.split('/') + if master_style.present? + image_size, image_position = master_style.split(',') + parsed_image_style.image_size, parsed_image_style.image_position = image_size, image_position.to_i + end + if thumbnail_style.present? + image_size, image_position = thumbnail_style.split(',') + parsed_image_style.thumbnail_size, parsed_image_style.thumbnail_position = image_size, image_position.to_i + end + end + parsed_image_style end end - + def has_child? return (rgt-lft)>1 end - - #get whole tree and select ancestors, rails would cache whole tree, this would save time than get ancestors for each node - def cached_level - tree = self.root.self_and_descendants - tree.select{|node| node.lftrgt}.count + + + def stylish_with_inherited + return self.stylish if self.stylish>0 + #在解析模板的每一个page_layout时,都需要调用这个方法,这会发生查询每一个节点的前辈, + #为了减少数据库查询和便于缓存,这里使用查询这个树,再找前辈的方式 + + #inherited = self.ancestors.select{|page_layout| page_layout.stylish >0 }.last + inherited = self.root.self_and_descendants.select{|page_layout| page_layout.is_ancestor_of?(self) }.select{|page_layout| page_layout.stylish >0 }.last + + return inherited.stylish if inherited.present? + return 0 end - + # get applicable resources for self def applicable_reources self.section.self_and_descendants(:include=>:section_piece).select{|node| node.section_piece.resources }.select{|resource| resource.present?} end - - + + def partial_html pvs = self.param_values.includes(:section_param=>:section_piece_param) HtmlPage::PartialHtml.new(nil, self, nil, pvs) end - - begin 'modify page layout tree' + + begin 'modify page layout tree' # * usage - copy whole tree - # * return - root of new copied whole tree - def copy_to_new(new_attributes = nil) - raise "only work for root" unless root? - #create new root first, get new root id. - self.class.copy_to_new( self_and_descendants, new_attributes ).first - end - + # * return - root of new copied whole tree + #def copy_to_new(new_attributes = nil) + # raise "only work for root" unless root? + # #create new root first, get new root id. + # self.class.copy_to_new( self_and_descendants, new_attributes ).first + #end + + #def copy_to_new(new_attributes = nil) + # raise "only work for root" unless root? + # #create new root first, get new root id. + # duplicated = self.duplicator.duplicate + # duplicated.save! + # duplicated + #end + # it is not using # Usage: modify layout, add the section instance as child of current node into the layout, - # Params: page_layout, instance of model PageLayout + # Params: page_layout, instance of model PageLayout # return: added page_layout record - # + # #def add_section(section, attrs={}) # # check section.section_piece.is_container? # obj = nil - # if section.root? and self.section.section_piece.is_container + # if section.root? and self.section.section_piece.is_container # whole_tree = self.root.self_and_descendants # section_instance = whole_tree.select{|xnode| xnode.section_id==section.id}.size.succ - # attrs[:title]||="#{section.slug}#{section_instance}" + # attrs[:title]||="#{section.slug}#{section_instance}" # obj = self.dup # obj.section_id, obj.section_instance=section_id, section_instance # obj.assign_attributes( attrs ) - # obj.save! + # obj.save! # obj.move_to_child_of(self) # end # obj #end - + # Usage: remove param_values belong to self in every theme while destroy self(page_layout record) def remove_section remove_param_value() end - #Usage: add param_value of section into this layout + #Usage: add param_value of section into this layout def add_param_value(theme) # section_id, section_piece_param_id, section_piece_id, section_piece_instance, is_enabled, disabled_ha_ids # all section_params belong to section tree. # section_tree = self.section.self_and_descendants.includes(:section_params) # get default values of this section #TODO no need add param_value any more, use default value before user modify it - layout_id = self.id - layout_root_id = self.root_id + page_layout_root_id = self.root.id for section_node in self.section.self_and_descendants.includes(:section_params) section_params = section_node.section_params for sp in section_params #use root section_id - ParamValue.create(:page_layout_root_id=>layout_root_id, :page_layout_id=>layout_id) do |pv| + ParamValue.create(:page_layout_root_id=>page_layout_root_id, :page_layout_id=>self.id) do |pv| pv.section_param_id = sp.id pv.theme_id = theme.id - pv.pvalue = sp.default_value + pv.pvalue = sp.default_value #set default empty {} for now. end end end - - end - + + end + def remove_param_value() - #layout_root_id = self.root_id #ParamValue.delete_all(["page_layout_id=? and theme_id in (?)", self.id, themes.collect{|obj|obj.id }]) - ParamValue.delete_all(["page_layout_id=? ", self.id]) + ParamValue.delete_all(["page_layout_id=? ", self.id]) end - + def demote if left_sibling.present? move_to_child_of( left_sibling ) end end - + def promote unless root? move_to_right_of( parent ) - end + end end - + # replace section with another section, this section only for development for now # ex. we developed a section with new feature, a page_layout tree want to have this feature, it could replace its original section with new section. # for leaf we could just remove a section, then add new one. Root or some ancestor, replace is better way for developer and user. def replace_with( new_section) #1. delete all param_values of original section. - #2. update section_id of current page_layout. + #2. update section_id of current page_layout. #3. add new param_values of new sections for each template theme which is using current page_layout - self.remove_param_value() + self.remove_param_value() new_section_instance = self.root.self_and_descendants.select{|xnode| xnode.section_id==new_section.id }.size.succ self.section_id, self.section_instance=new_section.id, new_section_instance - self.save! + self.save! self.themes.each{|theme| - self.add_param_value(theme) + self.add_param_value(theme) } - end - end - + end + end + begin 'section content, html, css, js' - def build_content() - tree = self.self_and_descendants.includes(:section=>:section_piece) + def build_content( special_contexts=[] ) + tree = self.self_and_descendants.includes(:section=>[:section_piece, :full_set_nodes]) # have to Section.all, we do not know how many section_pieces each section contained. sections = Section.includes(:section_piece) section_hash = sections.inject({}){|h, s| h[s.id] = s; h} css = build_css(tree, self, section_hash) - html = build_html(tree, section_hash) + htmls = build_htmls(tree, section_hash, special_contexts) js = build_js(tree, sections) - return html, css, js + return htmls, css, js end - + # Usage: build html, js, css for a layout - # Params: theme_id, - # if passed, build css for that theme, or build css for default theme - def build_html(tree, section_hash) - build_section_html(tree, self, section_hash) + # Params: theme_id, + # if passed, build css for that theme, or build css for default theme + # 返回数组 + def build_htmls(tree = [], section_hash = {}, special_contexts=[]) + if special_contexts.present? + special_contexts.map{|special_context| + build_section_html(tree, self, section_hash, special_context) + } + else + [:any_context].map{ + build_section_html(tree, self, section_hash) + } + end end - + def build_css(tree, node, section_hash, theme_id=0) - css = section_hash[node.section_id].build_css - css.insert(0, get_section_script(node)) - unless node.leaf? + css = node.section.build_css + css.insert(0, get_section_script(node)) + unless node.leaf? children = tree.select{|n| n.parent_id==node.id} for child in children - subcss = build_css(tree, child, section_hash) + subcss = build_css(tree, child, section_hash) css.concat(subcss) end end css end - + def build_js(tree, sections) section_ids = tree.collect{|node|node.section_id} section_piece_ids = sections.select{|s| section_ids.include?(s.root_id) or section_ids.include?(s.id) }.collect{|s| s.section_piece_id} @@ -303,28 +453,28 @@ def build_js(tree, sections) if section_piece_ids.present? section_pieces = SectionPiece.find(section_piece_ids) js = section_pieces.inject(''){|sum, sp| sum.concat(sp.js); sum} - end + end return js end # highlight this page_layout. - # or get subsection of section tree. + # or get subsection of section tree. def css_selector( subsection = nil ) subsection.blank? ? ".s_#{id}_#{section_id}" : ".s_#{id}_#{subsection.id}" end - + end - + #param: some_event could be a global_param_value changed event or a section_event. def subscribe_event?( some_event) section_events = self.section.subscribed_global_event_array - section_events.include? some_event.event_name + section_events.include? some_event.event_name end - - #usage: raise this global_param_value_event to whole layout tree or not + + #usage: raise this global_param_value_event to whole layout tree or not def raise_event?( some_event) - reserved_section_events = self.section.global_event_array - reserved_section_events.include? some_event.event_name + reserved_section_events = self.section.global_event_array + reserved_section_events.include? some_event.event_name end # get all descendants which reserved the :some_event def nodes_for_event(some_event) @@ -335,19 +485,19 @@ def nodes_for_event(some_event) end @subscribe_event_nodes_hash[some_event.event_name] end - - begin 'handle context' - # a section could have several contexts, means it could appear in serveral kind of pages - # return array of current contexts + + begin 'handle context' + # a section could have several contexts, means it could appear in serveral kind of pages + # return array of current contexts def current_contexts if @current_contexts.blank? @current_contexts = ( self.section_context.present? ? self.section_context.split(',').map(&:to_sym) : inherited_contexts ) end @current_contexts end - + # * params - # * new_context - one value of Contexts or an array of contexts + # * new_context - one value of Contexts or an array of contexts def update_section_context( new_context) new_context = [new_context] unless new_context.kind_of?( Array ) new_context = new_context.map(&:to_sym) # "".to_sym == ContextEnum.either @@ -355,7 +505,7 @@ def update_section_context( new_context) # test would check section_context,so keep it as string self.update_attribute(:section_context,new_context.join(',')) if new_context.first != ContextEnum.either - #update descendant's context, + #update descendant's context, self.descendants.where(["section_context!=?",ContextEnum.either]).each{|node| #only reset context if desendant's context is invalid for new_context. unless self.class.verify_contexts( node.current_contexts, new_context ) @@ -363,10 +513,10 @@ def update_section_context( new_context) end } #TODO correct descendants's data_source - self.update_data_source( DataSourceEmpty ) + self.update_data_source( DataSourceNone ) end end - + # called in current_page_tag def valid_context?(some_context) self.class.verify_contexts some_context.to_sym, current_contexts @@ -383,38 +533,37 @@ def context_list? def context_detail? current_contexts.include? ContextEnum.detail end - - #def context_either? - # current_contexts.include? ContextEnum.either - #end + def context_either? + current_contexts.include? ContextEnum.either + end end - + begin 'handle data source' # * data source has two parts, data and filter, separated by '|' # * current data_source could be nil - def current_data_source - self.data_source.present? ? self.data_source.to_sym : DataSourceEmpty + def current_data_source + self.data_source.present? ? self.data_source.to_sym : DataSourceNone end - - def inherited_data_source - return DataSourceEmpty if self.root? - ancestor_data_source = self.ancestors.collect{|page_layout| page_layout.data_source }.last - ancestor_data_source.present? ? ancestor_data_source.to_sym : DataSourceEmpty + + def inherited_data_source + return DataSourceNone if self.root? + ancestor_data_source = self.ancestors.collect{|page_layout| page_layout.data_source }.last + ancestor_data_source.present? ? ancestor_data_source.to_sym : DataSourceNone end - + # verify new_data_source def update_data_source( new_data_source ) # update self data_source - original_data_source = self.data_source + original_data_source = self.data_source self.data_source = new_data_source if new_data_source.blank? || self.is_valid_data_source? self.update_attribute(:data_source,new_data_source ) #verify descendants, fix them. - verify_required_descendants = self.descendants.where('data_source!=?', DataSourceEmpty) + verify_required_descendants = self.descendants.where('data_source!=?', DataSourceNone) for node in verify_required_descendants unless node.is_valid_data_source? - node.update_data_source(DataSourceEmpty) + node.update_data_source(DataSourceNone) end end else @@ -422,41 +571,41 @@ def update_data_source( new_data_source ) end self end - + # * is self.data_source valid to ancestors def is_valid_data_source? is_valid = false - if self.current_data_source != DataSourceEmpty - if self.inherited_data_source == DataSourceEmpty # top level data source + if self.current_data_source != DataSourceNone + if self.inherited_data_source == DataSourceNone # top level data source section_contexts = self.current_contexts if section_contexts.length == 1 available_data_sources = ContextDataSourceMap[section_contexts.first] if available_data_sources.present? is_valid = ( available_data_sources.include? self.current_data_source ) - end + end else #TODO validate data source for more than on section contexts is_valid = true - end + end else #sub level data source -#Rails.logger.debug "self.inherited_data_source=#{self.inherited_data_source}" + #Rails.logger.debug "self.inherited_data_source=#{self.inherited_data_source}" is_valid = ( DataSourceChainMap[self.inherited_data_source].include? self.current_data_source) end else - is_valid = true - end -#Rails.logger.debug "is_valid = #{is_valid}" + is_valid = true + end +#Rails.logger.debug "is_valid = #{is_valid}" is_valid end - + # get available data sources for self def available_data_sources data_sources = [] if self.current_contexts.size == 1 - the_context = self.current_contexts.first + the_context = self.current_contexts.first if the_context != ContextEnum.either the_data_source = self.inherited_data_source - if the_data_source == DataSourceEmpty # top level data source + if the_data_source == DataSourceNone # top level data source data_sources = ContextDataSourceMap[the_context] else data_sources = DataSourceChainMap[the_data_source] @@ -464,91 +613,174 @@ def available_data_sources end end data_sources - end - + end + def wrapped_data_source_param params = {} if data_source_param.present? - if current_data_source == DataSourceEnum.gpvs || current_data_source == DataSourceEnum.blog - params[:per_page]= data_source_param.to_i + + splited_params = data_source_param.split(',') + if current_data_source == DataSourceEnum.gpvs || current_data_source == DataSourceEnum.blog || current_data_source == DataSourceEnum.related_products + + params[:per_page]= splited_params[0].to_i + params[:pagination_enable] = ( splited_params[1].blank? || splited_params[1] == '1') + params[:pagination_style] = ( splited_params[2] ) + + elsif current_data_source == DataSourceEnum.taxonomy + params[:depth] = splited_params[0].to_i + else + # section :page_attribute, :product_attribute, :post_attribute + params[:attribute_name] = splited_params[0] + params[:attribute_placeholder] = splited_params[1] end end params - end - end - - - private - # section_context could be more than one. - def inherited_contexts - #ancestors order by lft - if @inherited_contexts.blank? - ancestor_context = self.ancestors.where('section_context!=?','').collect{|page_layout| page_layout.section_context }.last - @inherited_contexts = ( ancestor_context.present? ? ancestor_context.split(',').map(&:to_sym) : [ContextEnum.either] ) end - @inherited_contexts + + def get_data_source_param_by_key( key ) + wrapped_data_source_param[key] + end + end - - def inherited_section_context - #ancestors order by lft - ancestor_context = self.ancestors.where('section_context!=?','').collect{|page_layout| page_layout.section_context }.last - ancestor_context.present? ? ancestor_context.to_sym : ContextEnum.either + + # self.css_class + self.usage + def get_css_class + css = String.new() + css << css_class if css_class.present? + #css << css_class_for_js if css_class_for_js.present? + css << " "+ self.section.usage_css_name + css end - - - def build_section_html(tree, node, section_hash) + + private + # a page_layout build itself. + def build_section_html(tree, node, section_hash, special_context = nil) + # + return '' if special_context.present? && !node.valid_context?(special_context) return '' unless node.is_enabled? subpieces = "" - unless node.leaf? + unless node.leaf? subnodes = tree.select{|n| n.parent_id==node.id} for child in subnodes next unless child.is_enabled? - subpiece = build_section_html(tree, child, section_hash) + subpiece = build_section_html(tree, child, section_hash, special_context) subpieces.concat(subpiece) end - end - piece = node.section.build_html + end + piece = node.section.build_html + # replace ~~selectors~~ with ex. 's_112_2 c_111' + unless node.root? + offline_css = "s_#{node.id}_#{node.section_id} c_#{node.parent_id} #{node.get_css_class}" + if node.has_extra_selector? + piece.sub!('~~selector~~', "#{offline_css} <%=@template.get_css_classes %>") + else + piece.sub!('~~selector~~', offline_css) + end + #if node.content_css_class.present? + # piece.sub!(/\bcontent_css_class_placeholder/, node.content_css_class) + #end + end # if node.root? - # piece.insert(0,init_vars) + # piece.insert(0,init_vars) # end - - #piece may contain several ~~content~~, the deepest one is first. + # select current page_layout at end of subpieces, pagination required, data_souce_param is on current page_layout + subpieces << get_section_script(node) if subpieces.present? + + #piece may contain several ~~content~~, the deepest one is first. if(pos = (piece=~/~~content~~/)) if node.data_source.present? #node.data_source.singularize case node.current_data_source - when DataSourceEnum.gpvs, DataSourceEnum.this_product, DataSourceEnum.gpvs_theme + # var_collection has to vary in name, may be nested. + # data_source, data_item is for column index computing. + when DataSourceEnum.gpvs, DataSourceEnum.this_product, DataSourceEnum.gpvs_theme # for this_product, we have to wrapped with form, or option_value radio would not work. - subpieces = <<-EOS1 - <% @var_collection = @template.products( (defined?(page) ? page : @current_page) ).each{|product| %> - <%= form_for :order, :url => populate_orders_path do |f| %> - #{subpieces} - <% end %> - <% } %> + form_enabled = node.get_content_param_by_key( :form_enabled ) + remote_form_enabled = node.get_content_param_by_key( :remote_form_enabled ) + if remote_form_enabled + form_start = '<%= form_for :order, url: populate_orders_path, remote: true do |f| %>' + form_end = '<% end %>' + elsif form_enabled + form_start = '<%= form_for :order, url: populate_orders_path do |f| %>' + form_end = '<% end %>' + else + form_start = form_end =nil + end + # once data_source retrieved, we should use context :site1_themes to support product_property.property.presentation + subpieces = <<-EOS1 + <% @template.running_data_source= @template.products( (defined?(page) ? page : @current_page) ) %> + <% @template.running_data_source.each(){|product| @template.running_data_item = product %> + #{form_start} + #{subpieces} + #{form_end} + <% } %> + #{get_pagination(node)} + <% @template.running_data_source = nil %> EOS1 - when DataSourceEnum.blog, DataSourceEnum.post - subpieces = <<-EOS1 - <% @var_collection = @template.posts( (defined?(page) ? page : @current_page) ).each{|post| %> + #set var_collection to nil, or render pagination more times + when DataSourceEnum.related_products + subpieces = <<-EOS1 + <% @template.running_data_source= @template.related_products( ) %> + <% @template.running_data_source.each(){|product| @template.running_data_item = product %> + #{subpieces} + <% } %> + #{get_pagination(node)} + <% @template.running_data_source = nil %> + EOS1 + + when DataSourceEnum.blog, DataSourceEnum.post + subpieces = <<-EOS1 + <% @template.running_data_source= @template.posts( (defined?(page) ? page : @current_page) ) %> + <% @template.running_data_source.each{|post| @template.running_data_item = post %> #{subpieces} <% } %> + #{get_pagination(node)} + <% @template.running_data_source = nil %> EOS1 - when DataSourceEnum.taxon + #when DataSourceEnum.related_posts + # subpieces = <<-EOS1 + # <% @template.running_data_source= @template.related_posts( (defined?(page) ? page : @current_page) ) %> + # <% @template.running_data_source.each{|post| @template.running_data_item = post %> + # #{subpieces} + # <% } %> + # <% @template.running_data_source = nil %> + # EOS1 + when DataSourceEnum.taxonomy #assigned menu could be root or node - subpieces = <<-EOS3 + subpieces = <<-EOS3 <% if @template.menu.present? %> <% if @template.menu.root? %> - <% @template.menu.children.each{|page|%> #{subpieces} <%}%> - <% else %> - <% @template.menu.tap{|page| %> #{subpieces} <%}%> - <% end %> - <% end %> + <% @template.running_data_source= @template.menu.children %> + <% @template.running_data_source.each{|page| @template.running_data_item = page %> #{subpieces} <%}%> + <% @template.running_data_source = nil %> + <% else %> + <% @template.running_data_source= @template.menu %> + <% @template.running_data_source.tap{|page| @template.running_data_item = page %> #{subpieces} <%}%> + <% @template.running_data_source = nil %> + <% end %> + <% end %> EOS3 + when DataSourceEnum.taxon + #assigned node, could be root + subpieces = <<-EOS6 + <% if @template.menu.present? %> + <% @template.running_data_source= @template.menu %> + <% @template.running_data_source.tap{|page| @template.running_data_item = page %> #{subpieces} <%}%> + <% @template.running_data_source = nil %> + <% end %> + EOS6 + when DataSourceEnum.related_taxon + #assigned node, could be root + subpieces = <<-EOS7 + <% @template.running_data_source= @template.related_taxon%> + <% @template.running_data_source.each{|page| @template.running_data_item = page %> #{subpieces} <%}%> + <% @template.running_data_source = nil %> + EOS7 end - end + end # we recovery template.select after ~~content~~ - subpieces << get_section_script( node ) - piece.insert(pos,subpieces) + piece.insert(pos,subpieces) end - + if node.section_context.present? # should set current page_layout before do valid_context. piece = <<-EOS2 @@ -556,84 +788,112 @@ def build_section_html(tree, node, section_hash) #{piece} <% end %> EOS2 - end - - if node.root? # html root - piece.insert(0, get_page_script ) end - - piece.insert(0, get_section_script(node)) + + piece = "#{get_section_script(node)} #{piece} " + # remove ~~content~~ however, node could be a container. - # in section.build_html, ~~content~~ have not removed. + # in section.build_html, ~~content~~ have not removed. # there could be more than one ~~content~~, use gsub! piece.gsub!(/~~content~~/,'') - piece + piece + end + + # section_context could be more than one. + def inherited_contexts + #ancestors order by lft + if @inherited_contexts.blank? + ancestor_context = self.ancestors.where('section_context!=?','').collect{|page_layout| page_layout.section_context }.last + @inherited_contexts = ( ancestor_context.present? ? ancestor_context.split(',').map(&:to_sym) : [ContextEnum.either] ) + end + @inherited_contexts end - + + def inherited_section_context + #ancestors order by lft + ancestor_context = self.ancestors.where('section_context!=?','').collect{|page_layout| page_layout.section_context }.last + ancestor_context.present? ? ancestor_context.to_sym : ContextEnum.either + end + def get_section_script(node) - "<% g_page_layout_id=#{node.id}; @template.select(g_page_layout_id); %>#{$/}" + # we have to call @template.select(g_page_layout_id); + # valid_context require current page_layout, we should not move valid_context? into section. + "<% @template.select(#{node.id}, 0) %>" end - - # proc available in template - def get_page_script() - "<% proc_page=Proc.new{ defined?(page) ? page : @current_page } %> #{$/}" + + # show pagination when section is configured, data_source_param > 0 + # ex. in home page, we have product list, we do not want to show pagination even products.count > Spree::Config[products_per_page] + def get_pagination( node ) + params = node.wrapped_data_source_param + pagination_params = { pagination_style: params[:pagination_style], + pagination_plid: node.id + } + # section is configured and datasource have pages + # notice: current piece is data iterator parent at present. ex. product_list(current_piece)->one_product + #if @template.current_piece.per_page>0 && @template.current_piece.pagination_enable? + if params[:pagination_enable] && params[:per_page] >0 + if params[:pagination_style].present? + "<%= paginate( @template.running_data_source, theme: '#{params[:pagination_style]}', params: #{pagination_params.to_s} ) if @template.running_data_source.try( :has_pages? ) %> " + else + "<%= paginate( @template.running_data_source, theme: 'twitter-bootstrap-3', params: #{pagination_params.to_s} ) if @template.running_data_source.try( :has_pages? ) %> " + end + end end - - # Do not support add_layout_tree now. Page layout should be full html, Keep it simple. + + # Do not support add_layout_tree now. Page layout should be full html, Keep it simple. # since we add feature 'section_context' and 'data_source', should not allow user use this method, it may cause section_context conflict. # user copy prebuild layout tree to another layout tree as child. # copy it self and decendants to new parent. this only for root layout. # include theme param values. add theme param values to all themes which available to the new parent. - def add_layout_tree(copy_layout_id) - copy_layout = self.class.find(copy_layout_id) - raise "only for root layout" unless copy_layout.root? - copy_layout.copy_to_new_parent(self) - end - + #def add_layout_tree(copy_layout_id) + # copy_layout = self.class.find(copy_layout_id) + # raise "only for root layout" unless copy_layout.root? + # copy_layout.copy_to_new_parent(self) + #end + # cached_whole_tree, it is whole tree of new parent, to compute new added section instance. # added_section_ids, new added section ids, but not in cache. # root_layout.copy_to() - def copy_to_new_parent(new_parent, cached_whole_tree = nil, added_section_ids=[]) - - cached_whole_tree||= new_parent.root.self_and_descendants - - new_section_instance = ( cached_whole_tree.select{|xnode| xnode.section_id==self.section_id}.size + - added_section_ids.select{|xid| xid==self.section_id}.size ).succ - - clone_node = self.dup # do not call clone, or modify itself - clone_node.parent_id = new_parent.id - clone_node.root_id = new_parent.root_id - clone_node.section_instance = new_section_instance - clone_node.copy_from_root_id = self.root_id - clone_node.save! - added_section_ids << clone_node.section_id - - # it should only have one theme. - copy_theme = self.root.themes.first - table_name = ParamValue.table_name - table_column_names = ParamValue.column_names - table_column_names.delete('id') - # copy param values to all available themes - for theme in clone_node.root.themes - table_column_values = table_column_names.dup - table_column_values[table_column_values.index('page_layout_root_id')] = clone_node.root_id - table_column_values[table_column_values.index('page_layout_id')] = clone_node.id - table_column_values[table_column_values.index('theme_id')] = theme.id - sql = %Q!INSERT INTO #{table_name}(#{table_column_names.join(',')}) SELECT #{table_column_values.join(',')} FROM #{table_name} WHERE ((page_layout_root_id=#{self.root_id} and page_layout_id =#{self.id}) and theme_id =#{copy_theme.id} )! - self.class.connection.execute(sql) - end - - for node in self.children - node.copy_to_new_parent(clone_node, cached_whole_tree, added_section_ids) - end - end - + #def copy_to_new_parent(new_parent, cached_whole_tree = nil, added_section_ids=[]) + # cached_whole_tree||= new_parent.root.self_and_descendants + # new_section_instance = ( cached_whole_tree.select{|xnode| xnode.section_id==self.section_id}.size + + # added_section_ids.select{|xid| xid==self.section_id}.size ).succ + # clone_node = self.dup # do not call clone, or modify itself + # clone_node.parent_id = new_parent.id + # clone_node.root_id = new_parent.root_id + # clone_node.section_instance = new_section_instance + # clone_node.copy_from_root_id = self.root_id + # clone_node.save! + # added_section_ids << clone_node.section_id + # # it should only have one theme. + # copy_theme = self.root.themes.first + # table_name = ParamValue.table_name + # table_column_names = ParamValue.column_names + # table_column_names.delete('id') + # # copy param values to all available themes + # for theme in clone_node.root.themes + # table_column_values = table_column_names.dup + # table_column_values[table_column_values.index('page_layout_root_id')] = clone_node.root_id + # table_column_values[table_column_values.index('page_layout_id')] = clone_node.id + # table_column_values[table_column_values.index('theme_id')] = theme.id + # sql = %Q!INSERT INTO #{table_name}(#{table_column_names.join(',')}) SELECT #{table_column_values.join(',')} FROM #{table_name} WHERE ((page_layout_root_id=#{self.root_id} and page_layout_id =#{self.id}) and theme_id =#{copy_theme.id} )! + # self.class.connection.execute(sql) + # end + # for node in self.children + # node.copy_to_new_parent(clone_node, cached_whole_tree, added_section_ids) + # end + #end + # empty data_source_param when data_source is empty - def fix_data_source_param - if self.data_source.blank? && self.data_source_param.present? - self.data_source_param = '' - end - end + def set_default_values + #page_attribute no need data_source. + + #if self.data_source.blank? && self.data_source_param.present? + # self.data_source_param = '' + #end + self.content_param = 0 if content_param.blank? + end + end end diff --git a/spree_theme/app/models/spree/param_category.rb b/spree_theme/app/models/spree/param_category.rb index 1ddd6578..507b952a 100644 --- a/spree_theme/app/models/spree/param_category.rb +++ b/spree_theme/app/models/spree/param_category.rb @@ -1,8 +1,8 @@ module Spree class ParamCategory < ActiveRecord::Base - belongs_to :editor + #belongs_to :editor acts_as_list :scope => :editor - + has_many :param_values end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/spree/param_value.rb b/spree_theme/app/models/spree/param_value.rb index 1d31684a..93ae035c 100644 --- a/spree_theme/app/models/spree/param_value.rb +++ b/spree_theme/app/models/spree/param_value.rb @@ -3,44 +3,47 @@ class ParamValue < ActiveRecord::Base EventEnum={:psv_changed=>'psv_changed',:pv_changed=>'pv_changed',:psu_changed=>'psu_changed',:unset_changed=>'unset_changed'} belongs_to :section_param belongs_to :page_layout, :foreign_key=>"page_layout_id" - belongs_to :page_layout_root, :foreign_key=>"page_layout_root_id" - belongs_to :section + belongs_to :page_layout_root, :foreign_key=>"page_layout_root_id", class_name: 'Spree::PageLayout' belongs_to :template_theme, :foreign_key=>"theme_id" - + serialize :pvalue, Hash - before_update :collect_events # skip create + #serialize :pvalue1, Hash + #serialize :pvalue2, Hash + #serialize :pvalue3, Hash + + before_update :collect_events # skip create after_update :trigger_events - - scope :within_section, lambda { |param_value| - where(" theme_id=? and page_layout_id=? ", param_value.theme_id, param_value.page_layout_id) + + scope :within_section, ->( param_value ){ + where(" theme_id=? and page_layout_id=? ", param_value.theme_id, param_value.page_layout_id) } - scope :within_editor, lambda { |editor| - scoped.includes(:section_param=>:section_piece_param).where("#{SectionPieceParam.table_name}.editor_id"=>editor.id) + scope :within_editor, ->( editor ){ + includes(:section_param=>:section_piece_param).where("#{SectionPieceParam.table_name}.editor_id"=>editor.id) } - + #attr_accessible :page_layout_root_id, :page_layout_id,:section_id attr_accessor :updated_html_attribute_values, :original_html_attribute_values, :page_events - - # is it editable by editor, ex. pagination param_value should not appear if page_layout have no data source - def editable? - section_param.section_piece_param.editable? page_layout.current_data_source + + # is it editable by editor, ex. pagination param_value should not appear if page_layout have no data source + def editable? + section_param.section_piece_param.editable? page_layout.current_data_source end - - # usage: return all html_attribute_values this param value contains. - # return a hash, values are instance of HtmlAttributeValue, keys are html_attribute_id and html_attribute.slug. + + # usage: return all html_attribute_values this param value contains. + # return a hash, values are instance of HtmlAttributeValue, keys are html_attribute_id and html_attribute.slug. # key is section_param.section_piece_param.class_name+html_attribute.slug. ex."block_width" # unique_key = hav.computed? ? "computed_#{class_name}_#{hav.html_attribute.slug}" : "#{class_name}_#{hav.html_attribute.slug}" def html_attribute_values_hash ha_array = HtmlAttribute.find_by_ids(self.html_attribute_ids) - hav_hash = ha_array.inject({}){|h, ha| hav = HtmlAttributeValue.parse_from(self,ha); + hav_hash = ha_array.inject({}){|h, ha| hav = HtmlAttributeValue.parse_from(self,ha); h[ha.id]=hav; unique_key = "#{hav.param_value.section_param.section_piece_param.class_name}_#{hav.html_attribute.css_name}" - h[unique_key]=hav; h + h[unique_key]=hav; h } hav_hash end - - + + def html_attribute_ids() if @html_attribute_ids.nil? section_piece_param = self.section_param.section_piece_param @@ -48,43 +51,43 @@ def html_attribute_ids() end @html_attribute_ids end - + def html_attribute_value(html_attribute) return HtmlAttributeValue.parse_from(self,html_attribute) end - + #belongs_to_html_attribute_ids could be Array or an html_attribute_id def attribute_values(belongs_to_html_attribute_ids) belongs_to_html_attribute_ids ||= self.html_attribute_ids - belongs_to_html_attribute_ids = belongs_to_html_attribute_ids.map(&:to_s) - return self.pvalue.slice(*belongs_to_html_attribute_ids).values if belongs_to_html_attribute_ids.kind_of?(Array) + belongs_to_html_attribute_ids = belongs_to_html_attribute_ids.map(&:to_s) + return self.pvalue.slice(*belongs_to_html_attribute_ids).values if belongs_to_html_attribute_ids.kind_of?(Array) self.pvalue.slice(belongs_to_html_attribute_ids).values end - - def pvalue_for_haid(html_attribute_id) - self.pvalue[html_attribute_id.to_s] + + def pvalue_for_haid(html_attribute_id) + self.pvalue[html_attribute_id.to_s] end - def set_pvalue_for_haid(html_attribute_id, value_for_ha) + def set_pvalue_for_haid(html_attribute_id, value_for_ha) self.pvalue[html_attribute_id.to_s] = value_for_ha end def set_unset_for_haid(html_attribute_id, unset_for_ha) self.pvalue["#{html_attribute_id}unset"] = unset_for_ha end - + def unset?(html_attribute_id) - ( self.html_attribute_extra(html_attribute_id, 'unset')== HtmlAttribute::BOOL_FALSE) ? false : true + ( self.html_attribute_extra(html_attribute_id, 'unset')== HtmlAttribute::BOOL_FALSE) ? false : true end - + # use in page_generator def hidden?(html_attribute_id) # all computed are hidden - ( self.html_attribute_extra(html_attribute_id,'hidden')== HtmlAttribute::BOOL_TRUE or computed?) ? true : false + ( self.html_attribute_extra(html_attribute_id,'hidden')== HtmlAttribute::BOOL_TRUE or computed?) ? true : false end - + def computed?(html_attribute_id) - ( self.html_attribute_extra(html_attribute_id,'computed')== HtmlAttribute::BOOL_TRUE) ? true : false + ( self.html_attribute_extra(html_attribute_id,'computed')== HtmlAttribute::BOOL_TRUE) ? true : false end - + def html_attribute_extra(html_attribute_id, attr_name, attr_val = nil ) if attr_val.nil? self.pvalue["#{html_attribute_id}#{attr_name}"] @@ -92,33 +95,33 @@ def html_attribute_extra(html_attribute_id, attr_name, attr_val = nil ) self.pvalue["#{html_attribute_id}#{attr_name}"] = attr_val end end - + #def disabled_html_attribute_ids # if @disabled_html_attribute_ids.nil? # @disabled_html_attribute_ids = self.disabled_ha_ids.split(',').collect{|i|i.to_i} # end # @disabled_html_attribute_ids - #end - + #end + # in case, there is only one html_attribute_id in current param_value # use this to fetch param value directly. def first_pvalue pvalue_for_haid( html_attribute_ids.first ) end - + def partial_html pvs = self.class.within_section(self).includes(:section_param=>:section_piece_param) HtmlPage::PartialHtml.new(nil, self.page_layout, nil, pvs) end - + begin 'update param value' - # * usage - update attribute:pvalue + # * usage - update attribute:pvalue # * params # * html_attribute_value_params - it is hash like {"psvalue0"=>"l1", "pvalue0"=>"810", "unit0"=>"px"} # or {"psvalue0"=>"l1", "pvalue0"=>"0", "unit0"=>"px", "psvalue1"=>"l1", "pvalue1"=>"0", "unit1"=>"px", "psvalue2"=>"l1", "pvalue2"=>"0", "unit2"=>"px", "psvalue3"=>"l1", "pvalue3"=>"0", "unit3"=>"px", "unset"=>"1"} # * some_event - one of EventEnum def update_html_attribute_value(html_attribute, html_attribute_value_params, some_event ) - #FIXME confirm next line. + #FIXME confirm next line. # it maybe called more times by conditions, we should keep updated_html_attribute_values self.page_events ||=[] self.updated_html_attribute_values ||= [] @@ -126,91 +129,91 @@ def update_html_attribute_value(html_attribute, html_attribute_value_params, som original_html_attribute_value = HtmlAttributeValue.parse_from(self,html_attribute) new_html_attribute_value = HtmlAttributeValue.parse_from(self, html_attribute, html_attribute_value_params) is_updated= false - # Rails.logger.debug "original_html_attribute_value=#{original_html_attribute_value.properties.inspect},new_html_attribute_value=#{new_html_attribute_value.properties.inspect}" + # Rails.logger.debug "original_html_attribute_value=#{original_html_attribute_value.properties.inspect},new_html_attribute_value=#{new_html_attribute_value.properties.inspect}" unless original_html_attribute_value.equal_to?(new_html_attribute_value) # changed by user actions, some_event = [pv_changed|psv_changed|psu_changed|unset_changed] - if EventEnum.key? some_event + if EventEnum.key? some_event if some_event==EventEnum[:unset_changed] if new_html_attribute_value.unset? - self.html_attribute_extra(html_attribute.id, 'unset', new_html_attribute_value.unset) - else # user modify unset, we should give a default value. - self.html_attribute_extra(html_attribute.id, 'unset', new_html_attribute_value.unset) - self.set_pvalue_for_haid(html_attribute.id, new_html_attribute_value.build_pvalue(default=true)) + self.html_attribute_extra(html_attribute.id, 'unset', new_html_attribute_value.unset) + else # user modify unset, we should give a default value. + self.html_attribute_extra(html_attribute.id, 'unset', new_html_attribute_value.unset) + self.set_pvalue_for_haid(html_attribute.id, new_html_attribute_value.build_pvalue(default=true)) end else self.set_pvalue_for_haid(html_attribute.id, new_html_attribute_value.build_pvalue) - end + end else - # no event here, we would program to change html_attribute_value, like section.width = 100 + # no event here, we would program to change html_attribute_value, like section.width = 100 if new_html_attribute_value.hidden != original_html_attribute_value.hidden self.html_attribute_extra(html_attribute.id, 'hidden', new_html_attribute_value.hidden) - end + end if new_html_attribute_value.unset != original_html_attribute_value.unset self.html_attribute_extra(html_attribute.id, 'unset', new_html_attribute_value.unset) end if new_html_attribute_value.computed != original_html_attribute_value.computed self.html_attribute_extra(html_attribute.id, 'computed', new_html_attribute_value.computed) end - self.set_pvalue_for_haid(html_attribute.id, new_html_attribute_value.build_pvalue) + self.set_pvalue_for_haid(html_attribute.id, new_html_attribute_value.build_pvalue) end self.updated_html_attribute_values << new_html_attribute_value self.original_html_attribute_values << original_html_attribute_value self.page_events << some_event self.save! - is_updated = true + is_updated = true end [is_updated, new_html_attribute_value, original_html_attribute_value] end - + #Usage: user modify param_value, trigger event, event in EventEnum # flow chart is: # client side server side - # user modify param_value -> raise_event -> if(change_event) modify pvalue(not save) -> - # accumulate modification event, include global_param_value_event and section_event -> + # user modify param_value -> raise_event -> if(change_event) modify pvalue(not save) -> + # accumulate modification event, include global_param_value_event and section_event -> # after pv.save -> call trigger_event - # + # def collect_events() @param_value_events=[] @global_param_value_events=[] - if self.page_events.present? + if self.page_events.present? last_position = self.page_events.size - 1 + # tell current section, this is new html attribute value. pve = PageEvent::ParamValueEvent.new(self.page_events.first, self, self.original_html_attribute_values.first, self.updated_html_attribute_values.first ) @param_value_events< :slugged + + acts_as_taggable + # for flash messages + alias_attribute :name, :title + + has_many :post_classifications, dependent: :delete_all, inverse_of: :post + has_many :taxons, through: :post_classifications + #has_and_belongs_to_many :taxons, :join_table => "spree_posts_taxons", :class_name => "Spree::Taxon" + alias_attribute :categories, :taxons + + #belongs_to :blog, :class_name => "Spree::Taxon" + #has_many :taxons, :dependent => :destroy + has_many :products, :through => :post_products + has_many :files, :as => :viewable, :class_name => "Spree::PostFile", :dependent => :destroy + + #validates :blog_id, :title, :presence => true + #validates :permalink, :presence => true, :uniqueness =>{ :scope=>:site_id }, :if => proc{ |record| !record.title.blank? } + validates :slug, length: { minimum: 3 } + + validates :body, :presence => true + validates :posted_at, :datetime => true + + #has_attached_file :cover, + # styles: { small: '180x120>', normal: '280x190>', big: '670x370>'}, + # default_style: :normal, + # url: '/spree/posts/:id/:style/:basename.:extension', + # path: ':rails_root/public/spree/posts/:id/:style/:basename.:extension', + # default_url: '/assets/default_post.png' + has_attached_file :cover, + styles: { :mini => '60x60>', small: '180x120>', medium: '280x190>', large: '670x370>'}, + default_style: :mini, + url: '/shops/:rails_env/:site/posts/:id/:basename_:style.:extension', + path: ':rails_root/public/shops/:rails_env/:site/posts/:id/:basename_:style.:extension', + default_url: '/assets/default_post.png' + + validates_attachment :cover, + content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] } + + scope :ordered, -> { order( posted_at: :desc, created_at: :desc) } + scope :future, -> { where("posted_at > ?", Time.now).order("posted_at ASC") } + scope :past, -> { where("posted_at <= ?", Time.now).ordered } + scope :live, -> { where(:live => true ) } + + #make_permalink + alias_attribute :name, :title #default post_attribute name + + # add search related + cattr_accessor :searcher_class do + SpreeTheme::BlogSearch + end + + cattr_accessor :search_scopes do + [] + end + + def self.add_search_scope(name, &block) + self.singleton_class.send(:define_method, name.to_sym, &block) + search_scopes << name.to_sym + end + #copy from spree/core/model/product/scope + add_search_scope :in_taxon do |taxon| + select("spree_posts.id, spree_posts.*"). + where(id: PostClassification.select('spree_posts_taxons.post_id'). + joins(:taxon). + where( Taxon.table_name => { :id => taxon.self_and_descendants.pluck(:id) }) + ) + end + # end search + + # Creates date-part accessors for the posted_at timestamp for grouping purposes. + %w(day month year).each do |method| + define_method method do + self.posted_at.send(method) + end + end + + # all post belongs to taxon which context is blog, in this way, we cuold list all post of website. ex. page blogs list recent posts + def taxon + + end + + alias_method :blog, :taxon + + def summary( truncate_at=100) + #copy from Action View Sanitize Helpers + Rails::Html::FullSanitizer.new.sanitize( body ).truncate( truncate_at ) + end + + def rendered_preview + preview = body.split("")[0] + render(preview) + end + + def rendered_body + render(body.gsub("", "")) + end + + def preview_image + images.first if has_images? + end + + def has_images? + images && !images.empty? + end + + + def live? + live && live == true + end + + def product_ids_string + product_ids.join(',') + end + + def product_ids_string=(s) + self.product_ids = s.to_s.split(',').map(&:strip) + end + + def to_param + slug + end + + def slug_candidates + [ + :title_to_url, + [:title_to_url, :site_id], + ] + end + + # make title as slug candidate, + # "女性穿内衣的6大误区".to_url => "nu-xing-chuan-nei-yi-de-6da-wu-qu" + def title_to_url + title.to_url[0,30] + end + + end + +end diff --git a/spree_theme/app/models/spree/post_classification.rb b/spree_theme/app/models/spree/post_classification.rb new file mode 100644 index 00000000..d5c4777a --- /dev/null +++ b/spree_theme/app/models/spree/post_classification.rb @@ -0,0 +1,12 @@ +#copy from spree/core/model/spree/classification +module Spree + class PostClassification < ActiveRecord::Base + self.table_name = 'spree_posts_taxons' + acts_as_list scope: :taxon + belongs_to :post, class_name: "Spree::Post", inverse_of: :post_classifications, touch: true + belongs_to :taxon, class_name: "Spree::Taxon", touch: true + + # For #3494 + validates_uniqueness_of :taxon_id, :scope => :post_id, :message => :already_linked + end +end diff --git a/spree_theme/app/models/spree/post_file.rb b/spree_theme/app/models/spree/post_file.rb new file mode 100644 index 00000000..e91c127d --- /dev/null +++ b/spree_theme/app/models/spree/post_file.rb @@ -0,0 +1,17 @@ +# a post could have several attachments +class Spree::PostFile < Spree::Asset + + #attr_accessible :alt, :attachment + + has_attached_file :attachment, + :url => "/shops/:rails_env/:class/:id/:filename", + :path => ":rails_root/public/shops/:rails_env/:class/:id/:filename" + + validates_attachment :attachment, presence: true, + content_type: { content_type: %w(image/jpeg image/gif image/png text/plain application/vnd.ms-powerpoint application/msword aplication/zip application/pdf) }, + size: { in: 0..20.megabytes } + + def url_thumb + @url_thumb ||= Ckeditor::Utils.filethumb(attachment_file_name) + end +end diff --git a/spree_theme/app/models/spree/post_image.rb b/spree_theme/app/models/spree/post_image.rb new file mode 100644 index 00000000..9604856c --- /dev/null +++ b/spree_theme/app/models/spree/post_image.rb @@ -0,0 +1,14 @@ +# a post could have several attachments +class Spree::PostImage < Spree::Asset + + #attr_accessible :alt, :attachment + + has_attached_file :attachment, + :url => '/shops/:rails_env/:site/:class/:id/:basename_:style.:extension', + :path => ':rails_root/public/shops/:rails_env/:site/:class/:id/:basename_:style.:extension' + validates_attachment :attachment, + :presence => true, + :content_type => { :content_type => %w(image/jpeg image/jpg image/png image/gif) } + + +end diff --git a/spree_theme/app/models/spree/post_product.rb b/spree_theme/app/models/spree/post_product.rb new file mode 100644 index 00000000..93bed653 --- /dev/null +++ b/spree_theme/app/models/spree/post_product.rb @@ -0,0 +1,11 @@ +class Spree::PostProduct < ActiveRecord::Base + + #attr_accessible :post_id, :product_id, :position + + belongs_to :post + belongs_to :product + + validates_associated :post + validates_associated :product + +end diff --git a/spree_theme/app/models/spree/preferences/preferable_decorator.rb b/spree_theme/app/models/spree/preferences/preferable_decorator.rb new file mode 100644 index 00000000..f0f82899 --- /dev/null +++ b/spree_theme/app/models/spree/preferences/preferable_decorator.rb @@ -0,0 +1,8 @@ +#Spree::Preferences::Preferable.class_eval do +# #replace original :preference_cache_key, add current_site.id as part of key +# #fix error Duplicate entry 'spree/calculator/flat_rate/amount/1' +# def preference_cache_key(name) +# return unless id +# [self.class.name, name, id, Spree::Site.current.id].join('::').underscore +# end +#end diff --git a/spree_theme/app/models/spree/product_extra_scope.rb b/spree_theme/app/models/spree/product_extra_scope.rb new file mode 100644 index 00000000..ab35a485 --- /dev/null +++ b/spree_theme/app/models/spree/product_extra_scope.rb @@ -0,0 +1,21 @@ +module Spree + module ProductExtraScope + extend ActiveSupport::Concern + included do + # for search + # copy from spree_core/product/scopes + add_search_scope :in_global_taxon do |taxon| + select("spree_products.id, spree_products.*"). + where(id: Spree::GlobalClassification.select('spree_products_global_taxons.product_id'). + joins(:taxon). + where(Spree::Taxon.table_name => { :id => taxon.self_and_descendants.pluck(:id) }) + ) + end + + add_search_scope :theme_only do + where("#{Spree::Product.quoted_table_name}.theme_id>0") + end + + end + end +end \ No newline at end of file diff --git a/spree_theme/app/models/spree/relation.rb b/spree_theme/app/models/spree/relation.rb new file mode 100644 index 00000000..d7f225d3 --- /dev/null +++ b/spree_theme/app/models/spree/relation.rb @@ -0,0 +1,7 @@ +class Spree::Relation < ActiveRecord::Base + belongs_to :relation_type + belongs_to :relatable, polymorphic: true + belongs_to :related_to, polymorphic: true + + validates :relation_type, :relatable, :related_to, presence: true +end diff --git a/spree_theme/app/models/spree/relation_type.rb b/spree_theme/app/models/spree/relation_type.rb new file mode 100644 index 00000000..8629ead4 --- /dev/null +++ b/spree_theme/app/models/spree/relation_type.rb @@ -0,0 +1,12 @@ +class Spree::RelationType < ActiveRecord::Base + + default_scope ->{ where(:site_id=>SpreeTheme.site_class.current.id)} + + #for resource_class.resourceful + scope :resourceful, ->(theme){ where("1=1") } + + has_many :relations, dependent: :destroy + + validates :name, :applies_to, presence: true + validates :name, uniqueness: { case_sensitive: false, scope: :site_id } +end diff --git a/spree_theme/app/models/spree/section.rb b/spree_theme/app/models/spree/section.rb index c65a95b7..498c38c9 100644 --- a/spree_theme/app/models/spree/section.rb +++ b/spree_theme/app/models/spree/section.rb @@ -2,65 +2,80 @@ module Spree class Section < ActiveRecord::Base extend FriendlyId acts_as_nested_set :dependent=>:destroy #:scope=>"root_id" - #has_many :full_set_nodes, :class_name =>'Section', :foreign_key=>:root_id, :primary_key=>:root_id - belongs_to :section_piece + # add includes(:full_set_nodes). it is same set as self_and_descendants, + has_many :full_set_nodes, -> { order 'lft' }, :class_name =>'Section', :foreign_key=>:root_id, :primary_key=>:root_id + belongs_to :section_piece has_many :section_params, :dependent=>:destroy #remove related param_value has_many :page_layouts - + friendly_id :title, :use => :slugged #attr_accessible :section_piece_id, :title, :global_events, :subscribed_global_events,:is_enabled - - + + # it is using content_param bit 5, 6, 7, 8, 9, 10 + # bit 5, 6, 7, 5&6, 5&7, 5&8, 6&8, 7&8, 9 + MouseEffectMask = 16+32+64+128+256 + # this effect apply to container only + MouseEffect = Struct.new(:slide, :show, :expansion, :overlay, :popup, :popup_menu, :popup_menu_l, :sider, :multi_level_menu) \ + [16, 32, 64, 48, 80, 144, 160, 192, 256] + # superfish: multi-level menus + # sider: click a button, a container slide out, mainly for mobile, # http://www.berriart.com/sidr + UsageEnum = Struct.new(:root, :container, :logo, :minicart, :dialog, :image, :image_with_thumbnails)['root','container','logo','minicart','dialog','image','image_with_thumbnails'] + + scope :enabled, ->{ where( is_enabled: true ) } + # usage: attribute section_piece_id, title required # params: default_param_values, is a hash, class_name=>{htmal_attribute_id=>default_value,..} - def self.create_section(section_piece_id,attrs = {}, default_param_values={}) + def self.create_section(section_piece,attrs = {}, default_param_values={}) #create record in table sections - obj = nil - self.transaction do - obj = create(:section_piece_id=> section_piece_id) do |sp| - sp.section_piece_instance = 1 - sp.attributes= attrs unless attrs.empty? + created_section = nil + self.transaction do + created_section = create!(:section_piece_id=> section_piece.id) do |section| + section.section_piece_instance = 1 + section.attributes= attrs unless attrs.empty? + section.slug = nil + section.for_terminal = section_piece.for_terminal end #copy the section piece param to section param table - obj.add_section_piece_param(default_param_values) + created_section.add_section_piece_param(default_param_values) #set root_id, css need root_piece_instance_id as selector - obj.update_attribute("root_id", obj.id) + created_section.update_attribute("root_id", created_section.id) end - obj - end - - # return created section - def add_section_piece(section_piece_id, default_param_values={}) - section_piece = SectionPiece.find(section_piece_id) + created_section + end + + # add section_piece into section, return created section + def add_section_piece(section_piece, default_param_values={}) + raise "section_piece is nil" if section_piece.blank? + # section_piece = SectionPiece.find(section_piece_id) tree = self.root.self_and_descendants - section_piece_instance = tree.select{|xnode| xnode.section_piece_id==section_piece_id}.size.succ - atts = { :section_piece_id=>section_piece_id} - obj = nil - self.class.transaction do - obj = self.class.create!(atts)do|obj| + section_piece_instance = tree.select{|xnode| xnode.section_piece_id==section_piece.id}.size.succ + atts = { :section_piece_id=>section_piece.id} + section = nil + self.class.transaction do + section = self.class.create!(atts)do|obj| obj.root_id= self.root_id - obj.section_piece_instance=section_piece_instance + obj.section_piece_instance=section_piece_instance end - obj.move_to_child_of(self) - obj.add_section_piece_param(default_param_values) + section.move_to_child_of(self) + section.add_section_piece_param(default_param_values) end - obj + section end - + def build_html - section_piece_hash = SectionPiece.all().inject({}){|h, s| h[s.id] = s; h} - tree = self.self_and_descendants - build_html_piece(tree, self, section_piece_hash) + #use full_set_nodes instead of self_and_descendants, full_set_nodes is includable. + tree = self.full_set_nodes + build_html_piece(tree, self, self.section_piece_in_hash) end - + def build_css - section_piece_hash = SectionPiece.all().inject({}){|h, s| h[s.id] = s; h} - tree = self.self_and_descendants - build_css_piece(tree, self, section_piece_hash) + #use full_set_nodes instead of self_and_descendants + tree = self.full_set_nodes + build_css_piece(tree, self, self.section_piece_in_hash) end - - - # Usage: add section piece param into this section + + + # Usage: add section piece param into this section # params: default_param_value, is a hash, class_name=>{htmal_attribute_id=>default_value,..} def add_section_piece_param(default_param_values={}) # section_id, section_piece_param_id, section_piece_id, section_piece_instance, is_enabled, disabled_ha_ids @@ -75,6 +90,7 @@ def add_section_piece_param(default_param_values={}) #sp.is_enabled = if default_param_values.key?(spp[:class_name]) dpvs = default_param_values.fetch spp[:class_name] +#Rails.logger.debug " dpvs =#{dpvs.inspect } , dpvs.slice(*spp.param_keys)= #{dpvs.slice(*spp.param_keys)}" sp.default_value = dpvs.slice(*spp.param_keys) sp.disabled_ha_ids = dpvs['disabled_ha_ids'].to_s end @@ -82,33 +98,33 @@ def add_section_piece_param(default_param_values={}) end end end - + def global_event_array if @global_event_array.nil? @global_event_array = self.global_events.split(',') end @global_event_array end - + def subscribed_global_event_array if @subscribed_global_event_array.nil? @subscribed_global_event_array = self.subscribed_global_events.split(',') end @subscribed_global_event_array end - - begin 'build html, css, js for section' + + begin 'build html, css, js for section' def build_html_piece(tree, node, section_piece_hash) - # .dup, do not alter the model, or affect other method. it may be in cache. - piece = node.section_piece.html.dup - piece.insert(0,get_section_script(node)) - unless node.leaf? + # .dup, do not alter the model, or affect other method. it may be in cache. + piece = section_piece_hash[node.section_piece_id].html.dup + #piece.insert(0,get_section_script(node)) + unless node.leaf? children = tree.select{|n| n.parent_id==node.id} for child in children subpiece = build_html_piece(tree, child, section_piece_hash) - if(pos = (piece.rindex(/~~content~~/))) + if(pos = (piece.rindex(/~~content~~/))) piece.insert(pos,subpiece) - else + else piece.concat(subpiece) end end @@ -123,23 +139,23 @@ def build_html_piece(tree, node, section_piece_hash) end piece end - + def build_css_piece(tree, node, section_piece_hash) #duplicate the css, then modify it. - piece = section_piece_hash[node.section_piece_id].css.dup + piece = section_piece_hash[node.section_piece_id].css.dup piece.insert(0,get_section_script(node)) - unless node.leaf? + unless node.leaf? children = tree.select{|n| n.parent_id==node.id} for child in children - subpiece = build_css_piece(tree, child, section_piece_hash) + subpiece = build_css_piece(tree, child, section_piece_hash) piece.concat(subpiece) end end piece end - + def build_js_piece(tree) - js_ids = '' + js_ids = '' for node in tree js_ids.concat(section_piece_hash[node.section_piece_id].js) end @@ -150,19 +166,42 @@ def build_js_piece(tree) end piece end - + def get_section_script(node) - #only set @param_values, @menus for root piece. - header= <<-EOS - <% g_section_id=#{node.id}; - @template.select(g_page_layout_id, g_section_id); - g_piece_selector = @template.current_piece.piece_selector; - %> - EOS - end - + # keep it in one line, quicker parsing + "<% @template.select(0, #{node.id}); %>" + end + + def section_piece_in_hash + if @section_piece_in_hash.nil? + @section_piece_in_hash = SectionPiece.all().inject({}){|h, s| h[s.id] = s; h} + end + @section_piece_in_hash + end + + end + + # add new column later. + def is_container? + usage =='container' + end + + def is_zoomable_image? + usage =='image-with-thumbnails' + end + + def is_image? + usage =~ /image/ + end + + def is_html_root? + usage =='root' + end + + def usage_css_name + usage.present? ? "u_#{self.usage}" : '' end end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/spree/section_param.rb b/spree_theme/app/models/spree/section_param.rb index 9368d00b..5e378059 100644 --- a/spree_theme/app/models/spree/section_param.rb +++ b/spree_theme/app/models/spree/section_param.rb @@ -1,10 +1,10 @@ module Spree - class SectionParam < ActiveRecord::Base + class SectionParam < ActiveRecord::Base has_many :param_values, :dependent=>:destroy belongs_to :section_piece_param belongs_to :section serialize :default_value, Hash - + after_create :add_param_values def disabled_html_attribute_ids @@ -13,75 +13,88 @@ def disabled_html_attribute_ids end @disabled_html_attribute_ids end - - + + #filter: :all, :disabled, :enabled def html_attributes(attribute_filter= :enabled) if @html_attributes.nil? ha_ids = self.section_piece_param.html_attribute_ids.split(',').collect{|i|i.to_i} @html_attributes= HtmlAttribute.find_by_ids(ha_ids) end - + case attribute_filter when :enabled return_html_attributes = @html_attributes.select{|ha| !disabled_html_attribute_ids.include?(ha.id)} when :disabled - return_html_attributes = @html_attributes.select{|ha| disabled_html_attribute_ids.include?(ha.id)} + return_html_attributes = @html_attributes.select{|ha| disabled_html_attribute_ids.include?(ha.id)} else return_html_attributes = @html_attributes end - + end - - + + begin 'these methods only for development and system improvement' def add_default_values( html_attribute_values) - + end - + # ex. font-weight:bold, font-weight html_attribute id is 27, add_default_value(27,'font-weight:bold') - def add_default_value( html_attribute_id, html_attribute_value ) - self.default_value[html_attribute_id] = html_attribute_value + # * params + # * html_attribute_key - html_attribute, html_attribute.id or id+'unset' + def add_default_value( html_attribute_key, html_attribute_value ) + # key requires string, json required + html_attribute_key = case html_attribute_key + when Spree::HtmlAttribute + html_attribute_key.id.to_s + when String + html_attribute_key + else + html_attribute_key.to_s + end + + self.default_value[html_attribute_key] = html_attribute_value self.save! #get related param_values, if html_attribute_id is nil, set default value - self.param_values.each{|pv| - pv.pvalue[html_attribute_id] = html_attribute_value - #do not use update_column, or pv.pvalue would raise 'string not matched (IndexError)' during calling next time - pv.save! - #pv.update_column(:pvalue, pv.pvalue.to_yaml) + self.param_values.each{|pv| + if pv.pvalue[html_attribute_key].nil? + pv.pvalue[html_attribute_key] = html_attribute_value + #do not use update_column, or pv.pvalue would raise 'string not matched (IndexError)' during calling next time + pv.save! + end } end - + def remove_default_value(html_attribute_id) if self.default_value.key? html_attribute_id default_html_attribute_value = self.default_value.delete html_attribute_id - self.save! + self.save! #get related param_values, if html_attribute_id is nil, set default value - self.param_values.each{|pv| + self.param_values.each{|pv| if pv.pvalue[html_attribute_id] == default_html_attribute_value pv.pvalue.delete html_attribute_id - pv.update_column(:pvalue, pv.pvalue.to_yaml) + pv.update_column(:pvalue, pv.pvalue) end } end end end + private #add param_value where page_layout.section_id = ? for each layout tree. - def add_param_values - page_layouts = PageLayout.includes(:themes).where("section_id"=>self.section.root_id) + def add_param_values + page_layouts = PageLayout.where("section_id"=>self.section.root.id) for page_layout in page_layouts - for theme in page_layout.themes page_layout.param_values.create do|param_value| - param_value.theme_id = theme.id - param_value.page_layout_root_id = page_layout.root_id + param_value.theme_id = page_layout.template_theme_id + param_value.page_layout_root_id = page_layout.root.id param_value.section_param_id = self.id end - end + end end - - + + end - -end \ No newline at end of file + +end diff --git a/spree_theme/app/models/spree/section_piece.rb b/spree_theme/app/models/spree/section_piece.rb index f3c2492b..242c39d6 100644 --- a/spree_theme/app/models/spree/section_piece.rb +++ b/spree_theme/app/models/spree/section_piece.rb @@ -6,27 +6,31 @@ class SectionPiece < ActiveRecord::Base has_many :sections has_many :section_piece_params friendly_id :title, :use => :slugged - scope :with_resources, where(["resources!=?",'']) - scope :html_roots, where(:is_root=>true) + scope :with_resources, ->{ where.not(resources: '') } + scope :html_roots, ->{ where( is_root: true) } # resources m:/m:signup - # return array of struct{:resource, :context} - def wrapped_resources - collection = resources.split('/').collect{|res_ctx| - resource, context = res_ctx.split(':') - Struct.new(:resource, :context,:resource_class).new.tap{|wrapped_resource| - wrapped_resource.resource = resource - wrapped_resource.context = (context ? context.to_sym : DefaultTaxon::ContextEnum.home) - wrapped_resource.resource_class = case wrapped_resource.resource - when 'm' - SpreeTheme.taxon_class - when 't' - Spree::TemplateText - when 'i' - Spree::TemplateFile - end - } - } + # return array of struct{:resource, :context} + #def wrapped_resources + # collection = resources.split('/').collect{|res_ctx| + # resource, context = res_ctx.split(':') + # Struct.new(:resource, :context,:resource_class).new.tap{|wrapped_resource| + # wrapped_resource.resource = resource + # wrapped_resource.context = (context ? context.to_sym : DefaultTaxon::ContextEnum.home) + # wrapped_resource.resource_class = case wrapped_resource.resource + # when 'm' + # SpreeTheme.taxon_class + # when 't' + # Spree::TemplateText + # when 'i' + # Spree::TemplateFile + # end + # } + # } + #end + + def resource_strings + resources.split('/') end - + end -end \ No newline at end of file +end diff --git a/spree_theme/app/models/spree/site.rb b/spree_theme/app/models/spree/site.rb new file mode 100644 index 00000000..df08cf02 --- /dev/null +++ b/spree_theme/app/models/spree/site.rb @@ -0,0 +1,226 @@ +#encoding: utf-8 +class Spree::Site < ActiveRecord::Base + cattr_accessor :subdomain_regexp + + has_many :taxonomies,:inverse_of =>:site,:dependent=>:destroy + has_many :products,:inverse_of =>:site,:dependent=>:destroy + has_many :orders,:inverse_of =>:site,:dependent=>:destroy + has_many :users,:dependent=>:destroy, :class_name=>Spree.user_class.to_s + #FIXME,:inverse_of =>:site, it cause uninitialized constant Spree::Site::, + has_many :tax_categories,:inverse_of =>:site,:dependent=>:destroy + + has_many :shipping_categories,:dependent=>:destroy + has_many :shipping_methods,:dependent=>:destroy + has_many :prototypes,:dependent=>:destroy + has_many :option_types,:dependent=>:destroy + has_many :properties,:dependent=>:destroy + has_many :payment_methods,:dependent=>:destroy + has_many :assets,:dependent=>:destroy + has_many :zones,:dependent=>:destroy + has_many :state_changes,:dependent=>:destroy + + has_many :stores, :dependent=>:destroy + #acts_as_nested_set + accepts_nested_attributes_for :stores + accepts_nested_attributes_for :users + + # it is load before create site table. self.new would trigger error "Table spree_sites' doesn't exist" + # db/migrate/some_migration is using Spree::Product, it has default_scope using Site.current.id + # so it require a default value. + self.subdomain_regexp = /\A([a-z0-9\-])*\Z/ + + enum status: { active: 0, inactive: 1 } + #these attr is only used when create site, it is unavailabe in other case. + attr_accessor :email, :password, :password_confirmation + + validates :name, length: 4..32 #"中国".length=> 2 + # do not allow user set short_name, it is generated by name, length can be 3..32, allow 'www' for test. + validates :short_name, uniqueness: true, presence: true, length: 3..32, format: {with: subdomain_regexp} #, unless: "domain.blank?" + validates_uniqueness_of :domain, :allow_blank=>true + #attr_accessible :name, :domain, :short_name, :has_sample + #generate short name fro name + before_validation :set_short_name + after_create :add_default_data + + after_save :fix_status_of_stores + + class << self + + def current + Spree::Store.current.site + end + + def current=(some_site) + if some_site # durring test, add_default_data cause some_site nil + Spree::Store.current = Spree::Store.unscoped.where( site_id: some_site.id ).first + end + some_site + end + + # execute block with given site + def with_site(new_site) + original_current = self.current + begin + self.current = new_site + yield( new_site ) + ensure + self.current = original_current + end + end + + def system_top_domain + Rails.application.config.spree_multi_site.system_top_domain + end + end + + def current? + self == self.class.current + end + + def load_sample( ) + require 'ffaker' + # global tables + # countries,states, zones, zone_members, roles #admin + # activators, + # tables belongs to site + # addresses -> user(site) + # configuration(site) + # log_entries(site) + # orders(site)->[state_changes,inventory_units,tokenized_permission, orders_promotions ] + # [properties(site), prototypes(site)] -> properties_prototypes + # , option_types(site)] ->option_type_prototypes + # ->products(site)->variants(site?)->assets(site) + # payment_methods(site)->payments->adjustments + # ->payment_capture_events + # ->alipay_transactions( source ) + # preference(site) + # tax_categories(site)-> tax_rates -> [shipping_methods, promotions,calculators] + # taxonomies(site) -> taxons(site) -> products_taxons(site?) + # user + # to be confirm + # spree_tracker, state_changes + # return_authorizations + # mail_methods, + # friendly_id_slugs + # promotion_categories -> promotions -> promotion_rules + # -> promotion_actions + # product_promotion_rules, taxons_promotion_rules, + # + # stores + #:spree_refunds + #:spree_return_authorization_inventory_units + #:spree_return_authorizations + #:spree_refund_reasons + #:spree_customer_returns + + #:spree_reimbursements + #:spree_reimbursement_types + #:spree_reimbursement_credits + #:spree_taxons_prototypes + + # unused table + # credit_cards(site?), gateways(site?) + # + raise "exists products" if self.products.any? + self.class.with_site( self ) do + load_sample_products + end + self + end + + def unload_sample + self.class.with_site( self ) do + self.orders.each{|order| + order.state_changes.clear + order.inventory_units.clear + order.tokenized_permission.delete + order.destroy + } + self.products.each{|product| + product.variants.each{|variant| variant.inventory_units.clear} + product.destroy! # it is acts_as_paranoid + } + self.properties.clear + self.payment_methods.each{|pm| pm.destroy! } # it is acts_as_paranoid + self.prototypes.clear + self.option_types.clear + self.shipping_categories.clear + self.tax_categories.each{|pm| pm.destroy! } # it is acts_as_paranoid + self.taxonomies.each{|taxonomy| + taxonomy.root.destroy # remove taxons + taxonomy.destroy + } + + self.zones.each{|zone| + zone.destroy + } + self.shipping_methods.clear + + #TODO fix taxons.taconomy_id + self.users.includes(:ship_address,:bill_address).offset(1).each{|user| + user.bill_address.destroy + user.ship_address.destroy + user.destroy + } #skip first admin + #shipping_method, calculator, creditcard, inventory_units, state_change,tokenized_permission + #TODO remove image files + self.assets.clear + #TODO clear those tables + # creditcarts,preferences + self.state_changes.clear + end + self + end + + # current site'subdomain => short_name.tld + def subdomain + #for debug at localhost + return self.class.system_top_domain if self.class.system_top_domain == 'localhost' + short_name + '.' + self.class.system_top_domain + end + + def admin_url + "http://"+subdomain+"/admin" + end + + private + + def add_default_data + #current site is first, self is another. + self.class.with_site( self ) do| site | + site.stores.create!( name: site.name, code: site.short_name ) + user_attributes = { email: site.email, password: site.password, password_confirmation: password_confirmation } + user = site.users.create!(user_attributes) + user.spree_roles << Spree::Role.find_by_name('admin') + site.shipping_categories.create!( name: Spree.t(:default) ) + end + end + + def load_sample_products + file = File.join( Rails.application.root, 'db', 'samples', "seed.rb") + load file + end + + def load_sample_orders + file = File.join( Rails.application.root, 'db', 'fake_order', "seed.rb") + load file + end + + def set_short_name + if short_name.blank? + self.short_name = name.to_url + if self.class.exists?(:short_name=> self.short_name) + self.short_name << "-#{(self.class.last.id+1).to_s}" + end + end + end + + + def fix_status_of_stores + if active? + self.stores.update_all( is_public: true ) + else + self.stores.update_all( is_public: false ) + end + end +end diff --git a/spree_theme/app/models/spree/site_decorator.rb b/spree_theme/app/models/spree/site_decorator.rb new file mode 100644 index 00000000..e0e2c669 --- /dev/null +++ b/spree_theme/app/models/spree/site_decorator.rb @@ -0,0 +1,183 @@ +# order model by alphabet + +Spree::Asset.class_eval do + include Spree::MultiSiteSystem +end + +Spree::LogEntry.class_eval do + belongs_to :site + default_scope { where(:site_id => Spree::Site.current.id) } +end + +Spree::OptionType.class_eval do + belongs_to :site + default_scope { where(:site_id => Spree::Site.current.id) } + clear_validators! + # Add new validates_uniqueness_of with correct scope + validates :name, :uniqueness => { :scope => [:site_id] } + +end + +Spree::Order.class_eval do + include Spree::MultiSiteSystem +end + +# we should never call LineItem.find or LineItem.new +# use @order.line_items, @order.add_variant instead + +Spree::Prototype.class_eval do + include Spree::MultiSiteSystem +end + +#保存对应每个Site的配置属性 +Spree::Preference.class_eval do + include Spree::MultiSiteSystem +end + +Spree::PaymentMethod.class_eval do + include Spree::MultiSiteSystem +end + +Spree::Product.class_eval do + include Spree::MultiSiteSystem + include Spree::ProductExtraScope + + #has_many :global_classifications, dependent: :delete_all + #has_many :global_taxons, through: :global_classifications, source: :taxon + + friendly_id :slug_candidates, use: [:history, :scoped], :scope => :site + + clear_validators! + with_options length: { maximum: 255 }, allow_blank: true do + validates :meta_keywords + validates :meta_title + end + with_options presence: true do + validates :name, :shipping_category + validates :price, if: proc { Spree::Config[:require_master_price] } + end + + validates :slug, presence: true, uniqueness: { allow_blank: true, :scope => :site_id }, length: { maximum: 30 } + validate :discontinue_on_must_be_later_than_available_on, if: -> { available_on && discontinue_on } + + + # Try building a slug based on the following fields in increasing order of specificity. + def slug_candidates + [ + :name_to_url, + [:name_to_url, :sku], + [:name_to_url, :sku, :site_id] + ] + end + + def name_to_url + name.to_url[0,30] + end +end + +Spree::Property.class_eval do + include Spree::MultiSiteSystem +end + +#TODO add site_id into shipments? + +Spree::ShippingCategory.class_eval do + include Spree::MultiSiteSystem + clear_validators! + # comment when rake test_app + #validates :name, presence: true, uniqueness: { allow_blank: true, scope: :site_id } +end + +Spree::ShippingMethod.class_eval do + include Spree::MultiSiteSystem + +end + + +Spree::Taxonomy.class_eval do + include Spree::MultiSiteSystem + + clear_validators! + validates :name, presence: true, uniqueness: { case_sensitive: false, allow_blank: true, scope: :site_id } + +end + + +Spree::Taxon.class_eval do + include Spree::MultiSiteSystem + #重载以前的定义,添加site范围 + friendly_id :permalink, slug_column: :permalink, use: [:history, :scoped], :scope => :site + + has_many :global_classifications, dependent: :delete_all + has_many :global_products, through: :global_classifications, source: :product + + clear_validators! + validates :name, presence: true, uniqueness: { scope: [:parent_id, :taxonomy_id], allow_blank: true } + validates :permalink, uniqueness: { case_sensitive: false, scope: :site_id } + with_options length: { maximum: 255 }, allow_blank: true do + validates :meta_keywords + validates :meta_description + validates :meta_title + end +end + +Spree::TaxCategory.class_eval do + + belongs_to :site + default_scope { where(:site_id => Spree::Site.current.id) } + + clear_validators! + # Add new validates_uniqueness_of with correct scope + validates :name, :uniqueness => { scope: [:site_id,:deleted_at], allow_blank: true } + +end + +# TaxRate is join table, include tax_catory_id and zone_id +# in TaxRate.match it called method :all, so we have to add joins=>tax_category +# in fact, we should never use TaxRate in spree_abc for now. +Spree::TaxRate.class_eval do + default_scope { joins( :tax_category). where("spree_tax_categories.site_id=?", Spree::Site.current.id) } +end + +Spree::Tracker.class_eval do + include Spree::MultiSiteSystem + + def self.current + tracker = where(active: true).first + tracker.analytics_id.present? ? tracker : nil if tracker + end +end + +Spree.user_class.class_eval do + # user.email validation is unique, it is defined in devise/lib/models/validatable.rb + # 1. we required user have unique email, + # 2. we allow user modify their password after sign up. + # fix unique with scope [site_id] would conflict with 1 + include Spree::MultiSiteSystem +end + +Spree::Variant.class_eval do + clear_validators! + # copy original validates + #validate :check_price + + validates :cost_price, numericality: { greater_than_or_equal_to: 0, allow_nil: true } + validates :price, numericality: { greater_than_or_equal_to: 0, allow_nil: true } + # disable uniqueness_of :sku + validates_uniqueness_of :sku, allow_blank: true, conditions: -> { joins(:product).where( spree_variants: { deleted_at: nil}, spree_products: {site_id: Spree::Site.current.id } ) } + +end + +Spree::Zone.class_eval do + include Spree::MultiSiteSystem + + clear_validators! + # Add new validates_uniqueness_of with correct scope + validates :name, :presence => true, :uniqueness => { :scope => [:site_id] } +end + + +Spree::Post.class_eval do + belongs_to :site + default_scope { where(:site_id => Spree::Site.current.id) } +end diff --git a/spree_theme/app/models/spree/specific_taxon.rb b/spree_theme/app/models/spree/specific_taxon.rb index 70efc18f..2429fdb8 100644 --- a/spree_theme/app/models/spree/specific_taxon.rb +++ b/spree_theme/app/models/spree/specific_taxon.rb @@ -1,20 +1,15 @@ #encoding utf8 # a template page_layout is composited of sections # each section could be specific for assigned taxons, only appear in those pages. -# 示例: 有一个section, 内容是 form表单 “请留言”, 希望只出现在 “联系我们” 页面里。 +# 示例: 有一个section, 内容是 form表单 “请留言”, 希望只出现在 “联系我们” 页面里。 # 在 template_themes.assigned_resource_ids 里, 已经有关键字 :spree_taxon,表示分配给section的菜单。 # 这里我们通过继承,创建新的关键字 :spree_specific_taxon # -module Spree +module Spree # comma separated taxon_id - # it has to be in template_theme, use assigned_resource_ids + # it has to be in template_theme, use assigned_resource_ids class SpecificTaxon < SpreeTheme.taxon_class - include AssignedResource::SourceInterface - # it is resource of template_theme - def importable? - false - end end end diff --git a/spree_theme/app/models/spree/store_asset.rb b/spree_theme/app/models/spree/store_asset.rb new file mode 100644 index 00000000..8c302e4c --- /dev/null +++ b/spree_theme/app/models/spree/store_asset.rb @@ -0,0 +1,6 @@ +module Spree + class StoreAsset < Spree::Base + belongs_to :viewable, polymorphic: true, touch: true + acts_as_list scope: [:viewable_id, :viewable_type] + end +end diff --git a/spree_theme/app/models/spree/store_decorator.rb b/spree_theme/app/models/spree/store_decorator.rb new file mode 100644 index 00000000..acf30791 --- /dev/null +++ b/spree_theme/app/models/spree/store_decorator.rb @@ -0,0 +1,72 @@ +Spree::Store.class_eval do + # Do not use default_scope, in view template_theme/foreign, we want to get store of template_theme. + # include Spree::MultiSiteSystem + belongs_to :site + + clear_validators! + class << self + #override original current + def current(domain = nil) + #UnknownStore.instance is for test only + ::Thread.current[:spree_store] || UnknownStore.instance + end + + def current=(some_store) + ::Thread.current[:spree_store] = some_store + end + + def by_domain( domain ) + current_store = if domain.is_a? String + if domain.end_with? Spree::Site.system_top_domain + # 域名示例 + # getstore.cn,www.getstore.cn, test.getstore.cn + if domain == Spree::Site.system_top_domain + self.god + else + short_name = domain.split('.').first + self.find_by_code(short_name) + end + else + self.by_url(domain).first + end + else + self.default + end + current_store + end + + # we can not easily modify cookies except firefox, we'll add default_site for debug page on other browser. + # we could set default site for missing site as well. + def default + # Fix Spree::Store.default.persisted? + where( default: true ).first || new + end + + def god + where( code: 'www' ).first + end + end + + # current site'subdomain => short_name.tld + def subdomain + code + '.' + Spree::Site.system_top_domain + end + + # it is god(first) store + def god? + self == self.class.god + end + + #app_configuration require site_id + class UnknownStore + include Singleton + def id + 0 + end + + def site + #app_configuration require site_id + Struct.new(:id).new(0) + end + end +end diff --git a/spree_theme/app/models/spree/store_favicon.rb b/spree_theme/app/models/spree/store_favicon.rb new file mode 100644 index 00000000..505c27e6 --- /dev/null +++ b/spree_theme/app/models/spree/store_favicon.rb @@ -0,0 +1,15 @@ +# a post could have several attachments +class Spree::StoreFavicon < Spree::StoreAsset + + #attr_accessible :alt, :attachment + + has_attached_file :attachment, + :url => "/shops/:rails_env/:class/:id/:filename", + :path => ":rails_root/public/shops/:rails_env/:class/:id/:filename", + styles: { mini: '48x48>' }, + default_url: '/assets/images/favicon.ico' + + validates_attachment :attachment, presence: true, + content_type: { content_type: %w(image/x-icon image/vnd.microsoft.icon) }, + size: { in: 0..1.megabytes } +end diff --git a/spree_theme/app/models/spree/store_logo.rb b/spree_theme/app/models/spree/store_logo.rb new file mode 100644 index 00000000..7d828959 --- /dev/null +++ b/spree_theme/app/models/spree/store_logo.rb @@ -0,0 +1,15 @@ +# a post could have several attachments +class Spree::StoreLogo < Spree::StoreAsset + + #attr_accessible :alt, :attachment + + has_attached_file :attachment, + :url => "/shops/:rails_env/:class/:id/:style_:filename", + :path => ":rails_root/public/shops/:rails_env/:class/:id/:style_:filename", + styles: { mini: '48x48>' }, + default_url: '/assets/images/logo/dalianshops.png' + + validates_attachment :attachment, presence: true, + content_type: { content_type: %w(image/jpg image/jpeg image/png image/gif) }, + size: { in: 0..5.megabytes } +end diff --git a/spree_theme/app/models/spree/template_file.rb b/spree_theme/app/models/spree/template_file.rb index c98c2a6f..8f137dc7 100644 --- a/spree_theme/app/models/spree/template_file.rb +++ b/spree_theme/app/models/spree/template_file.rb @@ -1,32 +1,32 @@ module Spree - + # file uploaded for template class TemplateFile < ActiveRecord::Base - include Spree::AssignedResource::SourceInterface - belongs_to :template_theme, :foreign_key=>"theme_id" - + belongs_to :template_theme, :foreign_key=>"theme_id", :class_name =>'Spree::TemplateTheme' + #validates_uniqueness_of :file_name - has_attached_file :attachment + has_attached_file :attachment, styles: { mini: '48x48>' } self.attachment_definitions[:attachment][:url] = "/shops/:rails_env/:site/:class/:id/:basename_:style.:extension" self.attachment_definitions[:attachment][:path] = ":rails_root/public/shops/:rails_env/:site/:class/:id/:basename_:style.:extension" self.attachment_definitions[:attachment][:default_url] = "/images/:style/missing.png" - - delegate :url, :to => :attachment + validates_attachment_content_type :attachment, :content_type => /\Aimage\/.*\Z/ + + delegate :url, :to => :attachment delegate :site_id, :to => :template_theme # required by Paperclip.interpolates :site #it is required while import theme with new template_file. we would set theme.assigned_resources while import. attr_accessor :page_layout_id #attr_accessible :theme_id, :attachment, :page_layout_id #get resource name. alias_attribute(:name, :attachment_file_name) - - #it is required, even for logo, app_configuration has default logo, each theme could customize logo - validate :template_theme, :presence=>true - + + #it is required, even for logo, app_configuration has default logo, each theme could customize logo + validates_presence_of :template_theme + #for resource_class.resourceful scope :resourceful, ->(theme){ where(:theme_id=>theme.id)} - - + + #deep dup def dup original_dup = super @@ -34,9 +34,5 @@ def dup original_dup end - # it is resource of template_theme - def importable? - false - end end end diff --git a/spree_theme/app/models/spree/template_resource.rb b/spree_theme/app/models/spree/template_resource.rb deleted file mode 100644 index 2767030a..00000000 --- a/spree_theme/app/models/spree/template_resource.rb +++ /dev/null @@ -1,54 +0,0 @@ -# this is class wrapper of tempate_theme.assigned_resource_ids -module Spree - class TemplateResource - attr_accessor :template_theme, :page_layout_key, :page_layout_id, :source_key, :source_id, :position - alias_attribute :to_i, :source_id - - def initialize( template_theme, page_layout_key, source_key, source_id, position = 0 ) - self.template_theme = template_theme - self.page_layout_key = page_layout_key # serialized hash key is string - self.page_layout_id = page_layout_key.to_i - self.source_key = source_key - self.source_id = source_id - self.position = position - end - - - #add - def save! - template_theme.assigned_resource_ids[page_layout_key]||={} - template_theme.assigned_resource_ids[page_layout_key][source_key]||=[] - template_theme.assigned_resource_ids[page_layout_key][source_key][position] = source_id - template_theme.save! - end - - #delete - def destroy! - # unassign resource from page_layout node - template_theme.assigned_resource_ids[page_layout_key][source_key][position] = 0 - template_theme.save! - end - - def update_attribute!(key,val) - if key == :page_layout_id - new_page_layout_key = val.to_s - template_theme.assigned_resource_ids[new_page_layout_key] = template_theme.assigned_resource_ids.delete(page_layout_key) - elsif key == :source_id - template_theme.assigned_resource_ids[page_layout_key][source_key][position] = val - end - template_theme.save! - end - - def source_class( ) - # "spree/template_file" => Spree::TemplateFile - source_key.classify.constantize - end - - def source - source_class.find_by_id source_id - end - def unscoped_source - source_class.unscoped.find_by_id source_id - end - end -end \ No newline at end of file diff --git a/spree_theme/app/models/spree/template_text.rb b/spree_theme/app/models/spree/template_text.rb index 27f85cd3..af69fc6c 100644 --- a/spree_theme/app/models/spree/template_text.rb +++ b/spree_theme/app/models/spree/template_text.rb @@ -1,36 +1,21 @@ -module Spree +module Spree class TemplateText < ActiveRecord::Base - include Spree::AssignedResource::SourceInterface - validates_presence_of :name #attr_accessible :name, :body - #for resource_class.resourceful - scope :resourceful, ->(theme){ where("1=1") } - default_scope ->{ where(:site_id=>Site.current.id)} - before_validation :normalize_permalink + default_scope ->{ where(:site_id=>SpreeTheme.site_class.current.id)} + belongs_to :site - # it is resource of template_theme - def importable? - true - end - - def self.find_or_copy( text ) - existing_text = find_by_permalink( text.permalink ) - if existing_text.blank? - cloned_branch = text.dup - cloned_branch.site_id = Spree::Site.current.id - cloned_branch.save! - end - existing_text||cloned_branch + #for resource_class.resourceful + scope :resourceful, ->(theme){ where("1=1") } - end - + before_validation :normalize_permalink + #before_destroy check is it assigned. private def normalize_permalink self.permalink = (permalink.blank? ? name.to_s.to_url : permalink).downcase.gsub(/(^[\/\-\_]+)|([\/\-\_]+$)/, "") end - + end end diff --git a/spree_theme/app/models/spree/template_theme.rb b/spree_theme/app/models/spree/template_theme.rb index 577de5e2..9d3bf6b9 100644 --- a/spree_theme/app/models/spree/template_theme.rb +++ b/spree_theme/app/models/spree/template_theme.rb @@ -1,7 +1,7 @@ #encoding: utf-8 # * 这是一个示例页面 -# * -# * hello world! +# * +# * hello world! # * # * 从抽象角度看,一个网站是很多页面组成,每个页面是由html和css。 # * html 表示了页面的布局(html标签如
      ,
        )和内容(除标签外的数据,如:上面的 'hello world'),css 表示了页面的样式。 @@ -11,7 +11,7 @@ # * 每个网站的页面数量是未定的。 但是我们可以所有的页面分成几类: # * 首页,产品列表, 产品描述, 登陆/注册, 购物车, 结帐, 购物成功,我的账户, 密码恢复。 # * 如果模板提供了这几类页面,网站就可以使用了。 -# * 不同的页面有不同的内容, 当创建页面时,需要设定页面的类型。 +# * 不同的页面有不同的内容, 当创建页面时,需要设定页面的类型。 # * 2. 设计页面布局,根据html语言的特点, 页面的布局可以看成树型结构,如图所示,每个节点可以是相对独立的一部分页面,或者是容器包含其他节点。 # * html root - head # * - body - logo @@ -23,78 +23,97 @@ # * - footer # * 我们把节点定义为section, 每一个section由html标签、css和内容组成。 如果一个section是容器,那么它可以包含其他section. # * 在实际中, 多个页面希望共用logo 、main menu 和 footer, cart只在购物车页面显示。因此每个section可以有页面类型,表示它适用于什么样的页面。 -# * +# * # * 3. 设计页面内容. 不同的页面有不同的内容,模板的内容有几类: 图片、文字、菜单 、产品信息和表单 # * 图片、文字、菜单 、产品信息都是用户添加的,称为用户资源,用户可以把它分配给相应section,实现展示。 -# * 为了便于对产品的管理,我们用taxon作为产品的集合, 一个页面可以由一个或几个taxon的产品构成。 -# * 4. 设计页面样式. CSS设计, 用户通过设置section的css值实现。 -# * -# * -# * template_theme, -# * template_theme, it is a template of site. In a general way, we could say all template are just html and css. +# * 为了便于对产品的管理,我们用taxon作为产品的集合, 一个页面可以由一个或几个taxon的产品构成。 +# * 4. 设计页面样式. CSS设计, 用户通过设置section的css值实现。 +# * +# * +# * template_theme, +# * template_theme, it is a template of site. In a general way, we could say all template are just html and css. # * template_theme is composite of page_layout and param_values. page_layout is html, param_value is css -# * +# * module Spree - #it is a theme of page_layout + #it is a theme of page_lay class TemplateTheme < ActiveRecord::Base - include AssignedResource::IdsHandler + include AssignedResource::TemplateResourceGlue + include Shared::TemplateThemePath #extend FriendlyId - belongs_to :website, :class_name => SpreeTheme.site_class.to_s, :foreign_key => "site_id" - - #belongs_to :website #move it into template_theme_decorator + TerminalEnum = Struct.new( :desktop, :mobile, :pad, :tv )[0,1,2,3] + # 模板生成客户页面的方法 + # all: 编译页面内容在一个方法里,调用这个方法生成页面 + # page: 对应每一类页面生成一个文件,生成页面时引擎选择相应文件返回给客户 + enum renderer: { renderer_all: 0, renderer_page: 1, renderer_none: 4 } #, _prefix: true + + belongs_to :store, :foreign_key => "store_id" + # for now template_theme and page_layout are one to one - belongs_to :page_layout, :foreign_key=>"page_layout_root_id" #, :dependent=>:destroy #imported theme refer to page_layout of original theme + # 可能多个TemplateTheme对应一个page_layout_root + belongs_to :page_layout_root, :foreign_key=>"page_layout_root_id" , class_name: "Spree::PageLayout" + + # partial_htmls required, initialize parent first. + has_many :page_layouts, ->{ order('lft') }, inverse_of: :template_theme + #commnet it out after migration AddThemeIdToPageLayout done. + #belongs_to :page_layout, :foreign_key=>"page_layout_root_id" #, :dependent=>:destroy #imported theme refer to page_layout of original theme has_many :param_values, :foreign_key=>"theme_id", :dependent => :delete_all - has_many :template_files, :foreign_key=>"theme_id", :dependent => :delete_all + has_many :template_files, foreign_key: "theme_id", class_name: "Spree::TemplateFile", inverse_of: :template_theme, dependent: :delete_all has_many :template_releases, :foreign_key=>"theme_id", :dependent => :delete_all # template_release may be in current or design site - belongs_to :current_template_release, :class_name=>"TemplateRelease", :foreign_key=>"release_id" - - scope :by_layout, ->(layout_id) { where(:page_layout_root_id => layout_id) } + belongs_to :current_template_release, :class_name=>"TemplateRelease", :foreign_key=>"release_id", required: false + has_one :mobile, foreign_key: "master_id", class_name: self.name + belongs_to :desktop, foreign_key: "master_id", class_name: self.name, required: false + belongs_to :duplicated_from, foreign_key: "copy_from_id", class_name: self.name, required: false + #use string as key instead of integer page_layout.id, exported theme in json, after restore, key is always string serialize :assigned_resource_ids, Hash - scope :within_site, ->(site){ where(:site_id=> site.id) } + scope :released, ->{ where("release_id>0") } scope :published, -> { released.where(:is_public=>true) } - + scope :for_desktop, ->{ where( for_terminal: TerminalEnum.desktop) } + scope :for_mobile, ->{ where( for_terminal: TerminalEnum.mobile) } + + # assigned_resource_ids it has to be {} or nil, '' would cause ActiveRecord::SerializationTypeMismatch on 4.2.2 before_validation :fix_special_attributes before_destroy :remove_relative_data after_create :initialize_page_layout_for_plain_theme - + validates :title, presence: true attr_accessor :section_root_id - #attr_accessible :is_public, :site_id,:page_layout_root_id,:title, :section_root_id # section_root_id is only required for create- initialize_page_layout #attr_accessible :assigned_resource_ids, :template_files #import require it. - - + # add method original_page_layout_root, original_page_layouts + delegate :page_layout_root, :page_layouts, to: :original_template_theme, prefix: :original + class << self # template has page_layout & param_values - # + # def create_plain_template( section_root, title, attrs={}) #create a theme first. - template = TemplateTheme.create({:title=>title, :section_root_id=>section_root.id}.merge(attrs)) + template = TemplateTheme.create( {:title=>title, :section_root_id=>section_root.id}.merge(attrs) ) do |obj| + obj.store = Spree::Store.current + end end - + def native - self.within_site(SpreeTheme.site_class.current ) + where(:store=> Spree::Store.current) end - + def foreign - self.within_site(SpreeTheme.site_class.designsite ).published - end - + where(:store=> Spree::Store.designable).published + end + # original_theme may be attributes in hash def fix_related_data_for_copied_theme(new_theme, new_nodes, new_template_files, original_theme, original_nodes, original_template_files, created_at) # # update param_values original_theme_id = original_theme['id'] new_theme_id = new_theme.id - + original_nodes.each_with_index{|node,index| new_node = new_nodes[index] ParamValue.where( :theme_id=>original_theme_id, :page_layout_id=>node.id, :created_at=>created_at ). - update_all( :page_layout_id=> new_node.id, :page_layout_root_id=>new_theme.page_layout_root_id, :theme_id=>new_theme_id ) + update_all( :page_layout_id=> new_node.id, :page_layout_root_id=>new_theme.page_layout_root_id, :theme_id=>new_theme_id ) obsolete_template_resources = new_theme.template_resources.select{|template_resource| template_resource.page_layout_id== node.id } if obsolete_template_resources.present? #change page_layout_key, update one of them is done. @@ -103,314 +122,244 @@ def fix_related_data_for_copied_theme(new_theme, new_nodes, new_template_files, } # after page_layout_key updated, confirm template_resource existing. new_theme.template_resources.select{|template_resource| template_resource.source.nil? }.each(&:destroy!) - + if created_at.present? Spree::TemplateFile.where(:created_at=>created_at, :theme_id=>original_theme_id).update_all( :theme_id=>new_theme_id ) - Spree::TemplateRelease.where(:created_at=>created_at, :theme_id=>original_theme_id).update_all( :theme_id=>new_theme_id ) + Spree::TemplateRelease.where(:created_at=>created_at, :theme_id=>original_theme_id).update_all( :theme_id=>new_theme_id ) end new_theme.save! - end + end # copy taxon,text from original_theme to new_theme - def import_assigned_resource( original_theme, new_theme ) - original_template_resources = original_theme.template_resources - # new_theme.assigned_resource_ids is empty now - new_theme.assigned_resource_ids = original_theme.assigned_resource_ids.dup - # import each resource - new_theme.template_resources.each{| template_resource | - unscoped_source = template_resource.unscoped_source - if unscoped_source.present? && unscoped_source.importable? - new_source = template_resource.source_class.find_or_copy unscoped_source - template_resource.update_attribute!(:source_id, new_source.id) - else - template_resource.destroy! - end - } - # assgin imported resource to new_theme - end + #def import_assigned_resource( original_theme, new_theme ) + # original_template_resources = original_theme.template_resources + # # new_theme.assigned_resource_ids is empty now + # new_theme.assigned_resource_ids = original_theme.assigned_resource_ids.dup + # # import each resource + # new_theme.template_resources.each{| template_resource | + # unscoped_source = template_resource.unscoped_source + # if unscoped_source.present? && unscoped_source.importable? + # new_source = template_resource.source_class.find_or_copy unscoped_source + # template_resource.update_attribute!(:source_id, new_source.id) + # else + # template_resource.destroy! + # end + # } + # # assgin imported resource to new_theme + #end end - + + # 生成模板文件 # params # options: page_only- do not create template_release record, rake task import_theme required it - def release( release_attributes= {},option={}) - unless option[:page_only] - template_release = self.template_releases.build - template_release.name = "just a test" - template_release.save! - end - self.reload # release_id shoulb be template_release.id - @lg = PageTag::PageGenerator.releaser( self ) - @lg.release - self.current_template_release + def release( release_attributes= {}, options={} ) + + releaser( options ).release + + self.current_template_release end - - begin 'for page generator' - # * params - # * usage - may be [ehtml, css, js] - def file_name(usage) - if usage.to_s == 'ehtml' - "l#{page_layout_root_id}.html.erb" - else - "l#{page_layout_root_id}.#{usage}" - end - end - - # folder name 'layouts' is required, rails look for layout in folder named 'layouts' - def path - # self.id is not accurate, it may use imported theme of design site. - # on other side, design site may release template first time. current_template_release = nil - if self.current_template_release.present? - File.join( File::SEPARATOR+'layouts', "t#{self.current_template_release.theme_id}_r#{self.release_id}") - else - File.join( File::SEPARATOR+'layouts', "t#{self.id}_r#{self.release_id}") - end - end - - def document_path - File.join( page_layout.site.document_path, self.path) - end - - # * params - # * targe - could be css, js - # * return js or css document file path, ex /shops/development/1/layouts/t1_r1/l1_t1.css - def file_path( target ) - # theme.site do not work. - File.join(page_layout.site.path, self.path, file_name(target)) - end - - def layout_path - document_file_path( :ehtml ) - end - - def document_file_path( target ) - File.join( document_path, file_name(target) ) - end - - #def released? - # release_id > 0 - #end + + def releaser( options={} ) + TemplateThemeReleaser.new( self, options) end - + begin 'edit template' - #import template theme design into current site - #only create template record, do not copy param_value,page_layout,template_file... - # * params - # * resource_config - new configuration for resource - def import(new_attributes={}) - raise ArgumentError unless self.template_releases.exists? && self.is_public? - #only released template and :is_public is importable - #create theme record - new_theme = self.dup - #set resource to site native - new_theme.title = "Imported "+ new_theme.title - new_theme.attributes = new_attributes - new_theme.assigned_resource_ids = {} - new_theme.site_id = SpreeTheme.site_class.current.id - new_theme.save! - new_theme - end - - # for simple to user, copy taxonomy as well when import. - # - def import_with_resource( new_attributes={}) - self.transaction do - new_theme = import( new_attributes ) - #include taxon, image, file, specific-taxon - self.class.import_assigned_resource( self, new_theme ) - new_theme - end - end - - + # theme from design shop has been imported into current site or not def imported? # theme should has page_layout, param_values themes = TemplateTheme.native.includes(:current_template_release) #theme.current_template_release may be nil - themes.select{|theme| theme.current_template_release.try(:theme_id) == self.id}.present? + themes.select{|theme| theme.current_template_release.try(:theme_id) == self.id}.present? end - + def has_native_layout? - !self.class.exists?(["page_layout_root_id=? and idself.page_layout_root_id).first + #duplicated_from 有自己的page_layouts + has_native_layout? ? self : duplicated_from + #self.class.where(:page_layout_root_id=>self.page_layout_root_id).first + end + + def duplicator + TemplateThemeDuplicator.new( self ) + end + + def duplicate + duplicator.duplicate end - # Usage: user want to copy this layout&theme to new for editing or backup. # we need copy param_value and theme_images - # note that it is only for root. - def copy_to_new() - created_at = DateTime.now - original_layout = self.page_layout - #copy new whole tree - new_layout = original_layout.copy_to_new - #create theme record - new_theme = self.dup - new_theme.release_id = 0 # new copied theme should have no release - new_theme.page_layout_root_id = new_layout.id - new_theme.save! - - #copy param values - #INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100; - table_name = ParamValue.table_name - - table_column_names = ParamValue.column_names - table_column_names.delete('id') - table_column_values = table_column_names.dup - # method fix_related_data_for_copied_theme handle theme_id, page_layout_root_id - #table_column_values[table_column_values.index('page_layout_root_id')] = new_layout.id - #table_column_values[table_column_values.index('theme_id')] = new_theme.id - table_column_values[table_column_values.index('created_at')] = "'#{created_at.utc.to_s(:db)}'" #=>'2014-08-20 02:48:23' - #copy param value from origin to new. - sql = %Q!INSERT INTO #{table_name}(#{table_column_names.join(',')}) SELECT #{table_column_values.join(',')} FROM #{table_name} WHERE (theme_id =#{self.id})! - self.class.connection.execute(sql) - #copy template_files - new_template_files = self.template_files.map{|template_file| - new_template_file = template_file.dup - new_template_file.theme_id = new_theme.id - new_template_file.created_at = created_at - new_template_file.save! - } - #update layout_id to new_layout.id - self.class.fix_related_data_for_copied_theme(new_theme, new_layout.self_and_descendants, new_template_files, self, original_layout.self_and_descendants, self.template_files, created_at) - return new_theme - end - + # note that it is only for root. + #def copy_to_new() + # created_at = DateTime.now + # original_layout = self.page_layout_root + # #copy new whole tree + # new_layout = original_layout.copy_to_new + # #create theme record + # new_theme = self.dup + # new_theme.store_id = Spree::Store.current.id + # new_theme.release_id = 0 # new copied theme should have no release + # new_theme.page_layout_root_id = new_layout.id + # new_theme.save! + + # #copy param values + # #INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100; + # table_name = ParamValue.table_name + + # table_column_names = ParamValue.column_names + # table_column_names.delete('id') + # table_column_values = table_column_names.dup + # # method fix_related_data_for_copied_theme handle theme_id, page_layout_root_id + # #table_column_values[table_column_values.index('page_layout_root_id')] = new_layout.id + # #table_column_values[table_column_values.index('theme_id')] = new_theme.id + # table_column_values[table_column_values.index('created_at')] = "'#{created_at.utc.to_s(:db)}'" #=>'2014-08-20 02:48:23' + # #copy param value from origin to new. + # sql = %Q!INSERT INTO #{table_name}(#{table_column_names.join(',')}) SELECT #{table_column_values.join(',')} FROM #{table_name} WHERE (theme_id =#{self.id})! + # self.class.connection.execute(sql) + # #copy template_files + # new_template_files = self.template_files.map{|template_file| + # new_template_file = template_file.dup + # new_template_file.theme_id = new_theme.id + # new_template_file.created_at = created_at + # new_template_file.save! + # } + # #update layout_id to new_layout.id + # self.class.fix_related_data_for_copied_theme(new_theme, new_layout.self_and_descendants, new_template_files, self, original_layout.self_and_descendants, self.template_files, created_at) + # return new_theme + #end + # Usage: modify layout, add the section instance as child of current node into the layout, - # Params: + # Params: # page_layout, instance of model PageLayout # relationship, 'parent', 'silbing' # selected_page_layout, there should be selected one, except adding root page_layout # return: added page_layout record - # + # def add_section(section, selected_page_layout=nil, attrs={}) # check section.section_piece.is_container? added_section = nil - if section.root? + if section.root? section_instance = 1 if selected_page_layout.present? - raise 'only container could has child section' unless selected_page_layout.section.section_piece.is_container + raise 'only container could has child section' unless selected_page_layout.section.section_piece.is_container whole_tree = selected_page_layout.root.self_and_descendants section_instance = whole_tree.select{|xnode| xnode.section_id==section.id}.size.succ end - attrs[:title]||="#{section.title}#{section_instance}" + attrs[:title]||="#{section.title}#{section_instance}" added_section = PageLayout.create do|obj| obj.section_id, obj.section_instance=section.id, section_instance obj.assign_attributes( attrs ) obj.root_id = selected_page_layout.root_id if selected_page_layout.present? - obj.site_id = SpreeTheme.site_class.current.id + obj.template_theme_id = self.id obj.is_full_html = section.section_piece.is_root? end if selected_page_layout.present? added_section.move_to_child_of(selected_page_layout) - else - added_section.update_attribute("root_id",added_section.id) end #copy the default section param value to the layout added_section.add_param_value(self) end added_section end - + # ex. get dialog section def find_section_by_usage( usage ) - PageLayout.includes(:section=>:section_piece).where(["#{PageLayout.table_name}.root_id=? and #{SectionPiece.table_name}.usage=?",self.page_layout_root_id, usage]).first + # ["#{PageLayout.table_name}.root_id=? and #{SectionPiece.table_name}.usage=?",self.page_layout_root_id, usage] + PageLayout.includes(:section).where( spree_sections:{usage: usage}, template_theme_id: original_template_theme.id ).first end - + def dialog_content_container_selector dialog = find_section_by_usage( 'dialog' ) - dialog_content_container = dialog.section.descendants.includes(:section_piece).select{|section| section.section_piece.usage=='dial-cont'}.first - dialog.css_selector(dialog_content_container)+"_inner" + dialog.css_selector + " .dialog_content" end - + end + begin 'export&import' # export to yaml, include page_layouts, param_values, template_files # it is a hash with keys :template, :param_values, :page_layouts def serializable_data - template = self.class.find(self.id,:include=>[:param_values,:page_layout]) + template = self.class.includes(:param_values,:page_layout_root).find(self.id) # template.page_layout.self_and_descendants would cause error # https://github.com/rails/rails/issues/5303 # serializable_data.to_yaml, it only get error in rake task. # serializable_data.to_json, key is string when load - hash ={'template'=>template, 'param_values'=>template.param_values, 'page_layouts'=>template.page_layout.self_and_descendants.all, + hash ={'template'=>template, 'param_values'=>template.param_values, 'page_layouts'=>template.page_layout_root.self_and_descendants.all, 'template_files'=>template.template_files,'template_releases'=>template.template_releases - } - hash + } + hash end - + # it would delete existing one first, then import # params # file - opened file - # return imported theme - def self.import_into_db( serialized_data, replace_exisit= false ) - new_template = nil - template = serialized_data.stringify_keys!.fetch 'template' - transaction do - created_at = DateTime.now - # support yaml/json, record is model/hash - #site id is 1 in exported yml, in spree_abc, design.dalianshops.com is 2 - original_template_attributes = get_attributes_serialized_data(template).merge!( 'created_at'=>created_at ) - - if self.exists?(original_template_attributes['id']) - if replace_exisit - existing_template = self.find(original_template_attributes['id']) - existing_template.destroy - end - end + # return imported theme + #def self.import_into_db( serialized_data, replace_exisit= false ) + # new_template = nil + # template = serialized_data.stringify_keys!.fetch 'template' + # transaction do + # created_at = DateTime.now + # # support yaml/json, record is model/hash + # #site id is 1 in exported yml, in spree_abc, design.tld is 2 + # original_template_attributes = get_attributes_serialized_data(template).merge!( 'created_at'=>created_at ) + # if self.exists?(original_template_attributes['id']) + # if replace_exisit + # existing_template = self.find(original_template_attributes['id']) + # existing_template.destroy + # end + # end + # if replace_exisit + # create!(original_template_attributes) + # else + # create!(original_template_attributes.except('id')) + # end + # new_template = self.where( original_template_attributes.slice('created_at','title','page_layout_root_id') ).first + # # we need new template id + # # template = self.find_by_title template.title + # serialized_data['param_values'].each do |record| + # attributes = get_attributes_serialized_data(record).except('id') + # #for unknown reason param_value.created_at/updated_at may be nil + # attributes['created_at']=created_at + # attributes['updated_at']=attributes['created_at'] if attributes['updated_at'].blank? + # ParamValue.create!(attributes) + # end + # original_nodes = serialized_data['page_layouts'] + # original_nodes = original_nodes.collect{|node| build_model_from_serialized_data( PageLayout, node)} + # new_nodes = PageLayout.copy_to_new( original_nodes ) + # new_template.update_attribute(:page_layout_root_id, new_nodes.first.id) + # #serialized_data[:page_layouts].each do |record| + # # table_name = PageLayout.table_name + # # connection.insert_fixture(record.attributes, table_name) + # #end + # new_template_files = [] + # original_template_files = [] + # serialized_data['template_files'].each_with_index do |record, i| + # original_template_file_attributes = get_attributes_serialized_data(record) + # attributes = original_template_file_attributes.except('id').merge!('created_at'=>created_at,'theme_id'=>new_template.id) + # TemplateFile.create!(attributes) + # new_template_files << TemplateFile.where( attributes.slice('created_at','theme_id') ).first + # original_template_files << original_template_file_attributes + # end + # serialized_data['template_releases'].each do |record| + # attributes = get_attributes_serialized_data(record).except('id').merge!('created_at'=>created_at,'theme_id'=>new_template.id) + # TemplateRelease.create!(attributes) + # end + # fix_related_data_for_copied_theme(new_template, new_nodes, new_template_files, original_template_attributes, original_nodes, original_template_files, created_at) + # end + # new_template + #end - if replace_exisit - connection.insert_fixture(original_template_attributes, self.table_name) - else - connection.insert_fixture(original_template_attributes.except('id'), self.table_name) - end - new_template = self.where( original_template_attributes.slice('created_at','title','page_layout_root_id') ).first - # we need new template id - # template = self.find_by_title template.title - serialized_data['param_values'].each do |record| - table_name = ParamValue.table_name - attributes = get_attributes_serialized_data(record).except('id') - #for unknown reason param_value.created_at/updated_at may be nil - attributes['created_at']=created_at - attributes['updated_at']=attributes['created_at'] if attributes['updated_at'].blank? - connection.insert_fixture(attributes, table_name) - end - original_nodes = serialized_data['page_layouts'] - original_nodes = original_nodes.collect{|node| build_model_from_serialized_data( PageLayout, node)} - new_nodes = PageLayout.copy_to_new( original_nodes ) - new_template.update_attribute(:page_layout_root_id, new_nodes.first.id) - #serialized_data[:page_layouts].each do |record| - # table_name = PageLayout.table_name - # connection.insert_fixture(record.attributes, table_name) - #end - new_template_files = [] - original_template_files = [] - serialized_data['template_files'].each_with_index do |record, i| - table_name = TemplateFile.table_name - original_template_file_attributes = get_attributes_serialized_data(record) - attributes = original_template_file_attributes.except('id').merge!('created_at'=>created_at,'theme_id'=>new_template.id) - connection.insert_fixture(attributes, table_name) - new_template_files << TemplateFile.where( attributes.slice('created_at','theme_id') ).first - original_template_files << original_template_file_attributes - end - serialized_data['template_releases'].each do |record| - table_name = TemplateRelease.table_name - attributes = get_attributes_serialized_data(record).except('id').merge!('created_at'=>created_at,'theme_id'=>new_template.id) - connection.insert_fixture(attributes, table_name) - end - fix_related_data_for_copied_theme(new_template, new_nodes, new_template_files, original_template_attributes, original_nodes, original_template_files, created_at) - end - new_template - end - def self.build_model_from_serialized_data(model_class, serialized_data) if serialized_data.kind_of? ActiveRecord::Base serialized_data @@ -419,147 +368,126 @@ def self.build_model_from_serialized_data(model_class, serialized_data) model_attributes = get_attributes_serialized_data( serialized_data ) model_class.new do|instance| model_attributes.each_pair{|key, val| instance[key] = val } - end + end end end - + def self.get_attributes_serialized_data( serialized_data ) # {:a=>1}.shift.last =>1, serialized_data in json { model_name=>{att1=>att1_value ...}} (serialized_data.kind_of? ActiveRecord::Base) ? serialized_data.attributes : serialized_data.shift.last end end - + def remove_relative_data if self.has_native_layout? - self.page_layout.destroy + self.page_layout_root.destroy end end - - begin 'assigned resource' - - # get resources order by taxon/image/text, - # return array of resources, no nil contained - def assigned_resources_by_page_layout( page_layout ) - template_resources.select{|template_resource| - template_resource.page_layout_id==page_layout.id - }.collect(&:source) - end - - # all resources used by this theme - # return menu roots/ images /texts, if none assgined, return [nil] or [] - def assigned_resources( resource_class, page_layout ) - template_resources.select{|template_resource| - template_resource.source_class == resource_class && template_resource.page_layout_id==page_layout.id - }.collect(&:source) - end - - # get assigned menu by specified page_layout_id, page_tag required - # params: - # resource_position: get first( position 0 ) of assigned resources by default - # logged_and_unlogged_menu required this feature - def assigned_resource_id( resource_class, page_layout, resource_position=0 ) - template_resources.select{|template_resource| - template_resource.source_class == resource_class && template_resource.page_layout_id==page_layout.id && template_resource.position == resource_position - }.first.to_i - end - - # assign resource to page_layout node - def assign_resource( resource, page_layout, resource_position=0 ) - create_template_resource( page_layout, resource, resource_position ) - end - # unassign resource from page_layout node - def unassign_resource( resource_class, page_layout, resource_position=0 ) - template_resources.select{|template_resource| - template_resource.source_class == resource_class && template_resource.page_layout_id==page_layout.id && template_resource.position == resource_position - }.each(&:destroy!) - - end - - #clear assigned_resource from theme - def unassign_resource_from_theme!( resource ) - template_resources.select{|template_resource| - template_resource.source == resource - }.each(&:destroy!) - end - - end - + + + # * params - + # * taxon - model Spree::taxon + # * selected_page_layout - model Spree::PageLayout # called in current_page_tag # is page_layout valid to taxon, taxon is current page # return true if taxon is decendant of specific_taxons - def valid_context?(page_layout, taxon) - specific_taxons = assigned_resources( Spree::SpecificTaxon, page_layout).compact + def valid_context?(selected_page_layout, taxon) + # 当前设计是,只有具有上下文的page_layout,需要stylish,同时页面可以共享头部和尾部 + # 如 文章列表/产品列表页有多种显示方式。 有的是文件下载,有的是新闻 + # + #stylish only apply page_layout with context other than either. + if !selected_page_layout.context_either? #selected_page_layout.stylish >0 # + # Rails.logger.debug "--------selected_page_layout=#{ selected_page_layout.title} --------" + # page_layout.stylish_with_inherited is required, child should get stylish from accestor + return false unless ( selected_page_layout.stylish_with_inherited == taxon.stylish_with_inherited ) + end + + specific_taxons = assigned_resources( Spree::SpecificTaxon, selected_page_layout).compact specific_taxon_ids = specific_taxons.collect(&:id) - is_valid = (page_layout.valid_context?(taxon.current_context)) + is_valid = (selected_page_layout.valid_context?(taxon.current_context)) + if is_valid && specific_taxon_ids.present? is_valid = specific_taxon_ids.include?(taxon.id) unless is_valid is_valid = specific_taxons.map{|specific_taxon| taxon.is_descendant_of?(specific_taxon) }.include?( true ) end end + is_valid end - + begin 'param values' def html_page HtmlPage.new(self) end - + # param values of self. #def full_param_values(editor_id=0) # if editor_id>0 - # ParamValue.find(:all, :include=>[:section_param=>[:section_piece_param=>:param_category]], + # ParamValue.find(:all, :include=>[:section_param=>[:section_piece_param=>:param_category]], # :conditions=>["theme_id=? and section_piece_params.editor_id=?", self.id, editor_id], # :order=>"section_piece_params.editor_id, param_categories.position") # else - # ParamValue.find(:all, :include=>[:section_param=>[:section_piece_param=>:param_category]], + # ParamValue.find(:all, :include=>[:section_param=>[:section_piece_param=>:param_category]], # :conditions=>["theme_id=?", self.id], # :order=>"section_piece_params.editor_id, param_categories.position") # end #end - - def get_resource_class_by_key( resource_key ) - # "spree/template_file" => Spree::TemplateFile - resource_key.classify.constantize - end - end - - # taxon_id which is assigned to template_theme and its context is index - def index_page - taxon_id = 0 - - taxons = template_resources.select{|template_resource| - template_resource.source_class == SpreeTheme.taxon_class - }.collect(&:source) - if taxons.present? - taxon_home = SpreeTheme.taxon_class.homes.where(["taxonomy_id in (?)", taxons.map(&:taxonomy_id ) ]).first - if taxon_home.present? - taxon_id = taxon_home.id - end - end - taxon_id + + #def get_resource_class_by_key( resource_key ) + # # "spree/template_file" => Spree::TemplateFile + # resource_key.classify.constantize + #end + end + + # taxon_id which is assigned to template_theme and its context is index + def home_page + taxon = nil + taxon_ids= template_resources.select{|template_resource| + template_resource.source_class == SpreeTheme.taxon_class + }.collect(&:source_id) + if taxon_ids.present? + taxons = SpreeTheme.taxon_class.where( id: taxon_ids ) + taxon = SpreeTheme.taxon_class.homes.where(["taxonomy_id in (?)", taxons.map(&:taxonomy_id ) ]).first + end + taxon end - + + # methods for mobile feature + def for_desktop? + for_terminal == TerminalEnum.desktop + end + + def for_mobile? + for_terminal == TerminalEnum.mobile + end + + def compiled_template_theme + CompiledTemplateTheme.new self + end + private def fix_special_attributes - if site_id == 0 - self.site_id = SpreeTheme.site_class.current.id + if store.blank? # when test, store_id may be nil + self.store_id= Spree::Store.current.id end #fix Attribute was supposed to be a Hash, but was a String - if new_record? && assigned_resource_ids.blank? - self.assigned_resource_ids={} - end + #if new_record? && assigned_resource_ids.blank? + # self.assigned_resource_ids={} + #end end - + # it is for create plain theme, create would trigger it. # copy_to_new, import do not call it def initialize_page_layout_for_plain_theme if section_root_id.present? root_section = Section.roots.find(section_root_id) - page_layout_root = add_section( root_section ) - self.update_attribute("page_layout_root_id",page_layout_root.id) - end + new_page_layout_root = add_section( root_section ) + self.update_attributes( + page_layout_root_id: new_page_layout_root.id, + for_terminal: root_section.for_terminal ) + end end - + end end diff --git a/spree_theme/app/models/spree/template_theme_duplicator.rb b/spree_theme/app/models/spree/template_theme_duplicator.rb new file mode 100644 index 00000000..ff2771f5 --- /dev/null +++ b/spree_theme/app/models/spree/template_theme_duplicator.rb @@ -0,0 +1,117 @@ +# mainly COPY from spree/core/product_duplicator +# tables +# site_related_tables: template_theme, +# site_unrelated tables: page_layout, param_value, template_file + + + +module Spree + class TemplateThemeDuplicator + attr_accessor :original_template_theme + def initialize( template_theme) + self.original_template_theme = template_theme + end + + def duplicate + #page_layout tree, template_files, template_theme save together. + new_template_theme = duplicate_template_theme + new_template_theme.page_layout_root = duplicate_page_layout( new_template_theme ) + new_template_theme.template_files = duplicate_template_files( new_template_theme ) + new_template_theme.save! + # page_layout_root is nested_set, it is not same as template_files + # new_template_theme.page_layout_root_id is 0. + # new_template_theme.save => new_template_theme.page_layout_root.save => new_template_theme.page_layout_root.template_theme.save + # so in fact new_template_theme is saved first, then page_layout_root.save ... + # even new_template_theme saved and page_layout_root saved + # we need to fix new_template_theme.page_layout_root_id + new_template_theme.update_attributes!( page_layout_root_id: new_template_theme.page_layout_root.id ) + handle_param_values( new_template_theme ) + handle_template_resources(new_template_theme ) + new_template_theme + end + + protected + + def duplicate_template_theme + new_template_theme = original_template_theme.dup + new_template_theme.store_id = Spree::Store.current.id + new_template_theme.release_id = 0 # new copied theme should have no release + new_template_theme.page_layout_root_id = 0 + new_template_theme.copy_from_id = original_template_theme.id + new_template_theme + end + + def duplicate_page_layout( new_template_theme ) + page_layout_root = original_template_theme.page_layout_root + h = { page_layout_root => page_layout_root.dup } #we start at the root + ordered = page_layout_root.descendants + #clone subitems + ordered.each do |item| + h[item] = item.dup + end + #resolve relations + ordered.each do |item| + cloned = h[item] + item_parent = h[item.parent] + item_parent.children << cloned if item_parent + end + h.each_pair{|item, cloned| + cloned.copy_from_id = item.id + cloned.template_theme = new_template_theme + } + cloned_branch = h[page_layout_root] + end + + def duplicate_template_files( new_template_theme ) + #copy template_files + new_template_files = original_template_theme.template_files.map{|template_file| + new_template_file = template_file.dup + new_template_file.assign_attributes(:attachment => template_file.attachment.clone) + new_template_file.template_theme = new_template_theme + new_template_file + } + end + + def handle_param_values( new_template_theme ) + original_theme_id = original_template_theme.id + new_theme_id = new_template_theme.id + #copy param values + #INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100; + table_name = ParamValue.table_name + + table_column_names = ParamValue.column_names + table_column_names.delete('id') + table_column_values = table_column_names.dup + # method fix_related_data_for_copied_theme handle theme_id, page_layout_root_id + table_column_values[table_column_values.index('page_layout_root_id')] = new_template_theme.page_layout_root_id + table_column_values[table_column_values.index('theme_id')] = new_template_theme.id + #table_column_values[table_column_values.index('created_at')] = "'#{created_at.utc.to_s(:db)}'" #=>'2014-08-20 02:48:23' + #copy param value from origin to new. + sql = %Q!INSERT INTO #{table_name}(#{table_column_names.join(',')}) SELECT #{table_column_values.join(',')} FROM #{table_name} WHERE (theme_id =#{original_theme_id})! + ActiveRecord::Base.connection.execute(sql) + + new_page_layout_nodes = new_template_theme.page_layouts + new_page_layout_nodes.each{|node| + ParamValue.where( :theme_id=>new_theme_id, :page_layout_id=>node.copy_from_id ). + update_all( :page_layout_id=> node.id ) + + } + + end + + def handle_template_resources( new_template_theme ) + obsolete_template_resources = new_template_theme.template_resources + new_page_layout_nodes = new_template_theme.page_layouts + new_page_layout_nodes.each{|node| + template_resource = obsolete_template_resources.select{|template_resource| template_resource.page_layout_id== node.copy_from_id }.first + if template_resource.present? + #change page_layout_key, update one of them is done. + template_resource.update_attribute!(:page_layout_id, node.id ) + end + } + # after page_layout_key updated, confirm template_resource existing. + # reload new_template_theme which may be from other store. + new_template_theme.template_resources.select{|template_resource| template_resource.source.nil? }.each(&:destroy!) + end + end +end diff --git a/spree_theme/app/models/spree/template_theme_releaser.rb b/spree_theme/app/models/spree/template_theme_releaser.rb new file mode 100644 index 00000000..6155ab43 --- /dev/null +++ b/spree_theme/app/models/spree/template_theme_releaser.rb @@ -0,0 +1,92 @@ +#负责模板的生成与发布 +module Spree + class TemplateThemeReleaser + attr_accessor :template_theme, :page_generator, :options + + def initialize( theme, options ) + self.template_theme = theme + self.options = options + end + + + #当前模板适用于哪些页面,即哪些上下文 + #生成模板时,序列化模板时,都需要使用 + def available_page_contexts + if template_theme.renderer_page? + # 登陆界面 + [:home, :list, :detail, :cart, :account, :checkout, :thanks, :signup, :login, :password, :blog, :post, :search] + else + [:all] + end + end + + + # 生成模板文件 + # params + # options: page_only- do not create template_release record, rake task import_theme required it + def release( release_attributes= {}) + if self.options[:page_only] + template_theme.current_template_release.touch #trigger define new compiled_template_theme method + else + template_release = self.template_theme.template_releases.build + template_release.name = "just a test" + template_release.save! + template_theme.reload # release_id shoulb be template_release.id + end + + generate_content + template_theme.current_template_release + end + + #取得taxon对应的模板文件路径 /home/david/www/spree_abc/public/shops/1/.... + def page_document_path( taxon ) + context = taxon.current_context + name = "#{context}.ehtml" + path = self.template_theme.document_file_path( name ) + end + + def generate_content + + self.page_generator = PageTag::PageGenerator.new( self.template_theme, nil ) + #build -> generate_assets -> serialize + self.page_generator.build( self.available_page_contexts ) # build ehtmls, ecss, ejs + self.page_generator.generate_assets # generate css, js + serialize_assets(:css) + serialize_assets(:js) + serialize_pages() + end + + + # *specific_attribute - ehtml, ecss, html, css + def serialize_assets(specific_attribute) + specific_attribute_collection = [:css,:js ] + raise ArgumentError unless specific_attribute_collection.include?(specific_attribute) + content = page_generator.send(specific_attribute) + if content.present? + path = self.template_theme.document_path + FileUtils.mkdir_p(path) unless File.exists?(path) + + path = self.template_theme.document_file_path(specific_attribute) + open(path, 'w') do |f| f.puts content; end + end + end + + + # *specific_attribute - ehtml + def serialize_pages() + raise ArgumentError unless available_page_contexts.length == page_generator.ehtmls.length + + available_page_contexts.each_with_index{| context, i| + content = page_generator.ehtmls[i] + name = "#{context}.ehtml" + path = self.template_theme.document_path + FileUtils.mkdir_p(path) unless File.exists?(path) + + path = self.template_theme.document_file_path( name ) + open(path, 'w') do |f| f.puts content; end + } + + end + + end +end diff --git a/spree_theme/app/models/spree/tracker.rb b/spree_theme/app/models/spree/tracker.rb new file mode 100644 index 00000000..c2219b66 --- /dev/null +++ b/spree_theme/app/models/spree/tracker.rb @@ -0,0 +1,25 @@ +module Spree + class Tracker < Spree::Base + TRACKING_ENGINES = %i(google_analytics baidu).freeze + enum engine: TRACKING_ENGINES + + after_commit :clear_cache + + validates :analytics_id, presence: true, uniqueness: { scope: :engine, case_sensitive: false } + + scope :active, -> { where(active: true) } + + def self.current(engine = TRACKING_ENGINES.first) + tracker = Rails.cache.fetch("current_tracker/#{engine}") do + send(engine).active.first + end + tracker.analytics_id.present? ? tracker : nil if tracker + end + + def clear_cache + TRACKING_ENGINES.each do |engine| + Rails.cache.delete("current_tracker/#{engine}") + end + end + end +end diff --git a/spree_theme/app/models/spree/user_terminal.rb b/spree_theme/app/models/spree/user_terminal.rb new file mode 100644 index 00000000..4f5be99f --- /dev/null +++ b/spree_theme/app/models/spree/user_terminal.rb @@ -0,0 +1,21 @@ +module Spree + + # compatible query media for a template_theme + class UserTerminal < ActiveRecord::Base + attr_accessor :is_preview, :is_mobile, :is_weixin + attr_accessor :os, :platform #UserAgent.attribute + + scope :cellphone, ->{ where( name: 'Cellphone' ) } + scope :pc, ->{ where( name: 'PC' ) } + + def is_mobile + name == 'Cellphone' + end + + def to_json + {name: name, is_mobile: is_mobile, is_preview: is_preview, is_weixin: is_weixin }.to_json + end + + end + +end diff --git a/spree_theme/app/overrides/add_product_relation_admin_sub_menu_tab.rb b/spree_theme/app/overrides/add_product_relation_admin_sub_menu_tab.rb new file mode 100644 index 00000000..1f070d49 --- /dev/null +++ b/spree_theme/app/overrides/add_product_relation_admin_sub_menu_tab.rb @@ -0,0 +1,6 @@ +Deface::Override.new( + virtual_path: 'spree/admin/shared/sub_menu/_product', + name: 'add_product_relation_admin_sub_menu_tab', + insert_bottom: '[data-hook="admin_product_sub_tabs"]', + text: '<%= tab :relation_types, label: plural_resource_name(Spree::RelationType) %>' +) diff --git a/spree_theme/app/overrides/add_related_product_admin_tabs.rb b/spree_theme/app/overrides/add_related_product_admin_tabs.rb new file mode 100644 index 00000000..bc3deee2 --- /dev/null +++ b/spree_theme/app/overrides/add_related_product_admin_tabs.rb @@ -0,0 +1,6 @@ +Deface::Override.new( + virtual_path: 'spree/admin/shared/_product_tabs', + name: 'add_related_products_admin_tab', + insert_bottom: '[data-hook="admin_product_tabs"]', + partial: 'spree/admin/products/related_products' +) diff --git a/spree_theme/app/overrides/admin_theme_routes.rb b/spree_theme/app/overrides/admin_theme_routes.rb deleted file mode 100644 index b62a9634..00000000 --- a/spree_theme/app/overrides/admin_theme_routes.rb +++ /dev/null @@ -1,11 +0,0 @@ -Deface::Override.new(:virtual_path => "spree/admin/shared/_routes", - :name => "theme_routes", - :insert_bottom => "script", - :text => 'Spree.routes.admin_template_themes = "<%= spree.admin_template_themes_url %>"; - Spree.routes.global_taxons_search = "<%= spree.global_api_taxons_url(:format => :json) %>";' - ) -Deface::Override.new(:virtual_path => "spree/shared/_routes", - :name => "theme_routes", - :insert_bottom => "script", - :text => 'Spree.routes.admin_template_themes = "<%= spree.admin_template_themes_url %>";' - ) \ No newline at end of file diff --git a/spree_theme/app/overrides/spree/admin/orders/orders_index_search.rb b/spree_theme/app/overrides/spree/admin/orders/orders_index_search.rb new file mode 100644 index 00000000..51d0c7e5 --- /dev/null +++ b/spree_theme/app/overrides/spree/admin/orders/orders_index_search.rb @@ -0,0 +1,5 @@ +Deface::Override.new(:virtual_path => "spree/admin/orders/index", + :name => "admin_orders_index_search", + :replace_contents => "div[data-hook=admin_orders_index_search]", + :partial => "spree/admin/orders/search_form", + :disabled => false) diff --git a/spree_theme/app/overrides/spree/admin/payment_methods/_form/add_field_terminal.html.erb.deface b/spree_theme/app/overrides/spree/admin/payment_methods/_form/add_field_terminal.html.erb.deface new file mode 100644 index 00000000..78f541b2 --- /dev/null +++ b/spree_theme/app/overrides/spree/admin/payment_methods/_form/add_field_terminal.html.erb.deface @@ -0,0 +1,6 @@ + + +
        + <%= label_tag :payment_method_user_terminal_id, Spree.t(:user_terminal) %> + <%= collection_select(:payment_method, :user_terminal_id, Spree::UserTerminal.all, :id, :name, { }, {:class => 'select2 fullwidth'}) %> +
        diff --git a/spree_theme/app/overrides/spree/admin/products/_form/add_field_summary.html.erb.deface b/spree_theme/app/overrides/spree/admin/products/_form/add_field_summary.html.erb.deface new file mode 100644 index 00000000..c44bb6cb --- /dev/null +++ b/spree_theme/app/overrides/spree/admin/products/_form/add_field_summary.html.erb.deface @@ -0,0 +1,8 @@ + + +
        +
        + <%= f.label :summary %> + <%= f.text_field :summary, class: 'form-control' %> +
        +
        diff --git a/spree_theme/app/overrides/spree/admin/products/_form/add_template_themes_select.html.erb.deface b/spree_theme/app/overrides/spree/admin/products/_form/add_template_themes_select.html.erb.deface index 0ad93c29..12790917 100644 --- a/spree_theme/app/overrides/spree/admin/products/_form/add_template_themes_select.html.erb.deface +++ b/spree_theme/app/overrides/spree/admin/products/_form/add_template_themes_select.html.erb.deface @@ -1,6 +1,6 @@ -<% if Spree::Site.current.design? %> - <% template_themes = Spree::TemplateTheme.native %> +<% if Spree::Store.current.code=='www' %> + <% template_themes = Spree::TemplateTheme.foreign %>
        <%= f.field_container :product_template_themes do %> @@ -8,20 +8,6 @@ <%= f.collection_select :theme_id, template_themes ,'id','title', { include_blank: true }, { name: 'product[theme_id]', class: 'select2 fullwidth' } %> <% end %>
        - -
        - <%= f.field_container :global_taxons do %> - <%= f.label :global_taxon_ids, Spree.t(:global_taxons) %>
        - <%= f.hidden_field :global_taxon_ids, :value => @product.global_taxon_ids.join(',') %> - <% end %> -
        -
        - <% unless Rails.env.test? %> - - <% end %> - -<% end %> \ No newline at end of file +
      + +<% end %> diff --git a/spree_theme/app/overrides/spree/admin/taxons/_form/add_field_page_context.html.erb.deface b/spree_theme/app/overrides/spree/admin/taxons/_form/add_field_page_context.html.erb.deface index e0274129..b7902e80 100644 --- a/spree_theme/app/overrides/spree/admin/taxons/_form/add_field_page_context.html.erb.deface +++ b/spree_theme/app/overrides/spree/admin/taxons/_form/add_field_page_context.html.erb.deface @@ -1,26 +1,26 @@ - + <%= f.field_container :replaced_by do %> <%= f.label :replaced_by %>
      - <%= f.hidden_field :replaced_by, { :class => 'fullwidth' }%> + <%= f.hidden_field :replaced_by, { :class => 'fullwidth' }%> <%= f.error_message_on :replaced_by %> <% end %> <%= f.field_container :page_context do %> <%= f.label :page_context %>
      - <%= f.select(:page_context, options_for_select(page_contexts_for_options), + <%= f.select(:page_context, options_for_select(page_contexts_for_options, @taxon.page_context), { :include_blank => Spree.t('default') }, { :class => 'select2 fullwidth' }) %> <%= f.error_message_on :page_context %> <% end %> <%= f.field_container :is_clickable do %> <%= f.error_message_on :is_clickable %> <% end %> <% unless Rails.env.test? %> -<% end %> \ No newline at end of file +<% end %> diff --git a/spree_theme/app/overrides/spree/admin/taxons/_form/add_field_tooltips.html.erb.deface b/spree_theme/app/overrides/spree/admin/taxons/_form/add_field_tooltips.html.erb.deface new file mode 100644 index 00000000..f05c5421 --- /dev/null +++ b/spree_theme/app/overrides/spree/admin/taxons/_form/add_field_tooltips.html.erb.deface @@ -0,0 +1,9 @@ + + +
      +
      + <%= f.label :tooltips %> + <%= f.text_field :tooltips %> +
      +
      + diff --git a/spree_theme/app/overrides/spree_variant_options.rb b/spree_theme/app/overrides/spree_variant_options.rb index 221383cb..340140f1 100644 --- a/spree_theme/app/overrides/spree_variant_options.rb +++ b/spree_theme/app/overrides/spree_variant_options.rb @@ -1,7 +1,7 @@ Deface::Override.new(:virtual_path => "spree/admin/option_types/edit", :name => "admin_option_value_table_headers", :replace_contents => "thead[data-hook=option_header]", - :partial => "spree/admin/option_values/table_header", + :partial => "spree/admin/option_types/table_header", :disabled => false) Deface::Override.new(:virtual_path => "spree/admin/option_types/edit", @@ -13,7 +13,7 @@ #Deface::Override.new(:virtual_path => "spree/admin/option_types/edit", # :name => "admin_sortable_option_values", # :set_attributes => "table.index", -# :attributes => { +# :attributes => { # "class" => "index sortable", # "data-sortable-link" => "/admin/option_values/update_positions" # }, diff --git a/spree_theme/app/themes/simple/assets/images/simple/.gitkeep b/spree_theme/app/themes/simple/assets/images/simple/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/spree_theme/app/themes/simple/assets/javascripts/simple/all.js b/spree_theme/app/themes/simple/assets/javascripts/simple/all.js new file mode 100644 index 00000000..36d85ef7 --- /dev/null +++ b/spree_theme/app/themes/simple/assets/javascripts/simple/all.js @@ -0,0 +1,8 @@ +// This is a manifest file that'll be compiled into including all the files listed below. +// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically +// be included in the compiled file accessible from http://example.com/assets/application.js +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// the compiled file. +// +//= require_tree . +//= require spree/frontend/all diff --git a/spree_theme/app/themes/simple/assets/stylesheets/simple/all.css b/spree_theme/app/themes/simple/assets/stylesheets/simple/all.css new file mode 100644 index 00000000..6b65c91d --- /dev/null +++ b/spree_theme/app/themes/simple/assets/stylesheets/simple/all.css @@ -0,0 +1,10 @@ +/* + * This is a manifest file that'll automatically include all the stylesheets available in this directory + * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at + * the top of the compiled file, but it's generally better to create a new file per style scope. + * + + *= require_self + *= require_tree . + *= require spree/frontend/all +*/ diff --git a/spree_theme/app/themes/simple/locales/.gitkeep b/spree_theme/app/themes/simple/locales/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/spree_theme/app/themes/simple/views/layouts/layout.html.bak.erb b/spree_theme/app/themes/simple/views/layouts/layout.html.bak.erb new file mode 100644 index 00000000..5f62a9a4 --- /dev/null +++ b/spree_theme/app/themes/simple/views/layouts/layout.html.bak.erb @@ -0,0 +1,14 @@ + + + + <%= theme_name.humanize %> + <%= stylesheet_link_tag "simple/all", media: "all", "data-turbolinks-track" => true %> + <%= javascript_include_tag "simple/all", "data-turbolinks-track" => true %> + <%= csrf_meta_tags %> + + + +<%= yield %> + + + diff --git a/spree_theme/app/themes/simple/views/layouts/layout.html.erb b/spree_theme/app/themes/simple/views/layouts/layout.html.erb new file mode 100644 index 00000000..07401319 --- /dev/null +++ b/spree_theme/app/themes/simple/views/layouts/layout.html.erb @@ -0,0 +1,29 @@ + + + + + + + + <%= render partial: 'spree/shared/head' %> + + + <%= render partial: 'spree/shared/google_analytics.js' %> + <%= render partial: 'spree/shared/header' %> + +
      +
      + <%= breadcrumbs(@taxon) %> + + <%= render partial: 'spree/shared/sidebar' if content_for? :sidebar %> + +
      " data-hook> + <%= flash_messages %> + <%= yield %> +
      + + <%= yield :templates %> +
      +
      + + diff --git a/spree_theme/app/themes/simple/views/spree/checkout/_new_user.html.erb b/spree_theme/app/themes/simple/views/spree/checkout/_new_user.html.erb new file mode 100644 index 00000000..3e8efbcb --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/checkout/_new_user.html.erb @@ -0,0 +1,20 @@ +
      +
      +
      +

      <%= Spree.t(:create_a_new_account) %>

      +
      +
      + <%= form_for @user, :as => :spree_user, :url => spree.registration_path(@user) do |f| %> +
      + <%= render :partial => 'spree/shared/user_form', :locals => { :f => f } %> +

      <%= f.submit Spree.t(:create), :class => 'btn btn-lg btn-success btn-block' %>

      +
      + <% end %> +
      + <%= Spree.t(:or) %> + <%= link_to Spree.t(:login_as_existing), spree.login_path %> +
      +
      +
      +
      +
      diff --git a/spree_theme/app/themes/simple/views/spree/checkout/edit.html.erb b/spree_theme/app/themes/simple/views/spree/checkout/edit.html.erb new file mode 100644 index 00000000..d132f910 --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/checkout/edit.html.erb @@ -0,0 +1,49 @@ +<% content_for :google_analytics do %> + <%= render partial: 'spree/shared/google_checkout.js', locals: { order: @order, step_number: (@order.checkout_steps.index(@order.state) + 1) } %> +<% end %> + +
      + <%= render partial: 'spree/shared/error_messages', locals: { target: @order } %> + +
      +
      +

      <%= Spree.t(:checkout) %>

      +
      +
      + <%= checkout_progress %> +
      +
      + +
      +
      + <%= form_for @order, url: update_checkout_path(@order.state), html: { id: "checkout_form_#{@order.state}" } do |form| %> + <% if @order.state == 'address' || !@order.email? %> +
      +
      +
      + <%= form.label :email %> + <%= form.text_field :email, class: 'form-control' %> +
      +
      +
      + <% end %> + <%= form.hidden_field :state_lock_version %> + <%= render @order.state, form: form %> + <% end %> +
      + <% if @order.state != 'confirm' %> +
      + <%= render partial: 'summary', locals: { order: @order } %> +
      + <% end %> +
      +
      + + + +<% if I18n.locale != :en %> + <%= javascript_include_tag 'jquery.validate/localization/messages_' + I18n.locale.to_s.downcase.gsub('-', '') %> +<% end %> diff --git a/spree_theme/app/themes/simple/views/spree/checkout/registration.html.erb b/spree_theme/app/themes/simple/views/spree/checkout/registration.html.erb new file mode 100644 index 00000000..e3a8802c --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/checkout/registration.html.erb @@ -0,0 +1,27 @@ +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %> +

      <%= Spree.t(:registration) %>

      +
      +
      + <%= render :partial => 'new_user' %> +
      + <% if Spree::Config[:allow_guest_checkout] %> +
      +
      +
      +

      <%= Spree.t(:guest_user_account) %>

      +
      +
      + <% if flash[:registration_error] %> +
      <%= flash[:registration_error] %>
      + <% end %> + <%= form_for @order, :url => update_checkout_registration_path, :method => :put, :html => { :id => 'checkout_form_registration' } do |f| %> +

      + <%= f.email_field :email, :class => 'form-control title', :placeholder => Spree.t(:email) %> +

      +

      <%= f.submit Spree.t(:continue), :class => 'btn btn-lg btn-success btn-block' %>

      + <% end %> +
      +
      +
      + <% end %> +
      diff --git a/spree_theme/app/themes/simple/views/spree/orders/_form.html.erb b/spree_theme/app/themes/simple/views/spree/orders/_form.html.erb new file mode 100644 index 00000000..06345037 --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/orders/_form.html.erb @@ -0,0 +1,28 @@ +<%= render partial: 'spree/shared/error_messages', locals: { target: @order } %> + + + + + + + + + + + + <%= render partial: 'spree/orders/line_item', collection: order_form.object.line_items, locals: { order_form: order_form } %> + + <% if @order.adjustments.nonzero.exists? || @order.line_item_adjustments.nonzero.exists? || @order.shipment_adjustments.nonzero.exists? || @order.shipments.any? %> + + + + + + <%= render "spree/orders/adjustments" %> + <% end %> + + + + + +
      <%= Spree.t(:item) %><%= Spree.t(:price) %><%= Spree.t(:qty) %><%= Spree.t(:total) %>
      <%= Spree.t(:cart_subtotal, count: @order.line_items.sum(:quantity)) %>
      <%= order_form.object.display_item_total %>
      <%= Spree.t(:total) %>
      <%= order_form.object.display_total %>
      diff --git a/spree_theme/app/themes/simple/views/spree/orders/edit.html.erb b/spree_theme/app/themes/simple/views/spree/orders/edit.html.erb new file mode 100644 index 00000000..be280415 --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/orders/edit.html.erb @@ -0,0 +1,43 @@ +<% @body_id = 'cart' %> +
      +

      <%= Spree.t(:shopping_cart) %>

      + + <% if @order.line_items.empty? %> +
      +
      <%= Spree.t(:your_cart_is_empty) %>
      +

      <%= link_to Spree.t(:continue_shopping), products_path, class: 'btn btn-default' %>

      +
      + <% else %> +
      + <%= form_for @order, url: update_cart_path, html: { id: 'update-cart' } do |order_form| %> +
      + +
      + <%= render partial: 'form', locals: { order_form: order_form } %> +
      + + +
      + <% end %> +
      + +
      + <%= form_tag empty_cart_path, method: :put do %> + + <% end %> +
      + <% end %> +
      diff --git a/spree_theme/app/themes/simple/views/spree/orders/show.html.erb b/spree_theme/app/themes/simple/views/spree/orders/show.html.erb new file mode 100644 index 00000000..f3355243 --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/orders/show.html.erb @@ -0,0 +1,28 @@ +<% content_for :google_analytics do %> + <% if order_just_completed?(@order) %> + <%= render partial: 'spree/shared/google_purchase.js', locals: { order: @order } %> + <% end %> +<% end %> + +
      + <%= Spree.t(:order_number, number: @order.number) %> +

      <%= accurate_title %>

      + <% if order_just_completed?(@order) %> + <%= Spree.t(:thank_you_for_your_order) %> + <% end %> + +
      + <%= render partial: 'spree/shared/order_details', locals: { order: @order } %> + +
      + +

      + <%= link_to Spree.t(:back_to_store), spree.root_path, class: "button" %> + <% unless order_just_completed?(@order) %> + <% if try_spree_current_user && respond_to?(:account_path) %> + <%= link_to Spree.t(:my_account), account_path, class: "button" %> + <% end %> + <% end %> +

      +
      +
      diff --git a/spree_theme/app/themes/simple/views/spree/shared/_head.html.erb b/spree_theme/app/themes/simple/views/spree/shared/_head.html.erb new file mode 100644 index 00000000..070c65ab --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/shared/_head.html.erb @@ -0,0 +1,14 @@ + +<%= title %> + + +<%== meta_data_tags %> +<%= canonical_tag(current_store.url) %> +<%= favicon_link_tag 'favicon.ico' %> +<%= stylesheet_link_tag 'simple/all', media: 'screen' %> +<%= csrf_meta_tags %> +<%= javascript_include_tag 'simple/all' %> + +<%= yield :head %> diff --git a/spree_theme/app/themes/simple/views/spree/shared/_login.html.erb b/spree_theme/app/themes/simple/views/spree/shared/_login.html.erb new file mode 100644 index 00000000..343f3512 --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/shared/_login.html.erb @@ -0,0 +1,19 @@ +<%= form_for Spree::User.new, :as => :spree_user, :url => spree.create_new_session_path do |f| %> +
      +
      + <%= f.email_field :email, :class => 'form-control', :tabindex => 1, :placeholder => Spree.t(:email) %> +
      +
      + <%= f.password_field :password, :class => 'form-control', :tabindex => 2, :placeholder => Spree.t(:password) %> +
      +
      + +
      +
      + <%= f.submit Spree.t(:login), :class => 'btn btn-lg btn-success btn-block', :tabindex => 3 %> +
      +
      +<% end %> \ No newline at end of file diff --git a/spree_theme/app/themes/simple/views/spree/shared/_user_form.html.erb b/spree_theme/app/themes/simple/views/spree/shared/_user_form.html.erb new file mode 100644 index 00000000..309a0f46 --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/shared/_user_form.html.erb @@ -0,0 +1,13 @@ +
      +
      + <%= f.email_field :email, :class => 'form-control', :placeholder => Spree.t(:email) %> +
      +
      +
      + <%= f.password_field :password, :class => 'form-control', :placeholder => Spree.t(:password) %> +
      +
      + <%= f.password_field :password_confirmation, :class => 'form-control', :placeholder => Spree.t(:confirm_password) %> +
      +
      +
      \ No newline at end of file diff --git a/spree_theme/app/themes/simple/views/spree/template_themes/simple_index.html.erb b/spree_theme/app/themes/simple/views/spree/template_themes/simple_index.html.erb new file mode 100644 index 00000000..0690118c --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/template_themes/simple_index.html.erb @@ -0,0 +1,11 @@ +<% content_for :sidebar do %> +
      + <%= render :partial => 'spree/shared/taxonomies' %> +
      +<% end %> + +
      + <% cache(cache_key_for_products) do %> + <%= render :partial => 'spree/shared/products', :locals => { :products => @products } %> + <% end %> +
      diff --git a/spree_theme/app/themes/simple/views/spree/user_passwords/edit.html.erb b/spree_theme/app/themes/simple/views/spree/user_passwords/edit.html.erb new file mode 100644 index 00000000..daa0dc38 --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/user_passwords/edit.html.erb @@ -0,0 +1,22 @@ +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @spree_user } %> +
      +
      +
      +

      <%= Spree.t(:change_your_password) %>

      +
      +
      + <%= form_for @spree_user, :as => :spree_user, :url => spree.update_password_path, :method => :put do |f| %> +

      + <%= f.label :password, Spree.t(:password) %> + <%= f.password_field :password, :class => "form-control" %> +

      +

      + <%= f.label :password_confirmation, Spree.t(:confirm_password) %> + <%= f.password_field :password_confirmation, :class => "form-control" %> +

      + <%= f.hidden_field :reset_password_token %> + <%= f.submit Spree.t(:update), :class => 'btn btn-lg btn-success btn-block' %> + <% end %> +
      +
      +
      diff --git a/spree_theme/app/themes/simple/views/spree/user_passwords/new.html.erb b/spree_theme/app/themes/simple/views/spree/user_passwords/new.html.erb new file mode 100644 index 00000000..61b7e3ed --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/user_passwords/new.html.erb @@ -0,0 +1,21 @@ +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @spree_user } %> +
      +
      +
      +

      <%= Spree.t(:forgot_password) %>

      +
      +
      +

      <%= Spree.t(:instructions_to_reset_password) %>

      + + <%= form_for Spree::User.new, :as => :spree_user, :url => spree.reset_password_path do |f| %> +

      + <%= f.label :email, Spree.t(:email) %> + <%= f.email_field :email, :class => "form-control" %> +

      +

      + <%= f.submit Spree.t(:reset_password), :class => 'btn btn-lg btn-success btn-block' %> +

      + <% end %> +
      +
      +
      diff --git a/spree_theme/app/themes/simple/views/spree/user_registrations/new.html.erb b/spree_theme/app/themes/simple/views/spree/user_registrations/new.html.erb new file mode 100644 index 00000000..d440eb0e --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/user_registrations/new.html.erb @@ -0,0 +1,22 @@ +<% @body_id = 'signup' %> +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %> +
      +
      +
      +

      <%= Spree.t(:new_customer) %>

      +
      +
      + <%= form_for resource, :as => :spree_user, :url => spree.registration_path do |f| %> +
      + <%= render :partial => 'spree/shared/user_form', :locals => { :f => f } %> +

      <%= f.submit Spree.t(:create), :class => 'btn btn-lg btn-success btn-block' %>

      +
      + <% end %> +
      + <%= Spree.t(:or) %> + <%= link_to Spree.t(:login_as_existing), spree.login_path %> +
      +
      +
      +
      +
      diff --git a/spree_theme/app/themes/simple/views/spree/user_sessions/new.html.erb b/spree_theme/app/themes/simple/views/spree/user_sessions/new.html.erb new file mode 100644 index 00000000..550b6fb9 --- /dev/null +++ b/spree_theme/app/themes/simple/views/spree/user_sessions/new.html.erb @@ -0,0 +1,20 @@ +<% @body_id = 'login' %> +
      "> +
      +
      +

      <%= Spree.t(:login_as_existing) %>

      +
      +
      + <% if flash[:alert] %> +
      <%= flash[:alert] %>
      + <% end %> + <%= render :partial => 'spree/shared/login' %> +
      + <%= Spree.t(:or) %> + <%= link_to Spree.t(:create_a_new_account), spree.signup_path %> | + <%= link_to Spree.t(:forgot_password), spree.recover_password_path %> +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/spree_theme/app/validators/datetime_validator.rb b/spree_theme/app/validators/datetime_validator.rb new file mode 100644 index 00000000..5091b50a --- /dev/null +++ b/spree_theme/app/validators/datetime_validator.rb @@ -0,0 +1,6 @@ +class DatetimeValidator < ActiveModel::EachValidator + def validate_each(record, attribute, value) + date = DateTime.parse(value.to_s) rescue ArgumentError + record.errors.add(attribute, I18n.t(:invalid_date_time, :scope => [:activerecord, :errors, :messages])) if date == ArgumentError + end +end \ No newline at end of file diff --git a/spree_theme/app/views/application/_dialog_for_editor.html.erb b/spree_theme/app/views/application/_dialog_for_editor.html.erb new file mode 100644 index 00000000..fbe18b0d --- /dev/null +++ b/spree_theme/app/views/application/_dialog_for_editor.html.erb @@ -0,0 +1,5 @@ + +
      + +
      + diff --git a/spree_theme/app/views/application/_editors.html.erb b/spree_theme/app/views/application/_editors.html.erb index c5611a03..a9fcff70 100644 --- a/spree_theme/app/views/application/_editors.html.erb +++ b/spree_theme/app/views/application/_editors.html.erb @@ -7,7 +7,7 @@ %> <%= form_tag(get_param_values_template_theme_path(@theme), { :remote=>true, :method=>'post', 'data-type'=>'script', :id=>"layout_editor_form",:name=>"layout_editor_form"}) do %> -
        +
          <% for tab in @editors%>
        • <%= link_to(tab.slug,"#", {"class"=>(tab.id==@editor.id ? "selected":"")})%> @@ -17,33 +17,23 @@ <% # the next div container is for js to get all editors, in other word, its children %>
          -<% @editors.each_index{ |idx|%> -
          +<% @editors.each_with_index{ | editor, i|%> +
          <%# render :partial=>"editor", :locals => {:editor=>@editors[idx], :param_values=>@param_values_for_editors[idx]}%> - <%= raw partial_editor( @editors[idx], @param_values_for_editors[idx]) %> + <%=raw partial_editor( editor, @param_values_for_editors[i]) %>
          <%}%>
          -<%# put these hidden fields here, refresh this form while update editors +<%# put these hidden fields here, refresh this form while update editors %> <%=hidden_field_tag "selected_page_layout_id", @page_layout.id %> <%=hidden_field_tag "selected_theme_id", @theme.id %> <%=hidden_field_tag "selected_editor_id", @editor.id %> -<%# set these hidden fields while a paramvalue just changed. +<%# set these hidden fields while a paramvalue just changed. %> <%=hidden_field_tag "editing_param_value_id" %> <%=hidden_field_tag "editing_html_attribute_id" %> <%=hidden_field_tag "param_value_event" %> <% end%> - - diff --git a/spree_theme/app/views/application/_html_attribute_value.html.erb b/spree_theme/app/views/application/_html_attribute_value.html.erb index c740d445..edf0d556 100644 --- a/spree_theme/app/views/application/_html_attribute_value.html.erb +++ b/spree_theme/app/views/application/_html_attribute_value.html.erb @@ -5,13 +5,12 @@ bool_false = Spree::HtmlAttribute::BOOL_FALSE section_piece_param = param_value.section_param.section_piece_param ha = html_attribute - #val= param_value.pvalue_for_haid(ha.id) pv_div_id = "pv_#{param_value.id}_#{ha.id}" pv_ele_id = "pv#{param_value.id}[#{ha.id}]" pv_link_id = pv_div_id+'_a' hav = Spree::HtmlAttributeValue.parse_from(param_value, ha) display = ( hav.hidden? ? "display:none" : "" ) -# Rails.logger.debug "hidden=#{display}" +# Rails.logger.debug "hidden=#{display}" query_path = update_param_value_template_theme_path( @theme ) %>
          class="pv clear-block" style="<%=display%>"> @@ -32,7 +31,7 @@ %>
          <% if possible_values.size>1%> - <%= select(pv_ele_id,"psvalue#{i}", possible_values.each_index.collect{|j| [possible_values_descriptions[j],possible_values[j]] },{:selected =>psvalue }, {:class=>"pv-psv", :onchange=>onchange}) %> + <%= select(pv_ele_id,"psvalue#{i}", possible_values.each_with_index.collect{|possible_value,j| [possible_values_descriptions[j],possible_value ] },{:selected =>psvalue }, {:class=>"pv-psv", :onchange=>onchange}) %> <% else %> <%= hidden_field_tag("#{pv_ele_id}[psvalue#{i}]", psvalue )%> <% end%> @@ -46,19 +45,19 @@ %>
          <%if html_attribute.is_special?(:bool)%> - <%= radio_button_tag("#{pv_ele_id}[pvalue#{i}]", bool_true,pvalue==bool_true, :onchange=>onchange )%>Yes + <%= radio_button_tag("#{pv_ele_id}[pvalue#{i}]", bool_true,pvalue==bool_true, :onchange=>onchange )%>Yes <%= radio_button_tag("#{pv_ele_id}[pvalue#{i}]", bool_false,pvalue==bool_false, :onchange=>onchange )%>No <%elsif html_attribute.is_special?(:image) or html_attribute.is_special?(:src)%> <% #selected_value = TemplateFile.find(:first, :conditions=>["file_name=?", pvalue]).id unless pvalue.nil? or pvalue.empty? %> - <%=select("#{pv_ele_id}","pvalue#{i}", Spree::TemplateFile.all.collect{|item| [item.attachment_file_name, item.attachment_file_name]}, {:selected=>pvalue ,:include_blank=>"Please select "},{ :onchange=>onchange}) %> - <%=link_to "upload file...",{:action=>"upload_file_dialog",:param_value_id=>param_value.id, :html_attribute_id=>html_attribute.id, :selected_editor_id=>@editor.id},:method =>:get,:remote=>true %> + <%=select("#{pv_ele_id}","pvalue#{i}", Spree::TemplateFile.resourceful(@theme).collect{|item| [item.attachment_file_name, item.attachment_file_name]}, {:selected=>pvalue ,:include_blank=>"Please select "},{ :onchange=>onchange}) %> + <%=link_to "upload file...",upload_file_dialog_template_theme_path( @theme,:param_value_id=>param_value.id, :html_attribute_id=>html_attribute.id, :selected_editor_id=>@editor.id ), :method =>:get, :remote=>true %> <%else%> <%= text_field_tag("#{pv_ele_id}[pvalue#{i}]", pvalue, {:class=>"pv-pv", :onchange=>onchange})%> <%end%>
          -
          +
          <% # user input value unit if units %> @@ -74,4 +73,3 @@ <%=check_box_tag("#{pv_ele_id}[unset]", bool_true, hav.unset?, :onchange=>onchange)%> <%=label_tag "#{pv_ele_id}[unset]", "Unset"%>
          - diff --git a/spree_theme/app/views/application/_layout_editor.html.erb b/spree_theme/app/views/application/_layout_editor.html.erb index bc7ade58..f6d9f0bb 100644 --- a/spree_theme/app/views/application/_layout_editor.html.erb +++ b/spree_theme/app/views/application/_layout_editor.html.erb @@ -1,19 +1,21 @@ -
          -
          - <%=render :partial=>"theme_selection", :locals=>{:template_themes=>@template_themes, :selected=>@theme} %> -
          - <%= check_box_tag 'page_layout_editable','1',false,:style=>"vertical-align: middle;" %> title editable -
          - <%= render :partial=>"layout_tree", :locals=>{:theme =>@theme, :options =>{:editable=>true}} %> - <% #do not put it in file layout_tree, or update_layout_tree ajax add section_selection_dialog again and again. - %> - <%= render :partial=>"section_selection_dialog", :locals=>{:sections=>@sections}%> - -
          -
          -
          -
          - <%=render :partial=>"editors" %> -
          -
          - <%= render :partial=>"model_dialog"%> +
          + + +
          +
          + <%= render :partial=>"theme_selection", :locals=>{:template_themes=>@template_themes, :selected=>@theme} %> +
          + + + <%= render :partial=>"layout_tree", :locals=>{:theme =>@theme, :options =>{:editable=>true}} %> + <% #do not put it in file layout_tree, or update_layout_tree ajax add section_selection_dialog again and again. + %> + <%= render :partial=>"section_selection_dialog", :locals=>{:sections=>@sections} %> +
          +
          +
          +
          + <%=render :partial=>"editors" %> +
          +
          + <%= render :partial=>"dialog_for_editor"%> diff --git a/spree_theme/app/views/application/_layout_editor_panel.html.erb b/spree_theme/app/views/application/_layout_editor_panel.html.erb index 8a0f0448..563ada02 100644 --- a/spree_theme/app/views/application/_layout_editor_panel.html.erb +++ b/spree_theme/app/views/application/_layout_editor_panel.html.erb @@ -1,6 +1,11 @@ -<%# ui-layout-south required by jquery.layout +<%# ui-layout-south required by jquery.layout # sg_ignore, SelectorGodget ignore it. + # for infinitescroll_request, editor is redundant. %> +<% unless request.xhr? %>
          +
          editor
          +<% end %> diff --git a/spree_theme/app/views/application/_layout_tree.html.erb b/spree_theme/app/views/application/_layout_tree.html.erb index 75fe399a..0c335a51 100644 --- a/spree_theme/app/views/application/_layout_tree.html.erb +++ b/spree_theme/app/views/application/_layout_tree.html.erb @@ -1,32 +1,32 @@ <% # list layout tree in editor page. # local params: theme, selected_id -layout_root = theme.page_layout -options ||={} +layout_root = theme.original_page_layout_root +options ||={} selected_id= (options[:selected_id]||layout_root.id ) %> <%=form_tag(update_layout_tree_template_theme_path(theme), :id=>"layout_tree_form",:name=>"layout_tree_form", :remote=>true) do %>
          - <% for page_layout in layout_root.self_and_descendants%> + <% Spree::PageLayout.each_with_level( layout_root.self_and_descendants) { |page_layout, level|%> <% assigned_taxons = theme.assigned_resources(SpreeTheme.taxon_class, page_layout) %> -
          +
          - <%=raw("  "*page_layout.cached_level)%> - <% # do not call form.submit. + <%=raw("  "*level)%> + <% # do not call form.submit. page_layout_class = 'click_editable' - page_layout_class << ' selected' if page_layout.id==selected_id + page_layout_class << ' selected' if page_layout.id==selected_id %> - <%= link_to( page_layout.title, "", {"href"=>'javascript:void(0)', "class"=>page_layout_class,"data-lid"=>page_layout.id,"data-tid"=>theme.id, :onmouseout=>"$('#{page_layout.css_selector}').trigger('dehighlight')",:onmouseover=>"$('#{page_layout.css_selector}').trigger('highlight')"}) %> + <%= link_to( page_layout.title, "", {"href"=>'javascript:void(0)', "class"=>page_layout_class,"data-lid"=>page_layout.id,"data-tid"=>theme.id, :onmouseout=>"$('#{page_layout.css_selector}').trigger('dehighlight')",:onmouseover=>"$('#{page_layout.css_selector}').trigger('highlight')"}) %> <%if options[:show_assigned_resource] %> <% if assigned_taxons.present? %> [t:<%= assigned_taxons.collect(&:name) %>] <%end%> - <%end%> - <%if options[:show_context] %> + <%end%> + <%if options[:show_context] %> <%= page_layout.current_contexts if page_layout.section_context.present? %> - <%end%> + <%end%>
          <% if options[:configurable] %> <% # only show it for selected page_layout @@ -39,50 +39,20 @@ selected_id= (options[:selected_id]||layout_root.id ) <% end %> <% if options[:editable] %>
          - <%= link_to "+","#", {data: {id:page_layout.id}, class: :add_section_button } %> - <%= link_to "-","#", {data: {id:page_layout.id}, class: :remove_section_button } %> - <%= link_to "u","#", {data: {id:page_layout.id}, class: :move_section_to_left_button } %> - <%= link_to "d","#", {data: {id:page_layout.id}, class: :move_section_to_right_button } %> - <%= link_to "<","#", {data: {id:page_layout.id}, class: :promote_section_button } %> - <%= link_to ">","#", {data: {id:page_layout.id}, class: :demote_section_button } %> + <%= link_to "+","#", {data: {id:page_layout.id, op:'list_section', turbolinks: false }, onclick: 'submit_layout_tree_form(this);' } %> + <%= link_to "-","#", {data: {id:page_layout.id, op:'del_self', turbolinks: false }, onclick: "if(confirm('Really delete #{page_layout.title} ?')) submit_layout_tree_form(this);" } %> + <%= link_to "u","#", {data: {id:page_layout.id, op:'move_left', turbolinks: false }, onclick: 'submit_layout_tree_form(this);' } %> + <%= link_to "d","#", {data: {id:page_layout.id, op:'move_right', turbolinks: false }, onclick: 'submit_layout_tree_form(this);' } %> + <%= link_to "<","#", {data: {id:page_layout.id, op:'promote', turbolinks: false }, onclick: 'submit_layout_tree_form(this);' } %> + <%= link_to ">","#", {data: {id:page_layout.id, op:'demote', turbolinks: false }, onclick: 'submit_layout_tree_form(this);' } %> + <%= link_to "e",edit_template_theme_page_layout_path( theme, page_layout), remote: true %>
          <% end %>
          - <% end %> + <% } %>
          <%=hidden_field_tag "selected_section_id" %> <%=hidden_field_tag "op" %> <%=hidden_field_tag "layout_id" %> - <%end%> diff --git a/spree_theme/app/views/application/_media_width_selection.html.erb b/spree_theme/app/views/application/_media_width_selection.html.erb new file mode 100644 index 00000000..55e4abd5 --- /dev/null +++ b/spree_theme/app/views/application/_media_width_selection.html.erb @@ -0,0 +1,3 @@ +
          + <%= select_tag( :terminal_id, options_from_collection_for_select( @theme.terminals,:id, :name) ) if @theme.terminals.present? %> +
          diff --git a/spree_theme/app/views/application/_model_dialog.html.erb b/spree_theme/app/views/application/_model_dialog.html.erb deleted file mode 100644 index 702a7690..00000000 --- a/spree_theme/app/views/application/_model_dialog.html.erb +++ /dev/null @@ -1,10 +0,0 @@ - -
          -<% if defined? dialog_content%> -

          dialog title

          - - <%= render :partial=>dialog_content%> -<% end %> - -
          - diff --git a/spree_theme/app/views/application/_section_selection_dialog.html.erb b/spree_theme/app/views/application/_section_selection_dialog.html.erb index bc657e19..90e5c591 100644 --- a/spree_theme/app/views/application/_section_selection_dialog.html.erb +++ b/spree_theme/app/views/application/_section_selection_dialog.html.erb @@ -1,26 +1,24 @@ - + - +
          diff --git a/spree_theme/app/views/application/dialog_for_editor.js.erb b/spree_theme/app/views/application/dialog_for_editor.js.erb new file mode 100644 index 00000000..42339c5b --- /dev/null +++ b/spree_theme/app/views/application/dialog_for_editor.js.erb @@ -0,0 +1,8 @@ + + +$("#dialog_for_editor").html(<%== ( render :partial => action_name,:formats=>[:html] ).to_json %>) + +$("#dialog_for_editor").simplemodal({closeHTML:'', escClose:true, overlayClose:true}); +$("#dialog_for_editor a.cancel,#dialog_for_editor button.cancel").click( function(){ + $.simplemodal.close(); +}); diff --git a/spree_theme/app/views/application/model_dialog.js.erb b/spree_theme/app/views/application/model_dialog.js.erb deleted file mode 100644 index b0f818e2..00000000 --- a/spree_theme/app/views/application/model_dialog.js.erb +++ /dev/null @@ -1,4 +0,0 @@ - -$("#model_dialog").html(<%=raw @content_string.to_json%>); - -$("#model_dialog").dialog({title:<%= raw @dialog_title.to_json%> }); diff --git a/spree_theme/app/views/kaminari/num/_first_page.html.erb b/spree_theme/app/views/kaminari/num/_first_page.html.erb new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/spree_theme/app/views/kaminari/num/_first_page.html.erb @@ -0,0 +1 @@ + diff --git a/spree_theme/app/views/kaminari/num/_gap.html.erb b/spree_theme/app/views/kaminari/num/_gap.html.erb new file mode 100644 index 00000000..2bcc5228 --- /dev/null +++ b/spree_theme/app/views/kaminari/num/_gap.html.erb @@ -0,0 +1,8 @@ +<%# Non-link tag that stands for skipped pages... + - available local variables + current_page: a page object for the currently displayed page + num_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +
        • <%= raw(t 'views.pagination.truncate') %>
        • \ No newline at end of file diff --git a/spree_theme/app/views/kaminari/num/_last_page.html.erb b/spree_theme/app/views/kaminari/num/_last_page.html.erb new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/spree_theme/app/views/kaminari/num/_last_page.html.erb @@ -0,0 +1 @@ + diff --git a/spree_theme/app/views/kaminari/num/_next_page.html.erb b/spree_theme/app/views/kaminari/num/_next_page.html.erb new file mode 100644 index 00000000..9a655e87 --- /dev/null +++ b/spree_theme/app/views/kaminari/num/_next_page.html.erb @@ -0,0 +1,11 @@ +<%# Link to the "Next" page + - available local variables + url: url to the next page + current_page: a page object for the currently displayed page + num_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +
        • + <%= link_to_unless current_page.last?, '>', url, :rel => 'next', :remote => remote %> +
        • diff --git a/spree_theme/app/views/kaminari/num/_page.html.erb b/spree_theme/app/views/kaminari/num/_page.html.erb new file mode 100644 index 00000000..de555d10 --- /dev/null +++ b/spree_theme/app/views/kaminari/num/_page.html.erb @@ -0,0 +1,12 @@ +<%# Link showing page number + - available local variables + page: a page object for "this" page + url: url to this page + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +
        • + <%= link_to page, url, opts = {remote: remote, rel: page.next? ? 'next' : page.prev? ? 'prev' : nil} %> +
        • diff --git a/spree_theme/app/views/kaminari/num/_paginator.html.erb b/spree_theme/app/views/kaminari/num/_paginator.html.erb new file mode 100644 index 00000000..9adf2cbc --- /dev/null +++ b/spree_theme/app/views/kaminari/num/_paginator.html.erb @@ -0,0 +1,21 @@ +<%# The container tag + - available local variables + current_page: a page object for the currently displayed page + num_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote + paginator: the paginator that renders the pagination tags inside +-%> +<% pagination_class ||= '' %> + +<%= paginator.render do %> +
            + <% each_page do |page| %> + <% if page.left_outer? || page.right_outer? || page.inside_window? %> + <%= page_tag page %> + <% elsif !page.was_truncated? %> + <%= gap_tag %> + <% end %> + <% end %> +
          +<% end %> diff --git a/spree_theme/app/views/kaminari/num/_prev_page.html.erb b/spree_theme/app/views/kaminari/num/_prev_page.html.erb new file mode 100644 index 00000000..8dc577a8 --- /dev/null +++ b/spree_theme/app/views/kaminari/num/_prev_page.html.erb @@ -0,0 +1,11 @@ +<%# Link to the "Previous" page + - available local variables + url: url to the previous page + current_page: a page object for the currently displayed page + num_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> + diff --git a/spree_theme/app/views/kaminari/pn/_first_page.html.erb b/spree_theme/app/views/kaminari/pn/_first_page.html.erb new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/spree_theme/app/views/kaminari/pn/_first_page.html.erb @@ -0,0 +1 @@ + diff --git a/spree_theme/app/views/kaminari/pn/_gap.html.erb b/spree_theme/app/views/kaminari/pn/_gap.html.erb new file mode 100644 index 00000000..2bcc5228 --- /dev/null +++ b/spree_theme/app/views/kaminari/pn/_gap.html.erb @@ -0,0 +1,8 @@ +<%# Non-link tag that stands for skipped pages... + - available local variables + current_page: a page object for the currently displayed page + num_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +
        • <%= raw(t 'views.pagination.truncate') %>
        • \ No newline at end of file diff --git a/spree_theme/app/views/kaminari/pn/_last_page.html.erb b/spree_theme/app/views/kaminari/pn/_last_page.html.erb new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/spree_theme/app/views/kaminari/pn/_last_page.html.erb @@ -0,0 +1 @@ + diff --git a/spree_theme/app/views/kaminari/pn/_next_page.html.erb b/spree_theme/app/views/kaminari/pn/_next_page.html.erb new file mode 100644 index 00000000..9a655e87 --- /dev/null +++ b/spree_theme/app/views/kaminari/pn/_next_page.html.erb @@ -0,0 +1,11 @@ +<%# Link to the "Next" page + - available local variables + url: url to the next page + current_page: a page object for the currently displayed page + num_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +
        • + <%= link_to_unless current_page.last?, '>', url, :rel => 'next', :remote => remote %> +
        • diff --git a/spree_theme/app/views/kaminari/pn/_page.html.erb b/spree_theme/app/views/kaminari/pn/_page.html.erb new file mode 100644 index 00000000..e69de29b diff --git a/spree_theme/app/views/kaminari/pn/_paginator.html.erb b/spree_theme/app/views/kaminari/pn/_paginator.html.erb new file mode 100644 index 00000000..7f909ec5 --- /dev/null +++ b/spree_theme/app/views/kaminari/pn/_paginator.html.erb @@ -0,0 +1,16 @@ +<%# The container tag + - available local variables + current_page: a page object for the currently displayed page + num_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote + paginator: the paginator that renders the pagination tags inside +-%> +<% pagination_class ||= '' %> + +<%= paginator.render do %> +
            + <%= prev_page_tag %> + <%= next_page_tag %> +
          +<% end %> diff --git a/spree_theme/app/views/kaminari/pn/_prev_page.html.erb b/spree_theme/app/views/kaminari/pn/_prev_page.html.erb new file mode 100644 index 00000000..8dc577a8 --- /dev/null +++ b/spree_theme/app/views/kaminari/pn/_prev_page.html.erb @@ -0,0 +1,11 @@ +<%# Link to the "Previous" page + - available local variables + url: url to the previous page + current_page: a page object for the currently displayed page + num_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> + diff --git a/spree_theme/app/views/kaminari/twitter-bootstrap-3/_first_page.html.erb b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_first_page.html.erb new file mode 100644 index 00000000..42125d65 --- /dev/null +++ b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_first_page.html.erb @@ -0,0 +1,13 @@ +<%# Link to the "First" page + - available local variables + url: url to the first page + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +<% unless current_page.first? %> +
        • + <%= link_to_unless current_page.first?, raw(t 'views.pagination.first'), url, remote: remote %> +
        • +<% end %> diff --git a/spree_theme/app/views/kaminari/twitter-bootstrap-3/_gap.html.erb b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_gap.html.erb new file mode 100644 index 00000000..ef550b7a --- /dev/null +++ b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_gap.html.erb @@ -0,0 +1,8 @@ +<%# Non-link tag that stands for skipped pages... + - available local variables + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +
        • <%= raw(t 'views.pagination.truncate') %>
        • \ No newline at end of file diff --git a/spree_theme/app/views/kaminari/twitter-bootstrap-3/_last_page.html.erb b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_last_page.html.erb new file mode 100644 index 00000000..4a5c4342 --- /dev/null +++ b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_last_page.html.erb @@ -0,0 +1,13 @@ +<%# Link to the "Last" page + - available local variables + url: url to the last page + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +<% unless current_page.last? %> + +<% end %> diff --git a/spree_theme/app/views/kaminari/twitter-bootstrap-3/_next_page.html.erb b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_next_page.html.erb new file mode 100644 index 00000000..be785d37 --- /dev/null +++ b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_next_page.html.erb @@ -0,0 +1,13 @@ +<%# Link to the "Next" page + - available local variables + url: url to the next page + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +<% unless current_page.last? %> +
        • + <%= link_to_unless current_page.last?, raw(t 'views.pagination.next'), url, rel: 'next', remote: remote %> +
        • +<% end %> diff --git a/spree_theme/app/views/kaminari/twitter-bootstrap-3/_page.html.erb b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_page.html.erb new file mode 100644 index 00000000..de555d10 --- /dev/null +++ b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_page.html.erb @@ -0,0 +1,12 @@ +<%# Link showing page number + - available local variables + page: a page object for "this" page + url: url to this page + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +
        • + <%= link_to page, url, opts = {remote: remote, rel: page.next? ? 'next' : page.prev? ? 'prev' : nil} %> +
        • diff --git a/spree_theme/app/views/kaminari/twitter-bootstrap-3/_paginator.html.erb b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_paginator.html.erb new file mode 100644 index 00000000..f2e1233e --- /dev/null +++ b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_paginator.html.erb @@ -0,0 +1,25 @@ +<%# The container tag + - available local variables + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote + paginator: the paginator that renders the pagination tags inside +-%> +<% pagination_class ||= '' %> + +<%= paginator.render do %> +
            + <%= first_page_tag unless current_page.first? %> + <%= prev_page_tag unless current_page.first? %> + <% each_page do |page| %> + <% if page.left_outer? || page.right_outer? || page.inside_window? %> + <%= page_tag page %> + <% elsif !page.was_truncated? %> + <%= gap_tag %> + <% end %> + <% end %> + <%= next_page_tag unless current_page.last? %> + <%= last_page_tag unless current_page.last? %> +
          +<% end %> diff --git a/spree_theme/app/views/kaminari/twitter-bootstrap-3/_prev_page.html.erb b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_prev_page.html.erb new file mode 100644 index 00000000..d57e271a --- /dev/null +++ b/spree_theme/app/views/kaminari/twitter-bootstrap-3/_prev_page.html.erb @@ -0,0 +1,13 @@ +<%# Link to the "Previous" page + - available local variables + url: url to the previous page + current_page: a page object for the currently displayed page + total_pages: total number of pages + per_page: number of items to fetch per page + remote: data-remote +-%> +<% unless current_page.first? %> + +<% end %> diff --git a/spree_theme/app/views/layouts/layout_for_compiled.ruby b/spree_theme/app/views/layouts/layout_for_compiled.ruby new file mode 100644 index 00000000..78779716 --- /dev/null +++ b/spree_theme/app/views/layouts/layout_for_compiled.ruby @@ -0,0 +1,2 @@ +#Rails.logger.debug "layout_for_compiled. self=#{self}" +self.send "#{@theme.complied_method_name}" diff --git a/spree_theme/app/views/layouts/layout_for_design.html.erb b/spree_theme/app/views/layouts/layout_for_design.html.erb index 82d19789..6ea34806 100644 --- a/spree_theme/app/views/layouts/layout_for_design.html.erb +++ b/spree_theme/app/views/layouts/layout_for_design.html.erb @@ -1,15 +1,13 @@ <% #@lg = PageTag::PageGenerator.previewer( @menu, @theme, {:resource=>(@resource.nil? ? nil:@resource),:controller=>controller}) + ehtml, css, js = nil ehtml = @lg.ehtml - css,js = @lg.generate_assets + css,js = @lg.generate_assets #insert css to html style = %Q! ! script = %Q@ @ #editor_panel require @theme, @editors, @editor ... ehtml.insert(ehtml.index(""),style) ehtml.insert(ehtml.index(""),script) - ehtml.insert(ehtml.index(""),@editor_panel) - %> - -<%= render :inline => ehtml%> \ No newline at end of file +<%= render :inline => ehtml%> diff --git a/spree_theme/app/views/layouts/layout_for_login.html.erb b/spree_theme/app/views/layouts/layout_for_login.html.erb index 4b449107..2dec4d3a 100644 --- a/spree_theme/app/views/layouts/layout_for_login.html.erb +++ b/spree_theme/app/views/layouts/layout_for_login.html.erb @@ -1,29 +1,23 @@ - - - - - - - <%= render :partial => 'spree/shared/head' %> - <%= stylesheet_link_tag :admin_login %> + + + + + + + <%= render partial: 'spree/admin/shared/head' %> - -
          -

          <%= Spree.t(:welcome_to_admin_login)%>

          -
          + +
          -
          " data-hook> - <%= flash_messages %> +
          + <%= render partial: 'spree/admin/shared/header' %> + <%= flash_alert(flash) %> +
          <%= yield %>
          -
          - <%= render :partial => 'spree/shared/google_analytics' %> - diff --git a/spree_theme/app/views/layouts/layout_for_mobile.slim b/spree_theme/app/views/layouts/layout_for_mobile.slim new file mode 100644 index 00000000..20694cac --- /dev/null +++ b/spree_theme/app/views/layouts/layout_for_mobile.slim @@ -0,0 +1,32 @@ +html ng-app="Sprangular" ng-controller="GlobalCtrl" + head + title(ng-bind="title()") + meta name="fragment" content="!" + meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" + + = csrf_meta_tags + = stylesheet_link_tag "sprangular", media: "all" + + = render 'sprangular/shared/templates' + + body(ng-class="status.bodyClass") + #initializing(ng-hide='status.initialized' ng-cloak) + ng-include(src="'assets/layout/initializing.html'") + + #initialized(ng-show='status.initialized' ng-cloak) + ng-include(src="'assets/layout/loading.html'" ng-show="status.isLoading()") + ng-include(src="'assets/layout/flash.html'" ng-show="flash.hasMessages()") + + #wrap + ng-include(src="'assets/layout/header.html'") + + #main.container-fluid(ng-view autoscroll="true" ng-cloak) + + ng-include(src="'assets/layout/footer.html'") + + = javascript_include_tag "sprangular" + = render 'sprangular/shared/analytics' + + script Sprangular.constant('Env', #{ js_environment.to_json.html_safe }) + script Spree.api_key = #{ try_spree_current_user.try(:spree_api_key).to_s.to_json.html_safe }; + \ No newline at end of file diff --git a/spree_theme/app/views/layouts/layout_for_page.ruby b/spree_theme/app/views/layouts/layout_for_page.ruby new file mode 100644 index 00000000..473f531d --- /dev/null +++ b/spree_theme/app/views/layouts/layout_for_page.ruby @@ -0,0 +1,3 @@ +# select page base on current taxon +Rails.logger.debug "current_page=#{@current_page}" +render file: @current_page.released_page_path diff --git a/spree_theme/app/views/layouts/under_construction.html.erb b/spree_theme/app/views/layouts/under_construction.html.erb index 443d19b7..38303c9c 100644 --- a/spree_theme/app/views/layouts/under_construction.html.erb +++ b/spree_theme/app/views/layouts/under_construction.html.erb @@ -6,24 +6,18 @@ <%= render :partial => 'spree/shared/head' %> - <%= stylesheet_link_tag :admin_login %> + <%= stylesheet_link_tag 'spree/backend/all' %> + <%= javascript_include_tag 'store/spree_theme.login' %> - - -
          -

          <%= Spree.t(:welcome_to_under_construction)%>

          -
          - -
          " data-hook> - <%= flash_messages %> + +
          +
          + <%= render partial: 'spree/admin/shared/header' %> + <%= flash_alert(flash) %> +
          <%= yield %>
          -
          - <%= render :partial => 'spree/shared/google_analytics' %> - diff --git a/spree_theme/app/views/spree/address/_form.html.erb b/spree_theme/app/views/spree/address/_form.html.erb index 56dc827f..f269d147 100644 --- a/spree_theme/app/views/spree/address/_form.html.erb +++ b/spree_theme/app/views/spree/address/_form.html.erb @@ -1,3 +1,8 @@ +<%= javascript_tag " var please_select_state_prompt = '#{j Spree.t('china_address.state_prompt')}'; + var please_select_city_prompt = '#{j Spree.t('china_address.city_prompt')}'; + var please_select_district_prompt = '#{j Spree.t('china_address.district_prompt')}';" %> + + <% address_id = address_type.chars.first %>
          > <%= form.hidden_field :lastname, :class => '', :value=>'unused' %> @@ -16,53 +21,37 @@ <% if Spree::Config[:address_requires_state] %> > - <% have_states = !address.country.states.empty? %> - <% state_elements = [ - form.collection_select(:state_id, address.country.states, + <% states = address.try(:country).try(:states) %> + <%= form.collection_select(:state_id, states, :id, :name, - {:include_blank => true}, - {:class => have_states ? 'required' : 'hidden', - :disabled => !have_states}) + - form.text_field(:state_name, - :class => !have_states ? 'required' : 'hidden', - :disabled => have_states) - ].join.gsub('"', "'").gsub("\n", "") + {:include_blank => Spree.t('china_address.state_prompt')}, + {:class => 'form-control required'}) %> - <%= javascript_tag do %> - $('#<%="#{address_id}state" %>').append("<%== state_elements %>"); - <% end %> - > - <% have_cities = !address.state.cities.empty? %> + <% cities = address.try(:state).try(:cities) || [] %> + <%= form.collection_select(:city_id, cities, + :id, :name, + {:include_blank => Spree.t('china_address.city_prompt')}, + {:class => 'form-control required'}) + %> + - <% city_elements = [ - form.collection_select(:city_id, address.state.cities, + > + <% districts = address.try(:china_city).try(:districts ) || [] %> + <%= form.collection_select(:district_id, districts, :id, :name, - {:include_blank => true}, - {:class => have_cities ? 'required' : 'hidden', - :disabled => !have_cities}) + - form.text_field(:city_name, - :class => !have_cities ? 'required' : 'hidden', - :disabled => have_cities) - ].join.gsub('"', "'").gsub("\n", "") + {:include_blank => Spree.t('china_address.district_prompt')}, + {:class => 'form-control required'}) %> - <%= javascript_tag do %> - $('#<%="#{address_id}city" %>').append("<%== city_elements %>"); - <% end %> - <% end %>

          > <%= form.label :address1, Spree.t('china_address.street') %>*
          - <%= form.text_field :address1, :class => 'required' %> + <%= form.text_field :address1, class: 'required', size: '66', maxlength: '66' %>

          > diff --git a/spree_theme/app/views/spree/address/_form_bootstrap.html.erb b/spree_theme/app/views/spree/address/_form_bootstrap.html.erb new file mode 100644 index 00000000..8797168b --- /dev/null +++ b/spree_theme/app/views/spree/address/_form_bootstrap.html.erb @@ -0,0 +1,88 @@ +<% address_id = address_type.chars.first %> +

          > + <%= form.hidden_field :lastname, :class => '', :value=>'unused' %> + <% if Spree::Config[:company] %> +

          > + <%= form.label :company, Spree.t(:company) %>
          + <%= form.text_field :company, :class =>'form-control' %> +

          + <% end %> + + +

          > + <%= form.label :country_id, Spree.t('china_address.city') %>*
          + > + <%= form.collection_select :country_id, available_countries, :id, :name, {}, {:class => 'form-control required'} %> + + <% if Spree::Config[:address_requires_state] %> + > + <% have_states = !address.country.states.empty? %> + <% state_elements = [ + form.collection_select(:state_id, address.country.states, + :id, :name, + {:include_blank => true}, + {:class => have_states ? 'form-control required' : 'hidden', + :disabled => !have_states}) + + form.text_field(:state_name, + :class => !have_states ? 'form-control required' : 'hidden', + :disabled => have_states) + ].join.gsub('"', "'").gsub("\n", "") + %> + <%= javascript_tag do %> + $('#<%="#{address_id}state" %>').append("<%== state_elements %>"); + <% end %> + + + + > + <% have_cities = !address.state.cities.empty? %> + + <% city_elements = [ + form.collection_select(:city_id, address.state.cities, + :id, :name, + {:include_blank => true}, + {:class => have_cities ? 'form-control required' : 'hidden', + :disabled => !have_cities}) + + form.text_field(:city_name, + :class => !have_cities ? 'form-control required' : 'hidden', + :disabled => have_cities) + ].join.gsub('"', "'").gsub("\n", "") + %> + <%= javascript_tag do %> + $('#<%="#{address_id}city" %>').append("<%== city_elements %>"); + <% end %> + + + <% end %> +

          + +

          > + <%= form.label :address1, Spree.t('china_address.street') %>*
          + <%= form.text_field :address1, class: 'form-control required' %> +

          + +

          > + <%= form.label :zipcode, Spree.t(:zip) %>*
          + <%= form.text_field :zipcode, :class => 'form-control required' %> +

          + +

          > + <%= form.label :firstname, Spree.t('china_address.firstname') %>*
          + <%= form.text_field :firstname, :class => 'form-control required' %> +

          + +

          > + <%= form.label :phone, Spree.t(:phone) %>*
          + <%= form.phone_field :phone, :class => 'form-control required' %> +

          + <% if Spree::Config[:alternative_shipping_phone] %> +

          > + <%= form.label :alternative_phone, Spree.t(:alternative_phone) %>
          + <%= form.phone_field :alternative_phone %> +

          + <% end %> +
          diff --git a/spree_theme/app/views/spree/admin/blogs/_form.html.erb b/spree_theme/app/views/spree/admin/blogs/_form.html.erb new file mode 100644 index 00000000..4d8d62b2 --- /dev/null +++ b/spree_theme/app/views/spree/admin/blogs/_form.html.erb @@ -0,0 +1,11 @@ +<%= form.field_container :name do %> + <%= form.label :name, t("activerecord.attributes.blog.name") %>
          + <%= form.text_field :name, :class => "text" %> + <%= error_message_on :blog, :name %> +<% end %> + +<%= form.field_container :permalink do %> + <%= form.label :permalink, t("activerecord.attributes.blog.permalink") %>
          + <%= form.text_field :permalink, :class => "text" %> + <%= error_message_on :blog, :permalink %> +<% end %> diff --git a/spree_theme/app/views/spree/admin/blogs/edit.html.erb b/spree_theme/app/views/spree/admin/blogs/edit.html.erb new file mode 100644 index 00000000..d8c719a1 --- /dev/null +++ b/spree_theme/app/views/spree/admin/blogs/edit.html.erb @@ -0,0 +1,16 @@ +<%= render :partial => 'spree/admin/shared/configuration_menu' %> + +

          Edit Blog

          + +<% if @blog.try(:errors).present? %> + <%= render 'spree/shared/error_messages', :target => @blog %> +<% end %> + +<%= form_for([:admin, @blog]) do |f| %> + <%= render "form", :form => f %> +

          + <%= button t("update") %> <%= t('or') %> <%= link_to t('cancel'), collection_url %> +

          +<% end %> + +<%= render "spree/blogs/admin/shared/select_configuration_tab" unless request.xhr? %> diff --git a/spree_theme/app/views/spree/admin/blogs/index.html.erb b/spree_theme/app/views/spree/admin/blogs/index.html.erb new file mode 100644 index 00000000..5a49a6e2 --- /dev/null +++ b/spree_theme/app/views/spree/admin/blogs/index.html.erb @@ -0,0 +1,46 @@ +<%= render :partial => 'spree/admin/shared/configuration_menu' %> + +

          Listing Blogs

          + + + + + + + + + + + <%- @collection.each do |blog|%> + + + + + + <% end %> + +
          <%= sort_link @search, :name, t("activerecord.attributes.blog.name") %><%= sort_link @search, :live, t("activerecord.attributes.blog.permalink") %><%= t("action") %>
          <%= blog.name %><%= blog.permalink %> + <%= link_to_edit blog %>   + <%= link_to_delete blog %> +
          + +<%= paginate @collection %> + +
          +
          +

          + <%= link_to icon('add') + ' ' + t(".new_blog"), new_admin_blog_url, :id => "new_blog_link" %> +

          + +<% content_for :head do %> + +<% end %> diff --git a/spree_theme/app/views/spree/admin/blogs/new.html.erb b/spree_theme/app/views/spree/admin/blogs/new.html.erb new file mode 100644 index 00000000..45b63dea --- /dev/null +++ b/spree_theme/app/views/spree/admin/blogs/new.html.erb @@ -0,0 +1,14 @@ +

          <%= t('.new_blog') %>

          + +<% if @blog.try(:errors).present? %> + <%= render 'spree/shared/error_messages', :target => @blog %> +<% end %> + +<%= form_for([:admin, @blog]) do |f| %> + <%= render "form", :form => f %> +

          + <%= button t("create") %> <%= t('or') %> <%= link_to t('cancel'), collection_url %> +

          +<% end %> + +<%= render "spree/blogs/admin/shared/select_configuration_tab" unless request.xhr? %> diff --git a/spree_comments/app/views/spree/admin/comment_types/_form.html.erb b/spree_theme/app/views/spree/admin/comment_types/_form.html.erb similarity index 100% rename from spree_comments/app/views/spree/admin/comment_types/_form.html.erb rename to spree_theme/app/views/spree/admin/comment_types/_form.html.erb diff --git a/spree_comments/app/views/spree/admin/comment_types/edit.html.erb b/spree_theme/app/views/spree/admin/comment_types/edit.html.erb similarity index 100% rename from spree_comments/app/views/spree/admin/comment_types/edit.html.erb rename to spree_theme/app/views/spree/admin/comment_types/edit.html.erb diff --git a/spree_theme/app/views/spree/admin/comment_types/index.html.erb b/spree_theme/app/views/spree/admin/comment_types/index.html.erb new file mode 100644 index 00000000..9070f045 --- /dev/null +++ b/spree_theme/app/views/spree/admin/comment_types/index.html.erb @@ -0,0 +1,40 @@ +<%= render :partial => 'spree/admin/shared/configuration_menu' %> + +<% content_for :page_title do %> + <%= Spree.t(:comment_types) %> +<% end %> + +<% content_for :page_actions do %> +
        • + <%= button_link_to Spree.t(:new_comment_type), new_object_url, :icon => 'plus', :id => 'admin_new_comment_type_link' %> +
        • +<% end %> + + + + + + + + + + + + + + + + <% @comment_types.each do |comment_type| %> + + + + + + + <% end %> + +
          <%= Spree.t(:name) %><%= Spree.t(:applies_to) %>
          <%= comment_type.name %><%= comment_type.applies_to %> + <%= link_to_edit comment_type, :no_text => true %> + <%= link_to_delete comment_type, :no_text => true %> +
          + diff --git a/spree_theme/app/views/spree/admin/comment_types/new.html.erb b/spree_theme/app/views/spree/admin/comment_types/new.html.erb new file mode 100644 index 00000000..f5a59c0b --- /dev/null +++ b/spree_theme/app/views/spree/admin/comment_types/new.html.erb @@ -0,0 +1,22 @@ +<%= render :partial => 'spree/admin/shared/configuration_menu' %> + +<% content_for :page_title do %> + <%= Spree.t(:new_comment_type) %> +<% end %> + +<% content_for :page_actions do %> +
        • + <%= button_link_to Spree.t(:back_to_comment_types_list), admin_comment_types_path, :icon => 'arrow-left' %> +
        • +<% end %> + +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @comment_type } %> + +<%= form_for(:comment_type, :url => collection_url) do |f| %> +
          + <%= render :partial => 'form', :locals => { :f => f } %> +
          + <%= button Spree.t(:create), 'ok' %> +
          +
          +<% end %> diff --git a/spree_theme/app/views/spree/admin/general_settings/edit.html.erb b/spree_theme/app/views/spree/admin/general_settings/edit.html.erb new file mode 100644 index 00000000..9186104d --- /dev/null +++ b/spree_theme/app/views/spree/admin/general_settings/edit.html.erb @@ -0,0 +1,161 @@ +<% content_for :page_title do %> + <%= Spree.t(:general_settings) %> +<% end %> + +<%= form_tag admin_general_settings_path, method: :put, enctype: 'multipart/form-data' do %> +
          + +
          + + <%= fields_for :store do |f| %> +
          +
          +
          + <%= f.label :name %> + <%= f.text_field :name, class: 'form-control' %> +
          +
          + +
          +
          + <%= f.label :seo_title %> + <%= f.text_field :seo_title, class: 'form-control' %> +
          +
          + +
          +
          + <%= f.label :meta_keywords %> + <%= f.text_field :meta_keywords, class: 'form-control' %> +
          +
          + +
          +
          + <%= f.label :meta_description %> + <%= f.text_area :meta_description, class: 'form-control' %> +
          +
          + +
          +
          + <%= f.label :url %> + <%= f.text_field :url, class: 'form-control' %> +
          +
          + +
          + <%#-------------------------------------------------%> + <%# logo settings FIXME for aliyun oss %> + <%#-------------------------------------------------%> + +
          +
          + <%#-------------------------------------------------%> + <%# logo settings FIXME for aliyun oss %> + <%#-------------------------------------------------%> +
          +
          +

          + <%= Spree.t(:favicon)%> +

          +
          + +
          +
          + <% if @store.favicon.present? %> +
          + <%= f.label Spree.t(:thumbnail) %> + <%= link_to image_tag(@store.favicon.attachment.url(:mini)), @store.favicon.attachment.url(:original) %> +
          +
          + <%= f.fields_for :favicon_attributes, @store.favicon || @store.build_favicon do |favicon_fields| %> + <%= favicon_fields.label Spree.t(:attachment) %> + <%= favicon_fields.file_field :attachment %> + <% end %> +
          + <% else %> + <%= f.fields_for :favicon_attributes, @store.favicon || @store.build_favicon do |favicon_fields| %> + <%= favicon_fields.label Spree.t(:attachment) %> + <%= favicon_fields.file_field :attachment %> + <% end %> + <% end %> +
          +
          +
          +
          + +
          + <% end %> + +
          + + <%= fields_for :site, @store.site do |f| %> +
          + + <%#-------------------------------------------------%> + <%# Currency Settings %> + <%#-------------------------------------------------%> +
          +
          +

          + <%= Spree.t(:currency_settings)%> +

          +
          + +
          +
          + <%= label_tag :currency, Spree.t(:choose_currency) %> + <%= f.select :currency, currency_options %> +
          +
          +
          +
          + + <% end %> +
          + +
          + <%= button Spree.t('actions.update'), 'save' %> + <%= Spree.t(:or) %> + <%= button_link_to Spree.t('actions.cancel'), edit_admin_general_settings_url, icon: 'delete' %> +
          + +
          + +
          + +<% end %> + + diff --git a/spree_theme/app/views/spree/admin/general_settings/edit.html2.erb b/spree_theme/app/views/spree/admin/general_settings/edit.html2.erb new file mode 100644 index 00000000..2c36b861 --- /dev/null +++ b/spree_theme/app/views/spree/admin/general_settings/edit.html2.erb @@ -0,0 +1,125 @@ +<% content_for :page_title do %> + <%= Spree.t(:general_settings) %> +<% end %> + +<%= form_tag admin_general_settings_path, method: :put, enctype: 'multipart/form-data' do %> +
          + +
          + + <%= fields_for :store do |f| %> +
          +
          +
          + <%= f.label :name %> + <%= f.text_field :name, class: 'form-control' %> +
          +
          + +
          +
          + <%= f.label :seo_title %> + <%= f.text_field :seo_title, class: 'form-control' %> +
          +
          + +
          +
          + <%= f.label :meta_keywords %> + <%= f.text_field :meta_keywords, class: 'form-control' %> +
          +
          + +
          +
          + <%= f.label :meta_description %> + <%= f.text_area :meta_description, class: 'form-control' %> +
          +
          + +
          +
          + <%= f.label :url %> + <%= f.text_field :url, class: 'form-control' %> +
          +
          + +
          + <%#-------------------------------------------------%> + <%# logo settings FIXME for aliyun oss %> + <%#-------------------------------------------------%> + +
          +
          + <% end %> + +
          + + <%= fields_for :site, @store.site do |f| %> +
          + + <%#-------------------------------------------------%> + <%# Currency Settings %> + <%#-------------------------------------------------%> +
          +
          +

          + <%= Spree.t(:currency_settings)%> +

          +
          + +
          +
          + <%= label_tag :currency, Spree.t(:choose_currency) %> + <%= f.select :currency, currency_options %> +
          +
          +
          +
          + <% end %> +
          + +
          + <%= button Spree.t('actions.update'), 'save' %> + <%= Spree.t(:or) %> + <%= button_link_to Spree.t('actions.cancel'), edit_admin_general_settings_url, icon: 'delete' %> +
          + +
          + +
          + +<% end %> + + diff --git a/spree_theme/app/views/spree/admin/option_types/_option_value_fields.html.erb b/spree_theme/app/views/spree/admin/option_types/_option_value_fields.html.erb index b01f7efe..cb6bb128 100644 --- a/spree_theme/app/views/spree/admin/option_types/_option_value_fields.html.erb +++ b/spree_theme/app/views/spree/admin/option_types/_option_value_fields.html.erb @@ -1,20 +1,17 @@ -<% # override file of spree_backend, add image field -%> +<% # override file of spree_backend, add image field %> - - - - + + + <%= f.hidden_field :id %> - <%= f.text_field :name %> - <%= f.text_field :presentation %> - <%= image_tag f.object.image.mini_url if f.object.image.present? %> + <%= f.text_field :name, class: "form-control" %> + <%= f.text_field :presentation, class: "form-control" %> + <%= image_tag f.object.image.mini_url if f.object.image.present? %> - <% f.object.build_image if f.object.image.blank? %> - <%= f.fields_for :image do |image_form|%> - <%= image_form.file_field :attachment %> - <% end %> - - <%= link_to_remove_fields Spree.t(:remove), f, :no_text => true %> + <% f.object.build_image if f.object.image.blank? %> + <%= f.fields_for :image do |image_form|%> + <%= image_form.file_field :attachment %> + <% end %> + <%= link_to_icon_remove_fields f %> diff --git a/spree_theme/app/views/spree/admin/option_types/_table_header.html.erb b/spree_theme/app/views/spree/admin/option_types/_table_header.html.erb new file mode 100644 index 00000000..cde978ee --- /dev/null +++ b/spree_theme/app/views/spree/admin/option_types/_table_header.html.erb @@ -0,0 +1,7 @@ + + + <%= Spree.t(:name) %> + <%= Spree.t(:presentation) %> + <%= Spree.t(:image) %> + + diff --git a/spree_theme/app/views/spree/admin/option_values/_table_header.html.erb b/spree_theme/app/views/spree/admin/option_values/_table_header.html.erb deleted file mode 100644 index 1a63f691..00000000 --- a/spree_theme/app/views/spree/admin/option_values/_table_header.html.erb +++ /dev/null @@ -1,7 +0,0 @@ - - <%= Spree.t(:name) %> - <%= Spree.t(:display) %> - <%= Spree.t(:preview) %> - <%= Spree.t(:image) %> - - diff --git a/spree_theme/app/views/spree/admin/orders/_search_form.html.erb b/spree_theme/app/views/spree/admin/orders/_search_form.html.erb new file mode 100644 index 00000000..302c257b --- /dev/null +++ b/spree_theme/app/views/spree/admin/orders/_search_form.html.erb @@ -0,0 +1,72 @@ + <%= search_form_for [:admin, @search] do |f| %> +
          +
          + <%= label_tag :q_created_at_gt, Spree.t(:date_range) %> +
          + <%= f.text_field :created_at_gt, :class => 'datepicker datepicker-from', :value => params[:q][:created_at_gt], :placeholder => Spree.t(:start) %> + + + + + + <%= f.text_field :created_at_lt, :class => 'datepicker datepicker-to', :value => params[:q][:created_at_lt], :placeholder => Spree.t(:stop) %> +
          +
          + +
          + <%= label_tag :q_state_eq, Spree.t(:status) %> + <%= f.select :state_eq, Spree::Order.state_machines[:state].states.collect {|s| [Spree.t("order_state.#{s.name}"), s.value]}, {:include_blank => true}, :class => 'select2' %> +
          + +
          + <%= label_tag :q_promotions_id_in, Spree.t(:promotion) %> + <%= f.select :promotions_id_in, Spree::Promotion.applied.pluck(:name, :id), {:include_blank => true}, :class => 'select2' %> +
          +
          + +
          +
          + <%= label_tag :q_number_cont, Spree.t(:order_number, :number => '') %> + <%= f.text_field :number_cont %> +
          + +
          + <%= label_tag :q_email_cont, Spree.t(:email) %> + <%= f.text_field :email_cont %> +
          + +
          + <%= label_tag :q_line_items_variant_id_in, Spree.t(:sku) %> + <%= f.select :line_items_variant_id_in, Spree::Variant.joins(:product).pluck(:sku, :id), {:include_blank => true}, :class => 'select2' %> +
          +
          + +
          +
          + <%= label_tag :q_bill_address_firstname_start, Spree.t(:first_name_begins_with) %> + <%= f.text_field :bill_address_firstname_start, :size => 25 %> +
          +
          + <%= label_tag :q_bill_address_lastname_start, Spree.t(:last_name_begins_with) %> + <%= f.text_field :bill_address_lastname_start, :size => 25%> +
          +
          + +
          +
          + + +
          +
          + +
          + +
          +
          + <%= button Spree.t(:filter_results), 'search' %> +
          +
          + <% end %> diff --git a/spree_comments/app/views/spree/admin/orders/_tab.html.erb b/spree_theme/app/views/spree/admin/orders/_tab.html.erb similarity index 100% rename from spree_comments/app/views/spree/admin/orders/_tab.html.erb rename to spree_theme/app/views/spree/admin/orders/_tab.html.erb diff --git a/spree_comments/app/views/spree/admin/orders/comments.html.erb b/spree_theme/app/views/spree/admin/orders/comments.html.erb similarity index 100% rename from spree_comments/app/views/spree/admin/orders/comments.html.erb rename to spree_theme/app/views/spree/admin/orders/comments.html.erb diff --git a/spree_theme/app/views/spree/admin/page_layout/_config_context.html.erb b/spree_theme/app/views/spree/admin/page_layout/_config_context.html.erb deleted file mode 100644 index e464b0c2..00000000 --- a/spree_theme/app/views/spree/admin/page_layout/_config_context.html.erb +++ /dev/null @@ -1,43 +0,0 @@ - -
          - <% if @page_layout.present? %> - <% page_layout = @page_layout%> - <%= page_layout.title %> - <%= form_for :page_layout, url: update_context_admin_template_theme_page_layout_path(@template_theme,page_layout),remote: true do |f|%> -
          - <%= label_tag :section_context, Spree.t('page_layout.section_context') %>
          - <% current_contexts = page_layout.current_contexts if page_layout.section_context.present? %> - <%= select_tag "section_contexts[]", options_for_select((Spree::PageLayout::ContextEnum.members-[:either]).collect{|section_context| [Spree.t("section_context.#{ section_context }"), section_context] }, current_contexts ), include_blank: true,class: 'select2', multiple: "multiple" %> -
          -
          - <% assigned_resources = @template_theme.assigned_resources(Spree::SpecificTaxon, page_layout).compact %> - - <%= label_tag :specific_taxon, Spree.t('page_layout.specific_taxon') %>
          - <%= hidden_field_tag :specific_taxon_ids, assigned_resources.collect(&:id).join(',') %> -
          - -
          - <%= button Spree.t('actions.update'), 'icon-refresh' %> - <%= Spree.t(:or) %> - <%= button_link_to Spree.t('actions.cancel'), '', :icon => 'icon-remove', :onclick=>"$('#page_layout_container').hide();return false;" %> -
          - <%end%> - <% else %> - <%= Spree.t('page_layout.please_select_to_config') %> -
          - <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/page_layout')) %>, -
          - <% end %> -
          - -<% unless Rails.env.test? %> - -<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layout/_config_data_source.html.erb b/spree_theme/app/views/spree/admin/page_layout/_config_data_source.html.erb deleted file mode 100644 index da745593..00000000 --- a/spree_theme/app/views/spree/admin/page_layout/_config_data_source.html.erb +++ /dev/null @@ -1,37 +0,0 @@ - -
          - <% if @page_layout.present? %> - <% page_layout = @page_layout%> - <%= page_layout.title %> - <%= form_for :page_layout, url: update_data_source_admin_template_theme_page_layout_path(@template_theme,page_layout),remote: true do |f|%> -
          - <%= label_tag :section_data_source, Spree.t('page_layout.data_source') %>
          - <% current_data_source = page_layout.current_data_source - options = options_for_select((Spree::PageLayout::DataSourceEnum.members).collect{|section_data_source| [Spree.t("section_data_source.#{ section_data_source }"), section_data_source] }, current_data_source ) - %> - <%= select_tag "section_data_source", options , include_blank: true,class: 'select2' %> -
          -
          - <%= button Spree.t('actions.update'), 'icon-refresh' %> - <%= Spree.t(:or) %> - <%= button_link_to Spree.t('actions.cancel'), '', :icon => 'icon-remove', :onclick=>"$('#page_layout_container').hide();return false;" %> -
          - <%end%> - <% else %> - <%= Spree.t('page_layout.please_select_to_config') %> -
          - <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/page_layout')) %>, -
          - <% end %> -
          - -<% unless Rails.env.test? %> - -<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layout/_config_resource.html.erb b/spree_theme/app/views/spree/admin/page_layout/_config_resource.html.erb deleted file mode 100644 index 575de162..00000000 --- a/spree_theme/app/views/spree/admin/page_layout/_config_resource.html.erb +++ /dev/null @@ -1,47 +0,0 @@ - -
          - <% if @page_layout.present? %> - <% page_layout = @page_layout - page_layout_with_resource = Spree::PageLayout.includes(:section_pieces).where(["spree_page_layouts.id=? and spree_section_pieces.resources!=?", page_layout.id,'']).first %> - <%= page_layout.title %> - <%= form_for :page_layout, url: update_resource_admin_template_theme_page_layout_path(@template_theme,page_layout),remote: true do |f|%> -
          - <%= label_tag :config_resource, Spree.t('page_layout.config_resource') %>
          - <% if page_layout_with_resource.present? %> - <% page_layout = page_layout_with_resource %> - <% page_layout.section_pieces.first.wrapped_resources.each_with_index{| wrapped_resource,idx | %> - <% - assigned_resource_id = @template_theme.assigned_resource_id(wrapped_resource.resource_class, page_layout, idx) - %> - <%= select_tag "assigned_resource_ids[]",options_from_collection_for_select(wrapped_resource.resource_class.resourceful(@template_theme ), :id, :name, assigned_resource_id ), include_blank: true, class: 'select2', multiple: "multiple" %> - <% } %> - <% else %> - <% assigned_resource_id = @template_theme.assigned_resource_id(SpreeTheme.taxon_class, page_layout) %> - <%= hidden_field_tag "assigned_resource_ids[]",'', :value=>( assigned_resource_id>0 ? assigned_resource_id : '' ) %> - <% end %> -
          - -
          - <%= button Spree.t('actions.update'), 'icon-refresh' %> - <%= Spree.t(:or) %> - <%= button_link_to Spree.t('actions.cancel'), '', :icon => 'icon-remove', :onclick=>"$('#page_layout_container').hide();return false;" %> -
          - <%end%> - <% else %> - <%= Spree.t('page_layout.please_select_to_config') %> -
          - <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/page_layout')) %>, -
          - <% end %> -
          - -<% unless Rails.env.test? %> - -<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layout/config_context.js.erb b/spree_theme/app/views/spree/admin/page_layout/config_context.js.erb deleted file mode 100644 index 2c06f124..00000000 --- a/spree_theme/app/views/spree/admin/page_layout/config_context.js.erb +++ /dev/null @@ -1,5 +0,0 @@ -$("#page_layout_wrapper").html('<%= escape_javascript(render :partial => "spree/admin/page_layout/config_context", :formats => [:html], :handlers => [:erb]) %>'); -<% unless Rails.env.test? %> - $('.select2').select2(); - $('.select2-container').css({width: '40em'}); -<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layout/config_data_source.js.erb b/spree_theme/app/views/spree/admin/page_layout/config_data_source.js.erb deleted file mode 100644 index 7e35c2d5..00000000 --- a/spree_theme/app/views/spree/admin/page_layout/config_data_source.js.erb +++ /dev/null @@ -1,5 +0,0 @@ -$("#page_layout_wrapper").html('<%= escape_javascript(render :partial => "spree/admin/page_layout/config_data_source", :formats => [:html], :handlers => [:erb]) %>'); -<% unless Rails.env.test? %> - $('.select2').select2(); - $('.select2-container').css({width: '40em'}); -<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layout/config_resource.js.erb b/spree_theme/app/views/spree/admin/page_layout/config_resource.js.erb deleted file mode 100644 index 7303f776..00000000 --- a/spree_theme/app/views/spree/admin/page_layout/config_resource.js.erb +++ /dev/null @@ -1,5 +0,0 @@ -$("#page_layout_wrapper").html('<%= escape_javascript(render :partial => "spree/admin/page_layout/config_resource", :formats => [:html], :handlers => [:erb]) %>'); -<% unless Rails.env.test? %> - $('.select2').select2(); - $('.select2-container').css({width: '40em'}); -<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layouts/_config_context.html.erb b/spree_theme/app/views/spree/admin/page_layouts/_config_context.html.erb new file mode 100644 index 00000000..a0b09475 --- /dev/null +++ b/spree_theme/app/views/spree/admin/page_layouts/_config_context.html.erb @@ -0,0 +1,41 @@ + + <% if @page_layout.present? %> + <% page_layout = @page_layout%> + <%= form_for :page_layout, url: update_context_admin_template_theme_page_layout_path(@template_theme,page_layout),remote: true do |f|%> +
          + <%= page_layout.title %> +
          + <%= label_tag :section_context, Spree.t('page_layout.section_context') %>
          + <% current_contexts = page_layout.current_contexts if page_layout.section_context.present? %> + <%= select_tag "section_contexts[]", options_for_select((Spree::PageLayout::ContextEnum.members-[:either]).collect{|section_context| [Spree.t("section_context.#{ section_context }"), section_context] }, current_contexts ), include_blank: true,class: 'select2', multiple: "multiple" %> +
          +
          + <% assigned_resources = @template_theme.assigned_resources(Spree::SpecificTaxon, page_layout).compact %> + + <%= label_tag :specific_taxon, Spree.t('page_layout.specific_taxon') %>
          + <%= hidden_field_tag :specific_taxon_ids, assigned_resources.collect(&:id).join(',') %> +
          + +
          + <%= button Spree.t('actions.update'), 'refresh' %> + <%= Spree.t(:or) %> + <%= button_link_to Spree.t('actions.cancel'), '', :icon => 'remove', :onclick=>"$('#page_layout_container').hide();return false;" %> +
          +
          + <%end%> + <% else %> +
          + <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/page_layout')) %>, +
          + <% end %> + +<% unless Rails.env.test? %> + +<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layouts/_config_data_source.html.erb b/spree_theme/app/views/spree/admin/page_layouts/_config_data_source.html.erb new file mode 100644 index 00000000..1b5cdd77 --- /dev/null +++ b/spree_theme/app/views/spree/admin/page_layouts/_config_data_source.html.erb @@ -0,0 +1,25 @@ + + <% if @page_layout.present? %> + <% page_layout = @page_layout%> + <%= form_for :page_layout, url: update_data_source_admin_template_theme_page_layout_path(@template_theme,page_layout),remote: true do |f|%> +
          + <%= page_layout.title %> +
          + <%= label_tag :section_data_source, Spree.t('page_layout.data_source') %>
          + <% current_data_source = page_layout.current_data_source + options = options_for_select((Spree::PageLayout::DataSourceEnum.members).collect{|section_data_source| [Spree.t("section_data_source.#{ section_data_source }"), section_data_source] }, current_data_source ) + %> + <%= select_tag "section_data_source", options , 'class'=> 'select2' %> +
          +
          + <%= button Spree.t('actions.update'), 'refresh' %> + <%= Spree.t(:or) %> + <%= button_link_to Spree.t('actions.cancel'), '', :icon => 'remove', :onclick=>"$('#page_layout_container').hide();return false;" %> +
          +
          + <%end%> + <% else %> +
          + <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/page_layout')) %>, +
          + <% end %> diff --git a/spree_theme/app/views/spree/admin/page_layouts/_config_resource.html.erb b/spree_theme/app/views/spree/admin/page_layouts/_config_resource.html.erb new file mode 100644 index 00000000..07012c03 --- /dev/null +++ b/spree_theme/app/views/spree/admin/page_layouts/_config_resource.html.erb @@ -0,0 +1,49 @@ + +
          + <% if @page_layout.present? %> + <% page_layout = @page_layout + section_piece_resources = page_layout.section_piece_resources + data_source_based_resource = page_layout.data_source_based_resources + %> + <%= form_for :page_layout, url: update_resource_admin_template_theme_page_layout_path(@template_theme,page_layout),remote: true do |f|%> +
          + <%= label_tag :config_resource, Spree.t('page_layout.config_resource') %>
          + <% if section_piece_resources.present? %> + <% section_piece_resources.each_with_index{| wrapped_resource,idx | + assigned_resource_id = @template_theme.assigned_resource_id(wrapped_resource.resource_class, page_layout, idx) + %> + <%= select_tag "assigned_resource_ids[]",options_from_collection_for_select(wrapped_resource.resource_class.resourceful(@template_theme ), :id, :name, assigned_resource_id ), include_blank: true, class: 'select2', multiple: "multiple" %> + <% } %> + <% elsif data_source_based_resource.present? + assigned_resource_id = @template_theme.assigned_resource_id(data_source_based_resource.resource_class, page_layout) + %> + <%= select_tag "assigned_resource_ids[]",options_from_collection_for_select( data_source_based_resource.resource_class.resourceful(@template_theme ), :id, :name, assigned_resource_id ), include_blank: true, class: 'select2', multiple: "multiple" %> + + <% else %> + <% assigned_resource_id = @template_theme.assigned_resource_id(SpreeTheme.taxon_class, page_layout) %> + <%= hidden_field_tag "assigned_resource_ids[]",'', :value=>( assigned_resource_id>0 ? assigned_resource_id : '' ) %> + <% end %> +
          + +
          + <%= button Spree.t('actions.update'), 'refresh' %> + <%= Spree.t(:or) %> + <%= button_link_to Spree.t('actions.cancel'), '', :icon => 'remove', :onclick=>"$('#page_layout_container').hide();return false;" %> +
          + <%end%> + <% else %> +
          + <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/page_layout')) %>, +
          + <% end %> +
          + +<% unless Rails.env.test? %> + +<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layouts/config_context.js.erb b/spree_theme/app/views/spree/admin/page_layouts/config_context.js.erb new file mode 100644 index 00000000..6ef4137e --- /dev/null +++ b/spree_theme/app/views/spree/admin/page_layouts/config_context.js.erb @@ -0,0 +1,5 @@ +$("#page_layout_wrapper").html('<%= escape_javascript(render :partial => "spree/admin/page_layouts/config_context", :formats => [:html], :handlers => [:erb]) %>'); +<% unless Rails.env.test? %> + $('.select2').select2(); + $('.select2-container').css({width: '40em'}); +<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layouts/config_data_source.js.erb b/spree_theme/app/views/spree/admin/page_layouts/config_data_source.js.erb new file mode 100644 index 00000000..1d46f90c --- /dev/null +++ b/spree_theme/app/views/spree/admin/page_layouts/config_data_source.js.erb @@ -0,0 +1,5 @@ +$("#page_layout_wrapper").html('<%= escape_javascript(render :partial => "spree/admin/page_layouts/config_data_source", :formats => [:html], :handlers => [:erb]) %>'); +<% unless Rails.env.test? %> + $('.select2').select2( ); + $('.select2-container').css({width: '40em'}); +<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layouts/config_resource.js.erb b/spree_theme/app/views/spree/admin/page_layouts/config_resource.js.erb new file mode 100644 index 00000000..3d4860e2 --- /dev/null +++ b/spree_theme/app/views/spree/admin/page_layouts/config_resource.js.erb @@ -0,0 +1,5 @@ +$("#page_layout_wrapper").html('<%= escape_javascript(render :partial => "spree/admin/page_layouts/config_resource", :formats => [:html], :handlers => [:erb]) %>'); +<% unless Rails.env.test? %> + $('.select2').select2(); + $('.select2-container').css({width: '40em'}); +<% end %> diff --git a/spree_theme/app/views/spree/admin/page_layout/update_context.js.erb b/spree_theme/app/views/spree/admin/page_layouts/update_context.js.erb similarity index 100% rename from spree_theme/app/views/spree/admin/page_layout/update_context.js.erb rename to spree_theme/app/views/spree/admin/page_layouts/update_context.js.erb diff --git a/spree_theme/app/views/spree/admin/page_layout/update_data_source.js.erb b/spree_theme/app/views/spree/admin/page_layouts/update_data_source.js.erb similarity index 100% rename from spree_theme/app/views/spree/admin/page_layout/update_data_source.js.erb rename to spree_theme/app/views/spree/admin/page_layouts/update_data_source.js.erb diff --git a/spree_theme/app/views/spree/admin/page_layout/update_resource.js.erb b/spree_theme/app/views/spree/admin/page_layouts/update_resource.js.erb similarity index 100% rename from spree_theme/app/views/spree/admin/page_layout/update_resource.js.erb rename to spree_theme/app/views/spree/admin/page_layouts/update_resource.js.erb diff --git a/spree_theme/app/views/spree/admin/post_categories/_form.html.erb b/spree_theme/app/views/spree/admin/post_categories/_form.html.erb new file mode 100644 index 00000000..c2c7d018 --- /dev/null +++ b/spree_theme/app/views/spree/admin/post_categories/_form.html.erb @@ -0,0 +1,8 @@ +

          + <%= form.label :name, t("activerecord.attributes.post_category.name") %>:
          + <%= form.text_field :name, :class => 'text' %> +

          +

          + <%= form.label :permalink, t("activerecord.attributes.post_category.permalink") %>:
          + <%= form.text_field :permalink, :class => 'text' %> +

          diff --git a/spree_theme/app/views/spree/admin/post_categories/edit.html.erb b/spree_theme/app/views/spree/admin/post_categories/edit.html.erb new file mode 100644 index 00000000..a7f61023 --- /dev/null +++ b/spree_theme/app/views/spree/admin/post_categories/edit.html.erb @@ -0,0 +1,15 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Categories"} %> + +

          <%= t(".edit_category") %>

          + +<% if @post_category.try(:errors).present? %> + <%= render 'spree/shared/error_messages', :target => @post_category %> +<% end %> + +<%= form_for([:admin, @post, @post_category], :url => admin_post_category_path(@post, @post_category.id)) do |form| %> + <%= render "form", :form => form %> +

          + <%= hidden_field_tag :post_id, @post.path, :class => 'hidden' %> + <%= button t("update") %> +

          +<% end %> diff --git a/spree_theme/app/views/spree/admin/post_categories/index.html.erb b/spree_theme/app/views/spree/admin/post_categories/index.html.erb new file mode 100644 index 00000000..1c969234 --- /dev/null +++ b/spree_theme/app/views/spree/admin/post_categories/index.html.erb @@ -0,0 +1,45 @@ +<%= render :partial => 'spree/blogs/admin/shared/post_tabs', :locals => {:current => "Categories"} %> + +
          + <%= form_for([:admin, @post]) do |f| %> +
          + <%= t('.manage_categories') %> + + <% @post_categories.each_with_index do |category, index| -%> + + + + + <% end -%> +
          + <%= check_box_tag "post[taxon_ids][]", category.id, @post.post_categories.include?(category), :id => "taxon_id_#{index}" -%> + <%= label_tag "taxon_id_#{index}", category.name -%> + + <%= link_to_with_icon('edit', t("edit"), edit_admin_post_category_url(@post, category.id)) %>   + <%= link_to_delete category, {:url => admin_post_category_url(@post, category.id)} %> +
          + <%= hidden_field_tag "post[taxon_ids][]", 0 %> + <%= hidden_field_tag :redirect_to, request.fullpath %> + <%= button t("update") %> +
          + <% end %> +
          + +
          + +

          <%= link_to icon('add') + ' ' + t("new_category"), new_admin_post_category_url(@post), :id => "btn_new_category" %>

          + + +<% content_for :head do %> + +<% end %> \ No newline at end of file diff --git a/spree_theme/app/views/spree/admin/post_categories/new.html.erb b/spree_theme/app/views/spree/admin/post_categories/new.html.erb new file mode 100644 index 00000000..9ebdcee1 --- /dev/null +++ b/spree_theme/app/views/spree/admin/post_categories/new.html.erb @@ -0,0 +1,14 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Categories"} unless request.xhr? %> + +

          <%= t("new_category") %>

          + +<% if @post_category.try(:errors).present? %> + <%= render 'spree/shared/error_messages', :target => @post_category %> +<% end %> + +<%= form_for(@post_category, :url => admin_post_categories_path(@post)) do |form| %> + <%= render "form", :form => form %> +

          + <%= button t("create") %> +

          +<% end %> diff --git a/spree_theme/app/views/spree/admin/post_files/_form.html.erb b/spree_theme/app/views/spree/admin/post_files/_form.html.erb new file mode 100644 index 00000000..ca8fa09b --- /dev/null +++ b/spree_theme/app/views/spree/admin/post_files/_form.html.erb @@ -0,0 +1,18 @@ + +
          +
          +
          + <%= f.label :attachment, Spree.t(:filename) %>
          + <%= f.file_field :attachment %> +
          +
          + +
          +
          + <%= f.label :alt, Spree.t(:alt_text) %>
          + <%= f.text_area :alt, rows: 4, class: 'form-control' %> +
          +
          +
          + +
          diff --git a/spree_theme/app/views/spree/admin/post_files/edit.html.erb b/spree_theme/app/views/spree/admin/post_files/edit.html.erb new file mode 100644 index 00000000..30ca4404 --- /dev/null +++ b/spree_theme/app/views/spree/admin/post_files/edit.html.erb @@ -0,0 +1,26 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Post Files"} %> + +<% if @post_file.try(:errors).present? %> + <%= render 'spree/shared/error_messages', :target => @post_file %> +<% end %> + +<%= form_for([:admin, @post.id, @post_file], :url => admin_post_file_url(@post, @post_file), :html => { :multipart => true }) do |f| %> + +
          + <%= @post_file.attachment_file_name%> +
          + <%= f.label Spree.t(:thumbnail) %>
          + <%= link_to image_tag(@post_file.url_thumb), @post_file.attachment.url() %> +
          + +
          + <%= render :partial => 'form', :locals => { :f => f } %> +
          +
          +
          + <%= button Spree.t('actions.update'), 'refresh' %> + <%= Spree.t(:or) %> + <%= link_to Spree.t('actions.cancel'), admin_product_images_url(@post), :id => 'cancel_link', :class => 'button remove' %> +
          +
          +<% end %> diff --git a/spree_theme/app/views/spree/admin/post_files/index.html.erb b/spree_theme/app/views/spree/admin/post_files/index.html.erb new file mode 100644 index 00000000..d4123f3d --- /dev/null +++ b/spree_theme/app/views/spree/admin/post_files/index.html.erb @@ -0,0 +1,46 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Post Files"} %> + +<% content_for :page_actions do %> + <%= button_link_to( Spree.t(:new_post_file), new_admin_post_file_url(@post), :id => 'new_image_link', :class => "btn-success",:icon => 'plus' ) %> +<% end %> + + +<% unless @post.files.any? %> +
          + <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/post_file')) %> +
          +<% else %> + + + + + + + + + + + + + + + + + + <% @post.files.each do |image| %> + + + + + + + <% end %> + +
          <%= Spree.t(:thumbnail) %><%= Spree.t("alt_text") %>
          + + <%= link_to(image_tag(image.url_thumb), image.attachment.url ) %> <%= image.alt %> + <%= link_to_edit image, { url: edit_admin_post_file_url(@post, image), :no_text => true } %> + <%= link_to_delete image, { url: admin_post_file_url(@post, image), :no_text => true }%> +
          + +<% end %> diff --git a/spree_theme/app/views/spree/admin/post_files/new.html.erb b/spree_theme/app/views/spree/admin/post_files/new.html.erb new file mode 100644 index 00000000..dc2abe7a --- /dev/null +++ b/spree_theme/app/views/spree/admin/post_files/new.html.erb @@ -0,0 +1,13 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Post Files"} unless request.xhr? %> + +<%= render 'spree/shared/error_messages', :target => @post_file %> + +<%= form_for(@post_file, :url => admin_post_files_path(@post), :html => { :multipart => true }) do |f| %> +
          + <%= render :partial => 'form', :locals => { :f => f } %> + + <%= render :partial => 'spree/admin/shared/new_resource_links' %> + +
          + +<% end %> diff --git a/spree_theme/app/views/spree/admin/post_products/index.html.erb b/spree_theme/app/views/spree/admin/post_products/index.html.erb new file mode 100644 index 00000000..55e78f47 --- /dev/null +++ b/spree_theme/app/views/spree/admin/post_products/index.html.erb @@ -0,0 +1,19 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Related Products"} %> + +

          Related Products

          + +<%= form_for [:admin, @post ] do |f| %> + +

          + +

          + +

          + <%= hidden_field_tag :redirect_to, request.url, :class => "hidden" %> + <%= button t("update") %> +

          + +<% end %> diff --git a/spree_theme/app/views/spree/admin/posts/_form.html.erb b/spree_theme/app/views/spree/admin/posts/_form.html.erb new file mode 100644 index 00000000..2df6f602 --- /dev/null +++ b/spree_theme/app/views/spree/admin/posts/_form.html.erb @@ -0,0 +1,64 @@ +
          + <%= form.field_container :title, class: ['form-group'] do %> + <%= form.label :title %> + <%= form.text_field :title, :class => 'form-control title ' %> + <%= error_message_on :post, :title %> + <% end %> +
          +
          +
          + <%= form.field_container :author, class: ['form-group'] do %> + <%= form.label :author %> + <%= form.text_field :author, :class => 'form-control' %> + <%= error_message_on :post, :author %> + <% end %> +
          + +
          + <%= form.field_container :posted_at, class: ['form-group'] do %> + <%= form.label :posted_at %> + <%= form.text_field :posted_at, value: datepicker_field_value(@post.posted_at), class: 'datepicker form-control' %> + <%= error_message_on :post, :posted_at %> + <% end %> +
          +
          +<%= form.field_container :cover, class: ['form-group'] do %> + <%= form.label :cover, Spree.t(:icon) %> + <%= form.file_field :cover %> + <%= error_message_on :post, :cover %> +<% end %> + +<%= form.field_container :body, class: ['form-group'] do %> + <%= form.label :body %> + <%= form.text_area :body, :class => 'fullwidth' %> + <%= error_message_on :post, :body %> +<% end %> + +<%= form.field_container :tag_list, class: ['form-group'] do %> + <%= form.label :tags %> + <%= form.text_field :tag_list, :class => 'form-control' %> + <%= error_message_on :post, :tag_list %> +<% end %> + +<%= form.field_container :taxons, class: ['form-group'] do %> + <%= form.label :taxon_ids, Spree.t('taxons') %>
          + <%= form.hidden_field :taxon_ids, :value => @post.taxon_ids.join(','), :class => 'text fullwidth' %> +<% end %> + +
          + <%= form.field_container :meta_keywords , class: ['form-group'] do %> + <%= form.label :meta_keywords, Spree.t(:meta_keywords) %> + <%= form.text_field :meta_keywords, :class => 'form-control' %> + <% end %> +
          + +
          + <%= form.field_container :meta_description , class: ['form-group'] do %> + <%= form.label :meta_description, Spree.t(:meta_description) %> + <%= form.text_field :meta_description, :class => 'form-control' %> + <% end %> +
          + +<%= form.field_container :live, class: ['form-group'] do %> + <%= form.check_box :live %> <%= form.label :live %> +<% end %> diff --git a/spree_theme/app/views/spree/admin/posts/edit.html.erb b/spree_theme/app/views/spree/admin/posts/edit.html.erb new file mode 100644 index 00000000..35dbbafa --- /dev/null +++ b/spree_theme/app/views/spree/admin/posts/edit.html.erb @@ -0,0 +1,13 @@ +<%= render partial: 'spree/admin/shared/post_tabs', locals: {current: 'Post Details'} %> + +<% content_for :page_actions do %> + <% if can?(:create, Spree::Product) %> + <%= button_link_to Spree.t(:new_post), new_object_url, { class: "btn-success", :icon => 'plus', :id => 'admin_new_post' } %> + <% end %> +<% end %> +<%= render partial: 'spree/admin/shared/error_messages', locals: { target: @post } %> + +<%= form_for([:admin, @post]) do |f| %> + <%= render "form", :form => f %> + <%= render :partial => 'spree/admin/shared/edit_resource_links' %> +<% end %> diff --git a/spree_theme/app/views/spree/admin/posts/index.html.erb b/spree_theme/app/views/spree/admin/posts/index.html.erb new file mode 100644 index 00000000..8ab44a15 --- /dev/null +++ b/spree_theme/app/views/spree/admin/posts/index.html.erb @@ -0,0 +1,78 @@ +<% content_for :page_title do %> + <%= Spree.t(:post_list) %> +<% end %> + +<% content_for :page_actions do %> + <%= button_link_to Spree.t('new_post'), new_admin_post_url, { :class => "btn-success",:icon => 'add', :id => 'admin_new_post' }%> +<% end if can? :create, Spree::Post %> + +<% content_for :table_filter_title do %> + <%= Spree.t(:search) %> +<% end %> + +<% content_for :table_filter do %> +
          + + <%= search_form_for [:admin, @search] do |f| %> + +
          +
          +
          + <%= f.label :title_cont, Spree.t("title") %>
          + <%= f.text_field :title_cont, :size => 25 %> +
          +
          +
          + +
          + +
          + <%= button Spree.t(:search), 'search' %> +
          + <% end %> +
          +<% end %> + +<%= paginate @collection %> + +<% if @collection.any? %> + + + + + + + + + + + + + + + + + + + <%- @collection.each do |post|%> + + + + + + + + <% end %> + +
          <%= sort_link @search, :title, Spree.t("title") %><%= sort_link @search, :posted_at, t("activerecord.attributes.spree/post.posted_at") %><%= sort_link @search, :live, t("activerecord.attributes.spree/post.live") %>
          <%= mini_cover(post) %><%= post.title %><%= pretty_time post.posted_at %><%= post.live ? Spree.t('say_yes') : Spree.t('not') %> + <%= link_to_edit post, :no_text => true, :class => 'edit' if can?(:edit, post) %> + <%= link_to_delete post, :no_text => true if can?(:delete, post) %> +
          +<% else %> +
          + <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/post')) %>, + <%= link_to Spree.t(:add_one), spree.new_admin_post_path %>! +
          +<% end %> + +<%= paginate @collection %> diff --git a/spree_theme/app/views/spree/admin/posts/new.html.erb b/spree_theme/app/views/spree/admin/posts/new.html.erb new file mode 100644 index 00000000..0b2de696 --- /dev/null +++ b/spree_theme/app/views/spree/admin/posts/new.html.erb @@ -0,0 +1,16 @@ +<% content_for :page_title do %> + <%= Spree.t("new_post") %> +<% end %> + +<% content_for :page_actions do %> + <%= button_link_to Spree.t(:back_to_post_list), session[:return_to] || admin_posts_url, { class: "btn-success", :icon => 'arrow-left' } %> +<% end %> + +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @post } %> + +<%= form_for([:admin, @post]) do |f| %> +
          + <%= render "form", :form => f %> + <%= render :partial => 'spree/admin/shared/new_resource_links' %> +
          +<% end %> diff --git a/spree_theme/app/views/spree/admin/posts/show.html.erb b/spree_theme/app/views/spree/admin/posts/show.html.erb new file mode 100644 index 00000000..dfaff5d8 --- /dev/null +++ b/spree_theme/app/views/spree/admin/posts/show.html.erb @@ -0,0 +1,20 @@ +<%= render :partial => 'spree/admin/shared/post_tabs', :locals => {:current => "Post Details"} %> +

          <%= h(l @post.posted_at, :format => :detailed).gsub(/\s0/, ' ') %>

          +
          + +<% for image in @post.images do %> + <%= image_tag image.attachment.url(:small), :alt => @post.title %> +<% end %> + +<%= @post.body.html_safe %> + +
          + +
          + <%= button_link_to Spree.t('actions.edit'), edit_object_url(@post) , :icon => 'edit' %> + <%= Spree.t(:or) %> + <%= button_link_to Spree.t('actions.list'), collection_url, :icon => 'arrow-left' %> + <%= Spree.t(:or) %> + <%= button_link_to Spree.t('actions.delete'), collection_url, :icon => 'remove' %> + +
          diff --git a/spree_theme/app/views/spree/admin/products/_related_products.html.erb b/spree_theme/app/views/spree/admin/products/_related_products.html.erb new file mode 100644 index 00000000..99c37e29 --- /dev/null +++ b/spree_theme/app/views/spree/admin/products/_related_products.html.erb @@ -0,0 +1,3 @@ +> + <%= link_to_with_icon 'resize-small', Spree.t(:related_products), related_admin_product_url(@product) %> + diff --git a/spree_theme/app/views/spree/admin/products/_related_products_table.html.erb b/spree_theme/app/views/spree/admin/products/_related_products_table.html.erb new file mode 100644 index 00000000..b6bc333c --- /dev/null +++ b/spree_theme/app/views/spree/admin/products/_related_products_table.html.erb @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + <% product.relations.each do |relation| %> + + + + + + + + <% end %> + +
          <%= Spree.t(:name) %><%= Spree.t(:type) %><%= Spree.t(:discount_amount) %>
          + + <%= link_to relation.related_to.name, relation.related_to %><%= relation.relation_type.name %> + <%= form_for relation, url: admin_product_relation_path(relation.relatable, relation) do |f| %> +
          + <%= f.text_field :discount_amount, class: 'form-control text-center' %> + + <%= f.button Spree.t(:update), type: 'submit', class: 'btn btn-primary' %> + +
          + <% end %> +
          + <%= link_to_delete relation, url: admin_product_relation_url(relation.relatable, relation), no_text: true %> +
          diff --git a/spree_theme/app/views/spree/admin/products/related.html.erb b/spree_theme/app/views/spree/admin/products/related.html.erb new file mode 100644 index 00000000..4dc1c79f --- /dev/null +++ b/spree_theme/app/views/spree/admin/products/related.html.erb @@ -0,0 +1,71 @@ +<%= render partial: 'spree/admin/shared/product_tabs', locals: { current: 'Related Products' } %> +<%= render partial: 'spree/admin/variants/autocomplete', formats: :js %> + +<%= csrf_meta_tag %> + +<% if @relation_types.empty? %> +
          + <%= Spree.t(:no_relation_types) %> +
          +<% else %> +
          +
          + <%= Spree.t(:add_related_product) %> +
          + + + +
          +
          +
          + +
          + <%= render 'related_products_table', product: @product %> +
          + + <%= content_for :head do %> + + <% end %> +<% end %> diff --git a/spree_theme/app/views/spree/admin/relation_types/_form.html.erb b/spree_theme/app/views/spree/admin/relation_types/_form.html.erb new file mode 100644 index 00000000..fa1d29c8 --- /dev/null +++ b/spree_theme/app/views/spree/admin/relation_types/_form.html.erb @@ -0,0 +1,19 @@ +
          +
          +
          + <%= f.label :name, Spree.t(:name) %> * + <%= f.text_field :name, class: 'form-control' %> + <%= error_message_on :relation_type, :name %> +
          +
          + <%= f.label :applies_to, Spree.t(:applies_to) %> * + <%= f.text_field :applies_to, value: f.object.nil? ? 'Spree::Product' : f.object.applies_to, class: 'form-control' %> + <%= error_message_on :relation_type, :applies_to %> +
          +
          + <%= f.label :description, Spree.t(:description) %>
          + <%= f.text_area :description, rows: 4, class: 'form-control' %> + <%= error_message_on :relation_type, :description %> +
          +
          +
          diff --git a/spree_theme/app/views/spree/admin/relation_types/edit.html.erb b/spree_theme/app/views/spree/admin/relation_types/edit.html.erb new file mode 100644 index 00000000..8cd328ec --- /dev/null +++ b/spree_theme/app/views/spree/admin/relation_types/edit.html.erb @@ -0,0 +1,14 @@ +<% content_for :page_title do %> + <%= Spree.t(:editing_resource, resource: Spree::RelationType.model_name.human) %> +<% end %> + +<% content_for :page_actions do %> + <%= button_link_to Spree.t(:back_to_resource_list, resource: Spree::RelationType.model_name.human), spree.admin_relation_types_path, class: 'btn-primary', icon: 'arrow-left' %> +<% end %> + +<%= form_for [:admin, @relation_type] do |f| %> +
          + <%= render 'form', f: f %> + <%= render 'spree/admin/shared/edit_resource_links' %> +
          +<% end %> diff --git a/spree_theme/app/views/spree/admin/relation_types/index.html.erb b/spree_theme/app/views/spree/admin/relation_types/index.html.erb new file mode 100644 index 00000000..dae7df6b --- /dev/null +++ b/spree_theme/app/views/spree/admin/relation_types/index.html.erb @@ -0,0 +1,44 @@ +<% content_for :page_title do %> + <%= Spree::RelationType.model_name.human(count: :many) %> +<% end %> + +<% content_for :page_actions do %> + <%= button_link_to Spree.t(:new_relation_type), new_object_url, class: 'btn-primary', icon: 'add', id: 'admin_new_relation_type' %> +<% end %> + +<% if @relation_types.any? %> + + + + + + + + + + + + + + + + + <% @relation_types.each do |relation_type| %> + + + + + + + <% end %> + +
          <%= Spree.t(:name) %><%= Spree.t(:applies_to) %><%= Spree.t(:description) %>
          <%= relation_type.name %><%= relation_type.applies_to %><%= relation_type.description %> + <%= link_to_edit relation_type, no_text: true %> + <%= link_to_delete relation_type, no_text: true %> +
          +<% else %> +
          + <%= Spree.t(:no_resource_found, resource: Spree::RelationType.model_name.human(count: :many)) %>, + <%= link_to Spree.t(:add_one), spree.new_admin_relation_type_path %>! +
          +<% end %> diff --git a/spree_theme/app/views/spree/admin/relation_types/new.html.erb b/spree_theme/app/views/spree/admin/relation_types/new.html.erb new file mode 100644 index 00000000..8d7c6dc3 --- /dev/null +++ b/spree_theme/app/views/spree/admin/relation_types/new.html.erb @@ -0,0 +1,14 @@ +<% content_for :page_title do %> + <%= Spree.t(:new_relation_type) %> +<% end %> + +<% content_for :page_actions do %> + <%= button_link_to Spree.t(:back_to_resource_list, resource: Spree::RelationType.model_name.human), spree.admin_relation_types_path, class: 'btn-primary', icon: 'arrow-left' %> +<% end %> + +<%= form_for :relation_type, url: collection_url do |f| %> +
          + <%= render 'form', f: f %> + <%= render 'spree/admin/shared/new_resource_links' %> +
          +<% end %> diff --git a/spree_theme/app/views/spree/admin/relations/create.js.erb b/spree_theme/app/views/spree/admin/relations/create.js.erb new file mode 100644 index 00000000..29d71bed --- /dev/null +++ b/spree_theme/app/views/spree/admin/relations/create.js.erb @@ -0,0 +1,5 @@ +$('#products-table-wrapper').html('<%= escape_javascript(render "spree/admin/products/related_products_table", product: @product) %>'); +$('#add_product_name').val(''); +$('#add_variant_id').val(''); +$('#add_quantity').val(1); +$('.actions a').tooltip(); diff --git a/spree_theme/app/views/spree/admin/relations/destroy.js.erb b/spree_theme/app/views/spree/admin/relations/destroy.js.erb new file mode 100644 index 00000000..7b110c51 --- /dev/null +++ b/spree_theme/app/views/spree/admin/relations/destroy.js.erb @@ -0,0 +1 @@ +$('#products-table-wrapper').html('<%= escape_javascript(render "spree/admin/products/related_products_table", product: @product) %>'); diff --git a/spree_theme/app/views/spree/admin/shared/_blog_config.html.erb b/spree_theme/app/views/spree/admin/shared/_blog_config.html.erb new file mode 100644 index 00000000..c4831d09 --- /dev/null +++ b/spree_theme/app/views/spree/admin/shared/_blog_config.html.erb @@ -0,0 +1,8 @@ + + <%= link_to t("spree.blogs.settings.blogs"), admin_blogs_path %> + <%= t("spree.blogs.settings.explain_blogs") %> + + + <%= link_to t("spree.blogs.settings.disqus"), edit_admin_disqus_settings_path %> + <%= t("spree.blogs.settings.explain_disqus") %> + diff --git a/spree_comments/app/views/spree/admin/shared/_comment_list.html.erb b/spree_theme/app/views/spree/admin/shared/_comment_list.html.erb similarity index 100% rename from spree_comments/app/views/spree/admin/shared/_comment_list.html.erb rename to spree_theme/app/views/spree/admin/shared/_comment_list.html.erb diff --git a/spree_comments/app/views/spree/admin/shared/_comments.html.erb b/spree_theme/app/views/spree/admin/shared/_comments.html.erb similarity index 95% rename from spree_comments/app/views/spree/admin/shared/_comments.html.erb rename to spree_theme/app/views/spree/admin/shared/_comments.html.erb index 9f243d31..a1d51353 100644 --- a/spree_comments/app/views/spree/admin/shared/_comments.html.erb +++ b/spree_theme/app/views/spree/admin/shared/_comments.html.erb @@ -29,7 +29,7 @@
          - <%= button Spree.t(:add_comment), 'icon-arrow-right' %> + <%= button Spree.t(:add_comment), 'arrow-right' %>
          <% end %> diff --git a/spree_theme/app/views/spree/admin/shared/_contents_sub_menu.html.erb b/spree_theme/app/views/spree/admin/shared/_contents_sub_menu.html.erb new file mode 100644 index 00000000..2945da60 --- /dev/null +++ b/spree_theme/app/views/spree/admin/shared/_contents_sub_menu.html.erb @@ -0,0 +1,10 @@ +<% if inside_contents_tab? %> + <% content_for :sub_menu do %> + + <% end %> +<% end %> diff --git a/spree_theme/app/views/spree/admin/shared/_post_tabs.html.erb b/spree_theme/app/views/spree/admin/shared/_post_tabs.html.erb new file mode 100644 index 00000000..45d4e167 --- /dev/null +++ b/spree_theme/app/views/spree/admin/shared/_post_tabs.html.erb @@ -0,0 +1,17 @@ +<% content_for :page_title do %> + <%= link_to Spree.t("posts"), admin_posts_path %> / <%= @post.name %> +<% end %> + +<% content_for :sidebar do %> + + +<% end %> diff --git a/spree_theme/app/views/spree/admin/shared/_select2_taxon.html.erb b/spree_theme/app/views/spree/admin/shared/_select2_taxon.html.erb deleted file mode 100644 index f02bb4ae..00000000 --- a/spree_theme/app/views/spree/admin/shared/_select2_taxon.html.erb +++ /dev/null @@ -1,50 +0,0 @@ -<% - # copy from spree/backend/assets/javascripts/admin/taxon_autocomlete.js.erb - # locals {:dom_id,:multiple, :search_url} # Spree.routes.taxons_search or Spree.routes.global_taxons_search -%> - 'use strict'; - if ($('#<%=dom_id%>').length > 0) { - $('#<%=dom_id%>').select2({ - placeholder: Spree.translations.taxon_placeholder, - multiple: <%== multiple.to_json %>, - initSelection: function (element, callback) { - var url = Spree.url(<%=search_url%>, { - ids: element.val() - }); - return $.getJSON(url, null, function (data) { - <% if multiple %> - return callback(data['taxons']); - <% else %> - return callback(data['taxons'].pop()); - <% end %> - }); - }, - ajax: { - url: <%=search_url%>, - datatype: 'json', - data: function (term, page) { - return { - per_page: 50, - page: page, - q: { - name_cont: term - } - }; - }, - results: function (data, page) { - var more = page < data.pages; - console.log(more) - return { - results: data['taxons'], - more: more - }; - } - }, - formatResult: function (taxon) { - return taxon.pretty_name; - }, - formatSelection: function (taxon) { - return taxon.pretty_name; - } - }); - } \ No newline at end of file diff --git a/spree_theme/app/views/spree/admin/shared/_select_configuration_tab.html.erb b/spree_theme/app/views/spree/admin/shared/_select_configuration_tab.html.erb new file mode 100644 index 00000000..1f644afb --- /dev/null +++ b/spree_theme/app/views/spree/admin/shared/_select_configuration_tab.html.erb @@ -0,0 +1,7 @@ +<% content_for :head do %> + +<% end %> diff --git a/spree_theme/app/views/spree/admin/shared/_template_file_tabs.html.erb b/spree_theme/app/views/spree/admin/shared/_template_file_tabs.html.erb new file mode 100644 index 00000000..d4263701 --- /dev/null +++ b/spree_theme/app/views/spree/admin/shared/_template_file_tabs.html.erb @@ -0,0 +1,16 @@ +<% content_for :page_title do %> + <%= Spree.t("template_file.index") %> +<% end %> + +<% content_for :sidebar do %> + +<% end %> diff --git a/spree_theme/app/views/spree/admin/shared/_template_text_tabs.html.erb b/spree_theme/app/views/spree/admin/shared/_template_text_tabs.html.erb new file mode 100644 index 00000000..0bdcc5b5 --- /dev/null +++ b/spree_theme/app/views/spree/admin/shared/_template_text_tabs.html.erb @@ -0,0 +1,16 @@ +<% content_for :page_title do %> + <%= Spree.t("template_text.index") %> +<% end %> + +<% content_for :sidebar do %> + +<% end %> diff --git a/spree_theme/app/views/spree/admin/shared/_template_theme_tabs.html.erb b/spree_theme/app/views/spree/admin/shared/_template_theme_tabs.html.erb new file mode 100644 index 00000000..0743cebb --- /dev/null +++ b/spree_theme/app/views/spree/admin/shared/_template_theme_tabs.html.erb @@ -0,0 +1,24 @@ +<% content_for :page_title do %> + <%= link_to Spree.t("template_themes"), admin_template_themes_path %> / <%= @template_theme.title %> +<% end %> + +<% content_for :sidebar_title do %> + <%= @template_theme.original_page_layout_root.title %> +<% end %> + +<% content_for :sidebar do %> + + +<% end %> diff --git a/spree_theme/app/views/spree/admin/shared/sub_menu/_template_theme.html.erb b/spree_theme/app/views/spree/admin/shared/sub_menu/_template_theme.html.erb new file mode 100644 index 00000000..9c0c4f22 --- /dev/null +++ b/spree_theme/app/views/spree/admin/shared/sub_menu/_template_theme.html.erb @@ -0,0 +1,6 @@ + diff --git a/spree_comments/app/views/spree/admin/shipments/comments.html.erb b/spree_theme/app/views/spree/admin/shipments/comments.html.erb similarity index 100% rename from spree_comments/app/views/spree/admin/shipments/comments.html.erb rename to spree_theme/app/views/spree/admin/shipments/comments.html.erb diff --git a/spree_theme/app/views/spree/admin/sites/_form.html.erb b/spree_theme/app/views/spree/admin/sites/_form.html.erb new file mode 100644 index 00000000..e82a15e8 --- /dev/null +++ b/spree_theme/app/views/spree/admin/sites/_form.html.erb @@ -0,0 +1,17 @@ +
          +
          + <%= f.label :name, Spree.t(:name) %> + <%= f.text_field :name, :class => 'form-control' %> +
          +
          + <%= f.label :domain %> + <%= f.text_field :domain, :class => 'form-control' %> +
          + +
          + <%= f.label :status %> + + <%= f.select :status, Spree::Site.statuses.to_a.map { |w| [w[0].humanize, w[0]] }, {}, :class => 'select2' %> +
          + +
          diff --git a/spree_theme/app/views/spree/admin/sites/_user.html.erb b/spree_theme/app/views/spree/admin/sites/_user.html.erb new file mode 100644 index 00000000..7930463c --- /dev/null +++ b/spree_theme/app/views/spree/admin/sites/_user.html.erb @@ -0,0 +1,19 @@ +
          +

          + <%= label :user, :email, t(:user_email) %>*
          + <%= email_field :user, :email %> + <%= error_message_on :user,:email %> +

          + +

          + <%= label :user,:password, t(:password,:scope=>['activerecord','attributes','user']) %>*
          + <%= password_field :user,:password %> + <%= error_message_on :user,:password %> +

          + +

          + <%= label :user,:password_confirmation, t(:confirm_password) %>*
          + <%= password_field :user,:password_confirmation %> + <%= error_message_on :user,:password_confirmation %> +

          +
          \ No newline at end of file diff --git a/spree_theme/app/views/spree/admin/sites/edit.html.erb b/spree_theme/app/views/spree/admin/sites/edit.html.erb new file mode 100644 index 00000000..7f71d206 --- /dev/null +++ b/spree_theme/app/views/spree/admin/sites/edit.html.erb @@ -0,0 +1,12 @@ +<% content_for :page_title do %> + <%= Spree.t(:editing_resource, resource: Spree::Site.model_name.human) %> +<% end %> + +<%= render :partial => 'spree/admin/shared/error_messages', :locals => { :target => @site } %> + +<%= form_for [:admin, @site] do |f| %> +
          + <%= render :partial => 'form', :locals => { :f => f } %> + <%= render :partial => 'spree/admin/shared/edit_resource_links' %> +
          +<% end %> diff --git a/spree_theme/app/views/spree/admin/sites/index.html.erb b/spree_theme/app/views/spree/admin/sites/index.html.erb new file mode 100644 index 00000000..f66c2296 --- /dev/null +++ b/spree_theme/app/views/spree/admin/sites/index.html.erb @@ -0,0 +1,40 @@ +<% content_for :page_title do %> + <%= Spree.t('site.index') %> +<% end %> + + + + + + + + + + + + + + + + + + + <%- @sites.each do |site|%> + + + + + + + + + <% end %> + +
          <%= Spree::Site.human_attribute_name(:name) %><%= Spree::Site.human_attribute_name(:domain) %><%= Spree.user_class.human_attribute_name(:email) %><%= Spree::Site.human_attribute_name(:status) %><%= Spree::Site.human_attribute_name(:created_at) %>
          <%= site.name %><%= site.subdomain %> + <%= Spree::MultiSiteSystem.with_context_admin_sites{ site.users.admin.first.email }%> + <%= site.status %> <%= pretty_time site.created_at %> + <%= link_to_with_icon('edit', Spree.t(:edit), spree.edit_admin_site_url(site), class: 'btn btn-primary btn-sm', no_text: true, data: { action: 'edit' }) if can? :edit, site %> + <%= link_to_with_icon 'eye-open', Spree.t(:admin_store), site.admin_url, {class: 'btn btn-primary btn-sm', target: '_blank', no_text: true} %> +
          + +<%= paginate @sites %> diff --git a/spree_theme/app/views/spree/admin/sites/new.html.erb b/spree_theme/app/views/spree/admin/sites/new.html.erb new file mode 100644 index 00000000..e6f13162 --- /dev/null +++ b/spree_theme/app/views/spree/admin/sites/new.html.erb @@ -0,0 +1,10 @@ +

          <%= t("new_site") %>

          +
          +<%= form_for [:admin, @site] do |f| %> + <%= render :partial => "form", :locals => { :f => f } %> +

          + <%= button t(:create) %> +

          +<% end %> +
          +<%= link_to t('back'), collection_url %> diff --git a/spree_theme/app/views/spree/admin/sites/show.html.erb b/spree_theme/app/views/spree/admin/sites/show.html.erb new file mode 100644 index 00000000..ffdd34de --- /dev/null +++ b/spree_theme/app/views/spree/admin/sites/show.html.erb @@ -0,0 +1,25 @@ +

          <%= t("site_account") %>

          +
          + + + + + + + + + + + + + +
          <%= t("site_name") %>:   + <%= @site.name %> +
          <%= t("site_domain") %>:   + <%= @site.domain %> +
          <%= t("site_layout") %>:   + <%= @site.layout %> +
          +
          +<%= link_to_edit @site, :class => 'edit_site' %> <%= t(:or) %> + <%= link_to t(:back), collection_url %> \ No newline at end of file diff --git a/spree_theme/app/views/spree/admin/taxons/unused_taxon_table.html.erb b/spree_theme/app/views/spree/admin/taxons/unused_taxon_table.html.erb new file mode 100644 index 00000000..66451514 --- /dev/null +++ b/spree_theme/app/views/spree/admin/taxons/unused_taxon_table.html.erb @@ -0,0 +1,25 @@ + + + + + + + + + + + <% taxons.each do |taxon| %> + + + + + + + <% end %> + <% if taxons.empty? %> + + <% end %> + +
          <%= t("name") %><%= t("path") %><%= t("site") %>
          <%= taxon.name %><%= taxon_path taxon %><%= taxon.taxonomy.site.name %> + <%= link_to_delete taxon, :url => remove_admin_product_taxon_url(@product, taxon), :name => icon('delete') + ' ' + t(:remove) %> +
          <%= t(:none) %>.
          diff --git a/spree_theme/app/views/spree/admin/template_files/_form.html.erb b/spree_theme/app/views/spree/admin/template_files/_form.html.erb index 4ff2eb56..82e55c81 100644 --- a/spree_theme/app/views/spree/admin/template_files/_form.html.erb +++ b/spree_theme/app/views/spree/admin/template_files/_form.html.erb @@ -1,16 +1,18 @@ - -
          -
          -
          - <%= f.field_container :attachment do %> - <%= f.label :themplate_theme %> *
          - <%= f.select :theme_id,Spree::TemplateTheme.native.map{|theme| [theme.title, theme.id]}, {},:class => 'fullwidth select2' %> - <%= f.label :attachment %> *
          - <%= f.file_field :attachment, :class => 'fullwidth title' %> - <%= f.error_message_on :attachment %> - <% end %> - +
          +
          +
          + <%= f.label :attachment, Spree.t(:filename) %> + <%= f.file_field :attachment %> +
          +
          + <%= f.label :theme_id %> + <%= f.select :theme_id,Spree::TemplateTheme.native.map{|theme| [theme.title, theme.id]}, {},:class => 'select2' %> +
          +
          +
          +
          + <%= f.label :alt, Spree.t(:alt_text) %> + <%= f.text_area :alt, :rows => 4, :class => 'form-control' %> +
          +
          -
          -
          - diff --git a/spree_theme/app/views/spree/admin/template_files/_sub_menu.html.erb b/spree_theme/app/views/spree/admin/template_files/_sub_menu.html.erb deleted file mode 100644 index 4fc9dcaa..00000000 --- a/spree_theme/app/views/spree/admin/template_files/_sub_menu.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -<% content_for :sub_menu do %> - -<% end %> \ No newline at end of file diff --git a/spree_theme/app/views/spree/admin/template_files/_tabs.html.erb b/spree_theme/app/views/spree/admin/template_files/_tabs.html.erb deleted file mode 100644 index 5b093367..00000000 --- a/spree_theme/app/views/spree/admin/template_files/_tabs.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<% content_for :page_title do %> - <%= Spree.t("template_file.index") %> -<% end %> - -<% content_for :sidebar_title do %> - <%= Spree.t("template_resource")%> -<% end %> - -<% content_for :sidebar do %> - -<% end %> \ No newline at end of file diff --git a/spree_theme/app/views/spree/admin/template_files/edit.html.erb b/spree_theme/app/views/spree/admin/template_files/edit.html.erb index 93eefe9b..4a662aba 100644 --- a/spree_theme/app/views/spree/admin/template_files/edit.html.erb +++ b/spree_theme/app/views/spree/admin/template_files/edit.html.erb @@ -1,15 +1,8 @@ -<%= render :partial => 'sub_menu' %> -<%= render :partial=>'tabs',:locals=>{:current=>"TemplateFile"}%> - -<% content_for :page_actions do %> -
        • <%= button_link_to Spree.t(:back_to_template_file_list), spree.admin_template_files_url, :icon => 'icon-arrow-left' %>
        • -<% end %> +<%= render :partial=>'spree/admin/shared/template_file_tabs',:locals=>{:current=>"TemplateFile"}%> <%= render "spree/shared/error_messages", :target => @template_file %> <%= form_for [:admin, @template_file] do |f| %> -
          <%= render :partial => 'form', :locals => { :f => f } %> <%= render :partial => 'spree/admin/shared/edit_resource_links' %> -
          <% end %> diff --git a/spree_theme/app/views/spree/admin/template_files/index.html.erb b/spree_theme/app/views/spree/admin/template_files/index.html.erb index 7756ce39..3158688b 100644 --- a/spree_theme/app/views/spree/admin/template_files/index.html.erb +++ b/spree_theme/app/views/spree/admin/template_files/index.html.erb @@ -1,38 +1,39 @@ -<%= render :partial => 'sub_menu' %> -<% content_for :page_actions do %> -
        • <%= button_link_to Spree.t("template_file.new"), new_object_url, :icon => 'icon-plus' %>
        • +<% content_for :page_actions do %> + <%= button_link_to Spree.t("new_template_file"), new_object_url, class: "btn-success", :icon => 'plus' %> <% end %> -<%= render :partial=>'tabs',:locals=>{:current=>"TemplateFile"}%> +<%= render :partial=>'spree/admin/shared/template_file_tabs',:locals=>{:current=>"TemplateFile"}%> +<% if @template_files.any? %> - +
          - - - + + + - + - + - - + <% @template_files.each do |page| %> + - - + <% end %> -
          <%= Spree::TemplateFile.human_attribute_name(:attachment_file_name) %><%= Spree::TemplateFile.human_attribute_name(:attachment_file_name) %> <%= Spree::TemplateFile.human_attribute_name(:template_theme) %><%= Spree::TemplateFile.human_attribute_name(:attachment_content_type) %> <%= Spree::TemplateFile.human_attribute_name(:attachment_file_size) %> <%= Spree::TemplateFile.human_attribute_name(:created_at) %>
          + <%= link_to image_tag(page.attachment.url(:mini)), page.attachment.url %> + <%= page.name %> <%= page.template_theme.title if page.template_theme.present? %> <%= page.attachment_content_type %> <%= page.attachment_file_size %> <%= page.attachment_file_size.to_s(:human_size) %> <%= pretty_time(page.created_at) %> <%= link_to_edit page, :no_text => true %> @@ -41,4 +42,12 @@
          \ No newline at end of file + +<%= paginate @template_files %> + +<% else %> +
          + <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/template_file')) %>, + <%= link_to Spree.t(:add_one), spree.new_admin_template_file_path %>! +
          +<% end %> diff --git a/spree_theme/app/views/spree/admin/template_files/new.html.erb b/spree_theme/app/views/spree/admin/template_files/new.html.erb index e570d123..7a7a013f 100644 --- a/spree_theme/app/views/spree/admin/template_files/new.html.erb +++ b/spree_theme/app/views/spree/admin/template_files/new.html.erb @@ -1,10 +1,5 @@ -<%= render :partial => 'sub_menu' %> <% content_for :page_title do %> - <%= Spree.t("template_file.index") %> <%= Spree.t("template_file.new") %> -<% end %> - -<% content_for :page_actions do %> -
        • <%= button_link_to Spree.t(:back_to_template_file_list), spree.admin_template_files_url, :icon => 'icon-arrow-left' %>
        • + <%= Spree.t("new_template_file") %> <% end %> <%= render "spree/shared/error_messages", :target => @template_file %> @@ -12,4 +7,4 @@ <%= form_for [:admin, @template_file] do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= render :partial => 'spree/admin/shared/new_resource_links' %> -<% end %> \ No newline at end of file +<% end %> diff --git a/spree_theme/app/views/spree/admin/template_texts/_form.html.erb b/spree_theme/app/views/spree/admin/template_texts/_form.html.erb index 53f4f0be..148c45d7 100644 --- a/spree_theme/app/views/spree/admin/template_texts/_form.html.erb +++ b/spree_theme/app/views/spree/admin/template_texts/_form.html.erb @@ -1,19 +1,12 @@ -
          -
          -
          - <%= f.field_container :name do %> + + <%= f.field_container :name, class: ['form-group'] do %> <%= f.label :name %> *
          - <%= f.text_field :name, :class => 'fullwidth title' %> + <%= f.text_field :name, :class => 'form-control title ' %> <%= f.error_message_on :name %> <% end %> - <%= f.field_container :body do %> + <%= f.field_container :body, class: ['form-group'] do %> <%= f.label :body %>*
          - <%#= f.text_area :body,:class => 'fullwidth title' %> <%= f.text_area :body %> <%= f.error_message_on :body %> <% end %> -
          -
          -
          - diff --git a/spree_theme/app/views/spree/admin/template_texts/_sub_menu.html.erb b/spree_theme/app/views/spree/admin/template_texts/_sub_menu.html.erb deleted file mode 100644 index 4fc9dcaa..00000000 --- a/spree_theme/app/views/spree/admin/template_texts/_sub_menu.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -<% content_for :sub_menu do %> - -<% end %> \ No newline at end of file diff --git a/spree_theme/app/views/spree/admin/template_texts/_tabs.html.erb b/spree_theme/app/views/spree/admin/template_texts/_tabs.html.erb deleted file mode 100644 index b551a685..00000000 --- a/spree_theme/app/views/spree/admin/template_texts/_tabs.html.erb +++ /dev/null @@ -1,21 +0,0 @@ -<% content_for :page_title do %> - <%= Spree.t("template_text.index") %> -<% end %> - -<% content_for :sidebar_title do %> - <%= Spree.t("template_resource")%> -<% end %> - -<% content_for :sidebar do %> - -<% end %> \ No newline at end of file diff --git a/spree_theme/app/views/spree/admin/template_texts/edit.html.erb b/spree_theme/app/views/spree/admin/template_texts/edit.html.erb index b7d4ca44..e2818779 100644 --- a/spree_theme/app/views/spree/admin/template_texts/edit.html.erb +++ b/spree_theme/app/views/spree/admin/template_texts/edit.html.erb @@ -1,17 +1,16 @@ -<%= render :partial => 'sub_menu' %> <% content_for :page_title do %> - <%= Spree.t("template_text.index") %> <%= t("static_content.editing_page") %> "<%= @template_text.name%>" + <%= link_to Spree.t("template_texts"), admin_template_texts_path %> / <%= @template_text.name %> <% end %> <% content_for :page_actions do %> -
        • <%= button_link_to Spree.t(:back_to_template_text_list), spree.admin_template_texts_url, :icon => 'icon-arrow-left' %>
        • + <% if can?(:create, Spree::TemplateText) %> + <%= button_link_to Spree.t(:new_template_text), new_object_url, { class: "btn-success", :icon => 'plus', :id => 'admin_new_template_text' } %> + <% end %> <% end %> <%= render "spree/shared/error_messages", :target => @template_text %> <%= form_for [:admin, @template_text] do |f| %> -
          <%= render :partial => 'form', :locals => { :f => f } %> <%= render :partial => 'spree/admin/shared/edit_resource_links' %> -
          <% end %> diff --git a/spree_theme/app/views/spree/admin/template_texts/index.html.erb b/spree_theme/app/views/spree/admin/template_texts/index.html.erb index 32d264cb..52a90007 100644 --- a/spree_theme/app/views/spree/admin/template_texts/index.html.erb +++ b/spree_theme/app/views/spree/admin/template_texts/index.html.erb @@ -1,11 +1,10 @@ -<%= render :partial => 'sub_menu' %> -<% content_for :page_actions do %> -
        • <%= button_link_to Spree.t("template_text.new"), new_object_url, :icon => 'icon-plus' %>
        • +<% content_for :page_actions do %> + <%= button_link_to Spree.t("new_template_text"), new_object_url, :class => "btn-success", :icon => 'add' %> <% end %> +<%= render :partial=>'spree/admin/shared/template_text_tabs',:locals=>{:current=>"TemplateText"}%> -<%= render :partial=>'tabs',:locals=>{:current=>"TemplateText"}%> - - +<% if @template_texts.any? %> +
          @@ -16,7 +15,7 @@ - + <% @template_texts.each do |page| %> @@ -30,4 +29,11 @@ <% end %> -
          \ No newline at end of file + + +<% else %> +
          + <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/template_text')) %>, + <%= link_to Spree.t(:add_one), spree.new_admin_template_text_path %>! +
          +<% end %> diff --git a/spree_theme/app/views/spree/admin/template_texts/new.html.erb b/spree_theme/app/views/spree/admin/template_texts/new.html.erb index 1c6077f1..73231cd1 100644 --- a/spree_theme/app/views/spree/admin/template_texts/new.html.erb +++ b/spree_theme/app/views/spree/admin/template_texts/new.html.erb @@ -1,10 +1,9 @@ -<%= render :partial => 'sub_menu' %> <% content_for :page_title do %> - <%= Spree.t("template_text.index") %> <%= Spree.t("template_text.new") %> + <%= Spree.t("new_template_text") %> <% end %> <% content_for :page_actions do %> -
        • <%= button_link_to Spree.t(:back_to_template_text_list), spree.admin_template_texts_url, :icon => 'icon-arrow-left' %>
        • + <%= button_link_to Spree.t(:back_to_template_text_list), spree.admin_template_texts_url, :icon => 'arrow-left' %> <% end %> <%= render "spree/shared/error_messages", :target => @template_text %> @@ -12,4 +11,4 @@ <%= form_for [:admin, @template_text] do |f| %> <%= render :partial => 'form', :locals => { :f => f } %> <%= render :partial => 'spree/admin/shared/new_resource_links' %> -<% end %> \ No newline at end of file +<% end %> diff --git a/spree_theme/app/views/spree/admin/template_themes/_form.html.erb b/spree_theme/app/views/spree/admin/template_themes/_form.html.erb index ce50170c..5f2f372d 100644 --- a/spree_theme/app/views/spree/admin/template_themes/_form.html.erb +++ b/spree_theme/app/views/spree/admin/template_themes/_form.html.erb @@ -1,22 +1,16 @@ <% html_root_sections = Spree::SectionPiece.html_roots.includes(:sections).map{| section_piece | section_piece.sections }.flatten.uniq %> -
          -
          -
          - <%= f.field_container :title do %> + + <%= f.field_container :title, :class => ['form-group'] do %> <%= f.label :title %> *
          - <%= f.text_field :title, :class => 'fullwidth title' %> + <%= f.text_field :title, :class => 'form-control title' %> <%= f.error_message_on :title %> <% end %> - <%= f.field_container :section_root_id do %> + <%= f.field_container :section_root_id, :class => ['form-group'] do %> <%= f.label :section_root_id %>*
          - - <%= f.select :section_root_id, options_from_collection_for_select(html_root_sections, :id, :title) %> + + <%= f.select :section_root_id, options_from_collection_for_select(html_root_sections, :id, :title), {}, class: 'select2' %> <%= f.error_message_on :section_root_id %> <% end %> -
          -
          -
          - diff --git a/spree_theme/app/views/spree/admin/template_themes/_js_head.html.erb b/spree_theme/app/views/spree/admin/template_themes/_js_head.html.erb new file mode 100644 index 00000000..43ab11c1 --- /dev/null +++ b/spree_theme/app/views/spree/admin/template_themes/_js_head.html.erb @@ -0,0 +1,12 @@ +<% content_for :head do %> + <%= javascript_tag "var template_theme_id = #{@template_theme.id}; + var loading = '#{escape_javascript Spree.t(:loading)}'; + var server_error = '#{escape_javascript Spree.t(:server_error)}'; + var template_theme_error = '#{escape_javascript Spree.t(:template_theme_error)}'; + + $(document).ready(function(){ + setup_template_theme_tree(template_theme_id); + }); + " + %> +<% end %> diff --git a/spree_theme/app/views/spree/admin/template_themes/_layout_tree_for_config.html.erb b/spree_theme/app/views/spree/admin/template_themes/_layout_tree_for_config.html.erb index c3d2e372..e12e2302 100644 --- a/spree_theme/app/views/spree/admin/template_themes/_layout_tree_for_config.html.erb +++ b/spree_theme/app/views/spree/admin/template_themes/_layout_tree_for_config.html.erb @@ -1,19 +1,39 @@ <% # list layout tree in editor page. # local params: theme, selected_id, current -page_layout = theme.page_layout -selected_id ||= page_layout.id +page_layout = theme.original_page_layout_root +selected_id ||= page_layout.id %> + + + <%=form_tag(update_layout_tree_template_theme_path(theme), :id=>"layout_tree_form",:name=>"layout_tree_form", :remote=>true) do %> -
          -
            -
          • data-tid=<%= theme.id %> data-action="<%= params[:action]%>" > - <%= link_to_function( page_layout.title, "", - {"class"=>(page_layout.id==selected_id ? "selected":"")}) - %> - <%= render :partial=>'page_layout', :locals=>{:theme=>theme, :page_layout=>page_layout, :selected_id=>selected_id, :current=>current } %> -
          • -
          -
          +
          +
          + <%= label_tag nil, Spree.t(:tree) %>
          + + +
          +
            +
          • data-tid=<%= theme.id %> data-action="<%= params[:action]%>" > + <%= link_to( page_layout.title, "#", + {"class"=>(page_layout.id==selected_id ? "selected":"")}) + %> + <%= render :partial=>'page_layout', :locals=>{:theme=>theme, :page_layout=>page_layout, :selected_id=>selected_id, :current=>current } %> +
          • +
          +
          +
          + +
          + <%= Spree.t(:template_theme_tree_instruction) %> +
          + +
          + <%end%> diff --git a/spree_theme/app/views/spree/admin/template_themes/_page_actions_for_config.html.erb b/spree_theme/app/views/spree/admin/template_themes/_page_actions_for_config.html.erb new file mode 100644 index 00000000..f181d0c1 --- /dev/null +++ b/spree_theme/app/views/spree/admin/template_themes/_page_actions_for_config.html.erb @@ -0,0 +1,7 @@ + <% if @template_theme.for_desktop? && @template_theme.mobile.present? %> + <%= button_link_to Spree.t('actions.config_mobile_theme'), config_resource_admin_template_theme_url( @template_theme.mobile ), :icon => 'mobile-phone', :class=>"btn" %> + <% elsif @template_theme.for_mobile? && @template_theme.desktop.present? %> + <%= button_link_to Spree.t('actions.config_desktop_theme'), config_resource_admin_template_theme_url( @template_theme.desktop ), :icon => 'desktop', :class=>"btn" %> + <% end %> + + <%= button_link_to Spree.t(:back_to_themes_list), native_admin_template_themes_url, :icon => 'arrow-left' , :class=>"btn" %> diff --git a/spree_theme/app/views/spree/admin/template_themes/_page_layout.html.erb b/spree_theme/app/views/spree/admin/template_themes/_page_layout.html.erb index 53c29b7d..d38fb591 100644 --- a/spree_theme/app/views/spree/admin/template_themes/_page_layout.html.erb +++ b/spree_theme/app/views/spree/admin/template_themes/_page_layout.html.erb @@ -1,6 +1,6 @@ -<% #local params: - # theme: theme - # page_layout: current page_layout +<% #local params: + # theme: theme + # page_layout: current page_layout # page_layouts: whole page_layout tree page_layouts||= page_layout.self_and_descendants children = page_layouts.select{|pl| pl.parent_id == page_layout.id} @@ -9,22 +9,23 @@
            <% for child in children %>
          • data-tid=<%= theme.id %> data-action="<%= params[:action]%>"> - <%= link_to_function(child.title, "", + <%= link_to(child.title, "#", {"class"=>(child.id==selected_id ? 'selected':'') }) %> <% if current == 'ConfigResource'%> <% assigned_resources = theme.assigned_resources_by_page_layout child %> - <% assigned_resources.each{ |assigned_resource| next if assigned_resource.kind_of?(Spree::SpecificTaxon) %> - <%= assigned_resource.name %> - <% }%> + <% assigned_resources.each{ |assigned_resource| next if assigned_resource.kind_of?(Spree::SpecificTaxon) %> + <% # assigned_resource could be nil if user delete it after assigned %> + <%= assigned_resource.name if assigned_resource.present? %> + <% }%> <% elsif current == 'ConfigContext'%> <% if child.section_context.present? %> <%= child.current_contexts.map{|section_context| Spree.t("section_context.#{section_context}")}.join(',')%> - <% end %> - + <% end %> + <% assigned_resources = theme.assigned_resources( Spree::SpecificTaxon, child ).compact %> <%= assigned_resources.map(&:name).join(',') %> @@ -32,8 +33,8 @@ <% elsif current == 'ConfigDataSource'%> <% if child.data_source.present? %> - <%= Spree.t("section_data_source.#{child.current_data_source}") %> - <% end %> + <%= Spree.t("section_data_source.#{child.current_data_source}") %> + <% end %> <% end %> <%= render :partial => 'page_layout', :locals => { :theme => theme, :page_layout=>child, :page_layouts=>page_layouts, :selected_id=>selected_id, :current=>current } %> diff --git a/spree_theme/app/views/spree/admin/template_themes/_sub_menu.html.erb b/spree_theme/app/views/spree/admin/template_themes/_sub_menu.html.erb deleted file mode 100644 index e2dda100..00000000 --- a/spree_theme/app/views/spree/admin/template_themes/_sub_menu.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -<% content_for :sub_menu do %> - -<% end %> \ No newline at end of file diff --git a/spree_theme/app/views/spree/admin/template_themes/_theme_tabs.html.erb b/spree_theme/app/views/spree/admin/template_themes/_theme_tabs.html.erb deleted file mode 100644 index 72532d1d..00000000 --- a/spree_theme/app/views/spree/admin/template_themes/_theme_tabs.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -<% content_for :page_title do %> - <%= Spree.t(:theme_config) %> “<%= @template_theme.title %>” -<% end %> - -<% content_for :sidebar_title do %> - <%= @template_theme.page_layout.title %> -<% end %> - -<% content_for :sidebar do %> - -<% end %> \ No newline at end of file diff --git a/spree_theme/app/views/spree/admin/template_themes/apply.js.erb b/spree_theme/app/views/spree/admin/template_themes/apply.js.erb index 7e48256f..ae56e655 100644 --- a/spree_theme/app/views/spree/admin/template_themes/apply.js.erb +++ b/spree_theme/app/views/spree/admin/template_themes/apply.js.erb @@ -1,2 +1,2 @@ -$('form.edit_template_theme input:radio').attr('checked',false); -$('form.edit_template_theme #is_applied_<%=@template_theme.id%>').attr('checked',true); +$('form.edit_template_theme input:radio').removeProp('checked'); +$('form.edit_template_theme #is_applied_<%=@template_theme.id%>').prop('checked','checked'); diff --git a/spree_theme/app/views/spree/admin/template_themes/config_context.html.erb b/spree_theme/app/views/spree/admin/template_themes/config_context.html.erb index c7335d5f..7363c8ad 100644 --- a/spree_theme/app/views/spree/admin/template_themes/config_context.html.erb +++ b/spree_theme/app/views/spree/admin/template_themes/config_context.html.erb @@ -1,16 +1,13 @@ -<%= render :partial => 'sub_menu' %> +<%= render :partial=>'spree/admin/template_themes/js_head' %> + <% content_for :page_actions do %> -
          • <%= button_link_to Spree.t(:back_to_themes_list), session[:return_to] || native_admin_template_themes_url, :icon => 'icon-arrow-left' %>
          • - <% if can?(:config, Spree::TemplateTheme) %> - - <% end %> + <%= render :partial => 'page_actions_for_config' %> <% end %>
            - <%= render :partial=>'spree/admin/page_layout/config_resource', :locals=>{ :page_layout=> @template_theme.page_layout } %> + <%= render :partial=>'spree/admin/page_layouts/config_resource', :locals=>{ :page_layout=> @template_theme.original_page_layout_root } %>
            -<%= render :partial=>'theme_tabs',:locals=>{:current=>"ConfigContext"}%> +<%= render :partial=>'spree/admin/shared/template_theme_tabs',:locals=>{:current=>"ConfigContext"}%>
            <%= render :partial=>'layout_tree_for_config', :locals=>{:theme=>@template_theme, :current=>"ConfigContext" }%>
            diff --git a/spree_theme/app/views/spree/admin/template_themes/config_data_source.html.erb b/spree_theme/app/views/spree/admin/template_themes/config_data_source.html.erb index 23a9a057..e0c525e6 100644 --- a/spree_theme/app/views/spree/admin/template_themes/config_data_source.html.erb +++ b/spree_theme/app/views/spree/admin/template_themes/config_data_source.html.erb @@ -1,15 +1,12 @@ -<%= render :partial => 'sub_menu' %> +<%= render :partial=>'spree/admin/template_themes/js_head' %> + <% content_for :page_actions do %> -
          • <%= button_link_to Spree.t(:back_to_themes_list), session[:return_to] || native_admin_template_themes_url, :icon => 'icon-arrow-left' %>
          • - <% if can?(:config, Spree::TemplateTheme) %> - - <% end %> + <%= render :partial => 'page_actions_for_config' %> <% end %>
            - <%= render :partial=>'spree/admin/page_layout/config_data_source', :locals=>{ :page_layout=> @template_theme.page_layout } %> + <%= render :partial=>'spree/admin/page_layouts/config_data_source', :locals=>{ :page_layout=> @template_theme.original_page_layout_root } %>
            -<%= render :partial=>'theme_tabs',:locals=>{:current=>"ConfigDataSource"}%> +<%= render :partial=>'spree/admin/shared/template_theme_tabs',:locals=>{:current=>"ConfigDataSource"}%>
            <%= render :partial=>'layout_tree_for_config', :locals=>{:theme=>@template_theme, :current=>"ConfigDataSource" }%>
            diff --git a/spree_theme/app/views/spree/admin/template_themes/config_resource.html.erb b/spree_theme/app/views/spree/admin/template_themes/config_resource.html.erb index 087de9f1..490ec4cf 100644 --- a/spree_theme/app/views/spree/admin/template_themes/config_resource.html.erb +++ b/spree_theme/app/views/spree/admin/template_themes/config_resource.html.erb @@ -1,16 +1,14 @@ -<%= render :partial => 'sub_menu' %> +<%= render :partial=>'spree/admin/template_themes/js_head' %> + <% content_for :page_actions do %> -
          • <%= button_link_to Spree.t(:back_to_themes_list), native_admin_template_themes_url, :icon => 'icon-arrow-left' %>
          • - <% if can?(:config, Spree::TemplateTheme) %> - - <% end %> + <%= render :partial => 'page_actions_for_config' %> <% end %> +
            - <%= render :partial=>'spree/admin/page_layout/config_resource', :locals=>{ :page_layout=> @template_theme.page_layout } %> + <%= render :partial=>'spree/admin/page_layouts/config_resource', :locals=>{ :page_layout=> @template_theme.original_page_layout_root } %>
            -<%= render :partial=>'theme_tabs',:locals=>{:current=>"ConfigResource"}%> +<%= render :partial=>'spree/admin/shared/template_theme_tabs',:locals=>{:current=>"ConfigResource"}%>
            -<%= render :partial=>'layout_tree_for_config', :locals=>{:theme=>@template_theme, :current=>"ConfigResource" }%> + <%= render :partial=>'layout_tree_for_config', :locals=>{:theme=>@template_theme, :current=>"ConfigResource" }%>
            diff --git a/spree_theme/app/views/spree/admin/template_themes/foreign.html.erb b/spree_theme/app/views/spree/admin/template_themes/foreign.html.erb index c9ecf736..3b07035d 100644 --- a/spree_theme/app/views/spree/admin/template_themes/foreign.html.erb +++ b/spree_theme/app/views/spree/admin/template_themes/foreign.html.erb @@ -1,32 +1,31 @@ -<%= render :partial => 'sub_menu' %> <% content_for :page_title do %> - <%= Spree.t(:theme_foreign) %> + <%= Spree.t(:theme_foreign) %> <% end %> - + +
            - - + + + -<% @themes.each do |theme| %> - - - - - - -<% end %> + <% @themes.each do |theme| %> + + + + + + + <% end %>
            <%= Spree::TemplateTheme.human_attribute_name(:title) %> <%= Spree.t(:theme_is_free) %> <%= Spree.t(:theme_is_imported) %>
            <%= theme.title %><%= Spree.t(:say_yes) %><%= theme.imported? ? Spree.t(:say_yes) : Spree.t(:not) %><%= link_to_with_icon 'icon-eye', Spree.t(:preview_theme), preview_template_theme_url(theme, :host=>SpreeTheme.site_class.designsite.domain),{:target=>'_blank',:no_text => true} %> - <%=link_to_with_icon 'icon-tag', Spree.t(:theme_import), import_admin_template_theme_path(theme),{:disabled=>theme.imported?, :no_text => true, :method=>:post} %> -
            <%= theme.title %><%= Spree.t(:say_yes) %><%= theme.imported? ? Spree.t(:say_yes) : Spree.t(:not) %> + <%= link_to_with_icon 'eye', Spree.t(:preview_theme), preview_template_theme_url(theme, :host=>theme.store.subdomain),{:target=>'_blank',:no_text => true} %> + <%= link_to_with_icon 'tag', Spree.t(:theme_import), import_admin_template_theme_path(theme),{:disabled=>theme.imported?, :no_text => true, :method=>:post} %> +
            - -
            - diff --git a/spree_theme/app/views/spree/admin/template_themes/native.html.erb b/spree_theme/app/views/spree/admin/template_themes/native.html.erb index fe8a404b..b5bfd3fc 100644 --- a/spree_theme/app/views/spree/admin/template_themes/native.html.erb +++ b/spree_theme/app/views/spree/admin/template_themes/native.html.erb @@ -1,60 +1,62 @@ -<%= render :partial => 'sub_menu' %> <% content_for :page_title do %> - <%= Spree.t(:theme_native) %> + <%= Spree.t(:theme_native) %> <% end %> -<% if SpreeTheme.site_class.current.design? %> - <% content_for :page_actions do %> -
          • <%= button_link_to Spree.t("template_theme.new"), new_object_url, :icon => 'icon-plus',:remote=>:true, :id=>'admin_new_template_theme' %>
          • +<% designable= Spree::Store.current.designable? %> + +<% if designable %> + <% content_for :page_actions do %> + <%= button_link_to Spree.t("template_theme.new"), new_object_url, :class => "btn-success", :icon => 'add', :id=>'admin_new_template_theme' %> <% end %> <% end %>
            - <% if @themes.any? %> -<% has_column_is_public = Spree::Site.current.design? %> - +
            - <% if has_column_is_public %> + <% if designable %> <% end %> - - - - - <% if has_column_is_public %> - - <% end %> - + + + + + + <% if designable %> + + <% end %> + + + <% @themes.each do |theme| %> - - <% if has_column_is_public %> + <% if designable %> <% end %> @@ -62,11 +64,10 @@ <% end %>
            <%= Spree::TemplateTheme.human_attribute_name(:title) %> <%= Spree.t(:theme_applied) %> <%= Spree::TemplateTheme.human_attribute_name(:is_public) %>
            <%= Spree::TemplateTheme.human_attribute_name(:title) %> <%= Spree.t(:theme_applied) %> <%= Spree::TemplateTheme.human_attribute_name(:is_public) %>
            <%= theme.title %> + <%= form_for [:admin,theme],:url=>apply_admin_template_theme_path(theme), :remote=>true do |f|%> - <%= radio_button_tag "is_applied", theme.id, theme.applied? %> - <% end %> + <%= radio_button_tag "is_applied", theme.id, theme.applied? %> + <% end %> <%= form_for [:admin,theme], :remote=>true do |f|%> <%= f.check_box "is_public" %> - <% end %> + <% end %> - <%= link_to_with_icon 'icon-cogs', Spree.t(:theme_config), config_resource_admin_template_theme_path(theme), {:method=>:get,:no_text => true} %> - <% if theme.has_native_layout? %> - <%= link_to_with_icon 'icon-eye', Spree.t(:preview_theme), preview_template_theme_path(theme), {:target=>'_blank',:no_text => true} %> - <% if SpreeTheme.site_class.current.design? %> - <%= link_to_with_icon 'icon-copy', Spree.t(:theme_copy), copy_admin_template_theme_path(theme), {:method=>:post,:no_text => true} %> + <%= link_to_edit Spree.t(:theme_config), url: config_resource_admin_template_theme_path(theme), :no_text => true %> + <%= link_to_with_icon 'eye-open', Spree.t(:preview_theme), preview_template_theme_path(theme), {class: "btn btn-primary btn-sm",:target=>'_blank',:no_text => true} %> + <% if theme.has_native_layout? %> + <% if false %> + <%= link_to_clone Spree.t(:theme_copy), url: copy_admin_template_theme_path(theme) %> <% end %> - <%= link_to_with_icon 'icon-print', Spree.t(:theme_release), release_admin_template_theme_path(theme), {:method=>:post,:no_text => true} %> + <%= link_to_with_icon 'print', Spree.t(:theme_release), release_admin_template_theme_path(theme), {class: "btn btn-primary btn-sm", :method=>:post,:no_text => true} %> <% end %> <%= link_to_delete theme, :no_text => true if can?(:delete, theme) %>
            <% else %> -
            +
            <%= Spree.t(:no_resource_found, resource: I18n.t(:other, scope: 'activerecord.models.spree/template_theme')) %>, <%= link_to Spree.t(:select_from_foreign_themes), spree.foreign_admin_template_themes_path %>!
            <% end %>
            - diff --git a/spree_theme/app/views/spree/admin/template_themes/new.html.erb b/spree_theme/app/views/spree/admin/template_themes/new.html.erb index c6f2aab6..040f913e 100644 --- a/spree_theme/app/views/spree/admin/template_themes/new.html.erb +++ b/spree_theme/app/views/spree/admin/template_themes/new.html.erb @@ -1,9 +1,12 @@ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @template_theme } %> +<% content_for :page_title do %> + <%= Spree.t(:new_product) %> +<% end %> + <%= form_for [:admin, @template_theme] do |f| %>
            - <%= Spree.t("template_theme.new") %> <%= render :partial => 'form', :locals => { :f => f } %> <%= render :partial => 'spree/admin/shared/new_resource_links' %>
            -<% end %> \ No newline at end of file +<% end %> diff --git a/spree_theme/app/views/spree/admin/template_themes/prepare_import.html.erb b/spree_theme/app/views/spree/admin/template_themes/prepare_import.html.erb index 1fb94558..52aad029 100644 --- a/spree_theme/app/views/spree/admin/template_themes/prepare_import.html.erb +++ b/spree_theme/app/views/spree/admin/template_themes/prepare_import.html.erb @@ -8,13 +8,13 @@
            <%= Spree.t(:theme_assign_taxon) %> - <% @template_theme.page_layout.self_and_descendants.each do |page_layout| - assigned_taxons = @template_theme.assigned_resources( SpreeTheme.taxon_class, page_layout) + <% @template_theme.page_layouts.each do |page_layout| + assigned_taxons = @template_theme.assigned_resources( SpreeTheme.taxon_class, page_layout) next if assigned_taxons.blank? %>
            <%= label :page_layout, :title, page_layout.title %>
            - <% assigned_taxons.each{|taxon| next if taxon.blank? %> + <% assigned_taxons.each{|taxon| next if taxon.blank? %> <%= select_tag "assigned_resource_ids[#{page_layout.id}][]",options_from_collection_for_select(taxon.class.roots, :id, :name), prompt: (Spree.t :select_taxon) %> <%}%>
            @@ -24,28 +24,28 @@
            <%= Spree.t(:theme_assign_image) %> - <% @template_theme.page_layout.self_and_descendants.each do |page_layout| - assigned_images = @template_theme.assigned_resources( Spree::TemplateFile, page_layout) + <% @template_theme.page_layouts.each do |page_layout| + assigned_images = @template_theme.assigned_resources( Spree::TemplateFile, page_layout) next if assigned_images.blank? %>
            <%= label :page_layout, :title, page_layout.title %>
            - <% assigned_images.each{|image| %> + <% assigned_images.each{|image| %> <%= fields_for 'template_files[]', @template_theme.template_files.build do |file_form| %> <%= file_form.file_field :attachment %> <%= file_form.hidden_field :page_layout_id, :value=>page_layout.id %> <% end %> - <%}%> - + <%}%> +
            <% end %>
            - <%= button Spree.t('actions.import'), 'icon-ok' %> + <%= button Spree.t('actions.import'), 'ok' %> <%= Spree.t(:or) %> - <%= link_to_with_icon 'icon-remove', Spree.t('actions.cancel'), session[:return_to] || foreign_admin_template_themes_path, :class => 'button' %> + <%= link_to_with_icon 'remove', Spree.t('actions.cancel'), session[:return_to] || foreign_admin_template_themes_path, :class => 'button' %>
            <% end %> diff --git a/spree_theme/app/views/spree/admin/template_themes/publish.html.erb b/spree_theme/app/views/spree/admin/template_themes/publish.html.erb deleted file mode 100644 index 97cdb4f8..00000000 --- a/spree_theme/app/views/spree/admin/template_themes/publish.html.erb +++ /dev/null @@ -1,21 +0,0 @@ - -<%= form_tag( assign_template_themes_path(),{:remote=>true,"data-type"=>"script"} ) do %> -
            - -
            -

            assign website default pages

            -
            <%= render :partial=>"default_pages_setting" %> -
            - - -
            - - -
            - <%= submit_tag "Update&Preview"%> - <%= submit_tag "Preview"%> - <%= submit_tag "Publish"%> -
            - -
            -<% end %> diff --git a/spree_theme/app/views/spree/api/v1/auth/_auth.v1.rabl b/spree_theme/app/views/spree/api/v1/auth/_auth.v1.rabl new file mode 100644 index 00000000..4e748e59 --- /dev/null +++ b/spree_theme/app/views/spree/api/v1/auth/_auth.v1.rabl @@ -0,0 +1,4 @@ +object @user +node(:id) { |user| user.id } +node(:email) { |user| user.email } +node(:token) { |user| user.spree_api_key } diff --git a/spree_theme/app/views/spree/api/v1/auth/sign_in.v1.rabl b/spree_theme/app/views/spree/api/v1/auth/sign_in.v1.rabl new file mode 100644 index 00000000..a59ef2eb --- /dev/null +++ b/spree_theme/app/views/spree/api/v1/auth/sign_in.v1.rabl @@ -0,0 +1,3 @@ +object @user + +extends "spree/api/v1/auth/_auth" diff --git a/spree_theme/app/views/spree/api/v1/page_layouts/jstree.rabl b/spree_theme/app/views/spree/api/v1/page_layouts/jstree.rabl new file mode 100644 index 00000000..2b336c8a --- /dev/null +++ b/spree_theme/app/views/spree/api/v1/page_layouts/jstree.rabl @@ -0,0 +1,8 @@ +collection @page_layout.children, :object_root => false +node(:data) { |page_layout| page_layout.title } +node(:attr) do |page_layout| + { :id => page_layout.id, + :name => page_layout.title + } +end +node(:state) { "closed" } diff --git a/spree_theme/app/views/spree/api/v1/page_layouts/show.v1.rabl b/spree_theme/app/views/spree/api/v1/page_layouts/show.v1.rabl new file mode 100644 index 00000000..58ddfa05 --- /dev/null +++ b/spree_theme/app/views/spree/api/v1/page_layouts/show.v1.rabl @@ -0,0 +1,6 @@ +object @page_layout +attributes *page_layout_attributes + +child :children => :page_layouts do + attributes *page_layout_attributes +end diff --git a/spree_theme/app/views/spree/api/v1/relations/show.v1.rabl b/spree_theme/app/views/spree/api/v1/relations/show.v1.rabl new file mode 100644 index 00000000..5a1a4b81 --- /dev/null +++ b/spree_theme/app/views/spree/api/v1/relations/show.v1.rabl @@ -0,0 +1,2 @@ +object @relation + attributes *Spree::Relation.column_names diff --git a/spree_theme/app/views/spree/api/v1/template_themes/jstree.v1.rabl b/spree_theme/app/views/spree/api/v1/template_themes/jstree.v1.rabl new file mode 100644 index 00000000..91f654e7 --- /dev/null +++ b/spree_theme/app/views/spree/api/v1/template_themes/jstree.v1.rabl @@ -0,0 +1,8 @@ +object false +node(:data) { @template_theme.page_layout_root.title } +node(:attr) do + { :id => @template_theme.page_layout_root.id, + :name => @template_theme.page_layout_root.title + } +end +node(:state) { "closed" } diff --git a/spree_theme/app/views/spree/checkout/_one_page.html.erb b/spree_theme/app/views/spree/checkout/_one_page.html.erb deleted file mode 100644 index 8f653ce8..00000000 --- a/spree_theme/app/views/spree/checkout/_one_page.html.erb +++ /dev/null @@ -1,64 +0,0 @@ -<% #section_param_piece checkout_form, render :partial=> "one_page" -%> - -
            - <%= form.fields_for :bill_address do |bill_form| %> -

            <%= Spree.t(:billing_address) %>

            - <%= render :partial => 'spree/address/form', :locals => { :form => bill_form, :address_type => 'billing', :address => @order.bill_address } %> - <% end %> - <%= form.fields_for :ship_address do |ship_form| %> - <%= hidden_field_tag 'order[use_billing]', '1' %> - <% end %> -
            -
            - <%= form.fields_for :shipments do |ship_form| %> -

            <%= Spree.t(:shipping_method) %>

            -
              - <% ship_form.object.shipping_rates.frontend.each do |rate| %> -
            • - -
            • - <% end %> -
            - <% end %> -
            - -
            -

            <%= Spree.t(:payment_information) %>

            - <% @order.available_payment_methods.each do |method| %> -

            - -

            - <% end %> - -
              - <% @order.available_payment_methods.each do |method| %> -
            • -
              - <%= render :partial => "spree/checkout/payment/#{method.method_type}", :locals => { :payment_method => method } %> -
              -
            • - <% end %> -
            -
            - <% if Spree::Promotion.with_code.count > 0 %> -

            - <%= form.label :coupon_code %>
            - <%= form.text_field :coupon_code %> -

            - <% end %> -
            - -
            - <%= button_tag :class => 'continue button primary', :type => 'submit' do %> - <%= Spree.t(:save_and_continue) %> - <% end %> - -
            diff --git a/spree_theme/app/views/spree/comments/_form.html.erb b/spree_theme/app/views/spree/comments/_form.html.erb index a5889ee0..d89b0ffe 100644 --- a/spree_theme/app/views/spree/comments/_form.html.erb +++ b/spree_theme/app/views/spree/comments/_form.html.erb @@ -1,7 +1,3 @@ -<% # site_instance.class.name.demodulize.underscore => 'site' - t_scope = @comment.comment_scope -%> - <%= hidden_field_tag 'comment[commentable_id]', @comment.commentable.id %> <%= hidden_field_tag 'comment[commentable_type]', @comment.commentable.class %> @@ -10,20 +6,20 @@ <%= f.label :comment_type_id, Spree.t(:type) %> <%= f.select :comment_type_id, @comment_types.map{|ct| [ct.name, ct.id]},{} ,:class => 'fullwidth' %>

            - <% end %> + <% end %>

            - <%= f.label :comment, Spree.t(:comment,:scope=>t_scope, :site_name=>Spree::Site.current.name) %>
            + <%= f.label :comment, Spree.t(:store_comment, :store_name=>Spree::Store.current.name) %>
            <%= f.text_area :comment, :style => 'height:120px;', :class => 'fullwidth' %>

            - <% if @comment.user %> + <% if @comment.user %> <%= hidden_field_tag 'comment[user_id]', @comment.user.id %> <% else %>

            - <%= f.label :cellphone, Spree.t(:commenter_cellphone,:scope=>t_scope) %>
            + <%= f.label :cellphone %>
            <%= f.text_field :cellphone %>

            - <%= f.label :email, Spree.t(:commenter_email,:scope=>t_scope) %>
            + <%= f.label :email %>
            <%= f.text_field :email %>

            - <% end %> + <% end %> diff --git a/spree_theme/app/views/spree/comments/_new_to_site.html.erb b/spree_theme/app/views/spree/comments/_new_to_site.html.erb index 839bfc68..8fd2fdb8 100644 --- a/spree_theme/app/views/spree/comments/_new_to_site.html.erb +++ b/spree_theme/app/views/spree/comments/_new_to_site.html.erb @@ -1,7 +1,7 @@ -

            <%= Spree.t(:add_comment,:scope=>'site', :site_name=>Spree::Site.current.name) %>

            -<%= form_for @comment, :remote=>request.xhr? do |f| %> - <%= render :partial=>'form', :locals=>{:commentable=>Spree::Site.current, :f => f } %> +

            <%= Spree.t(:comment_to_store, :store_name=> Spree::Store.current.name) %>

            +<%= form_for @comment, :remote=>request.xhr?, :html=>{ :class=> 'fullwidth' } do |f| %> + <%= render :partial=>'form', :locals=>{ :f => f } %>

            <%= f.button Spree.t(:create), :class => 'button', :type=>:submit %> <%= f.button Spree.t('actions.cancel'), :class => 'button cancel', :type=>:button %>

            diff --git a/spree_theme/app/views/spree/layouts/localhost.html.erb b/spree_theme/app/views/spree/layouts/localhost.html.erb new file mode 100644 index 00000000..d0df86f9 --- /dev/null +++ b/spree_theme/app/views/spree/layouts/localhost.html.erb @@ -0,0 +1,47 @@ + + + +<%= render :partial => 'shared/head'%> + +<% +if @body_class.nil? + if @content_for_sidebar + @body_class = 'two-col' + else + @body_class = 'one-col' + end +end + %> +> + +
            + <% if @content_for_sidebar %> + + <% end %> + +
            + <%= breadcrumbs(@taxon) if @taxon %> + <% if flash[:notice] %> +
            <%= flash[:notice] %>
            + <% end %> + <% if flash[:error] %> +
            <%= flash[:error] %>
            + <% end %> + <%= yield %> +
            + <%= render :partial => 'shared/footer'%> +
            + + diff --git a/spree_theme/app/views/spree/orders/_form.html.erb b/spree_theme/app/views/spree/orders/_form.html.erb new file mode 100644 index 00000000..67a7dbdb --- /dev/null +++ b/spree_theme/app/views/spree/orders/_form.html.erb @@ -0,0 +1,24 @@ +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @order } %> + + + + + + + + + + + + <%= render partial: 'spree/orders/line_item', collection: order_form.object.line_items, locals: {order_form: order_form} %> + + <% if @order.adjustments.nonzero.exists? || @order.line_item_adjustments.nonzero.exists? || @order.shipment_adjustments.nonzero.exists? || @order.shipments.any? %> + + + + + <%= render "spree/orders/adjustments" %> + <% end %> + +
            <%= Spree.t(:item) %><%= Spree.t(:price) %><%= Spree.t(:qty) %><%= Spree.t(:subtotal) %>
            <%= Spree.t(:cart_subtotal, :count => @order.line_items.sum(:quantity)) %>
            +
            <%= order_form.object.display_item_total %>
            diff --git a/spree_theme/app/views/spree/orders/_form_bootstrap.html b/spree_theme/app/views/spree/orders/_form_bootstrap.html new file mode 100644 index 00000000..1c187617 --- /dev/null +++ b/spree_theme/app/views/spree/orders/_form_bootstrap.html @@ -0,0 +1,30 @@ +
            +<%= render partial: 'spree/shared/error_messages', locals: { target: @order } %> + + + + + + + + + + + + <%= render partial: 'spree/orders/line_item_bootstrap', collection: order_form.object.line_items, as: :line_item, locals: {order_form: order_form} %> + + <% if @order.adjustments.nonzero.exists? || @order.line_item_adjustments.nonzero.exists? || @order.shipment_adjustments.nonzero.exists? || @order.shipments.any? %> + + + + + + <%= render "spree/orders/adjustments" %> + <% end %> + + + + + +
            <%= Spree.t(:item) %><%= Spree.t(:price) %><%= Spree.t(:qty) %><%= Spree.t(:total) %>
            <%= Spree.t(:cart_subtotal, count: @order.line_items.sum(:quantity)) %>
            <%= order_form.object.display_item_total %>
            <%= Spree.t(:total) %>
            <%= order_form.object.display_total %>
            +
            diff --git a/spree_theme/app/views/spree/orders/_line_item.html.erb b/spree_theme/app/views/spree/orders/_line_item.html.erb index 8b135240..e5b62dc0 100644 --- a/spree_theme/app/views/spree/orders/_line_item.html.erb +++ b/spree_theme/app/views/spree/orders/_line_item.html.erb @@ -16,7 +16,7 @@ <%= Spree.t(:out_of_stock) %>  
            <% end %> - + <%= line_item.single_money.to_html %> @@ -28,7 +28,7 @@ <%= line_item.display_amount.to_html unless line_item.quantity.nil? %> - <%= link_to image_tag('icons/delete.png'), '#', :class => 'delete', :id => "delete_#{dom_id(line_item)}" %> + <%= link_to Spree.t('delete'), '#', class: 'delete', id: "delete_#{dom_id(line_item)}" %> <% end -%> diff --git a/spree_theme/app/views/spree/orders/_line_item_bootstrap.html b/spree_theme/app/views/spree/orders/_line_item_bootstrap.html new file mode 100644 index 00000000..a3d3102a --- /dev/null +++ b/spree_theme/app/views/spree/orders/_line_item_bootstrap.html @@ -0,0 +1,33 @@ +<% variant = line_item.variant -%> +<%= order_form.fields_for :line_items, line_item do |item_form| -%> + + + <% if variant.images.length == 0 %> + <%= link_to small_image(variant.product), variant.product %> + <% else %> + <%= link_to image_tag(variant.images.first.attachment.url(:small)), variant.product %> + <% end %> + + +
            <%= link_to line_item.name, product_path(variant.product) %>
            + <%= variant.options_text %> + <% if line_item.insufficient_stock? %> + + <%= Spree.t(:out_of_stock) %>  
            +
            + <% end %> + + + <%= line_item.single_money.to_html %> + + + <%= item_form.number_field :quantity, min: 0, class: "form-control line_item_quantity", size: 5 %> + + + <%= line_item.display_amount.to_html unless line_item.quantity.nil? %> + + + <%= link_to content_tag(:i, '', class: 'fa fa-minus-circle'), '#', class: 'delete', id: "delete_#{dom_id(line_item)}" %> + + +<% end -%> diff --git a/spree_theme/app/views/spree/orders/_order_items.html.erb b/spree_theme/app/views/spree/orders/_order_items.html.erb index dc1c49f1..e04862d6 100644 --- a/spree_theme/app/views/spree/orders/_order_items.html.erb +++ b/spree_theme/app/views/spree/orders/_order_items.html.erb @@ -1,67 +1,98 @@ - - - - - - - - - - - - - - - - <% @order.line_items.each do |item| %> - - - - - - - - <% end %> - - +<% # copy from order_detail + order = @order +%> +
            +
            <%= Spree.t(:item) %><%= Spree.t(:price) %><%= Spree.t(:qty) %><%= Spree.t(:total) %>
            - <% if item.variant.images.length == 0 %> - <%= link_to small_image(item.variant.product), item.variant.product %> - <% else %> - <%= link_to image_tag(item.variant.images.first.attachment.url(:small)), item.variant.product %> - <% end %> - -

            <%= item.variant.product.name %>

            - <%= truncated_product_description(item.variant.product) %> - <%= "(" + item.variant.options_text + ")" unless item.variant.option_values.empty? %> -
            <%= item.single_money.to_html %><%= item.quantity %><%= item.display_amount.to_html %>
            + + + + + + + + + + + + + + + + + <% order.line_items.each do |item| %> + + + + + + + + <% end %> + + + + + + + + + + + + + + + + <% if order.line_item_adjustments.exists? %> + <% if order.line_item_adjustments.promotion.eligible.exists? %> + + <% order.line_item_adjustments.promotion.eligible.group_by(&:label).each do |label, adjustments| %> + + + + + <% end %> + + <% end %> + <% end %> + + + <% order.shipments.group_by { |s| s.selected_shipping_rate.name }.each do |name, shipments| %> + + + + + <% end %> + + + <% if order.all_adjustments.tax.exists? %> + + <% order.all_adjustments.tax.group_by(&:label).each do |label, adjustments| %> - - + + - - <% if @order.line_item_adjustment_totals.present? %> - - <% @order.line_item_adjustment_totals.each do |key, total| %> - - - - - <% end %> - <% end %> - - - - - - - - <% @order.adjustments.eligible.each do |adjustment| %> - <% next if (adjustment.originator_type == 'Spree::TaxRate') and (adjustment.amount == 0) %> - - - - - <% end %> - -
            <%= Spree.t(:item) %><%= Spree.t(:price) %><%= Spree.t(:qty) %><%= Spree.t(:total) %>
            + <% if item.variant.images.length == 0 %> + <%= link_to small_image(item.variant.product), item.variant.product %> + <% else %> + <%= link_to image_tag(item.variant.images.first.attachment.url(:small)), item.variant.product %> + <% end %> + +

            <%= item.variant.product.name %>

            + <%= "(" + item.variant.options_text + ")" unless item.variant.option_values.empty? %> +
            <%= item.single_money.to_html %><%= item.quantity %><%= item.display_amount.to_html %>
            <%= Spree.t(:order_total) %>:<%= order.display_total.to_html %>
            <%= Spree.t(:subtotal) %>:<%= order.display_item_total.to_html %>
            <%= Spree.t(:promotion) %>: <%= label %><%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
            <%= Spree.t(:shipping) %>: <%= name %><%= Spree::Money.new(shipments.sum(&:discounted_cost), currency: order.currency).to_html %>
            <%= Spree.t(:order_total) %>:<%= @order.display_total.to_html %><%= Spree.t(:tax) %>: <%= label %><%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
            <%= key %><%= total %>
            <%= Spree.t(:subtotal) %>:<%= @order.display_item_total.to_html %>
            <%= adjustment.label %><%= adjustment.display_amount.to_html %>
            + + <% end %> + + + <% order.adjustments.eligible.each do |adjustment| %> + <% next if (adjustment.source_type == 'Spree::TaxRate') and (adjustment.amount == 0) %> + + <%= adjustment.label %> + <%= adjustment.display_amount.to_html %> + + <% end %> + + +
            diff --git a/spree_theme/app/views/spree/orders/_show.html.erb b/spree_theme/app/views/spree/orders/_show.html.erb index b650f7a8..016fbad9 100644 --- a/spree_theme/app/views/spree/orders/_show.html.erb +++ b/spree_theme/app/views/spree/orders/_show.html.erb @@ -1,3 +1,3 @@ -<% # theme required, show order detail +<% # theme required, show order detail %> - <%= render :partial => 'spree/shared/order_details', :locals => { :order => @order } %> \ No newline at end of file +<%= render :partial => 'spree/shared/order_details', :locals => { :order => @order } %> diff --git a/spree_theme/app/views/spree/orders/populate.js.erb b/spree_theme/app/views/spree/orders/populate.js.erb new file mode 100644 index 00000000..5a280153 --- /dev/null +++ b/spree_theme/app/views/spree/orders/populate.js.erb @@ -0,0 +1,4 @@ +<% minicart = @theme.find_section_by_usage Spree::Section::UsageEnum.minicart %> +<% if minicart.present? %> + $('<%=minicart.css_selector %>').html("<%= j( render inline: minicart.build_html ) %>"); +<% end %> diff --git a/spree_theme/app/views/spree/page_layouts/_edit.html.erb b/spree_theme/app/views/spree/page_layouts/_edit.html.erb new file mode 100644 index 00000000..dc80d901 --- /dev/null +++ b/spree_theme/app/views/spree/page_layouts/_edit.html.erb @@ -0,0 +1,65 @@ +<% #edit page_layout in editor, + # title, columns, data_resource, +%> +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @page_layout } %> +<%=form_for @page_layout, url: template_theme_page_layout_path(@template_theme, @page_layout), remote: true do |f| %> +
            + <%= f.label :title %> + <%= f.text_field :title %> +
            +
            + <%= f.label :content_param %> + <%= f.number_field :content_param %> columns=n/clickable=1/image_size +
            +
            + <%= f.label :image_param %> + <%= f.text_field :image_param %> mini/small/product/medium/large/240w_240h_1x +
            +
            + <%= f.label :effect_param %> + <%= f.text_field :effect_param %> hover_scaleble +
            + +
            + <%= f.label :css_class %> + <%= f.text_field :css_class %>bootstrap .col-xs-n, .container, .container-fluid +
            + +
            + <%= f.label :content_css_class %> + <%= f.text_field :content_css_class %> glyphicon +
            + +
            + <%= f.label :data_source %> + <% current_data_source = @page_layout.current_data_source + options = options_for_select((Spree::PageLayout::DataSourceEnum.members).collect{|section_data_source| [Spree.t("section_data_source.#{ section_data_source }"), section_data_source] }, current_data_source ) + %> + <%= f.select "data_source", options , include_blank: true, class: 'select2' %> +
            +
            + <%= f.label :data_filter %> + <%= f.text_field :data_filter %> next,previous +
            +
            + <%= f.label :data_source_order_by %> + <%= f.text_field :data_source_order_by %> created_at_desc +
            +
            + <%= f.label :data_source_param %> + <%= f.text_field :data_source_param %> per_page,enable,style/attribute_name +
            +
            + <%= f.label :stylish %> + <%= f.text_field :stylish %> default is 0 +
            +
            + <%= f.label :section_context %> + <%= f.text_field :section_context %> +
            + +
            + <%= f.submit Spree.t('update') %> <%= f.button Spree.t('cancel'), type: :button, class: 'cancel'%> +
            + +<% end %> diff --git a/spree_theme/app/views/spree/products/index.html.erb b/spree_theme/app/views/spree/products/index.html.erb new file mode 100644 index 00000000..3d14795e --- /dev/null +++ b/spree_theme/app/views/spree/products/index.html.erb @@ -0,0 +1 @@ +<% #placeholder override original frontend %> diff --git a/spree_theme/app/views/spree/shared/_analytics.html.erb b/spree_theme/app/views/spree/shared/_analytics.html.erb index 9b4db553..e69de29b 100644 --- a/spree_theme/app/views/spree/shared/_analytics.html.erb +++ b/spree_theme/app/views/spree/shared/_analytics.html.erb @@ -1,7 +0,0 @@ -<% if tracker = Spree::Tracker.current %> - <% if tracker.analytics_id.size== 32 %> - <%= render :partial=>'spree/shared/baidu_sync_analytics'%> - <% else %> - <%= render :partial=>'spree/shared/google_sync_analytics'%> - <% end %> -<% end %> diff --git a/spree_theme/app/views/spree/shared/_analytics_51la.html.erb b/spree_theme/app/views/spree/shared/_analytics_51la.html.erb new file mode 100644 index 00000000..15c405f1 --- /dev/null +++ b/spree_theme/app/views/spree/shared/_analytics_51la.html.erb @@ -0,0 +1,4 @@ +
            + + +
            \ No newline at end of file diff --git a/spree_theme/app/views/spree/shared/_baidu_sync_analytics.html.erb b/spree_theme/app/views/spree/shared/_baidu_sync_analytics.html.erb deleted file mode 100644 index 32600a3f..00000000 --- a/spree_theme/app/views/spree/shared/_baidu_sync_analytics.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -<% if tracker = Spree::Tracker.current %> - - <%= javascript_tag do %> - var _hmt = _hmt || []; - (function() { - var hm = document.createElement("script"); - hm.src = "//hm.baidu.com/hm.js?<%= tracker.analytics_id %>"; - var s = document.getElementsByTagName("script")[0]; - s.parentNode.insertBefore(hm, s); - })(); - <% end %> -<% end %> diff --git a/spree_theme/app/views/spree/shared/_dialog.js.erb b/spree_theme/app/views/spree/shared/_dialog.js.erb index 0d7c4830..6652f082 100644 --- a/spree_theme/app/views/spree/shared/_dialog.js.erb +++ b/spree_theme/app/views/spree/shared/_dialog.js.erb @@ -1,14 +1,14 @@ -<% -dialog_content_container_selector = @theme.dialog_content_container_selector -target_view ||= params[:action] -target_view = 'edit' if ( params[:action]=='update' ) -target_view = 'new' if ( params[:action]=='create' ) +<% dialog = @theme.find_section_by_usage( 'dialog' ) %> +<% if dialog + dialog_content_selector = dialog.css_selector + " .dialog_content" + target_view ||= params[:action] + target_view = 'edit' if ( params[:action]=='update' ) + target_view = 'new' if ( params[:action]=='create' ) %> -$("<%=dialog_content_container_selector%>").html(<%== ( render :partial => target_view,:formats=>[:html] ).to_json %>) +$("<%== dialog_content_selector %>").html(<%== ( render :partial => target_view,:formats=>[:html] ).to_json %>) // append dialog into page-inner, apply global css on dialog. // global css a apply close button of dialog, it cause wrong size of dialog, show disable 'close' -$("#dialog").modal({appendTo:'#page-inner',closeHTML:'', escClose:true, overlayClose:true}); -$("#dialog a.cancel,#dialog button.cancel").click( function(){ - $.modal.close(); -}); +$("<%== dialog.css_selector %>").simplemodal({appendTo:'#page-inner',closeHTML:'',autoResize: true, escClose:true, overlayClose:true}); + +<% end %> diff --git a/spree_theme/app/views/spree/shared/_head.html.erb b/spree_theme/app/views/spree/shared/_head.html.erb index 1e584450..296a513b 100644 --- a/spree_theme/app/views/spree/shared/_head.html.erb +++ b/spree_theme/app/views/spree/shared/_head.html.erb @@ -3,7 +3,11 @@ <%== meta_data_tags %> -<%= canonical_tag %> -<%= favicon_link_tag image_path('favicon.ico') %> +<%= canonical_tag(current_store.url) %> +<%= favicon_link_tag 'favicon.ico' %> +<%= stylesheet_link_tag 'spree/frontend/all', media: 'screen' %> <%= csrf_meta_tags %> +<%= render 'spree/shared/paths' %> +<%= javascript_include_tag 'spree/frontend/all' %> <%= yield :head %> +<%= render 'spree/shared/translations' %> diff --git a/spree_theme/app/views/spree/shared/_login.html.erb b/spree_theme/app/views/spree/shared/_login.html.erb index 584ddae5..4d25057f 100644 --- a/spree_theme/app/views/spree/shared/_login.html.erb +++ b/spree_theme/app/views/spree/shared/_login.html.erb @@ -1,12 +1,12 @@ -<%= form_for Spree::User.new, :as => :spree_user, :url => spree.create_new_session_path do |f| %> +<%= form_for Spree::User.new, :as => :spree_user, :url => spree.create_new_session_path, :html=>{ :class=> 'fullwidth' } do |f| %>

            <%= f.label :email, Spree.t(:email) %>
            - <%= f.email_field :email, :class => 'title', :tabindex => 1 %> + <%= f.email_field :email, :class => 'form-control', :tabindex => 1, autofocus: true %>

            <%= f.label :password, Spree.t(:password) %>
            - <%= f.password_field :password, :class => 'title', :tabindex => 2 %> + <%= f.password_field :password, :class => 'form-control', :tabindex => 2 %>

            @@ -15,4 +15,4 @@

            <%= f.button Spree.t(:login), :class => 'button primary', :tabindex => 3 %>

            -<% end %> \ No newline at end of file +<% end %> diff --git a/spree_theme/app/views/spree/shared/_order_details.html.erb b/spree_theme/app/views/spree/shared/_order_details.html.erb new file mode 100644 index 00000000..fecd1012 --- /dev/null +++ b/spree_theme/app/views/spree/shared/_order_details.html.erb @@ -0,0 +1,41 @@ +<% # @theme - show order detail + # copy from spree/core/app/views/shared/_order_details.html.erb + # just removed bill_address +%> +
            + <% if order.has_step?("address") %> +
            +

            <%= Spree.t(:shipping_address) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:address) unless order.completed? %>

            + <%= render 'spree/shared/address', address: order.shipping_address %> +
            + + <% if @order.has_step?("delivery") %> +
            +

            <%= Spree.t(:shipments) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:delivery) unless order.completed? %>

            +
            + <% order.shipments.each do |shipment| %> +
            + + <%= Spree.t(:shipment_details, stock_location: shipment.stock_location.name, shipping_method: shipment.selected_shipping_rate.name) %> +
            + <% end %> +
            + <%= render 'spree/shared/shipment_tracking', order: order if order.shipped? %> +
            + <% end %> + <% end %> + + <% if order.has_step?("payment") %> +
            +

            <%= Spree.t(:payment_information) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:payment) unless order.completed? %>

            +
            + <% order.payments.valid.each do |payment| %> + <%= render payment %>
            + <% end %> +
            +
            + <% end %> +
            + +<%= render partial: 'spree/orders/order_items', locals: {order: order}%> + diff --git a/spree_theme/app/views/spree/shared/_sync_analytics.html.erb b/spree_theme/app/views/spree/shared/_sync_analytics.html.erb new file mode 100644 index 00000000..1c894905 --- /dev/null +++ b/spree_theme/app/views/spree/shared/_sync_analytics.html.erb @@ -0,0 +1,8 @@ +<% if tracker = Spree::Tracker.current %> + <% case tracker.engine %> + <% when /google/ %> + <%= render :partial=>'spree/shared/sync_analytics_google', :locals=>{:tracker=>tracker} %> + <% when /baidu/ %> + <%= render :partial=>'spree/shared/sync_analytics_baidu', :locals=>{:tracker=>tracker} %> + <% end %> +<% end %> diff --git a/spree_theme/app/views/spree/shared/_sync_analytics_baidu.html.erb b/spree_theme/app/views/spree/shared/_sync_analytics_baidu.html.erb new file mode 100644 index 00000000..e1305477 --- /dev/null +++ b/spree_theme/app/views/spree/shared/_sync_analytics_baidu.html.erb @@ -0,0 +1,13 @@ +<% if tracker = Spree::Tracker.current %> + + <%= javascript_tag do %> + var _hmt = _hmt || []; + (function() { + var hm = document.createElement("script"); + hm.setAttribute("data-turbolinks-track","reload"); + hm.src = "//hm.baidu.com/hm.js?<%= tracker.analytics_id %>"; + var s = document.getElementsByTagName("script")[0]; + s.parentNode.insertBefore(hm, s); + })(); + <% end %> +<% end %> diff --git a/spree_theme/app/views/spree/shared/_google_sync_analytics.html.erb b/spree_theme/app/views/spree/shared/_sync_analytics_google.html.erb similarity index 100% rename from spree_theme/app/views/spree/shared/_google_sync_analytics.html.erb rename to spree_theme/app/views/spree/shared/_sync_analytics_google.html.erb diff --git a/spree_theme/app/views/spree/shared/_theme_selection_for_nondesigner.html.erb b/spree_theme/app/views/spree/shared/_theme_selection_for_nondesigner.html.erb index ebdc69d4..9897c68e 100644 --- a/spree_theme/app/views/spree/shared/_theme_selection_for_nondesigner.html.erb +++ b/spree_theme/app/views/spree/shared/_theme_selection_for_nondesigner.html.erb @@ -1,11 +1,16 @@ -<% # notice: it is called by client page. @current_page is from theme tag - @template_themes = Spree::TemplateTheme.native.published -%> -
            -
            - <%=render :partial=>"theme_selection", :locals=>{:template_themes=>@template_themes, :selected=>@current_page.theme} %> -
            -
            -
            - 模板 -
            +<% if !@client_info.is_mobile %> + <% # notice: it is called by client page. @current_page is from theme tag + @template_themes = Spree::TemplateTheme.native.published + # first is designable now, hide theme_selection if @template_themes is blank + %> + <% if @template_themes.present? %> +
            +
            + <%=render :partial=>"theme_selection", :locals=>{:template_themes=>@template_themes, :selected=>@current_page.theme} %> +
            +
            +
            + <%= Spree.t( :template_themes) %> +
            + <% end %> +<% end %> diff --git a/spree_theme/app/views/spree/shared/_translations.html.erb b/spree_theme/app/views/spree/shared/_translations.html.erb new file mode 100644 index 00000000..413df5ce --- /dev/null +++ b/spree_theme/app/views/spree/shared/_translations.html.erb @@ -0,0 +1,8 @@ + diff --git a/spree_theme/app/views/spree/shared/_user_form.html.erb b/spree_theme/app/views/spree/shared/_user_form.html.erb new file mode 100644 index 00000000..6ba59f78 --- /dev/null +++ b/spree_theme/app/views/spree/shared/_user_form.html.erb @@ -0,0 +1,17 @@ +

            + <%= f.label :email, Spree.t(:email) %>
            + <%= f.email_field :email, :class => ' form-control' %> +

            +
            +

            + <%= f.label :password, Spree.t(:password) %>
            + <%= f.password_field :password, :class => ' form-control' %> +

            + +

            + <%= f.label :password_confirmation, Spree.t(:confirm_password) %>
            + <%= f.password_field :password_confirmation, :class => ' form-control' %> +

            +
            + +
            diff --git a/spree_theme/app/views/spree/shared/_user_form_bootstrap.html.erb b/spree_theme/app/views/spree/shared/_user_form_bootstrap.html.erb new file mode 100644 index 00000000..309a0f46 --- /dev/null +++ b/spree_theme/app/views/spree/shared/_user_form_bootstrap.html.erb @@ -0,0 +1,13 @@ +
            +
            + <%= f.email_field :email, :class => 'form-control', :placeholder => Spree.t(:email) %> +
            +
            +
            + <%= f.password_field :password, :class => 'form-control', :placeholder => Spree.t(:password) %> +
            +
            + <%= f.password_field :password_confirmation, :class => 'form-control', :placeholder => Spree.t(:confirm_password) %> +
            +
            +
            \ No newline at end of file diff --git a/spree_theme/app/views/spree/shared/_weixin_share.html.erb b/spree_theme/app/views/spree/shared/_weixin_share.html.erb new file mode 100644 index 00000000..c4e22d42 --- /dev/null +++ b/spree_theme/app/views/spree/shared/_weixin_share.html.erb @@ -0,0 +1,5 @@ +<%= javascript_tag defer: 'defer', data: { 'turbolinks-track'=>"reload" } do -%> + getstore = {}; + getstore.wx_cfg_params = <%== wechat_config_params(api:['onMenuShareTimeline','onMenuShareAppMessage']).to_json %> + getstore.share_data = <%== wechat_share_data(@current_page).to_json %> +<% end -%> diff --git a/spree_theme/app/views/spree/sites/_form.html.erb b/spree_theme/app/views/spree/sites/_form.html.erb new file mode 100644 index 00000000..23099edd --- /dev/null +++ b/spree_theme/app/views/spree/sites/_form.html.erb @@ -0,0 +1,28 @@ +
            +
            +
            +

            + <%= f.label :name %>
            + <%= f.text_field :name, :minlength=>4, :maxlength=>30, :required=>true %> +

            + +

            + <%= f.label :email, Spree.t(:email) %>
            + <%= f.email_field :email, size: 30 %> +

            + +

            + <%= f.label :password, Spree.t(:password) %>
            + <%= f.password_field :password, :minlength=>6, :maxlength=>30, :required=>"" %> +

            + + <% if @template_theme.present? %> +

            + <%= f.label :foreign_theme_id %>
            + <%= f.hidden_field :foreign_theme_id, :value=>@template_theme.id %> + <%= text_field_tag :template_theme_name, @template_theme.title, :readonly=>true, :size=>30 %> +

            + <% end %> +
            +
            +
            diff --git a/spree_theme/app/views/spree/sites/_new.html.erb b/spree_theme/app/views/spree/sites/_new.html.erb index db8afc68..1475f5a3 100644 --- a/spree_theme/app/views/spree/sites/_new.html.erb +++ b/spree_theme/app/views/spree/sites/_new.html.erb @@ -1,7 +1,7 @@ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @site } %>

            <%= Spree.t(:new_site) %>

            -<%= form_for @site, :url=>create_site_path, :remote=>true do |f| %> +<%= form_for @site, :url=>create_site_path, :remote=>true, :html=>{ :class=>'fullwidth'} do |f| %> <%= render :partial => "form", :locals => { :f => f } %>

            <%= f.button Spree.t(:create), :class => 'button', :type=>:submit %> <%= f.button Spree.t('actions.cancel'), :class => 'button cancel', :type=>:button %> @@ -11,21 +11,18 @@ + +

            + diff --git a/spree_theme/app/views/spree/template_themes/_new_admin_session.html.erb b/spree_theme/app/views/spree/template_themes/_new_admin_session.html.erb index 530bfabe..1d39eeef 100644 --- a/spree_theme/app/views/spree/template_themes/_new_admin_session.html.erb +++ b/spree_theme/app/views/spree/template_themes/_new_admin_session.html.erb @@ -1,16 +1,23 @@ -<% #show error message in dialog %> -<%= flash_messages if request.xhr? %> +<% # actions: new_admin_section/create_admin_session + #show error message in dialog, + %> -<%= form_for @user, :as => :spree_user, :url => create_admin_session_path, :method=>:post, :remote=>request.xhr? do |f| %> -
            -

            - <%= f.label :email, Spree.t(:email) %>
            - <%= f.email_field :email, :class => 'title', :tabindex => 1 %> -

            -

            - <%= f.label :password, Spree.t(:password) %>
            - <%= f.password_field :password, :class => 'title', :tabindex => 2 %> -

            +
            +
            +

            <%= Spree.t(:welcome_to_admin_login)%>

            +
            + <%= form_for Spree::User.new, :as => :spree_user, :url => create_admin_session_path, :method=>:post, :remote=>request.xhr? do |f| %> +
            + <%= flash_messages if request.xhr? %> +
            +

            <%= f.label :email, Spree.t(:email) %> + <%= f.email_field :email, :class => 'form-control', :tabindex => 1, autofocus: true %> +

            +

            <%= f.label :password, Spree.t(:password) %> + <%= f.password_field :password, :class => 'form-control', :tabindex => 2 %> +

            +
            +

            <%= f.submit Spree.t(:login), :class => 'btn btn-lg btn-success btn-block', :tabindex => 3 %>

            +
            + <% end %>
            -

            <%= f.submit Spree.t(:login), :class => 'button primary', :tabindex => 3 %>

            -<% end %> diff --git a/spree_theme/app/views/spree/template_themes/_upload_dialog_content.js.erb b/spree_theme/app/views/spree/template_themes/_upload_file_dialog.html.erb similarity index 100% rename from spree_theme/app/views/spree/template_themes/_upload_dialog_content.js.erb rename to spree_theme/app/views/spree/template_themes/_upload_file_dialog.html.erb diff --git a/spree_theme/app/views/spree/template_themes/new_admin_session.html.erb b/spree_theme/app/views/spree/template_themes/new_admin_session.html.erb index 9934cf36..a8ad1c3d 100644 --- a/spree_theme/app/views/spree/template_themes/new_admin_session.html.erb +++ b/spree_theme/app/views/spree/template_themes/new_admin_session.html.erb @@ -1 +1,3 @@ -<%= render :partial=>'new_admin_session'%> + diff --git a/spree_theme/app/views/spree/template_themes/under_construction.html.erb b/spree_theme/app/views/spree/template_themes/under_construction.html.erb index e962f784..9934cf36 100644 --- a/spree_theme/app/views/spree/template_themes/under_construction.html.erb +++ b/spree_theme/app/views/spree/template_themes/under_construction.html.erb @@ -1,14 +1 @@ -<%= form_for Spree::User.new, :as => :spree_user, :url => create_admin_session_path do |f| %> -
            -

            - <%= f.label :email, Spree.t(:email) %>
            - <%= f.email_field :email, :class => 'title', :tabindex => 1 %> -

            -

            - <%= f.label :password, Spree.t(:password) %>
            - <%= f.password_field :password, :class => 'title', :tabindex => 2 %> -

            -
            - -

            <%= f.submit Spree.t(:login), :class => 'button primary', :tabindex => 3 %>

            -<% end %> +<%= render :partial=>'new_admin_session'%> diff --git a/spree_theme/app/views/spree/user_mailer/load_sample.text.erb b/spree_theme/app/views/spree/user_mailer/load_sample.text.erb new file mode 100644 index 00000000..7dc853ab --- /dev/null +++ b/spree_theme/app/views/spree/user_mailer/load_sample.text.erb @@ -0,0 +1,4 @@ +<%= t('test_mailer.test_email.greeting') %> +================ + +<%= t 'successfully_created',:resource=> "#{t('site')}:#{@user.site.name}"%> diff --git a/spree_theme/app/views/spree/user_registrations/_new.html.erb b/spree_theme/app/views/spree/user_registrations/_new.html.erb index 48b9e685..0bb7a62c 100644 --- a/spree_theme/app/views/spree/user_registrations/_new.html.erb +++ b/spree_theme/app/views/spree/user_registrations/_new.html.erb @@ -2,21 +2,20 @@ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %> -
            -

            <%= Spree.t(:new_customer) %>

            - -
            - - <%= form_for Spree::User.new, :as => :spree_user, :url => spree.registration_path(@user) do |f| %> +
            +
            +

            <%= Spree.t(:new_customer) %>

            +
            +
            + <%= form_for Spree::User.new, :as => :spree_user, :url => spree.registration_path(@user),:html=>{ :class=> 'fullwidth' } do |f| %>
            <%= render :partial => 'spree/shared/user_form', :locals => { :f => f } %>

            <%= f.button Spree.t(:create), :class => 'button primary' %>

            <% end %> +
            <%= Spree.t(:or) %> <%= link_to Spree.t(:login_as_existing), spree.login_path %> - +
            +
            -
            - -
            \ No newline at end of file diff --git a/spree_theme/app/views/spree/user_registrations/_new_bootstrap.html.erb b/spree_theme/app/views/spree/user_registrations/_new_bootstrap.html.erb new file mode 100644 index 00000000..47181e44 --- /dev/null +++ b/spree_theme/app/views/spree/user_registrations/_new_bootstrap.html.erb @@ -0,0 +1,21 @@ +<% @body_id = 'signup' %> + +<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %> + +
            +
            +

            <%= Spree.t(:new_customer) %>

            +
            +
            + <%= form_for Spree::User.new, :as => :spree_user, :url => spree.registration_path(@user),:html=>{ :class=> 'fullwidth' } do |f| %> +
            + <%= render :partial => 'spree/shared/user_form_bootstrap', :locals => { :f => f } %> +

            <%= f.button Spree.t(:create), :class => 'button primary' %>

            +
            + <% end %> +
            + <%= Spree.t(:or) %> <%= link_to Spree.t(:login_as_existing), spree.login_path %> +
            +
            +
            +
            diff --git a/spree_theme/app/views/spree/user_sessions/_new.html.erb b/spree_theme/app/views/spree/user_sessions/_new.html.erb index 1468a5ac..acd14aad 100644 --- a/spree_theme/app/views/spree/user_sessions/_new.html.erb +++ b/spree_theme/app/views/spree/user_sessions/_new.html.erb @@ -1,15 +1,19 @@ -<% if flash[:alert] %> -
            <%= flash[:alert] %>
            -<% end %> <% @body_id = 'login' %> -
            -

            <%= Spree.t(:login_as_existing) %>

            -
            +
            +
            +

            <%= Spree.t(:login_as_existing) %>

            +
            +
            + <% if flash[:alert] %> +
            <%= flash[:alert] %>
            + <% end %> <%= render :partial => 'spree/shared/login' %> - <%= Spree.t(:or) %> - <%= link_to Spree.t(:create_a_new_account), spree.signup_path %> | - <%= link_to Spree.t(:forgot_password), spree.recover_password_path %> +
            + <%= Spree.t(:or) %> + <%= link_to Spree.t(:create_a_new_account), spree.signup_path %> | + <%= link_to Spree.t(:forgot_password), spree.recover_password_path %> +
            +
            -
            \ No newline at end of file diff --git a/spree_theme/app/views/spree/user_sessions/_new_bootstrap.html.erb b/spree_theme/app/views/spree/user_sessions/_new_bootstrap.html.erb new file mode 100644 index 00000000..acd14aad --- /dev/null +++ b/spree_theme/app/views/spree/user_sessions/_new_bootstrap.html.erb @@ -0,0 +1,19 @@ + +<% @body_id = 'login' %> +
            +
            +

            <%= Spree.t(:login_as_existing) %>

            +
            +
            + <% if flash[:alert] %> +
            <%= flash[:alert] %>
            + <% end %> + <%= render :partial => 'spree/shared/login' %> +
            + <%= Spree.t(:or) %> + <%= link_to Spree.t(:create_a_new_account), spree.signup_path %> | + <%= link_to Spree.t(:forgot_password), spree.recover_password_path %> +
            +
            +
            +
            diff --git a/spree_theme/app/views/spree/users/_edit.html.erb b/spree_theme/app/views/spree/users/_edit.html.erb index 9963cd9a..ddeb39e1 100644 --- a/spree_theme/app/views/spree/users/_edit.html.erb +++ b/spree_theme/app/views/spree/users/_edit.html.erb @@ -1,11 +1,15 @@ -<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %> - -

            <%= Spree.t(:editing_user) %>

            - -<%= form_for @user, :url => spree.user_path(@user), :method => :put, :remote=>true do |f| %> - <%= render :partial => 'spree/shared/user_form', :locals => { :f => f } %> -

            - <%= f.button Spree.t(:update), :class => 'button primary' %> - <%= f.button Spree.t(:cancel), :class => 'cancel button primary',:type => 'button' %> -

            -<% end %> \ No newline at end of file +
            +
            +

            <%= Spree.t(:editing_user) %>

            +
            +
            + <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %> + <%= form_for @user, :url => spree.user_path(@user), :method => :put, :remote=>true, :html=>{ :class=> 'fullwidth' } do |f| %> + <%= render :partial => 'spree/shared/user_form', :locals => { :f => f } %> +

            + <%= f.button Spree.t(:update), :class => 'button primary' %> + <%= f.button Spree.t(:cancel), :class => 'cancel button primary',:type => 'button' %> +

            + <% end %> +
            +
            diff --git a/spree_theme/app/views/themes/_grouped_option_values_for_mobile.html b/spree_theme/app/views/themes/_grouped_option_values_for_mobile.html new file mode 100644 index 00000000..f7c5b26f --- /dev/null +++ b/spree_theme/app/views/themes/_grouped_option_values_for_mobile.html @@ -0,0 +1,12 @@ +<% if product.has_variants? %> +
            +
            Spree.t(:select) + <%= render partial: 'themes/option_type_list' +
            +
            +
            +
            + <%= render partial: 'themes/grouped_option_values_selector' +
            +
            +<% end%> diff --git a/spree_theme/app/views/themes/_grouped_option_values_selector.html.erb b/spree_theme/app/views/themes/_grouped_option_values_selector.html.erb index c71185e7..012f43c8 100644 --- a/spree_theme/app/views/themes/_grouped_option_values_selector.html.erb +++ b/spree_theme/app/views/themes/_grouped_option_values_selector.html.erb @@ -1,4 +1,3 @@ -
            <% index = 0 %> <% product.grouped_option_values.each do |type, values| %>
            @@ -7,20 +6,20 @@ <% values.sort_by(&:position).each do |value| %> <% classes = ["option-value"] %> <% unless (variants = product.variants_for_option_value(value)).empty? %> - <% classes << ( Spree::Config[:allow_backorder_shipping] || product.total_on_hand > 0 ? "in-stock" : "out-of-stock" ) if index == 0 %> + <% classes << ( product.total_on_hand > 0 ? "in-stock" : "out-of-stock" ) if index == 0 %>
          • <%= link_to value.image.present? ? image_tag(value.image.attachment.url, :alt => value.presentation) : content_tag(:span, value.presentation), "javascript:void(0);", :title => value.presentation, :class => classes.join(" "), :rel => "#{type.id}-#{value.id}" %>
          • <% end %> <% end %>
          - <% index += 1 %> + <% index+=1 %> <% end %> - <%= hidden_field_tag "products[#{product.id}]", "", :class => "hidden variant_id" %> + <%= hidden_field_tag "variant_id", product.master.id, class: 'variant_id' %> -
          diff --git a/spree_theme/app/views/themes/_option_type_list.html.erb b/spree_theme/app/views/themes/_option_type_list.html.erb new file mode 100644 index 00000000..5098f939 --- /dev/null +++ b/spree_theme/app/views/themes/_option_type_list.html.erb @@ -0,0 +1,3 @@ +<% product.grouped_option_values.each do |type, values| %> +
          <%= type.presentation %>
          +<% end %> diff --git a/spree_theme/app/views/themes/_product_options_for_mobile.html b/spree_theme/app/views/themes/_product_options_for_mobile.html new file mode 100644 index 00000000..8fe69b93 --- /dev/null +++ b/spree_theme/app/views/themes/_product_options_for_mobile.html @@ -0,0 +1,29 @@ +<% index = 0 %> +<% product.grouped_option_values.each do |type, values| %> +
          +
          <%= type.presentation %>
          +
            + <% values.sort_by(&:position).each do |value| %> + <% classes = ["option-value"] %> + <% unless (variants = product.variants_for_option_value(value)).empty? %> + <% classes << ( product.total_on_hand > 0 ? "in-stock" : "out-of-stock" ) if index == 0 %> +
          • <%= link_to value.image.present? ? image_tag(value.image.attachment.url, :alt => value.presentation) : content_tag(:span, value.presentation), "javascript:void(0);", :title => value.presentation, :class => classes.join(" "), :rel => "#{type.id}-#{value.id}" %>
          • + <% end %> + <% end %> +
          +
          + <% index += 1 %> +<% end %> +<%= hidden_field_tag "variant_id", product.master.id, class: 'variant_id' %> + diff --git a/spree_theme/app/views/themes/_product_options_in_slide_style.html.erb b/spree_theme/app/views/themes/_product_options_in_slide_style.html.erb index dc1c667c..978a01ed 100644 --- a/spree_theme/app/views/themes/_product_options_in_slide_style.html.erb +++ b/spree_theme/app/views/themes/_product_options_in_slide_style.html.erb @@ -26,7 +26,7 @@ //, + container_selector: <%== ('.'+@template.section_selector).to_json -%>, options: <%== product.variant_options_hash.to_json -%>, track_inventory_levels: false, allow_backorders: true, diff --git a/spree_theme/app/views/themes/_product_search.html.erb b/spree_theme/app/views/themes/_product_search.html.erb new file mode 100644 index 00000000..ea3f1369 --- /dev/null +++ b/spree_theme/app/views/themes/_product_search.html.erb @@ -0,0 +1,4 @@ +<%= form_tag spree.products_path, :method => :get, class: "navbar-form" do %> + <%= search_field_tag :keywords, params[:keywords], :placeholder => Spree.t(:search), class: "form-control" %> + <%= button_tag Spree.t(:search), class: "btn btn-success" %> +<% end %> diff --git a/spree_theme/app/views/themes/_variants_and_option_values.html.erb b/spree_theme/app/views/themes/_variants_and_option_values.html.erb new file mode 100644 index 00000000..8e2090ad --- /dev/null +++ b/spree_theme/app/views/themes/_variants_and_option_values.html.erb @@ -0,0 +1,24 @@ +<% if product.variants_and_option_values(current_currency).any? %> +
          +
            + <% product.variants_and_option_values(current_currency).each_with_index do |variant, index| %> +
          • + <%= radio_button_tag "products[#{product.id}]", variant.id, index == 0, 'data-price' => variant.price_in(current_currency).money %> + <%= label_tag ['products', product.id, variant.id].join('_') do %> + + <%= variant_options variant %> + + <% if variant_price variant %> + <%= variant_price variant %> + <% end %> + <% unless variant.can_supply? %> + <%= Spree.t(:out_of_stock) %> + <% end %> + <% end %> +
          • + <% end%> +
          +
          +<% else %> +<%= hidden_field_tag "variant_id", product.master.id, class: 'variant_id' %> +<% end %> diff --git a/spree_theme/app/views/themes/orders/_list.html.erb b/spree_theme/app/views/themes/orders/_list.html.erb new file mode 100644 index 00000000..87030990 --- /dev/null +++ b/spree_theme/app/views/themes/orders/_list.html.erb @@ -0,0 +1,29 @@ +

          <%= Spree.t(:my_orders) %>

          +<% if @orders.present? %> + + + + + + + + + + + + + <% @orders.each do |order| %> + + + + + + + + + <% end %> + +
          <%= Spree.t(:order_numbers) %><%= Spree.t(:order_date) %><%= Spree.t(:status) %><%= Spree.t(:payment_state) %><%= Spree.t(:shipment_state) %><%= Spree.t(:total) %>
          <%= link_to order.number, order_url(order), :remote=>true %><%= l order.completed_at.to_date %><%= Spree.t(order.state).titleize %><%= Spree.t("payment_states.#{order.payment_state}") if order.payment_state %><%= Spree.t("shipment_states.#{order.shipment_state}") if order.shipment_state %><%= order.display_total %>
          +<% else %> +
          <%= Spree.t(:you_have_no_orders_yet) %>
          +<% end %> diff --git a/spree_theme/app/views/themes/posts/_next_post_title.html.erb b/spree_theme/app/views/themes/posts/_next_post_title.html.erb new file mode 100644 index 00000000..02e18f25 --- /dev/null +++ b/spree_theme/app/views/themes/posts/_next_post_title.html.erb @@ -0,0 +1,9 @@ +<% wrapped_post = @template.related_posts( @current_page, data_filter: Spree::PageLayout::DataSourceFilterEnum.next ).first %> +
          <%= Spree.t('post.next')%>
          +
          <% if wrapped_post.present? %> + <%= content_tag(:a, wrapped_post.title, { href: wrapped_post.path }) %> + <% else %> + <%= Spree.t('post.no_next')%> + <% end %> +
          +
          diff --git a/spree_theme/app/views/themes/posts/_previous_post_title.html.erb b/spree_theme/app/views/themes/posts/_previous_post_title.html.erb new file mode 100644 index 00000000..1d081c45 --- /dev/null +++ b/spree_theme/app/views/themes/posts/_previous_post_title.html.erb @@ -0,0 +1,9 @@ +<% wrapped_post = @template.related_posts( @current_page, data_filter: Spree::PageLayout::DataSourceFilterEnum.previous ).first %> +
          <%= Spree.t('post.previous')%>
          +
          <% if wrapped_post.present? %> + <%= content_tag(:a, wrapped_post.title, { href: wrapped_post.path }) %> + <% else %> + <%= Spree.t('post.no_previous')%> + <% end %> +
          +
          diff --git a/spree_theme/app/views/themes/sites/_quick_lunch.html.erb b/spree_theme/app/views/themes/sites/_quick_lunch.html.erb new file mode 100644 index 00000000..094ef360 --- /dev/null +++ b/spree_theme/app/views/themes/sites/_quick_lunch.html.erb @@ -0,0 +1,41 @@ +<% form_id = "site_form_#{DateTime.current.to_i}" %> +<%= form_for :site, :url => quick_lunch_path, :html=>{ :id=>form_id, :class=>"site_form fullwidth", :autocomplete=>"off"} do |f| %> +
          +
          + <%= f.text_field :name, :placeholder => Spree.t(:name_store), :minlength=>4, :maxlength=>24 %> +
          +
          +
          +
          +
          <%= f.email_field :email, :placeholder => Spree.t(:email) %>
          +
          +
          +
          +
          <%= f.password_field :password, :placeholder=>Spree.t(:password), :minlength=>6, :maxlength=>24 %>
          +
          +
          +
          <%= f.button Spree.t(:new_site), :class => 'button primary' %>
          +<% end %> + diff --git a/spree_theme/bin/rails b/spree_theme/bin/rails new file mode 100644 index 00000000..fc8e979c --- /dev/null +++ b/spree_theme/bin/rails @@ -0,0 +1,7 @@ +#!/usr/bin/env ruby + +ENGINE_ROOT = File.expand_path('../..', __FILE__) +ENGINE_PATH = File.expand_path('../../lib/spree_theme/engine', __FILE__) + +require 'rails/all' +require 'rails/engine/commands' diff --git a/spree_theme/config/locales/Post_zh-CN.yml b/spree_theme/config/locales/Post_zh-CN.yml new file mode 100644 index 00000000..a89b0a18 --- /dev/null +++ b/spree_theme/config/locales/Post_zh-CN.yml @@ -0,0 +1,115 @@ +zh-CN: + # Spree Hax! Missing translation... + image_settings_description: "Image Settings" + activerecord: + attributes: + blog: + model_name: Blog + name: Name + spree/post: + model_name: 文章 + title: 标题 + posted_at: 发布时间 + body: 正文 + cover: 图片 + live: 是否发布 + tags: 标签 + author: 作者 + post_category: + model_name: Category + name: Name + models: + spree/post: + one: 文章 + other: 文章 + spree/post_file: + one: 文件 + other: 文件 + + spree: + back_to_post_list: 回到文章列表 + post_list: 文章列表 + new_post: 新建文章 + edit_post: 编辑文章 + admin: + tab: + posts: 文章 + blogs: + new: + new_blog: New Blog + index: + new_blog: New Blog + post: + index: + post_list: 文章列表 + new: + new_post: 新建文章 + edit: + edit_post: 编辑文章 + post_products: + index: + add_related_product: Add Related Products + post_categories: + index: + manage_categories: Manage Categories + shared: + post_tabs: + post_details: Post Details + editing_post: Editing Post + related_products: Related Products + post_categories: Categories + comments: Comments + home: + title: Recent Posts + archive: Blog Archive + files: 文件 + new_post_file: 新建文件 + no_posts: No posts found! + no_post_files_found: 找不到任何文件! + posts: 文章 + post: + index: + blog: Blog + rss: Subscribe via RSS + archive: + title: Archive + where_to_next: Where to next? + go_to_store: "Shop the Store" + back_to_posts: "Back to the blog" + show: + tagged: Tagged + post_details: 文章详细 + post_files: 文件 + settings: + blogs: Manage Blogs + explain_blogs: Add or Edit Blogs for posts. + disqus: Disqus Settings + explain_disqus: Configure Disqus Comments for Blog. + disqus_shortname: Disqus Shortname + shared: + sidebar: + recent_posts: Recent Posts + categories: Categories + archives: Archive + view_archive: View Full Archive + tags: Tags + preview: + read_more: Read More + post_tabs: + editing_post: Editing Post + post_details: Post Details + related_products: Related Products + post_categories: Categories + subnav: + posts: Blog Posts + title: 标题 + + time: + formats: + date_time: "%x %X" + date_full: "%A %B %d, %Y" + detailed: "%A %B %d, %Y at %I:%M%p" + date_only: "%x" + date: + formats: + month_year: "%B %Y" diff --git a/spree_theme/config/locales/Site_zh-CN.yml b/spree_theme/config/locales/Site_zh-CN.yml new file mode 100644 index 00000000..52d47269 --- /dev/null +++ b/spree_theme/config/locales/Site_zh-CN.yml @@ -0,0 +1,36 @@ +--- +zh-CN: + site_account: Site Account + site_layout: Site Layout + site: 网络商店 + site_has_sample: 填充示例数据 + load_sample: + test_mailer: + test_email: + load_sample: 载入示例数据 + loading_sample: 系统正在为您加载示例产品信息, 请您登录注册使用的邮箱查询我们的邮件通知! + activerecord: + attributes: + spree/site: + name: 网店名字 + short_name: 二级域名 + domain: 网店域名 + created_at: 创建时间 + status: 状态 + foreign_theme_id: 模板 + spree/site/users: + email: 电子邮箱 + password: 密码 + password_confirmation: 密码 + spree: + admin_store: 管理商店 + errors: + messages: + could_not_create_site: 很抱歉,暂时无法创建商店,请稍候再试! + email_existing: 邮箱已经注册,请登录或更换邮箱! + name_store: 给您的商店取个名字 + new_site: 创建您的商店 + site: + index: 商店列表 + new: + site_successfully_opened: ! 您的商店'%{site_name}'创建成功了。 diff --git a/spree_theme/config/locales/en.yml b/spree_theme/config/locales/en.yml index c40b88f8..bd919011 100644 --- a/spree_theme/config/locales/en.yml +++ b/spree_theme/config/locales/en.yml @@ -1,60 +1,123 @@ en: +########################################### start for template ########################################### + views: + pagination: + first: "« first" + last: "last »" + next: next » + previous: ! '« previous' + truncate: ! '…' + theme: + product_image: + lightboxable: click to zoom in + +########################################### end for template ########################################### activerecord: attributes: spree/page_layout: + title: title + content_param: 内容参数 + css_class: CSS + content_css_class: 内容 CSS section_context: section context - data_source: data source - spree/template_file: - attachment_file_name: File name - attachment_content_type: type - attachment_file_size: File size + data_source: data source + data_source_param: 数据源参数 + spree/product: + theme_id: template + spree/store_logo: + attachment: LOGO + spree/store_favicon: + attachment: FAVICON + spree/taxon: + page_context: 页面内容类型 + replaced_by: 页面内容替换 + spree/template_file: + attachment_file_name: file name + attachment_content_type: file type + attachment_file_size: file size + theme_id: template + alt: alt + template_theme: template created_at: created at - spree/template_text: - name: Title + spree/template_text: + name: name slug: Slug - body: Body + body: body spree/template_theme: &template_theme_labels - title: Title + title: title slug: Slug - body: Body + section_root_id: 基础模块 + is_public: 是否公开 + models: + spree/page_layout: + one: module + other: module + spree/relation: + one: Relation + other: Relations + spree/relation_type: + one: Relation Type + other: Relation Types spree/template_file: one: template file - many: template files + other: template file spree/template_text: one: template text - many: template texts + other: template text spree/template_theme: - one: template theme - many: template themes + one: template + other: template helpers: label: template_theme: <<: *template_theme_labels - notice_messages: - template_theme_imported: 模板已经导入 - template_theme_not_imported: 模板无法导入 template_theme: Theme template_themes: Themes spree: actions: - import: 导入 + import: import + config_desktop_theme: config desktop template + config_mobile_theme: config mobile template admin: tab: - template_themes: 模板 - theme_texts: template materials - native_themes: 模板 - foreign_themes: 模板商店 + taxonomies: taxonomies + template_themes: template + theme_texts: themplate texts + native_themes: templates + foreign_themes: template shop + back_to_themes_list: back to template list + back_to_template_text_list: back to template text list back_to_template_file_list: back to template file list - back_to_themes_list: 回到模板列表 - back_to_template_text_list: 回到素材列表 - back_to_template_file_list: 回到素材列表 - select_taxon: 选择菜单 - select_template_image: 选择图片 - select_from_foreign_themes: 到模板商店选择模板 + china_address: + state_prompt: "Select State" + city_prompt: "Select City" + district_prompt: "Select District" + firstname: name + phone: phone + state: state + city: city + street: street + logo: LOGO + detail: Detail + favicon: FAVICON + new_relation_type: New Relation Type + related_product_discount: Related Product Discount + applies_to: Applies To + related_products: Related Products + add_related_product: Add Related Product + name_or_sku_short: Name or SKU + no_relation_types: You need to configure Relation Types before you can use this feature. + new_template_text: new template text + new_template_file: new template file + select_taxon: select a taxon + select_template_image: select template image + select_template_text: select template text + select_from_foreign_themes: 到模板商店选择模板 default_page: home: home login: login + logout: logout account: account signup: signup password: password @@ -62,28 +125,88 @@ en: detail: detail unknown: unknown checkout: checkout - thanks: thanks - taxonomy: taxonomy - default_shipping_category_name: Default + thanks: thanks for order + taxonomy: taxonomy + blog: blog + post: post + detail: detail + dialog_title: dialog title + global_taxons: global taxons + install_theme_with_site: install + is_taxon_clickable: clickable + preview_theme: preview + post: + next: next + previous: previous + no_previous: no previous + no_next: no next + notice_messages: + theme_imported: template imported + theme_released: template released + theme_not_imported: template could not be imported + page_layout: + data_source: 数据源 + please_select_to_config: 请选择需要配置的模块 + section_context: 模块适用页面 + specific_taxon: 模块适用个别页面 + config_resource: 模块可用素材 + section_context: + home: 首页 + list: 产品列表 + detail: 产品详细 + cart: 购物车 + account: 我的账户 + checkout: 支付页 + thanks: 谢谢购物 + signup: 用户注册 + login: 用户登录 + password: 密码管理 + blog: 文章列表 + post: 文章内容 + logout: 用户退出 + either: 任意页 + new_site: 注册开店 + section_data_source: + gpvs: 产品集合 + this_product: 当前选择产品 + taxon: 菜单 + blog: 文章集合 + post: 当前选择文章 + gpvs_theme: 模板集合 + previous_post: 当前选择文章-前一篇 + next_post: 当前选择文章-下一篇 template_file: - index: 图片素材 - new: 新建图片素材 - template_resource: template_resource + index: template files + new: new template file + template_resource: 网站素材 template_text: - static_pages: Static pages + index: template texts static_pages_desc: Manage static page with WYSIWYG editor. - new_page: New page editing_page: Editing page confirm_delete: Are you sure ? link: Link meta_title: Meta Title page_navigation_title: "Pages" + template_texts: Template text + template_themes: templates template_theme: - native_themes: native_themes - config: config - assign_resource: - page_layout: - context: - date_source: - - \ No newline at end of file + assign_resource: assign resource + assign: assign + new: new plain template + theme_foreign: temlate shop + theme_native: template + theme_applied: using + theme_apply: apply + theme_assign_taxon: assign taxon + theme_assign_image: assing image + theme_config: config template + theme_import: import template + theme_copy: copy template + theme_prepare_import: prepare + theme_is_imported: imported + theme_is_free: free + theme_release: release + unsupported_browser_add_favorite: browser does not support add favorite + unsupported_browser_set_home: browser does not support set home page + welcome_to_admin_login: Login to system + welcome_to_under_construction: it is underconstruction,please login to system diff --git a/spree_theme/config/locales/zh-CN.yml b/spree_theme/config/locales/zh-CN.yml index a61080ee..575ffe2d 100644 --- a/spree_theme/config/locales/zh-CN.yml +++ b/spree_theme/config/locales/zh-CN.yml @@ -1,28 +1,49 @@ zh-CN: -########################################### start for template ########################################### +########################################### start for template ########################################### views: pagination: first: "« 首页" - last: "末页 »" + last: "末页 »" next: 下一页 » previous: ! '« 上一页' truncate: ! '…' -########################################### end for template ########################################### + theme: + product_image: + lightboxable: 点击放大图片 + +########################################### end for template ########################################### activerecord: attributes: + spree/comment: + email: 电子邮箱 + cellphone: 手机 + comment: 评论 spree/page_layout: - section_context: section context - data_source: data source + title: 名称 + content_param: 内容参数 + css_class: 模块CSS + css_class_for_js: JS使用CSS + content_css_class: 内容使用CSS + section_context: 适用页面 + data_source: 数据源 + data_source_param: 数据源参数 + stylish: 样式 spree/product: theme_id: 销售模板 + spree/store_logo: + attachment: 文件名 + spree/store_favicon: + attachment: FAVICON spree/taxon: - page_context: 页面显示内容分类 - replaced_by: 页面显示内容置换 - spree/template_file: + page_context: 页面内容类型 + replaced_by: 页面内容替换 + spree/template_file: attachment_file_name: 文件名字 attachment_content_type: 类型 attachment_file_size: 文件大小 + theme_id: 所属模板 template_theme: 所属模板 + alt: Alt文本 created_at: 上传时间 spree/template_text: name: 用途 @@ -33,15 +54,18 @@ zh-CN: slug: Slug section_root_id: 基础模块 is_public: 是否公开 - + spree/store_logo: + attachment: logo models: spree/page_layout: one: 模块 other: 模块 spree/template_file: one: 模板图片 + other: 模板图片 spree/template_text: one: 模板素材 + other: 模板素材 spree/template_theme: one: 模板 other: 模板 @@ -54,6 +78,8 @@ zh-CN: spree: actions: import: 购买 + config_desktop_theme: 配置电脑模板 + config_mobile_theme: 配置手机模板 admin: tab: taxonomies: 分类 @@ -61,18 +87,30 @@ zh-CN: theme_texts: 模板素材 native_themes: 模板 foreign_themes: 模板商店 + alternative: alternative + attachment: 文件名 back_to_themes_list: 回到模板列表 back_to_template_text_list: 回到素材列表 back_to_template_file_list: 回到素材列表 china_address: + state_prompt: "省份/自治区" + city_prompt: "城市/地区/自治州" + district_prompt: "区/县" firstname: 收货人姓名 phone: 电话 state: 邮编 city: 所在地区 street: 详细地址 + comment_successfully_created: 谢谢您的反馈,我们已收到。 + comment_to_store: 亲爱的用户:欢迎您抢先体验“%{store_name}”,有任何意见和建议,或在使用过程中遇到问题,请告诉我们,我们会每天关注反馈信息,不断优化产品,为您提供更好的服务! + detail: 详细 + logo: LOGO + favicon: FAVICON + new_template_file: 新建图片素材 + new_template_text: 新建文本素材 select_taxon: 选择菜单 - select_template_image: 选择图片 - select_template_text: 选择文本 + select_template_image: 选择图片 + select_template_text: 选择文本 select_from_foreign_themes: 到模板商店选择模板 default_page: home: 首页 @@ -86,20 +124,31 @@ zh-CN: unknown: 未知 checkout: 付款 thanks: 恭喜!支付成功 - taxonomy: 缺省菜单 + taxonomy: 缺省菜单 blog: 文章列表 post: 文章内容 + search: 搜索 + detail: 详细 dialog_title: 对话框 global_taxons: 全局分类 + one_click_trial: 免费创建店铺 + post: + next: 下一篇 + previous: 上一篇 + no_previous: 没有了 + no_next: 没有了 notice_messages: theme_imported: 模板已经购买成功 - theme_not_imported: 模板无法导入 + theme_released: 模板已经发布成功 + theme_not_imported: 模板无法导入 page_layout: - data_source: 数据源 + data_source: 数据源 please_select_to_config: 请选择需要配置的模块 section_context: 模块适用页面 specific_taxon: 模块适用个别页面 config_resource: 模块可用素材 + post_detail: 详细信息 + related_case_in_taxon: 相关案例 section_context: home: 首页 list: 产品列表 @@ -117,25 +166,31 @@ zh-CN: either: 任意页 new_site: 注册开店 section_data_source: + none: 无 gpvs: 产品集合 this_product: 当前选择产品 - taxon: 菜单 + taxon: 分类 + taxonomy: 分类树 blog: 文章集合 post: 当前选择文章 gpvs_theme: 模板集合 + previous_post: 当前选择文章-前一篇 + next_post: 当前选择文章-下一篇 + related_products: 相关产品 + related_taxon: 相关分类 + store_comment: 请留下您对“%{store_name}”的意见和建议! template_file: index: 图片素材 - new: 新建图片素材 template_resource: 网站素材 template_text: index: 文本素材 static_pages_desc: Manage static page with WYSIWYG editor. - new: 新建文本素材 editing_page: Editing page confirm_delete: Are you sure ? link: Link meta_title: Meta Title - page_navigation_title: "Pages" + page_navigation_title: "Pages" + template_texts: '文本素材' template_themes: 模板 template_theme: assign_resource: 模板素材 @@ -157,7 +212,20 @@ zh-CN: install_theme_with_site: 安装 is_taxon_clickable: 分类是否可点击 theme_release: 发布 - welcome_to_admin_login: Dalianshops管理系统登录 + user_terminal: 用戶终端 + unsupported_browser_add_favorite: '您的浏览器不支持,请按 Ctrl+D 手动收藏!' + unsupported_browser_set_home: '抱歉,您所使用的浏览器无法完成此操作。您需要手动将【"+url+"】设置为首页。' + welcome_to_admin_login: 管理系统登录 welcome_to_under_construction: 网站建设中,请登录管理系统 - - \ No newline at end of file +#for comment + said: said + for: for + comments: Comments + comment: Comment + add_comment_type: Add Comment Type + comment_types: Comment Types + manage_comment_types: Manage comment types + applies_to: Applies To + new_comment_type: New Comment Type + editing_comment_type: Editing Comment Type + back_to_comment_types_list: Back to Comment Types List diff --git a/spree_theme/config/routes.rb b/spree_theme/config/routes.rb index 954454ae..27134955 100644 --- a/spree_theme/config/routes.rb +++ b/spree_theme/config/routes.rb @@ -1,5 +1,5 @@ -Spree::Core::Engine.routes.draw do - +Spree::Core::Engine.add_routes do + root :to => 'template_themes#page' # Add your extension routes here resources :template_themes do @@ -8,42 +8,122 @@ post :get_param_values # to support post data>1024byte post :update_param_value post :update_layout_tree + get :upload_file_dialog + post :upload_file_dialog end - collection do - get :preview # add function preview_template_themes_path - get 'upload_file_dialog' - post 'upload_file_dialog' + #get :preview # add function preview_template_themes_path + end + resources :page_layouts, only: [:edit,:update] do end end - + + namespace :api, :defaults => { :format => 'json' } do + namespace :v1 do + resource :wechat, only: [:show, :create] + + post 'auth/sign_in', :to => 'auth#sign_in' + #post 'auth/facebook', :to => 'auth#facebook' + #post 'auth/sign_up', :to => 'auth#sign_up' + end + end + + ############################################################################## + # mulit site + # one click get form to trial + get 'one_click_trial' => 'sites#one_click_trial', :as => :one_click_trial + # bottom signup form + post 'quick_lunch',:to => 'sites#quick_lunch', :as => :quick_lunch + # create site with template_theme + get 'new_site' => 'sites#new', :as => :new_site + post 'create_site' => 'sites#create', :as => :create_site + resources :sites, :only => [:show] + ############################################################################## + + namespace :admin do + resources :sites + resources :comments + resources :comment_types + resources :orders do + member do + get :comments + end + resources :shipments do + member do + get :comments + end + end + end + resources :relation_types + resources :products, only: [] do + get :related, on: :member + resources :relations do + collection do + post :update_positions + end + end + end + + end + + namespace :admin do + resources :posts do + resources :files, :controller => "post_files" do + collection do + post :update_positions + end + end + resources :products, :controller => "post_products" + resources :categories, :controller => "post_categories" + end + end + resources :comments, :only=>[:create] do collection do get :new_to_site end end - - get '(/:c(/:r))' => 'template_themes#page' , :c => /\d[^\/]*/ # :c, taxon_id-permalink, :r, product_id-permalink + + get '(/:c(/:r))' => 'template_themes#page' , :c => /\d[^\/]*/ # :c, taxon_id-friendly_id, :r, product_id-friendly_id get '/post/:c/:p' => 'template_themes#page', :c => /\d[^\/]*/ # - #match 'preview(/:c(/:r))' => 'template_themes#preview' #preview home - + get '/preview/:id' => 'template_themes#preview' #preview template_theme, for design shop only. + get '/under_construction', :to => 'template_themes#under_construction', :as => :under_construction post '/create_admin_session', :to => 'template_themes#create_admin_session', :as => :create_admin_session get '/new_admin_session', :to => 'template_themes#new_admin_session', :as => :new_admin_session post '/check_email', :to => 'users#check_email', :as => :check_email -end -Spree::Core::Engine.routes.draw do #api extension namespace :api, :defaults => { :format => 'json' } do - resources :taxons, :only => [:index] do - collection do - get :global - end - end + namespace :v1 do + resources :products, only: [] do + get :related, on: :member + resources :relations do + collection do + post :update_positions + end + end + end + + resources :template_themes do + member do + get :jstree + end + resources :page_layouts do + member do + get :jstree + end + end + end + resources :taxons, :only => [:index] do + collection do + get :global + end + end + end end - + namespace :admin do resources :template_texts resources :template_files @@ -54,16 +134,15 @@ end member do get :config_resource # assign resource(menu, image) - get :config_context # - get :config_data_source# - get :prepare_import # assign resource(menu, image) + get :config_context # + get :config_data_source# + #get :prepare_import # assign resource(menu, image) post :copy post :release - post :import - put :apply + patch :apply end - - resources :page_layout do + + resources :page_layouts do member do get :config_resource get :config_context diff --git a/spree_theme/db/extra_piece_params/131012_table_form.rb b/spree_theme/db/extra_piece_params/131012_table_form.rb deleted file mode 100644 index 0e079afd..00000000 --- a/spree_theme/db/extra_piece_params/131012_table_form.rb +++ /dev/null @@ -1,62 +0,0 @@ -=begin -include SpreeTheme::SectionPieceParamHelper - -#table title cell, border,padding -section_piece = Spree::SectionPiece.find 'root' - -table = {"editor_id"=>2, "class_name"=>"table", "pclass"=>"css", "param_category_id"=>78, "html_attribute_ids"=>"31,7,8,6"} -title = {"editor_id"=>2, "class_name"=>"table_title", "pclass"=>"css", "param_category_id"=>79, "html_attribute_ids"=>"31,32,7,8,6"} -cell = {"editor_id"=>2, "class_name"=>"cell", "pclass"=>"css", "param_category_id"=>80, "html_attribute_ids"=>"32,7,8,6"} - -create_section_piece_param( section_piece, table) -create_section_piece_param( section_piece, title) -create_section_piece_param( section_piece, cell) - -title = { "editor_id"=>3, "class_name"=>"table_title", "pclass"=>"css", "param_category_id"=>79, "html_attribute_ids"=>"2,3,4,5"} -cell = { "editor_id"=>3, "class_name"=>"cell", "pclass"=>"css", "param_category_id"=>80, "html_attribute_ids"=>"2,3,4,5"} -th = { "editor_id"=>3, "class_name"=>"th", "pclass"=>"css", "param_category_id"=>81, "html_attribute_ids"=>"2,3,4,5"} -td = { "editor_id"=>3, "class_name"=>"td", "pclass"=>"css", "param_category_id"=>82, "html_attribute_ids"=>"2,3,4,5"} -create_section_piece_param( section_piece, title) -create_section_piece_param( section_piece, cell) -create_section_piece_param( section_piece, th) -create_section_piece_param( section_piece, td) - -title = { "editor_id"=>4, "class_name"=>"table_title", "pclass"=>"css", "param_category_id"=>79, "html_attribute_ids"=>"24,27,49,53,54"} -cell = { "editor_id"=>4, "class_name"=>"cell", "pclass"=>"css", "param_category_id"=>80, "html_attribute_ids"=>"24,27,49,53,54"} -th = { "editor_id"=>4, "class_name"=>"th", "pclass"=>"css", "param_category_id"=>81, "html_attribute_ids"=>"24,27,49,53,54"} -td = { "editor_id"=>4, "class_name"=>"td", "pclass"=>"css", "param_category_id"=>82, "html_attribute_ids"=>"24,27,49,53,54"} -create_section_piece_param( section_piece, title) -create_section_piece_param( section_piece, cell) -create_section_piece_param( section_piece, th) -create_section_piece_param( section_piece, td) - - -form = {"editor_id"=>2, "class_name"=>"form", "pclass"=>"css", "param_category_id"=>39, "html_attribute_ids"=>"31,7,8,6"} -title = {"editor_id"=>2, "class_name"=>"form_title", "pclass"=>"css", "param_category_id"=>40, "html_attribute_ids"=>"31,32,7,8,6"} -label = {"editor_id"=>2, "class_name"=>"label", "pclass"=>"css", "param_category_id"=>42, "html_attribute_ids"=>"31,32,7,8,6"} -error = {"editor_id"=>2, "class_name"=>"form_error", "pclass"=>"css", "param_category_id"=>43, "html_attribute_ids"=>"31,32,7,8,6"} -input = { "editor_id"=>2, "class_name"=>"input", "pclass"=>"css", "param_category_id"=>44, "html_attribute_ids"=>"21,15,31,32,7,8,6"} -create_section_piece_param( section_piece, form) -create_section_piece_param( section_piece, title) -create_section_piece_param( section_piece, label) -create_section_piece_param( section_piece, error) -create_section_piece_param( section_piece, input) - -title = { "editor_id"=>3, "class_name"=>"form_title", "pclass"=>"css", "param_category_id"=>40, "html_attribute_ids"=>"2,3,4,5"} -label = {"editor_id"=>3, "class_name"=>"label", "pclass"=>"css", "param_category_id"=>42, "html_attribute_ids"=>"2,3,4,5"} -error = {"editor_id"=>3, "class_name"=>"form_error", "pclass"=>"css", "param_category_id"=>43, "html_attribute_ids"=>"2,3,4,5"} -input = { "editor_id"=>3, "class_name"=>"input", "pclass"=>"css", "param_category_id"=>44, "html_attribute_ids"=>"2,3,4,5"} -create_section_piece_param( section_piece, title) -create_section_piece_param( section_piece, label) -create_section_piece_param( section_piece, error) -create_section_piece_param( section_piece, input) - -title = { "editor_id"=>4, "class_name"=>"form_title", "pclass"=>"css", "param_category_id"=>40, "html_attribute_ids"=>"24,27,49,53,54"} -label = {"editor_id"=>4, "class_name"=>"label", "pclass"=>"css", "param_category_id"=>42, "html_attribute_ids"=>"24,27,49,53,54"} -error = {"editor_id"=>4, "class_name"=>"form_error", "pclass"=>"css", "param_category_id"=>43, "html_attribute_ids"=>"24,27,49,53,54"} -input = { "editor_id"=>4, "class_name"=>"input", "pclass"=>"css", "param_category_id"=>44, "html_attribute_ids"=>"24,27,49,53,54"} -create_section_piece_param( section_piece, title) -create_section_piece_param( section_piece, label) -create_section_piece_param( section_piece, error) -create_section_piece_param( section_piece, input) -=end \ No newline at end of file diff --git a/spree_theme/db/extra_piece_params/131018_link.rb b/spree_theme/db/extra_piece_params/131018_link.rb deleted file mode 100644 index 9d12afd3..00000000 --- a/spree_theme/db/extra_piece_params/131018_link.rb +++ /dev/null @@ -1,22 +0,0 @@ -=begin - -include SpreeTheme::SectionPieceParamHelper - -#table title cell, border,padding -section_piece = Spree::SectionPiece.find 'root' - - -a = { "editor_id"=>2, "class_name"=>"a", "pclass"=>"css", "param_category_id"=>11, "html_attribute_ids"=>"31,32,7,8,6"} -create_section_piece_param( section_piece, a) - -a = { "editor_id"=>3, "class_name"=>"a", "pclass"=>"css", "param_category_id"=>11, "html_attribute_ids"=>"2,3,4,5"} -a_h = { "editor_id"=>3, "class_name"=>"a_h", "pclass"=>"css", "param_category_id"=>12, "html_attribute_ids"=>"2,3,4,5"} - -create_section_piece_param( section_piece, a) -create_section_piece_param( section_piece, a_h) - -a = { "editor_id"=>4, "class_name"=>"a", "pclass"=>"css", "param_category_id"=>11, "html_attribute_ids"=>"24,27,49,53,54"} -a_h = { "editor_id"=>4, "class_name"=>"a_h", "pclass"=>"css", "param_category_id"=>12, "html_attribute_ids"=>"24,27,49,53,54"} -create_section_piece_param( section_piece, a) -create_section_piece_param( section_piece, a_h) -=end \ No newline at end of file diff --git a/spree_theme/db/migrate/20110614100723_spree_theme_tables.rb b/spree_theme/db/migrate/20110614100723_spree_theme_tables.rb deleted file mode 100644 index f1e7ac3b..00000000 --- a/spree_theme/db/migrate/20110614100723_spree_theme_tables.rb +++ /dev/null @@ -1,205 +0,0 @@ -class SpreeThemeTables < ActiveRecord::Migration - def self.up - - # This table contains the css specification, copied from the w3 website. - # Ok, it also includes html elment attributes, but only the ones that can't be put in css - # Users do not use this table. - create_table :spree_html_attributes, :force=>true do |t| - t.column :title, :string, :null => false, :default => "" # the name of the property - #title is for user, css_name is for css attribute name - t.column :css_name, :string, :null => false, :default => "" # the name of the property - t.column :slug, :string, :null => false, :default => "" # the name of the property - t.column :pvalues, :string, :null => false, :default => "" # comma separate list of possible values to choose from - # or 0?=see below, 1=length, 2=x y, 4=t r b l, - t.column :pvalues_desc, :string, :null => false, :default => "" # comma separate list of possible values to choose from - t.column :punits, :string, :null => false, :default => "" # the units applicable to the property if pvalues contains l1 or l2, can be %,in,cm,mm,em,ex,pt,pc,px (l=all except %). Notation is: [l|%|f][+in,cm,mm,em,ex,pt,pc,px] - t.column :neg_ok, :boolean, :null => false, :default => false - t.column :default_value, :integer, :limit => 2, :null => false, :default => 0 - # index in pvalues of the default pvalue (it seems always 0, i.e. the first pvalue). - # If pvalues is manual entry only then the default manual entry. 0 = we define the default value - t.column :pvspecial, :string, :limit => 7, :null => false, :default => "" # xy, trbl or inherit - end - add_index :spree_html_attributes, :slug, :unique => true - - create_table :spree_section_pieces, :force=>true do |t| #sqlite do not support :options=>'ENGINE=InnoDB DEFAULT CHARSET=ascii', - t.column :title, :string, :limit => 100, :null => false - t.column :slug, :string, :limit => 100, :null => false - t.column :html, :string, :limit => 12000, :null => false, :default => "" - t.column :css, :string, :limit => 8000, :null => false, :default => "" - t.column :js, :string, :limit => 60, :null => false, :default => "" # a comma separated list of js ids - # indicate it is html root or not? - t.column :is_root, :boolean, :null => false, :default => false - t.column :is_container, :boolean, :null => false, :default => false - t.column :is_selectable, :boolean, :null => false, :default => false - # could assign kinds of resources to this piece - t.column :resources, :string, :limit => 20, :null => false, :default => "" - # usage of section piece, dialog| a template need a way to find dialog section - t.column :usage, :string, :limit => 10, :null => false, :default => "" - # load by fixture, created_at,updated_at maybe nil - t.column :created_at, :datetime - t.column :updated_at, :datetime - end - add_index :spree_section_pieces, :slug, :unique => true - - # it is category of section_piece_params - # 1. we want to expand&collapse - # 2. we want to get a group of param_values, ex. general position : width, height,outer_margin, margin, border, padding. - create_table :spree_param_categories, :force=>true do |t| - t.column "editor_id", :integer, :limit => 3, :null => false, :default => 0 - t.column "position", :integer, :limit => 3, :null => true, :default => 0 - t.column "slug", :string, :limit => 200, :null => false, :default => "" - t.column "is_enabled", :boolean, :null => false, :default => true - t.timestamps - end - - create_table :spree_editors, :force=>true do |t| - t.column "slug", :string, :limit => 200, :null => false, :default => "" - t.timestamps - end - - # section_piece composite of section - create_table :spree_sections, :force=>true do |t| - t.column "site_id", :integer, :limit => 3, :null => false, :default => 0 - t.column "root_id", :integer, :limit => 3 - t.column "parent_id", :integer, :limit => 3 - t.column "lft", :integer, :limit => 2, :null => false, :default => 0 - t.column "rgt", :integer, :limit => 2, :null => false, :default => 0 - t.column "title", :string, :limit => 64, :null => false, :default => "" - t.column "slug", :string, :limit => 64, :null => false, :default => "" - t.column "section_piece_id", :integer, :limit => 3, :null => true, :default => 0 - t.column "section_piece_instance", :integer, :limit => 2, :null => true, :default => 0 - t.column "is_enabled", :boolean, :null => false, :default => true - t.column "global_events", :string, :limit => 200, :null => false, :default => "" - t.column "subscribed_global_events", :string, :limit => 200, :null => false, :default => "" - #comma seperated event, ex. page_layout_fixed - end - #section instance composite of layout - create_table :spree_page_layouts, :force=>true do |t| - t.column "site_id", :integer, :limit => 3, :null => true, :default => 0 - t.column "root_id", :integer, :limit => 3#, :null => true, :default => :null - t.column "parent_id", :integer, :limit => 3#, :null => true, :default => :null - #default value is null, acts_as_nested_set required - t.column "lft", :integer, :limit => 2, :null => false, :default => 0 - t.column "rgt", :integer, :limit => 2, :null => false, :default => 0 - t.column "title", :string, :limit => 200, :null => false, :default => "" - t.column "slug", :string, :limit => 200, :null => false, :default => "" - t.column "section_id", :integer, :limit => 3, :null => true, :default => 0 - # id of sections, only root could be here. - t.column "section_instance", :integer, :limit => 2, :null => false, :default => 0 - t.column "section_context", :string, :limit => 64, :null => false, :default => "" - t.column "data_source", :string, :limit => 32, :null => false, :default => "" - t.column "data_filter", :string, :limit => 32, :null => false, :default => "" - t.column "is_enabled", :boolean, :null => false, :default => true - # this node is copy from another tree, ex. center area is a layout tree, we prebuilt it for user. - # value is layout tree's root_id. - t.column "copy_from_root_id", :integer, :null => false, :default => 0 - # it is only for root record, this layout tree is full html page. - # there are two kinds of layout tree full_html_page and part_html_page - t.column "is_full_html", :boolean, :null => false, :default => false - t.timestamps - - end - create_table :spree_section_piece_params, :force=>true do |t| - t.column :section_piece_id, :integer, :limit => 2, :null => false, :default => 0 - t.column :editor_id, :integer, :limit => 2, :null => false, :default => 0 - t.column :param_category_id, :integer, :limit => 2, :null => false, :default => 0 - t.column :position, :integer, :limit => 2, :null => false, :default => 0 - # get param_value order by ssection_piece_params.position - t.column :pclass, :string - # since a html style attribute also could in css, - # it tell where use the current param. possible value style,css,erb - t.column :class_name, :string, :null => false, :default => "" # if pclass == class, class_name = the name of the class - # if pclass == style, class_name = the name of the style - # if pclass == group, class_name = the name of the group of html attributes - # if pclass == db, class_name = the database object that this param represents, ex Menus, Groups, Products, ... - t.column :html_attribute_ids, :string, :limit => 1000, :null => false, :default => "" - t.column :param_conditions, :string, :limit => 1000#, :null => false, :default => "" - t.boolean :is_editable, :default=>true # some uneditable section piece param store the computed value. like 'inner_height' - - end - - create_table :spree_section_params do |t| - t.integer :section_root_id #it is section_root_id - t.integer :section_id - #t.integer :section_piece_id - #t.integer :section_piece_instance - t.integer :section_piece_param_id - t.string :default_value #, :null => false, :default => "" - t.boolean :is_enabled, :default=>true - t.string :disabled_ha_ids, :limit=>255, :null => false, :default => "" - t.timestamps - end - - # store the text used in the section. like pclass='txt' - create_table :spree_section_texts do |t| - t.string :lang - t.string :body - t.timestamps - end - - create_table :spree_template_themes, :force=>true do |t| - t.column :site_id, :integer, :null => true, :default => 0 # this is an id in the page_layouts table - t.column :page_layout_root_id, :integer, :null => false, :default => 0 # this is an id in the page_layouts table - t.column :release_id, :integer, :null => true, :default => 0 # this is an id in the page_layouts table - t.column :title, :string, :limit => 64, :null => false, :default => "" # the name of the property - t.column :slug, :string, :limit => 64, :null => false, :default => "" # the name of the property - # keep all assigned resource ids to the template, it is hash - # {:page_layout_id={:spree/template_file=[], :spree/taxon=[]}} - t.column :assigned_resource_ids, :string, :limit => 255, :null => false, :default => "" - #t.column :released_at, :datetime,:null => false, :default => "1970-01-01 00:00:00" - t.timestamps - end - - create_table :spree_template_releases do |t| - t.string :name,:limit => 24, :null => false - t.integer :theme_id, :null => false, :default => 0 - t.timestamps - end - - create_table :spree_param_values, :force=>true do |t| - t.column :page_layout_root_id, :integer, :limit => 2, :null => false, :default => 0 # this is an root layout id in the page_layouts table - # in param_value_event, we need get page_layout - t.column :page_layout_id, :integer, :limit => 2, :null => false, :default => 0 # this is an id in the page_layouts table - #section_param indicate section_piece instance. - #t.column :section_id, :integer, :limit => 2, :null => false, :default => 0 # this is an id in the sections table - #t.column :section_instance, :integer, :limit => 2, :null => false, :default => 0 # the instance of the section in the layout - t.column :section_param_id, :integer, :limit => 2, :null => false, :default => 0 - t.column :theme_id, :integer, :limit => 2, :null => false, :default => 0 - t.column :pvalue, :string, :limit => 4096 #, :null => false, :default => "" # the user chosen value of the corresponding default_page_param (can be utf8) - t.column :unset, :string #, :null => false, :default => false if true ignore the pvalue and do not generate an output for this param - t.column :computed_pvalue, :string #, :null => false, :default => "" #hash in yml - #t.column :preview_pvalue, :string, :null => false, :default => "" - # only used when pclass=themeimg, if not empty this is the name of the image to use during preview, when publishing set this to empty after renaming the file on disk. - #t.column :preview_unset, :string, :null => false, :default => false # if true ignore the pvalue and do not generate an output for this param - t.timestamps - end - create_table :spree_template_files do |t| - t.integer :theme_id - t.integer :attachment_width - t.integer :attachment_height - t.integer :attachment_file_size - t.string :attachment_content_type - t.string :attachment_file_name - t.datetime :attachment_updated_at - t.datetime :created_at - end - - end - - def self.down - drop_table :spree_html_attributes - drop_table :spree_section_pieces - drop_table :spree_param_categories - drop_table :spree_editors - drop_table :spree_sections - drop_table :spree_page_layouts - drop_table :spree_section_piece_params - drop_table :spree_section_params - drop_table :spree_section_texts - drop_table :spree_template_themes - drop_table :spree_template_releases - drop_table :spree_param_values - drop_table :spree_template_files - - end -end diff --git a/spree_theme/db/migrate/20120415215214_site_create_sites.rb b/spree_theme/db/migrate/20120415215214_site_create_sites.rb new file mode 100644 index 00000000..165e00c5 --- /dev/null +++ b/spree_theme/db/migrate/20120415215214_site_create_sites.rb @@ -0,0 +1,28 @@ +class SiteCreateSites < ActiveRecord::Migration + def self.up + # disable default site during migration, + # or default :site cause error before site_id added. + Spree::MultiSiteSystem.multi_site_context = 'admin_sites' + create_table :spree_sites do |t| + t.string :name + t.string :domain + t.integer :status, default: 0 + + t.string :layout + t.string :short_name + t.integer :parent_id + t.integer :rgt + t.integer :lft + + #add has_sample + t.boolean :has_sample, :default=>false + t.boolean :loading_sample, :default=>false + + t.timestamps + end + end + + def self.down + drop_table :spree_sites + end +end diff --git a/spree_theme/db/migrate/20120420163828_site_add_site_orders.rb b/spree_theme/db/migrate/20120420163828_site_add_site_orders.rb new file mode 100644 index 00000000..96863e04 --- /dev/null +++ b/spree_theme/db/migrate/20120420163828_site_add_site_orders.rb @@ -0,0 +1,26 @@ +class SiteAddSiteOrders < ActiveRecord::Migration + def self.up + #for history reason, + #spree's table have no prefix 'spree_' at beginning, + #later migration NamespaceTopLevelModels add prefix 'spree_' + #so here table_exists?(:taxonomies) is accurate name. + table_name = Spree::Zone.connection.table_exists?(:zones) ? :zones : :spree_zones + add_column table_name, :site_id, :integer + table_name = Spree::Taxonomy.connection.table_exists?(:taxonomies) ? :taxonomies : :spree_taxonomies + add_column table_name, :site_id, :integer + table_name = Spree::Order.connection.table_exists?(:orders) ? :orders : :spree_orders + add_column table_name, :site_id, :integer + table_name = Spree.user_class.connection.table_exists?(:users) ? :users : :spree_users + add_column table_name, :site_id, :integer + table_name = Spree::Product.connection.table_exists?(:products) ? :products : :spree_products + add_column table_name, :site_id, :integer + end + + def self.down + remove_column Spree::Zone.table_name, :site_id + remove_column Spree::Taxonomy.table_name, :site_id + remove_column Spree::Order.table_name, :site_id + remove_column Spree.user_class.table_name, :site_id + remove_column Spree::Product.table_name, :site_id + end +end diff --git a/spree_theme/db/migrate/20120813135747_site_add_site_taxons.rb b/spree_theme/db/migrate/20120813135747_site_add_site_taxons.rb new file mode 100644 index 00000000..3f74d981 --- /dev/null +++ b/spree_theme/db/migrate/20120813135747_site_add_site_taxons.rb @@ -0,0 +1,45 @@ +class SiteAddSiteTaxons < ActiveRecord::Migration + def up + + add_column :spree_taxons, :site_id, :integer + + add_column :spree_tax_categories, :site_id, :integer + + add_column :spree_shipping_categories, :site_id, :integer + + # ShippingMethod.all_available called :all, we have to add default_scope fix it. + # Zone has_many :shipping_methods, :dependent => :nullify, if zone is deleted, respect shipping_methods.zone_id is set to null + # for above two reasons, add site_id to shipping_method + + add_column :spree_shipping_methods, :site_id, :integer + + + add_column :spree_prototypes, :site_id, :integer + + add_column :spree_properties, :site_id, :integer + + add_column :spree_option_types, :site_id, :integer + + add_column :spree_assets, :site_id, :integer + + add_column :spree_preferences, :site_id, :integer, :default=>0 #site_id & key is index, unique, could not be null, or unique would not work. + + add_column :spree_trackers, :site_id, :integer + + end + + def down + remove_column Spree::Taxon.table_name, :site_id, :integer + remove_column Spree::TaxCategory.table_name, :site_id + remove_column Spree::ShippingCategory.table_name, :site_id + remove_column Spree::ShippingMethod.table_name, :site_id + remove_column Spree::Prototype.table_name, :site_id + remove_column Spree::Property.table_name, :site_id + remove_column Spree::OptionType.table_name, :site_id + remove_column Spree::Asset.table_name, :site_id + remove_column Spree::Preference.table_name, :site_id + remove_column :spree_trackers, :site_id + + end + +end diff --git a/spree_theme/db/migrate/20120818045742_site_last_add_site_payment_methods.rb b/spree_theme/db/migrate/20120818045742_site_last_add_site_payment_methods.rb new file mode 100644 index 00000000..89fc6ced --- /dev/null +++ b/spree_theme/db/migrate/20120818045742_site_last_add_site_payment_methods.rb @@ -0,0 +1,19 @@ +class SiteLastAddSitePaymentMethods < ActiveRecord::Migration + # in this file add site_id after all table complete. + def up + table_name = Spree::PaymentMethod.connection.table_exists?(:payment_methods) ? :payment_methods : :spree_payment_methods + add_column table_name, :site_id, :integer + table_name = Spree::LogEntry.connection.table_exists?(:log_entries) ? :log_entries : :spree_log_entries + add_column table_name, :site_id, :integer + table_name = Spree::StateChange.connection.table_exists?(:state_changes) ? :state_changes : :spree_state_changes + add_column table_name, :site_id, :integer + + end + + def down + remove_column Spree::PaymentMethod.table_name, :site_id + remove_column Spree::LogEntry.table_name, :site_id + remove_column Spree::StateChange.table_name, :site_id + + end +end diff --git a/spree_theme/db/migrate/20120819000000_site_last_create_delayed_jobs.rb b/spree_theme/db/migrate/20120819000000_site_last_create_delayed_jobs.rb new file mode 100644 index 00000000..325455b6 --- /dev/null +++ b/spree_theme/db/migrate/20120819000000_site_last_create_delayed_jobs.rb @@ -0,0 +1,22 @@ +class SiteLastCreateDelayedJobs < ActiveRecord::Migration + def self.up + create_table :delayed_jobs, :force => true do |table| + table.integer :priority, :default => 0 # Allows some jobs to jump to the front of the queue + table.integer :attempts, :default => 0 # Provides for retries, but still fail eventually. + table.text :handler # YAML-encoded string of the object that will do work + table.text :last_error # reason for last failure (See Note below) + table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future. + table.datetime :locked_at # Set when a client is working on this object + table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead) + table.string :locked_by # Who is working on this object (if locked) + table.string :queue # The name of the queue this job is in + table.timestamps + end + + add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority' + end + + def self.down + drop_table :delayed_jobs + end +end diff --git a/spree_theme/db/migrate/20121216093739_site_last_fix_unique_index.rb b/spree_theme/db/migrate/20121216093739_site_last_fix_unique_index.rb new file mode 100644 index 00000000..8df1ad47 --- /dev/null +++ b/spree_theme/db/migrate/20121216093739_site_last_fix_unique_index.rb @@ -0,0 +1,17 @@ +class SiteLastFixUniqueIndex < ActiveRecord::Migration + def change + if Spree::Site.table_exists? + if defined?(Spree::Auth) + remove_index :spree_users, :slug if index_exists?(:spree_users, :email) + add_index :spree_users, [:site_id,:email], :unique => true + end + + remove_index :spree_preferences, :key if index_exists?(:spree_preferences, :key) + add_index :spree_preferences, [:site_id,:key], :unique => true + + remove_index :spree_products, :slug if index_exists?(:spree_products, :slug) + add_index :spree_products, [:site_id, :slug], unique: true + + end + end +end diff --git a/spree_theme/db/migrate/20121218010101_site_add_products_global_taxons.rb b/spree_theme/db/migrate/20121218010101_site_add_products_global_taxons.rb new file mode 100644 index 00000000..270754b4 --- /dev/null +++ b/spree_theme/db/migrate/20121218010101_site_add_products_global_taxons.rb @@ -0,0 +1,11 @@ +class SiteAddProductsGlobalTaxons < ActiveRecord::Migration + # we want to display product in www.tld + # each product should have global taxon( taxon in www.tld ) + create_table :spree_products_global_taxons, :id => false do |t| + t.references :product + t.references :taxon + end + + add_index :spree_products_global_taxons, [:product_id], :name => 'index_spree_products_global_taxons_on_product_id' + add_index :spree_products_global_taxons, [:taxon_id], :name => 'index_spree_products_global_taxons_on_taxon_id' +end diff --git a/spree_theme/db/migrate/20121219135747_site_associate_store_with_site.rb b/spree_theme/db/migrate/20121219135747_site_associate_store_with_site.rb new file mode 100644 index 00000000..7d79d77e --- /dev/null +++ b/spree_theme/db/migrate/20121219135747_site_associate_store_with_site.rb @@ -0,0 +1,12 @@ +class SiteAssociateStoreWithSite < ActiveRecord::Migration + def change + add_column :spree_stores, :site_id, :integer, :default=>0 + Spree::Site.all.each{|site| + if site.stores.blank? + site.stores.create!( url: site.domain, name: site.name, code: site.short_name ) + end + } + end + + +end diff --git a/spree_theme/db/migrate/20121220135747_site_move_app_configuration_to_site.rb b/spree_theme/db/migrate/20121220135747_site_move_app_configuration_to_site.rb new file mode 100644 index 00000000..4fe2ae5f --- /dev/null +++ b/spree_theme/db/migrate/20121220135747_site_move_app_configuration_to_site.rb @@ -0,0 +1,18 @@ +class SiteMoveAppConfigurationToSite < ActiveRecord::Migration + def change + add_column :spree_sites, :allow_ssl_in_production, :boolean, :default=>false + add_column :spree_sites, :allow_ssl_in_development_and_test, :boolean, :default=>false + add_column :spree_sites, :allow_ssl_in_staging, :boolean, :default=>false + add_column :spree_sites, :check_for_spree_alerts, :boolean, :default=>false + + add_column :spree_sites, :display_currency, :boolean, :default=>false + add_column :spree_sites, :hide_cents, :boolean, :default=>false + + add_column :spree_sites, :currency, :string, :default=>'CNY' + add_column :spree_sites, :currency_symbol_position, :string, :default=>"before" + add_column :spree_sites, :currency_decimal_mark, :string, :default=>"." + add_column :spree_sites, :currency_thousands_separator, :string, :default=>"," + end + + +end diff --git a/spree_theme/db/migrate/20130214100723_spree_theme_tables.rb b/spree_theme/db/migrate/20130214100723_spree_theme_tables.rb new file mode 100644 index 00000000..71fa5950 --- /dev/null +++ b/spree_theme/db/migrate/20130214100723_spree_theme_tables.rb @@ -0,0 +1,206 @@ +class SpreeThemeTables < ActiveRecord::Migration + def self.up + + # This table contains the css specification, copied from the w3 website. + # Ok, it also includes html elment attributes, but only the ones that can't be put in css + # Users do not use this table. + create_table :spree_html_attributes, :force=>true do |t| + t.column :title, :string, :null => false, :default => "" # the name of the property + #title is for user, css_name is for css attribute name + t.column :css_name, :string, :null => false, :default => "" # the name of the property + t.column :slug, :string, :null => false, :default => "" # the name of the property + t.column :pvalues, :string, :null => false, :default => "" # comma separate list of possible values to choose from + # or 0?=see below, 1=length, 2=x y, 4=t r b l, + t.column :pvalues_desc, :string, :null => false, :default => "" # comma separate list of possible values to choose from + t.column :punits, :string, :null => false, :default => "" # the units applicable to the property if pvalues contains l1 or l2, can be %,in,cm,mm,em,ex,pt,pc,px (l=all except %). Notation is: [l|%|f][+in,cm,mm,em,ex,pt,pc,px] + t.column :neg_ok, :boolean, :null => false, :default => false + t.column :default_value, :integer, :limit => 2, :null => false, :default => 0 + # index in pvalues of the default pvalue (it seems always 0, i.e. the first pvalue). + # If pvalues is manual entry only then the default manual entry. 0 = we define the default value + t.column :pvspecial, :string, :limit => 7, :null => false, :default => "" # xy, trbl or inherit + end + add_index :spree_html_attributes, :slug, :unique => true + + create_table :spree_section_pieces, :force=>true do |t| #sqlite do not support :options=>'ENGINE=InnoDB DEFAULT CHARSET=ascii', + t.column :title, :string, :limit => 100, :null => false + t.column :slug, :string, :limit => 100, :null => false + t.column :html, :string, :limit => 12000, :null => false, :default => "" + t.column :css, :string, :limit => 8000, :null => false, :default => "" + t.column :js, :string, :limit => 60, :null => false, :default => "" # a comma separated list of js ids + # indicate it is html root or not? + t.column :is_root, :boolean, :null => false, :default => false + t.column :is_container, :boolean, :null => false, :default => false + t.column :is_selectable, :boolean, :null => false, :default => false + # could assign kinds of resources to this piece + t.column :resources, :string, :limit => 20, :null => false, :default => "" + # usage of section piece, dialog| a template need a way to find dialog section + t.column :usage, :string, :limit => 10, :null => false, :default => "" + # load by fixture, created_at,updated_at maybe nil + t.column :created_at, :datetime + t.column :updated_at, :datetime + end + add_index :spree_section_pieces, :slug, :unique => true + + # it is category of section_piece_params + # 1. we want to expand&collapse + # 2. we want to get a group of param_values, ex. general position : width, height,outer_margin, margin, border, padding. + create_table :spree_param_categories, :force=>true do |t| + t.column "editor_id", :integer, :limit => 3, :null => false, :default => 0 + t.column "position", :integer, :limit => 3, :null => true, :default => 0 + t.column "slug", :string, :limit => 200, :null => false, :default => "" + t.column "is_enabled", :boolean, :null => false, :default => true + t.timestamps null: false + end + + create_table :spree_editors, :force=>true do |t| + t.column "slug", :string, :limit => 200, :null => false, :default => "" + t.timestamps null: false + end + + # section_piece composite of section + create_table :spree_sections, :force=>true do |t| + t.column "site_id", :integer, :limit => 3, :null => false, :default => 0 + t.column "root_id", :integer, :limit => 3 + t.column "parent_id", :integer, :limit => 3 + t.column "lft", :integer, :limit => 2, :null => false, :default => 0 + t.column "rgt", :integer, :limit => 2, :null => false, :default => 0 + t.column "title", :string, :limit => 64, :null => false, :default => "" + t.column "slug", :string, :limit => 64, :null => false, :default => "" + t.column "section_piece_id", :integer, :limit => 3, :null => true, :default => 0 + t.column "section_piece_instance", :integer, :limit => 2, :null => true, :default => 0 + t.column "is_enabled", :boolean, :null => false, :default => true + t.column "global_events", :string, :limit => 200, :null => false, :default => "" + t.column "subscribed_global_events", :string, :limit => 200, :null => false, :default => "" + #comma seperated event, ex. page_layout_fixed + end + #section instance composite of layout + create_table :spree_page_layouts, :force=>true do |t| + t.column "site_id", :integer, :limit => 3, :null => true, :default => 0 + t.column "root_id", :integer, :limit => 3#, :null => true, :default => :null + t.column "parent_id", :integer, :limit => 3#, :null => true, :default => :null + #default value is null, acts_as_nested_set required + t.column "lft", :integer, :limit => 2, :null => false, :default => 0 + t.column "rgt", :integer, :limit => 2, :null => false, :default => 0 + t.column "title", :string, :limit => 200, :null => false, :default => "" + t.column "slug", :string, :limit => 200, :null => false, :default => "" + t.column "section_id", :integer, :limit => 3, :null => true, :default => 0 + # id of sections, only root could be here. + t.column "section_instance", :integer, :limit => 2, :null => false, :default => 0 + #comma seperated section context. ex. list,detail + t.column "section_context", :string, :limit => 64, :null => false, :default => "" + t.column "data_source", :string, :limit => 32, :null => false, :default => "" + t.column "data_filter", :string, :limit => 32, :null => false, :default => "" + t.column "is_enabled", :boolean, :null => false, :default => true + # this node is copy from another tree, ex. center area is a layout tree, we prebuilt it for user. + # value is layout tree's root_id. + t.column "copy_from_root_id", :integer, :null => false, :default => 0 + # it is only for root record, this layout tree is full html page. + # there are two kinds of layout tree full_html_page and part_html_page + t.column "is_full_html", :boolean, :null => false, :default => false + t.timestamps null: false + + end + create_table :spree_section_piece_params, :force=>true do |t| + t.column :section_piece_id, :integer, :limit => 2, :null => false, :default => 0 + t.column :editor_id, :integer, :limit => 2, :null => false, :default => 0 + t.column :param_category_id, :integer, :limit => 2, :null => false, :default => 0 + t.column :position, :integer, :limit => 2, :null => false, :default => 0 + # get param_value order by ssection_piece_params.position + t.column :pclass, :string + # since a html style attribute also could in css, + # it tell where use the current param. possible value style,css,erb + t.column :class_name, :string, :null => false, :default => "" # if pclass == class, class_name = the name of the class + # if pclass == style, class_name = the name of the style + # if pclass == group, class_name = the name of the group of html attributes + # if pclass == db, class_name = the database object that this param represents, ex Menus, Groups, Products, ... + t.column :html_attribute_ids, :string, :limit => 1000, :null => false, :default => "" + t.column :param_conditions, :string, :limit => 1000#, :null => false, :default => "" + t.boolean :is_editable, :default=>true # some uneditable section piece param store the computed value. like 'inner_height' + + end + + create_table :spree_section_params do |t| + t.integer :section_root_id #it is section_root_id + t.integer :section_id + #t.integer :section_piece_id + #t.integer :section_piece_instance + t.integer :section_piece_param_id + t.string :default_value #, :null => false, :default => "" + t.boolean :is_enabled, :default=>true + t.string :disabled_ha_ids, :limit=>255, :null => false, :default => "" + t.timestamps null: false + end + + # store the text used in the section. like pclass='txt' + create_table :spree_section_texts do |t| + t.string :lang + t.string :body + t.timestamps null: false + end + + create_table :spree_template_themes, :force=>true do |t| + t.column :site_id, :integer, :null => true, :default => 0 # this is an id in the page_layouts table + t.column :page_layout_root_id, :integer, :null => false, :default => 0 # this is an id in the page_layouts table + t.column :release_id, :integer, :null => true, :default => 0 # this is an id in the page_layouts table + t.column :title, :string, :limit => 64, :null => false, :default => "" # the name of the property + t.column :slug, :string, :limit => 64, :null => false, :default => "" # the name of the property + # keep all assigned resource ids to the template, it is hash + # {:page_layout_id={:spree/template_file=[], :spree/taxon=[]}} + t.column :assigned_resource_ids, :string, :limit => 255, :null => false, :default => "" + #t.column :released_at, :datetime,:null => false, :default => "1970-01-01 00:00:00" + t.timestamps null: false + end + + create_table :spree_template_releases do |t| + t.string :name,:limit => 24, :null => false + t.integer :theme_id, :null => false, :default => 0 + t.timestamps null: false + end + + create_table :spree_param_values, :force=>true do |t| + t.column :page_layout_root_id, :integer, :limit => 2, :null => false, :default => 0 # this is an root layout id in the page_layouts table + # in param_value_event, we need get page_layout + t.column :page_layout_id, :integer, :limit => 2, :null => false, :default => 0 # this is an id in the page_layouts table + #section_param indicate section_piece instance. + #t.column :section_id, :integer, :limit => 2, :null => false, :default => 0 # this is an id in the sections table + #t.column :section_instance, :integer, :limit => 2, :null => false, :default => 0 # the instance of the section in the layout + t.column :section_param_id, :integer, :limit => 2, :null => false, :default => 0 + t.column :theme_id, :integer, :limit => 2, :null => false, :default => 0 + t.column :pvalue, :string, :limit => 4096 #, :null => false, :default => "" # the user chosen value of the corresponding default_page_param (can be utf8) + t.column :unset, :string #, :null => false, :default => false if true ignore the pvalue and do not generate an output for this param + t.column :computed_pvalue, :string #, :null => false, :default => "" #hash in yml + #t.column :preview_pvalue, :string, :null => false, :default => "" + # only used when pclass=themeimg, if not empty this is the name of the image to use during preview, when publishing set this to empty after renaming the file on disk. + #t.column :preview_unset, :string, :null => false, :default => false # if true ignore the pvalue and do not generate an output for this param + t.timestamps null: false + end + create_table :spree_template_files do |t| + t.integer :theme_id + t.integer :attachment_width + t.integer :attachment_height + t.integer :attachment_file_size + t.string :attachment_content_type + t.string :attachment_file_name + t.datetime :attachment_updated_at + t.datetime :created_at + end + + end + + def self.down + drop_table :spree_html_attributes + drop_table :spree_section_pieces + drop_table :spree_param_categories + drop_table :spree_editors + drop_table :spree_sections + drop_table :spree_page_layouts + drop_table :spree_section_piece_params + drop_table :spree_section_params + drop_table :spree_section_texts + drop_table :spree_template_themes + drop_table :spree_template_releases + drop_table :spree_param_values + drop_table :spree_template_files + + end +end diff --git a/spree_theme/db/migrate/20140316193152_create_template_texts.rb b/spree_theme/db/migrate/20140316193152_create_template_texts.rb index 0b0e4603..06a15d76 100644 --- a/spree_theme/db/migrate/20140316193152_create_template_texts.rb +++ b/spree_theme/db/migrate/20140316193152_create_template_texts.rb @@ -5,7 +5,7 @@ def self.up t.string :name t.text :body t.string :slug - t.timestamps + t.timestamps null: false end add_index(:spree_template_texts, :slug) end diff --git a/spree_theme/db/migrate/20140814000001_add_data_source_param.rb b/spree_theme/db/migrate/20140814000001_add_data_source_param.rb index 104ee1a2..5dd38143 100644 --- a/spree_theme/db/migrate/20140814000001_add_data_source_param.rb +++ b/spree_theme/db/migrate/20140814000001_add_data_source_param.rb @@ -1,6 +1,10 @@ class AddDataSourceParam < ActiveRecord::Migration def change + # section param effect on content, we use data_source_param + # section param effect on css, we use content_param add_column :spree_page_layouts, :data_source_param, :string, :default => '' + # comma(',') seperated string, format: page_size,enable_pagination(enable if nil) + # add_column :spree_section_piece_params, :editable_condition, :string, :default => '' # editable_condition comma separated string, available values ['data_source:gpvs,data_source:blog'] end diff --git a/spree_theme/db/migrate/20140901070030_add_is_clickable.rb b/spree_theme/db/migrate/20140901070030_add_is_clickable.rb index ee735745..ff41f78c 100644 --- a/spree_theme/db/migrate/20140901070030_add_is_clickable.rb +++ b/spree_theme/db/migrate/20140901070030_add_is_clickable.rb @@ -12,7 +12,8 @@ def change # bit 2,3,4 indicate main_image size, 00: product, 01:large, 10: original, 11:small # 16 32 48 # bit 5,6,7 indicate thumbnail size 00: small, 01:large, 10: original, 11:product - # + # for section menu, bit 3,4 indicate 'hover effect' + # bit 3 two menu item exchange on hover end end diff --git a/spree_theme/db/migrate/20141102045742_add_foreign_theme_id.rb b/spree_theme/db/migrate/20141102045742_add_foreign_theme_id.rb index aa3db34b..f9fb05c5 100644 --- a/spree_theme/db/migrate/20141102045742_add_foreign_theme_id.rb +++ b/spree_theme/db/migrate/20141102045742_add_foreign_theme_id.rb @@ -1,7 +1,12 @@ class AddForeignThemeId < ActiveRecord::Migration - # in this file add site_id after all table complete. - def change - add_column :spree_sites, :foreign_theme_id, :integer, :null=>false, :default=>0 + # in this file add site_id after all table complete. + def change + # customer could select a theme when creating site. + if ActiveRecord::Base.connection.table_exists? 'spree_sites' + add_column :spree_sites, :foreign_theme_id, :integer, :null=>false, :default=>0 + else + add_column :spree_fake_websites, :foreign_theme_id, :integer, :null=>false, :default=>0 + end end end diff --git a/spree_theme/db/migrate/20141202082639_create_comments.rb b/spree_theme/db/migrate/20141202082639_create_comments.rb new file mode 100644 index 00000000..27670af9 --- /dev/null +++ b/spree_theme/db/migrate/20141202082639_create_comments.rb @@ -0,0 +1,31 @@ +class CreateComments < ActiveRecord::Migration + def self.up + create_table :spree_comments do |t| + t.string :title, :limit => 50, :default => "" + t.text :comment + t.references :commentable, :polymorphic => true + t.references :user + #for unlogged customer, we store email and cellphone for later touch + t.string :email, :limit => 50, :default => "" + t.string :cellphone, :limit => 50, :default => "" + t.integer :comment_type_id + t.timestamps null: false + end + + add_index :spree_comments, :commentable_type + add_index :spree_comments, :commentable_id + add_index :spree_comments, :user_id + + create_table :spree_comment_types do |t| + t.string :name + t.string :applies_to + t.timestamps null: false + end + + end + + def self.down + drop_table :spree_comments + drop_table :spree_comment_types + end +end diff --git a/spree_theme/db/migrate/20141222000001_support_mobile.rb b/spree_theme/db/migrate/20141222000001_support_mobile.rb new file mode 100644 index 00000000..0d8ddb0d --- /dev/null +++ b/spree_theme/db/migrate/20141222000001_support_mobile.rb @@ -0,0 +1,16 @@ +# some section piece is clickable, like taxon name, product name, post name, +# in some case, we don't want it to be clickable, ex. in product detail page, product name should not be clickable. +class SupportMobile < ActiveRecord::Migration + def change + if ActiveRecord::Base.connection.table_exists? 'spree_sites' + add_column :spree_sites, :support_mobile, :boolean, :null => false, :default => false + else + add_column :spree_fake_websites, :support_mobile, :boolean, :null => false, :default => false + end + # for terminal, terminal could be 0=pc, 1=mobile_phone, 2=pad, 3=tv ... + add_column :spree_template_themes, :for_terminal, :integer, :limit=>1, :null => false, :default => 0 + add_column :spree_sections, :for_terminal, :integer, :limit=>1, :null => false, :default => 0 + add_column :spree_section_pieces, :for_terminal, :integer, :limit=>1, :null => false, :default => 0 + add_column :spree_template_themes, :master_id, :integer, :null=>false, :default=>0 + end +end diff --git a/spree_theme/db/migrate/20150120074452_add_tooltips_to_taxons.rb b/spree_theme/db/migrate/20150120074452_add_tooltips_to_taxons.rb new file mode 100644 index 00000000..61c64226 --- /dev/null +++ b/spree_theme/db/migrate/20150120074452_add_tooltips_to_taxons.rb @@ -0,0 +1,6 @@ +# This migration comes from spree_auth (originally 20141002154641) +class AddTooltipsToTaxons < ActiveRecord::Migration + def change + add_column :spree_taxons, :tooltips, :string + end +end diff --git a/spree_theme/db/migrate/20150124000001_add_map_to_stores.rb b/spree_theme/db/migrate/20150124000001_add_map_to_stores.rb new file mode 100644 index 00000000..7d4a382e --- /dev/null +++ b/spree_theme/db/migrate/20150124000001_add_map_to_stores.rb @@ -0,0 +1,10 @@ +# This migration comes from spree_auth (originally 20141002154641) +class AddMapToStores < ActiveRecord::Migration + def change + add_column :spree_stores, :map_lat, :string, :length=>10 + add_column :spree_stores, :map_lng, :string, :length=>10 + add_column :spree_stores, :map_title, :string + add_column :spree_stores, :map_content, :string + + end +end diff --git a/spree_theme/db/migrate/20150126000030_add_depth_to_page_layouts.rb b/spree_theme/db/migrate/20150126000030_add_depth_to_page_layouts.rb new file mode 100644 index 00000000..98e1dfc0 --- /dev/null +++ b/spree_theme/db/migrate/20150126000030_add_depth_to_page_layouts.rb @@ -0,0 +1,20 @@ +# some section piece is clickable, like taxon name, product name, post name, +# in some case, we don't want it to be clickable, ex. in product detail page, product name should not be clickable. +class AddDepthToPageLayouts < ActiveRecord::Migration + + def up + if !Spree::PageLayout.column_names.include?('depth') + add_column :spree_page_layouts, :depth, :integer + + say_with_time 'Update depth on all page_layout' do + Spree::PageLayout.reset_column_information + Spree::PageLayout.all.each { |t| t.save } + end + end + end + + def down + remove_column :spree_taxons, :depth + end + +end diff --git a/spree_theme/db/migrate/20150127000001_add_summary_to_products.rb b/spree_theme/db/migrate/20150127000001_add_summary_to_products.rb new file mode 100644 index 00000000..d4cdff15 --- /dev/null +++ b/spree_theme/db/migrate/20150127000001_add_summary_to_products.rb @@ -0,0 +1,7 @@ +# some section piece is clickable, like taxon name, product name, post name, +# in some case, we don't want it to be clickable, ex. in product detail page, product name should not be clickable. +class AddSummaryToProducts < ActiveRecord::Migration + def change + add_column :spree_products, :summary, :string #ad + end +end diff --git a/spree_theme/db/migrate/20150210000030_add_css_class_to_page_layouts.rb b/spree_theme/db/migrate/20150210000030_add_css_class_to_page_layouts.rb new file mode 100644 index 00000000..08d29032 --- /dev/null +++ b/spree_theme/db/migrate/20150210000030_add_css_class_to_page_layouts.rb @@ -0,0 +1,8 @@ +class AddCssClassToPageLayouts < ActiveRecord::Migration + + def change + # support bootstrap css class + add_column :spree_page_layouts, :css_class, :string + end + +end diff --git a/spree_theme/db/migrate/20150303000001_add_last_released_at.rb b/spree_theme/db/migrate/20150303000001_add_last_released_at.rb new file mode 100644 index 00000000..17dfd7a1 --- /dev/null +++ b/spree_theme/db/migrate/20150303000001_add_last_released_at.rb @@ -0,0 +1,10 @@ +class AddLastReleasedAt < ActiveRecord::Migration + + def change + # get section by usage 'dialog', 'image', 'container' + add_column :spree_sections, :usage, :string, :limit=>24 + add_column :spree_template_themes, :last_released_at, :datetime + add_column :spree_template_themes, :last_changed_at, :datetime + end + +end diff --git a/spree_theme/db/migrate/20150312000001_add_tracker_name.rb b/spree_theme/db/migrate/20150312000001_add_tracker_name.rb new file mode 100644 index 00000000..988e771f --- /dev/null +++ b/spree_theme/db/migrate/20150312000001_add_tracker_name.rb @@ -0,0 +1,7 @@ +class AddTrackerName < ActiveRecord::Migration + + def change + add_column :spree_trackers, :name, :string, :limit=>24 + end + +end diff --git a/spree_theme/db/migrate/20150314000001_add_content_css_class_to_page_layouts.rb b/spree_theme/db/migrate/20150314000001_add_content_css_class_to_page_layouts.rb new file mode 100644 index 00000000..c0f8896a --- /dev/null +++ b/spree_theme/db/migrate/20150314000001_add_content_css_class_to_page_layouts.rb @@ -0,0 +1,8 @@ +class AddContentCssClassToPageLayouts < ActiveRecord::Migration + + def change + # support bootstrap css class, awesome-font. + add_column :spree_page_layouts, :content_css_class, :string + end + +end diff --git a/spree_theme/db/migrate/20150317000001_add_store_id_into_template_theme.rb b/spree_theme/db/migrate/20150317000001_add_store_id_into_template_theme.rb new file mode 100644 index 00000000..23edbb81 --- /dev/null +++ b/spree_theme/db/migrate/20150317000001_add_store_id_into_template_theme.rb @@ -0,0 +1,14 @@ +# This migration comes from spree_theme (originally 20150317000001) +class AddStoreIdIntoTemplateTheme < ActiveRecord::Migration + + def self.up + add_column :spree_template_themes, :store_id, :integer + Spree::TemplateTheme.all.each{|theme| + theme.update_attribute :store_id, Spree::Store.unscoped.where(site_id: theme.site_id).first.id + } + end + + def self.down + remove_column :spree_template_themes, :store_id + end +end diff --git a/spree_theme/db/migrate/20150330045742_add_store_designable.rb b/spree_theme/db/migrate/20150330045742_add_store_designable.rb new file mode 100644 index 00000000..cfb757fb --- /dev/null +++ b/spree_theme/db/migrate/20150330045742_add_store_designable.rb @@ -0,0 +1,9 @@ +class AddStoreDesignable < ActiveRecord::Migration + # add feature store disignable + def change + add_column :spree_stores, :designable, :boolean, default: false + SpreeTheme.site_class.where(:short_name=>['design','design2','design1']).each{|site| + site.stores.first.update_attribute :designable, true + } + end +end diff --git a/spree_theme/db/migrate/20150330045999_add_store_index_page.rb b/spree_theme/db/migrate/20150330045999_add_store_index_page.rb new file mode 100644 index 00000000..71d4d72b --- /dev/null +++ b/spree_theme/db/migrate/20150330045999_add_store_index_page.rb @@ -0,0 +1,12 @@ +class AddStoreIndexPage < ActiveRecord::Migration + # add feature store disignable + def change + add_column :spree_stores, :index_page_id, :integer, :null => false, :default => 0 + add_column :spree_stores, :theme_id, :integer, :null => false, :default => 0 + add_column :spree_stores, :template_release_id, :integer, :null => false, :default => 0 + + SpreeTheme.site_class.all.each{|site| + site.stores.first.update_attributes( index_page_id: site.index_page, theme_id: site.theme_id, template_release_id: site.template_release_id ) + } + end +end diff --git a/spree_theme/db/migrate/20150416000001_add_locale_into_template_theme.rb b/spree_theme/db/migrate/20150416000001_add_locale_into_template_theme.rb new file mode 100644 index 00000000..28ca53c1 --- /dev/null +++ b/spree_theme/db/migrate/20150416000001_add_locale_into_template_theme.rb @@ -0,0 +1,9 @@ +# template support locale +class AddLocaleIntoTemplateTheme < ActiveRecord::Migration + + def change + add_column :spree_template_themes, :locale, :string, :limit=>24 + add_column :spree_template_themes, :home_page_id, :integer + end + +end diff --git a/spree_theme/db/migrate/20150815070030_add_taxon_stylish.rb b/spree_theme/db/migrate/20150815070030_add_taxon_stylish.rb new file mode 100644 index 00000000..2c898c8b --- /dev/null +++ b/spree_theme/db/migrate/20150815070030_add_taxon_stylish.rb @@ -0,0 +1,12 @@ +class AddTaxonStylish < ActiveRecord::Migration + def change + # each store have a theme, + # each taxon belongs to the theme, + # each theme have several list style, by default it is 0 + # a taxon could select own style. + add_column :spree_taxons, :stylish, :integer, :null => false, :default => 0 + add_column :spree_page_layouts, :stylish, :integer,:null => false, :default => 0 + + end + +end diff --git a/spree_theme/db/migrate/20150825070030_add_theme_id_to_page_layout.rb b/spree_theme/db/migrate/20150825070030_add_theme_id_to_page_layout.rb new file mode 100644 index 00000000..f97d9ffb --- /dev/null +++ b/spree_theme/db/migrate/20150825070030_add_theme_id_to_page_layout.rb @@ -0,0 +1,27 @@ +class AddThemeIdToPageLayout < ActiveRecord::Migration + def change + # use template_theme_id as scope, instead of root_id + add_column :spree_page_layouts, :template_theme_id, :integer,:null => false, :default=>0 + add_column :spree_page_layouts, :copy_from_id, :integer,:null => false, :default=>0 + add_column :spree_template_themes, :copy_from_id, :integer,:null => false, :default=>0 + + Spree::TemplateTheme.all.each{|theme| + page_layout = Spree::PageLayout.where( id: theme.page_layout_root_id ).first + # original page_layout is missing + if page_layout.present? + if page_layout.site_id == theme.site_id + # do not use page_layotu.self_and_descendants, scope is changed to template_theme_id now. + Spree::PageLayout.where( root_id: theme.page_layout_root_id).update_all(template_theme_id: theme.id) + else + original_template_theme = Spree::TemplateTheme.where( page_layout_root_id: theme.page_layout_root_id).order('id').first + theme.update_attribute(:copy_from_id, original_template_theme.id ) + end + else + #fix missing page_layout_root_id, theme refer to deleted page_layout_id=1 + theme.update_attribute(:page_layout_root_id, Spree::TemplateTheme.first.page_layout_root_id ) + theme.update_attribute(:copy_from_id, Spree::TemplateTheme.first.id ) + end + } + end + +end diff --git a/spree_theme/db/migrate/20151017045742_add_store_is_public.rb b/spree_theme/db/migrate/20151017045742_add_store_is_public.rb new file mode 100644 index 00000000..2896bf97 --- /dev/null +++ b/spree_theme/db/migrate/20151017045742_add_store_is_public.rb @@ -0,0 +1,9 @@ +class AddStoreIsPublic < ActiveRecord::Migration + # add feature store disignable + def change + add_column :spree_stores, :is_public, :boolean, default: false + SpreeTheme.site_class.all.each{|site| + site.stores.first.update_attribute :is_public, true + } + end +end diff --git a/spree_theme/db/migrate/20151101000030_add_theme_media_width.rb b/spree_theme/db/migrate/20151101000030_add_theme_media_width.rb new file mode 100644 index 00000000..59969654 --- /dev/null +++ b/spree_theme/db/migrate/20151101000030_add_theme_media_width.rb @@ -0,0 +1,19 @@ +# some section piece is clickable, like taxon name, product name, post name, +# in some case, we don't want it to be clickable, ex. in product detail page, product name should not be clickable. +class AddThemeMediaWidth < ActiveRecord::Migration + def change + + # a template has some compatible media width. + create_table :spree_user_terminals do |t| + t.string :name,:limit=>64 + t.string :medium_width, :limit=>128 + end + + + add_reference( :spree_payment_methods, :user_terminal ) + add_reference( :spree_template_themes, :user_terminal ) + add_reference( :spree_orders, :user_terminal ) + + end + +end diff --git a/spree_theme/db/migrate/20151122000001_widen_resource_ids.rb b/spree_theme/db/migrate/20151122000001_widen_resource_ids.rb new file mode 100644 index 00000000..f7b2b440 --- /dev/null +++ b/spree_theme/db/migrate/20151122000001_widen_resource_ids.rb @@ -0,0 +1,5 @@ +class WidenResourceIds < ActiveRecord::Migration + def change + change_column :spree_template_themes, :assigned_resource_ids , :string, :limit => 2048, :null => false, :default => '' + end +end diff --git a/spree_theme/db/migrate/20151209000001_null_serializable_fields.rb b/spree_theme/db/migrate/20151209000001_null_serializable_fields.rb new file mode 100644 index 00000000..d57f2ef2 --- /dev/null +++ b/spree_theme/db/migrate/20151209000001_null_serializable_fields.rb @@ -0,0 +1,6 @@ +class NullSerializableFields < ActiveRecord::Migration + def change + # default value should be nil or value translatable to hash, default '' would cause ActiveRecord::SerializationTypeMismatch on 4.2.2 + change_column :spree_template_themes, :assigned_resource_ids , :string, :limit => 2048, :null => true, :default=> nil + end +end diff --git a/spree_theme/db/migrate/20160103000001_create_spree_assets.rb b/spree_theme/db/migrate/20160103000001_create_spree_assets.rb new file mode 100644 index 00000000..2093fdea --- /dev/null +++ b/spree_theme/db/migrate/20160103000001_create_spree_assets.rb @@ -0,0 +1,20 @@ +class CreateSpreeAssets < ActiveRecord::Migration + def change + create_table :spree_store_assets do |t| + t.references :viewable, :polymorphic => true + t.integer :attachment_width + t.integer :attachment_height + t.integer :attachment_file_size + t.integer :position + t.string :attachment_content_type + t.string :attachment_file_name + t.string :type, :limit => 75 + t.datetime :attachment_updated_at + t.text :alt + end + + add_index :spree_store_assets, [:viewable_id], :name => 'index_store_assets_on_viewable_id' + add_index :spree_store_assets, [:viewable_type, :type], :name => 'index_store_assets_on_viewable_type_and_type' + + end +end diff --git a/spree_theme/db/migrate/20160225070030_add_file_alt.rb b/spree_theme/db/migrate/20160225070030_add_file_alt.rb new file mode 100644 index 00000000..b31ee47e --- /dev/null +++ b/spree_theme/db/migrate/20160225070030_add_file_alt.rb @@ -0,0 +1,6 @@ +class AddFileAlt < ActiveRecord::Migration + def change + add_column :spree_template_files, :alt, :string + end + +end diff --git a/spree_theme/db/migrate/20160301090631_create_relation_types.rb b/spree_theme/db/migrate/20160301090631_create_relation_types.rb new file mode 100644 index 00000000..1fdbe3f9 --- /dev/null +++ b/spree_theme/db/migrate/20160301090631_create_relation_types.rb @@ -0,0 +1,14 @@ +class CreateRelationTypes < ActiveRecord::Migration + def self.up + create_table :relation_types do |t| + t.string :name + t.text :description + t.string :applies_to + t.timestamps null: false + end + end + + def self.down + drop_table :relation_types + end +end diff --git a/spree_theme/db/migrate/20160302092101_create_relations.rb b/spree_theme/db/migrate/20160302092101_create_relations.rb new file mode 100644 index 00000000..93b86ea2 --- /dev/null +++ b/spree_theme/db/migrate/20160302092101_create_relations.rb @@ -0,0 +1,14 @@ +class CreateRelations < ActiveRecord::Migration + def self.up + create_table :relations, force: true do |t| + t.references :relation_type + t.references :relatable, polymorphic: true + t.references :related_to, polymorphic: true + t.timestamps null: false + end + end + + def self.down + drop_table :relations + end +end diff --git a/spree_theme/db/migrate/20160324123835_add_discount_to_relation.rb b/spree_theme/db/migrate/20160324123835_add_discount_to_relation.rb new file mode 100644 index 00000000..40b963c6 --- /dev/null +++ b/spree_theme/db/migrate/20160324123835_add_discount_to_relation.rb @@ -0,0 +1,9 @@ +class AddDiscountToRelation < ActiveRecord::Migration + def self.up + add_column :relations, :discount_amount, :decimal, precision: 8, scale: 2, default: 0.0 + end + + def self.down + remove_column :relations, :discount_amount + end +end diff --git a/spree_theme/db/migrate/20160429044813_prefixing_tables_with_spree.rb b/spree_theme/db/migrate/20160429044813_prefixing_tables_with_spree.rb new file mode 100644 index 00000000..56f50569 --- /dev/null +++ b/spree_theme/db/migrate/20160429044813_prefixing_tables_with_spree.rb @@ -0,0 +1,6 @@ +class PrefixingTablesWithSpree < ActiveRecord::Migration + def change + rename_table :relation_types, :spree_relation_types + rename_table :relations, :spree_relations + end +end diff --git a/spree_theme/db/migrate/20160510004612_add_position_to_spree_relations.rb b/spree_theme/db/migrate/20160510004612_add_position_to_spree_relations.rb new file mode 100644 index 00000000..e2a8e540 --- /dev/null +++ b/spree_theme/db/migrate/20160510004612_add_position_to_spree_relations.rb @@ -0,0 +1,5 @@ +class AddPositionToSpreeRelations < ActiveRecord::Migration + def change + add_column :spree_relations, :position, :integer + end +end diff --git a/spree_theme/db/migrate/20160510004614_add_site_to_spree_relation_types.rb b/spree_theme/db/migrate/20160510004614_add_site_to_spree_relation_types.rb new file mode 100644 index 00000000..c8697961 --- /dev/null +++ b/spree_theme/db/migrate/20160510004614_add_site_to_spree_relation_types.rb @@ -0,0 +1,5 @@ +class AddSiteToSpreeRelationTypes < ActiveRecord::Migration + def change + add_column :spree_relation_types, :site_id, :integer + end +end diff --git a/spree_theme/db/migrate/20160530004614_add_data_source_order_by_to_page_layouts.rb b/spree_theme/db/migrate/20160530004614_add_data_source_order_by_to_page_layouts.rb new file mode 100644 index 00000000..8b19874a --- /dev/null +++ b/spree_theme/db/migrate/20160530004614_add_data_source_order_by_to_page_layouts.rb @@ -0,0 +1,5 @@ +class AddDataSourceOrderByToPageLayouts < ActiveRecord::Migration + def change + add_column :spree_page_layouts, :data_source_order_by, :string + end +end diff --git a/spree_theme/db/migrate/20170228070030_add_theme_name.rb b/spree_theme/db/migrate/20170228070030_add_theme_name.rb new file mode 100644 index 00000000..0e78b532 --- /dev/null +++ b/spree_theme/db/migrate/20170228070030_add_theme_name.rb @@ -0,0 +1,6 @@ +class AddThemeName < ActiveRecord::Migration + def change + add_column :spree_stores, :file_theme_name, :string + end + +end diff --git a/spree_theme/db/migrate/20171208185700_create_posts.rb b/spree_theme/db/migrate/20171208185700_create_posts.rb new file mode 100644 index 00000000..ec203ca1 --- /dev/null +++ b/spree_theme/db/migrate/20171208185700_create_posts.rb @@ -0,0 +1,19 @@ +class CreatePosts < ActiveRecord::Migration + def self.up + create_table :spree_posts do |t| + t.integer :site_id, :default => 0 + t.string :title, :required => true + t.string :permalink, :required => true + t.string :teaser + t.datetime :posted_at + t.text :body + t.string :author + t.boolean :live, :default => true + t.timestamps + end + end + + def self.down + drop_table :spree_posts + end +end \ No newline at end of file diff --git a/spree_theme/db/migrate/20171208185720_create_taxons_posts.rb b/spree_theme/db/migrate/20171208185720_create_taxons_posts.rb new file mode 100644 index 00000000..b93ee748 --- /dev/null +++ b/spree_theme/db/migrate/20171208185720_create_taxons_posts.rb @@ -0,0 +1,12 @@ +class CreateTaxonsPosts < ActiveRecord::Migration + def self.up + create_table :spree_posts_taxons, :id => false, :force => true do |t| + t.integer :post_id + t.integer :taxon_id + end + end + + def self.down + drop_table :spree_posts_taxons + end +end diff --git a/spree_theme/db/migrate/20171208185730_create_post_products.rb b/spree_theme/db/migrate/20171208185730_create_post_products.rb new file mode 100644 index 00000000..65fa3330 --- /dev/null +++ b/spree_theme/db/migrate/20171208185730_create_post_products.rb @@ -0,0 +1,13 @@ +class CreatePostProducts < ActiveRecord::Migration + def self.up + create_table :spree_post_products do |t| + t.references :post + t.references :product + t.integer :position + end + end + + def self.down + drop_table :spree_post_products + end +end \ No newline at end of file diff --git a/spree_theme/db/migrate/20171208185750_acts_as_taggable_on_posts.rb b/spree_theme/db/migrate/20171208185750_acts_as_taggable_on_posts.rb new file mode 100644 index 00000000..5d8af0ba --- /dev/null +++ b/spree_theme/db/migrate/20171208185750_acts_as_taggable_on_posts.rb @@ -0,0 +1,32 @@ +class ActsAsTaggableOnPosts < ActiveRecord::Migration + def self.up + #table tags, tagings are part of gem acts-as-taggable-on, no spree namespace + return if table_exists? :tags + + create_table :tags do |t| + t.string :name + end + + create_table :taggings do |t| + t.references :tag + # You should make sure that the column created is + # long enough to store the required class names. + t.references :taggable, :polymorphic => true + t.references :tagger, :polymorphic => true + # Limit is created to prevent MySQL error on index + # length for MyISAM table type: http://bit.ly/vgW2Ql + t.string :context, limit: 128 + t.datetime :created_at + end + + add_index :taggings, :tag_id + add_index :taggings, [:taggable_id, :taggable_type, :context], :name=>"taggings_id_type_context" + end + + def self.down + return unless table_exists? :tags + drop_table :tags + drop_table :taggings + end + +end diff --git a/spree_theme/db/migrate/20171208194440_add_cover_to_post.rb b/spree_theme/db/migrate/20171208194440_add_cover_to_post.rb new file mode 100644 index 00000000..13a08b3e --- /dev/null +++ b/spree_theme/db/migrate/20171208194440_add_cover_to_post.rb @@ -0,0 +1,10 @@ +# This migration comes from spree (originally 20121124203911) +class AddCoverToPost < ActiveRecord::Migration + def change + add_column :spree_posts, :position, :integer, :default => 0 + add_column :spree_posts, :cover_file_name, :string + add_column :spree_posts, :cover_content_type, :string + add_column :spree_posts, :cover_file_size, :integer, :default => 0 + add_column :spree_posts, :cover_updated_at, :datetime + end +end diff --git a/spree_theme/db/migrate/20171208204372_add_position_to_posts_taxons.spree.rb b/spree_theme/db/migrate/20171208204372_add_position_to_posts_taxons.spree.rb new file mode 100644 index 00000000..72c627dd --- /dev/null +++ b/spree_theme/db/migrate/20171208204372_add_position_to_posts_taxons.spree.rb @@ -0,0 +1,10 @@ +# This migration comes from spree (originally 20131127001002) +class AddPositionToPostsTaxons < ActiveRecord::Migration + def change + add_column :spree_posts_taxons, :id, :primary_key + add_column :spree_posts_taxons, :position, :integer + Spree::PostClassification.all.reverse.each{|classfication| + classfication.insert_at( ) + } + end +end diff --git a/spree_theme/db/migrate/20171208205253_add_seo_metas_to_posts.rb b/spree_theme/db/migrate/20171208205253_add_seo_metas_to_posts.rb new file mode 100644 index 00000000..15a28195 --- /dev/null +++ b/spree_theme/db/migrate/20171208205253_add_seo_metas_to_posts.rb @@ -0,0 +1,9 @@ +class AddSeoMetasToPosts < ActiveRecord::Migration + def change + change_table :spree_posts do |t| + t.string :meta_title + t.string :meta_description + t.string :meta_keywords + end + end +end diff --git a/spree_theme/db/migrate/20171208220001_rename_permalink_to_slug_for_posts.rb b/spree_theme/db/migrate/20171208220001_rename_permalink_to_slug_for_posts.rb new file mode 100644 index 00000000..62a8d051 --- /dev/null +++ b/spree_theme/db/migrate/20171208220001_rename_permalink_to_slug_for_posts.rb @@ -0,0 +1,5 @@ +class RenamePermalinkToSlugForPosts < ActiveRecord::Migration + def change + rename_column :spree_posts, :permalink, :slug + end +end diff --git a/spree_theme/db/migrate/20171210070030_add_renderer_into_template_theme.rb b/spree_theme/db/migrate/20171210070030_add_renderer_into_template_theme.rb new file mode 100644 index 00000000..91265d31 --- /dev/null +++ b/spree_theme/db/migrate/20171210070030_add_renderer_into_template_theme.rb @@ -0,0 +1,9 @@ +class AddRendererIntoTemplateTheme < ActiveRecord::Migration + def change + #目前 template_theme是调用一个方法生成页面,define_compiled_template_theme_method + #希望可以使用正常的方式,解析erb文件生成页面, + #renderer 0: 调用方法生成页面, 1:新的解析erb文件生成页面 + add_column :spree_template_themes, :renderer, :integer, null: false, default: 0 + end + +end diff --git a/spree_theme/db/migrate/20180313070030_add_image_style_param_into_page_layout.rb b/spree_theme/db/migrate/20180313070030_add_image_style_param_into_page_layout.rb new file mode 100644 index 00000000..226143b0 --- /dev/null +++ b/spree_theme/db/migrate/20180313070030_add_image_style_param_into_page_layout.rb @@ -0,0 +1,14 @@ +class AddImageStyleParamIntoPageLayout < ActiveRecord::Migration[5.1] + def change + #制作模板时,产品图片的尺寸是多样的, 即使预先定义多个也不能满足, + #通过aliyun图片服务可以实时生成任意尺寸图片 + # 一般图片尺寸, 取值为 mini,small,medium,large,custom + # 逗号(,)分隔,后面是当产品图片图片为多个时,产品图片的索引 + # 示例: medium : 取尺寸为medium,索引为0的产品图片 + # mini,1 : 取尺寸为mini,索引为1的产品图片 + # large/mini: 大图尺寸为large, 缩略图尺寸为mini + add_column :spree_page_layouts, :image_param, :string, limit: 24 + + end + +end diff --git a/spree_theme/db/migrate/20180314070030_add_effect_param_into_page_layout.rb b/spree_theme/db/migrate/20180314070030_add_effect_param_into_page_layout.rb new file mode 100644 index 00000000..50bd92e5 --- /dev/null +++ b/spree_theme/db/migrate/20180314070030_add_effect_param_into_page_layout.rb @@ -0,0 +1,13 @@ +class AddEffectParamIntoPageLayout < ActiveRecord::Migration[5.1] + def change + # 制作模板时,有很多特效,如 鼠标点击滑出,鼠标放上放大等 + # 鼠标点击 和 鼠标放上特效,由 Html, js, css 配合实现 + # effect_param 用来定义page_layout 的css class, + # 以便js找到相应元素,实现特效 + # 示例::hover_slide, :hover_show, :hover_expansion, :hover_overlay, :hover_popup, :popup_menu, :popup_menu_l, :sider, :multi_level_menu + add_column :spree_page_layouts, :effect_param, :string, limit: 32 + add_column :spree_sections, :effect_param, :string, limit: 32 + + end + +end diff --git a/spree_theme/db/seeds.rb b/spree_theme/db/seeds.rb index 63941011..1102b255 100644 --- a/spree_theme/db/seeds.rb +++ b/spree_theme/db/seeds.rb @@ -1,12 +1,12 @@ -# +# # rake RAILS_ENV=test db:seed - +include SpreeTheme::SeedHelper # plese load section_pieces first, seed sections.rb need it. seeds_path = File.join(File.dirname(__FILE__), 'seeds') -#suffix number of seeds file name indicate loading order. -xpath = File.join(seeds_path, "*.rb") -Dir[xpath].sort.each {|file| +#suffix number of seeds file name indicate loading order. +xpath = File.join(seeds_path,"**", "*.rb") +Dir[xpath].sort.each {|file| puts "loading #{file}" load file } @@ -14,13 +14,12 @@ #if ENV['DISABLE_EXTRA_PARAMS'].blank? # seeds_path = File.join(File.dirname(__FILE__), 'extra_piece_params') # xpath = File.join(seeds_path, "*.rb") -# Dir[xpath].sort.each {|file| +# Dir[xpath].sort.each {|file| # puts "loading #{file}" # load file # } #end -################################################################################################################################################################################################################################################################################################################################################################################### +################################################################################################################################################################################################################################################################################################################################################################################### # Section puts "loading spree_theme seeds complete!" - diff --git a/spree_theme/db/seeds/00_section_pieces.rb b/spree_theme/db/seeds/00_section_pieces.rb index 1d910337..300605ea 100644 --- a/spree_theme/db/seeds/00_section_pieces.rb +++ b/spree_theme/db/seeds/00_section_pieces.rb @@ -2,11 +2,16 @@ def load_section_piece records = YAML.load_file(File.join(File.dirname(__FILE__),'spree_section_pieces.yml')) records.values.each{|row| - #Rails.logger.debug "row=#{row.inspect}" Spree::SectionPiece.connection.insert_fixture(row, Spree::SectionPiece.table_name) - - + } + records = YAML.load_file(File.join(File.dirname(__FILE__),'spree_section_pieces2.yml')) + records.values.each{|row| + Spree::SectionPiece.connection.insert_fixture(row, Spree::SectionPiece.table_name) + } + records = YAML.load_file(File.join(File.dirname(__FILE__),'spree_section_pieces_for_mobile.yml')) + records.values.each{|row| + Spree::SectionPiece.connection.insert_fixture(row, Spree::SectionPiece.table_name) } end Spree::SectionPiece.delete_all -load_section_piece \ No newline at end of file +load_section_piece diff --git a/spree_theme/db/seeds/01_html_attributes.rb b/spree_theme/db/seeds/01_html_attributes.rb index e1181c99..5dd2bfdd 100644 --- a/spree_theme/db/seeds/01_html_attributes.rb +++ b/spree_theme/db/seeds/01_html_attributes.rb @@ -22,7 +22,7 @@ {"id"=>21, "title"=>"width", "pvalues"=>"auto,l1", "pvalues_desc"=>"Auto,L1", "punits"=>"l,%", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"", "css_name"=>"width"}, {"id"=>22, "title"=>"font", "pvalues"=>"caption,icon,menu,message-box,small-caption,status-bar", "pvalues_desc"=>"Caption,Icon,Menu,Message-box,Small-caption,Status-bar", "punits"=>"", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"inherit", "css_name"=>"font"}, {"id"=>23, "title"=>"font-family", "pvalues"=>"serif,sans-serif", "pvalues_desc"=>"Serif,Sans-serif", "punits"=>"", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"inherit", "css_name"=>"font-family"}, - {"id"=>24, "title"=>"font-size", "pvalues"=>"l1", "pvalues_desc"=>"L1", "punits"=>"%,em", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"inherit", "css_name"=>"font-size"}, + {"id"=>24, "title"=>"font-size", "pvalues"=>"l1", "pvalues_desc"=>"L1", "punits"=>"%,em,px", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"inherit", "css_name"=>"font-size"}, {"id"=>25, "title"=>"font-style", "pvalues"=>"normal,italic,oblique", "pvalues_desc"=>"Normal,Italic,Oblique", "punits"=>"", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"inherit", "css_name"=>"font-style"}, {"id"=>26, "title"=>"font-variant", "pvalues"=>"normal,small-caps", "pvalues_desc"=>"Normal,Small-caps", "punits"=>"", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"inherit", "css_name"=>"font-variant"}, {"id"=>27, "title"=>"font-weight", "pvalues"=>"normal,bold,bolder,lighter,100,200,300,400,500,600,700,800,900", "pvalues_desc"=>"Normal,Bold,Bolder,Lighter,100,200,300,400,500,600,700,800,900", "punits"=>"", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"inherit", "css_name"=>"font-weight"}, @@ -61,7 +61,7 @@ {"id"=>61, "title"=>"src", "pvalues"=>"0i", "pvalues_desc"=>"Src", "punits"=>"", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"", "css_name"=>"src"}, {"id"=>62, "title"=>"alt", "pvalues"=>"0t", "pvalues_desc"=>"Alt", "punits"=>"", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"", "css_name"=>"alt"}, {"id"=>63, "title"=>"href", "pvalues"=>"0u", "pvalues_desc"=>"Href", "punits"=>"", "neg_ok"=>false, "default_value"=>-1, "pvspecial"=>"", "css_name"=>"href"}, - {"id"=>64, "title"=>"layout db", "pvalues"=>"", "pvalues_desc"=>"", "punits"=>"", "neg_ok"=>false, "default_value"=>-1, "pvspecial"=>"", "css_name"=>"layout db"}, + {"id"=>64, "title"=>"border-radius", "pvalues"=>"l1", "pvalues_desc"=>"L1", "punits"=>"l,%", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"trbl", "css_name"=>"border-radius"}, {"id"=>65, "title"=>"layout string", "pvalues"=>"0t", "pvalues_desc"=>"0t", "punits"=>"", "neg_ok"=>false, "default_value"=>-1, "pvspecial"=>"", "css_name"=>"layout string"}, {"id"=>66, "title"=>"layout themeimg", "pvalues"=>"0i", "pvalues_desc"=>"0i", "punits"=>"", "neg_ok"=>false, "default_value"=>-1, "pvspecial"=>"", "css_name"=>"layout themeimg"}, {"id"=>67, "title"=>"layout bool", "pvalues"=>"0b", "pvalues_desc"=>"0b", "punits"=>"", "neg_ok"=>false, "default_value"=>-1, "pvspecial"=>"", "css_name"=>"layout bool"}, @@ -114,13 +114,12 @@ {"id"=>113, "title"=>"background-repeat", "pvalues"=>"repeat-y,no-repeat", "pvalues_desc"=>"Repeat-y,No-repeat", "punits"=>"", "neg_ok"=>false, "default_value"=>-1, "pvspecial"=>"", "css_name"=>"background-repeat"}, {"id"=>114, "title"=>"background-repeat", "pvalues"=>"repeat-x,no-repeat", "pvalues_desc"=>"Repeat-x,No-repeat", "punits"=>"", "neg_ok"=>false, "default_value"=>-1, "pvspecial"=>"", "css_name"=>"background-repeat"}, {"id"=>115, "title"=>"composite", "pvalues"=>"", "pvalues_desc"=>"", "punits"=>"", "neg_ok"=>false, "default_value"=>-1, "pvspecial"=>"", "css_name"=>"composite"}, - {"id"=>116, "title"=>"sitemap_view_style", "pvalues"=>"1,0", "pvalues_desc"=>"1,0", "punits"=>"", "neg_ok"=>false, "default_value"=>-1, "pvspecial"=>"", "css_name"=>"sitemap_view_style"}, - {"id"=>117, "title"=>"composite", "pvalues"=>"1809,1810,1811,1812,1813", "pvalues_desc"=>"1809,1810,1811,1812,1813", "punits"=>"", "neg_ok"=>false, "default_value"=>1, "pvspecial"=>"", "css_name"=>"composite"}] + {"id"=>116, "title"=>"opacity", "pvalues"=>"inherit,l0", "pvalues_desc"=>"inherit,l0", "punits"=>"", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"", "css_name"=>"opacity"}, + {"id"=>117, "title"=>"background-size", "pvalues"=>"auto|auto,cover|cover,contain|contain,l1|l1", "pvalues_desc"=>"auto|auto,cover|cover,contain|contain,l1|l1", "punits"=>"l,%", "neg_ok"=>false, "default_value"=>1, "pvspecial"=>"hv", "css_name"=>"background-size"}, + {"id"=>118, "title"=>"transition-duration", "pvalues"=>"l2", "pvalues_desc"=>"l2", "punits"=>"d", "neg_ok"=>false, "default_value"=>0, "pvspecial"=>"", "css_name"=>"transition-duration"}] -Spree::HtmlAttribute.delete_all +Spree::HtmlAttribute.delete_all for ha in objs - obj = Spree::HtmlAttribute.new - obj.assign_attributes( ha, :without_protection => true) - obj.save + ha[:slug] = nil # 5.0, it has to be nil to generate new + obj = Spree::HtmlAttribute.create!( ha ) end - diff --git a/spree_theme/db/seeds/02_editors.rb b/spree_theme/db/seeds/02_editors.rb index b66cd647..9b6bdc9b 100644 --- a/spree_theme/db/seeds/02_editors.rb +++ b/spree_theme/db/seeds/02_editors.rb @@ -7,6 +7,6 @@ Spree::Editor.delete_all for ha in editors obj = Spree::Editor.new - obj.assign_attributes( ha, :without_protection => true) + obj.assign_attributes( ha ) obj.save end \ No newline at end of file diff --git a/spree_theme/db/seeds/03_param_categories.rb b/spree_theme/db/seeds/03_param_categories.rb index c24d1a26..bcdfe28e 100644 --- a/spree_theme/db/seeds/03_param_categories.rb +++ b/spree_theme/db/seeds/03_param_categories.rb @@ -3,61 +3,86 @@ {"id"=>2, "position"=>3, "is_enabled"=>true, "editor_id"=>0, "slug"=>"general_position" }, {"id"=>3, "position"=>4, "is_enabled"=>true, "editor_id"=>0, "slug"=>"general_hover" }, - {"id"=>4, "position"=>5, "is_enabled"=>true, "editor_id"=>0, "slug"=>"dialog_title" }, + {"id"=>4, "position"=>5, "is_enabled"=>true, "editor_id"=>0, "slug"=>"dialog_titlebar" }, {"id"=>5, "position"=>6, "is_enabled"=>true, "editor_id"=>0, "slug"=>"dialog_content" }, - {"id"=>6, "position"=>7, "is_enabled"=>true, "editor_id"=>0, "slug"=>"title" }, #header3 + {"id"=>6, "position"=>9, "is_enabled"=>true, "editor_id"=>0, "slug"=>"header3" }, #header3 {"id"=>7, "position"=>2, "is_enabled"=>true, "editor_id"=>0, "slug"=>"fixed_position" }, + {"id"=>9, "position"=>7, "is_enabled"=>true, "editor_id"=>0, "slug"=>"sider" }, {"id"=>10, "position"=>10, "is_enabled"=>true, "editor_id"=>0, "slug"=>"header0" }, #header0 + # a - {"id"=>11, "position"=>11, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link" }, - {"id"=>12, "position"=>12, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_hover" }, - {"id"=>13, "position"=>13, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_selected" }, - {"id"=>14, "position"=>14, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_selected_hover" }, - {"id"=>15, "position"=>15, "is_enabled"=>true, "editor_id"=>4, "slug"=>"unclickable_link" }, - {"id"=>16, "position"=>16, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_depth1" }, - {"id"=>17, "position"=>17, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_depth2" }, - {"id"=>18, "position"=>18, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_depth3" }, - - {"id"=>20, "position"=>20, "is_enabled"=>true, "editor_id"=>0, "slug"=>"slides" }, - {"id"=>21, "position"=>21, "is_enabled"=>true, "editor_id"=>0, "slug"=>"slide_caption" }, - {"id"=>22, "position"=>22, "is_enabled"=>true, "editor_id"=>0, "slug"=>"bullet_navigator" }, - {"id"=>23, "position"=>23, "is_enabled"=>true, "editor_id"=>0, "slug"=>"arraw_navigator" }, - {"id"=>24, "position"=>24, "is_enabled"=>true, "editor_id"=>0, "slug"=>"thumbnail_navigator" }, - - #product img - {"id"=>28, "position"=>28, "is_enabled"=>true, "editor_id"=>0, "slug"=>"image_style" }, - {"id"=>30, "position"=>30, "is_enabled"=>true, "editor_id"=>0, "slug"=>"main_image" }, - {"id"=>31, "position"=>31, "is_enabled"=>true, "editor_id"=>0, "slug"=>"thumb_image" }, - {"id"=>32, "position"=>32, "is_enabled"=>true, "editor_id"=>0, "slug"=>"thumb_image_selected" }, + {"id"=>11, "position"=>111, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link" }, + {"id"=>12, "position"=>112, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_hover" }, + {"id"=>13, "position"=>113, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_selected" }, + {"id"=>14, "position"=>114, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_selected_hover" }, + {"id"=>15, "position"=>115, "is_enabled"=>true, "editor_id"=>4, "slug"=>"unclickable_link" }, + {"id"=>16, "position"=>117, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_depth1" }, + {"id"=>17, "position"=>118, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_depth2" }, + {"id"=>18, "position"=>119, "is_enabled"=>true, "editor_id"=>4, "slug"=>"link_depth3" }, + + {"id"=>20, "position"=>120, "is_enabled"=>true, "editor_id"=>0, "slug"=>"slides" }, + {"id"=>21, "position"=>121, "is_enabled"=>true, "editor_id"=>0, "slug"=>"slide_caption" }, + {"id"=>22, "position"=>122, "is_enabled"=>true, "editor_id"=>0, "slug"=>"bullet_navigator" }, + {"id"=>23, "position"=>123, "is_enabled"=>true, "editor_id"=>0, "slug"=>"arraw_navigator" }, + {"id"=>24, "position"=>124, "is_enabled"=>true, "editor_id"=>0, "slug"=>"thumbnail_navigator" }, + + #product img/logo + {"id"=>28, "position"=>128, "is_enabled"=>true, "editor_id"=>0, "slug"=>"image" }, + {"id"=>30, "position"=>130, "is_enabled"=>true, "editor_id"=>0, "slug"=>"main_image" }, + {"id"=>31, "position"=>131, "is_enabled"=>true, "editor_id"=>0, "slug"=>"thumb_image" }, + {"id"=>32, "position"=>132, "is_enabled"=>true, "editor_id"=>0, "slug"=>"thumb_image_selected" }, #form - {"id"=>39, "position"=>39, "is_enabled"=>true, "editor_id"=>0, "slug"=>"form" }, - {"id"=>40, "position"=>40, "is_enabled"=>true, "editor_id"=>0, "slug"=>"form_title" }, - {"id"=>42, "position"=>42, "is_enabled"=>true, "editor_id"=>0, "slug"=>"label_name" }, - {"id"=>43, "position"=>43, "is_enabled"=>true, "editor_id"=>0, "slug"=>"label_error" }, - {"id"=>44, "position"=>44, "is_enabled"=>true, "editor_id"=>0, "slug"=>"input" }, - {"id"=>45, "position"=>45, "is_enabled"=>true, "editor_id"=>0, "slug"=>"button" }, - {"id"=>46, "position"=>46, "is_enabled"=>true, "editor_id"=>0, "slug"=>"button_hover" }, + {"id"=>39, "position"=>139, "is_enabled"=>true, "editor_id"=>0, "slug"=>"form" }, + {"id"=>40, "position"=>140, "is_enabled"=>true, "editor_id"=>0, "slug"=>"form_title" }, + {"id"=>42, "position"=>142, "is_enabled"=>true, "editor_id"=>0, "slug"=>"label_name" }, + {"id"=>43, "position"=>143, "is_enabled"=>true, "editor_id"=>0, "slug"=>"label_error" }, + {"id"=>44, "position"=>144, "is_enabled"=>true, "editor_id"=>0, "slug"=>"input" }, + {"id"=>45, "position"=>145, "is_enabled"=>true, "editor_id"=>0, "slug"=>"button" }, + {"id"=>46, "position"=>146, "is_enabled"=>true, "editor_id"=>0, "slug"=>"button_hover" }, #{"id"=>64, "position"=>64, "is_enabled"=>true, "editor_id"=>3, "slug"=>"link_selected_hover_background" }, #dl dt dd - {"id"=>70, "position"=>70, "is_enabled"=>true, "editor_id"=>0, "slug"=>"term" }, - {"id"=>71, "position"=>71, "is_enabled"=>true, "editor_id"=>0, "slug"=>"term description" }, + {"id"=>70, "position"=>170, "is_enabled"=>true, "editor_id"=>0, "slug"=>"term" }, + {"id"=>71, "position"=>171, "is_enabled"=>true, "editor_id"=>0, "slug"=>"term description" }, #table - {"id"=>78, "position"=>78, "is_enabled"=>true, "editor_id"=>0, "slug"=>"table" }, - {"id"=>79, "position"=>79, "is_enabled"=>true, "editor_id"=>0, "slug"=>"table_title" }, - {"id"=>80, "position"=>80, "is_enabled"=>true, "editor_id"=>2, "slug"=>"cell" }, - {"id"=>81, "position"=>81, "is_enabled"=>true, "editor_id"=>2, "slug"=>"th" }, - {"id"=>82, "position"=>82, "is_enabled"=>true, "editor_id"=>2, "slug"=>"td" }, + {"id"=>78, "position"=>178, "is_enabled"=>true, "editor_id"=>0, "slug"=>"table" }, + {"id"=>79, "position"=>179, "is_enabled"=>true, "editor_id"=>0, "slug"=>"table_title" }, + {"id"=>80, "position"=>180, "is_enabled"=>true, "editor_id"=>2, "slug"=>"cell" }, + {"id"=>81, "position"=>181, "is_enabled"=>true, "editor_id"=>2, "slug"=>"th" }, + {"id"=>82, "position"=>182, "is_enabled"=>true, "editor_id"=>2, "slug"=>"td" }, #{"id"=>84, "position"=>84, "is_enabled"=>true, "editor_id"=>4, "slug"=>"td_text" }, - {"id"=>91, "position"=>91, "is_enabled"=>true, "editor_id"=>0, "slug"=>"first_child" }, - {"id"=>92, "position"=>92, "is_enabled"=>true, "editor_id"=>0, "slug"=>"last_child" }, + {"id"=>91, "position"=>191, "is_enabled"=>true, "editor_id"=>0, "slug"=>"first_child" }, + {"id"=>92, "position"=>192, "is_enabled"=>true, "editor_id"=>0, "slug"=>"last_child" }, + # hovered on hover-effect-expansion-container + {"id"=>101, "position"=>201, "is_enabled"=>true, "editor_id"=>0, "slug"=>"hovered" }, + + # list item even odd + {"id"=>195, "position"=>195, "is_enabled"=>true, "editor_id"=>0, "slug"=>"even" }, + {"id"=>196, "position"=>196, "is_enabled"=>true, "editor_id"=>0, "slug"=>"odd" }, + + #pagination + {"id"=>230, "position"=>230, "is_enabled"=>true, "editor_id"=>0, "slug"=>"pagination" }, + {"id"=>231, "position"=>231, "is_enabled"=>true, "editor_id"=>0, "slug"=>"pagination page" }, + {"id"=>232, "position"=>232, "is_enabled"=>true, "editor_id"=>0, "slug"=>"pagination page hover" }, + {"id"=>233, "position"=>233, "is_enabled"=>true, "editor_id"=>0, "slug"=>"pagination page active" }, + + # query media background + {"id"=>1051, "position"=>1051, "is_enabled"=>true, "editor_id"=>0, "slug"=>"background1" }, + {"id"=>1052, "position"=>1052, "is_enabled"=>true, "editor_id"=>0, "slug"=>"background2" }, + {"id"=>1053, "position"=>1053, "is_enabled"=>true, "editor_id"=>0, "slug"=>"background3" }, + + #dialog + {"id"=>501, "position"=>21, "is_enabled"=>true, "editor_id"=>0, "slug"=>"dialog_close" }, + {"id"=>502, "position"=>22, "is_enabled"=>true, "editor_id"=>0, "slug"=>"dialog_overlay" }, + {"id"=>531, "position"=>531, "is_enabled"=>true, "editor_id"=>0, "slug"=>"fa" }, + + ] -Spree::ParamCategory.delete_all +Spree::ParamCategory.delete_all for ha in objs obj = Spree::ParamCategory.new - obj.assign_attributes( ha, :without_protection => true) + obj.assign_attributes( ha ) obj.editor_id=0 - obj.save + obj.save! end - diff --git a/spree_theme/db/seeds/04_section_piece_params.rb b/spree_theme/db/seeds/04_section_piece_params.rb index 20ffdabb..1faa9ce9 100644 --- a/spree_theme/db/seeds/04_section_piece_params.rb +++ b/spree_theme/db/seeds/04_section_piece_params.rb @@ -42,7 +42,7 @@ for ha in objs obj = Spree::SectionPieceParam.new obj.param_conditions={} - obj.assign_attributes( ha, :without_protection => true) + obj.assign_attributes( ha ) obj.save end diff --git a/spree_theme/db/seeds/05_user_terminals.rb b/spree_theme/db/seeds/05_user_terminals.rb new file mode 100644 index 00000000..b70f13b9 --- /dev/null +++ b/spree_theme/db/seeds/05_user_terminals.rb @@ -0,0 +1,5 @@ +# add seeds here, table_exists? do not work for sqlite in migration + + pc = Spree::UserTerminal.create(name: 'PC', medium_width: 'all' ) + phone = Spree::UserTerminal.create(name: 'Cellphone', medium_width: 'all' ) + pad = Spree::UserTerminal.create(name: 'Pad', medium_width: 'all' ) diff --git a/spree_theme/db/seeds/100_sections.rb b/spree_theme/db/seeds/100/100_sections.rb similarity index 75% rename from spree_theme/db/seeds/100_sections.rb rename to spree_theme/db/seeds/100/100_sections.rb index 6fa3816d..fafd1dc1 100644 --- a/spree_theme/db/seeds/100_sections.rb +++ b/spree_theme/db/seeds/100/100_sections.rb @@ -20,74 +20,74 @@ section_piece_hash= sps.inject({}){|h,sp| h[sp.slug] = sp; h} Spree::Section.delete_all -root = Spree::Section.create_section(section_piece_hash['root'].id, {:title=>"root",:global_events=>"page_layout_fixed",:subscribed_global_events=>"page_layout_fixed"}, +root = Spree::Section.create_section(section_piece_hash['root'], {:title=>"root",:global_events=>"page_layout_fixed",:subscribed_global_events=>"page_layout_fixed"}, {'content_layout'=>{85=>'clear:both'}, 'page'=>{21=>"width:800px",'21unset'=>bool_false, 20=>"min-width:800px", '20hidden'=>bool_true}, }) -container = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"container",:subscribed_global_events=>"page_layout_fixed"},{'content_layout'=>{86=>bool_true,'86unset'=>bool_false}, +container = Spree::Section.create_section(section_piece_hash['container'], {:title=>"container",:subscribed_global_events=>"page_layout_fixed"},{'content_layout'=>{86=>bool_true,'86unset'=>bool_false}, 'block'=>{15=>"height:100px",'15unset'=>bool_false,101=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true}}) -hmenu = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"hmenu"}, +hmenu = Spree::Section.create_section(section_piece_hash['container'], {:title=>"hmenu"}, {'block'=>{'disabled_ha_ids'=>'111'}, #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, 'inner'=>{'15hidden'=>bool_true}}) -hmenu.add_section_piece(section_piece_hash['hmenu'].id).add_section_piece(section_piece_hash['menuitem'].id) +hmenu.add_section_piece(section_piece_hash['hmenu']).add_section_piece(section_piece_hash['menuitem']) -vmenu = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"vmenu"}, +vmenu = Spree::Section.create_section(section_piece_hash['container'], {:title=>"vmenu"}, {'block'=>{'disabled_ha_ids'=>'111'}, #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, 'inner'=>{'15hidden'=>bool_true}}) -vmenu.add_section_piece(section_piece_hash['vmenu'].id).add_section_piece(section_piece_hash['menuitem'].id) +vmenu.add_section_piece(section_piece_hash['vmenu']).add_section_piece(section_piece_hash['menuitem']) -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"image"}, +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"image"}, {'block'=>{'disabled_ha_ids'=>'111'}, #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['image'].id) +logo.add_section_piece(section_piece_hash['image']) -text = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"text"}, +text = Spree::Section.create_section(section_piece_hash['container'], {:title=>"text"}, {'block'=>{'disabled_ha_ids'=>'111'}, #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, 'inner'=>{'15hidden'=>bool_true}}) -text.add_section_piece(section_piece_hash['text'].id) +text.add_section_piece(section_piece_hash['text']) -product_name = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"product name"}, +product_name = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product name"}, {'block'=>{'disabled_ha_ids'=>'111'}, #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, 'inner'=>{'15hidden'=>bool_true}}) -product_name.add_section_piece(section_piece_hash['product-name'].id) +product_name.add_section_piece(section_piece_hash['product-name']) -product_description = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"product description"}, +product_description = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product description"}, {'block'=>{'disabled_ha_ids'=>'111'}, #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, 'inner'=>{'15hidden'=>bool_true}}) -product_description.add_section_piece(section_piece_hash['product-description'].id) +product_description.add_section_piece(section_piece_hash['product-description']) -product_image = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"product image"}, +product_image = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product image"}, {'block'=>{'disabled_ha_ids'=>'111'}, #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, 'inner'=>{'15hidden'=>bool_true}}) -product_image.add_section_piece(section_piece_hash['product-image'].id) +product_image.add_section_piece(section_piece_hash['product-image']) ################################################ center area start ############################################## -center_area = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"center_area",:is_enabled=>false,:subscribed_global_events=>"page_layout_fixed,block_width"},{'content_layout'=>{86=>bool_true,'86unset'=>bool_false}, +center_area = Spree::Section.create_section(section_piece_hash['container'], {:title=>"center_area",:is_enabled=>false,:subscribed_global_events=>"page_layout_fixed,block_width"},{'content_layout'=>{86=>bool_true,'86unset'=>bool_false}, 'block'=>{15=>"height:100px",'15unset'=>bool_false,:disabled_ha_ids=>"101"}}) -left_part = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"left_part",:is_enabled=>false,:global_events=>"block_width"}, +left_part = Spree::Section.create_section(section_piece_hash['container'], {:title=>"left_part",:is_enabled=>false,:global_events=>"block_width"}, {'content_layout'=>{86=>bool_true}, 'block'=>{15=>"height:100px",'15unset'=>bool_false,21=>"width:200px",'21unset'=>bool_false, 101=>"float:left",'101unset'=>bool_false,111=>"margin:0 -200px 0 0",'111unset'=>bool_false,:disabled_ha_ids=>"111"}, 'inner'=>{'15hidden'=>bool_true}}) -right_part = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"right_part",:is_enabled=>false,:global_events=>"block_width"}, +right_part = Spree::Section.create_section(section_piece_hash['container'], {:title=>"right_part",:is_enabled=>false,:global_events=>"block_width"}, {'content_layout'=>{86=>bool_true}, 'block'=>{15=>"height:100px",'15unset'=>bool_false,21=>"width:200px",'21unset'=>bool_false, 101=>"float:right",'101unset'=>bool_false,111=>"margin:0 0 0 -200px",'111unset'=>bool_false,:disabled_ha_ids=>"111"}, 'inner'=>{'15hidden'=>bool_true}}) -center_part = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"center_part",:is_enabled=>false,:global_events=>"block_width"}, +center_part = Spree::Section.create_section(section_piece_hash['container'], {:title=>"center_part",:is_enabled=>false,:global_events=>"block_width"}, {'content_layout'=>{86=>bool_true}, 'block'=>{15=>"height:100px",'15unset'=>bool_false,21=>"width:100%",'21unset'=>bool_false, 101=>"float:left",'101unset'=>bool_false,111=>"margin:0 -100% 0 0",'111unset'=>bool_false, '111hidden'=>bool_true,:disabled_ha_ids=>"101,21"}, 'inner'=>{31=>"margin:0 200px 0 200px",'31unset'=>bool_false, '31hidden'=>bool_true, '15hidden'=>bool_true}}) diff --git a/spree_theme/db/seeds/100/101_product_related.rb b/spree_theme/db/seeds/100/101_product_related.rb new file mode 100644 index 00000000..033c879a --- /dev/null +++ b/spree_theme/db/seeds/100/101_product_related.rb @@ -0,0 +1,26 @@ +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE +sps = Spree::SectionPiece.all +section_piece_hash= sps.inject({}){|h,sp| h[sp.slug] = sp; h} + +#add product_image_with_thumbnails +Spree::Section.where(:title=>'product image with thumbnails').each(&:destroy) +product_image_with_thumbnails = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product image with thumbnails"}, + {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) + +product_image_with_thumbnails.add_section_piece(section_piece_hash['container'], {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}).add_section_piece(section_piece_hash['product_main_image']) +product_image_with_thumbnails.reload +product_image_with_thumbnails.add_section_piece(section_piece_hash['container'], {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}).add_section_piece(section_piece_hash['product_thumbnails']) + + +#add product_properties +Spree::Section.where(:title=>'product_properties').each(&:destroy) +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product properties"}, + {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) +product_properties.add_section_piece(section_piece_hash['product_properties']) + +#add product_price +Spree::Section.where(:title=>'product_price').each(&:destroy) +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product price"}, + {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) +product_properties.add_section_piece(section_piece_hash['product_price']) \ No newline at end of file diff --git a/spree_theme/db/seeds/102_product_related.rb b/spree_theme/db/seeds/100/102_product_related.rb similarity index 85% rename from spree_theme/db/seeds/102_product_related.rb rename to spree_theme/db/seeds/100/102_product_related.rb index 1a3d73e3..9db05255 100644 --- a/spree_theme/db/seeds/102_product_related.rb +++ b/spree_theme/db/seeds/100/102_product_related.rb @@ -5,12 +5,12 @@ #add product_quantity Spree::Section.where(:title=>'product quantity').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"product quantity"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product quantity"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['product_quantity'].id) +product_properties.add_section_piece(section_piece_hash['product_quantity']) #add product_atc Spree::Section.where(:title=>'product atc').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"product atc"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product atc"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['product_atc'].id) \ No newline at end of file +product_properties.add_section_piece(section_piece_hash['product_atc']) \ No newline at end of file diff --git a/spree_theme/db/seeds/103_cart_account.rb b/spree_theme/db/seeds/100/103_cart_account.rb similarity index 80% rename from spree_theme/db/seeds/103_cart_account.rb rename to spree_theme/db/seeds/100/103_cart_account.rb index caaf8dc5..5d98d3eb 100644 --- a/spree_theme/db/seeds/103_cart_account.rb +++ b/spree_theme/db/seeds/100/103_cart_account.rb @@ -6,12 +6,12 @@ #cart Spree::Section.where(:title=>'cart').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"cart"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"cart"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['cart'].id) +product_properties.add_section_piece(section_piece_hash['cart']) #account Spree::Section.where(:title=>'account').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"account"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"account"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['account'].id) \ No newline at end of file +product_properties.add_section_piece(section_piece_hash['account']) \ No newline at end of file diff --git a/spree_theme/db/seeds/104_taxonomy.rb b/spree_theme/db/seeds/100/104_taxonomy.rb similarity index 87% rename from spree_theme/db/seeds/104_taxonomy.rb rename to spree_theme/db/seeds/100/104_taxonomy.rb index 68ab2f7a..323f9481 100644 --- a/spree_theme/db/seeds/104_taxonomy.rb +++ b/spree_theme/db/seeds/100/104_taxonomy.rb @@ -5,8 +5,8 @@ #taxonomy Spree::Section.where(:title=>'taxonomy name').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"taxonomy name"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"taxonomy name"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['taxonomy-name'].id) +product_properties.add_section_piece(section_piece_hash['taxonomy-name']) # \ No newline at end of file diff --git a/spree_theme/db/seeds/105_cart_item.rb b/spree_theme/db/seeds/100/105_cart_item.rb similarity index 85% rename from spree_theme/db/seeds/105_cart_item.rb rename to spree_theme/db/seeds/100/105_cart_item.rb index d819b5ce..734bf5ca 100644 --- a/spree_theme/db/seeds/105_cart_item.rb +++ b/spree_theme/db/seeds/100/105_cart_item.rb @@ -5,12 +5,12 @@ #cart items Spree::Section.where(:title=>'cart items').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"cart items"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"cart items"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['cart-items'].id) +product_properties.add_section_piece(section_piece_hash['cart-items']) #order_total_price Spree::Section.where(:title=>'order total price').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"order total price"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"order total price"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['order-total-price'].id) +product_properties.add_section_piece(section_piece_hash['order-total-price']) diff --git a/spree_theme/db/seeds/106_checkout_thanks.rb b/spree_theme/db/seeds/100/106_checkout_thanks.rb similarity index 87% rename from spree_theme/db/seeds/106_checkout_thanks.rb rename to spree_theme/db/seeds/100/106_checkout_thanks.rb index 20a14d43..6b7814ba 100644 --- a/spree_theme/db/seeds/106_checkout_thanks.rb +++ b/spree_theme/db/seeds/100/106_checkout_thanks.rb @@ -5,12 +5,12 @@ #checkout Spree::Section.where(:title=>'checkout').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"checkout"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"checkout"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['checkout'].id) +product_properties.add_section_piece(section_piece_hash['checkout']) #thanks Spree::Section.where(:title=>'thanks').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"thanks"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"thanks"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['thanks'].id) +product_properties.add_section_piece(section_piece_hash['thanks']) diff --git a/spree_theme/db/seeds/108_taxon_name.rb b/spree_theme/db/seeds/100/108_taxon_name.rb similarity index 88% rename from spree_theme/db/seeds/108_taxon_name.rb rename to spree_theme/db/seeds/100/108_taxon_name.rb index 0b4787c7..66e0978f 100644 --- a/spree_theme/db/seeds/108_taxon_name.rb +++ b/spree_theme/db/seeds/100/108_taxon_name.rb @@ -5,8 +5,8 @@ #taxon name Spree::Section.where(:title=>'taxon name').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"taxon name"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"taxon name"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['taxon-name'].id) +product_properties.add_section_piece(section_piece_hash['taxon-name']) # \ No newline at end of file diff --git a/spree_theme/db/seeds/109_order_related.rb b/spree_theme/db/seeds/100/109_order_related.rb similarity index 83% rename from spree_theme/db/seeds/109_order_related.rb rename to spree_theme/db/seeds/100/109_order_related.rb index 5de8722d..72fdec13 100644 --- a/spree_theme/db/seeds/109_order_related.rb +++ b/spree_theme/db/seeds/100/109_order_related.rb @@ -1,6 +1,6 @@ -include SpreeTheme::SectionPieceParamHelper + #table title cell, border,padding -section_piece = Spree::SectionPiece.find 'container-title' +section_piece = find_section_piece 'container-title' title = { "editor_id"=>2, "class_name"=>"s_h6", "pclass"=>"css", "param_category_id"=>6, "html_attribute_ids"=>"31,32,7,8,6"} create_section_piece_param( section_piece, title) title = { "editor_id"=>3, "class_name"=>"s_h6", "pclass"=>"css", "param_category_id"=>6, "html_attribute_ids"=>"2,3,4,5"} @@ -16,23 +16,23 @@ #order_address Spree::Section.where(:title=>'order address').each(&:destroy) -order_address = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"order address"}, +order_address = Spree::Section.create_section(section_piece_hash['container'], {:title=>"order address"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -order_address.add_section_piece(section_piece_hash['container-title'].id) -order_address.add_section_piece(section_piece_hash['order-address'].id) +order_address.add_section_piece(section_piece_hash['container-title']) +order_address.add_section_piece(section_piece_hash['order-address']) #order_payment Spree::Section.where(:title=>'order payment').each(&:destroy) -order_payment = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"order payment"}, +order_payment = Spree::Section.create_section(section_piece_hash['container'], {:title=>"order payment"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -order_payment.add_section_piece(section_piece_hash['container-title'].id) -order_payment.add_section_piece(section_piece_hash['order-payment'].id) +order_payment.add_section_piece(section_piece_hash['container-title']) +order_payment.add_section_piece(section_piece_hash['order-payment']) #order_items Spree::Section.where(:title=>'order items').each(&:destroy) -order_items = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"order items"}, +order_items = Spree::Section.create_section(section_piece_hash['container'], {:title=>"order items"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -order_items.add_section_piece(section_piece_hash['container-title'].id) -order_items.add_section_piece(section_piece_hash['order-items'].id) +order_items.add_section_piece(section_piece_hash['container-title']) +order_items.add_section_piece(section_piece_hash['order-items']) diff --git a/spree_theme/db/seeds/110_login_siginup.rb b/spree_theme/db/seeds/100/110_login_siginup.rb similarity index 83% rename from spree_theme/db/seeds/110_login_siginup.rb rename to spree_theme/db/seeds/100/110_login_siginup.rb index c0eac56a..28d9ac53 100644 --- a/spree_theme/db/seeds/110_login_siginup.rb +++ b/spree_theme/db/seeds/100/110_login_siginup.rb @@ -1,6 +1,6 @@ -section_piece = Spree::SectionPiece.find 'container-title' -html_attribute = Spree::HtmlAttribute.find 'font-weight' +section_piece = find_section_piece 'container-title' +html_attribute = find_html_attribute 'font-weight' default_value = "font-weight:bold" section_piece_param = section_piece.section_piece_params.where(["editor_id=?",4]).first @@ -18,14 +18,14 @@ #login_form Spree::Section.where(:title=>'login form').each(&:destroy) -order_address = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"login form"}, +order_address = Spree::Section.create_section(section_piece_hash['container'], {:title=>"login form"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -order_address.add_section_piece(section_piece_hash['container-title'].id) -order_address.add_section_piece(section_piece_hash['login-form'].id) +order_address.add_section_piece(section_piece_hash['container-title']) +order_address.add_section_piece(section_piece_hash['login-form']) #sign_up_form Spree::Section.where(:title=>'sign up form').each(&:destroy) -order_address = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"sign up form"}, +order_address = Spree::Section.create_section(section_piece_hash['container'], {:title=>"sign up form"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -order_address.add_section_piece(section_piece_hash['container-title'].id) -order_address.add_section_piece(section_piece_hash['sign-up-form'].id) +order_address.add_section_piece(section_piece_hash['container-title']) +order_address.add_section_piece(section_piece_hash['sign-up-form']) diff --git a/spree_theme/db/seeds/110_order_number.rb b/spree_theme/db/seeds/100/110_order_number.rb similarity index 88% rename from spree_theme/db/seeds/110_order_number.rb rename to spree_theme/db/seeds/100/110_order_number.rb index c863f433..9f677bbb 100644 --- a/spree_theme/db/seeds/110_order_number.rb +++ b/spree_theme/db/seeds/100/110_order_number.rb @@ -5,8 +5,8 @@ #order number Spree::Section.where(:title=>'order number').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"order number"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"order number"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['order-number'].id) +product_properties.add_section_piece(section_piece_hash['order-number']) # \ No newline at end of file diff --git a/spree_theme/db/seeds/110_ship_payment.rb b/spree_theme/db/seeds/100/110_ship_payment.rb similarity index 81% rename from spree_theme/db/seeds/110_ship_payment.rb rename to spree_theme/db/seeds/100/110_ship_payment.rb index 57b8dc10..d10e5631 100644 --- a/spree_theme/db/seeds/110_ship_payment.rb +++ b/spree_theme/db/seeds/100/110_ship_payment.rb @@ -4,14 +4,14 @@ #ship_form Spree::Section.where(:title=>'ship form').each(&:destroy) -order_address = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"ship form"}, +order_address = Spree::Section.create_section(section_piece_hash['container'], {:title=>"ship form"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -order_address.add_section_piece(section_piece_hash['container-title'].id) -order_address.add_section_piece(section_piece_hash['ship-form'].id) +order_address.add_section_piece(section_piece_hash['container-title']) +order_address.add_section_piece(section_piece_hash['ship-form']) #payment_form Spree::Section.where(:title=>'payment form').each(&:destroy) -order_address = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"payment form"}, +order_address = Spree::Section.create_section(section_piece_hash['container'], {:title=>"payment form"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -order_address.add_section_piece(section_piece_hash['container-title'].id) -order_address.add_section_piece(section_piece_hash['payment-form'].id) +order_address.add_section_piece(section_piece_hash['container-title']) +order_address.add_section_piece(section_piece_hash['payment-form']) diff --git a/spree_theme/db/seeds/112_container_form_link_table.rb b/spree_theme/db/seeds/100/112_container_form_link_table.rb similarity index 95% rename from spree_theme/db/seeds/112_container_form_link_table.rb rename to spree_theme/db/seeds/100/112_container_form_link_table.rb index 19a68c8a..d7edae29 100644 --- a/spree_theme/db/seeds/112_container_form_link_table.rb +++ b/spree_theme/db/seeds/100/112_container_form_link_table.rb @@ -1,7 +1,7 @@ -include SpreeTheme::SectionPieceParamHelper + #table title cell, border,padding -section_piece = Spree::SectionPiece.find 'container-link' +section_piece = find_section_piece 'container-link' a = { "editor_id"=>2, "class_name"=>"s_a", "pclass"=>"css", "param_category_id"=>11, "html_attribute_ids"=>"31,32,7,8,6"} create_section_piece_param( section_piece, a) @@ -20,7 +20,7 @@ #table title cell, border,padding -section_piece = Spree::SectionPiece.find 'container-table' +section_piece = find_section_piece 'container-table' table = {"editor_id"=>2, "class_name"=>"s_table", "pclass"=>"css", "param_category_id"=>78, "html_attribute_ids"=>"31,7,8,6"} cell = {"editor_id"=>2, "class_name"=>"s_cell", "pclass"=>"css", "param_category_id"=>80, "html_attribute_ids"=>"32,7,8,6"} @@ -43,7 +43,7 @@ create_section_piece_param( section_piece, td) # form label error input -section_piece = Spree::SectionPiece.find 'container-form' +section_piece = find_section_piece 'container-form' form = {"editor_id"=>2, "class_name"=>"s_form", "pclass"=>"css", "param_category_id"=>39, "html_attribute_ids"=>"31,7,8,6"} label = {"editor_id"=>2, "class_name"=>"s_label", "pclass"=>"css", "param_category_id"=>42, "html_attribute_ids"=>"31,32,7,8,6"} diff --git a/spree_theme/db/seeds/100/113_root2.rb b/spree_theme/db/seeds/100/113_root2.rb new file mode 100644 index 00000000..942d3120 --- /dev/null +++ b/spree_theme/db/seeds/100/113_root2.rb @@ -0,0 +1,17 @@ +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE +sps = Spree::SectionPiece.all +section_piece_hash= sps.inject({}){|h,sp| h[sp.slug] = sp; h} + +root = Spree::Section.create_section(section_piece_hash['root'], {:title=>"root2"}, + {'content_layout'=>{85=>'clear:both'}, + 'page'=>{21=>"width:960px",'21unset'=>bool_false, 20=>"min-width:960px", '20hidden'=>bool_true}, + }) + +root.add_section_piece(section_piece_hash['container-title'])\ + .add_section_piece(section_piece_hash['container-form'])\ + .add_section_piece(section_piece_hash['container-link'])\ + .add_section_piece(section_piece_hash['container-table']) + + + diff --git a/spree_theme/db/seeds/114_dialog_order_list_profile.rb b/spree_theme/db/seeds/100/114_dialog_order_list_profile.rb similarity index 77% rename from spree_theme/db/seeds/114_dialog_order_list_profile.rb rename to spree_theme/db/seeds/100/114_dialog_order_list_profile.rb index b54f03dc..3841d50e 100644 --- a/spree_theme/db/seeds/114_dialog_order_list_profile.rb +++ b/spree_theme/db/seeds/100/114_dialog_order_list_profile.rb @@ -4,20 +4,20 @@ Spree::Section.where(:title=>'dialog').each(&:destroy) -dialog = Spree::Section.create_section(section_piece_hash['dialog'].id, {:title=>"dialog"}) -dialog.add_section_piece(section_piece_hash['container-title'].id) +dialog = Spree::Section.create_section(section_piece_hash['dialog'], {:title=>"dialog"}) +dialog.add_section_piece(section_piece_hash['container-title']) #order list Spree::Section.where(:title=>'order list').each(&:destroy) -order_address = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"order list"}, +order_address = Spree::Section.create_section(section_piece_hash['container'], {:title=>"order list"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -order_address.add_section_piece(section_piece_hash['container-title'].id) -order_address.add_section_piece(section_piece_hash['order-list'].id) +order_address.add_section_piece(section_piece_hash['container-title']) +order_address.add_section_piece(section_piece_hash['order-list']) #profile Spree::Section.where(:title=>'profile').each(&:destroy) -order_address = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"profile"}, +order_address = Spree::Section.create_section(section_piece_hash['container'], {:title=>"profile"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -order_address.add_section_piece(section_piece_hash['container-title'].id) -order_address.add_section_piece(section_piece_hash['profile'].id) \ No newline at end of file +order_address.add_section_piece(section_piece_hash['container-title']) +order_address.add_section_piece(section_piece_hash['profile']) \ No newline at end of file diff --git a/spree_theme/db/seeds/115_container_with_title.rb b/spree_theme/db/seeds/100/115_container_with_title.rb similarity index 89% rename from spree_theme/db/seeds/115_container_with_title.rb rename to spree_theme/db/seeds/100/115_container_with_title.rb index c901b057..c9905ad6 100644 --- a/spree_theme/db/seeds/115_container_with_title.rb +++ b/spree_theme/db/seeds/100/115_container_with_title.rb @@ -4,6 +4,6 @@ #container-title Spree::Section.where(:title=>'container with title').each(&:destroy) -container = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"container with title"}, +container = Spree::Section.create_section(section_piece_hash['container'], {:title=>"container with title"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -container.add_section_piece(section_piece_hash['container-title'].id) +container.add_section_piece(section_piece_hash['container-title']) diff --git a/spree_theme/db/seeds/117_dialog2.rb b/spree_theme/db/seeds/100/117_dialog2.rb similarity index 93% rename from spree_theme/db/seeds/117_dialog2.rb rename to spree_theme/db/seeds/100/117_dialog2.rb index 38237993..db4d0d99 100644 --- a/spree_theme/db/seeds/117_dialog2.rb +++ b/spree_theme/db/seeds/100/117_dialog2.rb @@ -5,13 +5,13 @@ section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} Spree::Section.where(:title=>'dialog2').each(&:destroy) -dialog = Spree::Section.create_section(section_piece_hash['dialog'].id, {:title=>"dialog2"}) -dialog_container = dialog.add_section_piece(section_piece_hash['container'].id, +dialog = Spree::Section.create_section(section_piece_hash['dialog'], {:title=>"dialog2"}) +dialog_container = dialog.add_section_piece(section_piece_hash['container'], { 'inner'=>{'15hidden'=>bool_true, '15'=>'height:598px', '7'=>'border-style:solid solid solid solid', '8'=>'border-width:1px 1px 1px 1px', '6'=>'border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC', '7unset'=>bool_false,'8unset'=>bool_false,'6unset'=>bool_false }, 'block'=>{'21'=>'width:600px','disabled_ha_ids'=>'111', '2'=>'background-color:#FFFFFF','21unset'=>bool_false,'2unset'=>bool_false,}}) -dialog_container.add_section_piece(section_piece_hash['dialog-title'].id) -dialog_container.add_section_piece(section_piece_hash['dialog-content'].id) +dialog_container.add_section_piece(section_piece_hash['dialog-title']) +dialog_container.add_section_piece(section_piece_hash['dialog-content']) diff --git a/spree_theme/db/seeds/118_product_image_with_thumbnails2.rb b/spree_theme/db/seeds/100/118_product_image_with_thumbnails2.rb similarity index 80% rename from spree_theme/db/seeds/118_product_image_with_thumbnails2.rb rename to spree_theme/db/seeds/100/118_product_image_with_thumbnails2.rb index d7bd9d15..8051e25e 100644 --- a/spree_theme/db/seeds/118_product_image_with_thumbnails2.rb +++ b/spree_theme/db/seeds/100/118_product_image_with_thumbnails2.rb @@ -5,7 +5,7 @@ section_piece_hash= sps.inject({}){|h,sp| h[sp.slug] = sp; h} Spree::Section.where(:title=>'product image with thumbnails2').each(&:destroy) -product_image_with_thumbnails = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"product image with thumbnails2"}, +product_image_with_thumbnails = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product image with thumbnails2"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_image_with_thumbnails.add_section_piece(section_piece_hash['product_main_image'].id) -product_image_with_thumbnails.add_section_piece(section_piece_hash['product_thumbnails'].id) +product_image_with_thumbnails.add_section_piece(section_piece_hash['product_main_image']) +product_image_with_thumbnails.add_section_piece(section_piece_hash['product_thumbnails']) diff --git a/spree_theme/db/seeds/119_131001_pname_link.rb b/spree_theme/db/seeds/100/119_131001_pname_link.rb similarity index 87% rename from spree_theme/db/seeds/119_131001_pname_link.rb rename to spree_theme/db/seeds/100/119_131001_pname_link.rb index 4a90d90d..d03dc367 100644 --- a/spree_theme/db/seeds/119_131001_pname_link.rb +++ b/spree_theme/db/seeds/100/119_131001_pname_link.rb @@ -1,6 +1,6 @@ -include SpreeTheme::SectionPieceParamHelper -section_piece = Spree::SectionPiece.find "product-name" + +section_piece = find_section_piece "product-name" a = { "editor_id"=>3, "class_name"=>"a", "pclass"=>"css", "param_category_id"=>11, "html_attribute_ids"=>"2,3,4,5"} a_h = { "editor_id"=>3, "class_name"=>"a_h", "pclass"=>"css", "param_category_id"=>12, "html_attribute_ids"=>"2,3,4,5"} create_section_piece_param( section_piece, a) diff --git a/spree_theme/db/seeds/100/119_131003_pimg.rb b/spree_theme/db/seeds/100/119_131003_pimg.rb new file mode 100644 index 00000000..cf8607bc --- /dev/null +++ b/spree_theme/db/seeds/100/119_131003_pimg.rb @@ -0,0 +1,12 @@ + + +#image margin, border,padding +section_piece = find_section_piece 'product_main_image' +img = {"editor_id"=>2, "class_name"=>"img", "pclass"=>"css", "param_category_id"=>30, "html_attribute_ids"=>"31,32,7,8,6"} + +create_section_piece_param( section_piece, img) + +section_piece = find_section_piece 'product_thumbnails' +img = {"editor_id"=>2, "class_name"=>"img", "pclass"=>"css", "param_category_id"=>31, "html_attribute_ids"=>"31,32,7,8,6"} + +create_section_piece_param( section_piece, img) diff --git a/spree_theme/db/seeds/119_131004_pprop.rb b/spree_theme/db/seeds/100/119_131004_pprop.rb similarity index 89% rename from spree_theme/db/seeds/119_131004_pprop.rb rename to spree_theme/db/seeds/100/119_131004_pprop.rb index 5bd5e206..bd0833be 100644 --- a/spree_theme/db/seeds/119_131004_pprop.rb +++ b/spree_theme/db/seeds/100/119_131004_pprop.rb @@ -1,7 +1,7 @@ -include SpreeTheme::SectionPieceParamHelper + #table cell, border,padding -section_piece = Spree::SectionPiece.find 'product_properties' +section_piece = find_section_piece 'product_properties' cell = {"editor_id"=>2, "class_name"=>"cell", "pclass"=>"css", "param_category_id"=>80, "html_attribute_ids"=>"32,7,8,6"} create_section_piece_param( section_piece, cell) diff --git a/spree_theme/db/seeds/119_131004_pqty.rb b/spree_theme/db/seeds/100/119_131004_pqty.rb similarity index 88% rename from spree_theme/db/seeds/119_131004_pqty.rb rename to spree_theme/db/seeds/100/119_131004_pqty.rb index 8ba14f82..5a3a89d0 100644 --- a/spree_theme/db/seeds/119_131004_pqty.rb +++ b/spree_theme/db/seeds/100/119_131004_pqty.rb @@ -1,10 +1,10 @@ -include SpreeTheme::SectionPieceParamHelper + #table cell, border,padding - section_piece = Spree::SectionPiece.find 'product_quantity' + section_piece = find_section_piece 'product_quantity' position = { "editor_id"=>2, "class_name"=>"input", "pclass"=>"css", "param_category_id"=>44, "html_attribute_ids"=>"21,15,31,32,7,8,6"} background = { "editor_id"=>3, "class_name"=>"input", "pclass"=>"css", "param_category_id"=>44, "html_attribute_ids"=>"2,3,4,5"} font = { "editor_id"=>4, "class_name"=>"input", "pclass"=>"css", "param_category_id"=>44, "html_attribute_ids"=>"23,24,25,27,49,53,54,56"} @@ -13,7 +13,7 @@ create_section_piece_param( section_piece, font) - section_piece = Spree::SectionPiece.find 'product_atc' + section_piece = find_section_piece 'product_atc' position = { "editor_id"=>2, "class_name"=>"button", "pclass"=>"css", "param_category_id"=>45, "html_attribute_ids"=>"21,15,31,32,7,8,6"} background = { "editor_id"=>3, "class_name"=>"button", "pclass"=>"css", "param_category_id"=>45, "html_attribute_ids"=>"2,3,4,5"} font = { "editor_id"=>4, "class_name"=>"button", "pclass"=>"css", "param_category_id"=>45, "html_attribute_ids"=>"23,24,25,27,49,53,54,56"} diff --git a/spree_theme/db/seeds/119_131028_remove_root_form_link_table.rb b/spree_theme/db/seeds/100/119_131028_remove_root_form_link_table.rb similarity index 80% rename from spree_theme/db/seeds/119_131028_remove_root_form_link_table.rb rename to spree_theme/db/seeds/100/119_131028_remove_root_form_link_table.rb index e91d6278..813f75cc 100644 --- a/spree_theme/db/seeds/119_131028_remove_root_form_link_table.rb +++ b/spree_theme/db/seeds/100/119_131028_remove_root_form_link_table.rb @@ -1,4 +1,4 @@ -section_piece = Spree::SectionPiece.find 'root' +section_piece = find_section_piece 'root' section_piece.section_piece_params.each{|spp| if ['table', 'table_title','td','th','cell','form','form_title','label','input','form_error','a','a_h'].include? spp.class_name diff --git a/spree_theme/db/seeds/119_131031_dialog.rb b/spree_theme/db/seeds/100/119_131031_dialog.rb similarity index 87% rename from spree_theme/db/seeds/119_131031_dialog.rb rename to spree_theme/db/seeds/100/119_131031_dialog.rb index 8c015442..3a00b1e2 100644 --- a/spree_theme/db/seeds/119_131031_dialog.rb +++ b/spree_theme/db/seeds/100/119_131031_dialog.rb @@ -1,18 +1,17 @@ -include SpreeTheme::SectionPieceParamHelper + bool_false = Spree::HtmlAttribute::BOOL_FALSE bool_true = Spree::HtmlAttribute::BOOL_TRUE -#dialog width, height, -section_piece = Spree::SectionPiece.find 'dialog-title' +section_piece = find_section_piece 'dialog-title' unless section_piece.section_piece_params.exists?( :class_name=>'title' ) title = { "editor_id"=>2, "class_name"=>"title", "pclass"=>"css", "param_category_id"=>4, "html_attribute_ids"=>"31,32,7,8,6"} create_section_piece_param( section_piece, title) - + title = { "editor_id"=>3, "class_name"=>"title", "pclass"=>"css", "param_category_id"=>4, "html_attribute_ids"=>"2,3,4,5"} create_section_piece_param( section_piece, title) - - title = { "editor_id"=>4, "class_name"=>"title", "pclass"=>"css", "param_category_id"=>4, "html_attribute_ids"=>"24,27,49,53,54"} + + title = { "editor_id"=>4, "class_name"=>"title", "pclass"=>"css", "param_category_id"=>4, "html_attribute_ids"=>"24,27,49,53,54"} create_section_piece_param( section_piece, title) end @@ -29,14 +28,14 @@ } } - -section_piece = Spree::SectionPiece.find 'dialog-content' + +section_piece = find_section_piece 'dialog-content' unless section_piece.section_piece_params.exists?( :class_name=>'inner' ) content = { "editor_id"=>2, "class_name"=>"inner", "pclass"=>"css", "param_category_id"=>5, "html_attribute_ids"=>"31,32"} create_section_piece_param( section_piece, content) end section_piece.section_piece_params.where(['editor_id=? and class_name=?',2,'inner']).each{|spp| - spp.section_params.each{|sp| + spp.section_params.each{|sp| sp.add_default_value(32,'padding:0 10px 5px 10px') sp.add_default_value('32unset',bool_false) } diff --git a/spree_theme/db/seeds/119_131127_button.rb b/spree_theme/db/seeds/100/119_131127_button.rb similarity index 81% rename from spree_theme/db/seeds/119_131127_button.rb rename to spree_theme/db/seeds/100/119_131127_button.rb index 13d8de54..388c5484 100644 --- a/spree_theme/db/seeds/119_131127_button.rb +++ b/spree_theme/db/seeds/100/119_131127_button.rb @@ -1,7 +1,7 @@ -include SpreeTheme::SectionPieceParamHelper + #form button, button:hover -section_piece = Spree::SectionPiece.find 'container-form' +section_piece = find_section_piece 'container-form' button = { "editor_id"=>2, "class_name"=>"s_button", "pclass"=>"css", "param_category_id"=>45, "html_attribute_ids"=>"21,15,31,32,7,8,6"} create_section_piece_param( section_piece, button) @@ -18,5 +18,5 @@ button = { "editor_id"=>4, "class_name"=>"s_button_h", "pclass"=>"css", "param_category_id"=>46, "html_attribute_ids"=>"24,27,49,53,54"} create_section_piece_param( section_piece, button) -Spree::SectionPieceParam.update_all( {:class_name=>'a_h'}, {:class_name=>'ah'} ) -Spree::SectionPieceParam.update_all( {:class_name=>'as_h'}, {:class_name=>'ash'} ) +Spree::SectionPieceParam.where({:class_name=>'ah'}).update_all( {:class_name=>'a_h'} ) +Spree::SectionPieceParam.where({:class_name=>'ash'}).update_all( {:class_name=>'as_h'} ) diff --git a/spree_theme/db/seeds/101_product_related.rb b/spree_theme/db/seeds/101_product_related.rb deleted file mode 100644 index da51d10e..00000000 --- a/spree_theme/db/seeds/101_product_related.rb +++ /dev/null @@ -1,26 +0,0 @@ -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE -sps = Spree::SectionPiece.all -section_piece_hash= sps.inject({}){|h,sp| h[sp.slug] = sp; h} - -#add product_image_with_thumbnails -Spree::Section.where(:title=>'product image with thumbnails').each(&:destroy) -product_image_with_thumbnails = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"product image with thumbnails"}, - {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) - -product_image_with_thumbnails.add_section_piece(section_piece_hash['container'].id, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}).add_section_piece(section_piece_hash['product_main_image'].id) -product_image_with_thumbnails.reload -product_image_with_thumbnails.add_section_piece(section_piece_hash['container'].id, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}).add_section_piece(section_piece_hash['product_thumbnails'].id) - - -#add product_properties -Spree::Section.where(:title=>'product_properties').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"product properties"}, - {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['product_properties'].id) - -#add product_price -Spree::Section.where(:title=>'product_price').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"product price"}, - {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['product_price'].id) \ No newline at end of file diff --git a/spree_theme/db/seeds/113_root2.rb b/spree_theme/db/seeds/113_root2.rb deleted file mode 100644 index 558a233a..00000000 --- a/spree_theme/db/seeds/113_root2.rb +++ /dev/null @@ -1,17 +0,0 @@ -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE -sps = Spree::SectionPiece.all -section_piece_hash= sps.inject({}){|h,sp| h[sp.slug] = sp; h} - -root = Spree::Section.create_section(section_piece_hash['root'].id, {:title=>"root2"}, - {'content_layout'=>{85=>'clear:both'}, - 'page'=>{21=>"width:960px",'21unset'=>bool_false, 20=>"min-width:960px", '20hidden'=>bool_true}, - }) - -root.add_section_piece(section_piece_hash['container-title'].id)\ - .add_section_piece(section_piece_hash['container-form'].id)\ - .add_section_piece(section_piece_hash['container-link'].id)\ - .add_section_piece(section_piece_hash['container-table'].id) - - - diff --git a/spree_theme/db/seeds/119_131003_pimg.rb b/spree_theme/db/seeds/119_131003_pimg.rb deleted file mode 100644 index d6b1922b..00000000 --- a/spree_theme/db/seeds/119_131003_pimg.rb +++ /dev/null @@ -1,12 +0,0 @@ -include SpreeTheme::SectionPieceParamHelper - -#image margin, border,padding -section_piece = Spree::SectionPiece.find 'product_main_image' -img = {"editor_id"=>2, "class_name"=>"img", "pclass"=>"css", "param_category_id"=>30, "html_attribute_ids"=>"31,32,7,8,6"} - -create_section_piece_param( section_piece, img) - -section_piece = Spree::SectionPiece.find 'product_thumbnails' -img = {"editor_id"=>2, "class_name"=>"img", "pclass"=>"css", "param_category_id"=>31, "html_attribute_ids"=>"31,32,7,8,6"} - -create_section_piece_param( section_piece, img) diff --git a/spree_theme/db/seeds/200_logo.rb b/spree_theme/db/seeds/200/200_logo.rb similarity index 82% rename from spree_theme/db/seeds/200_logo.rb rename to spree_theme/db/seeds/200/200_logo.rb index 567a5f48..18db4ad3 100644 --- a/spree_theme/db/seeds/200_logo.rb +++ b/spree_theme/db/seeds/200/200_logo.rb @@ -2,8 +2,8 @@ bool_true = Spree::HtmlAttribute::BOOL_TRUE section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Logo"}, +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Logo"}, {'block'=>{'disabled_ha_ids'=>'111'}, #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['logo'].id) \ No newline at end of file +logo.add_section_piece(section_piece_hash['logo']) \ No newline at end of file diff --git a/spree_theme/db/seeds/201_minicart.rb b/spree_theme/db/seeds/200/201_minicart.rb similarity index 79% rename from spree_theme/db/seeds/201_minicart.rb rename to spree_theme/db/seeds/200/201_minicart.rb index c739e35c..f1f84cb7 100644 --- a/spree_theme/db/seeds/201_minicart.rb +++ b/spree_theme/db/seeds/200/201_minicart.rb @@ -2,8 +2,8 @@ bool_true = Spree::HtmlAttribute::BOOL_TRUE section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} -minicart = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Mini cart"}, +minicart = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Mini cart"}, {'block'=>{'disabled_ha_ids'=>'111'}, #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, 'inner'=>{'15hidden'=>bool_true}}) -minicart.add_section_piece(section_piece_hash['minicart'].id) \ No newline at end of file +minicart.add_section_piece(section_piece_hash['minicart']) \ No newline at end of file diff --git a/spree_theme/db/seeds/202_logged_menu.rb b/spree_theme/db/seeds/200/202_logged_menu.rb similarity index 77% rename from spree_theme/db/seeds/202_logged_menu.rb rename to spree_theme/db/seeds/200/202_logged_menu.rb index 74237a98..93e13a48 100644 --- a/spree_theme/db/seeds/202_logged_menu.rb +++ b/spree_theme/db/seeds/200/202_logged_menu.rb @@ -4,8 +4,8 @@ Spree::Section.where(:title=>'logged&unlogged menu').each(&:destroy) -logged_and_unlogged_menu = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"logged&unlogged menu"}, +logged_and_unlogged_menu = Spree::Section.create_section(section_piece_hash['container'], {:title=>"logged&unlogged menu"}, {'block'=>{'disabled_ha_ids'=>'111'}, #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, 'inner'=>{'15hidden'=>bool_true}}) -logged_and_unlogged_menu.add_section_piece(section_piece_hash['logged-and-unlogged-menu'].id).add_section_piece(section_piece_hash['menuitem'].id) \ No newline at end of file +logged_and_unlogged_menu.add_section_piece(section_piece_hash['logged-and-unlogged-menu']).add_section_piece(section_piece_hash['menuitem']) \ No newline at end of file diff --git a/spree_theme/db/seeds/203_password_recover.rb b/spree_theme/db/seeds/200/203_password_recover.rb similarity index 86% rename from spree_theme/db/seeds/203_password_recover.rb rename to spree_theme/db/seeds/200/203_password_recover.rb index 0ae7ed2d..4ceccd8c 100644 --- a/spree_theme/db/seeds/203_password_recover.rb +++ b/spree_theme/db/seeds/200/203_password_recover.rb @@ -4,8 +4,8 @@ #login_form Spree::Section.where(:title=>'password recover form').each(&:destroy) -order_address = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"password recover form"}, +order_address = Spree::Section.create_section(section_piece_hash['container'], {:title=>"password recover form"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -order_address.add_section_piece(section_piece_hash['container-title'].id) -order_address.add_section_piece(section_piece_hash['password-recover-form'].id) +order_address.add_section_piece(section_piece_hash['container-title']) +order_address.add_section_piece(section_piece_hash['password-recover-form']) diff --git a/spree_theme/db/seeds/200/204_fix_height_unset_changed.rb b/spree_theme/db/seeds/200/204_fix_height_unset_changed.rb new file mode 100644 index 00000000..1ee1794d --- /dev/null +++ b/spree_theme/db/seeds/200/204_fix_height_unset_changed.rb @@ -0,0 +1,14 @@ +html_attribute = find_html_attribute('height') +section_piece = find_section_piece('container') +section_piece_param = section_piece.section_piece_params.find_by( editor_id: 2, class_name: 'block' ) + +section_piece_param.add_param_value_event( html_attribute, Spree::ParamValue::EventEnum[:unset_changed] ) + +html_attribute = find_html_attribute('margin') +section_piece_param = section_piece.section_piece_params.find_by( editor_id: 2, class_name: 'inner' ) +section_piece_param.add_param_value_event( html_attribute, Spree::ParamValue::EventEnum[:unset_changed] ) + +html_attribute = find_html_attribute('padding') +section_piece_param.add_param_value_event( html_attribute, Spree::ParamValue::EventEnum[:unset_changed] ) +html_attribute = find_html_attribute('border-width') +section_piece_param.add_param_value_event( html_attribute, Spree::ParamValue::EventEnum[:unset_changed] ) diff --git a/spree_theme/db/seeds/205_product_option_values.rb b/spree_theme/db/seeds/200/205_product_option_values.rb similarity index 88% rename from spree_theme/db/seeds/205_product_option_values.rb rename to spree_theme/db/seeds/200/205_product_option_values.rb index 21d6d0e6..107fc1d3 100644 --- a/spree_theme/db/seeds/205_product_option_values.rb +++ b/spree_theme/db/seeds/200/205_product_option_values.rb @@ -2,7 +2,7 @@ bool_true = Spree::HtmlAttribute::BOOL_TRUE section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Product option values"}, +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Product option values"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['product-option-values'].id) \ No newline at end of file +logo.add_section_piece(section_piece_hash['product-option-values']) \ No newline at end of file diff --git a/spree_theme/db/seeds/200/206_taxon_description.rb b/spree_theme/db/seeds/200/206_taxon_description.rb new file mode 100644 index 00000000..48ca13b8 --- /dev/null +++ b/spree_theme/db/seeds/200/206_taxon_description.rb @@ -0,0 +1,8 @@ +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE +section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Taxon description"}, + {'block'=>{'disabled_ha_ids'=>'111'}, + 'inner'=>{'15hidden'=>bool_true}}) +logo.add_section_piece(section_piece_hash['taxon-description']) \ No newline at end of file diff --git a/spree_theme/db/seeds/200/207_site_form.rb b/spree_theme/db/seeds/200/207_site_form.rb new file mode 100644 index 00000000..2bf5b7a5 --- /dev/null +++ b/spree_theme/db/seeds/200/207_site_form.rb @@ -0,0 +1,9 @@ +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE +section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Site form"}, + {'block'=>{'disabled_ha_ids'=>'111'}, + 'inner'=>{'15hidden'=>bool_true}}) + +logo.add_section_piece(section_piece_hash['container-form']).add_section_piece(section_piece_hash['site-form']) \ No newline at end of file diff --git a/spree_theme/db/seeds/200/208_slider.rb b/spree_theme/db/seeds/200/208_slider.rb new file mode 100644 index 00000000..5838cbf8 --- /dev/null +++ b/spree_theme/db/seeds/200/208_slider.rb @@ -0,0 +1,18 @@ + + +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE + +section_piece = find_section_piece 'slider' +unless section_piece.section_piece_params.exists?( :class_name=>'title' ) + slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} + create_section_piece_param( section_piece, slides) +end + +section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Slider"}, + {'block'=>{'disabled_ha_ids'=>'111','21unset'=>'0','21'=>'width:600px','15unset'=>'0','15'=>'height:200px'}, + 'inner'=>{'15hidden'=>bool_true}}) + +logo.add_section_piece(section_piece_hash['slider'], {'slides'=>{'78unset'=>'0',78=>'width:600px','79unset'=>'0',79=>'height:200px'}}) diff --git a/spree_theme/db/seeds/200/209_breadcrumbs.rb b/spree_theme/db/seeds/200/209_breadcrumbs.rb new file mode 100644 index 00000000..29254a2e --- /dev/null +++ b/spree_theme/db/seeds/200/209_breadcrumbs.rb @@ -0,0 +1,18 @@ + + +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE + +#section_piece = find_section_piece 'slider' +#unless section_piece.section_piece_params.exists?( :class_name=>'title' ) +# slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} +# create_section_piece_param( section_piece, slides) +#end +Spree::Section.where(:title=>'breadcrumbs').each(&:destroy) + +section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Breadcrumbs"}, + {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) + +logo.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['breadcrumbs']) diff --git a/spree_theme/db/seeds/200/211_add_param_image_style.rb b/spree_theme/db/seeds/200/211_add_param_image_style.rb new file mode 100644 index 00000000..8902b39e --- /dev/null +++ b/spree_theme/db/seeds/200/211_add_param_image_style.rb @@ -0,0 +1,8 @@ + + + +#form button, button:hover +section_piece = find_section_piece 'product-image' + +button = { "editor_id"=>2, "class_name"=>"image_style", "pclass"=>"text", "param_category_id"=>28, "html_attribute_ids"=>"84"} +create_section_piece_param( section_piece, button) \ No newline at end of file diff --git a/spree_theme/db/seeds/212_disable_page_layout_slug.rb b/spree_theme/db/seeds/200/212_disable_page_layout_slug.rb similarity index 100% rename from spree_theme/db/seeds/212_disable_page_layout_slug.rb rename to spree_theme/db/seeds/200/212_disable_page_layout_slug.rb diff --git a/spree_theme/db/seeds/214_taxon_icon.rb b/spree_theme/db/seeds/200/214_taxon_icon.rb similarity index 75% rename from spree_theme/db/seeds/214_taxon_icon.rb rename to spree_theme/db/seeds/200/214_taxon_icon.rb index fbfe2914..1e310ef2 100644 --- a/spree_theme/db/seeds/214_taxon_icon.rb +++ b/spree_theme/db/seeds/200/214_taxon_icon.rb @@ -1,10 +1,9 @@ -include SpreeTheme::SectionPieceParamHelper + bool_false = Spree::HtmlAttribute::BOOL_FALSE bool_true = Spree::HtmlAttribute::BOOL_TRUE -#dialog width, height, -#section_piece = Spree::SectionPiece.find 'slider' +#section_piece = find_section_piece 'slider' #unless section_piece.section_piece_params.exists?( :class_name=>'title' ) # slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} # create_section_piece_param( section_piece, slides) @@ -13,7 +12,7 @@ section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Taxon icon"}, +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Taxon icon"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['taxon-icon'].id) \ No newline at end of file +logo.add_section_piece(section_piece_hash['taxon-icon']) diff --git a/spree_theme/db/seeds/200/215_minicart_with_link.rb b/spree_theme/db/seeds/200/215_minicart_with_link.rb new file mode 100644 index 00000000..df874eb0 --- /dev/null +++ b/spree_theme/db/seeds/200/215_minicart_with_link.rb @@ -0,0 +1,9 @@ +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE +section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} + +minicart = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Mini cart2"}, + {'block'=>{'disabled_ha_ids'=>'111'}, + #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, + 'inner'=>{'15hidden'=>bool_true}}) +minicart.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['minicart']) diff --git a/spree_theme/db/seeds/216_support_taxon_depth.rb b/spree_theme/db/seeds/200/216_support_taxon_depth.rb similarity index 87% rename from spree_theme/db/seeds/216_support_taxon_depth.rb rename to spree_theme/db/seeds/200/216_support_taxon_depth.rb index bb66a8bc..83b9aacb 100644 --- a/spree_theme/db/seeds/216_support_taxon_depth.rb +++ b/spree_theme/db/seeds/200/216_support_taxon_depth.rb @@ -1,7 +1,7 @@ -include SpreeTheme::SectionPieceParamHelper + #table title cell, border,padding -section_piece = Spree::SectionPiece.find 'menuitem' +section_piece = find_section_piece 'menuitem' [16,17,18].each_with_index{|param_category_id, i| a = { "editor_id"=>2, "class_name"=>"depth#{i+1}", "pclass"=>"css", "param_category_id"=>param_category_id, "html_attribute_ids"=>"31,32,7,8,6"} create_section_piece_param( section_piece, a) diff --git a/spree_theme/db/seeds/217_convert_pvalue_key_to_string.rb b/spree_theme/db/seeds/200/217_convert_pvalue_key_to_string.rb similarity index 100% rename from spree_theme/db/seeds/217_convert_pvalue_key_to_string.rb rename to spree_theme/db/seeds/200/217_convert_pvalue_key_to_string.rb diff --git a/spree_theme/db/seeds/218_convert_default_value_key_to_string.rb b/spree_theme/db/seeds/200/218_convert_default_value_key_to_string.rb similarity index 100% rename from spree_theme/db/seeds/218_convert_default_value_key_to_string.rb rename to spree_theme/db/seeds/200/218_convert_default_value_key_to_string.rb diff --git a/spree_theme/db/seeds/200/219_create_post_related_section.rb b/spree_theme/db/seeds/200/219_create_post_related_section.rb new file mode 100644 index 00000000..ae74112a --- /dev/null +++ b/spree_theme/db/seeds/200/219_create_post_related_section.rb @@ -0,0 +1,31 @@ + +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE + +#section_piece = find_section_piece 'slider' +#unless section_piece.section_piece_params.exists?( :class_name=>'title' ) +# slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} +# create_section_piece_param( section_piece, slides) +#end +Spree::Section.where(:title=>'Post title').each(&:destroy) +Spree::Section.where(:title=>'Post time').each(&:destroy) +Spree::Section.where(:title=>'Post author').each(&:destroy) +Spree::Section.where(:title=>'Post body').each(&:destroy) + +section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Post title"}, + {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) +logo.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['post-title']) + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Post time"}, + {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) +logo.add_section_piece(section_piece_hash['post-time']) + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Post author"}, + {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) +logo.add_section_piece(section_piece_hash['post-author']) + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Post body"}, + {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) +logo.add_section_piece(section_piece_hash['post-body']) diff --git a/spree_theme/db/seeds/220_post_cover.rb b/spree_theme/db/seeds/200/220_post_cover.rb similarity index 75% rename from spree_theme/db/seeds/220_post_cover.rb rename to spree_theme/db/seeds/200/220_post_cover.rb index ff3f975d..3aa817b6 100644 --- a/spree_theme/db/seeds/220_post_cover.rb +++ b/spree_theme/db/seeds/200/220_post_cover.rb @@ -1,10 +1,9 @@ -include SpreeTheme::SectionPieceParamHelper + bool_false = Spree::HtmlAttribute::BOOL_FALSE bool_true = Spree::HtmlAttribute::BOOL_TRUE -#dialog width, height, -#section_piece = Spree::SectionPiece.find 'slider' +#section_piece = find_section_piece 'slider' #unless section_piece.section_piece_params.exists?( :class_name=>'title' ) # slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} # create_section_piece_param( section_piece, slides) @@ -13,7 +12,7 @@ section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Post cover"}, +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Post cover"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['post-cover'].id) \ No newline at end of file +logo.add_section_piece(section_piece_hash['post-cover']) diff --git a/spree_theme/db/seeds/222_add_more_for_link.rb b/spree_theme/db/seeds/200/222_add_more_for_link.rb similarity index 85% rename from spree_theme/db/seeds/222_add_more_for_link.rb rename to spree_theme/db/seeds/200/222_add_more_for_link.rb index 5e0be8e7..483f7802 100644 --- a/spree_theme/db/seeds/222_add_more_for_link.rb +++ b/spree_theme/db/seeds/200/222_add_more_for_link.rb @@ -1,7 +1,7 @@ -include SpreeTheme::SectionPieceParamHelper + # add param link:hover -section_piece = Spree::SectionPiece.find 'menuitem' +section_piece = find_section_piece 'menuitem' link_hover = { "editor_id"=>2, "class_name"=>"a_h", "pclass"=>"css", "param_category_id"=>12, "html_attribute_ids"=>"7,8,6"} unless Spree::SectionPieceParam.where( link_hover ).present? @@ -9,14 +9,14 @@ end # add param container:hover, border -section_piece = Spree::SectionPiece.find 'container' +section_piece = find_section_piece 'container' container_hover = { "editor_id"=>2, "class_name"=>"block_h", "pclass"=>"css", "param_category_id"=>3, "html_attribute_ids"=>"7,8,6"} unless Spree::SectionPieceParam.where( container_hover ).present? create_section_piece_param( section_piece, container_hover) end # add param container:hover, background -section_piece = Spree::SectionPiece.find 'container' +section_piece = find_section_piece 'container' container_hover = { "editor_id"=>3, "class_name"=>"block_h", "pclass"=>"css", "param_category_id"=>3, "html_attribute_ids"=>"2,3,4,5"} unless Spree::SectionPieceParam.where( container_hover ).present? create_section_piece_param( section_piece, container_hover) diff --git a/spree_theme/db/seeds/223_add_text_indent.rb b/spree_theme/db/seeds/200/223_add_text_indent.rb similarity index 100% rename from spree_theme/db/seeds/223_add_text_indent.rb rename to spree_theme/db/seeds/200/223_add_text_indent.rb diff --git a/spree_theme/db/seeds/224_taxon_name2.rb b/spree_theme/db/seeds/200/224_taxon_name2.rb similarity index 79% rename from spree_theme/db/seeds/224_taxon_name2.rb rename to spree_theme/db/seeds/200/224_taxon_name2.rb index a3199096..d9125d99 100644 --- a/spree_theme/db/seeds/224_taxon_name2.rb +++ b/spree_theme/db/seeds/200/224_taxon_name2.rb @@ -5,9 +5,9 @@ #taxon name Spree::Section.where(:title=>'taxon name as link').each(&:destroy) -product_properties = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"taxon name as link"}, +product_properties = Spree::Section.create_section(section_piece_hash['container'], {:title=>"taxon name as link"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -product_properties.add_section_piece(section_piece_hash['container-link'].id).add_section_piece(section_piece_hash['taxon-name'].id) +product_properties.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['taxon-name']) # \ No newline at end of file diff --git a/spree_theme/db/seeds/225_add_link_width.rb b/spree_theme/db/seeds/200/225_add_link_width.rb similarity index 100% rename from spree_theme/db/seeds/225_add_link_width.rb rename to spree_theme/db/seeds/200/225_add_link_width.rb diff --git a/spree_theme/db/seeds/228_grouped_option_values_selector.rb b/spree_theme/db/seeds/200/228_grouped_option_values_selector.rb similarity index 79% rename from spree_theme/db/seeds/228_grouped_option_values_selector.rb rename to spree_theme/db/seeds/200/228_grouped_option_values_selector.rb index f1bf1837..0169806e 100644 --- a/spree_theme/db/seeds/228_grouped_option_values_selector.rb +++ b/spree_theme/db/seeds/200/228_grouped_option_values_selector.rb @@ -1,10 +1,9 @@ -include SpreeTheme::SectionPieceParamHelper + bool_false = Spree::HtmlAttribute::BOOL_FALSE bool_true = Spree::HtmlAttribute::BOOL_TRUE -#dialog width, height, -#section_piece = Spree::SectionPiece.find 'slider' +#section_piece = find_section_piece 'slider' #unless section_piece.section_piece_params.exists?( :class_name=>'title' ) # slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} # create_section_piece_param( section_piece, slides) @@ -13,7 +12,7 @@ section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"grouped option values selector"}, +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"grouped option values selector"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['grouped-option-values-selector'].id) \ No newline at end of file +logo.add_section_piece(section_piece_hash['grouped-option-values-selector']) diff --git a/spree_theme/db/seeds/229_grouped_option_values_in_slide_style.rb b/spree_theme/db/seeds/200/229_grouped_option_values_in_slide_style.rb similarity index 79% rename from spree_theme/db/seeds/229_grouped_option_values_in_slide_style.rb rename to spree_theme/db/seeds/200/229_grouped_option_values_in_slide_style.rb index 4c31afb1..d81c7ec6 100644 --- a/spree_theme/db/seeds/229_grouped_option_values_in_slide_style.rb +++ b/spree_theme/db/seeds/200/229_grouped_option_values_in_slide_style.rb @@ -1,10 +1,9 @@ -include SpreeTheme::SectionPieceParamHelper + bool_false = Spree::HtmlAttribute::BOOL_FALSE bool_true = Spree::HtmlAttribute::BOOL_TRUE -#dialog width, height, -#section_piece = Spree::SectionPiece.find 'slider' +#section_piece = find_section_piece 'slider' #unless section_piece.section_piece_params.exists?( :class_name=>'title' ) # slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} # create_section_piece_param( section_piece, slides) @@ -13,7 +12,7 @@ section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"option values in slide style"}, +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"option values in slide style"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['option-values-in-slide-style'].id) \ No newline at end of file +logo.add_section_piece(section_piece_hash['option-values-in-slide-style']) diff --git a/spree_theme/db/seeds/230_product_customization_options.rb b/spree_theme/db/seeds/200/230_product_customization_options.rb similarity index 79% rename from spree_theme/db/seeds/230_product_customization_options.rb rename to spree_theme/db/seeds/200/230_product_customization_options.rb index 52ecccc0..d3b33998 100644 --- a/spree_theme/db/seeds/230_product_customization_options.rb +++ b/spree_theme/db/seeds/200/230_product_customization_options.rb @@ -1,10 +1,9 @@ -include SpreeTheme::SectionPieceParamHelper + bool_false = Spree::HtmlAttribute::BOOL_FALSE bool_true = Spree::HtmlAttribute::BOOL_TRUE -#dialog width, height, -#section_piece = Spree::SectionPiece.find 'slider' +#section_piece = find_section_piece 'slider' #unless section_piece.section_piece_params.exists?( :class_name=>'title' ) # slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} # create_section_piece_param( section_piece, slides) @@ -13,7 +12,7 @@ section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"product customization options"}, +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product customization options"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['product-customization-options'].id) \ No newline at end of file +logo.add_section_piece(section_piece_hash['product-customization-options']) diff --git a/spree_theme/db/seeds/232_rename_h6_to_theme_title.rb b/spree_theme/db/seeds/200/232_rename_h6_to_theme_title.rb similarity index 100% rename from spree_theme/db/seeds/232_rename_h6_to_theme_title.rb rename to spree_theme/db/seeds/200/232_rename_h6_to_theme_title.rb diff --git a/spree_theme/db/seeds/234_add_param_selected.rb b/spree_theme/db/seeds/200/234_add_param_selected.rb similarity index 78% rename from spree_theme/db/seeds/234_add_param_selected.rb rename to spree_theme/db/seeds/200/234_add_param_selected.rb index d528eec1..22a2716a 100644 --- a/spree_theme/db/seeds/234_add_param_selected.rb +++ b/spree_theme/db/seeds/200/234_add_param_selected.rb @@ -1,7 +1,7 @@ -include SpreeTheme::SectionPieceParamHelper -section_piece = Spree::SectionPiece.find('container-link') + +section_piece = find_section_piece('container-link') s_a_sel = { "editor_id"=>3, "class_name"=>"s_a_sel", "pclass"=>"css", "param_category_id"=>13, "html_attribute_ids"=>"2,3,4,5"} create_section_piece_param( section_piece, s_a_sel) diff --git a/spree_theme/db/seeds/235_add_container_header0.rb b/spree_theme/db/seeds/200/235_add_container_header0.rb similarity index 84% rename from spree_theme/db/seeds/235_add_container_header0.rb rename to spree_theme/db/seeds/200/235_add_container_header0.rb index d2103402..be29b3bd 100644 --- a/spree_theme/db/seeds/235_add_container_header0.rb +++ b/spree_theme/db/seeds/200/235_add_container_header0.rb @@ -1,7 +1,7 @@ -include SpreeTheme::SectionPieceParamHelper + #table title cell, border,padding -section_piece = Spree::SectionPiece.find 'container-header0' +section_piece = find_section_piece 'container-header0' title = { "editor_id"=>2, "class_name"=>"s_header0", "pclass"=>"css", "param_category_id"=>10, "html_attribute_ids"=>"31,32,7,8,6"} create_section_piece_param( section_piece, title) title = { "editor_id"=>3, "class_name"=>"s_header0", "pclass"=>"css", "param_category_id"=>10, "html_attribute_ids"=>"2,3,4,5"} diff --git a/spree_theme/db/seeds/200/236_add_option_values_selector2.rb b/spree_theme/db/seeds/200/236_add_option_values_selector2.rb new file mode 100644 index 00000000..e1a6ba0c --- /dev/null +++ b/spree_theme/db/seeds/200/236_add_option_values_selector2.rb @@ -0,0 +1,21 @@ + + +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE + +Spree::Section.where(:title=>'Grouped option values selector').each{|section| + section.update_attribute( :is_enabled, false ) +} +Spree::Section.where(:title=>'container with title').each{|section| + section.update_attribute( :is_enabled, false ) +} + + +Spree::Section.where(:title=>'Grouped option values selector2').each(&:destroy) + +section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"grouped option values selector2"}, + {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) + +logo.add_section_piece( section_piece_hash['container-header0'] ).add_section_piece( section_piece_hash['container-link'] ).add_section_piece(section_piece_hash['grouped-option-values-selector']) diff --git a/spree_theme/db/seeds/237_add_param_link_unavailable.rb b/spree_theme/db/seeds/200/237_add_param_link_unavailable.rb similarity index 78% rename from spree_theme/db/seeds/237_add_param_link_unavailable.rb rename to spree_theme/db/seeds/200/237_add_param_link_unavailable.rb index c1a344e5..27bb239c 100644 --- a/spree_theme/db/seeds/237_add_param_link_unavailable.rb +++ b/spree_theme/db/seeds/200/237_add_param_link_unavailable.rb @@ -1,7 +1,7 @@ -include SpreeTheme::SectionPieceParamHelper -section_piece = Spree::SectionPiece.find('container-link') + +section_piece = find_section_piece('container-link') s_a_sel = { "editor_id"=>3, "class_name"=>"s_a_una", "pclass"=>"css", "param_category_id"=>15, "html_attribute_ids"=>"2,3,4,5"} create_section_piece_param( section_piece, s_a_sel) diff --git a/spree_theme/db/seeds/238_disable_minicart.rb b/spree_theme/db/seeds/200/238_disable_minicart.rb similarity index 100% rename from spree_theme/db/seeds/238_disable_minicart.rb rename to spree_theme/db/seeds/200/238_disable_minicart.rb diff --git a/spree_theme/db/seeds/200/239_add_th.rb b/spree_theme/db/seeds/200/239_add_th.rb new file mode 100644 index 00000000..793db376 --- /dev/null +++ b/spree_theme/db/seeds/200/239_add_th.rb @@ -0,0 +1,16 @@ + + +section_piece = find_section_piece 'container-table' + +th = {"editor_id"=>2, "class_name"=>"s_th", "pclass"=>"css", "param_category_id"=>81, "html_attribute_ids"=>"32,7,8,6"} +unless Spree::SectionPieceParam.where( th ).any? + create_section_piece_param( section_piece, th) +end + +section_params = Spree::SectionParam.eager_load(:section_piece_param).where(["spree_section_piece_params.class_name=?",'block_h']) + +if section_params.any? + section_params.each{|param| + param.update_attribute(:is_enabled, false) + } +end diff --git a/spree_theme/db/seeds/200/23a_add_container_dl.rb b/spree_theme/db/seeds/200/23a_add_container_dl.rb new file mode 100644 index 00000000..89786be9 --- /dev/null +++ b/spree_theme/db/seeds/200/23a_add_container_dl.rb @@ -0,0 +1,5 @@ +root2 = Spree::Section.find_by_title('root2') + +container_dl = find_section_piece 'container-dl' + +root2.leaves.last.add_section_piece( container_dl ) diff --git a/spree_theme/db/seeds/23b_add_param_dl.rb b/spree_theme/db/seeds/200/23b_add_param_dl.rb similarity index 91% rename from spree_theme/db/seeds/23b_add_param_dl.rb rename to spree_theme/db/seeds/200/23b_add_param_dl.rb index 989cea9e..4728ae16 100644 --- a/spree_theme/db/seeds/23b_add_param_dl.rb +++ b/spree_theme/db/seeds/200/23b_add_param_dl.rb @@ -1,6 +1,6 @@ -include SpreeTheme::SectionPieceParamHelper -section_piece = Spree::SectionPiece.find('container-dl') + +section_piece = find_section_piece('container-dl') dt = { "editor_id"=>2, "class_name"=>"s_dt", "pclass"=>"css", "param_category_id"=>70, "html_attribute_ids"=>"21,31,32,7,8,6"} create_section_piece_param( section_piece, dt) diff --git a/spree_theme/db/seeds/200/23c_fix_assigned_resource_ids.rb b/spree_theme/db/seeds/200/23c_fix_assigned_resource_ids.rb new file mode 100644 index 00000000..0d3f7d2d --- /dev/null +++ b/spree_theme/db/seeds/200/23c_fix_assigned_resource_ids.rb @@ -0,0 +1,10 @@ +SpreeTheme.site_class.all.each{|site| + site.stores.first.template_themes.each{|template_theme| + template_theme.assigned_resource_ids.each_pair{|key,val| + # fix :undefined method `classify' for :"spree/taxon":Symbol + #spree_theme/app/models/spree/template_resource.rb:44:in `source_class' + val.stringify_keys! + } + template_theme.save! + } +} diff --git a/spree_theme/db/seeds/200/23d_fix_template_text_permalink.rb b/spree_theme/db/seeds/200/23d_fix_template_text_permalink.rb new file mode 100644 index 00000000..50733e32 --- /dev/null +++ b/spree_theme/db/seeds/200/23d_fix_template_text_permalink.rb @@ -0,0 +1,6 @@ +SpreeTheme.site_class.all.each{|site| + site.template_texts.each{|template_text| + template_text.valid? + template_text.save! + } +} diff --git a/spree_theme/db/seeds/200/23e_add_template_related_buttons.rb b/spree_theme/db/seeds/200/23e_add_template_related_buttons.rb new file mode 100644 index 00000000..d5fde124 --- /dev/null +++ b/spree_theme/db/seeds/200/23e_add_template_related_buttons.rb @@ -0,0 +1,16 @@ +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE +sps = Spree::SectionPiece.all +section_piece_hash= sps.inject({}){|h,sp| h[sp.slug] = sp; h} + +#theme preview button +Spree::Section.where(:title=>'preview theme button').each(&:destroy) +theme_related_button = Spree::Section.create_section(section_piece_hash['container'], {:title=>"preview theme button"}, + {'inner'=>{'15hidden'=>bool_true}}) +theme_related_button.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['preview-theme-button']) + +#new site with selected theme button +Spree::Section.where(:title=>'install theme with site button').each(&:destroy) +theme_related_button = Spree::Section.create_section(section_piece_hash['container'], {:title=>"install theme with site button"}, + {'inner'=>{'15hidden'=>bool_true}}) +theme_related_button.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['install-theme-with-site-button']) diff --git a/spree_theme/db/seeds/200/23f_change_to_root2.rb b/spree_theme/db/seeds/200/23f_change_to_root2.rb new file mode 100644 index 00000000..124f944d --- /dev/null +++ b/spree_theme/db/seeds/200/23f_change_to_root2.rb @@ -0,0 +1,7 @@ +root2 = Spree::Section.find_by_title('root2') + +template2 = Spree::TemplateTheme.find_by_id( 2 ) + +if root2 && template2 + template2.page_layout_root.replace_with root2 +end diff --git a/spree_theme/db/seeds/23g_add_container_fixed.rb b/spree_theme/db/seeds/200/23g_add_container_fixed.rb similarity index 84% rename from spree_theme/db/seeds/23g_add_container_fixed.rb rename to spree_theme/db/seeds/200/23g_add_container_fixed.rb index ede67d1d..5e545505 100644 --- a/spree_theme/db/seeds/23g_add_container_fixed.rb +++ b/spree_theme/db/seeds/200/23g_add_container_fixed.rb @@ -1,7 +1,7 @@ -include SpreeTheme::SectionPieceParamHelper + #table title cell, border,padding -section_piece = Spree::SectionPiece.find 'container-fixed' +section_piece = find_section_piece 'container-fixed' fixed_position = { "editor_id"=>2, "class_name"=>"fixed_position", "pclass"=>"css", "param_category_id"=>7, "html_attribute_ids"=>"41,40,33,35"} unless section_piece.section_piece_params.where(:class_name=>'fixed_position').any? create_section_piece_param( section_piece, fixed_position) @@ -15,7 +15,7 @@ #fixed_container Spree::Section.where(:title=>'fixed container').each(&:destroy) -fixed_container = Spree::Section.create_section( section_piece_hash['container'].id, {:title=>"fixed container"}, +fixed_container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"fixed container"}, { 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'15'=>"height:100px",'15unset'=>bool_false,'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true}} ) -fixed_container.add_section_piece(section_piece_hash['container-fixed'].id) +fixed_container.add_section_piece(section_piece_hash['container-fixed']) diff --git a/spree_theme/db/seeds/200/23h_hover_effect_slide.rb b/spree_theme/db/seeds/200/23h_hover_effect_slide.rb new file mode 100644 index 00000000..f2a891cc --- /dev/null +++ b/spree_theme/db/seeds/200/23h_hover_effect_slide.rb @@ -0,0 +1,7 @@ + +#hover_effect_container +Spree::Section.where(:title=>'hover effect slide container').each(&:destroy) +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"hover effect slide container",:content_param=>4}, +{ 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true}} +) +container.add_section_piece(section_piece_hash['hover-effect-slide-container']) diff --git a/spree_theme/db/seeds/200/23i_add_mobile_root.rb b/spree_theme/db/seeds/200/23i_add_mobile_root.rb new file mode 100644 index 00000000..ab653693 --- /dev/null +++ b/spree_theme/db/seeds/200/23i_add_mobile_root.rb @@ -0,0 +1,5 @@ + +Spree::Section.where(:title=>'root for mobile').each(&:destroy) +root_for_terminal = Spree::Section.create_section(section_piece_hash['root-for-mobile'], {:title=>"root for mobile"}) + + diff --git a/spree_theme/db/seeds/200/23j_add_height_into_menu_item.rb b/spree_theme/db/seeds/200/23j_add_height_into_menu_item.rb new file mode 100644 index 00000000..5ebae645 --- /dev/null +++ b/spree_theme/db/seeds/200/23j_add_height_into_menu_item.rb @@ -0,0 +1,8 @@ +# add html_attribute margin into a +spps = Spree::SectionPieceParam.where(:editor_id=>2,:class_name=>'a').all + +if spps.size == 1 + margin = Spree::HtmlAttribute.find 31 #margin + height = Spree::HtmlAttribute.find 15 #height + spps.first.insert_html_attribute height, margin +end diff --git a/spree_theme/db/seeds/200/23k_taxon_tooltips.rb b/spree_theme/db/seeds/200/23k_taxon_tooltips.rb new file mode 100644 index 00000000..d18aa716 --- /dev/null +++ b/spree_theme/db/seeds/200/23k_taxon_tooltips.rb @@ -0,0 +1,9 @@ + + +Spree::Section.where(:title=>'Taxon tooltips').each(&:destroy) + + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Taxon tooltips"}, + {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) + +logo.add_section_piece(section_piece_hash['taxon-tooltips']) \ No newline at end of file diff --git a/spree_theme/db/seeds/200/23l_hover_effect_show.rb b/spree_theme/db/seeds/200/23l_hover_effect_show.rb new file mode 100644 index 00000000..2ece125f --- /dev/null +++ b/spree_theme/db/seeds/200/23l_hover_effect_show.rb @@ -0,0 +1,28 @@ +#hover_effect_container +Spree::Section.where(:title=>'hover effect show container').each(&:destroy) +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"hover effect show container", :content_param=>Spree::Section::MouseEffect.show}, + { 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true}} +) +container.add_section_piece(section_piece_hash['hover-effect-show-container']) + +#hover_effect_container +Spree::Section.where(:title=>'hover effect expansion container').each(&:destroy) +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"hover effect expansion container", :content_param=>Spree::Section::MouseEffect.expansion}, + { 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true}} +) +container.add_section_piece(section_piece_hash['hover-effect-expansion-container']) + +#hover_effect_container +Spree::Section.where(:title=>'hover effect overlay container').each(&:destroy) +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"hover effect overlay container", :content_param=> Spree::Section::MouseEffect.overlay}, + { 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true}} +) +container.add_section_piece(section_piece_hash['hover-effect-overlay-container']) + + +#hover_effect_container +Spree::Section.where(:title=>'hover effect popup container').each(&:destroy) +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"hover effect popup container", :content_param=> Spree::Section::MouseEffect.popup}, + { 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true}} +) +container.add_section_piece(section_piece_hash['hover-effect-popup-container']) diff --git a/spree_theme/db/seeds/200/23m_baidu_map.rb b/spree_theme/db/seeds/200/23m_baidu_map.rb new file mode 100644 index 00000000..13b954e5 --- /dev/null +++ b/spree_theme/db/seeds/200/23m_baidu_map.rb @@ -0,0 +1,26 @@ + + +Spree::Section.where(:title=>'Baidu Map').each(&:destroy) + + +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Baidu Map"}, + {'block'=>{'disabled_ha_ids'=>'111', '21'=>'width:300px','15'=>'height:300px','15unset'=>bool_false,'21unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true}}) + +logo.add_section_piece(section_piece_hash['baidu-map']) + +# add param inner_width +# add width pv changed event +block_param = Spree::SectionPieceParam.where(:section_piece_id=>2, :class_name=>"block", :editor_id=>2).first +block_param.param_conditions[21]=["pv_changed","unset_changed"] +block_param.save! +#inner +inner_param = Spree::SectionPieceParam.where(:section_piece_id=>2, :class_name=>"inner", :editor_id=>2).first +inner_param.insert_html_attribute( Spree::HtmlAttribute.find(21) ) +inner_param.section_params.each{|sp| + sp.default_value['21hidden'] = bool_true + sp.save! + sp.param_values.each{|pv| + pv.pvalue['21hidden'] = bool_true + pv.save! + } +} diff --git a/spree_theme/db/seeds/200/23n_add_param_hovered.rb b/spree_theme/db/seeds/200/23n_add_param_hovered.rb new file mode 100644 index 00000000..97fa8cf2 --- /dev/null +++ b/spree_theme/db/seeds/200/23n_add_param_hovered.rb @@ -0,0 +1,7 @@ +# add param link:hover +section_piece = find_section_piece 'hover-effect-expansion-container' + +hovered = { "editor_id"=>4, "class_name"=>"block_hovered", "pclass"=>"css", "param_category_id"=>101, "html_attribute_ids"=>"23,24,25,27,49,53,54,56"} +unless Spree::SectionPieceParam.where( hovered ).present? + create_section_piece_param( section_piece, hovered) +end \ No newline at end of file diff --git a/spree_theme/db/seeds/200/23p_add_section_usage.rb b/spree_theme/db/seeds/200/23p_add_section_usage.rb new file mode 100644 index 00000000..aee92b07 --- /dev/null +++ b/spree_theme/db/seeds/200/23p_add_section_usage.rb @@ -0,0 +1,15 @@ +Spree::Section.roots.each{|section| + case section.title + when /image with thumbnails/ + section.usage = 'image-with-thumbnails' + when /image/ + section.usage = 'image' + when /dialog/ + section.usage = 'dialog' + when /container/ + section.usage = 'container' + when /root/ + section.usage = 'root' + end + section.save! +} diff --git a/spree_theme/db/seeds/200/23r_bootstrap_container.rb b/spree_theme/db/seeds/200/23r_bootstrap_container.rb new file mode 100644 index 00000000..91cfc3c7 --- /dev/null +++ b/spree_theme/db/seeds/200/23r_bootstrap_container.rb @@ -0,0 +1,10 @@ +Spree::Section.where(:title=>'Bootstrap container').each(&:destroy) + + +bootstrap_container = Spree::Section.create_section(section_piece_hash['bootstrap-container'], {:title=>"Bootstrap container", :usage=>'container'}) + + +Spree::Section.where(:title=>'Bootstrap column').each(&:destroy) + + +bootstrap_column = Spree::Section.create_section(section_piece_hash['bootstrap-column'], {:title=>"Bootstrap column", :usage=>'container'}) diff --git a/spree_theme/db/seeds/200/23s_bootstrap_container_position_params.rb b/spree_theme/db/seeds/200/23s_bootstrap_container_position_params.rb new file mode 100644 index 00000000..36d0586e --- /dev/null +++ b/spree_theme/db/seeds/200/23s_bootstrap_container_position_params.rb @@ -0,0 +1,14 @@ +section_piece = find_section_piece 'bootstrap-column' +block = {"editor_id"=>2, "class_name"=>"block", "pclass"=>"css", "param_category_id"=>2, "html_attribute_ids"=>"31,32,7,8,6"} +create_section_piece_param( section_piece, block) + +section_piece = find_section_piece 'bootstrap-container' + +inner = {"editor_id"=>2, "class_name"=>"inner", "pclass"=>"css", "param_category_id"=>2, "html_attribute_ids"=>"31,32,7,8,6"} +create_section_piece_param( section_piece, inner) + +inner = { "editor_id"=>3, "class_name"=>"inner", "pclass"=>"css", "param_category_id"=>2, "html_attribute_ids"=>"2,3,4,5"} +create_section_piece_param( section_piece, inner) + +inner = { "editor_id"=>4, "class_name"=>"inner", "pclass"=>"css", "param_category_id"=>2, "html_attribute_ids"=>"24,27,49,53,54"} +create_section_piece_param( section_piece, inner) diff --git a/spree_theme/db/seeds/200/23t_mobile_root2.rb b/spree_theme/db/seeds/200/23t_mobile_root2.rb new file mode 100644 index 00000000..8b47e219 --- /dev/null +++ b/spree_theme/db/seeds/200/23t_mobile_root2.rb @@ -0,0 +1,14 @@ + + +root = Spree::Section.create_section(section_piece_hash['root-for-mobile'], {:title=>"root2 for mobile"}) + +root.add_section_piece(section_piece_hash['container-title'])\ + .add_section_piece(section_piece_hash['container-form'])\ + .add_section_piece(section_piece_hash['container-link'])\ + .add_section_piece(section_piece_hash['container-table']) + +#section = Spree::Section.find_by_title 'root-for-mobile' + +#templates = Spree::TemplateTheme.all( ) + + diff --git a/spree_theme/db/seeds/200/23u_post_summary.rb b/spree_theme/db/seeds/200/23u_post_summary.rb new file mode 100644 index 00000000..954e858e --- /dev/null +++ b/spree_theme/db/seeds/200/23u_post_summary.rb @@ -0,0 +1,4 @@ + +post_summary = Spree::Section.create_section(section_piece_hash['container'], {:title=>"post summary",:content_param=>100}, {'inner'=>{'15hidden'=>bool_true}}) + +post_summary.add_section_piece(section_piece_hash['post-summary']) diff --git a/spree_theme/db/seeds/200/23v_font_awesome.rb b/spree_theme/db/seeds/200/23v_font_awesome.rb new file mode 100644 index 00000000..3456e98c --- /dev/null +++ b/spree_theme/db/seeds/200/23v_font_awesome.rb @@ -0,0 +1,10 @@ + +post_summary = Spree::Section.create_section(section_piece_hash['container'], {:title=>"bootstrap glyphicon"}, {'inner'=>{'15hidden'=>bool_true}}) + +post_summary.add_section_piece(section_piece_hash['bootstrap-glyphicon']) + + +post_summary = Spree::Section.create_section(section_piece_hash['container'], {:title=>"font awesome"}, {'inner'=>{'15hidden'=>bool_true}}) + +post_summary.add_section_piece(section_piece_hash['font-awesome']) + diff --git a/spree_theme/db/seeds/200/23w_site_title.rb b/spree_theme/db/seeds/200/23w_site_title.rb new file mode 100644 index 00000000..24e0eb2c --- /dev/null +++ b/spree_theme/db/seeds/200/23w_site_title.rb @@ -0,0 +1,3 @@ +post_summary = Spree::Section.create_section(section_piece_hash['container'], {:title=>"site title"}, {'inner'=>{'15hidden'=>bool_true}}) + +post_summary.add_section_piece(section_piece_hash['site-title']) diff --git a/spree_theme/db/seeds/23x_add_dialog3.rbx b/spree_theme/db/seeds/200/23x_add_dialog3.rbx similarity index 88% rename from spree_theme/db/seeds/23x_add_dialog3.rbx rename to spree_theme/db/seeds/200/23x_add_dialog3.rbx index 506f6b0b..0660188c 100644 --- a/spree_theme/db/seeds/23x_add_dialog3.rbx +++ b/spree_theme/db/seeds/200/23x_add_dialog3.rbx @@ -8,10 +8,10 @@ bool_true = Spree::HtmlAttribute::BOOL_TRUE section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} Spree::Section.where(:title=>'dialog3').each(&:destroy) -dialog = Spree::Section.create_section(section_piece_hash['dialog'].id, {:title=>"dialog3"}) +dialog = Spree::Section.create_section(section_piece_hash['dialog'], {:title=>"dialog3"}) -dialog_container = dialog.add_section_piece(section_piece_hash['container'].id, +dialog_container = dialog.add_section_piece(section_piece_hash['container'], { 'inner'=>{'15hidden'=>bool_true, '15'=>'height:598px', '7'=>'border-style:solid solid solid solid', '8'=>'border-width:1px 1px 1px 1px', '6'=>'border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC', '7unset'=>bool_false,'8unset'=>bool_false,'6unset'=>bool_false, @@ -20,7 +20,7 @@ dialog_container = dialog.add_section_piece(section_piece_hash['container'].id, 'block'=>{'21'=>'width:600px', '21unset'=>bool_false,}, 'content_layout'=>{'disabled_ha_ids'=>'85'}}) -dialog_container.add_section_piece(section_piece_hash['dialog-title'].id) -dialog_content = dialog_container.add_section_piece(section_piece_hash['dialog-content'].id) -dialog_content.add_section_piece(section_piece_hash['container-form'].id ).add_section_piece(section_piece_hash['container-table'].id ) +dialog_container.add_section_piece(section_piece_hash['dialog-title']) +dialog_content = dialog_container.add_section_piece(section_piece_hash['dialog-content']) +dialog_content.add_section_piece(section_piece_hash['container-form'] ).add_section_piece(section_piece_hash['container-table'] ) diff --git a/spree_theme/db/seeds/23x_add_param_for_option_slides.rbx b/spree_theme/db/seeds/200/23x_add_param_for_option_slides.rbx similarity index 97% rename from spree_theme/db/seeds/23x_add_param_for_option_slides.rbx rename to spree_theme/db/seeds/200/23x_add_param_for_option_slides.rbx index c74e113f..a46b3b6e 100644 --- a/spree_theme/db/seeds/23x_add_param_for_option_slides.rbx +++ b/spree_theme/db/seeds/200/23x_add_param_for_option_slides.rbx @@ -1,4 +1,3 @@ -include SpreeTheme::SectionPieceParamHelper # add param option type presentation margin, padding, border, background section_piece = Spree::SectionPiece.find 'option-values-in-slide-style' diff --git a/spree_theme/db/seeds/200/23x_support_border_radius.rb b/spree_theme/db/seeds/200/23x_support_border_radius.rb new file mode 100644 index 00000000..01d63968 --- /dev/null +++ b/spree_theme/db/seeds/200/23x_support_border_radius.rb @@ -0,0 +1,16 @@ +# add html_attribute border_radius into block, a +spps = Spree::SectionPieceParam.where(:section_piece_id=>2, :editor_id=>2,:class_name=>'inner').all + +border_radius = Spree::HtmlAttribute.find_by_css_name 'border-radius' +border_color = Spree::HtmlAttribute.find_by_css_name 'border-color' + +if spps.size == 1 + spps.first.insert_html_attribute border_radius, border_color +end + + +spps = Spree::SectionPieceParam.where(:editor_id=>2,:class_name=>'a').all + +if spps.size == 1 + spps.first.insert_html_attribute border_radius, border_color +end diff --git a/spree_theme/db/seeds/200/23y_taxon_summary.rb b/spree_theme/db/seeds/200/23y_taxon_summary.rb new file mode 100644 index 00000000..5c72d86a --- /dev/null +++ b/spree_theme/db/seeds/200/23y_taxon_summary.rb @@ -0,0 +1,4 @@ + +post_summary = Spree::Section.create_section(section_piece_hash['container'], {:title=>"taxon summary",:content_param=>100}, {'inner'=>{'15hidden'=>bool_true}}) + +post_summary.add_section_piece(section_piece_hash['taxon-summary']) diff --git a/spree_theme/db/seeds/200/23z_taxon_more.rb b/spree_theme/db/seeds/200/23z_taxon_more.rb new file mode 100644 index 00000000..d26a126b --- /dev/null +++ b/spree_theme/db/seeds/200/23z_taxon_more.rb @@ -0,0 +1,4 @@ + +post_summary = Spree::Section.create_section(section_piece_hash['container'], {:title=>"taxon more",:content_param=>1}, {'inner'=>{'15hidden'=>bool_true}}) + +post_summary.add_section_piece(section_piece_hash['taxon-more']) diff --git a/spree_theme/db/seeds/200/240_change_to_mobile_root2.rb b/spree_theme/db/seeds/200/240_change_to_mobile_root2.rb new file mode 100644 index 00000000..71b26bee --- /dev/null +++ b/spree_theme/db/seeds/200/240_change_to_mobile_root2.rb @@ -0,0 +1,7 @@ +root2 = Spree::Section.find_by_title('root2 for mobile') + +template2 = Spree::TemplateTheme.for_mobile.last + +if root2 && template2 + template2.page_layout_root.replace_with root2 +end diff --git a/spree_theme/db/seeds/200/241_slider_scrolling.rb b/spree_theme/db/seeds/200/241_slider_scrolling.rb new file mode 100644 index 00000000..3f46e8d5 --- /dev/null +++ b/spree_theme/db/seeds/200/241_slider_scrolling.rb @@ -0,0 +1,6 @@ + +slider = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Slider scrolling"}, +{'block'=>{'disabled_ha_ids'=>'111','21unset'=>'0','21'=>'width:600px','15unset'=>'0','15'=>'height:80px'}, + 'inner'=>{'15hidden'=>bool_true}}) + +slider.add_section_piece(section_piece_hash['slider-scrolling']) diff --git a/spree_theme/db/seeds/200/242_hover_effect_popup_menu.rb b/spree_theme/db/seeds/200/242_hover_effect_popup_menu.rb new file mode 100644 index 00000000..e4397920 --- /dev/null +++ b/spree_theme/db/seeds/200/242_hover_effect_popup_menu.rb @@ -0,0 +1,6 @@ +#hover_effect_container +Spree::Section.where(:title=>'hover effect popup menu container').each(&:destroy) +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"hover effect popup menu container", :content_param=> Spree::Section::MouseEffect.popup_menu, :usage=>'container'}, + { 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}} +) +container.add_section_piece(section_piece_hash['hover-effect-popup-menu-container']) diff --git a/spree_theme/db/seeds/200/243_enable_block_hover.rb b/spree_theme/db/seeds/200/243_enable_block_hover.rb new file mode 100644 index 00000000..71040b24 --- /dev/null +++ b/spree_theme/db/seeds/200/243_enable_block_hover.rb @@ -0,0 +1,11 @@ +section_piece_params = Spree::SectionPieceParam.includes(:section_params).where(class_name: 'block_h') + + +if section_piece_params.any? + section_piece_params.each{|param| + param.update_attributes( class_name: 'hover' ) + param.section_params.each{|section_param| + section_param.update_attributes( is_enabled: true) + } + } +end \ No newline at end of file diff --git a/spree_theme/db/seeds/200/244_add_letter_space.rb b/spree_theme/db/seeds/200/244_add_letter_space.rb new file mode 100644 index 00000000..81e09e4a --- /dev/null +++ b/spree_theme/db/seeds/200/244_add_letter_space.rb @@ -0,0 +1,8 @@ +# add html_attribute letter_space into container +spps = Spree::SectionPieceParam.where(:editor_id=>4,:class_name=>'block').all + +if spps.size == 1 + text_align = Spree::HtmlAttribute.find 53 + letter_space = Spree::HtmlAttribute.find 52 + spps.first.insert_html_attribute letter_space,text_align +end \ No newline at end of file diff --git a/spree_theme/db/seeds/200/245_page_attribute.rb b/spree_theme/db/seeds/200/245_page_attribute.rb new file mode 100644 index 00000000..a48341a0 --- /dev/null +++ b/spree_theme/db/seeds/200/245_page_attribute.rb @@ -0,0 +1,3 @@ +page_attribute = Spree::Section.create_section(section_piece_hash['container'], {:title=>"page attribute"}, {'block'=>{'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) + +page_attribute.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['page-attribute']) diff --git a/spree_theme/db/seeds/200/246_th_td_width.rb b/spree_theme/db/seeds/200/246_th_td_width.rb new file mode 100644 index 00000000..820795e8 --- /dev/null +++ b/spree_theme/db/seeds/200/246_th_td_width.rb @@ -0,0 +1,6 @@ +section_piece = find_section_piece 'product_properties' + +th = { "editor_id"=>2, "class_name"=>"th", "pclass"=>"css", "param_category_id"=>81, "html_attribute_ids"=>"21"} +td = { "editor_id"=>2, "class_name"=>"td", "pclass"=>"css", "param_category_id"=>82, "html_attribute_ids"=>"21"} +create_section_piece_param( section_piece, th) +create_section_piece_param( section_piece, td) \ No newline at end of file diff --git a/spree_theme/db/seeds/200/247_vertical_align.rb b/spree_theme/db/seeds/200/247_vertical_align.rb new file mode 100644 index 00000000..2706a118 --- /dev/null +++ b/spree_theme/db/seeds/200/247_vertical_align.rb @@ -0,0 +1,10 @@ +# add html_attribute letter_space into container +spps = Spree::SectionPieceParam.where(:editor_id=>4,:class_name=>['td','th']).all + +if spps.size == 2 + spps.each{|spp| + text_align = Spree::HtmlAttribute.find 53 + vertical_align = Spree::HtmlAttribute.find 42 + spp.insert_html_attribute vertical_align,text_align + } +end \ No newline at end of file diff --git a/spree_theme/db/seeds/200/248_unset_changed_event.rb b/spree_theme/db/seeds/200/248_unset_changed_event.rb new file mode 100644 index 00000000..083ed0a1 --- /dev/null +++ b/spree_theme/db/seeds/200/248_unset_changed_event.rb @@ -0,0 +1,4 @@ +# add unset changed event width/height +block_param = Spree::SectionPieceParam.where(:section_piece_id=>2, :class_name=>"block", :editor_id=>2).first +block_param.param_conditions[21]=['pv_changed','unset_changed'] +block_param.save! diff --git a/spree_theme/db/seeds/200/249_add_link_letter_space.rb b/spree_theme/db/seeds/200/249_add_link_letter_space.rb new file mode 100644 index 00000000..ccd07c78 --- /dev/null +++ b/spree_theme/db/seeds/200/249_add_link_letter_space.rb @@ -0,0 +1,8 @@ +# add html_attribute letter_space into container +spps = Spree::SectionPieceParam.where(:editor_id=>4,:class_name=>'s_a').all + +if spps.size == 1 + text_align = Spree::HtmlAttribute.find 53 + letter_space = Spree::HtmlAttribute.find 52 + spps.first.insert_html_attribute letter_space,text_align +end \ No newline at end of file diff --git a/spree_theme/db/seeds/200/24a_clickable_font_awesome.rb b/spree_theme/db/seeds/200/24a_clickable_font_awesome.rb new file mode 100644 index 00000000..80880570 --- /dev/null +++ b/spree_theme/db/seeds/200/24a_clickable_font_awesome.rb @@ -0,0 +1,4 @@ +post_summary = Spree::Section.create_section(section_piece_hash['container'], {:title=>"font awesome plus"}, {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) + +post_summary.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['font-awesome']) + diff --git a/spree_theme/db/seeds/200/24b_related_post.rb b/spree_theme/db/seeds/200/24b_related_post.rb new file mode 100644 index 00000000..feaaa766 --- /dev/null +++ b/spree_theme/db/seeds/200/24b_related_post.rb @@ -0,0 +1,7 @@ +#next_post_title +page_attribute = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Next post title"}, {'block'=>{'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) +page_attribute.add_section_piece(section_piece_hash['container-dl']).add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['next-post-title']) + +#previous_post_title +page_attribute = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Previous post title"}, {'block'=>{'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) +page_attribute.add_section_piece(section_piece_hash['container-dl']).add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['previous-post-title']) diff --git a/spree_theme/db/seeds/204_fix_height_unset_changed.rb b/spree_theme/db/seeds/204_fix_height_unset_changed.rb deleted file mode 100644 index 37f1e0d8..00000000 --- a/spree_theme/db/seeds/204_fix_height_unset_changed.rb +++ /dev/null @@ -1,14 +0,0 @@ -html_attribute = Spree::HtmlAttribute.find('height') -section_piece = Spree::SectionPiece.find('container') -section_piece_param = section_piece.section_piece_params.find(:first, :conditions=>["editor_id=? and class_name=?", 2, 'block']) - -section_piece_param.add_param_value_event( html_attribute, Spree::ParamValue::EventEnum[:unset_changed] ) - -html_attribute = Spree::HtmlAttribute.find('margin') -section_piece_param = section_piece.section_piece_params.find(:first, :conditions=>["editor_id=? and class_name=?", 2, 'inner']) -section_piece_param.add_param_value_event( html_attribute, Spree::ParamValue::EventEnum[:unset_changed] ) - -html_attribute = Spree::HtmlAttribute.find('padding') -section_piece_param.add_param_value_event( html_attribute, Spree::ParamValue::EventEnum[:unset_changed] ) -html_attribute = Spree::HtmlAttribute.find('border-width') -section_piece_param.add_param_value_event( html_attribute, Spree::ParamValue::EventEnum[:unset_changed] ) diff --git a/spree_theme/db/seeds/206_taxon_description.rb b/spree_theme/db/seeds/206_taxon_description.rb deleted file mode 100644 index 9bd0d587..00000000 --- a/spree_theme/db/seeds/206_taxon_description.rb +++ /dev/null @@ -1,8 +0,0 @@ -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE -section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} - -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Taxon description"}, - {'block'=>{'disabled_ha_ids'=>'111'}, - 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['taxon-description'].id) \ No newline at end of file diff --git a/spree_theme/db/seeds/207_site_form.rb b/spree_theme/db/seeds/207_site_form.rb deleted file mode 100644 index c668f0be..00000000 --- a/spree_theme/db/seeds/207_site_form.rb +++ /dev/null @@ -1,9 +0,0 @@ -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE -section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} - -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Site form"}, - {'block'=>{'disabled_ha_ids'=>'111'}, - 'inner'=>{'15hidden'=>bool_true}}) - -logo.add_section_piece(section_piece_hash['container-form'].id).add_section_piece(section_piece_hash['site-form'].id) \ No newline at end of file diff --git a/spree_theme/db/seeds/208_slider.rb b/spree_theme/db/seeds/208_slider.rb deleted file mode 100644 index 286af5a0..00000000 --- a/spree_theme/db/seeds/208_slider.rb +++ /dev/null @@ -1,19 +0,0 @@ - -include SpreeTheme::SectionPieceParamHelper -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE - -#dialog width, height, -section_piece = Spree::SectionPiece.find 'slider' -unless section_piece.section_piece_params.exists?( :class_name=>'title' ) - slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} - create_section_piece_param( section_piece, slides) -end - -section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} - -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Slider"}, - {'block'=>{'disabled_ha_ids'=>'111','21unset'=>'0',21=>'width:600px','17unset'=>'0',17=>'height:200px'}, - 'inner'=>{'15hidden'=>bool_true}}) - -logo.add_section_piece(section_piece_hash['slider'].id, {'slides'=>{'78unset'=>'0',78=>'width:600px','79unset'=>'0',79=>'height:200px'}}) \ No newline at end of file diff --git a/spree_theme/db/seeds/209_breadcrumbs.rb b/spree_theme/db/seeds/209_breadcrumbs.rb deleted file mode 100644 index 3dc391bd..00000000 --- a/spree_theme/db/seeds/209_breadcrumbs.rb +++ /dev/null @@ -1,19 +0,0 @@ - -include SpreeTheme::SectionPieceParamHelper -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE - -#dialog width, height, -#section_piece = Spree::SectionPiece.find 'slider' -#unless section_piece.section_piece_params.exists?( :class_name=>'title' ) -# slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} -# create_section_piece_param( section_piece, slides) -#end -Spree::Section.where(:title=>'breadcrumbs').each(&:destroy) - -section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} - -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Breadcrumbs"}, - {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) - -logo.add_section_piece(section_piece_hash['container-link'].id).add_section_piece(section_piece_hash['breadcrumbs'].id) \ No newline at end of file diff --git a/spree_theme/db/seeds/211_add_param_image_style.rb b/spree_theme/db/seeds/211_add_param_image_style.rb deleted file mode 100644 index e4e00ed3..00000000 --- a/spree_theme/db/seeds/211_add_param_image_style.rb +++ /dev/null @@ -1,8 +0,0 @@ - -include SpreeTheme::SectionPieceParamHelper - -#form button, button:hover -section_piece = Spree::SectionPiece.find 'product-image' - -button = { "editor_id"=>2, "class_name"=>"image_style", "pclass"=>"text", "param_category_id"=>28, "html_attribute_ids"=>"84"} -create_section_piece_param( section_piece, button) \ No newline at end of file diff --git a/spree_theme/db/seeds/215_minicart_with_link.rb b/spree_theme/db/seeds/215_minicart_with_link.rb deleted file mode 100644 index 2b5a7ab3..00000000 --- a/spree_theme/db/seeds/215_minicart_with_link.rb +++ /dev/null @@ -1,9 +0,0 @@ -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE -section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} - -minicart = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Mini cart2"}, - {'block'=>{'disabled_ha_ids'=>'111'}, - #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, - 'inner'=>{'15hidden'=>bool_true}}) -minicart.add_section_piece(section_piece_hash['container-link'].id).add_section_piece(section_piece_hash['minicart'].id) diff --git a/spree_theme/db/seeds/219_create_post_related_section.rb b/spree_theme/db/seeds/219_create_post_related_section.rb deleted file mode 100644 index 18c66c78..00000000 --- a/spree_theme/db/seeds/219_create_post_related_section.rb +++ /dev/null @@ -1,32 +0,0 @@ -include SpreeTheme::SectionPieceParamHelper -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE - -#dialog width, height, -#section_piece = Spree::SectionPiece.find 'slider' -#unless section_piece.section_piece_params.exists?( :class_name=>'title' ) -# slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} -# create_section_piece_param( section_piece, slides) -#end -Spree::Section.where(:title=>'Post title').each(&:destroy) -Spree::Section.where(:title=>'Post time').each(&:destroy) -Spree::Section.where(:title=>'Post author').each(&:destroy) -Spree::Section.where(:title=>'Post body').each(&:destroy) - -section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} - -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Post title"}, - {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['container-link'].id).add_section_piece(section_piece_hash['post-title'].id) - -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Post time"}, - {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['post-time'].id) - -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Post author"}, - {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['post-author'].id) - -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"Post body"}, - {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) -logo.add_section_piece(section_piece_hash['post-body'].id) diff --git a/spree_theme/db/seeds/236_add_option_values_selector2.rb b/spree_theme/db/seeds/236_add_option_values_selector2.rb deleted file mode 100644 index e02c5278..00000000 --- a/spree_theme/db/seeds/236_add_option_values_selector2.rb +++ /dev/null @@ -1,21 +0,0 @@ - -include SpreeTheme::SectionPieceParamHelper -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE - -Spree::Section.where(:title=>'Grouped option values selector').each{|section| - section.update_attribute( :is_enabled, false ) -} -Spree::Section.where(:title=>'container with title').each{|section| - section.update_attribute( :is_enabled, false ) -} - - -Spree::Section.where(:title=>'Grouped option values selector2').each(&:destroy) - -section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} - -logo = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"grouped option values selector2"}, - {'block'=>{'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) - -logo.add_section_piece( section_piece_hash['container-header0'].id ).add_section_piece( section_piece_hash['container-link'].id ).add_section_piece(section_piece_hash['grouped-option-values-selector'].id) diff --git a/spree_theme/db/seeds/239_add_th.rb b/spree_theme/db/seeds/239_add_th.rb deleted file mode 100644 index 3aefae7a..00000000 --- a/spree_theme/db/seeds/239_add_th.rb +++ /dev/null @@ -1,16 +0,0 @@ -include SpreeTheme::SectionPieceParamHelper - -section_piece = Spree::SectionPiece.find 'container-table' - -th = {"editor_id"=>2, "class_name"=>"s_th", "pclass"=>"css", "param_category_id"=>81, "html_attribute_ids"=>"32,7,8,6"} -unless Spree::SectionPieceParam.where( th ).any? - create_section_piece_param( section_piece, th) -end - -section_params = Spree::SectionParam.includes(:section_piece_param).where(["spree_section_piece_params.class_name=?",'block_h']) - -if section_params.any? - section_params.each{|param| - param.update_attribute(:is_enabled, false) - } -end diff --git a/spree_theme/db/seeds/23a_add_container_dl.rb b/spree_theme/db/seeds/23a_add_container_dl.rb deleted file mode 100644 index ae73d22a..00000000 --- a/spree_theme/db/seeds/23a_add_container_dl.rb +++ /dev/null @@ -1,5 +0,0 @@ -root2 = Spree::Section.find_by_title('root2') - -container_dl = Spree::SectionPiece.find 'container-dl' - -root2.leaves.last.add_section_piece( container_dl.id ) diff --git a/spree_theme/db/seeds/23c_fix_assigned_resource_ids.rb b/spree_theme/db/seeds/23c_fix_assigned_resource_ids.rb deleted file mode 100644 index 58a43004..00000000 --- a/spree_theme/db/seeds/23c_fix_assigned_resource_ids.rb +++ /dev/null @@ -1,10 +0,0 @@ -Spree::Site.all.each{|site| - site.template_themes.each{|template_theme| - template_theme.assigned_resource_ids.each_pair{|key,val| - # fix :undefined method `classify' for :"spree/taxon":Symbol - #spree_theme/app/models/spree/template_resource.rb:44:in `source_class' - val.stringify_keys! - } - template_theme.save! - } -} diff --git a/spree_theme/db/seeds/23d_fix_template_text_permalink.rb b/spree_theme/db/seeds/23d_fix_template_text_permalink.rb deleted file mode 100644 index 2ea25d28..00000000 --- a/spree_theme/db/seeds/23d_fix_template_text_permalink.rb +++ /dev/null @@ -1,6 +0,0 @@ -Spree::Site.all.each{|site| - site.template_texts.each{|template_text| - template_text.valid? - template_text.save! - } -} \ No newline at end of file diff --git a/spree_theme/db/seeds/23e_add_template_related_buttons.rb b/spree_theme/db/seeds/23e_add_template_related_buttons.rb deleted file mode 100644 index d82375ae..00000000 --- a/spree_theme/db/seeds/23e_add_template_related_buttons.rb +++ /dev/null @@ -1,16 +0,0 @@ -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE -sps = Spree::SectionPiece.all -section_piece_hash= sps.inject({}){|h,sp| h[sp.slug] = sp; h} - -#theme preview button -Spree::Section.where(:title=>'preview theme button').each(&:destroy) -theme_related_button = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"preview theme button"}, - {'inner'=>{'15hidden'=>bool_true}}) -theme_related_button.add_section_piece(section_piece_hash['container-link'].id).add_section_piece(section_piece_hash['preview-theme-button'].id) - -#new site with selected theme button -Spree::Section.where(:title=>'install theme with site button').each(&:destroy) -theme_related_button = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"install theme with site button"}, - {'inner'=>{'15hidden'=>bool_true}}) -theme_related_button.add_section_piece(section_piece_hash['container-link'].id).add_section_piece(section_piece_hash['install-theme-with-site-button'].id) diff --git a/spree_theme/db/seeds/23f_change_to_root2.rb b/spree_theme/db/seeds/23f_change_to_root2.rb deleted file mode 100644 index 6356b874..00000000 --- a/spree_theme/db/seeds/23f_change_to_root2.rb +++ /dev/null @@ -1,8 +0,0 @@ -root2 = Spree::Section.find_by_title('root2') - -template2 = Spree::TemplateTheme.find_by_id( 2 ) - -if root2 && template2 - template2.page_layout.replace_with root2 -end - \ No newline at end of file diff --git a/spree_theme/db/seeds/23h_add_container_hover_effect.rb b/spree_theme/db/seeds/23h_add_container_hover_effect.rb deleted file mode 100644 index 21ef4ca9..00000000 --- a/spree_theme/db/seeds/23h_add_container_hover_effect.rb +++ /dev/null @@ -1,11 +0,0 @@ - -bool_false = Spree::HtmlAttribute::BOOL_FALSE -bool_true = Spree::HtmlAttribute::BOOL_TRUE -section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} - -#hover_effect_container -Spree::Section.where(:title=>'hover effect container').each(&:destroy) -fixed_container = Spree::Section.create_section( section_piece_hash['container'].id, {:title=>"hover effect container"}, -{ 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true}} -) -fixed_container.add_section_piece(section_piece_hash['container-hover-effect'].id) diff --git a/spree_theme/db/seeds/250/251_product_name_ellipsis.rb b/spree_theme/db/seeds/250/251_product_name_ellipsis.rb new file mode 100644 index 00000000..7a4d4447 --- /dev/null +++ b/spree_theme/db/seeds/250/251_product_name_ellipsis.rb @@ -0,0 +1,3 @@ +product_name = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product name with ellipsis"}, {'block'=>{'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) + +product_name.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['product-name-with-ellipsis']) diff --git a/spree_theme/db/seeds/250/252_add_section_usage.rb b/spree_theme/db/seeds/250/252_add_section_usage.rb new file mode 100644 index 00000000..0453391f --- /dev/null +++ b/spree_theme/db/seeds/250/252_add_section_usage.rb @@ -0,0 +1,9 @@ +Spree::Section.roots.each{|section| + case section.title + when /Logo/ + section.usage = 'logo' + when /Mini cart/ + section.usage = 'minicart' + end + section.save! +} diff --git a/spree_theme/db/seeds/250/253_container_default_width.rb b/spree_theme/db/seeds/250/253_container_default_width.rb new file mode 100644 index 00000000..1b0cca89 --- /dev/null +++ b/spree_theme/db/seeds/250/253_container_default_width.rb @@ -0,0 +1,13 @@ +# set container width 100% + +section = Spree::Section.includes(section_params: :section_piece_param).where( + spree_section_piece_params: {class_name: 'block',editor_id: 2}, title: 'container' ).first + +if section.section_params.size == 1 + sp = section.section_params.first + sp.default_value['21'] = 'width:100%' + sp.default_value['21unset'] = bool_false + sp.save! +else + raise 'more section params named block' +end diff --git a/spree_theme/db/seeds/250/254_product_image_slider.rb b/spree_theme/db/seeds/250/254_product_image_slider.rb new file mode 100644 index 00000000..4cdce8d4 --- /dev/null +++ b/spree_theme/db/seeds/250/254_product_image_slider.rb @@ -0,0 +1,12 @@ +product_image_slider = Spree::Section.create_section(section_piece_hash['container'], {:title=>"slider for product images"}, + {'block'=>{'disabled_ha_ids'=>'111','21unset'=>'0','21'=>'width:600px','15unset'=>'0','15'=>'height:200px'}, + 'inner'=>{'15unset'=>'0','15'=>'height:200px','15hidden'=>bool_true,'21hidden'=>bool_true}}) + +product_image_slider.add_section_piece(section_piece_hash['slider-core']).add_section_piece(section_piece_hash['slider-data-product-images']) + + +taxon_slider = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Slider for taxonomy images "}, + {'block'=>{'disabled_ha_ids'=>'111','21unset'=>'0','21'=>'width:600px','15unset'=>'0','15'=>'height:200px'}, + 'inner'=>{'15unset'=>'0','15'=>'height:200px','15hidden'=>bool_true,'21hidden'=>bool_true}}) + +taxon_slider.add_section_piece(section_piece_hash['slider-core']).add_section_piece(section_piece_hash['slider-data-taxons']) diff --git a/spree_theme/db/seeds/250/255_rename_login_form.rb b/spree_theme/db/seeds/250/255_rename_login_form.rb new file mode 100644 index 00000000..b14b5cc8 --- /dev/null +++ b/spree_theme/db/seeds/250/255_rename_login_form.rb @@ -0,0 +1,5 @@ +Spree::Section.where(title:'login form').each{|section| + section.title = 'sign in form' + section.slug = 'sign-in-form' + section.save! +} diff --git a/spree_theme/db/seeds/250/256_add_sider.rb b/spree_theme/db/seeds/250/256_add_sider.rb new file mode 100644 index 00000000..eb0ae566 --- /dev/null +++ b/spree_theme/db/seeds/250/256_add_sider.rb @@ -0,0 +1,13 @@ +# this section is added careless, it is exist in fact. +#Spree::Section.where(:title=>'fixed container stupid').each(&:destroy) +fixed_container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"fixed container useless"}, +{ 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'15'=>"height:100px",'15unset'=>bool_false,'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true}} +) +fixed_container.add_section_piece(section_piece_hash['container-fixed']) + + +# clickable sider +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"click effect sider container", :usage =>'container', :content_param=> Spree::Section::MouseEffect.sider+1 }, + { 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}} +) +container.add_section_piece(section_piece_hash['click-effect-sider']) diff --git a/spree_theme/db/seeds/250/257_line_height.rb b/spree_theme/db/seeds/250/257_line_height.rb new file mode 100644 index 00000000..03dd0aa5 --- /dev/null +++ b/spree_theme/db/seeds/250/257_line_height.rb @@ -0,0 +1,10 @@ +# add html_attribute margin into a +spps = Spree::SectionPieceParam.where(:editor_id=>4,:class_name=>'block').all + +if spps.size == 1 + letter_space = Spree::HtmlAttribute.find 52 + line_height = Spree::HtmlAttribute.find 16 #height + spps.first.insert_html_attribute line_height, letter_space +else + raise 'more than one section piece param named block and editor is 4' +end diff --git a/spree_theme/db/seeds/250/258_minicart_badge.rb b/spree_theme/db/seeds/250/258_minicart_badge.rb new file mode 100644 index 00000000..38f60f64 --- /dev/null +++ b/spree_theme/db/seeds/250/258_minicart_badge.rb @@ -0,0 +1,12 @@ +product_name = Spree::Section.create_section(section_piece_hash['container'], {:title=>"minicart badge"}, + {'block'=>{'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true, + '32unset'=> bool_false, '32'=>'padding:3px 7px 3px 7px', + '64unset'=> bool_false, '64'=>'border-radius:10px 10px 10px 10px', + '2unset'=> bool_false, '2'=>'background-color:#777777', + '16unset'=>bool_false,'16'=>'line-height:1em' + }}) + +product_name.add_section_piece(section_piece_hash['container-link'], + {'s_a'=>{'54unset'=>bool_false,'54'=>'text-decoration:none', + '49unset'=>bool_false,'49'=>'color:white' + }}).add_section_piece(section_piece_hash['minicart-badge']) diff --git a/spree_theme/db/seeds/250/259_mobile_root_params.rb b/spree_theme/db/seeds/250/259_mobile_root_params.rb new file mode 100644 index 00000000..5e5dd703 --- /dev/null +++ b/spree_theme/db/seeds/250/259_mobile_root_params.rb @@ -0,0 +1,7 @@ +section_piece = find_section_piece('root-for-mobile') + +inner = { "editor_id"=>2, "class_name"=>"inner", "pclass"=>"css", "param_category_id"=>2, "html_attribute_ids"=>"32,7,8,6"} +create_section_piece_param( section_piece, inner) + +inner = { "editor_id"=>3, "class_name"=>"inner", "pclass"=>"css", "param_category_id"=>2, "html_attribute_ids"=>"2,3,4,5"} +create_section_piece_param( section_piece, inner) diff --git a/spree_theme/db/seeds/250/25b_unset_changed_event.rb b/spree_theme/db/seeds/250/25b_unset_changed_event.rb new file mode 100644 index 00000000..0f1ee1e5 --- /dev/null +++ b/spree_theme/db/seeds/250/25b_unset_changed_event.rb @@ -0,0 +1,4 @@ +# add unset changed event width/height +block_param = Spree::SectionPieceParam.where(:section_piece_id=>2, :class_name=>"block", :editor_id=>2).first +block_param.param_conditions[15]=['pv_changed','unset_changed'] +block_param.save! diff --git a/spree_theme/db/seeds/250/25c_cart_items.rb b/spree_theme/db/seeds/250/25c_cart_items.rb new file mode 100644 index 00000000..6d58288d --- /dev/null +++ b/spree_theme/db/seeds/250/25c_cart_items.rb @@ -0,0 +1,5 @@ +#cart items for mobile +#Spree::Section.where(:title=>'cart items for mobile').each(&:destroy) +cart_items_for_mobile = Spree::Section.create_section(section_piece_hash['container'], {:title=>"cart items for mobile"}, + { 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) +cart_items_for_mobile.add_section_piece(section_piece_hash['cart-items-for-mobile']) diff --git a/spree_theme/db/seeds/250/25d_rename_cart.rb b/spree_theme/db/seeds/250/25d_rename_cart.rb new file mode 100644 index 00000000..bf4dc1a7 --- /dev/null +++ b/spree_theme/db/seeds/250/25d_rename_cart.rb @@ -0,0 +1,10 @@ +Spree::Section.where(title:'cart').each{|section| + section.title = 'cart form' + section.slug = 'cart-form' + section.save! +} +Spree::Section.where(title:'checkout').each{|section| + section.title = 'checkout form' + section.slug = 'checkout-form' + section.save! +} diff --git a/spree_theme/db/seeds/250/25e_sider_params.rb b/spree_theme/db/seeds/250/25e_sider_params.rb new file mode 100644 index 00000000..7f92ccc7 --- /dev/null +++ b/spree_theme/db/seeds/250/25e_sider_params.rb @@ -0,0 +1,7 @@ +section_piece = find_section_piece('click-effect-sider') + +dt = { "editor_id"=>2, "class_name"=>"sidr", "pclass"=>"css", "param_category_id"=>9, "html_attribute_ids"=>"21,15,32"} +create_section_piece_param( section_piece, dt) + +dt = { "editor_id"=>3, "class_name"=>"sidr", "pclass"=>"css", "param_category_id"=>9, "html_attribute_ids"=>"2,3,4,5"} +create_section_piece_param( section_piece, dt) diff --git a/spree_theme/db/seeds/250/25g_fix_taxon_depth.rb b/spree_theme/db/seeds/250/25g_fix_taxon_depth.rb new file mode 100644 index 00000000..5107616f --- /dev/null +++ b/spree_theme/db/seeds/250/25g_fix_taxon_depth.rb @@ -0,0 +1,4 @@ +SpreeTheme.site_class.all.each{|site| + SpreeTheme.site_class.current = site + Spree::Taxon.where( depth: 3 ).each { |t| t.save } +} diff --git a/spree_theme/db/seeds/250/25h_fix_slug.rbx b/spree_theme/db/seeds/250/25h_fix_slug.rbx new file mode 100644 index 00000000..bcf7fbb6 --- /dev/null +++ b/spree_theme/db/seeds/250/25h_fix_slug.rbx @@ -0,0 +1,17 @@ +#ActiveRecord::RecordInvalid: Validation failed: Slug has already been taken +# it would cause error while spree_theme:reload, there is no FakeWebsite table. +SpreeTheme.site_class.all.each{|site| + SpreeTheme.site_class.current = site + site.products.each{|product| + unless product.valid? + puts "#{product.id} #{product.errors.messages}" + product.price = 1 if product.errors.get :price + product.sku = "sku#{rand(10)}" if product.errors.get :sku + product.slug = nil if product.errors.get :slug + #unless product.valid? + # puts "#{product.id}, invalid, #{product.errors.messages}" + #end + product.save! + end + } +} diff --git a/spree_theme/db/seeds/250/25i_fix_store_id_for_orders.rb b/spree_theme/db/seeds/250/25i_fix_store_id_for_orders.rb new file mode 100644 index 00000000..9267d122 --- /dev/null +++ b/spree_theme/db/seeds/250/25i_fix_store_id_for_orders.rb @@ -0,0 +1,3 @@ +Spree::Order.unscoped.where(store_id: nil).each{|order| + order.update_column :store_id, Spree::Store.unscoped.where(site_id: order.site_id).first.id +} diff --git a/spree_theme/db/seeds/250/25j_fix_site_demo.rb b/spree_theme/db/seeds/250/25j_fix_site_demo.rb new file mode 100644 index 00000000..4e545d17 --- /dev/null +++ b/spree_theme/db/seeds/250/25j_fix_site_demo.rb @@ -0,0 +1,8 @@ +SpreeTheme.site_class.where( short_name: 'demo').each_with_index{|site, i| + if i>0 + SpreeTheme.site_class.with_site(site) do + site.update_attribute :short_name, "demo#{site.id}" + site.stores.first.update_attribute :code, site.short_name + end + end +} diff --git a/spree_theme/db/seeds/250/25k_fix_store_theme.rbx b/spree_theme/db/seeds/250/25k_fix_store_theme.rbx new file mode 100644 index 00000000..596034c6 --- /dev/null +++ b/spree_theme/db/seeds/250/25k_fix_store_theme.rbx @@ -0,0 +1,10 @@ +# it would cause error while spree_theme:reload, NoMethodError: undefined method `site' +Spree::Store.all.each{|store| + if store.theme_id == 0 + if store.site.theme_id>0 + store.update_attribute :theme_id, store.site.theme_id + else + puts "store #{store.name} have no theme" + end + end +} diff --git a/spree_theme/db/seeds/250/25l_post_title_with_ellipsis.rb b/spree_theme/db/seeds/250/25l_post_title_with_ellipsis.rb new file mode 100644 index 00000000..5ae07e3e --- /dev/null +++ b/spree_theme/db/seeds/250/25l_post_title_with_ellipsis.rb @@ -0,0 +1,3 @@ +product_name = Spree::Section.create_section(section_piece_hash['container'], {:title=>"post title with ellipsis"}, {'block'=>{'21'=>'width:100px','21unset'=>bool_false, 'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) + +product_name.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['post-title-with-ellipsis']) diff --git a/spree_theme/db/seeds/250/25m_add_link_border.rb b/spree_theme/db/seeds/250/25m_add_link_border.rb new file mode 100644 index 00000000..70e17567 --- /dev/null +++ b/spree_theme/db/seeds/250/25m_add_link_border.rb @@ -0,0 +1,9 @@ +section_piece = Spree::SectionPiece.where( slug: 'container-link' ).first + +a_h = { "editor_id"=>2, "class_name"=>"s_a_h", "pclass"=>"css", "param_category_id"=>12, "html_attribute_ids"=>"7,8,6"} +s_a_sel = { "editor_id"=>2, "class_name"=>"s_a_sel", "pclass"=>"css", "param_category_id"=>13, "html_attribute_ids"=>"7,8,6"} +s_a_una = { "editor_id"=>2, "class_name"=>"s_a_una", "pclass"=>"css", "param_category_id"=>15, "html_attribute_ids"=>"7,8,6"} + +create_section_piece_param( section_piece, a_h) +create_section_piece_param( section_piece, s_a_sel) +create_section_piece_param( section_piece, s_a_una) diff --git a/spree_theme/db/seeds/250/25n_post_files.rb b/spree_theme/db/seeds/250/25n_post_files.rb new file mode 100644 index 00000000..69717efd --- /dev/null +++ b/spree_theme/db/seeds/250/25n_post_files.rb @@ -0,0 +1,3 @@ +post_files = Spree::Section.create_section(section_piece_hash['container'], {:title=>"post files"}, {'block'=>{'21'=>'width:100px','21unset'=>bool_false, 'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) + +post_files.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['post-files']) diff --git a/spree_theme/db/seeds/250/25o_border_radius.rb b/spree_theme/db/seeds/250/25o_border_radius.rb new file mode 100644 index 00000000..bc4ef76c --- /dev/null +++ b/spree_theme/db/seeds/250/25o_border_radius.rb @@ -0,0 +1,12 @@ +# add html_attribute border_radius into block, a + +border_color = Spree::HtmlAttribute.find_by_css_name 'border-color' +border_radius = Spree::HtmlAttribute.find_by_css_name 'border-radius' + +spps = Spree::SectionPieceParam.where(:editor_id=>2,:class_name=>['s_a','s_button','s_input']) + +if spps.size == 3 + spps.each{|spp| + spp.insert_html_attribute border_radius, border_color + } +end diff --git a/spree_theme/db/seeds/250/25q_background_size.rb b/spree_theme/db/seeds/250/25q_background_size.rb new file mode 100644 index 00000000..fb03ab37 --- /dev/null +++ b/spree_theme/db/seeds/250/25q_background_size.rb @@ -0,0 +1,11 @@ +# add html_attribute border_radius into block, a + +background_size = Spree::HtmlAttribute.find_by_css_name 'background-size' + +spps = Spree::SectionPieceParam.where(:editor_id=>3,:class_name=>'inner') +#container, bootstrap_container, root_for_mobile +if spps.size == 3 + spps.each{|spp| + spp.insert_html_attribute background_size + } +end diff --git a/spree_theme/db/seeds/250/25r_container_background.rb b/spree_theme/db/seeds/250/25r_container_background.rb new file mode 100644 index 00000000..8507adb7 --- /dev/null +++ b/spree_theme/db/seeds/250/25r_container_background.rb @@ -0,0 +1,12 @@ +section_piece = find_section_piece('container-background') + + +inner = { "editor_id"=>3, "class_name"=>"inner1", "pclass"=>"css", "param_category_id"=>1051, "html_attribute_ids"=>"2,3,4,5,117"} +create_section_piece_param( section_piece, inner) +inner = { "editor_id"=>3, "class_name"=>"inner2", "pclass"=>"css", "param_category_id"=>1052, "html_attribute_ids"=>"2,3,4,5,117"} +create_section_piece_param( section_piece, inner) + + +container_background = Spree::Section.create_section(section_piece_hash['container'], {:title=>"container background"}, {'block'=>{'21'=>'width:100px','21unset'=>bool_false, 'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) + +container_background.add_section_piece(section_piece_hash['container-background']) diff --git a/spree_theme/db/seeds/250/25s_rename_dialog_content_params.rb b/spree_theme/db/seeds/250/25s_rename_dialog_content_params.rb new file mode 100644 index 00000000..3e661fab --- /dev/null +++ b/spree_theme/db/seeds/250/25s_rename_dialog_content_params.rb @@ -0,0 +1,5 @@ +dialog_content = Spree::SectionPiece.where( title: "dialog content").first +dialog_content.section_piece_params.where(class_name: 'inner').update_all( class_name: 'dialog_content') + +dialog_title = Spree::SectionPiece.where( title: "dialog title").first +dialog_title.section_piece_params.where(class_name: 'title').update_all( class_name: 'dialog_title') diff --git a/spree_theme/db/seeds/250/25t_dialog3.rb b/spree_theme/db/seeds/250/25t_dialog3.rb new file mode 100644 index 00000000..645c96be --- /dev/null +++ b/spree_theme/db/seeds/250/25t_dialog3.rb @@ -0,0 +1,13 @@ + + + +dialog = Spree::Section.create_section(section_piece_hash['container'], {:title=>"dialog3", :usage=>"dialog"}, +{ 'inner'=>{'15hidden'=>bool_true, '15'=>'height:598px', '2'=>'background-color:#FFFFFF','2unset'=>bool_false, + '7'=>'border-style:solid solid solid solid', '8'=>'border-width:1px 1px 1px 1px', '6'=>'border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC', + '7unset'=>bool_false,'8unset'=>bool_false,'6unset'=>bool_false + }, + 'block'=>{'21'=>'width:600px','disabled_ha_ids'=>'111','21unset'=>bool_false} + }) +dialog_container = dialog.add_section_piece(section_piece_hash['container-dialog']).add_section_piece(section_piece_hash['container-form']) +dialog_container.add_section_piece(section_piece_hash['dialog-title'], { 'dialog_title'=>{'2'=>'background-color:#000000','2unset'=>bool_false,'49'=>'color:#FFFFFF','49unset'=>bool_false } } ) +dialog_container.add_section_piece(section_piece_hash['dialog-content'], {'dialog_content'=>{'32'=>'padding:10px 30px 20px 30px','32unset'=>bool_false }} ) diff --git a/spree_theme/db/seeds/250/25u_dialog_overlay.rb b/spree_theme/db/seeds/250/25u_dialog_overlay.rb new file mode 100644 index 00000000..3fb25e52 --- /dev/null +++ b/spree_theme/db/seeds/250/25u_dialog_overlay.rb @@ -0,0 +1,14 @@ +# section param for dialog_overlay and dialog_close +section_piece = Spree::SectionPiece.where( slug: 'dialog-title' ).first + +dialog_close = { "editor_id"=>2, "class_name"=>"dialog_close", "pclass"=>"css", "param_category_id"=>501, "html_attribute_ids"=>"31,32,7,8,6"} +create_section_piece_param( section_piece, dialog_close) + +dialog_close = { "editor_id"=>4, "class_name"=>"dialog_close", "pclass"=>"css", "param_category_id"=>501, "html_attribute_ids"=>"24,27,49,53,54"} +create_section_piece_param( section_piece, dialog_close) + +section_piece = Spree::SectionPiece.where( slug: 'container-dialog' ).first + +dialog_overlay = { "editor_id"=>3, "class_name"=>"dialog_overlay", "pclass"=>"css", "param_category_id"=>502, "html_attribute_ids"=>"2,3,4,5,116"} + +create_section_piece_param( section_piece, dialog_overlay) diff --git a/spree_theme/db/seeds/250/25v_header_params.rb b/spree_theme/db/seeds/250/25v_header_params.rb new file mode 100644 index 00000000..432a22fb --- /dev/null +++ b/spree_theme/db/seeds/250/25v_header_params.rb @@ -0,0 +1,14 @@ +# add html_attribute border_radius into block, a + +color = Spree::HtmlAttribute.find_by_css_name 'color' +line_height = Spree::HtmlAttribute.find_by_css_name 'line-height' +letter_spacing = Spree::HtmlAttribute.find_by_css_name 'letter-spacing' + +spps = Spree::SectionPieceParam.where(:editor_id=>4,:class_name=>'s_header3') + +if spps.size == 1 + spps.each{|spp| + spp.insert_html_attribute line_height,color + spp.insert_html_attribute letter_spacing + } +end diff --git a/spree_theme/db/seeds/250/25w_add_vertical_align.rb b/spree_theme/db/seeds/250/25w_add_vertical_align.rb new file mode 100644 index 00000000..f72c1ad4 --- /dev/null +++ b/spree_theme/db/seeds/250/25w_add_vertical_align.rb @@ -0,0 +1,9 @@ +# add html_attribute margin into a +spps = Spree::SectionPieceParam.where(:editor_id=>4,:class_name=>'s_cell') + +if spps.size == 1 + vertical_align = Spree::HtmlAttribute.find 42 + spps.first.insert_html_attribute vertical_align +else + raise 'more than one section piece param named td and editor is 4' +end diff --git a/spree_theme/db/seeds/250/25x_bootstrap_carousel.rb b/spree_theme/db/seeds/250/25x_bootstrap_carousel.rb new file mode 100644 index 00000000..350c20d0 --- /dev/null +++ b/spree_theme/db/seeds/250/25x_bootstrap_carousel.rb @@ -0,0 +1,3 @@ + +carousel = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product image carousel"}, {'block'=>{'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) +carousel.add_section_piece(section_piece_hash['bootstrap-carousel']) diff --git a/spree_theme/db/seeds/250/25x_hmenu_with_vertical_submenu.rb b/spree_theme/db/seeds/250/25x_hmenu_with_vertical_submenu.rb new file mode 100644 index 00000000..7fc3be49 --- /dev/null +++ b/spree_theme/db/seeds/250/25x_hmenu_with_vertical_submenu.rb @@ -0,0 +1,5 @@ +hmenu = Spree::Section.create_section(section_piece_hash['container'], {:title=>"hmenu with vertical submenu", :usage =>'container', :content_param=> Spree::Section::MouseEffect.multi_level_menu }, + { 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) + + +hmenu.add_section_piece(section_piece_hash['container-hmenu-with-vertical-submenu']).add_section_piece(section_piece_hash['hmenu']).add_section_piece(section_piece_hash['menuitem']) diff --git a/spree_theme/db/seeds/250/25x_one_click_trial.rb b/spree_theme/db/seeds/250/25x_one_click_trial.rb new file mode 100644 index 00000000..605689f6 --- /dev/null +++ b/spree_theme/db/seeds/250/25x_one_click_trial.rb @@ -0,0 +1,5 @@ +container = Spree::Section.create_section(section_piece_hash['container'], {:title=>"one click trial"}, {'block'=>{'21'=>'width:100px','21unset'=>bool_false, 'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) + +container.add_section_piece(section_piece_hash['container-form'])\ + .add_section_piece(section_piece_hash['container-link'])\ + .add_section_piece(section_piece_hash['one-click-trial']) diff --git a/spree_theme/db/seeds/260/260_add_even_odd.rb b/spree_theme/db/seeds/260/260_add_even_odd.rb new file mode 100644 index 00000000..a5ab49c2 --- /dev/null +++ b/spree_theme/db/seeds/260/260_add_even_odd.rb @@ -0,0 +1,8 @@ +# section param for dialog_overlay and dialog_close +section_piece = Spree::SectionPiece.where( slug: 'menuitem' ).first + +cycle_even = { "editor_id"=>3, "class_name"=>"even", "pclass"=>"css", "param_category_id"=>195, "html_attribute_ids"=>"2,3,4,5,116"} +create_section_piece_param( section_piece, cycle_even) + +cycle_odd = { "editor_id"=>3, "class_name"=>"odd", "pclass"=>"css", "param_category_id"=>196, "html_attribute_ids"=>"2,3,4,5,116"} +create_section_piece_param( section_piece, cycle_odd) diff --git a/spree_theme/db/seeds/260/261_add_image_size.rb b/spree_theme/db/seeds/260/261_add_image_size.rb new file mode 100644 index 00000000..c9e5ece8 --- /dev/null +++ b/spree_theme/db/seeds/260/261_add_image_size.rb @@ -0,0 +1,5 @@ +# section param for dialog_overlay and dialog_close +section_piece = Spree::SectionPiece.where( slug: 'logo' ).first + +img_size_params = { "editor_id"=>2, "class_name"=>"img", "pclass"=>"css", "param_category_id"=>30, "html_attribute_ids"=>"21,15"} +create_section_piece_param( section_piece, img_size_params) diff --git a/spree_theme/db/seeds/260/262_slider_transition_fade.rb b/spree_theme/db/seeds/260/262_slider_transition_fade.rb new file mode 100644 index 00000000..72d3203b --- /dev/null +++ b/spree_theme/db/seeds/260/262_slider_transition_fade.rb @@ -0,0 +1,5 @@ +taxon_slider = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Slider for taxonomy images with effect fade"}, + {'block'=>{'disabled_ha_ids'=>'111','21unset'=>'0','21'=>'width:600px','15unset'=>'0','15'=>'height:200px'}, + 'inner'=>{'15unset'=>'0','15'=>'height:200px','15hidden'=>bool_true,'21hidden'=>bool_true}}) + +taxon_slider.add_section_piece(section_piece_hash['slider-core']).add_section_piece(section_piece_hash['slider-data-taxons-transition-fade']) diff --git a/spree_theme/db/seeds/260/263_search.rb b/spree_theme/db/seeds/260/263_search.rb new file mode 100644 index 00000000..a2c05906 --- /dev/null +++ b/spree_theme/db/seeds/260/263_search.rb @@ -0,0 +1,5 @@ +logo = Spree::Section.create_section(section_piece_hash['container'], {:title=>"Product search"}, + {'block'=>{'disabled_ha_ids'=>'111'}, + #'content_horizontal'=>{'disabled_ha_ids'=>'101'}, + 'inner'=>{'15hidden'=>bool_true}}) +logo.add_section_piece(section_piece_hash['container-form']).add_section_piece(section_piece_hash['product-search']) diff --git a/spree_theme/db/seeds/260/264_transition_duration.rb b/spree_theme/db/seeds/260/264_transition_duration.rb new file mode 100644 index 00000000..ca7949f2 --- /dev/null +++ b/spree_theme/db/seeds/260/264_transition_duration.rb @@ -0,0 +1,15 @@ +# add html_attribute border_radius into block, a + +transition_duration = Spree::HtmlAttribute.find_by_css_name 'transition-duration' + +spps = Spree::SectionPieceParam.where(:editor_id=>3,:class_name=>'s_a_h') +#container link +spps.each{|spp| + spp.insert_html_attribute transition_duration +} + +spps = Spree::SectionPieceParam.where(:editor_id=>3,:class_name=>'a_h') +#menuitem, product_name +spps.each{|spp| + spp.insert_html_attribute transition_duration +} diff --git a/spree_theme/db/seeds/260/265_add_container_absolute.rb b/spree_theme/db/seeds/260/265_add_container_absolute.rb new file mode 100644 index 00000000..8d73702c --- /dev/null +++ b/spree_theme/db/seeds/260/265_add_container_absolute.rb @@ -0,0 +1,15 @@ + +#table title cell, border,padding +section_piece = find_section_piece 'container-absolute' +absolute_position = { "editor_id"=>2, "class_name"=>"absolute_position", "pclass"=>"css", "param_category_id"=>7, "html_attribute_ids"=>"41,40,33,35"} +unless section_piece.section_piece_params.where(:class_name=>'absolute_position').any? + create_section_piece_param( section_piece, absolute_position) +end + + +#absolute_container +#Spree::Section.where(:title=>'absolute container').each(&:destroy) +absolute_container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"absolute container"}, +{ 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'21'=>"width:100px",'21unset'=>bool_false,'15'=>"height:100px",'15unset'=>bool_false,'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'2'=>'background-color:silver','2unset'=>bool_false,'15hidden'=>bool_true}} +) +absolute_container.add_section_piece(section_piece_hash['container-absolute']) diff --git a/spree_theme/db/seeds/260/266_description_image.rb b/spree_theme/db/seeds/260/266_description_image.rb new file mode 100644 index 00000000..e01494a5 --- /dev/null +++ b/spree_theme/db/seeds/260/266_description_image.rb @@ -0,0 +1,6 @@ +# for sellphone view, we should have width option for product_description images, or image show original size +#image margin, border,padding +section_piece = find_section_piece 'product-description' +img = {"editor_id"=>2, "class_name"=>"img", "pclass"=>"css", "param_category_id"=>28, "html_attribute_ids"=>"21,31,32,7,8,6"} + +create_section_piece_param( section_piece, img) diff --git a/spree_theme/db/seeds/260/267_sidr.rb b/spree_theme/db/seeds/260/267_sidr.rb new file mode 100644 index 00000000..1c0449a9 --- /dev/null +++ b/spree_theme/db/seeds/260/267_sidr.rb @@ -0,0 +1,15 @@ +#param category 501 sidr close +#param category 502 sidr overlay + +# section param for sidr_overlay and sidr_close +section_piece = Spree::SectionPiece.where( slug: 'click-effect-sider' ).first + +sidr_close = { "editor_id"=>2, "class_name"=>"sidr_close", "pclass"=>"css", "param_category_id"=>501, "html_attribute_ids"=>"31,32,7,8,6"} +create_section_piece_param( section_piece, sidr_close) + +sidr_close = { "editor_id"=>4, "class_name"=>"sidr_close", "pclass"=>"css", "param_category_id"=>501, "html_attribute_ids"=>"24,27,49,53,54"} +create_section_piece_param( section_piece, sidr_close) + +sidr_overlay = { "editor_id"=>3, "class_name"=>"sidr_overlay", "pclass"=>"css", "param_category_id"=>502, "html_attribute_ids"=>"2,3,4,5,116"} + +create_section_piece_param( section_piece, sidr_overlay) diff --git a/spree_theme/db/seeds/260/268_fa.rb b/spree_theme/db/seeds/260/268_fa.rb new file mode 100644 index 00000000..3261b6ec --- /dev/null +++ b/spree_theme/db/seeds/260/268_fa.rb @@ -0,0 +1,4 @@ +section_piece = Spree::SectionPiece.where( slug: 'font-awesome' ).first +param_category = Spree::ParamCategory.find( 531 ) +fa = { "editor_id"=>4, "class_name"=>"fa", "pclass"=>"css", "param_category_id"=>param_category.id, "html_attribute_ids"=>"24,27,49,16,53,54"} +create_section_piece_param( section_piece, fa) diff --git a/spree_theme/db/seeds/260/269_flash_message.rb b/spree_theme/db/seeds/260/269_flash_message.rb new file mode 100644 index 00000000..c1db76e5 --- /dev/null +++ b/spree_theme/db/seeds/260/269_flash_message.rb @@ -0,0 +1,5 @@ +#flash message +#Spree::Section.where(:title=>'absolute container').each(&:destroy) +flash_message = Spree::Section.create_section( section_piece_hash['container'], {:title=>"flash message"}, \ + { 'block'=>{'21'=>"width:100%",'21unset'=>bool_false} } ) +flash_message.add_section_piece(section_piece_hash['flash-message']) diff --git a/spree_theme/db/seeds/260/26a_bootstrap_dialog_titlebar.rb b/spree_theme/db/seeds/260/26a_bootstrap_dialog_titlebar.rb new file mode 100644 index 00000000..530edea2 --- /dev/null +++ b/spree_theme/db/seeds/260/26a_bootstrap_dialog_titlebar.rb @@ -0,0 +1,24 @@ +section_piece = find_section_piece 'bootstrap-dialog-titlebar' +unless section_piece.section_piece_params.exists?( :class_name=>'dialog_titlebar' ) + titlebar = { "editor_id"=>2, "class_name"=>"dialog_titlebar", "pclass"=>"css", "param_category_id"=>4, "html_attribute_ids"=>"31,32,7,8,6"} + create_section_piece_param( section_piece, titlebar) + + titlebar = { "editor_id"=>3, "class_name"=>"dialog_titlebar", "pclass"=>"css", "param_category_id"=>4, "html_attribute_ids"=>"2,3,4,5"} + create_section_piece_param( section_piece, titlebar) + + titlebar = { "editor_id"=>4, "class_name"=>"dialog_titlebar", "pclass"=>"css", "param_category_id"=>4, "html_attribute_ids"=>"24,27,49,53,54"} + create_section_piece_param( section_piece, titlebar) +end + +section_piece.section_piece_params.where(['editor_id=? and class_name=?',2,'dialog_titlebar']).each{|spp| + spp.section_params.each{|sp| + sp.add_default_value( '32','padding:2px 2px 2px 2px') + sp.add_default_value('32unset',bool_false) + } +} +section_piece.section_piece_params.where(['editor_id=? and class_name=?',3,'dialog_titlebar']).each{|spp| + spp.section_params.each{|sp| + sp.add_default_value( '2','background-color:#EEEEEE') + sp.add_default_value('2unset',bool_false) + } +} diff --git a/spree_theme/db/seeds/260/26b_mobile_dialog.rb b/spree_theme/db/seeds/260/26b_mobile_dialog.rb new file mode 100644 index 00000000..d5252750 --- /dev/null +++ b/spree_theme/db/seeds/260/26b_mobile_dialog.rb @@ -0,0 +1,12 @@ +Spree::Section.where(:title=>'bootstrap dialog').each(&:destroy) + +#rename dialog_title to dialog_titlebar +Spree::SectionPieceParam.where( class_name: 'dialog_title' ).update_all( class_name: 'dialog_titlebar' ) + +dialog = Spree::Section.create_section(section_piece_hash['container'], {:title=>"bootstrap dialog", :usage=>"dialog"}, +{ 'inner'=>{'2'=>'background-color:#FFFFFF','2unset'=>bool_false }, + 'block'=>{'21'=>'width:100%','disabled_ha_ids'=>'111','21unset'=>bool_false} + }) +dialog_container = dialog.add_section_piece(section_piece_hash['container-dialog'],{'dialog_overlay'=>{'2'=>'background-color:#FFFFFF','2unset'=>bool_false}}).add_section_piece(section_piece_hash['container-form']) +dialog_container.add_section_piece(section_piece_hash['bootstrap-dialog-titlebar'], { 'dialog_titlebar'=>{'2'=>'background-color:#CCCCCC','2unset'=>bool_false,'49'=>'color:#000000','49unset'=>bool_false } } ) +dialog_container.add_section_piece(section_piece_hash['dialog-content'], {'dialog_content'=>{'32'=>'padding:10px 30px 20px 30px','32unset'=>bool_false }} ) diff --git a/spree_theme/db/seeds/260/26c_bootstrap_dialog_close.rb b/spree_theme/db/seeds/260/26c_bootstrap_dialog_close.rb new file mode 100644 index 00000000..1c27cf44 --- /dev/null +++ b/spree_theme/db/seeds/260/26c_bootstrap_dialog_close.rb @@ -0,0 +1,7 @@ +section_piece = Spree::SectionPiece.where( slug: 'bootstrap-dialog-titlebar' ).first + +dialog_close = { "editor_id"=>2, "class_name"=>"dialog_close", "pclass"=>"css", "param_category_id"=>501, "html_attribute_ids"=>"31,32,7,8,6"} +create_section_piece_param( section_piece, dialog_close) + +dialog_close = { "editor_id"=>4, "class_name"=>"dialog_close", "pclass"=>"css", "param_category_id"=>501, "html_attribute_ids"=>"24,27,49,53,54"} +create_section_piece_param( section_piece, dialog_close) diff --git a/spree_theme/db/seeds/260/26d_slider_with_arrow_nav.rb b/spree_theme/db/seeds/260/26d_slider_with_arrow_nav.rb new file mode 100644 index 00000000..b23f6367 --- /dev/null +++ b/spree_theme/db/seeds/260/26d_slider_with_arrow_nav.rb @@ -0,0 +1,8 @@ +taxon_slider = Spree::Section.create_section(section_piece_hash['container'], \ + {:title=>"Slider with arrow navigator for taxon images",:usage => 'slider-with-arrow-nav'},\ + {'block'=>{'disabled_ha_ids'=>'111','21unset'=>'0','21'=>'width:600px','15unset'=>'0','15'=>'height:200px'},\ + 'inner'=>{'15unset'=>'0','15'=>'height:200px','15hidden'=>bool_true,'21hidden'=>bool_true}}) + +slider_core = taxon_slider.add_section_piece(section_piece_hash['slider-core']) +slider_core.add_section_piece(section_piece_hash['slider-data-taxons']) +slider_core.add_section_piece(section_piece_hash['slider-arrow-navigator']) diff --git a/spree_theme/db/seeds/260/26e_related_product.rb b/spree_theme/db/seeds/260/26e_related_product.rb new file mode 100644 index 00000000..9ed0402d --- /dev/null +++ b/spree_theme/db/seeds/260/26e_related_product.rb @@ -0,0 +1,12 @@ +# product previous attribute +section = Spree::Section.create_section( section_piece_hash['container'], \ + { title: "product previous attribute", content_param: 1}, \ + { 'block'=>{'21'=>"width:100%",'21unset'=>bool_false} } ) +section.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['product-previous-attribute']) + + +# product next attribute +section = Spree::Section.create_section( section_piece_hash['container'], \ + {title: "product next attribute", content_param: 1}, \ + { 'block'=>{'21'=>"width:100%",'21unset'=>bool_false} } ) +section.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['product-next-attribute']) diff --git a/spree_theme/db/seeds/260/26f_related_taxa.rb b/spree_theme/db/seeds/260/26f_related_taxa.rb new file mode 100644 index 00000000..6e01505e --- /dev/null +++ b/spree_theme/db/seeds/260/26f_related_taxa.rb @@ -0,0 +1,12 @@ +# taxon previous attribute +section = Spree::Section.create_section( section_piece_hash['container'], \ + { title: "taxon previous attribute", content_param: 1}, \ + { 'block'=>{'21'=>"width:100%",'21unset'=>bool_false} } ) +section.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['taxon-previous-attribute']) + + +# taxon next attribute +section = Spree::Section.create_section( section_piece_hash['container'], \ + {title: "taxon next attribute", content_param: 1}, \ + { 'block'=>{'21'=>"width:100%",'21unset'=>bool_false} } ) +section.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['taxon-next-attribute']) diff --git a/spree_theme/db/seeds/260/26g_full_screen.rb b/spree_theme/db/seeds/260/26g_full_screen.rb new file mode 100644 index 00000000..3f862f6e --- /dev/null +++ b/spree_theme/db/seeds/260/26g_full_screen.rb @@ -0,0 +1,6 @@ + +# taxon next attribute +section = Spree::Section.create_section( section_piece_hash['container'], \ + { title: "full screen" }, \ + {'block'=>{'disabled_ha_ids'=>'15,21'},'inner'=>{'2unset'=>bool_false, '2'=> 'background-color: silver;'}}) +section.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['full-screen']) diff --git a/spree_theme/db/seeds/260/26h_slides.rb b/spree_theme/db/seeds/260/26h_slides.rb new file mode 100644 index 00000000..3f2726ef --- /dev/null +++ b/spree_theme/db/seeds/260/26h_slides.rb @@ -0,0 +1,12 @@ +section_piece = find_section_piece 'slider-scrolling' +unless section_piece.section_piece_params.exists?( :class_name=>'slides' ) + slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} + create_section_piece_param( section_piece, slides) +end + + +section_piece = find_section_piece 'slider-core' +unless section_piece.section_piece_params.exists?( :class_name=>'slides' ) + slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"78,79"} + create_section_piece_param( section_piece, slides) +end diff --git a/spree_theme/db/seeds/260/26i_opacity.rb b/spree_theme/db/seeds/260/26i_opacity.rb new file mode 100644 index 00000000..204dc80d --- /dev/null +++ b/spree_theme/db/seeds/260/26i_opacity.rb @@ -0,0 +1,10 @@ +# add html_attribute margin into a +opacity = Spree::HtmlAttribute.find_by_css_name 'opacity' + +spps = Spree::SectionPieceParam.where(:editor_id=>3,:class_name=>'inner') +#container, bootstrap_container, root_for_mobile +#if spps.size == 3 + spps.each{|spp| + spp.insert_html_attribute opacity + } +#end diff --git a/spree_theme/db/seeds/260/26j_product_attribute.rb b/spree_theme/db/seeds/260/26j_product_attribute.rb new file mode 100644 index 00000000..e2511129 --- /dev/null +++ b/spree_theme/db/seeds/260/26j_product_attribute.rb @@ -0,0 +1,3 @@ +product_attribute = Spree::Section.create_section(section_piece_hash['container'], {:title=>"product attribute"}, {'block'=>{'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) + +product_attribute.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['product-attribute']) diff --git a/spree_theme/db/seeds/260/26k_hover_effect_fadein.rb b/spree_theme/db/seeds/260/26k_hover_effect_fadein.rb new file mode 100644 index 00000000..3320e7c4 --- /dev/null +++ b/spree_theme/db/seeds/260/26k_hover_effect_fadein.rb @@ -0,0 +1,7 @@ +#hover_effect_container +#http://www.gtn9.com/user_show.aspx?action=yc&id=C80E6E334F84E131&page=1 +Spree::Section.where(:title=>'hover effect fadein container').each(&:destroy) +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"hover effect fadein container",:effect_param=>'hover_fadein'}, +{ 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}} +) +container.add_section_piece(section_piece_hash['hover-effect-fadein-container']) diff --git a/spree_theme/db/seeds/260/26m_swiper.rb b/spree_theme/db/seeds/260/26m_swiper.rb new file mode 100644 index 00000000..d0aefb3c --- /dev/null +++ b/spree_theme/db/seeds/260/26m_swiper.rb @@ -0,0 +1,15 @@ +#swiper +#http://www.swiper.com.cn + +section_piece = find_section_piece 'swipper-core' +unless section_piece.section_piece_params.exists?( :class_name=>'slides' ) + slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"21,15"} + create_section_piece_param( section_piece, slides) +end + + +Spree::Section.where(:title=>'swiper for taxon').each(&:destroy) +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"swiper for taxon"}, +{ 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false,'21'=>'width:100%','21unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}} +) +container.add_section_piece(section_piece_hash['swipper-core']).add_section_piece(section_piece_hash['swipper-data-taxons']) diff --git a/spree_theme/db/seeds/260/26n_post_attribute.rb b/spree_theme/db/seeds/260/26n_post_attribute.rb new file mode 100644 index 00000000..62574ea7 --- /dev/null +++ b/spree_theme/db/seeds/260/26n_post_attribute.rb @@ -0,0 +1,3 @@ +post_attribute = Spree::Section.create_section(section_piece_hash['container'], {:title=>"post attribute"}, {'block'=>{'disabled_ha_ids'=>'111'},'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) + +post_attribute.add_section_piece(section_piece_hash['container-link']).add_section_piece(section_piece_hash['post-attribute']) diff --git a/spree_theme/db/seeds/260/26p_pagination_container.rb b/spree_theme/db/seeds/260/26p_pagination_container.rb new file mode 100644 index 00000000..9a182458 --- /dev/null +++ b/spree_theme/db/seeds/260/26p_pagination_container.rb @@ -0,0 +1,35 @@ +#table title cell, border,padding +section_piece = find_section_piece 'container-pagination' +pagination = { "editor_id"=>2, "class_name"=>".pagination", "pclass"=>"css", "param_category_id"=>230, "html_attribute_ids"=>"12,21,15,31,32,7,8,6"} + +create_section_piece_param( section_piece, pagination) + +a = { "editor_id"=>2, "class_name"=>".pagination-a", "pclass"=>"css", "param_category_id"=>231, "html_attribute_ids"=>"31,32,7,8,6"} +create_section_piece_param( section_piece, a) + + +a = { "editor_id"=>3, "class_name"=>".pagination-a", "pclass"=>"css", "param_category_id"=>231, "html_attribute_ids"=>"2,3,4,5"} +a_h = { "editor_id"=>3, "class_name"=>".pagination-a:hover", "pclass"=>"css", "param_category_id"=>232, "html_attribute_ids"=>"2,3,4,5"} + +create_section_piece_param( section_piece, a) +create_section_piece_param( section_piece, a_h) + +a = { "editor_id"=>4, "class_name"=>".pagination-a", "pclass"=>"css", "param_category_id"=>231, "html_attribute_ids"=>"24,27,49,53,54"} +a_h = { "editor_id"=>4, "class_name"=>".pagination-a:hover", "pclass"=>"css", "param_category_id"=>232, "html_attribute_ids"=>"24,27,49,53,54"} +create_section_piece_param( section_piece, a) +create_section_piece_param( section_piece, a_h) + + +selected = { "editor_id"=>3, "class_name"=>".pagination-.active", "pclass"=>"css", "param_category_id"=>233, "html_attribute_ids"=>"2,3,4,5"} +create_section_piece_param( section_piece, selected) + +selected = { "editor_id"=>4, "class_name"=>".pagination-.active", "pclass"=>"css", "param_category_id"=>233, "html_attribute_ids"=>"23,24,25,27,49,53,54,56"} +create_section_piece_param( section_piece, selected) + +########################################################################################### +# add section + +Spree::Section.where(:title=>'container with pagination').each(&:destroy) +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"container with pagination"}, + { 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false,'21'=>'width:100%','21unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}}) +container.add_section_piece(section_piece_hash['container-pagination']) diff --git a/spree_theme/db/seeds/260/26x_related_taxon_name.rb b/spree_theme/db/seeds/260/26x_related_taxon_name.rb new file mode 100644 index 00000000..fe69713d --- /dev/null +++ b/spree_theme/db/seeds/260/26x_related_taxon_name.rb @@ -0,0 +1,4 @@ + +related_taxon_name = Spree::Section.create_section( section_piece_hash['container'], {:title=>"related taxon name"}, \ + { 'block'=>{'21'=>"width:100%",'21unset'=>bool_false} } ) +related_taxon_name.add_section_piece(section_piece_hash['related-taxon-name']) diff --git a/spree_theme/db/seeds/260/26x_relation_type.rb b/spree_theme/db/seeds/260/26x_relation_type.rb new file mode 100644 index 00000000..fbec7496 --- /dev/null +++ b/spree_theme/db/seeds/260/26x_relation_type.rb @@ -0,0 +1,4 @@ + +relation_type_name = Spree::Section.create_section( section_piece_hash['container'], {:title=>"relation name"}, \ + { 'block'=>{'21'=>"width:100%",'21unset'=>bool_false} } ) +relation_type_name.add_section_piece(section_piece_hash['relation-type-name']) diff --git a/spree_theme/db/seeds/260/26x_swiper_usable.rb b/spree_theme/db/seeds/260/26x_swiper_usable.rb new file mode 100644 index 00000000..9d600fc6 --- /dev/null +++ b/spree_theme/db/seeds/260/26x_swiper_usable.rb @@ -0,0 +1,15 @@ +#swiper +#http://www.swiper.com.cn + +section_piece = find_section_piece 'swipper-core' +unless section_piece.section_piece_params.exists?( :class_name=>'slides' ) + slides = { "editor_id"=>2, "class_name"=>"slides", "pclass"=>"css", "param_category_id"=>20, "html_attribute_ids"=>"21,15"} + create_section_piece_param( section_piece, slides) +end + + +Spree::Section.where(:title=>'swiper for taxon2').each(&:destroy) +container = Spree::Section.create_section( section_piece_hash['container'], {:title=>"swiper for taxon2"}, +{ 'content_layout'=>{'86'=>bool_true,'86unset'=>bool_false}, 'block'=>{'101'=>"float:left",'101unset'=>bool_false,'21'=>'width:100%','21unset'=>bool_false}, 'inner'=>{'15hidden'=>bool_true,'21hidden'=>bool_true}} +) +container.add_section_piece(section_piece_hash['swipper-core']).add_section_piece(section_piece_hash['swipper-data-taxons-as-background']) diff --git a/spree_theme/db/seeds/270/add_background_size.rb b/spree_theme/db/seeds/270/add_background_size.rb new file mode 100644 index 00000000..b2faf31e --- /dev/null +++ b/spree_theme/db/seeds/270/add_background_size.rb @@ -0,0 +1,6 @@ +spps = Spree::SectionPieceParam.where(:editor_id=>3,:class_name=>'s_a').all + +if spps.size == 1 + bgsize = Spree::HtmlAttribute.find 117 #background-size + spps.first.insert_html_attribute bgsize +end diff --git a/spree_theme/db/seeds/seed_migration b/spree_theme/db/seeds/seed_migration index fddff02b..ea040e4c 100644 --- a/spree_theme/db/seeds/seed_migration +++ b/spree_theme/db/seeds/seed_migration @@ -1,7 +1,9 @@ -# last updated seed for each env +# last updated seed for each env staging: - version: 23f + version: 25e +aliyun_staging: + version: 267 local_staging: - version: 220 + version: 23z development: - version: 230 \ No newline at end of file + version: 230 diff --git a/spree_theme/db/seeds/spree_section_pieces.yml b/spree_theme/db/seeds/spree_section_pieces.yml index 2e8f8bcd..2222e24e 100644 --- a/spree_theme/db/seeds/spree_section_pieces.yml +++ b/spree_theme/db/seeds/spree_section_pieces.yml @@ -1,156 +1,143 @@ -# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html -# id is required, or reload_section_piece would not work, sections is using section_piece_id. +# id is required, or reload_section_piece would not work, sections is using section_piece_id. root: id: 1 is_selectable: true is_container: true is_root: true html: |- - - - + + + <%= @current_page.title%> + - <%== meta_data_tags %> - - <%# it is in main app/assets/ include spree_theme, spree_china_checkout, store/product, store/cart, store/checkout ... %> - <%= javascript_include_tag 'spree/frontend/all' %> - <% if @current_page.is_preview %> - <%= stylesheet_link_tag 'store/spree_theme', :media => 'screen' %> - <% else%> - <%= stylesheet_link_tag 'store/spree_theme.client', :media => 'screen' %> - - <% end %> - <%= csrf_meta_tags %> - <%= render "spree/shared/analytics" %> - - - <% if @current_page.site_design? %> - <%= render "spree/shared/theme_selection_for_nondesigner" %> + <%= favicon_link_tag 'favicon.ico' %> + <%# it is in main app/assets/ include spree_theme, spree_china_checkout, store/product, store/cart, store/checkout ... %> + <%= render 'spree/shared/paths' %> + <%= javascript_tag do -%> + g_client_info = <%== @client_info.to_json %> + <% end -%> + <%= javascript_include_tag 'spree/frontend/all', "data-turbolinks-track" => true %> + <%= render "spree/shared/translations" %> + <%= stylesheet_link_tag 'store/spree_theme.desktop', "data-turbolinks-track" => true %> + <% if @current_page.is_preview %> + <%= stylesheet_link_tag 'store/spree_theme' %> + <% else%> + + <% end %> + <%= csrf_meta_tags %> + <%= render "spree/shared/sync_analytics" %> + + + <% if @current_page.site_design? && !@current_page.is_preview %> + <%= render "spree/shared/theme_selection_for_nondesigner" %> <% end %> - <%= flash_messages %> -
          -
          +
          +
          ~~content~~
          - <%= javascript_tag do -%> - g_is_preview = <%= @current_page.is_preview.to_json %> - <% end -%> - + + <% if @current_page.is_preview %> + <%= render 'layout_editor_panel' %> + <% end %> + <%= render "spree/shared/analytics" %> + css: | body - { font-size: 100%; - /*line-height: 1em;*/ + { /*font-size: 100%; #use font-size define in bootstrap + line-height: 1em;*/ margin: 0; padding: 0; <%= @template.css :body %> - } + } body, caption, th, td, input, textarea, select, option, legend, fieldset { + /* + keep it simple for now. + https://ruby-china.org/topics/14005 + */ + font-family: Helvetica, Tahoma, Arial, "Microsoft YaHei", "微软雅黑", SimSun, "宋体", STXihei, "华文细黑", Heiti, "黑体", sans-serif; + /* <% if @template.css(:font_family)== 'serif' %> font-family: Times, "Times New Roman", Georgia, SimSun, serif; <% else %> font-family: Tahoma, Verdana, Arial, Helvetica, STXihei, "Microsoft YaHei", SimHei, sans-serif; <% end %> - } + */ + } /*ol,ul { list-style: none; }*/ - /* **** Defaults **** */ /** headings **/ + /* **** Defaults **** */ /** headings **/ h1 { font-size: 2em; line-height: 1.3em; margin-top: 0; margin-bottom: 0.5em; /* 0.5em is equavalent to 1em in the page's base font. A margin specified in ems is relative to the element's font-size, not to the pages' base font size. */ - } + } h2 { font-size: 1.5em; line-height: 1.3em; margin-top: 0.667em; /* Equivalent to 1em in the page's base font: 1 / 1.5 = 0.667em */ margin-bottom: 0.667em; - } + } h3 { font-size: 1.3em; line-height: 1.3em; margin-top: 0.769em; /* Equivalent to 1em in the page's base font: 1 / 1.3 = 0.769 */ margin-bottom: 0.769em; - } + } table { border-collapse:collapse; border-spacing:0 } th, thead th, tbody th { text-align: left; font-style:normal; - font-weight:normal; + font-weight:normal; vertical-align: middle; } img { border: 0; - /* remove extra height, + /* remove extra height, * http://stackoverflow.com/questions/6483994/css-font-size-img-tag */ - vertical-align:middle; + vertical-align:middle; } table { - width:100%; + width:100%; } + /* all global setting apply to page_wrapper, simplemodal append to it. */ /* set padding margin to label */ - #page form[id] label { + #page-wrapper form[id] label { display: inline-block; } - /* - * product description should escape css reset - * checkout_form, login_form, site_form... + /* + * product description should escape css reset + * checkout_form, login_form, site_form... */ - #page form[id] p { + #page-wrapper form[id] p { margin: 0; padding: 0; } - - <% if @template.css :use_bbtl %> - div#bbtl - { position:absolute; - top:0; - left:0; - <%= @template.css :bbtl %> - } - <% end %> - <% if @template.css :use_bbtr %> - div#bbtr - { position:absolute; - top:0; - right:0; - <%= @template.css :bbtr %> - } - <% end %> - <% if @template.css :use_pbbl %> - div#pbbl - { position:absolute; - bottom:0; - left:0; - <%= @template.css :pbbl %> - } - <% end %> - <% if @template.css :use_pbbr %> - div#pbbr - { position:absolute; - bottom:0; - right:0; - <%= @template.css :pbbr %> + /* keep input width same with container, exclude radio,checkbox */ + /* us .selector, descendants could override it by .selector input */ + form.fullwidth input[type="text"], form.fullwidth input[type="password"], form.fullwidth input[type="phone"], form.fullwidth input[type="email"], form.fullwidth input[type="number"], form.fullwidth input[type="url"], textarea.fullwidth{ + box-sizing: border-box; + width: 100%; } - <% end %> + #page { - <% if @template.css(:font_size)== 10%> + <% if 'font_size' == 'font_size:10px' %> font-size: 0.625em; /* 16px x .625 = 10px */ line-height: 1.4em; /* 10px x 1.4 = 14px */ - <% elsif @template.css(:font_size)== 12%> + <% elsif 'font_size' == 'font_size:12px' %> font-size: 0.75em; /* 16px x .75 = 12px */ line-height: 1.333em; /* 12px x 1.333 = 16px */ - <% elsif @template.css(:font_size)== 14%> + <% elsif 'font_size' == 'font_size:14px' %> font-size: 0.875em; /* 16px x .875 = 14px */ line-height: 1.286; /* 14px x 1.286 = 18px */ - <% elsif @template.css(:font_size)== 16%> + <% else %> font-size: 1em; /* 16px x 1 = 16px */ line-height: 1.13; /* 16px x 1.13 = 18px */ <% end %> @@ -162,10 +149,12 @@ root: } #page-inner { position:relative; - <% @template.css :inner %> + <%= @template.css :inner %> } - .<%=@template.current_piece.child_selector%> - { + .infinitescroll .pagination{ display:none;} + #infscr-loading{ background-color:white; clear:both; text-align:center; border-radius:4px;} + .<%=@template.current_piece.child_selector%> + { <% if @template.css(:content_layout).to_i > 0 %> clear:none; <% else %> @@ -183,25 +172,16 @@ root: .clear-block { display: block; } - .tlc, .trc, .blc, .brc - { background-repeat: no-repeat; - width:100%; - height:100%; - } - .tb, .bb - { background-repeat: repeat-x; - width:100%; - height:100%; - } - .lb, .rb - { width:100%; - height:100%; - } + /* css3 effect */ + .hover_bigger{ } + .hover_bigger img { transition:all .5s linear;} + .hover_bigger:hover img { transform:scale(1.2,1.2); } + /* common setting for subsections, they are in container-link, container-form, container-table now. - * a + * a * a active * a visited - * a hover + * a hover * a select * a select hover * table border, margin, bg, font(font-size, font-weight, text-decoration, color, text-align ) @@ -214,8 +194,8 @@ root: * lable margin, border, padding, bg, font * error margin, border, padding, bg, font * input margin, border, padding, bg, font - */ - + */ + title: root slug: root js: "" @@ -225,33 +205,31 @@ container: is_selectable: "1" is_container: "1" html: |- - -
          -
          - ~~content~~ - <% if @template.current_piece.current_data_source.present? - if @var_collection.present? && @var_collection.try( :has_pages? ) %> - <%= paginate @var_collection %> - <% #set it to nil, or render pagination more times - @var_collection = nil - end - end %> -
          -
          +
          +
          ~~content~~
          +
          css: |- /* width,height, skinnables */ - .<%=g_piece_selector%> - { float:left; overflow:hidden; padding:0; margin:0 auto; + .<%=@template.section_selector%> + { float:left; padding:0; margin:0 auto; + overflow:hidden; + /* overflow is required for centered block float:none, margin: auto. + * http://yuiblog.com/blog/2010/05/19/css-101-block-formatting-contexts/ + */ position:relative; <%=@template.css(:block)%> } /* background, margin, border, padding */ - .<%=g_piece_selector%> .<%=g_piece_selector%>_inner + .<%=@template.section_selector%> > .inner { overflow: hidden;/* keep border visible*/ - min-height:1px;min-width:1px; /* it is required as placeholder */ + /* min-height:1px;min-width:1px; it is required as placeholder,cause problem when image width 100% */ <%=@template.css(:inner)%> } - .<%=@template.current_piece.child_selector%> + .<%=@template.section_selector%> > .inner.hover + { + <%=@template.css(:hover)%> + } + .<%=@template.current_piece.child_selector%> { <%if @template.css(:content_layout).present? %> <%= @template.css(:content_layout) %> @@ -259,47 +237,46 @@ container: clear:both; <%end%> } - /* #copy from spree_backend/assets/stylesheets/admin/components/pagination */ - .<%=g_piece_selector%> .pagination { float:left; clear:both; } /* add clear */ - .<%=g_piece_selector%> .pagination .page{ display: inline-block; text-align: center; - <%=@template.css(:pagination_page)%> - } - .<%=g_piece_selector%> .pagination .current{ - <%=@template.css(:pagination_current)%> - } - /* !unused, css for first/last child, feature center content */ - <% if @template.current_piece.current_data_source.present? %> - .<%=@template.current_piece.child_selector%>:first-child{ - } - .<%=@template.current_piece.child_selector%>:last-child{ - } - <% end %> - + <% if @template.current_piece.per_page >0 %> + /* since 3-0-stable pagination is ul */ + .<%=@template.section_selector%> .pagination { float:left; clear:both; padding:0; margin:0;} /* add clear */ + .<%=@template.section_selector%> .pagination li{ display: inline-block; text-align: center; + <%=@template.css(:pagination_page)%> + } + .<%=@template.section_selector%> .pagination .active{ + <%=@template.css(:pagination_current)%> + } + <% end %> + <% if @template.current_piece.column_count >0 %> + /* css for last column in row, feature center content, for mobile column, no inner div */ + .<%=@template.current_piece.child_selector%>.data_last, .<%=@template.current_piece.child_selector%>.data_last>div{ margin-right:0; padding-right:0; border-right:0; } + /* inner width is computed base on outer width, padding, border, margin. we should reset it for last column */ + /* comment out for theme40, bootstrap_column have on inner, data_last apply to child*/ + .<%=@template.current_piece.child_selector%>.data_last>div.inner{ width: auto; } + <% end %> title: container slug: container - + hmenu: id: 3 is_selectable: "0" is_container: "1" resources: m html: |- -
            - <% if @template.menu.present? %> - <% @template.menu.children.each{|page| %> - ~~content~~ - <% } %> - <% end %> +
              <% get_menu_items(@template.current_piece).each_with_index{|page, page_index| %> + ~~content~~ + <% } %>
            css: |- - .<%=g_piece_selector%>, .<%=g_piece_selector%> ul{ margin: 0; padding: 0;} - .<%=g_piece_selector%> li{ + .<%=@template.section_selector%> ul{ margin: 0; padding: 0;} + .<%=@template.section_selector%> li{ list-style-type:none; display:inline;} - .<%=g_piece_selector%> a{ - display:inline-block; - float:left; - margin:0; /* non-editable */} + .<%=@template.section_selector%> a{ + display:inline-block; + float:left; + margin:0; /* non-editable */ + } title: hmenu slug: hmenu vmenu: @@ -310,20 +287,16 @@ vmenu: title: vmenu slug: vmenu html: |- -
              - <% if @template.menu.present? %> - <% @template.menu.children.each{|page| %> - ~~content~~ - <% } %> - <% end %> +
                <% get_menu_items(@template.current_piece).each_with_index{|page, page_index| %> + ~~content~~ + <% } %>
              css: |- - .<%=g_piece_selector%>,.<%=g_piece_selector%> ul{ margin: 0; padding: 0;} - .<%=g_piece_selector%> li{ list-style-type:none; } - .<%=g_piece_selector%> a{ float: left; clear: left; text-align: left; margin: 0px; border: 0px; } - + .<%=@template.section_selector %> ul{ margin: 0; padding: 0;} + .<%=@template.section_selector %> li{ list-style-type:none; } + .<%=@template.section_selector %> a{ float: left; clear: left; text-align: left; margin: 0px; border: 0px; } js: "" - + menuitem: id: 6 is_selectable: "0" @@ -331,53 +304,33 @@ menuitem: title: menuitem slug: menuitem html: | - <% lambda_item = lambda{ |page| - if page.clickable? - if page.current? - link_to page.name, page.path, page.extra_html_attributes.merge( {:id=>"pi#{g_piece_selector}_page.id", :class=>"selected depth#{page.depth}"} ) - else - link_to page.name, page.path, page.extra_html_attributes.merge( {:id=>"pi#{g_piece_selector}_page.id", :class=>"depth#{page.depth}"} ) - end - else - link_to page.name, page.path, page.extra_html_attributes.merge( {:id=>"pi#{g_piece_selector}_page.id", :class=>"noclick depth#{page.depth}", :href=>'javascript:void(0)'} ) - end - } - %> -
            • - <%= lambda_item.call(page) %> - <% unless page.leaf? %> -
                <% page.children.each{|page| %> -
              • <%= lambda_item.call(page) %> - <% unless page.leaf? %> -
                  <% page.children.each{|page| %> -
                • <%= lambda_item.call(page) %>
                • - <% } %>
                - <% end %> -
              • - <% } %>
              - <% end %> -
            • - + <%= menu_item_atom( @template.current_piece, page, page_index ) %> css: |- - .<%=g_piece_selector%> { + .<%=@template.section_selector %> { <%= @template.css :shell %> - } - /*override parent container .selector a */ - .<%=g_piece_selector%> a{ - <%= @template.css :a %> } - .<%=g_piece_selector%> a:hover{ - <%= @template.css :a_h %> + /* override parent container .selector a */ + .<%=@template.section_selector %> a{ + position:relative;overflow: hidden; + <%= @template.css :a %> } - .<%=g_piece_selector%> .selected{ - <%= @template.css :selected %> + /* index start from 0, first is even */ + .<%=@template.section_selector %> a.even{ <%= @template.css :even %> } + .<%=@template.section_selector %> a.odd{ <%= @template.css :odd %> } + .<%=@template.section_selector %> a:hover{ + transition: all 0.5s ease 0s; + <%= @template.css :a_h %> } - .<%=g_piece_selector%> a.selected:hover{ <%= @template.css :as_h %> } - .<%=g_piece_selector%> .noclick{ cursor:default; <%= @template.css :noclick %> } - .<%=g_piece_selector%> a.depth1{ <%= @template.css :depth1 %> } - .<%=g_piece_selector%> a.depth2{ <%= @template.css :depth2 %> } - .<%=g_piece_selector%> a.depth3{ <%= @template.css :depth3 %> } - .<%=g_piece_selector%> a.depth4{ <%= @template.css :depth4 %> } + .<%=@template.section_selector %> .selected{ + <%= @template.css :selected %> + } + .<%=@template.section_selector %> a.selected:hover{ <%= @template.css :as_h %> } + .<%=@template.section_selector %> .noclick{ cursor:default; <%= @template.css :noclick %> } + .<%=@template.section_selector %> a.depth1{ <%= @template.css :depth1 %> } + .<%=@template.section_selector %> a.depth2{ <%= @template.css :depth2 %> } + .<%=@template.section_selector %> a.depth3{ <%= @template.css :depth3 %> } + .<%=@template.section_selector %> a.depth4{ <%= @template.css :depth4 %> } + js: "" image: id: 7 @@ -386,15 +339,15 @@ image: is_selectable: "0" is_container: "0" resources: i - html: | - <% if @template.image.present? %> + html: | + <% if @template.image.present? %> <% else %> - no image + no image <% end %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 - css: "" + css: .<%= @template.section_selector %> img { width:100%; } js: "" text: id: 8 @@ -403,7 +356,7 @@ text: is_selectable: "0" is_container: "0" resources: t - html: <%= raw @template.text %> + html: <%== @template.text %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: "" @@ -414,17 +367,12 @@ product_image: slug: product-image is_selectable: "0" is_container: "0" - html: | - <% if defined? product %> - <% if @template.current_piece.view_as_clickable? %> - <%= link_to product_main_image( @template.current_piece, product ), product.path %> - <% else %> - <%= product_main_image( @template.current_piece, product ) %> - <% end %> - <% end %> + html: | + <%= @template.product_attribute( :image ) %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 - css: "" + css: | + .<%= @template.section_selector %> img { width:100%; } js: "" product_description: id: 12 @@ -432,37 +380,31 @@ product_description: slug: product-description is_selectable: "0" is_container: "0" - html: | - <% if defined? product %> - <%=raw product.description %> - <% end %> + html: | + <%== @template.product_attribute( :description ) %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 - css: "" - js: "" + css: | + .<%=@template.section_selector%> img{ + <%= @template.css :img %> + } + js: "" product_name: id: 13 title: Product name slug: product-name is_selectable: "0" is_container: "0" - html: | - <% if defined? product %> - <%# span only for selector .g_piece_selector a %> - <% if @template.current_piece.view_as_clickable? %> - <%=product.name %> - <% else %> - <%=product.name %> - <% end %> - <% end %> + html: | + <%= @template.product_attribute( :name ) %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | - .<%=@template.current_piece.section_selector%> a{ - <%= @template.css :a %> + .<%=@template.section_selector%> a{ + <%= @template.css :a %> } - .<%=@template.current_piece.section_selector%> a:hover{ - <%= @template.css :a_h %> + .<%=@template.section_selector%> a:hover{ + <%= @template.css :a_h %> } js: "" product_thumbnails: @@ -471,20 +413,20 @@ product_thumbnails: slug: product_thumbnails is_selectable: "0" is_container: "0" - html: | - <%# no need for thumbnails unless there is more than one image %> -
              + html: | + +
              <% if (product.images + product.variant_images).uniq.size > 1 %>
                <% product.images.each do |i| %>
              • - <%= link_to_product_thumbnail( @template.current_piece, i ) %> + <%= @template.product_attribute( :thumbnail, image: i ) %>
              • <% end %> <% if product.has_variants? %> <% product.variant_images.each do |i| %> <% next if product.images.include?(i) %>
              • - <%= link_to_product_thumbnail( @template.current_piece, i ) %> + <%= @template.product_attribute( :thumbnail, image: i ) %>
              • <% end %> <% end %> @@ -494,9 +436,9 @@ product_thumbnails: created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: |- - .<%=g_piece_selector%> ul{ margin: 0; padding: 0;} - .<%=g_piece_selector%> li{ list-style-type:none; } - .<%=g_piece_selector%> ul.inline li { + .<%=@template.section_selector%> ul{ margin: 0; padding: 0;} + .<%=@template.section_selector%> li{ list-style-type:none; } + .<%=@template.section_selector%> ul.inline li { /* * it is inline-block, we should remove space between li. * http://stackoverflow.com/questions/16234440/space-between-li @@ -504,8 +446,8 @@ product_thumbnails: display: inline; float:left; } - .<%=g_piece_selector%> img { - <%= @template.css :img %> + .<%=@template.section_selector%> .thumbnails img { + <%= @template.css :img %> } js: "" product_main_image: @@ -514,16 +456,22 @@ product_main_image: slug: product_main_image is_selectable: "0" is_container: "0" - html: | -
                - <%= product_main_image( @template.current_piece, product ) %> + html: | +
                + <%= @template.product_attribute( :image ) %>
                created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | - .<%=g_piece_selector%> img{ - <%= @template.css :img %> + /* do not apply css padding,margin on image, image-zoom required. use wrapper instead */ + .<%=@template.section_selector%> .main_image_wrapper img{ + width: 100%; + <% if @template.current_piece.lightboxable? %> + cursor: pointer; + <% end %> } + /* since img has width:100%; padding/border/margin should apply to wrapper, or image width> container width*/ + .<%=@template.section_selector%> .main_image_wrapper{ <%= @template.css :img %> } js: "" product_properties: id: 16 @@ -531,14 +479,14 @@ product_properties: slug: product_properties is_selectable: "0" is_container: "0" - html: | - <% unless product.product_properties.empty? %> - + html: | + <% unless product.product_properties.empty? %> +
                <% product.product_properties.each do |product_property| %> <% css_class = cycle('even', 'odd', :name => "properties") %> - + <% end %> @@ -549,17 +497,17 @@ product_properties: created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | - .<%=g_piece_selector%> { - width:100%; + .<%=@template.section_selector%> table { + width:100%; } - .<%=g_piece_selector%> .cell{ - <%= @template.css :cell %> + .<%=@template.section_selector%> .cell{ + <%= @template.css :cell %> } - .<%=g_piece_selector%> th{ - <%= @template.css :th %> + .<%=@template.section_selector%> th{ + <%= @template.css :th %> } - .<%=g_piece_selector%> td{ - <%= @template.css :td %> + .<%=@template.section_selector%> td{ + <%= @template.css :td %> } js: "" @@ -577,7 +525,7 @@ product_price:
                <%= display_price(product.master) %> - +
                @@ -586,8 +534,8 @@ product_price:
                <%= Spree.t('product_not_available_in_this_currency') %>
                - <% end %> - <% end %> + <% end %> + <% end %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: "" @@ -598,16 +546,13 @@ product_quantity: slug: product_quantity is_selectable: "0" is_container: "0" - html: | - <% # products[product_id]&quantity for product contained options or just variants[id]=>quantity, more detail in Spree::OrderPopulator %> - <%= number_field_tag (product.variants_and_option_values.any? ? :quantity : "variants[#{product.master.id}]"), 1, :class => 'title', :min => 1 %> - + html: | + <%= number_field_tag :quantity, 1, :class => 'title', :min => 1 %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | - .<%=@template.current_piece.section_selector%> input{ - <%= @template.css :input %> - } + .<%=@template.section_selector%> > .inner {overflow:visible; } /* fix missing input bottom border on mobile*/ + .<%=@template.section_selector%> input{ <%= @template.css :input %> } js: "" product_atc: id: 19 @@ -615,16 +560,15 @@ product_atc: slug: product_atc is_selectable: "0" is_container: "0" - html: | + html: | <%= button_tag :id => 'add-to-cart-button', :type => :submit do %> <%= Spree.t(:add_to_cart) %> <% end %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | - .<%=@template.current_piece.section_selector%> button{ - <%= @template.css :button %> - } + .<%=@template.section_selector%> > .inner {overflow:visible; } /* fix missing input bottom border on mobile*/ + .<%=@template.section_selector%> button{ <%= @template.css :button %> } js: "" cart: id: 20 @@ -633,16 +577,15 @@ cart: is_selectable: "1" is_container: "1" html: | - <% if @order.line_items.empty? %> -
                + <% if @order.line_items.empty? %> +

                <%= Spree.t(:your_cart_is_empty) %>

                -
                +
                <% else %> -
                +
                <%= form_for @order, :url => update_cart_path, :html => {:id => 'update-cart'} do |order_form| %>
                <% #place holder for action /cart %> - <%= yield %> ~~content~~
                <%= button_tag :class => 'primary', :id => 'update-button' do %> @@ -654,16 +597,16 @@ cart:
                <% end %> -
                +
                <% end %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | - .<%=g_piece_selector%> .cart_buttons{ clear:both; } - .<%=g_piece_selector%> button{ + .<%=@template.section_selector%> .cart_buttons{ clear:both; } + .<%=@template.section_selector%> button{ <%= @template.css :button %> } - .<%=g_piece_selector%> .line_item_quantity{ width:60px; } + .<%=@template.section_selector%> .line_item_quantity{ width:60px; } js: "" account: id: 21 @@ -671,8 +614,7 @@ account: slug: account is_selectable: "0" is_container: "0" - html: | - <%= yield %> + html: '' created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: "" @@ -684,12 +626,7 @@ taxonomy_name: is_selectable: "1" is_container: "0" resources: m - html: | - <% if @template.menu.present? %> - <%= @template.menu.taxonomy.name %> - <% end %> - created_at: 2011-09-20 19:40:07 - updated_at: 2011-09-20 19:40:07 + html: <%= @template.page_attribute(:root_name) %> css: "" js: "" cart_items: @@ -698,25 +635,25 @@ cart_items: slug: cart-items is_selectable: "1" is_container: "0" - html: | - <%= render :partial => 'form', :locals => { :order_form => order_form } %> + html: | + <%= render :partial => 'spree/orders/form', :locals => { :order_form => order_form } %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: "" js: "" -order_total_price: +order_total_price: id: 24 title: order total price slug: order-total-price is_selectable: "1" is_container: "0" - html: | - <%= Spree.t(:subtotal) %>: <%= @order.display_total.to_html %> + html: | + <%= Spree.t(:total) %>: <%= @order.display_total.to_html %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | .g-order-total{ - + } js: "" checkout: @@ -725,35 +662,16 @@ checkout: slug: checkout is_selectable: "0" is_container: "0" - html: | -
                - <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @order } %> -
                - <%= form_for @order, :url => update_checkout_path(@order.state), :html => { :id => "checkout_form", :class=>'form' } do |form| %> - <% unless @order.email? %> -

                - <%= form.label :email %>
                - <%= form.text_field :email %> -

                - <% end %> - <%= yield %>~~content~~ -
                - <%= button_tag :class => 'continue button primary', :type => 'submit' do %> - <%= Spree.t(:save_and_continue) %> - <% end %> - -
                - <% end %> -
                -
                - <% if I18n.locale != :en %> - - <% end %> + html: | + <%= render partial: 'spree/checkout/edit' %> + ~~content~~ created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 - css: - .<%=g_piece_selector%> .form-buttons{ clear:both; } - + css: | + .<%=@template.section_selector%> .form-buttons{ clear:both; } + .<%=@template.section_selector%> ul{ margin: 0; padding: 0;} + .<%=@template.section_selector%> li{ list-style-type:none; } + .<%=@template.section_selector%> .stock-shipping-method-title {margin:0;} js: "" thanks: id: 26 @@ -761,8 +679,8 @@ thanks: slug: thanks is_selectable: "0" is_container: "0" - html: | - <%= yield %>~~content~~ + html: | + ~~content~~ created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: "" @@ -774,13 +692,7 @@ taxon_name: is_selectable: "1" is_container: "0" html: | - <% (defined?(page) ? page : @current_page).tap{|page| %> - <% if @template.current_piece.view_as_clickable? %> - <%= link_to page.name, page.path, page.extra_html_attributes %> - <% else %> - <%= page.name %> - <% end %> - <% }%> + <%= @template.page_attribute( :name ) %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | @@ -791,11 +703,11 @@ container_title: slug: container-title is_selectable: "0" is_container: "1" - html: ~~content~~ + html: ~~content~~ css: | .header3 { margin: 0; padding: 0; font-size: 100%;line-height:1em; } - .<%=@template.current_piece.section_selector%> .header3{ - <%= @template.css :s_header3 %> + .<%=@template.section_selector%> .header3{ + <%= @template.css :s_header3 %> } js: "" order_number: @@ -804,7 +716,7 @@ order_number: slug: order-number is_selectable: "1" is_container: "0" - html: | + html: | <%= Spree.t(:order) + " #" + @order.number %> css: "" js: "" @@ -822,7 +734,7 @@ order_address: <%= render :partial => 'spree/shared/address', :locals => { :address => @order.ship_address } %> <% end %> - <% end %> + <% end %> css: " " js: " " order_payment: @@ -831,7 +743,7 @@ order_payment: slug: order-payment is_selectable: "1" is_container: "0" - html: | + html: |

                <%= Spree.t(:payment_information) %> <%= link_to "(#{Spree.t(:edit)})", checkout_state_path(:payment) unless @order.completed? %>

                <% @order.payments.valid.each do |payment| %> @@ -846,8 +758,8 @@ order_items: slug: order-items is_selectable: "1" is_container: "0" - html: | - <%= render :partial => 'order_items' %> + html: | + <%= render partial: 'order_items', locals: {order: @order} %> css: "" js: "" payment_form: @@ -856,34 +768,7 @@ payment_form: slug: payment-form is_selectable: "1" is_container: "0" - html: | -
                -

                <%= Spree.t(:payment_information) %>

                - <% @order.available_payment_methods.each do |method| %> -

                - -

                - <% end %> -
                  - <% @order.available_payment_methods.each do |method| %> -
                • -
                  - <%= render :partial => "spree/checkout/payment/#{method.method_type}", :locals => { :payment_method => method } %> -
                  -
                • - <% end %> -
                -
                - <% if Spree::Promotion.with_code.count > 0 %> -

                - <%= form.label :coupon_code %>
                - <%= form.text_field :coupon_code %> -

                - <% end %> -
                + html: "" css: |- #checkout_form_payment ul{ margin: 0; padding: 0;} #checkout_form_payment li{ list-style-type:none; } @@ -895,16 +780,7 @@ ship_form: slug: ship-form is_selectable: "1" is_container: "0" - html: | -
                - <%= form.fields_for :bill_address do |bill_form| %> -

                <%= Spree.t(:shipping_address) %>

                - <%= render :partial => 'spree/address/form', :locals => { :form => bill_form, :address_type => 'billing', :address => @order.bill_address } %> - <% end %> - <%= form.fields_for :ship_address do |ship_form| %> - <%= hidden_field_tag 'order[use_billing]', '1' %> - <% end %> -
                + html: "" css: | #baddress1 input{ width:480px; } js: "" @@ -914,10 +790,10 @@ order_summary: slug: order-summary is_selectable: "1" is_container: "0" - html: | + html: | <% if @order.state != 'confirm' %> <%= render :partial => 'summary', :locals => { :order => @order } %> - <% end %> + <% end %> css: "" js: "" login_form: @@ -926,7 +802,7 @@ login_form: slug: login-form is_selectable: "1" is_container: "0" - html: | + html: | <%= render :partial => 'spree/user_sessions/new' %> css: "" js: "" @@ -936,7 +812,7 @@ checkout_as_guest_form: slug: checkout-as-guest-form is_selectable: "1" is_container: "0" - html: "" + html: "" css: "" js: "" sign_up_form: @@ -945,7 +821,7 @@ sign_up_form: slug: sign-up-form is_selectable: "1" is_container: "0" - html: | + html: | <%= render :partial => 'spree/user_registrations/new' %> css: "" js: "" @@ -955,7 +831,7 @@ profile: slug: profile is_selectable: "1" is_container: "0" - html: | + html: |
                <%= Spree.t(:email) %>
                <%= @user.email %> (<%= link_to Spree.t(:edit), spree.edit_account_path, :remote=>true %>)
                @@ -968,36 +844,8 @@ order_list: slug: order-list is_selectable: "1" is_container: "0" - html: | -

                <%= Spree.t(:my_orders) %>

                - <% if @orders.present? %> -
                <%= product_property.property.presentation %><%= product_property.property.presentation %> <%= product_property.value %>
                - - - - - - - - - - - - <% @orders.each do |order| %> - - - - - - - - - <% end %> - -
                <%= Spree.t(:order_number) %><%= Spree.t(:order_date) %><%= Spree.t(:status) %><%= Spree.t(:payment_state) %><%= Spree.t(:shipment_state) %><%= Spree.t(:total) %>
                <%= link_to order.number, order_url(order), :remote=>true %><%= l order.completed_at.to_date %><%= Spree.t(order.state).titleize %><%= Spree.t("payment_states.#{order.payment_state}") if order.payment_state %><%= Spree.t("shipment_states.#{order.shipment_state}") if order.shipment_state %><%= order.display_total %>
                - <% else %> -

                <%= Spree.t(:you_have_no_orders_yet) %>

                - <% end %> + html: | + <%= render partial: 'themes/orders/list' %> css: "" js: "" dialog: @@ -1007,15 +855,15 @@ dialog: is_selectable: "1" is_container: "0" usage: "dialog" - html: | -
                -
                + html: | +
                +
                ~~content~~
                -
                +
                css: | - div.<%=g_piece_selector%> - { + #dialog + { display:none; ~~PageParams.get:outer~~ } @@ -1027,12 +875,12 @@ container_link: slug: container-link is_selectable: "0" is_container: "1" - html: ~~content~~ + html: ~~content~~ css: | - .<%=@template.current_piece.section_selector%> a{ display: inline-block; <%=@template.css(:s_a) %> } - .<%=@template.current_piece.section_selector%> a:hover{ <%=@template.css(:s_a_h) %> } - .<%=@template.current_piece.section_selector%> a.selected{ <%=@template.css(:s_a_sel) %> } - .<%=@template.current_piece.section_selector%> a.unavailable{ <%=@template.css(:s_a_una) %> } + .<%=@template.section_selector%> a{ display: inline-block; <%=@template.css(:s_a) %> } + .<%=@template.section_selector%> a:hover{ <%=@template.css(:s_a_h) %> } + .<%=@template.section_selector%> a.selected{ <%=@template.css(:s_a_sel) %> } + .<%=@template.section_selector%> a.unavailable{ <%=@template.css(:s_a_una) %> } js: "" container_table: id: 43 @@ -1040,12 +888,12 @@ container_table: slug: container-table is_selectable: "0" is_container: "1" - html: ~~content~~ + html: ~~content~~ css: | - .<%=@template.current_piece.section_selector%> table{ <%= @template.css :s_table %> } - .<%=@template.current_piece.section_selector%> th, .<%=@template.current_piece.section_selector%> td{ <%= @template.css :s_cell %> } - .<%=@template.current_piece.section_selector%> th{ <%= @template.css :s_th %> } - .<%=@template.current_piece.section_selector%> td{ <%= @template.css :s_td %> } + .<%=@template.section_selector%> table{ <%= @template.css :s_table %> } + .<%=@template.section_selector%> th, .<%=@template.section_selector%> td{ <%= @template.css :s_cell %> } + .<%=@template.section_selector%> th{ <%= @template.css :s_th %> } + .<%=@template.section_selector%> td{ <%= @template.css :s_td %> } js: "" container_form: id: 44 @@ -1053,13 +901,14 @@ container_form: slug: container-form is_selectable: "0" is_container: "1" - html: ~~content~~ + html: ~~content~~ css: | - .<%=@template.current_piece.section_selector%> label.error{ <%=@template.css(:s_error) %> } - .<%=@template.current_piece.section_selector%> label{ <%=@template.css(:s_label) %> } - .<%=@template.current_piece.section_selector%> input{ <%=@template.css(:s_input) %> } - .<%=@template.current_piece.section_selector%> button{ <%=@template.css(:s_button) %> } - .<%=@template.current_piece.section_selector%> button:hover{ <%=@template.css(:s_button_h) %> } + .<%=@template.section_selector%> label.error{ <%=@template.css(:s_error) %> } + .<%=@template.section_selector%> label{ <%=@template.css(:s_label) %> } + .<%=@template.section_selector%> form input[type='text'], .<%=@template.section_selector%> form input[type='search'], .<%=@template.section_selector%> form input[type='password'], .<%=@template.section_selector%> form input[type='email'], .<%=@template.section_selector%> form textarea + { <%=@template.css(:s_input) %> } + .<%=@template.section_selector%> button{ <%=@template.css(:s_button) %> } + .<%=@template.section_selector%> button:hover{ <%=@template.css(:s_button_h) %> } js: "" dialog_title: @@ -1069,15 +918,18 @@ dialog_title: is_selectable: "0" is_container: "0" html: | -
                -
                <%= Spree.t(:dialog_title) %> X
                -
                - css: | - .<%=g_piece_selector%> .title{ <%=@template.css(:title) %> } - .<%=g_piece_selector%> a.cancel{ +
                +
                <%= Spree.t(:dialog_title) %>
                +
                X
                +
                + css: | + .<%=@template.section_selector%> .dialog_titlebar{ <%=@template.css(:dialog_titlebar) %> } + .<%=@template.section_selector%> .dialog_title{ float:left; } + .<%=@template.section_selector%> .dialog_close_wrapper{ float:right; } + .<%=@template.section_selector%> .dialog_close_wrapper a.dialog_close{ border:0; padding:0; margin:0; background: transparent none; text-decoration: none;/*reset it, prevent root's default */ - float:right; cursor:pointer; - <%=@template.css(:cancel) %> + cursor:pointer; + <%=@template.css(:dialog_close) %> } js: "" # set padding, margin, without affecting dialog title @@ -1089,24 +941,14 @@ dialog_content: is_container: "1" usage: "dial-cont" html: | - -
                -
                - ~~content~~ -
                -
                - css: | - .<%=g_piece_selector%> - { - position:relative; - <%=@template.css(:block)%> - } +
                ~~content~~
                + css: | /* background, margin, border, padding */ - .<%=g_piece_selector%> .<%=g_piece_selector%>_inner + .<%=@template.section_selector%> .dialog_content { - <%=@template.css(:inner)%> + <%=@template.css(:dialog_content)%> } - js: "" + js: "" logo: id: 47 title: logo @@ -1114,15 +956,21 @@ logo: is_selectable: "0" is_container: "0" resources: i - html: | - <% if @template.image.present? %> - <%= link_to image_tag( @template.image.url ), spree.root_path %> + html: | + <% if @template.image.present? %> + <%= link_to image_tag( @template.image.url , alt: @template.image.alt ), spree.root_path %> <% else %> - <%= logo %> + <%= logo %> <% end %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 - css: "" + css: | + .<%= @template.section_selector %> img { + /*http://stackoverflow.com/questions/4888223/align-image-in-center-and-middle-within-div*/ + display: block; margin-left: auto; margin-right: auto; + <%=@template.css(:img)%> + /*width:100%; add params for it later*/ + } js: "" minicart: id: 48 @@ -1131,18 +979,7 @@ minicart: is_selectable: "0" is_container: "0" html: | - <% - text = Spree.t('cart') - css_class = nil - if current_order.nil? or current_order.item_count.zero? - text = "#{text}: (#{Spree.t('empty')})" - css_class = 'empty' - else - text = "#{text}: (#{current_order.item_count}) #{current_order.display_total.to_html}".html_safe - css_class = 'full' - end - %> - <%= link_to text, spree.cart_path, :class => "cart-info #{css_class}" %> + <%= link_to_cart %> css: "" js: "" logged_and_unlogged_menu: @@ -1155,18 +992,18 @@ logged_and_unlogged_menu: html: | <% menu = (spree_current_user ? @template.menu : @template.menu2) %> <% if menu.present? %> -
                  - <% menu.children.each{|page| %> +
                    + <% menu.children.each_with_index{|page, page_index| %> ~~content~~ <% } %>
                  <% end %> css: |- - ul.<%=g_piece_selector%> { margin: 0; padding: 0;} - .<%=g_piece_selector%> li{ + .<%=@template.section_selector%> ul { margin: 0; padding: 0;} + .<%=@template.section_selector%> li{ list-style-type:none; display:inline;float: left;} - .<%=g_piece_selector%> a{ + .<%=@template.section_selector%> a{ display:inline-block; float:left; margin:0; /* non-editable */} @@ -1176,7 +1013,7 @@ password_recover_form: slug: password-recover-form is_selectable: "1" is_container: "0" - html: | + html: | <%= render :partial => 'spree/user_passwords/new' %> css: "" js: "" @@ -1186,29 +1023,13 @@ product_option_values: slug: product-option-values is_selectable: "1" is_container: "0" - html: | - <% if product.variants_and_option_values(current_currency).any? %> -
                  -
                    - <% product.variants_and_option_values(current_currency).each_with_index do |variant, index| %> -
                  • - <%= radio_button_tag "products[#{product.id}]", variant.id, index == 0, 'data-price' => display_price(variant).to_s %> - -
                  • - <% end%> -
                  -
                  - <% end%> + html: | + <% if defined? product %> + <%= render :partial => 'themes/variants_and_option_values', :locals=>{:product=>product} %> + <% end %> css: |- - .<%=g_piece_selector%> ul{ margin: 0; padding: 0;} - .<%=g_piece_selector%> li{ list-style-type:none; } + .<%=@template.section_selector%> ul{ margin: 0; padding: 0;} + .<%=@template.section_selector%> li{ list-style-type:none; } js: "" taxon_description: id: 52 @@ -1216,20 +1037,20 @@ taxon_description: slug: taxon-description is_selectable: "1" is_container: "0" - html: | - <%=raw (defined?(page) ? page : @current_page).description %> + html: | + <%== @template.page_attribute(:description) %> css: "" - js: "" + js: "" site_form: id: 53 title: site form slug: site-form is_selectable: "1" is_container: "0" - html: | - <%= render :partial => 'spree/sites/form_for_spree_theme' %> + html: | + <%= render :partial => 'themes/sites/quick_lunch' %> css: | - .<%=@template.current_piece.section_selector%> p{ + .<%=@template.section_selector%> .field{ float:left; } js: "" @@ -1240,65 +1061,41 @@ slider: resources: m is_selectable: "1" is_container: "0" - html: | -
                  + html: |- +
                  + <%# outer div is required, jssor duplicate it and set style. %> <% if @template.menu.present? %> -
                  +
                  - <% # jssor require with,height in element style. %> -
                  - <% @template.menu.children.each{|page| %> -
                  <%= image_tag page.icon.url(:original), :u=>'image', :alt=>page.name %>
                  - <% } %> + <%# jssor require with,height in element style. %> +
                  + <% @template.menu.children.each{|page| next if page.icon.blank? %> +
                  + <%= link_to_if @template.current_piece.clickable?, image_tag( page.icon.attachment.url(:original), :u=>'image', :alt=>page.name), page.path %> +
                  + <% } %>
                  - -
                  +
                  - <% end %>
                  - css: |- - #<%=g_piece_selector%> { position:relative; } - #<%=g_piece_selector%> [u='slides']{ - cursor: move; left: 0px; top: 0px; + .<%=@template.section_selector%> > .inner { min-height:1px;min-width:1px; /* hight, width are required*/} + .effect_slider { position:relative; } + .<%=@template.section_selector%> [data-u='slides']{ + <%=@template.css(:slides)%> + cursor: move; left: 0px; top: 0px; } - #<%=g_piece_selector%> [u='navigator']{ + .<%=@template.section_selector%> [data-u='navigator']{ position: absolute; bottom:0; - } + } .jssorb03 div, .jssorb03 div:hover, .jssorb03 .av { background: url('/shops/shared/images/jssor/n21.png') no-repeat; @@ -1317,12 +1114,12 @@ breadcrumbs: slug: breadcrumbs is_selectable: "1" is_container: "0" - html: | + html: | <%= breadcrumbs(@current_page) %> css: | - .<%=@template.current_piece.section_selector%> ul{ margin: 0; padding: 0;} - .<%=@template.current_piece.section_selector%> li{ - list-style-type:none; + .<%=@template.section_selector%> ul{ margin: 0; padding: 0;} + .<%=@template.section_selector%> li{ + list-style-type:none; display: inline-block; } js: "" @@ -1332,18 +1129,16 @@ taxon_icon: slug: taxon-icon is_selectable: "1" is_container: "0" - html: | - <% if defined? page %> - <% if page.icon.present? %> - <%= link_to image_tag(page.icon.url(:original), :u=>'image', :alt=>page.name), page.path %> - <% end %> - <% end %> + html: | + <%= @template.page_attribute(:icon) %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | - .<%=@template.current_piece.section_selector%> { - margin: 0; padding: 0; + .<%=@template.section_selector%> { + /*margin: 0; it is required to align center*/ + padding: 0; } + .<%= @template.section_selector %> img { width:100%; } js: "" post_title: id: 57 @@ -1351,14 +1146,8 @@ post_title: slug: post-title is_selectable: "0" is_container: "0" - html: | - <% if defined? post %> - <% if @template.current_piece.view_as_clickable? %> - <%=post.title %> - <% else %> - <%=post.title %> - <% end %> - <% end %> + html: | + <%= @template.post_attribute(:title) %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: "" @@ -1369,10 +1158,8 @@ post_author: slug: post-author is_selectable: "0" is_container: "0" - html: | - <% if defined? post %> - <%=post.author %> - <% end %> + html: | + <%= @template.post_attribute(:author) %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: "" @@ -1383,10 +1170,8 @@ post_time: slug: post-time is_selectable: "0" is_container: "0" - html: | - <% if defined? post %> - <%= pretty_time post.posted_at %> - <% end %> + html: | + <%= @template.post_attribute(:posted_at) %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: "" @@ -1397,10 +1182,8 @@ post_body: slug: post-body is_selectable: "0" is_container: "0" - html: | - <% if defined? post %> - <%=raw post.body %> - <% end %> + html: | + <%== @template.post_attribute(:body) %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: "" @@ -1411,15 +1194,13 @@ post_cover: slug: post-cover is_selectable: "1" is_container: "0" - html: | - <% if defined? post %> - <% if post.cover.present? %> - <%= link_to image_tag(post.cover.url(:original), :u=>'image', :alt=>post.title), post.path %> - <% end %> - <% end %> + html: | + <%= @template.post_attribute(:cover) %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 - css: '' + css: | + .<%= @template.section_selector %> img { width:100%; } + .<%= @template.section_selector %> a { width:100%; } /*clickable image*/ js: "" grouped_option_values_selector: id: 62 @@ -1427,40 +1208,38 @@ grouped_option_values_selector: slug: grouped-option-values-selector is_selectable: "1" is_container: "0" - html: | + html: | <% if defined? product %> - <% if product.has_variants? %> - <%= render :partial => 'themes/grouped_option_values_selector', :locals=>{:product=>product,:g_piece_selector=>g_piece_selector} %> - <% end%> + <%= render :partial => 'themes/grouped_option_values_selector', :locals=>{:product=>product} %> <% end%> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | #product-details .price.unselected { - color: #bbb; + color: #bbb; } - .<%=g_piece_selector%> .option_type { - <%=@template.css(:option_type)%> + .<%=@template.section_selector%> .option_type { + <%=@template.css(:option_type)%> } - .<%=g_piece_selector%> .option_value { - <%=@template.css(:option_value)%> + .<%=@template.section_selector%> .option_value { + <%=@template.css(:option_value)%> } - .<%=g_piece_selector%> ul.option_values { - list-style-type: none; + .<%=@template.section_selector%> ul.option_values { + list-style-type: none; margin: 0; padding: 0; } - .<%=g_piece_selector%> .option_values li { + .<%=@template.section_selector%> .option_values li { display: block; position: relative; float: left; } - .<%=g_piece_selector%> .option_values li a { + .<%=@template.section_selector%> .option_values li a { display: block; cursor: pointer; text-decoration: none; } .option-value.selected, - .option-value.in-stock:hover { + .option-value.in-stock:hover { } .option-value.out-of-stock { display: block; @@ -1469,8 +1248,8 @@ grouped_option_values_selector: cursor: default; } .option-value.locked, - .option-value.locked:hover { - cursor: default; + .option-value.locked:hover { + cursor: not-allowed; } .option-value.locked img { filter:alpha(opacity=50); @@ -1478,6 +1257,7 @@ grouped_option_values_selector: -khtml-opacity: 0.5; opacity: 0.5; } + js: "" option_values_in_slide_style: id: 63 @@ -1485,24 +1265,24 @@ option_values_in_slide_style: slug: option-values-in-slide-style is_selectable: "1" is_container: "0" - html: | + html: | <% if defined? product %> -
                  - <%= render :partial => 'themes/product_options_in_slide_style', :locals=>{:product=>product,:g_piece_selector=>g_piece_selector} %> -
                  +
                  + <%= render :partial => 'themes/product_options_in_slide_style', :locals=>{:product=>product} %> +
                  <% end%> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 css: | - .<%=g_piece_selector%> .variant-option{ + .<%=@template.section_selector%> .variant-option{ display:none; } - .<%=g_piece_selector%> ul.option_values { + .<%=@template.section_selector%> ul.option_values { list-style-type: none; margin:0; - padding:0; + padding:0; } - .<%=g_piece_selector%> .option_values li { + .<%=@template.section_selector%> .option_values li { display: block; position: relative; float: left; @@ -1513,9 +1293,9 @@ option_values_in_slide_style: border-color: #1072B9; color: #ffffff; } - .<%=g_piece_selector%> .option_type{ <%=@template.css(:option_type)%> } - .<%=g_piece_selector%> .large_image{ <%=@template.css(:large_image)%> } - .<%=g_piece_selector%> .thumb_image{ <%=@template.css(:thumb_image)%> } + .<%=@template.section_selector%> .option_type{ <%=@template.css(:option_type)%> } + .<%=@template.section_selector%> .large_image{ <%=@template.css(:large_image)%> } + .<%=@template.section_selector%> .thumb_image{ <%=@template.css(:thumb_image)%> } js: "" product_customization_options: id: 64 @@ -1523,7 +1303,7 @@ product_customization_options: slug: product-customization-options is_selectable: "1" is_container: "0" - html: | + html: | <% if defined? product %> <%= render :partial => 'themes/product_customizations', :locals=>{:product=>product} %> <% end %> @@ -1537,11 +1317,11 @@ container_header0: slug: container-header0 is_selectable: "0" is_container: "1" - html: ~~content~~ + html: ~~content~~ css: | - .<%=@template.current_piece.section_selector%> .header0 { + .<%=@template.section_selector%> .header0 { margin: 0; padding: 0; font-size: 100%;line-height:1em; - <%= @template.css :s_header0 %> + <%= @template.css :s_header0 %> } js: "" container_dl: @@ -1550,11 +1330,11 @@ container_dl: slug: container-dl is_selectable: "0" is_container: "1" - html: ~~content~~ + html: ~~content~~ css: | - .<%=@template.current_piece.section_selector%> dl,dd{ margin:0;padding:0; } - .<%=@template.current_piece.section_selector%> dt{ <%= @template.css :s_dt %> } - .<%=@template.current_piece.section_selector%> dd{ <%= @template.css :s_dd %> } + .<%=@template.section_selector%> dl,dd{ margin:0;padding:0; } + .<%=@template.section_selector%> dt{ float:left; <%= @template.css :s_dt %> } + .<%=@template.section_selector%> dd{ float:left; <%= @template.css :s_dd %> } js: "" preview_theme_button: id: 67 @@ -1563,12 +1343,12 @@ preview_theme_button: is_selectable: "0" is_container: "0" html: | - <% if defined? product %> - <%=link_to Spree.t(:preview_theme), preview_template_theme_url( product.template_theme, :host=>product.template_theme.site.subdomain ), {:target=>'_blank'} %> + <% if defined? product %> + <%=link_to Spree.t(:preview_theme), preview_template_theme_url( product.template_theme, :host=>product.template_theme.store.subdomain ), {:target=>'_blank'} %> <% end %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 - css: "" + css: "" js: "" install_theme_with_site_button: id: 68 @@ -1577,12 +1357,12 @@ install_theme_with_site_button: is_selectable: "0" is_container: "0" html: | - <% if defined? product %> + <% if defined? product %> <%= link_to Spree.t(:install_theme_with_site), new_site_path(:template_theme_id=> product.theme_id), {:remote=>true} %> <% end %> created_at: 2011-09-20 19:40:07 updated_at: 2011-09-20 19:40:07 - css: "" + css: "" js: "" container_fixed: id: 69 @@ -1591,21 +1371,435 @@ container_fixed: is_selectable: "0" is_container: "1" html: | - ~~content~~ - + ~~content~~ css: | - .<%=@template.current_piece.section_selector%> { position: fixed; right:0; top:250px; <%=@template.css(:position) %>} + .<%=@template.section_selector%> {z-index:10; position:fixed; <%=@template.css(:fixed_position) %>} js: '' -container_hover_effect: +hover_effect_slide_container: id: 70 - title: container hover effect - slug: container-hover-effect + title: hover effect slide container + slug: hover-effect-slide-container + is_selectable: "0" + is_container: "1" + html: | + ~~content~~ + css: | + /* slide_effect: width,height is required, children are absolute */ + /* override original position,display */ + .<%= @template.section_selector %> .child_1{ position:absolute; display:block;height:100%; } + .<%= @template.section_selector %> .child_2{ position:absolute; display:block;height:0; } + js: '' + +taxon_tooltips: + id: 71 + title: taxon tooltips + slug: taxon-tooltips + is_selectable: "1" + is_container: "0" + html: | + <%= @template.page_attribute( :tooltips ) %> + created_at: 2011-09-20 19:40:07 + updated_at: 2011-09-20 19:40:07 + css: | + js: "" +hover_effect_show_container: + id: 72 + title: hover effect show container + slug: hover-effect-show-container + is_selectable: "0" + is_container: "1" + html: | + ~~content~~ + css: | + .<%= @template.section_selector %> .child_1{ } + .<%= @template.section_selector %> .child_2{ position:absolute; display:none;bottom:0; } + js: '' +hover_effect_expansion_container: + id: 73 + title: hover effect expansion container + slug: hover-effect-expansion-container + is_selectable: "0" + is_container: "1" + html: | + ~~content~~ + css: | + .<%= @template.section_selector %> .child_1{ } + .<%= @template.section_selector %> .child_2{ display:none; } + .<%= @template.section_selector %>.hovered, .<%= @template.section_selector %>.data_current_ancestor { + <%= @template.css :block_hovered %> } + .<%= @template.section_selector %>.data_current_ancestor .child_2, + .<%= @template.section_selector %>.data_current .child_2 { display:block;} + js: '' + +hover_effect_overlay_container: + id: 74 + title: hover effect overlay container + slug: hover-effect-overlay-container + is_selectable: "0" + is_container: "1" + html: | + ~~content~~ + css: | + /* overlay_effect: width,height is required, children are absolute */ + /* override original position,display */ + /* child_1.z-index < child_2.z-index, child_2 is on top of child_1 initially, slideUp on hovering */ + .<%=@template.section_selector%> > .inner{ position: relative; /*fix: it has margin/border, child2 position would incorrect.*/} + .<%= @template.section_selector %> .inner div:nth-child(1){ } + .<%= @template.section_selector %> .inner div:nth-child(2){ position:absolute; } + js: '' +hover_effect_popup_container: + id: 75 + title: hover effect popup container + slug: hover-effect-popup-container + is_selectable: "0" + is_container: "1" + html: | + ~~content~~ + css: | + /* popup_effect: width,height is required, children are absolute */ + /* override original position,display */ + /* child_1.z-index < child_2.z-index, child_2 is on top of child_1 initially, slideUp on hovering */ + .<%= @template.section_selector %> .child_1{ } + .<%= @template.section_selector %> .child_2{ position:absolute; display:none; } + js: '' + +baidu_map: + id: 76 + title: baidu map + slug: baidu-map + is_selectable: "0" + is_container: "0" + html: | + <%= render 'map' %> + css: '/* width,height are required for map */' + js: '' + +container_pagination: + id: 77 + title: container pagination + slug: container-pagination + is_selectable: "0" + is_container: "1" + html: ~~content~~ + css: | + /* #container pagination */ + .<%=@template.section_selector%> .pagination { float:left; clear:both; clear: both; + padding: 0; margin: 0; text-align: center; } /* add clear */ + .<%=@template.section_selector%> .pagination li{ display: inline-block; text-align: center; + <%=@template.css(:".pagination-li")%> + } + .<%=@template.section_selector%> .pagination a{ + <%=@template.css(:".pagination-a")%> + } + .<%=@template.section_selector%> .pagination .active{ + <%=@template.css(:".pagination-.active")%> + } + + js: "" +post_summary: + id: 78 + title: post summary + slug: post-summary + is_selectable: "0" + is_container: "0" + html: | + <%== @template.post_attribute(:summary) %> + css: '' + js: '' + +site_title: + id: 79 + title: site title + slug: site-title + is_selectable: "0" + is_container: "0" + html: | + <%= @template.site_attribute(:name) %> + css: '' + js: '' +taxon_summary: + id: 80 + title: taxon summary + slug: taxon-summary + is_selectable: "0" + is_container: "0" + html: | + <%== @template.page_attribute(:summary) %> + css: '' + js: '' +taxon_more: + id: 81 + title: taxon more + slug: taxon-more + is_selectable: "0" + is_container: "0" + html: | + <%= @template.page_attribute(:more) %> + css: '' + js: '' +slider_scrolling: + id: 82 + title: slider scrolling + slug: slider-scrolling + resources: '' + is_selectable: "1" + is_container: "0" + html: |- +
                  + +
                  +
                  +
                  +
                  + <%# jssor require with,height in element style. %> +
                  + ~~content~~ +
                  +
                  + css: |- + .<%=@template.section_selector%> > .inner { min-height:1px;min-width:1px; /* hight, width are required*/} + .effect_slider { position:relative; } + .<%=@template.section_selector%> [data-u='slides']{ + <%=@template.css(:slides)%> + cursor: move; left: 0px; top: 0px; + } + +hover_effect_popup_menu_container: + id: 83 + title: hover effect popup menu container + slug: hover-effect-popup-menu-container is_selectable: "0" is_container: "1" html: | - ~~content~~ - + ~~content~~ css: | - /* since ie 6-8 do not support :last_child, have first child hidden initially */ - .<%=@template.current_piece.section_selector%>_inner>:first-child { display:none; <%=@template.css(:position) %>} + /* popup_effect: width,height is required, children are absolute */ + /* override original position,display */ + /* child_1.z-index < child_2.z-index, child_2 is on top of child_1 initially, slideUp on hovering */ + .<%= @template.section_selector %> .child_1{ } + .<%= @template.section_selector %> .child_2{ position:absolute; display:none; } + js: '' + +page_attribute: + id: 84 + title: page attribute + slug: page-attribute + is_selectable: "0" + is_container: "0" + html: | + <%= @template.page_attribute() %> + css: '' + js: '' +next_post_title: + id: 85 + title: next post title + slug: next-post-title + is_selectable: "0" + is_container: "0" + html: | + <%= render "themes/posts/next_post_title" %> + css: '' + js: '' +previous_post_title: + id: 86 + title: previous post title + slug: previous-post-title + is_selectable: "0" + is_container: "0" + html: | + <%= render "themes/posts/previous_post_title" %> + css: '' js: '' +slider_core: + id: 87 + title: slider core + slug: slider-core + is_selectable: "1" + is_container: "1" + html: |- +
                  + +
                  +
                  +
                  +
                  + ~~content~~ + +
                  + +
                  +
                  +
                  + css: |- + .<%=@template.section_selector%> > .inner { min-height:1px;min-width:1px; /* hight, width are required*/} + .effect_slider { position:relative; } + .<%=@template.section_selector%> .slides { + <%=@template.css(:slides)%> + cursor: move; left: 0px; top: 0px; + } + .jssorb107 div, .jssorb107 div:hover, .jssorb107 .av + { + position:absolute; + overflow:hidden; + cursor: pointer; + } + .jssorb107 div { background-position: -5px -5px; } + .jssorb107 div:hover, .jssorb107 .av:hover { background-position: -35px -5px; } + .jssorb107 .av { background-position: -65px -5px; } + .jssorb107 .dn, .jssorb107 .dn:hover { background-position: -95px -5px; } +slider_data_taxons: + id: 88 + title: slider data taxons + slug: slider-data-taxons + is_selectable: "0" + is_container: "0" + html: |- + <%# jssor require with,height in element style. %> +
                  + <% if @template.menu.present? %> + <% @template.menu.children.each{|page| next if page.icon.blank? %> +
                  <%= image_tag page.icon.attachment.url(:original), :u=>'image', :alt=>page.name %>
                  + <% } %> + <% end %> +
                  + css: '' + js: '' +slider_data_product_images: + id: 89 + title: slider data product images + slug: slider-data-product-images + is_selectable: "0" + is_container: "0" + html: |- +
                  + <% (@template.running_data_item.try(:whole_images)).each{|image| %> +
                  <%= @template.product_attribute( :image, image: image ) %>
                  + <% } %> +
                  + css: |- + .<%=@template.section_selector%> img{ width: 100%; } + js: '' +click_effect_sider: + id: 90 + title: click effect sider + slug: click-effect-sider + is_selectable: "0" + is_container: "1" + html: ~~content~~ + css: |- + /* slide_effect: */ + .<%= @template.section_selector %> .child_1{ cursor: pointer; /* safari required */ } + .<%= @template.section_selector %> .child_2{ display: none; } + .sidr { + /* Default Settings */ + display: none; + position: absolute; + position: fixed; + top: 0; + height: 100%; + min-width: 10%; + z-index: 15; + overflow-x: none; + overflow-y: auto; + /* Theme Settings + box-shadow: inset 0 0 5px 5px #ebebeb; + */ + <%= @template.css :sidr %> + } + .sidr .sidr_close{ + cursor: pointer; /* safari required */ + position: absolute; + top: 0; + right: 0; + z-index: 1; + font-size: 0; /* for now we can not set css for each sidr_close, keep it 0 for simple*/ + <%= @template.css :sidr_close %> + } + .sidr_overlay{ + cursor: pointer; /* safari required */ + display: none; + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 14; + background-color:gray; + opacity: 0.3; + <%= @template.css :sidr_overlay %> + } + js: '' + +video: + id: 91 + title: video + slug: video + is_selectable: "0" + is_container: "0" + html: |- + +
                  + + css: |- + .<%=@template.section_selector%> video-player{ <%= @template.css :video %> } + js: '' +container_hmenu_with_vertical_submenu: + id: 92 + title: container hmenu with vertical submenu + slug: container-hmenu-with-vertical-submenu + is_selectable: "0" + is_container: "1" + html: ~~content~~ + css: | + .<%=@template.section_selector%> > .inner { + overflow: visible;/* submenu required*/ + } + /* mainly copy from superfish.css */ + /* 'section_selector ul li' override 'section_selector li'*/ + .<%=@template.section_selector%> ul li { + position: relative; display:inline-block; + } + .<%=@template.section_selector%> ul.depth2 li{ + display: block; + } + .<%=@template.section_selector%> ul.depth2 a{ + display: block; + } + .<%=@template.section_selector%> ul ul { + position: absolute; + display: none; + top: 100%; + left: 0; + z-index: 99; + opacity:0.8 ; + } + /*.<%=@template.section_selector%> ul ul ul{ + top: 0; + left: 100%; + }*/ + js: "" +post_title_with_ellipsis: + id: 93 + title: post title with ellipsis + slug: post-title-with-ellipsis + is_selectable: "0" + is_container: "0" + for_terminal: "0" + html: | + <%= @template.post_attribute( :title ) %> + css: | + .<%=@template.section_selector%> .inner a{ + display:inline; /*it has to be inline for overflow:ellipsis*/ + } + .<%=@template.section_selector%> .inner { + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + } + js: "" diff --git a/spree_theme/db/seeds/spree_section_pieces2.yml b/spree_theme/db/seeds/spree_section_pieces2.yml new file mode 100644 index 00000000..737d8966 --- /dev/null +++ b/spree_theme/db/seeds/spree_section_pieces2.yml @@ -0,0 +1,371 @@ +post_files: + id: 100 + title: post files + slug: post-files + is_selectable: "0" + is_container: "0" + for_terminal: "0" + html: | +
                  + <% if post.files.any? %> +
                    + <% post.files.each do |i| %> +
                  • + <%= @template.post_attribute( :file, file: i ) %> +
                  • + <% end %> +
                  + <% end %> +
                  + css: | + .<%=@template.section_selector%> ul{ + list-style: none; + margin: 0; padding: 0;} + js: "" +container_background: + id: 101 + title: container background + slug: container-background + is_selectable: "0" + is_container: "1" + html: ~~content~~ + css: | + @media screen and (min-width: 1441px) { + /*1440*731 1920x975 */ + .<%=@template.section_selector%> > .inner{ background-size: cover; <%=@template.css(:inner1)%> } + } + js: "" +one_click_trial: + id: 102 + title: one click trial + slug: one-click-trial + is_selectable: "0" + is_container: "1" + usage: unused + html: | + <%= render "themes/sites/one_click_trial" %> + css: | + #launch_site_container { + display:none; + } + .<%=@template.section_selector%> .modal_close_img{ + position:absolute; + font-size: 22px; + } + js: "" +container_dialog: + id: 103 + title: container dialog + slug: container-dialog + is_selectable: "0" + is_container: "1" + usage: "dialog" + html: ~~content~~ + css: | + .<%=@template.section_selector%> { display:none; } + .simplemodal-overlay{ + <%=@template.css(:dialog_overlay)%> + } +slider_data_taxons_transition_fade: + id: 104 + title: slider data taxons transition fade + slug: slider-data-taxons-transition-fade + is_selectable: "0" + is_container: "0" + html: |- + <%# jssor require with,height in element style. %> +
                  + <% if @template.menu.present? %> + <% @template.menu.children.each{|page| next if page.icon.blank? %> +
                  <%= image_tag page.icon.attachment.url(:original), :u=>'image', :alt=>page.name %>
                  + <% } %> + <% end %> +
                  + css: '' + js: '' +product_search: + id: 105 + title: product search + slug: product-search + is_selectable: "0" + is_container: "1" + html: | + <%= render "themes/product_search" %> + css: | + .search_form { + } + js: "" +container_absolute: + id: 106 + title: container absolute + slug: container-absolute + is_selectable: "0" + is_container: "1" + html: | + ~~content~~ + css: | + .<%=@template.section_selector%> {z-index:1; position:absolute; <%=@template.css(:absolute_position) %>} + js: '' +flash_message: + id: 107 + title: flash message + slug: flash-message + is_selectable: 0 + is_container: 0 + html: <%= flash_messages %> + css: | + .<%=@template.section_selector%> .alert { padding: 5px; border: 1px solid transparent; border-radius: 4px;} + .<%=@template.section_selector%> .alert-success,.<%=@template.section_selector%> .alert-notice { + color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6; + } + .<%=@template.section_selector%> .alert-info { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; } + .<%=@template.section_selector%> .alert-warning { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc; } + .<%=@template.section_selector%> ..alert-danger { color: #a94442; background-color: #f2dede; border-color: #ebccd1;} + + js: '' +relation_type_name: + id: 108 + title: relation type name + slug: relation-type-name + is_selectable: "0" + is_container: "0" + html: | + <%= @template.relation_attribute(:name) %> + css: "" + js: "" +related_taxon_name: + id: 109 + title: related taxon name + slug: related-taxon-name + is_selectable: "0" + is_container: "0" + html: "" + css: "" + js: "" + +slider_bullet_navigator: + id: 110 + title: slider bullet navigator + slug: slider-bullet-navigator + is_selectable: "1" + is_container: "1" + html: |- + +
                  + +
                  +
                  + css: |- + .<%=@template.section_selector%> [u='navigator']{ + position: absolute; + bottom:0; + } + .jssorb03 div, .jssorb03 div:hover, .jssorb03 .av + { + background: url('/shops/shared/images/jssor/n21.png') no-repeat; + overflow:hidden; + cursor: pointer; + } + .jssorb03 div { background-position: -5px -5px; } + .jssorb03 div:hover, .jssorb03 .av:hover { background-position: -35px -5px; } + .jssorb03 .av { background-position: -65px -5px; } + .jssorb03 .dn, .jssorb03 .dn:hover { background-position: -95px -5px; } + +slider_arrow_navigator: + id: 111 + title: slider arrow navigator + slug: slider-arrow-navigator + is_selectable: "1" + is_container: "1" + html: |- + + + css: |- + /* jssor slider arrow navigator skin 22 css */ + /* + .jssora22l (normal) + .jssora22r (normal) + .jssora22l:hover (normal mouseover) + .jssora22r:hover (normal mouseover) + .jssora22l.jssora22ldn (mousedown) + .jssora22r.jssora22rdn (mousedown) + */ + .jssora22l, .jssora22r { + display: block; + position: absolute; + /* size of arrow element */ + width: 40px; + height: 58px; + cursor: pointer; + background: url('/shops/shared/images/jssor/a22.png') center center no-repeat; + overflow: hidden; + } + .jssora22l { background-position: -10px -31px; } + .jssora22r { background-position: -70px -31px; } + .jssora22l:hover { background-position: -130px -31px; } + .jssora22r:hover { background-position: -190px -31px; } + .jssora22l.jssora22ldn { background-position: -250px -31px; } + .jssora22r.jssora22rdn { background-position: -310px -31px; } +product_next_attribute: + id: 112 + title: product next attribute + slug: product-next-attribute + is_selectable: "0" + is_container: "0" + html: | + <%= @template.product_attribute( :icon_angle_right, {data: @template.next_product, placeholder: '>'} ) %> + css: "" + js: "" +product_previous_attribute: + id: 113 + title: product previous attribute + slug: product-previous-attribute + is_selectable: "0" + is_container: "0" + html: | + <%= @template.product_attribute( :icon_angle_left, {data: @template.previous_product, placeholder: '<'} ) %> + css: "" + js: "" +taxon_next_attribute: + id: 114 + title: taxon next attribute + slug: taxon-next-attribute + is_selectable: "0" + is_container: "0" + html: | + <%= @template.page_attribute( :icon_angle_right, {data: @template.next_taxon, placeholder: '>'} ) %> + css: "" + js: "" +taxon_previous_attribute: + id: 115 + title: taxon previous attribute + slug: taxon-previous-attribute + is_selectable: "0" + is_container: "0" + html: | + <%= @template.page_attribute( :icon_angle_left, {data: @template.previous_taxon, placeholder: '<'} ) %> + css: "" + js: "" +full_screen: + id: 116 + title: full screen + slug: full-screen + is_selectable: "0" + is_container: "1" + html: | + ~~content~~ + css: | + .<%=@template.section_selector%> { z-index:1; position:fixed; top:0;left:0;right:0;bottom:0;} + .<%=@template.section_selector%> >.inner { width:100%; height:100%; } + +product_attribute: + id: 117 + title: product attribute + slug: product-attribute + is_selectable: "0" + is_container: "0" + html: | + <%= @template.product_attribute() %> + css: '' + js: '' +hover_effect_fadein_container: + id: 118 + title: hover effect fadein container + slug: hover-effect-fadein-container + is_selectable: "0" + is_container: "1" + html: | + ~~content~~ + css: | + /*http://www.gtn9.com/user_show.aspx?action=yc&id=C80E6E334F84E131&page=1*/ + .<%=@template.section_selector%> > .inner{ position: relative; } + .<%= @template.section_selector %> >.inner div:nth-child(1){ } + .<%= @template.section_selector %> >.inner div:nth-child(2){ position:absolute; top:0;left:0; } + .<%= @template.section_selector %> >.inner:hover div:nth-child(2) { + color:#fff; + transform: scale3d(1,1,1); + background-color: rgba(0,0,0,0.8); + } + .<%= @template.section_selector %> >.inner div:nth-child(2) { + opacity: 0; + transition: opacity 0.35s, transform 0.35s; + transform: scale(1.5); + } + .<%= @template.section_selector %> >.inner:hover div:nth-child(2) { + opacity: 1; + transform: scale3d(1,1,1); + } + + js: '' +swipper_core: + id: 119 + title: swipper core + slug: swipper-core + is_selectable: "1" + is_container: "1" + html: |- +
                  + ~~content~~ + +
                  + +
                  + + css: |- + .<%=@template.section_selector%> > .inner { min-height:1px;min-width:1px; /* hight, width are required*/} + .<%=@template.section_selector%> .swiper-container { + <%=@template.css(:slides)%> + cursor: move; + } + .<%=@template.section_selector%> .swiper-pagination-bullet { + border-radius: 0; + width: 5%; + height: 4px; + } + .<%=@template.section_selector%> .swiper-pagination-bullet-active { + background: #e20012; + } +swipper_data_taxons: + id: 120 + title: swipper data taxons + slug: swipper-data-taxons + is_selectable: "0" + is_container: "0" + html: |- +
                  + <% @template.menu.children.each{|page| next if page.icon.blank? %> +
                  <%= image_tag page.icon.attachment.url(:original), :alt=>page.name %>
                  + <% } if @template.menu.present?%> +
                  + css: |- + .<%=@template.section_selector%> .swiper-slide img { + width: 100%; + } + js: '' +swipper_data_taxons_as_background: + id: 121 + title: swipper data taxons as background + slug: swipper-data-taxons-as-background + is_selectable: "0" + is_container: "0" + html: |- +
                  + <% @template.menu.children.each{|page| next if page.icon.blank? %> +
                  + <% } if @template.menu.present?%> +
                  + css: |- + .<%=@template.section_selector%> .swiper-slide { + background-position: center; background-size: cover; + } + js: '' +post_attribute: + id: 122 + title: post attribute + slug: post-attribute + is_selectable: "0" + is_container: "0" + html: | + <%= @template.post_attribute() %> + css: '' + js: '' diff --git a/spree_theme/db/seeds/spree_section_pieces_for_mobile.yml b/spree_theme/db/seeds/spree_section_pieces_for_mobile.yml new file mode 100644 index 00000000..06fee6dd --- /dev/null +++ b/spree_theme/db/seeds/spree_section_pieces_for_mobile.yml @@ -0,0 +1,296 @@ +# mobile section pieces +root_for_mobile: + id: 200 + title: root for mobile + slug: root-for-mobile + is_selectable: "1" + is_container: "1" + is_root: true + for_terminal: "1" + html: | + + + + <%= @current_page.title%> + + + + <%== meta_data_tags %> + <%= favicon_link_tag 'favicon.ico' %> + <%# it is in main app/assets/ include spree_theme, spree_china_checkout, store/product, store/cart, store/checkout ... %> + <%= render 'spree/shared/paths' %> + <%= stylesheet_link_tag 'store/spree_theme.mobile', "data-turbolinks-track" => true %> + <% if @current_page.is_preview %> + <%= stylesheet_link_tag 'store/spree_theme' %> + <% else%> + + <% end %> + <%= csrf_meta_tags %> + <%= render "spree/shared/sync_analytics" %> + <%= javascript_tag do -%> + g_client_info = <%== @client_info.to_json %> + <% end -%> + <%= render "spree/shared/weixin_share" %> + <%= javascript_include_tag 'spree/frontend/all.mobile', "data-turbolinks-track" => true %> + + + + <% if @current_page.site_design? && !@current_page.is_preview %> + <%= render "spree/shared/theme_selection_for_nondesigner" %> + <% end %> +
                  + ~~content~~ +
                  +
                  + + <% if @current_page.is_preview %> + <%= render 'layout_editor_panel' %> + <% end %> + <%= render "spree/shared/analytics" %> + + + css: |- + #page /* sidr displace feature required */ + { position:relative; } + #page-inner + { position:relative; + <%= @template.css :inner %> + } + .infinitescroll .pagination{ display:none;} + #infscr-loading{ background-color:white; clear:both; text-align:center; border-radius:4px;} + .clear-block:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; + font-size: 0; + } + .clear-block { + display: block; + } + + js: "" +bootstrap_container: + id: 201 + title: bootstrap container + slug: bootstrap-container + is_selectable: "1" + is_container: "1" + for_terminal: "1" + html: | +
                  +
                  ~~content~~
                  +
                  + css: | + /* width,height, skinnables */ + .<%=@template.section_selector%> + { + <%=@template.css(:block)%> + } + /* background, margin, border, padding */ + .<%=@template.section_selector%> > .inner + { overflow: hidden;/* keep border visible*/ + min-height:1px;min-width:1px; /* it is required as placeholder */ + <%=@template.css(:inner)%> + } + <% if @template.current_piece.column_count >0 %> + /* css for last column in row, feature center content */ + .<%=@template.current_piece.child_selector%>.data_last { margin-right:0; padding-right:0; border-right:0; } + <% end %> + + js: "" +bootstrap_column: + id: 202 + title: bootstrap column + slug: bootstrap-column + is_selectable: "1" + is_container: "1" + for_terminal: "1" + html: | +
                  ~~content~~
                  + css: | + .<%=@template.section_selector%> + { padding:0; margin:0 auto; + <%=@template.css(:block)%> + } + js: "" +bootstrap_glyphicon: + id: 203 + title: bootstrap glyphicon + slug: bootstrap-glyphicon + is_selectable: "1" + is_container: "0" + for_terminal: "1" + html: | + + css: '' + js: "" +font_awesome: + id: 204 + title: font awesome + slug: font-awesome + is_selectable: "1" + is_container: "0" + for_terminal: "1" + html: | + <%=@template.font_awesome %> + css: | + .<%=@template.section_selector%> fa{ + <%= @template.css(:fa) %> + } + js: "" +#http://www.tuicool.com/articles/3QnyAf , width is required, one line only. +product_name_with_ellipsis: + id: 205 + title: Product name with ellipsis + slug: product-name-with-ellipsis + is_selectable: "0" + is_container: "0" + for_terminal: "1" + html: | + <%= @template.product_attribute( :name ) %> + css: | + .<%=@template.section_selector%> a{ + <%= @template.css :a %> + } + .<%=@template.section_selector%> a:hover{ + <%= @template.css :a_h %> + } + .<%=@template.section_selector%> > .inner { + text-overflow:ellipsis; + } + .<%=@template.section_selector%> span { + white-space:nowrap; + } + js: "" +minicart_badge: + id: 206 + title: minicart badge + slug: minicart-badge + is_selectable: "0" + is_container: "0" + for_terminal: "1" + html: | + <%= link_to_cart_badge %> + css: "" + js: "" +option_values_for_mobile: + id: 207 + title: option values for mobile + slug: option-values-for-mobile + is_selectable: "1" + is_container: "0" + for_terminal: "1" + html: | + <% if defined? product %> + <%= render :partial => 'themes/product_options_for_mobile', :locals=>{:product=>product} %> + <% end%> + css: | + .<%=@template.section_selector%> .variant-option{ + display:none; + } + .<%=@template.section_selector%> ul.option_values { + list-style-type: none; + margin:0; + padding:0; + } + .<%=@template.section_selector%> .option_values li { + display: block; + position: relative; + float: left; + } + .option-value.selected, + .option-value.in-stock:hover { + background-color: #1491EB; + border-color: #1072B9; + color: #ffffff; + } + .<%=@template.section_selector%> .option_type{ <%=@template.css(:option_type)%> } + .<%=@template.section_selector%> .large_image{ <%=@template.css(:large_image)%> } + .<%=@template.section_selector%> .thumb_image{ <%=@template.css(:thumb_image)%> } + js: "" +bootstrap_carousel: + id: 208 + title: bootstrap carousel + slug: bootstrap-carousel + is_selectable: "1" + is_container: "0" + for_terminal: "1" + html: |- + <%# http://v3.bootcss.com/javascript/#carousel %> + + css: '' +cart_items_for_mobile: + id: 209 + title: cart items for mobile + slug: cart-items-for-mobile + is_selectable: "1" + is_container: "0" + for_terminal: "1" + html: | + <%= render :partial => 'spree/orders/form_bootstrap', :locals => { :order_form => order_form } %> + created_at: 2011-09-20 19:40:07 + updated_at: 2011-09-20 19:40:07 + css: |- + .<%=@template.section_selector%> .cart-item-image img {width:60px;} + js: "" +bootstrap_sign_up_form: + id: 210 + title: bootstrap sign up form + slug: bootstrap-sign-up-form + is_selectable: "1" + is_container: "0" + for_terminal: "1" + html: | + <%= render :partial => 'spree/user_registrations/new_bootstrap' %> + css: "" + js: "" + +bootstrap_dialog_titlebar: + id: 212 + title: bootstrap dialog titlebar + slug: bootstrap-dialog-titlebar + is_selectable: "0" + is_container: "0" + html: | +
                  +
                  <%= Spree.t(:dialog_title) %>
                  + +
                  + css: | + .<%=@template.section_selector%> .dialog_titlebar{ <%=@template.css(:dialog_titlebar) %> } + .<%=@template.section_selector%> .dialog_title{ float:left; font-size:0;} + .<%=@template.section_selector%> .dialog_close_wrapper{ float:left; } + .<%=@template.section_selector%> .dialog_close_wrapper a.dialog_close{ + border:0; padding:0; margin:0; background: transparent none; text-decoration: none;/*reset it, prevent root's default */ + cursor:pointer; + <%=@template.css(:dialog_close) %> + } + js: "" diff --git a/spree_theme/db/themes/10_taxonomies.rb b/spree_theme/db/themes/10_taxonomies.rb deleted file mode 100644 index 6fef70fe..00000000 --- a/spree_theme/db/themes/10_taxonomies.rb +++ /dev/null @@ -1,45 +0,0 @@ -#encoding: utf-8 -taxonomies = [ -# { :name => "MainMenu" }, -# { :name => "Unlogged" }, -# { :name => "Logged" } -] - -taxonomies.each do |taxonomy_attrs| - Spree::Taxonomy.create!(taxonomy_attrs) -end - -#main_menu = Spree::Taxonomy.find_by_name!("MainMenu") -#unlogged = Spree::Taxonomy.find_by_name!("Unlogged") -#logged = Spree::Taxonomy.find_by_name!("Logged") - -taxons = [ -# { -# :name => "首页", -# :taxonomy => main_menu, -# :parent => "MainMenu", -# :page_context => 1, -# :position => 1 -# }, -# { -# :name => "Login", -# :taxonomy => unlogged, -# :parent => "Unlogged", -# :page_context => 6, -# :position => 1 -# }, -# { -# :name => "My account", -# :taxonomy => logged, -# :parent => "Logged", -# :page_context => 7, -# :position => 1 -# }, -] - -taxons.each do |taxon_attrs| - if taxon_attrs[:parent] - taxon_attrs[:parent] = Spree::Taxon.find_by_name!(taxon_attrs[:parent]) - Spree::Taxon.create!(taxon_attrs, :without_protection => true) - end -end diff --git a/spree_theme/db/themes/11_templates.rb b/spree_theme/db/themes/11_templates.rb index 71e525ee..22b65a31 100644 --- a/spree_theme/db/themes/11_templates.rb +++ b/spree_theme/db/themes/11_templates.rb @@ -1,25 +1,26 @@ -=begin -objs=[ - { "is_enabled"=>true, "section_id"=>1, "id"=>1, "root_id"=>1, "parent_id"=>0, "lft"=>1, "rgt"=>10, "section_instance"=>0, "slug"=>"layout1"}, - { "is_enabled"=>true, "section_id"=>2, "id"=>2, "root_id"=>1, "parent_id"=>1, "lft"=>2, "rgt"=>9, "section_instance"=>0, "slug"=>"bd"}, - { "is_enabled"=>true, "section_id"=>2, "id"=>3, "root_id"=>1, "parent_id"=>2, "lft"=>3, "rgt"=>4, "section_instance"=>2, "slug"=>"header"}, - { "is_enabled"=>true, "section_id"=>2, "id"=>4, "root_id"=>1, "parent_id"=>2, "lft"=>5, "rgt"=>8, "section_instance"=>3, "slug"=>"content"}, - { "is_enabled"=>true, "section_id"=>3, "id"=>5, "root_id"=>1, "parent_id"=>4, "lft"=>6, "rgt"=>7, "section_instance"=>0, "slug"=>"menu"}] - - PageLayout.delete_all - for ha in objs - obj = PageLayout.new - obj.send(:attributes=, ha, false) - obj.save - end -=end +#objs=[ +# { "is_enabled"=>true, "section_id"=>1, "id"=>1, "root_id"=>1, "parent_id"=>0, "lft"=>1, "rgt"=>10, "section_instance"=>0, "slug"=>"layout1"}, +# { "is_enabled"=>true, "section_id"=>2, "id"=>2, "root_id"=>1, "parent_id"=>1, "lft"=>2, "rgt"=>9, "section_instance"=>0, "slug"=>"bd"}, +# { "is_enabled"=>true, "section_id"=>2, "id"=>3, "root_id"=>1, "parent_id"=>2, "lft"=>3, "rgt"=>4, "section_instance"=>2, "slug"=>"header"}, +# { "is_enabled"=>true, "section_id"=>2, "id"=>4, "root_id"=>1, "parent_id"=>2, "lft"=>5, "rgt"=>8, "section_instance"=>3, "slug"=>"content"}, +# { "is_enabled"=>true, "section_id"=>3, "id"=>5, "root_id"=>1, "parent_id"=>4, "lft"=>6, "rgt"=>7, "section_instance"=>0, "slug"=>"menu"}] +# +# PageLayout.delete_all +# for ha in objs +# obj = PageLayout.new +# obj.send(:attributes=, ha, false) +# obj.save +# end +bool_false = Spree::HtmlAttribute::BOOL_FALSE +bool_true = Spree::HtmlAttribute::BOOL_TRUE # section slugs= [root,container,menu] objects = Spree::Section.roots section_hash= objects.inject({}){|h,sp| h[sp.slug] = sp; h} # puts "section_hash=#{section_hash.keys}" template = Spree::TemplateTheme.create_plain_template(section_hash['root2'], "Template One") -document = template.page_layout + +document = template.page_layout_root header = template.add_section(section_hash['container'],document, :title=>"Header") template.add_section(section_hash['image'], header,:title=>"Logo") main_menu = template.add_section(section_hash['hmenu'], header,:title=>"Main menu") @@ -34,10 +35,10 @@ template.add_section(section_hash['vmenu'], lftnav, :title=>"Categories") product_list = template.add_section(section_hash['container'], main_content, :title=>"product list") -product_detail = template.add_section(section_hash['container'], main_content, :title=>"product detail") +product_detail = template.add_section(section_hash['container'], main_content, { title: "product detail"}) product = template.add_section(section_hash['container'], product_list, :title=>"product") -template.add_section(section_hash['product-name'], product, :title=>"product name") -template.add_section(section_hash['product-image'], product, :title=>"product image") +template.add_section(section_hash['product-name'], product, { title: "product name", content_param: 1 }) +template.add_section(section_hash['product-image'], product, { title: "product name", content_param: 1 }) template.add_section(section_hash['product-price'], product, :title=>"product price") detail_left = template.add_section(section_hash['container'], product_detail, :title=>"left part") @@ -45,22 +46,23 @@ template.add_section(section_hash['product-image-with-thumbnails'], detail_left, :title=>"image with thumbnails") template.add_section(section_hash['product-properties'], detail_left, :title=>"product_properties") - + template.add_section(section_hash['product-name'], detail_right, :title=>"product name") template.add_section(section_hash['product-description'], detail_right, :title=>"product description") template.add_section(section_hash['product-price'], detail_right, :title=>"product price") qty_atc_container = template.add_section(section_hash['container'], detail_right, :title=>"container") +template.add_section(section_hash['product-option-values'], qty_atc_container, :title=>"product options") template.add_section(section_hash['product-quantity'], qty_atc_container, :title=>"product quantity") template.add_section(section_hash['product-atc'], qty_atc_container, :title=>"product atc") others = template.add_section(section_hash['container'], main_content, :title=>"Others") template.add_section(section_hash['taxon-name'], others, :title=>"Taxon name") -cart = template.add_section(section_hash['cart'], others, :title=>"Cart") +cart = template.add_section(section_hash['cart-form'], others, :title=>"Cart") template.add_section(section_hash['cart-items'], cart, :title=>"Cart items") template.add_section(section_hash['order-total-price'], cart, :title=>"Order total price") -checkout = template.add_section(section_hash['checkout'], others, :title=>"Checkout") +checkout = template.add_section(section_hash['checkout-form'], others, :title=>"Checkout") template.add_section(section_hash['ship-form'], checkout, :title=>"Ship form") template.add_section(section_hash['payment-form'], checkout, :title=>"Payment form") @@ -76,11 +78,13 @@ template.add_section(section_hash['order-list'], account, :title=>"Order history") login = template.add_section(section_hash['container'], others, :title=>"Login") - template.add_section(section_hash['login-form'], login, :title=>"Login form") - + template.add_section(section_hash['sign-in-form'], login, :title=>"Login form") + signup = template.add_section(section_hash['container'], others, :title=>"Signup") template.add_section(section_hash['sign-up-form'], signup, :title=>"Sign up form") + +# set context others.reload others.update_section_context( [Spree::PageLayout::ContextEnum.cart,Spree::PageLayout::ContextEnum.checkout, Spree::PageLayout::ContextEnum.thanks, Spree::PageLayout::ContextEnum.login, Spree::PageLayout::ContextEnum.signup, Spree::PageLayout::ContextEnum.account] ) cart.reload @@ -99,11 +103,13 @@ product_list.reload #reload left, right product_detail.reload #reload left, right product_list.update_section_context( Spree::PageLayout::ContextEnum.list ) -product_list.update_data_source( Spree::PageLayout::ContextDataSourceMap[Spree::PageLayout::ContextEnum.list].first ) +product_list.update_data_source( Spree::PageLayout::DataSourceEnum.gpvs ) product_detail.update_section_context( Spree::PageLayout::ContextEnum.detail ) -product_detail.update_data_source( Spree::PageLayout::ContextDataSourceMap[Spree::PageLayout::ContextEnum.detail].first ) +product_detail.update_data_source( Spree::PageLayout::DataSourceEnum.this_product ) +#form enable +product_detail.update_attribute( :content_param, 512 ) template.add_section(section_hash['hmenu'], footer, :title=>"footer menu") diff --git a/spree_theme/db/themes/14_template_images.rb b/spree_theme/db/themes/14_template_images.rb index d60083c3..4c9ac0ca 100644 --- a/spree_theme/db/themes/14_template_images.rb +++ b/spree_theme/db/themes/14_template_images.rb @@ -1,10 +1,10 @@ base_path = File.expand_path(File.join( File.dirname(__FILE__), 'template_images')) -logo_file_path = File.join(base_path, 'logo.gif') +logo_file_path = File.join(base_path, 'logo.png') -File.open(logo_file_path) do|f| +File.open(logo_file_path) do|f| image = Spree::TemplateFile.new image.template_theme = Spree::TemplateTheme.find_by_title('Template One') - image.attachment =f + image.attachment =f image.save! end diff --git a/spree_theme/db/themes/15_configure_template.rb b/spree_theme/db/themes/15_configure_template.rb index 12e4dba0..7547f998 100644 --- a/spree_theme/db/themes/15_configure_template.rb +++ b/spree_theme/db/themes/15_configure_template.rb @@ -1,26 +1,11 @@ ################################# template resource ##################################### template = Spree::TemplateTheme.first -taxon_class = SpreeTheme.taxon_class - -categories = taxon_class.find_by_name("Categories") -brands = taxon_class.find_by_name("Brand") -main_menu = taxon_class.find_by_name("MainMenu") - -#main_menu_section = template.page_layout.self_and_descendants.where(:title=>title).first - -#template.assign_resource(main_menu, main_menu_section) -main_menu_section = template.page_layout.self_and_descendants.where(:title=>'Main menu').first -#template.assign_resource(main_menu, main_menu_section) - -category_section = template.page_layout.self_and_descendants.where(:title=>'Categories').first -template.assign_resource(categories, category_section) - - +main_menu_section = template.page_layouts.where(:title=>'Main menu').first template_files = template.template_files title="Logo" -logo_section = template.page_layout.self_and_descendants.where(:title=>title).first +logo_section = template.page_layouts.where(:title=>title).first logo_file = template_files.select{|file| file.attachment_file_name=~/logo/ }.first template.assign_resource(logo_file, logo_section) @@ -40,19 +25,25 @@ when 'content' partial_html['block_height']['unset'] = true partial_html['block_height'].update + partial_html['content_layout_clear']['unset'] = false partial_html['content_layout_clear']['psvalue'] = 'none' partial_html['content_layout_clear'].update - + when 'main content' partial_html['block_height']['unset'] = true partial_html['block_height'].update partial_html['block_width']['pvalue'] = 600 + partial_html['block_width']['unit'] = 'px' partial_html['block_width'].update - + when 'Others','Login','Account','Signup', 'product list', 'product detail', 'product', 'left part', 'right part' + partial_html['block_height']['unset'] = true + partial_html['block_height'].update + when 'lftnav' partial_html['block_height']['unset'] = true partial_html['block_height'].update partial_html['block_width']['pvalue'] = 200 + partial_html['block_width']['unit'] = 'px' partial_html['block_width'].update partial_html['inner_background-color']['pvalue'] = '#FFF8ED' partial_html['inner_background-color'].update @@ -60,4 +51,4 @@ partial_html['inner_background-color']['pvalue'] = '#F5F5F5' partial_html['inner_background-color'].update end -end \ No newline at end of file +end diff --git a/spree_theme/db/themes/16_template_release.rb b/spree_theme/db/themes/16_template_release.rb index 78924daf..cef5fbc8 100644 --- a/spree_theme/db/themes/16_template_release.rb +++ b/spree_theme/db/themes/16_template_release.rb @@ -2,4 +2,4 @@ @theme = Spree::TemplateTheme.first @theme.release -SpreeTheme.site_class.current.apply_theme @theme +Spree::Store.current.apply_theme @theme diff --git a/spree_theme/db/themes/designs/1_2_1406938122.yml b/spree_theme/db/themes/designs/1_2_1406938122.yml deleted file mode 100644 index a4f9d32a..00000000 --- a/spree_theme/db/themes/designs/1_2_1406938122.yml +++ /dev/null @@ -1 +0,0 @@ -{"template":{"assigned_resource_ids":{"69":{"spree/taxon":[23]},"78":{"spree/template_text":[1]},"79":{"spree/template_text":[0]},"80":{"spree/template_text":[0]},"82":{"spree/template_text":[4]}},"created_at":"2014-03-09T01:13:21.000Z","id":2,"page_layout_root_id":64,"release_id":6,"site_id":1,"slug":"","title":"Dalianshops","updated_at":"2014-07-31T14:19:41.000Z"},"param_values":[{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":811,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{"21":"width:800px","21unset":"1","20":"min-width:800px","20hidden":"1"},"section_param_id":1,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":812,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{},"section_param_id":2,"theme_id":2,"unset":null,"updated_at":"2014-03-09T01:13:22.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":813,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{"85":"clear:both"},"section_param_id":3,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":814,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#EFEFEF"},"section_param_id":4,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":815,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{},"section_param_id":5,"theme_id":2,"unset":null,"updated_at":"2014-03-09T01:13:22.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":816,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:03.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":817,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":818,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto auto"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":819,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"2unset":"1","2":"background-color:#EFEFEF"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":820,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"53unset":"0","53":"text-align:center"},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":821,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:08.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":822,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":823,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":824,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:black"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":825,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:08.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":826,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:12.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":827,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:800px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":828,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto auto","7unset":"0","7":"border-style:solid none none none","8unset":"0","8":"border-width:1px 0px 0px 0px","6unset":"0","6":"border-color:#CCCCCC transparent transparent transparent"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":829,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:12.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":830,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:12.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":831,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:05.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":832,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:320px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":833,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 260px","15unset":"1","15":"height:100px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:20.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":834,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:05.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":835,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{"53unset":"1","53":"text-align:center"},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":836,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":11,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":837,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"21unset":"1","21":"width:600px"},"section_param_id":12,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":838,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 250px","32unset":"0","32":"padding:5px 0px 5px 0px"},"section_param_id":13,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":839,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":14,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":840,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"53unset":"1","53":"text-align:center"},"section_param_id":15,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":841,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px"},"section_param_id":16,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":842,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"54unset":"0","54":"text-decoration:none","49unset":"0","49":"color:black","27unset":"0","27":"font-weight:bolder","24unset":"0","24":"font-size:90%"},"section_param_id":17,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":843,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:#4183C4"},"section_param_id":18,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":844,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":19,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":845,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":20,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":846,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":21,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":847,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":22,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":848,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":23,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":849,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":24,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":850,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":25,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":851,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":26,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":852,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":853,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:200px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":854,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 300px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":855,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":856,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":857,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":323,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":858,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":324,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":859,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":325,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":860,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":326,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":861,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":327,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T03:11:13.000Z","id":862,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":863,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:800px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":864,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:20px 0px 20px 0px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":865,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"2unset":"1","2":"background-color:white"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":866,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:11:14.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":867,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:13:28.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":868,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:800px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":869,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":870,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:13:28.000Z"},{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":871,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:13:28.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":872,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":367,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":873,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:290px","101unset":"0","101":"float:right"},"section_param_id":368,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":874,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:100px auto auto auto"},"section_param_id":369,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":875,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"3unset":"1","3":"background-image:"},"section_param_id":370,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":876,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":371,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":877,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":372,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":878,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":373,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":879,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":374,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":880,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:260px","31unset":"0","31":"margin:auto auto 5px auto","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC","32unset":"0","32":"padding:5px 10px 5px 10px"},"section_param_id":375,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":881,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":376,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":882,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":377,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":883,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":378,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":884,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":379,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":885,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:red"},"section_param_id":380,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":886,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":381,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":887,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:280px","32unset":"0","32":"padding:5px 10px 5px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:transparent transparent transparent transparent"},"section_param_id":382,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":888,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#73CF54"},"section_param_id":383,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":889,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:white","27unset":"0","27":"font-weight:bolder"},"section_param_id":384,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":890,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":385,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":891,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#62B246"},"section_param_id":386,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":892,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":387,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"},{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":893,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{},"section_param_id":50,"theme_id":2,"unset":null,"updated_at":"2014-03-15T08:35:58.000Z"},{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":894,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:400px","15unset":"1","15":"height:220px","101unset":"1","101":"float:left"},"section_param_id":51,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":895,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{"15hidden":"1","15unset":"1","15":"height:220px"},"section_param_id":52,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":896,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{},"section_param_id":53,"theme_id":2,"unset":null,"updated_at":"2014-03-15T08:35:58.000Z"},{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":897,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":54,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":898,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":50,"theme_id":2,"unset":null,"updated_at":"2014-03-17T12:57:54.000Z"},{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":899,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":51,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":900,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":901,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":53,"theme_id":2,"unset":null,"updated_at":"2014-03-17T12:57:54.000Z"},{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":902,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":54,"theme_id":2,"unset":null,"updated_at":"2014-03-17T12:57:54.000Z"},{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":903,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":362,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:23:00.000Z"},{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":904,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:800px","101unset":"0","101":"float:none"},"section_param_id":363,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":905,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":364,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":906,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":365,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:23:00.000Z"},{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":907,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":366,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:23:00.000Z"},{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":908,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":50,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:48:55.000Z"},{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":909,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":51,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:48:55.000Z"},{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":910,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":2,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":911,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":53,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:48:55.000Z"},{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":912,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":54,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:48:55.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4130,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":420,"theme_id":2,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4147,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":423,"theme_id":2,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4164,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":426,"theme_id":2,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4181,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":429,"theme_id":2,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4198,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":432,"theme_id":2,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4215,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":435,"theme_id":2,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4232,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":438,"theme_id":2,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4249,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":441,"theme_id":2,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4266,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":444,"theme_id":2,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}],"page_layouts":[{"copy_from_root_id":0,"created_at":"2014-03-09T01:13:22.000Z","data_filter":"","data_source":"","id":64,"is_enabled":true,"is_full_html":true,"lft":1,"parent_id":null,"rgt":30,"root_id":64,"section_context":"","section_id":1,"section_instance":1,"site_id":1,"slug":"pageroot","title":"PageRoot","updated_at":"2014-07-12T06:22:33.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-09T02:07:03.000Z","data_filter":"","data_source":"","id":65,"is_enabled":true,"is_full_html":false,"lft":2,"parent_id":64,"rgt":11,"root_id":64,"section_context":"","section_id":2,"section_instance":1,"site_id":1,"slug":"header--4","title":"header","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-09T02:08:39.000Z","data_filter":"","data_source":"","id":70,"is_enabled":true,"is_full_html":false,"lft":3,"parent_id":65,"rgt":6,"root_id":64,"section_context":"","section_id":2,"section_instance":5,"site_id":1,"slug":"container--2","title":"container","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-09T02:09:00.000Z","data_filter":"","data_source":"","id":71,"is_enabled":true,"is_full_html":false,"lft":4,"parent_id":70,"rgt":5,"root_id":64,"section_context":"","section_id":97,"section_instance":1,"site_id":1,"slug":"logo--4","title":"Logo","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-09T02:08:05.000Z","data_filter":"","data_source":"","id":68,"is_enabled":true,"is_full_html":false,"lft":7,"parent_id":65,"rgt":10,"root_id":64,"section_context":"","section_id":2,"section_instance":4,"site_id":1,"slug":"container","title":"container","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-09T02:08:32.000Z","data_filter":"","data_source":"","id":69,"is_enabled":true,"is_full_html":false,"lft":8,"parent_id":68,"rgt":9,"root_id":64,"section_context":"","section_id":3,"section_instance":1,"site_id":1,"slug":"hmenu","title":"hmenu","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-09T02:07:08.000Z","data_filter":"","data_source":"","id":66,"is_enabled":true,"is_full_html":false,"lft":12,"parent_id":64,"rgt":19,"root_id":64,"section_context":"home","section_id":2,"section_instance":2,"site_id":1,"slug":"slogan","title":"slogan","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-09T03:11:13.000Z","data_filter":"","data_source":"","id":72,"is_enabled":true,"is_full_html":false,"lft":13,"parent_id":66,"rgt":18,"root_id":64,"section_context":"","section_id":2,"section_instance":6,"site_id":1,"slug":"container--3","title":"container","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-15T08:35:58.000Z","data_filter":"","data_source":"","id":78,"is_enabled":true,"is_full_html":false,"lft":14,"parent_id":72,"rgt":15,"root_id":64,"section_context":"","section_id":11,"section_instance":1,"site_id":1,"slug":"text","title":"text","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-10T12:22:42.000Z","data_filter":"","data_source":"","id":77,"is_enabled":true,"is_full_html":false,"lft":16,"parent_id":72,"rgt":17,"root_id":64,"section_context":"","section_id":111,"section_instance":1,"site_id":1,"slug":"site-form","title":"Site form","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-18T13:23:00.000Z","data_filter":"","data_source":"","id":81,"is_enabled":true,"is_full_html":false,"lft":20,"parent_id":64,"rgt":21,"root_id":64,"section_context":"","section_id":109,"section_instance":1,"site_id":1,"slug":"taxon-description","title":"Taxon description","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-09T03:13:27.000Z","data_filter":"","data_source":"","id":73,"is_enabled":true,"is_full_html":false,"lft":22,"parent_id":64,"rgt":25,"root_id":64,"section_context":"","section_id":2,"section_instance":7,"site_id":1,"slug":"container--4","title":"container","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-17T12:57:54.000Z","data_filter":"","data_source":"","id":79,"is_enabled":true,"is_full_html":false,"lft":23,"parent_id":73,"rgt":24,"root_id":64,"section_context":"","section_id":11,"section_instance":2,"site_id":1,"slug":"text--2","title":"text","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-09T02:07:12.000Z","data_filter":"","data_source":"","id":67,"is_enabled":true,"is_full_html":false,"lft":26,"parent_id":64,"rgt":29,"root_id":64,"section_context":"","section_id":2,"section_instance":3,"site_id":1,"slug":"footer--4","title":"footer","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":0,"created_at":"2014-03-18T13:48:55.000Z","data_filter":"","data_source":"","id":82,"is_enabled":true,"is_full_html":false,"lft":27,"parent_id":67,"rgt":28,"root_id":64,"section_context":"","section_id":11,"section_instance":3,"site_id":1,"slug":"text--3","title":"text","updated_at":"2014-07-12T06:27:35.000Z"}],"template_files":[],"template_releases":[{"created_at":"2014-06-21T13:37:49.000Z","id":6,"name":"just a test","theme_id":2,"updated_at":"2014-06-21T13:37:49.000Z"}]} \ No newline at end of file diff --git a/spree_theme/db/themes/designs/1_2_1408541489.yml b/spree_theme/db/themes/designs/1_2_1408541489.yml deleted file mode 100644 index 66fdf132..00000000 --- a/spree_theme/db/themes/designs/1_2_1408541489.yml +++ /dev/null @@ -1,1854 +0,0 @@ ---- -template: !ruby/object:Spree::TemplateTheme - attributes: - id: 2 - site_id: 1 - page_layout_root_id: 64 - release_id: 6 - title: Dalianshops - slug: '' - assigned_resource_ids: - '69': - :spree/taxon: - - 23 - '78': - :spree/template_text: - - 1 - '79': - :spree/template_text: - - 0 - '80': - :spree/template_text: - - 0 - '82': - :spree/template_text: - - 4 - created_at: 2014-03-09 01:13:21.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -param_values: -- !ruby/object:Spree::ParamValue - attributes: - id: 811 - page_layout_root_id: 64 - page_layout_id: 64 - section_param_id: 1 - theme_id: 2 - pvalue: - '21': width:800px - 21unset: '1' - '20': min-width:800px - 20hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-09 01:13:22.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 812 - page_layout_root_id: 64 - page_layout_id: 64 - section_param_id: 2 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 01:13:22.000000000 Z - updated_at: 2014-03-09 01:13:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 813 - page_layout_root_id: 64 - page_layout_id: 64 - section_param_id: 3 - theme_id: 2 - pvalue: - '85': clear:both - unset: - computed_pvalue: - created_at: 2014-03-09 01:13:22.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 814 - page_layout_root_id: 64 - page_layout_id: 64 - section_param_id: 4 - theme_id: 2 - pvalue: - 2unset: '0' - '2': background-color:#EFEFEF - unset: - computed_pvalue: - created_at: 2014-03-09 01:13:22.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 815 - page_layout_root_id: 64 - page_layout_id: 64 - section_param_id: 5 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 01:13:22.000000000 Z - updated_at: 2014-03-09 01:13:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 816 - page_layout_root_id: 64 - page_layout_id: 65 - section_param_id: 6 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:03.000000000 Z - updated_at: 2014-03-09 02:07:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 817 - page_layout_root_id: 64 - page_layout_id: 65 - section_param_id: 7 - theme_id: 2 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:03.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 818 - page_layout_root_id: 64 - page_layout_id: 65 - section_param_id: 8 - theme_id: 2 - pvalue: - 15hidden: '1' - 31unset: '1' - '31': margin:auto auto auto auto - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:03.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 819 - page_layout_root_id: 64 - page_layout_id: 65 - section_param_id: 9 - theme_id: 2 - pvalue: - 2unset: '1' - '2': background-color:#EFEFEF - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:03.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 820 - page_layout_root_id: 64 - page_layout_id: 65 - section_param_id: 10 - theme_id: 2 - pvalue: - 53unset: '0' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:03.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 821 - page_layout_root_id: 64 - page_layout_id: 66 - section_param_id: 6 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:08.000000000 Z - updated_at: 2014-03-09 02:07:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 822 - page_layout_root_id: 64 - page_layout_id: 66 - section_param_id: 7 - theme_id: 2 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:08.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 823 - page_layout_root_id: 64 - page_layout_id: 66 - section_param_id: 8 - theme_id: 2 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:08.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 824 - page_layout_root_id: 64 - page_layout_id: 66 - section_param_id: 9 - theme_id: 2 - pvalue: - 2unset: '0' - '2': background-color:black - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:08.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 825 - page_layout_root_id: 64 - page_layout_id: 66 - section_param_id: 10 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:08.000000000 Z - updated_at: 2014-03-09 02:07:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 826 - page_layout_root_id: 64 - page_layout_id: 67 - section_param_id: 6 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:12.000000000 Z - updated_at: 2014-03-09 02:07:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 827 - page_layout_root_id: 64 - page_layout_id: 67 - section_param_id: 7 - theme_id: 2 - pvalue: - '101': float:none - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:800px - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:12.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 828 - page_layout_root_id: 64 - page_layout_id: 67 - section_param_id: 8 - theme_id: 2 - pvalue: - 15hidden: '1' - 31unset: '1' - '31': margin:auto auto auto auto - 7unset: '0' - '7': border-style:solid none none none - 8unset: '0' - '8': border-width:1px 0px 0px 0px - 6unset: '0' - '6': border-color:#CCCCCC transparent transparent transparent - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:12.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 829 - page_layout_root_id: 64 - page_layout_id: 67 - section_param_id: 9 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:12.000000000 Z - updated_at: 2014-03-09 02:07:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 830 - page_layout_root_id: 64 - page_layout_id: 67 - section_param_id: 10 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:07:12.000000000 Z - updated_at: 2014-03-09 02:07:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 831 - page_layout_root_id: 64 - page_layout_id: 68 - section_param_id: 6 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:05.000000000 Z - updated_at: 2014-03-09 02:08:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 832 - page_layout_root_id: 64 - page_layout_id: 68 - section_param_id: 7 - theme_id: 2 - pvalue: - '101': float:none - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:320px - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:05.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 833 - page_layout_root_id: 64 - page_layout_id: 68 - section_param_id: 8 - theme_id: 2 - pvalue: - 15hidden: '1' - 31unset: '1' - '31': margin:auto auto auto 260px - 15unset: '1' - '15': height:100px - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:05.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 834 - page_layout_root_id: 64 - page_layout_id: 68 - section_param_id: 9 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:05.000000000 Z - updated_at: 2014-03-09 02:08:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 835 - page_layout_root_id: 64 - page_layout_id: 68 - section_param_id: 10 - theme_id: 2 - pvalue: - 53unset: '1' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:05.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 836 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 11 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-03-09 02:08:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 837 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 12 - theme_id: 2 - pvalue: - 21unset: '1' - '21': width:600px - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 838 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 13 - theme_id: 2 - pvalue: - 15hidden: '1' - 31unset: '1' - '31': margin:auto auto auto 250px - 32unset: '0' - '32': padding:5px 0px 5px 0px - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 839 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 14 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-03-09 02:08:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 840 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 15 - theme_id: 2 - pvalue: - 53unset: '1' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 841 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 16 - theme_id: 2 - pvalue: - 32unset: '0' - '32': padding:5px 5px 5px 5px - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 842 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 17 - theme_id: 2 - pvalue: - 54unset: '0' - '54': text-decoration:none - 49unset: '0' - '49': color:black - 27unset: '0' - '27': font-weight:bolder - 24unset: '0' - '24': font-size:90% - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-08-09 07:34:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 843 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 18 - theme_id: 2 - pvalue: - 49unset: '0' - '49': color:#4183C4 - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 844 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 19 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-03-09 02:08:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 845 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 20 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-03-09 02:08:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 846 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 21 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-03-09 02:08:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 847 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 22 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-03-09 02:08:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 848 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 23 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-03-09 02:08:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 849 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 24 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-03-09 02:08:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 850 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 25 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-03-09 02:08:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 851 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 26 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-03-09 02:08:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 852 - page_layout_root_id: 64 - page_layout_id: 70 - section_param_id: 6 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:39.000000000 Z - updated_at: 2014-03-09 02:08:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 853 - page_layout_root_id: 64 - page_layout_id: 70 - section_param_id: 7 - theme_id: 2 - pvalue: - '101': float:none - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:200px - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:39.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 854 - page_layout_root_id: 64 - page_layout_id: 70 - section_param_id: 8 - theme_id: 2 - pvalue: - 15hidden: '1' - 31unset: '1' - '31': margin:auto auto auto 300px - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:39.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 855 - page_layout_root_id: 64 - page_layout_id: 70 - section_param_id: 9 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:39.000000000 Z - updated_at: 2014-03-09 02:08:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 856 - page_layout_root_id: 64 - page_layout_id: 70 - section_param_id: 10 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:08:39.000000000 Z - updated_at: 2014-03-09 02:08:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 857 - page_layout_root_id: 64 - page_layout_id: 71 - section_param_id: 323 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:09:00.000000000 Z - updated_at: 2014-03-09 02:09:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 858 - page_layout_root_id: 64 - page_layout_id: 71 - section_param_id: 324 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:09:00.000000000 Z - updated_at: 2014-03-09 02:09:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 859 - page_layout_root_id: 64 - page_layout_id: 71 - section_param_id: 325 - theme_id: 2 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-09 02:09:00.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 860 - page_layout_root_id: 64 - page_layout_id: 71 - section_param_id: 326 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:09:00.000000000 Z - updated_at: 2014-03-09 02:09:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 861 - page_layout_root_id: 64 - page_layout_id: 71 - section_param_id: 327 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 02:09:00.000000000 Z - updated_at: 2014-03-09 02:09:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 862 - page_layout_root_id: 64 - page_layout_id: 72 - section_param_id: 6 - theme_id: 2 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2014-03-09 03:11:13.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 863 - page_layout_root_id: 64 - page_layout_id: 72 - section_param_id: 7 - theme_id: 2 - pvalue: - '101': float:none - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:800px - unset: - computed_pvalue: - created_at: 2014-03-09 03:11:14.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 864 - page_layout_root_id: 64 - page_layout_id: 72 - section_param_id: 8 - theme_id: 2 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:20px 0px 20px 0px - unset: - computed_pvalue: - created_at: 2014-03-09 03:11:14.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 865 - page_layout_root_id: 64 - page_layout_id: 72 - section_param_id: 9 - theme_id: 2 - pvalue: - 2unset: '1' - '2': background-color:white - unset: - computed_pvalue: - created_at: 2014-03-09 03:11:14.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 866 - page_layout_root_id: 64 - page_layout_id: 72 - section_param_id: 10 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 03:11:14.000000000 Z - updated_at: 2014-03-09 03:11:14.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 867 - page_layout_root_id: 64 - page_layout_id: 73 - section_param_id: 6 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 03:13:28.000000000 Z - updated_at: 2014-03-09 03:13:28.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 868 - page_layout_root_id: 64 - page_layout_id: 73 - section_param_id: 7 - theme_id: 2 - pvalue: - '101': float:none - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:800px - unset: - computed_pvalue: - created_at: 2014-03-09 03:13:28.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 869 - page_layout_root_id: 64 - page_layout_id: 73 - section_param_id: 8 - theme_id: 2 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-09 03:13:28.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 870 - page_layout_root_id: 64 - page_layout_id: 73 - section_param_id: 9 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 03:13:28.000000000 Z - updated_at: 2014-03-09 03:13:28.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 871 - page_layout_root_id: 64 - page_layout_id: 73 - section_param_id: 10 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-09 03:13:28.000000000 Z - updated_at: 2014-03-09 03:13:28.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 872 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 367 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:42.000000000 Z - updated_at: 2014-03-10 12:22:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 873 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 368 - theme_id: 2 - pvalue: - 21unset: '0' - '21': width:290px - 101unset: '0' - '101': float:right - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:42.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 874 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 369 - theme_id: 2 - pvalue: - 15hidden: '1' - 31unset: '1' - '31': margin:100px auto auto auto - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:42.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 875 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 370 - theme_id: 2 - pvalue: - 3unset: '1' - '3': ! 'background-image:' - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:42.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 876 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 371 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:42.000000000 Z - updated_at: 2014-03-10 12:22:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 877 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 372 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:42.000000000 Z - updated_at: 2014-03-10 12:22:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 878 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 373 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:42.000000000 Z - updated_at: 2014-03-10 12:22:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 879 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 374 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:42.000000000 Z - updated_at: 2014-03-10 12:22:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 880 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 375 - theme_id: 2 - pvalue: - 21unset: '0' - '21': width:260px - 31unset: '0' - '31': margin:auto auto 5px auto - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC' - 32unset: '0' - '32': padding:5px 10px 5px 10px - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:42.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 881 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 376 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-03-10 12:22:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 882 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 377 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-03-10 12:22:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 883 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 378 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-03-10 12:22:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 884 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 379 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-03-10 12:22:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 885 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 380 - theme_id: 2 - pvalue: - 49unset: '0' - '49': color:red - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 886 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 381 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-03-10 12:22:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 887 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 382 - theme_id: 2 - pvalue: - 21unset: '0' - '21': width:280px - 32unset: '0' - '32': padding:5px 10px 5px 10px - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': border-color:transparent transparent transparent transparent - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 888 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 383 - theme_id: 2 - pvalue: - 2unset: '0' - '2': background-color:#73CF54 - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 889 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 384 - theme_id: 2 - pvalue: - 49unset: '0' - '49': color:white - 27unset: '0' - '27': font-weight:bolder - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 890 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 385 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-03-10 12:22:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 891 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 386 - theme_id: 2 - pvalue: - 2unset: '0' - '2': background-color:#62B246 - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 892 - page_layout_root_id: 64 - page_layout_id: 77 - section_param_id: 387 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-10 12:22:43.000000000 Z - updated_at: 2014-03-10 12:22:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 893 - page_layout_root_id: 64 - page_layout_id: 78 - section_param_id: 50 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-15 08:35:58.000000000 Z - updated_at: 2014-03-15 08:35:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 894 - page_layout_root_id: 64 - page_layout_id: 78 - section_param_id: 51 - theme_id: 2 - pvalue: - 21unset: '0' - '21': width:400px - 15unset: '1' - '15': height:220px - 101unset: '1' - '101': float:left - unset: - computed_pvalue: - created_at: 2014-03-15 08:35:58.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 895 - page_layout_root_id: 64 - page_layout_id: 78 - section_param_id: 52 - theme_id: 2 - pvalue: - 15hidden: '1' - 15unset: '1' - '15': height:220px - unset: - computed_pvalue: - created_at: 2014-03-15 08:35:58.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 896 - page_layout_root_id: 64 - page_layout_id: 78 - section_param_id: 53 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-15 08:35:58.000000000 Z - updated_at: 2014-03-15 08:35:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 897 - page_layout_root_id: 64 - page_layout_id: 78 - section_param_id: 54 - theme_id: 2 - pvalue: - 49unset: '0' - '49': color:white - unset: - computed_pvalue: - created_at: 2014-03-15 08:35:58.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 898 - page_layout_root_id: 64 - page_layout_id: 79 - section_param_id: 50 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-17 12:57:54.000000000 Z - updated_at: 2014-03-17 12:57:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 899 - page_layout_root_id: 64 - page_layout_id: 79 - section_param_id: 51 - theme_id: 2 - pvalue: - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-03-17 12:57:54.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 900 - page_layout_root_id: 64 - page_layout_id: 79 - section_param_id: 52 - theme_id: 2 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-17 12:57:54.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 901 - page_layout_root_id: 64 - page_layout_id: 79 - section_param_id: 53 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-17 12:57:54.000000000 Z - updated_at: 2014-03-17 12:57:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 902 - page_layout_root_id: 64 - page_layout_id: 79 - section_param_id: 54 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-17 12:57:54.000000000 Z - updated_at: 2014-03-17 12:57:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 903 - page_layout_root_id: 64 - page_layout_id: 81 - section_param_id: 362 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-18 13:23:00.000000000 Z - updated_at: 2014-03-18 13:23:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 904 - page_layout_root_id: 64 - page_layout_id: 81 - section_param_id: 363 - theme_id: 2 - pvalue: - 21unset: '0' - '21': width:800px - 101unset: '0' - '101': float:none - unset: - computed_pvalue: - created_at: 2014-03-18 13:23:00.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 905 - page_layout_root_id: 64 - page_layout_id: 81 - section_param_id: 364 - theme_id: 2 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-18 13:23:00.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 906 - page_layout_root_id: 64 - page_layout_id: 81 - section_param_id: 365 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-18 13:23:00.000000000 Z - updated_at: 2014-03-18 13:23:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 907 - page_layout_root_id: 64 - page_layout_id: 81 - section_param_id: 366 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-18 13:23:00.000000000 Z - updated_at: 2014-03-18 13:23:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 908 - page_layout_root_id: 64 - page_layout_id: 82 - section_param_id: 50 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-18 13:48:55.000000000 Z - updated_at: 2014-03-18 13:48:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 909 - page_layout_root_id: 64 - page_layout_id: 82 - section_param_id: 51 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-18 13:48:55.000000000 Z - updated_at: 2014-03-18 13:48:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 910 - page_layout_root_id: 64 - page_layout_id: 82 - section_param_id: 52 - theme_id: 2 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-18 13:48:55.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 911 - page_layout_root_id: 64 - page_layout_id: 82 - section_param_id: 53 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-18 13:48:55.000000000 Z - updated_at: 2014-03-18 13:48:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 912 - page_layout_root_id: 64 - page_layout_id: 82 - section_param_id: 54 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-18 13:48:55.000000000 Z - updated_at: 2014-03-18 13:48:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4130 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 420 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4147 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 423 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4164 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 426 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4181 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 429 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4198 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 432 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4215 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 435 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4232 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 438 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4249 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 441 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4266 - page_layout_root_id: 64 - page_layout_id: 69 - section_param_id: 444 - theme_id: 2 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -page_layouts: -- !ruby/object:Spree::PageLayout - attributes: - id: 64 - site_id: 1 - root_id: 64 - parent_id: - lft: 1 - rgt: 30 - title: PageRoot - slug: pageroot - section_id: 1 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: true - created_at: 2014-03-09 01:13:22.000000000 Z - updated_at: 2014-07-12 06:22:33.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 65 - site_id: 1 - root_id: 64 - parent_id: 64 - lft: 2 - rgt: 11 - title: header - slug: header--4 - section_id: 2 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-09 02:07:03.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 70 - site_id: 1 - root_id: 64 - parent_id: 65 - lft: 3 - rgt: 6 - title: container - slug: container--2 - section_id: 2 - section_instance: 5 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-09 02:08:39.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 71 - site_id: 1 - root_id: 64 - parent_id: 70 - lft: 4 - rgt: 5 - title: Logo - slug: logo--4 - section_id: 97 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-09 02:09:00.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 68 - site_id: 1 - root_id: 64 - parent_id: 65 - lft: 7 - rgt: 10 - title: container - slug: container - section_id: 2 - section_instance: 4 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-09 02:08:05.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 69 - site_id: 1 - root_id: 64 - parent_id: 68 - lft: 8 - rgt: 9 - title: hmenu - slug: hmenu - section_id: 3 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-09 02:08:32.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 66 - site_id: 1 - root_id: 64 - parent_id: 64 - lft: 12 - rgt: 19 - title: slogan - slug: slogan - section_id: 2 - section_instance: 2 - section_context: home - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-09 02:07:08.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 72 - site_id: 1 - root_id: 64 - parent_id: 66 - lft: 13 - rgt: 18 - title: container - slug: container--3 - section_id: 2 - section_instance: 6 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-09 03:11:13.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 78 - site_id: 1 - root_id: 64 - parent_id: 72 - lft: 14 - rgt: 15 - title: text - slug: text - section_id: 11 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-15 08:35:58.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 77 - site_id: 1 - root_id: 64 - parent_id: 72 - lft: 16 - rgt: 17 - title: Site form - slug: site-form - section_id: 111 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-10 12:22:42.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 81 - site_id: 1 - root_id: 64 - parent_id: 64 - lft: 20 - rgt: 21 - title: Taxon description - slug: taxon-description - section_id: 109 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-18 13:23:00.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 73 - site_id: 1 - root_id: 64 - parent_id: 64 - lft: 22 - rgt: 25 - title: container - slug: container--4 - section_id: 2 - section_instance: 7 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-09 03:13:27.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 79 - site_id: 1 - root_id: 64 - parent_id: 73 - lft: 23 - rgt: 24 - title: text - slug: text--2 - section_id: 11 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-17 12:57:54.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 67 - site_id: 1 - root_id: 64 - parent_id: 64 - lft: 26 - rgt: 29 - title: footer - slug: footer--4 - section_id: 2 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-09 02:07:12.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 82 - site_id: 1 - root_id: 64 - parent_id: 67 - lft: 27 - rgt: 28 - title: text - slug: text--3 - section_id: 11 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-03-18 13:48:55.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -template_files: [] -template_releases: -- !ruby/object:Spree::TemplateRelease - attributes: - id: 6 - name: just a test - theme_id: 2 - created_at: 2014-06-21 13:37:49.000000000 Z - updated_at: 2014-06-21 13:37:49.000000000 Z diff --git a/spree_theme/db/themes/designs/1_2_1410526881.json b/spree_theme/db/themes/designs/1_2_1410526881.json deleted file mode 100644 index 749d5ab9..00000000 --- a/spree_theme/db/themes/designs/1_2_1410526881.json +++ /dev/null @@ -1 +0,0 @@ -{"template":{"template_theme":{"assigned_resource_ids":{"69":{"spree/taxon":[23]},"78":{"spree/template_text":[1]},"79":{"spree/template_text":[0]},"80":{"spree/template_text":[0]},"82":{"spree/template_text":[4]}},"created_at":"2014-03-09T01:13:21.000Z","id":2,"page_layout_root_id":64,"release_id":0,"site_id":1,"slug":"","title":"Dalianshops","updated_at":"2014-08-23T00:09:42.000Z"}},"param_values":[{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":913,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{"21":"width:800px","21unset":"1","20":"min-width:800px","20hidden":"1"},"section_param_id":1,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":914,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{},"section_param_id":2,"theme_id":2,"unset":null,"updated_at":"2014-03-09T01:13:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":915,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{"85":"clear:both"},"section_param_id":3,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":916,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#EFEFEF"},"section_param_id":4,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":917,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{},"section_param_id":5,"theme_id":2,"unset":null,"updated_at":"2014-03-09T01:13:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":918,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":919,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":920,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto auto"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":921,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"2unset":"1","2":"background-color:#EFEFEF"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":922,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"53unset":"0","53":"text-align:center"},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":923,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":924,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":925,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":926,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:black"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":927,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":928,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":929,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:800px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":930,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto auto","7unset":"0","7":"border-style:solid none none none","8unset":"0","8":"border-width:1px 0px 0px 0px","6unset":"0","6":"border-color:#CCCCCC transparent transparent transparent"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":931,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":932,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":933,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":934,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:320px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":935,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 260px","15unset":"1","15":"height:100px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":936,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":937,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{"53unset":"1","53":"text-align:center"},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":938,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":11,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":939,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"21unset":"1","21":"width:600px"},"section_param_id":12,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":940,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 250px","32unset":"0","32":"padding:5px 0px 5px 0px"},"section_param_id":13,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":941,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":14,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":942,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"53unset":"1","53":"text-align:center"},"section_param_id":15,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":943,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px"},"section_param_id":16,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":944,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"54unset":"0","54":"text-decoration:none","49unset":"0","49":"color:black","27unset":"0","27":"font-weight:bolder","24unset":"0","24":"font-size:90%"},"section_param_id":17,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":945,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:#4183C4"},"section_param_id":18,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":946,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":19,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":947,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":20,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":948,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":21,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":949,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":22,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":950,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":23,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":951,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":24,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":952,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":25,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":953,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":26,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":954,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":955,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:200px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":956,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 300px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":957,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":958,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":959,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":323,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":960,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":324,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":961,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":325,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":962,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":326,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":963,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":327,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:11:13.000Z","id":964,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":965,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:800px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":966,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:20px 0px 20px 0px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":967,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"2unset":"1","2":"background-color:white"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":968,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:11:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":969,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:13:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":970,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:800px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":971,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":972,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:13:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":973,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:13:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":974,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":367,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":975,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:290px","101unset":"0","101":"float:right"},"section_param_id":368,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":976,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:100px auto auto auto"},"section_param_id":369,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":977,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"3unset":"1","3":"background-image:"},"section_param_id":370,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":978,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":371,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":979,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":372,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":980,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":373,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":981,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":374,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":982,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:260px","31unset":"0","31":"margin:auto auto 5px auto","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC","32unset":"0","32":"padding:5px 10px 5px 10px"},"section_param_id":375,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":983,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":376,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":984,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":377,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":985,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":378,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":986,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":379,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":987,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":380,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":988,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":381,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":989,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:280px","32unset":"0","32":"padding:5px 10px 5px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:transparent transparent transparent transparent"},"section_param_id":382,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":990,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#73CF54"},"section_param_id":383,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":991,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:white","27unset":"0","27":"font-weight:bolder"},"section_param_id":384,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":992,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":385,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":993,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#62B246"},"section_param_id":386,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":994,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":387,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":995,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{},"section_param_id":50,"theme_id":2,"unset":null,"updated_at":"2014-03-15T08:35:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":996,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:400px","15unset":"1","15":"height:220px","101unset":"1","101":"float:left"},"section_param_id":51,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":997,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{"15hidden":"1","15unset":"1","15":"height:220px"},"section_param_id":52,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":998,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{},"section_param_id":53,"theme_id":2,"unset":null,"updated_at":"2014-03-15T08:35:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":999,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":54,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":1000,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":50,"theme_id":2,"unset":null,"updated_at":"2014-03-17T12:57:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":1001,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":51,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":1002,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":1003,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":53,"theme_id":2,"unset":null,"updated_at":"2014-03-17T12:57:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":1004,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":54,"theme_id":2,"unset":null,"updated_at":"2014-03-17T12:57:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":1005,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":362,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:23:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":1006,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:800px","101unset":"0","101":"float:none"},"section_param_id":363,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":1007,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":364,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":1008,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":365,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:23:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":1009,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":366,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:23:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":1010,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":50,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:48:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":1011,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":51,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:48:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":1012,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":1013,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":53,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:48:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":1014,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":54,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:48:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:00.000Z","id":2138,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":420,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:00.000Z","id":2183,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":423,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:01.000Z","id":2228,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":426,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:01.000Z","id":2273,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":429,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:01.000Z","id":2318,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":432,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:01.000Z","id":2363,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":435,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:02.000Z","id":2408,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":438,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:02.000Z","id":2453,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":441,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:02.000Z","id":2498,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":444,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:57.000Z","id":4599,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":477,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4615,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4616,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4617,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4618,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4619,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4620,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4621,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4749,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":481,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4762,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{},"section_param_id":484,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4763,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":484,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4764,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":484,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4870,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":520,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4885,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":525,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4888,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":526,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4901,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4902,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4903,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4904,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4905,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4906,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4907,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5035,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":537,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5048,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{},"section_param_id":540,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5049,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":540,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5050,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":540,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5156,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":576,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5171,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":581,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5174,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":582,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}}],"page_layouts":[{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T01:13:22.000Z","data_filter":"","data_source":"","data_source_param":"","id":64,"is_enabled":true,"is_full_html":true,"lft":1,"parent_id":null,"rgt":30,"root_id":64,"section_context":"","section_id":1,"section_instance":1,"site_id":1,"slug":"root1","title":"root1","updated_at":"2014-03-09T01:13:22.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:07:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":65,"is_enabled":true,"is_full_html":false,"lft":2,"parent_id":64,"rgt":11,"root_id":64,"section_context":"","section_id":2,"section_instance":1,"site_id":1,"slug":"container1","title":"header","updated_at":"2014-03-09T02:07:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:08:39.000Z","data_filter":"","data_source":"","data_source_param":"","id":70,"is_enabled":true,"is_full_html":false,"lft":3,"parent_id":65,"rgt":6,"root_id":64,"section_context":"","section_id":2,"section_instance":5,"site_id":1,"slug":"container5","title":"container5","updated_at":"2014-03-09T02:08:39.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:09:00.000Z","data_filter":"","data_source":"","data_source_param":"","id":71,"is_enabled":true,"is_full_html":false,"lft":4,"parent_id":70,"rgt":5,"root_id":64,"section_context":"","section_id":97,"section_instance":1,"site_id":1,"slug":"logo1","title":"Logo1","updated_at":"2014-03-09T02:09:00.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:08:05.000Z","data_filter":"","data_source":"","data_source_param":"","id":68,"is_enabled":true,"is_full_html":false,"lft":7,"parent_id":65,"rgt":10,"root_id":64,"section_context":"","section_id":2,"section_instance":4,"site_id":1,"slug":"container4","title":"container4","updated_at":"2014-03-09T02:08:05.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:08:32.000Z","data_filter":"","data_source":"","data_source_param":"","id":69,"is_enabled":true,"is_full_html":false,"lft":8,"parent_id":68,"rgt":9,"root_id":64,"section_context":"","section_id":3,"section_instance":1,"site_id":1,"slug":"hmenu1","title":"hmenu1","updated_at":"2014-03-09T02:08:32.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:07:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":66,"is_enabled":true,"is_full_html":false,"lft":12,"parent_id":64,"rgt":19,"root_id":64,"section_context":"home","section_id":2,"section_instance":2,"site_id":1,"slug":"container2","title":"slogan","updated_at":"2014-03-09T02:07:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T03:11:13.000Z","data_filter":"","data_source":"","data_source_param":"","id":72,"is_enabled":true,"is_full_html":false,"lft":13,"parent_id":66,"rgt":18,"root_id":64,"section_context":"","section_id":2,"section_instance":6,"site_id":1,"slug":"container6","title":"container6","updated_at":"2014-03-09T03:11:13.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-15T08:35:58.000Z","data_filter":"","data_source":"","data_source_param":"","id":78,"is_enabled":true,"is_full_html":false,"lft":14,"parent_id":72,"rgt":15,"root_id":64,"section_context":"","section_id":11,"section_instance":1,"site_id":1,"slug":"text1","title":"text1","updated_at":"2014-03-15T08:35:58.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-10T12:22:42.000Z","data_filter":"","data_source":"","data_source_param":"","id":77,"is_enabled":true,"is_full_html":false,"lft":16,"parent_id":72,"rgt":17,"root_id":64,"section_context":"","section_id":111,"section_instance":1,"site_id":1,"slug":"site-form1","title":"Site form1","updated_at":"2014-03-10T12:22:42.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-18T13:23:00.000Z","data_filter":"","data_source":"","data_source_param":"","id":81,"is_enabled":true,"is_full_html":false,"lft":20,"parent_id":64,"rgt":21,"root_id":64,"section_context":"","section_id":109,"section_instance":1,"site_id":1,"slug":"taxon-description1","title":"Taxon description1","updated_at":"2014-03-18T13:23:00.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T03:13:27.000Z","data_filter":"","data_source":"","data_source_param":"","id":73,"is_enabled":true,"is_full_html":false,"lft":22,"parent_id":64,"rgt":25,"root_id":64,"section_context":"","section_id":2,"section_instance":7,"site_id":1,"slug":"container7","title":"container7","updated_at":"2014-03-09T03:13:27.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-17T12:57:54.000Z","data_filter":"","data_source":"","data_source_param":"","id":79,"is_enabled":true,"is_full_html":false,"lft":23,"parent_id":73,"rgt":24,"root_id":64,"section_context":"","section_id":11,"section_instance":2,"site_id":1,"slug":"text2","title":"text2","updated_at":"2014-03-17T12:57:54.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:07:12.000Z","data_filter":"","data_source":"","data_source_param":"","id":67,"is_enabled":true,"is_full_html":false,"lft":26,"parent_id":64,"rgt":29,"root_id":64,"section_context":"","section_id":2,"section_instance":3,"site_id":1,"slug":"container3","title":"footer","updated_at":"2014-06-22T00:18:00.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-18T13:48:55.000Z","data_filter":"","data_source":"","data_source_param":"","id":82,"is_enabled":true,"is_full_html":false,"lft":27,"parent_id":67,"rgt":28,"root_id":64,"section_context":"","section_id":11,"section_instance":3,"site_id":1,"slug":"text3","title":"text3","updated_at":"2014-03-18T13:48:55.000Z"}}],"template_files":[],"template_releases":[]} \ No newline at end of file diff --git a/spree_theme/db/themes/designs/1_2_1414758766.json b/spree_theme/db/themes/designs/1_2_1414758766.json deleted file mode 100644 index 2f166bee..00000000 --- a/spree_theme/db/themes/designs/1_2_1414758766.json +++ /dev/null @@ -1 +0,0 @@ -{"template":{"template_theme":{"assigned_resource_ids":{"69":{"spree/taxon":[23]},"78":{"spree/template_text":[1]},"79":{"spree/template_text":[0]},"80":{"spree/template_text":[0]},"82":{"spree/template_text":[4]},"71":{"spree/template_file":[49]},"550":{"spree/taxon":[134],"spree/specific_taxon":[25]},"557":{"spree/taxon":[139]},"561":{"spree/specific_taxon":[28]},"562":{"spree/template_text":[16]}},"created_at":"2014-03-09T01:13:21.000Z","id":2,"is_public":false,"page_layout_root_id":64,"release_id":22,"site_id":1,"slug":"","title":"Dalianshops","updated_at":"2014-10-26T09:01:10.000Z"}},"param_values":[{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":913,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{"21":"width:800px","21unset":"1","20":"min-width:800px","20hidden":"1"},"section_param_id":1,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":914,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{},"section_param_id":2,"theme_id":2,"unset":null,"updated_at":"2014-03-09T01:13:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":915,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{"85":"clear:both"},"section_param_id":3,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":916,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#EFEFEF"},"section_param_id":4,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T01:13:22.000Z","id":917,"page_layout_id":64,"page_layout_root_id":64,"pvalue":{"16unset":"0","16":"line-height:1.3em"},"section_param_id":5,"theme_id":2,"unset":null,"updated_at":"2014-09-23T15:26:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":918,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":919,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:980px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:47:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":920,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto auto"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":921,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"2unset":"1","2":"background-color:#EFEFEF"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:03.000Z","id":922,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{"53unset":"0","53":"text-align:center"},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":923,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":924,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":925,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":926,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#009de6"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:08.000Z","id":927,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":928,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:07:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":929,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:980px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:58:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":930,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto auto","7unset":"0","7":"border-style:solid none none none","8unset":"0","8":"border-width:1px 0px 0px 0px","6unset":"0","6":"border-color:#CCCCCC transparent transparent transparent","32unset":"1","32":"padding:0px 0px 0px 0px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-23T14:57:34.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":931,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:white"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:09:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:07:12.000Z","id":932,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{"53unset":"1","53":"text-align:center"},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-10-15T02:43:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":933,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":934,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:50:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":935,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 260px","15unset":"1","15":"height:100px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":936,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#232d3b"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-23T12:46:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:05.000Z","id":937,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{"53unset":"1","53":"text-align:center","49unset":"1","49":"color:white"},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:51:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":938,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":11,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":939,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"21unset":"1","21":"width:600px","101unset":"0","101":"float:right"},"section_param_id":12,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:51:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":940,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 250px","32unset":"0","32":"padding:0px 0px 3px 0px"},"section_param_id":13,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:54:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":941,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":14,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":942,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"53unset":"1","53":"text-align:center"},"section_param_id":15,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":943,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"32unset":"0","32":"padding:10px 15px 10px 15px"},"section_param_id":16,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:55:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":944,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"54unset":"0","54":"text-decoration:none","49unset":"0","49":"color:white","27unset":"0","27":"font-weight:bolder","24unset":"0","24":"font-size:90%"},"section_param_id":17,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:52:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":945,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"49unset":"1","49":"color:#4183C4"},"section_param_id":18,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:59:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":946,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":19,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":947,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":20,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":948,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":21,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":949,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":22,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":950,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#73cd54"},"section_param_id":23,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:54:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":951,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#73cd54"},"section_param_id":24,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:00:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":952,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":25,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:32.000Z","id":953,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":26,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":954,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":955,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"1","21":"width:200px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:47:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":956,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 300px","32unset":"1","32":"padding:5px 0px 0px 0px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-23T16:45:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":957,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:08:39.000Z","id":958,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:08:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":959,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":323,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":960,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":324,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":961,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:5px 0px 0px 0px"},"section_param_id":325,"theme_id":2,"unset":null,"updated_at":"2014-09-23T16:45:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":962,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":326,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T02:09:00.000Z","id":963,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":327,"theme_id":2,"unset":null,"updated_at":"2014-03-09T02:09:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:11:13.000Z","id":964,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":965,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:980px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-23T16:36:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":966,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:35px 40px 35px 10px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-23T16:36:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":967,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{"2unset":"1","2":"background-color:white"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:11:14.000Z","id":968,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:11:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":969,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:13:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":970,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:800px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":971,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":972,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:13:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-09T03:13:28.000Z","id":973,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-03-09T03:13:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":974,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":367,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":975,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:290px","101unset":"0","101":"float:right"},"section_param_id":368,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":976,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:100px auto auto auto"},"section_param_id":369,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":977,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"3unset":"1","3":"background-image:"},"section_param_id":370,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":978,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":371,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":979,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":372,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":980,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":373,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":981,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":374,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:42.000Z","id":982,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:260px","31unset":"0","31":"margin:auto auto 5px auto","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC","32unset":"0","32":"padding:5px 10px 5px 10px"},"section_param_id":375,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":983,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":376,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":984,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":377,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":985,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":378,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":986,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":379,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":987,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":380,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":988,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":381,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":989,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:282px","32unset":"0","32":"padding:5px 10px 5px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#73CF54 #73CF54 #73CF54 #73CF54"},"section_param_id":382,"theme_id":2,"unset":null,"updated_at":"2014-09-23T16:41:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":990,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#73CF54"},"section_param_id":383,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":991,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:white","27unset":"0","27":"font-weight:bolder"},"section_param_id":384,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":992,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":385,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":993,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#62B246"},"section_param_id":386,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-10T12:22:43.000Z","id":994,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":387,"theme_id":2,"unset":null,"updated_at":"2014-03-10T12:22:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":995,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{},"section_param_id":50,"theme_id":2,"unset":null,"updated_at":"2014-03-15T08:35:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":996,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:400px","15unset":"1","15":"height:220px","101unset":"1","101":"float:left"},"section_param_id":51,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":997,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{"15hidden":"1","15unset":"1","15":"height:220px"},"section_param_id":52,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":998,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{},"section_param_id":53,"theme_id":2,"unset":null,"updated_at":"2014-03-15T08:35:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-15T08:35:58.000Z","id":999,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":54,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":1000,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":50,"theme_id":2,"unset":null,"updated_at":"2014-03-17T12:57:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":1001,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":51,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":1002,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":2,"unset":null,"updated_at":"2014-08-23T00:09:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":1003,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":53,"theme_id":2,"unset":null,"updated_at":"2014-03-17T12:57:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-17T12:57:54.000Z","id":1004,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":54,"theme_id":2,"unset":null,"updated_at":"2014-03-17T12:57:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":1005,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":362,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:23:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":1006,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:100%","101unset":"0","101":"float:none"},"section_param_id":363,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:29:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":1007,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 20px 20px 40px","31unset":"1","31":"margin:auto auto 20px auto"},"section_param_id":364,"theme_id":2,"unset":null,"updated_at":"2014-09-23T16:07:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":1008,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:#009de6","3unset":"1","3":"background-image:sanjiao.png","4unset":"1","4":"background-position:left bottom"},"section_param_id":365,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:34:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:23:00.000Z","id":1009,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":366,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:28:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":1010,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":50,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:48:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":1011,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{"101unset":"1","101":"float:none"},"section_param_id":51,"theme_id":2,"unset":null,"updated_at":"2014-10-15T02:43:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":1012,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 10px 0px 20px"},"section_param_id":52,"theme_id":2,"unset":null,"updated_at":"2014-09-23T15:27:46.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":1013,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":53,"theme_id":2,"unset":null,"updated_at":"2014-03-18T13:48:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-03-18T13:48:55.000Z","id":1014,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{"24unset":"0","24":"font-size:85%"},"section_param_id":54,"theme_id":2,"unset":null,"updated_at":"2014-10-15T02:41:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:00.000Z","id":2138,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":420,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:00.000Z","id":2183,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":423,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:01.000Z","id":2228,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":426,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:01.000Z","id":2273,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":429,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:01.000Z","id":2318,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":432,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:01.000Z","id":2363,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":435,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:02.000Z","id":2408,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":438,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:02.000Z","id":2453,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":441,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T06:04:02.000Z","id":2498,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":444,"theme_id":2,"unset":null,"updated_at":"2014-08-02T06:04:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:57.000Z","id":4599,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":477,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4615,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4616,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4617,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4618,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4619,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4620,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4621,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4749,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":481,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4762,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{},"section_param_id":484,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4763,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":484,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4764,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":484,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4870,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":520,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4885,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":525,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4888,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":526,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4901,"page_layout_id":65,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4902,"page_layout_id":66,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4903,"page_layout_id":67,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4904,"page_layout_id":68,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4905,"page_layout_id":70,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4906,"page_layout_id":72,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4907,"page_layout_id":73,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5035,"page_layout_id":69,"page_layout_root_id":64,"pvalue":{},"section_param_id":537,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5048,"page_layout_id":78,"page_layout_root_id":64,"pvalue":{},"section_param_id":540,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5049,"page_layout_id":79,"page_layout_root_id":64,"pvalue":{},"section_param_id":540,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5050,"page_layout_id":82,"page_layout_root_id":64,"pvalue":{},"section_param_id":540,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5156,"page_layout_id":71,"page_layout_root_id":64,"pvalue":{},"section_param_id":576,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5171,"page_layout_id":81,"page_layout_root_id":64,"pvalue":{},"section_param_id":581,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5174,"page_layout_id":77,"page_layout_root_id":64,"pvalue":{},"section_param_id":582,"theme_id":2,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T11:49:22.000Z","id":5495,"page_layout_id":548,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:49:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T11:49:22.000Z","id":5496,"page_layout_id":548,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:980px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:50:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T11:49:22.000Z","id":5497,"page_layout_id":548,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:49:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T11:49:22.000Z","id":5498,"page_layout_id":548,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:49:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T11:49:22.000Z","id":5499,"page_layout_id":548,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:49:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T11:49:22.000Z","id":5500,"page_layout_id":548,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:49:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T11:49:22.000Z","id":5501,"page_layout_id":548,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-22T11:49:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:11:23.000Z","id":5502,"page_layout_id":549,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:11:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:11:23.000Z","id":5503,"page_layout_id":549,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:980px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:17:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:11:23.000Z","id":5504,"page_layout_id":549,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:11:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:11:23.000Z","id":5505,"page_layout_id":549,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:white"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:21:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:11:23.000Z","id":5506,"page_layout_id":549,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:11:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:11:23.000Z","id":5507,"page_layout_id":549,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:11:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:11:23.000Z","id":5508,"page_layout_id":549,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:11:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:11:59.000Z","id":5509,"page_layout_id":550,"page_layout_root_id":64,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:25:44.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:11:59.000Z","id":5510,"page_layout_id":550,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:860px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-23T16:47:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:11:59.000Z","id":5511,"page_layout_id":550,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:20px 20px 20px 20px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-23T16:07:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:00.000Z","id":5512,"page_layout_id":550,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:00.000Z","id":5513,"page_layout_id":550,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:00.000Z","id":5514,"page_layout_id":550,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:00.000Z","id":5515,"page_layout_id":550,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:08.000Z","id":5516,"page_layout_id":551,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:08.000Z","id":5517,"page_layout_id":551,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:254px","15unset":"0","21unset":"0","21":"width:410px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:45:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:08.000Z","id":5518,"page_layout_id":551,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:15px 15px 10px 10px","15unset":"0","15":"height:229px","31unset":"0","31":"margin:auto 10px auto auto"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:45:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:08.000Z","id":5519,"page_layout_id":551,"page_layout_root_id":64,"pvalue":{"3unset":"0","3":"background-image:feature-bg2.jpg","5unset":"0","5":"background-repeat:no-repeat"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:40:46.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:08.000Z","id":5520,"page_layout_id":551,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:08.000Z","id":5521,"page_layout_id":551,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:08.000Z","id":5522,"page_layout_id":551,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:24.000Z","id":5523,"page_layout_id":552,"page_layout_root_id":64,"pvalue":{},"section_param_id":160,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:24.000Z","id":5524,"page_layout_id":552,"page_layout_root_id":64,"pvalue":{},"section_param_id":161,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:24.000Z","id":5525,"page_layout_id":552,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:30px 0px 30px 10px"},"section_param_id":162,"theme_id":2,"unset":null,"updated_at":"2014-09-23T14:23:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:24.000Z","id":5526,"page_layout_id":552,"page_layout_root_id":64,"pvalue":{},"section_param_id":163,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:24.000Z","id":5527,"page_layout_id":552,"page_layout_root_id":64,"pvalue":{},"section_param_id":164,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:24.000Z","id":5528,"page_layout_id":552,"page_layout_root_id":64,"pvalue":{},"section_param_id":506,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:12:24.000Z","id":5529,"page_layout_id":552,"page_layout_root_id":64,"pvalue":{},"section_param_id":562,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:12:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:14:04.000Z","id":5537,"page_layout_id":554,"page_layout_root_id":64,"pvalue":{},"section_param_id":362,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:14:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:14:04.000Z","id":5538,"page_layout_id":554,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:320px","101unset":"0","101":"float:none"},"section_param_id":363,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:14:04.000Z","id":5539,"page_layout_id":554,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 0px 0px"},"section_param_id":364,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:39:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:14:04.000Z","id":5540,"page_layout_id":554,"page_layout_root_id":64,"pvalue":{},"section_param_id":365,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:14:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:14:04.000Z","id":5541,"page_layout_id":554,"page_layout_root_id":64,"pvalue":{},"section_param_id":366,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:14:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:14:04.000Z","id":5542,"page_layout_id":554,"page_layout_root_id":64,"pvalue":{},"section_param_id":525,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:14:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:14:04.000Z","id":5543,"page_layout_id":554,"page_layout_root_id":64,"pvalue":{},"section_param_id":581,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:14:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:32:02.000Z","id":5544,"page_layout_id":555,"page_layout_root_id":64,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:20:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:32:02.000Z","id":5545,"page_layout_id":555,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:36:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:32:02.000Z","id":5546,"page_layout_id":555,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 10px 0px 0px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-23T16:27:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:32:02.000Z","id":5547,"page_layout_id":555,"page_layout_root_id":64,"pvalue":{"2unset":"1","2":"background-color:#EFEFEF"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:45:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:32:02.000Z","id":5548,"page_layout_id":555,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:32:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:32:02.000Z","id":5549,"page_layout_id":555,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:32:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T12:32:02.000Z","id":5550,"page_layout_id":555,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-22T12:32:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:22.000Z","id":5551,"page_layout_id":556,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:22.000Z","id":5552,"page_layout_id":556,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:12:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:22.000Z","id":5553,"page_layout_id":556,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:22.000Z","id":5554,"page_layout_id":556,"page_layout_root_id":64,"pvalue":{"2unset":"0","2":"background-color:white"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-23T11:52:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:22.000Z","id":5555,"page_layout_id":556,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:22.000Z","id":5556,"page_layout_id":556,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:22.000Z","id":5557,"page_layout_id":556,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:33.000Z","id":5558,"page_layout_id":557,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:33.000Z","id":5559,"page_layout_id":557,"page_layout_root_id":64,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:900px"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:13:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:33.000Z","id":5560,"page_layout_id":557,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:33.000Z","id":5561,"page_layout_id":557,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:33.000Z","id":5562,"page_layout_id":557,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:33.000Z","id":5563,"page_layout_id":557,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:07:33.000Z","id":5564,"page_layout_id":557,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:07:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:14.000Z","id":5565,"page_layout_id":558,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:08:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:14.000Z","id":5566,"page_layout_id":558,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-23T11:54:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:14.000Z","id":5567,"page_layout_id":558,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:08:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:14.000Z","id":5568,"page_layout_id":558,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:08:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:14.000Z","id":5569,"page_layout_id":558,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:08:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:14.000Z","id":5570,"page_layout_id":558,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:08:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:14.000Z","id":5571,"page_layout_id":558,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:08:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:24.000Z","id":5572,"page_layout_id":559,"page_layout_root_id":64,"pvalue":{},"section_param_id":135,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:08:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:24.000Z","id":5573,"page_layout_id":559,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":136,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:17:07.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:24.000Z","id":5574,"page_layout_id":559,"page_layout_root_id":64,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto auto","32unset":"0","32":"padding:30px 0px 30px 0px"},"section_param_id":137,"theme_id":2,"unset":null,"updated_at":"2014-09-23T15:11:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:24.000Z","id":5575,"page_layout_id":559,"page_layout_root_id":64,"pvalue":{},"section_param_id":138,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:08:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:24.000Z","id":5576,"page_layout_id":559,"page_layout_root_id":64,"pvalue":{"53unset":"0","53":"text-align:center","24unset":"0","24":"font-size:200%","27unset":"0","27":"font-weight:bolder","49unset":"0","49":"color:#009de6"},"section_param_id":139,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:19:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:24.000Z","id":5577,"page_layout_id":559,"page_layout_root_id":64,"pvalue":{},"section_param_id":501,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:08:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:08:24.000Z","id":5578,"page_layout_id":559,"page_layout_root_id":64,"pvalue":{},"section_param_id":557,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:08:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:09:09.000Z","id":5579,"page_layout_id":560,"page_layout_root_id":64,"pvalue":{},"section_param_id":362,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:09:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:09:09.000Z","id":5580,"page_layout_id":560,"page_layout_root_id":64,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":363,"theme_id":2,"unset":null,"updated_at":"2014-09-23T11:46:34.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:09:09.000Z","id":5581,"page_layout_id":560,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":364,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:09:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:09:09.000Z","id":5582,"page_layout_id":560,"page_layout_root_id":64,"pvalue":{},"section_param_id":365,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:09:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:09:09.000Z","id":5583,"page_layout_id":560,"page_layout_root_id":64,"pvalue":{"24unset":"0","24":"font-size:103%"},"section_param_id":366,"theme_id":2,"unset":null,"updated_at":"2014-09-23T15:13:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:09:09.000Z","id":5584,"page_layout_id":560,"page_layout_root_id":64,"pvalue":{},"section_param_id":525,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:09:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:09:09.000Z","id":5585,"page_layout_id":560,"page_layout_root_id":64,"pvalue":{},"section_param_id":581,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:09:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:22:52.000Z","id":5586,"page_layout_id":561,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:22:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:22:52.000Z","id":5587,"page_layout_id":561,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:30:25.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:22:52.000Z","id":5588,"page_layout_id":561,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 20px 0px 40px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:30:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:22:52.000Z","id":5589,"page_layout_id":561,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:22:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:22:52.000Z","id":5590,"page_layout_id":561,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:22:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:22:52.000Z","id":5591,"page_layout_id":561,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:22:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:22:52.000Z","id":5592,"page_layout_id":561,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:22:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:23:04.000Z","id":5593,"page_layout_id":562,"page_layout_root_id":64,"pvalue":{},"section_param_id":50,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:23:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:23:04.000Z","id":5594,"page_layout_id":562,"page_layout_root_id":64,"pvalue":{},"section_param_id":51,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:23:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:23:04.000Z","id":5595,"page_layout_id":562,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:23:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:23:04.000Z","id":5596,"page_layout_id":562,"page_layout_root_id":64,"pvalue":{},"section_param_id":53,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:23:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:23:04.000Z","id":5597,"page_layout_id":562,"page_layout_root_id":64,"pvalue":{},"section_param_id":54,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:23:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:23:04.000Z","id":5598,"page_layout_id":562,"page_layout_root_id":64,"pvalue":{},"section_param_id":484,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:23:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-22T14:23:04.000Z","id":5599,"page_layout_id":562,"page_layout_root_id":64,"pvalue":{},"section_param_id":540,"theme_id":2,"unset":null,"updated_at":"2014-09-22T14:23:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T11:22:58.000Z","id":5600,"page_layout_id":563,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-23T11:22:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T11:22:58.000Z","id":5601,"page_layout_id":563,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-23T11:23:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T11:22:58.000Z","id":5602,"page_layout_id":563,"page_layout_root_id":64,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid none none none","8unset":"0","8":"border-width:1px 0px 0px 0px","6unset":"0","6":"border-color:#EFEFEF transparent transparent transparent"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-23T11:23:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T11:22:58.000Z","id":5603,"page_layout_id":563,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-23T11:22:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T11:22:58.000Z","id":5604,"page_layout_id":563,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-23T11:22:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T11:22:58.000Z","id":5605,"page_layout_id":563,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-23T11:22:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T11:22:58.000Z","id":5606,"page_layout_id":563,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-23T11:22:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:12:09.000Z","id":5607,"page_layout_id":564,"page_layout_root_id":64,"pvalue":{},"section_param_id":405,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:12:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:12:09.000Z","id":5608,"page_layout_id":564,"page_layout_root_id":64,"pvalue":{},"section_param_id":406,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:12:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:12:09.000Z","id":5609,"page_layout_id":564,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 0px 18px"},"section_param_id":407,"theme_id":2,"unset":null,"updated_at":"2014-09-23T14:23:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:12:09.000Z","id":5610,"page_layout_id":564,"page_layout_root_id":64,"pvalue":{},"section_param_id":408,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:12:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:12:09.000Z","id":5611,"page_layout_id":564,"page_layout_root_id":64,"pvalue":{},"section_param_id":409,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:12:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:12:09.000Z","id":5612,"page_layout_id":564,"page_layout_root_id":64,"pvalue":{},"section_param_id":529,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:12:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:12:09.000Z","id":5613,"page_layout_id":564,"page_layout_root_id":64,"pvalue":{},"section_param_id":585,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:12:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:32:20.000Z","id":5614,"page_layout_id":565,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:32:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:32:20.000Z","id":5615,"page_layout_id":565,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:33:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:32:20.000Z","id":5616,"page_layout_id":565,"page_layout_root_id":64,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 17px 0px"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:36:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:32:20.000Z","id":5617,"page_layout_id":565,"page_layout_root_id":64,"pvalue":{"3unset":"0","3":"background-image:sanjiao.png","5unset":"0","5":"background-repeat:no-repeat","4unset":"0","4":"background-position:80px bottom"},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:36:49.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:32:20.000Z","id":5618,"page_layout_id":565,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:32:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:32:20.000Z","id":5619,"page_layout_id":565,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:32:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T13:32:20.000Z","id":5620,"page_layout_id":565,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-09-23T13:32:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T14:05:36.000Z","id":5621,"page_layout_id":566,"page_layout_root_id":64,"pvalue":{},"section_param_id":405,"theme_id":2,"unset":null,"updated_at":"2014-09-23T14:05:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T14:05:36.000Z","id":5622,"page_layout_id":566,"page_layout_root_id":64,"pvalue":{},"section_param_id":406,"theme_id":2,"unset":null,"updated_at":"2014-09-23T14:05:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T14:05:36.000Z","id":5623,"page_layout_id":566,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":407,"theme_id":2,"unset":null,"updated_at":"2014-09-23T14:05:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T14:05:36.000Z","id":5624,"page_layout_id":566,"page_layout_root_id":64,"pvalue":{},"section_param_id":408,"theme_id":2,"unset":null,"updated_at":"2014-09-23T14:05:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T14:05:36.000Z","id":5625,"page_layout_id":566,"page_layout_root_id":64,"pvalue":{},"section_param_id":409,"theme_id":2,"unset":null,"updated_at":"2014-09-23T14:05:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T14:05:36.000Z","id":5626,"page_layout_id":566,"page_layout_root_id":64,"pvalue":{},"section_param_id":529,"theme_id":2,"unset":null,"updated_at":"2014-09-23T14:05:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-23T14:05:36.000Z","id":5627,"page_layout_id":566,"page_layout_root_id":64,"pvalue":{},"section_param_id":585,"theme_id":2,"unset":null,"updated_at":"2014-09-23T14:05:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:54:42.000Z","id":7024,"page_layout_id":651,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:54:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:54:42.000Z","id":7025,"page_layout_id":651,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:54:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:54:42.000Z","id":7026,"page_layout_id":651,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:54:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:54:42.000Z","id":7027,"page_layout_id":651,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:54:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:54:43.000Z","id":7028,"page_layout_id":651,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:54:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:54:43.000Z","id":7029,"page_layout_id":651,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:54:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:54:43.000Z","id":7030,"page_layout_id":651,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:54:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:12.000Z","id":7031,"page_layout_id":652,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:12.000Z","id":7032,"page_layout_id":652,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:12.000Z","id":7033,"page_layout_id":652,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:12.000Z","id":7034,"page_layout_id":652,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:12.000Z","id":7035,"page_layout_id":652,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:12.000Z","id":7036,"page_layout_id":652,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:12.000Z","id":7037,"page_layout_id":652,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:21.000Z","id":7038,"page_layout_id":653,"page_layout_root_id":64,"pvalue":{},"section_param_id":6,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:22.000Z","id":7039,"page_layout_id":653,"page_layout_root_id":64,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:22.000Z","id":7040,"page_layout_id":653,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:22.000Z","id":7041,"page_layout_id":653,"page_layout_root_id":64,"pvalue":{},"section_param_id":9,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:22.000Z","id":7042,"page_layout_id":653,"page_layout_root_id":64,"pvalue":{},"section_param_id":10,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:22.000Z","id":7043,"page_layout_id":653,"page_layout_root_id":64,"pvalue":{},"section_param_id":480,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:22.000Z","id":7044,"page_layout_id":653,"page_layout_root_id":64,"pvalue":{},"section_param_id":536,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7045,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":27,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7046,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":28,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7047,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{"15hidden":"1"},"section_param_id":29,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7048,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":30,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7049,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":31,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7050,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":482,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7051,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":538,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7052,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":32,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7053,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":33,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7054,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":34,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7055,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":35,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7056,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":36,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7057,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":37,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7058,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":38,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7059,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":39,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7060,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":40,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7061,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":41,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7062,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":42,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:50.000Z","id":7063,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":421,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:51.000Z","id":7064,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":424,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:51.000Z","id":7065,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":427,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:51.000Z","id":7066,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":430,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:51.000Z","id":7067,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":433,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:51.000Z","id":7068,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":436,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:51.000Z","id":7069,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":439,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:51.000Z","id":7070,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":442,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:51.000Z","id":7071,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":445,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-20T03:55:51.000Z","id":7072,"page_layout_id":654,"page_layout_root_id":64,"pvalue":{},"section_param_id":478,"theme_id":2,"unset":null,"updated_at":"2014-10-20T03:55:51.000Z"}}],"page_layouts":[{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T01:13:22.000Z","data_filter":"","data_source":"","data_source_param":"","id":64,"is_enabled":true,"is_full_html":true,"lft":1,"parent_id":null,"rgt":74,"root_id":64,"section_context":"","section_id":1,"section_instance":1,"site_id":1,"slug":"root1","title":"root1","updated_at":"2014-03-09T01:13:22.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:07:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":65,"is_enabled":true,"is_full_html":false,"lft":2,"parent_id":64,"rgt":7,"root_id":64,"section_context":"","section_id":2,"section_instance":1,"site_id":1,"slug":"container1","title":"header","updated_at":"2014-03-09T02:07:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:08:39.000Z","data_filter":"","data_source":"","data_source_param":"","id":70,"is_enabled":true,"is_full_html":false,"lft":3,"parent_id":65,"rgt":6,"root_id":64,"section_context":"","section_id":2,"section_instance":5,"site_id":1,"slug":"container5","title":"container5","updated_at":"2014-03-09T02:08:39.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:09:00.000Z","data_filter":"","data_source":"","data_source_param":"","id":71,"is_enabled":true,"is_full_html":false,"lft":4,"parent_id":70,"rgt":5,"root_id":64,"section_context":"","section_id":97,"section_instance":1,"site_id":1,"slug":"logo1","title":"Logo1","updated_at":"2014-03-09T02:09:00.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:08:05.000Z","data_filter":"","data_source":"","data_source_param":"","id":68,"is_enabled":true,"is_full_html":false,"lft":8,"parent_id":64,"rgt":13,"root_id":64,"section_context":"","section_id":2,"section_instance":4,"site_id":1,"slug":"container4","title":"main menu","updated_at":"2014-10-20T03:51:21.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T11:49:22.000Z","data_filter":"","data_source":"","data_source_param":"","id":548,"is_enabled":true,"is_full_html":false,"lft":9,"parent_id":68,"rgt":12,"root_id":64,"section_context":"","section_id":2,"section_instance":8,"site_id":1,"slug":"","title":"container8","updated_at":"2014-09-22T11:49:22.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:08:32.000Z","data_filter":"","data_source":"","data_source_param":"","id":69,"is_enabled":true,"is_full_html":false,"lft":10,"parent_id":548,"rgt":11,"root_id":64,"section_context":"","section_id":3,"section_instance":1,"site_id":1,"slug":"hmenu1","title":"hmenu1","updated_at":"2014-03-09T02:08:32.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:07:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":66,"is_enabled":true,"is_full_html":false,"lft":14,"parent_id":64,"rgt":21,"root_id":64,"section_context":"home","section_id":2,"section_instance":2,"site_id":1,"slug":"container2","title":"slogan","updated_at":"2014-03-09T02:07:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T03:11:13.000Z","data_filter":"","data_source":"","data_source_param":"","id":72,"is_enabled":true,"is_full_html":false,"lft":15,"parent_id":66,"rgt":20,"root_id":64,"section_context":"","section_id":2,"section_instance":6,"site_id":1,"slug":"container6","title":"container6","updated_at":"2014-03-09T03:11:13.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-15T08:35:58.000Z","data_filter":"","data_source":"","data_source_param":"","id":78,"is_enabled":true,"is_full_html":false,"lft":16,"parent_id":72,"rgt":17,"root_id":64,"section_context":"","section_id":11,"section_instance":1,"site_id":1,"slug":"text1","title":"text1","updated_at":"2014-03-15T08:35:58.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-10T12:22:42.000Z","data_filter":"","data_source":"","data_source_param":"","id":77,"is_enabled":true,"is_full_html":false,"lft":18,"parent_id":72,"rgt":19,"root_id":64,"section_context":"","section_id":111,"section_instance":1,"site_id":1,"slug":"site-form1","title":"Site form1","updated_at":"2014-03-10T12:22:42.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T12:11:23.000Z","data_filter":"","data_source":"","data_source_param":"","id":549,"is_enabled":true,"is_full_html":false,"lft":22,"parent_id":64,"rgt":65,"root_id":64,"section_context":"","section_id":2,"section_instance":9,"site_id":1,"slug":"","title":"content container","updated_at":"2014-10-20T03:51:59.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-23T13:32:20.000Z","data_filter":"","data_source":"","data_source_param":"","id":565,"is_enabled":true,"is_full_html":false,"lft":23,"parent_id":549,"rgt":26,"root_id":64,"section_context":"list","section_id":2,"section_instance":18,"site_id":1,"slug":"","title":"common description","updated_at":"2014-10-20T03:52:28.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-18T13:23:00.000Z","data_filter":"","data_source":"","data_source_param":"","id":81,"is_enabled":true,"is_full_html":false,"lft":24,"parent_id":565,"rgt":25,"root_id":64,"section_context":"","section_id":109,"section_instance":1,"site_id":1,"slug":"taxon-description1","title":"Taxon description1","updated_at":"2014-03-18T13:23:00.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T12:11:59.000Z","data_filter":"","data_source":"taxon","data_source_param":"","id":550,"is_enabled":true,"is_full_html":false,"lft":27,"parent_id":549,"rgt":38,"root_id":64,"section_context":"list","section_id":2,"section_instance":10,"site_id":1,"slug":"","title":"feature container","updated_at":"2014-10-20T03:52:50.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T12:12:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":551,"is_enabled":true,"is_full_html":false,"lft":28,"parent_id":550,"rgt":37,"root_id":64,"section_context":"","section_id":2,"section_instance":11,"site_id":1,"slug":"","title":"container11","updated_at":"2014-09-22T12:12:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T12:32:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":555,"is_enabled":true,"is_full_html":false,"lft":29,"parent_id":551,"rgt":36,"root_id":64,"section_context":"","section_id":2,"section_instance":12,"site_id":1,"slug":"","title":"container12","updated_at":"2014-09-22T12:32:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-23T13:12:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":564,"is_enabled":true,"is_full_html":false,"lft":30,"parent_id":555,"rgt":31,"root_id":64,"section_context":"","section_id":119,"section_instance":1,"site_id":1,"slug":"","title":"Taxon icon1","updated_at":"2014-09-23T13:12:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T12:12:24.000Z","data_filter":"","data_source":"","data_source_param":"","id":552,"is_enabled":true,"is_full_html":false,"lft":32,"parent_id":555,"rgt":33,"root_id":64,"section_context":"","section_id":50,"section_instance":1,"site_id":1,"slug":"","title":"taxon name1","updated_at":"2014-09-22T12:12:24.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T12:14:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":554,"is_enabled":true,"is_full_html":false,"lft":34,"parent_id":555,"rgt":35,"root_id":64,"section_context":"","section_id":109,"section_instance":2,"site_id":1,"slug":"","title":"Taxon description2","updated_at":"2014-09-22T12:14:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T14:07:22.000Z","data_filter":"","data_source":"","data_source_param":"","id":556,"is_enabled":true,"is_full_html":false,"lft":39,"parent_id":549,"rgt":52,"root_id":64,"section_context":"home","section_id":2,"section_instance":13,"site_id":1,"slug":"","title":"index","updated_at":"2014-09-22T14:22:14.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T14:07:33.000Z","data_filter":"","data_source":"","data_source_param":"","id":557,"is_enabled":true,"is_full_html":false,"lft":40,"parent_id":556,"rgt":51,"root_id":64,"section_context":"","section_id":2,"section_instance":14,"site_id":1,"slug":"","title":"container14","updated_at":"2014-09-22T14:14:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T14:08:24.000Z","data_filter":"","data_source":"","data_source_param":"","id":559,"is_enabled":true,"is_full_html":false,"lft":41,"parent_id":557,"rgt":42,"root_id":64,"section_context":"","section_id":40,"section_instance":1,"site_id":1,"slug":"","title":"taxonomy name1","updated_at":"2014-09-22T14:08:24.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T14:08:14.000Z","data_filter":"","data_source":"taxon","data_source_param":"","id":558,"is_enabled":true,"is_full_html":false,"lft":43,"parent_id":557,"rgt":50,"root_id":64,"section_context":"","section_id":2,"section_instance":15,"site_id":1,"slug":"","title":"container15","updated_at":"2014-09-22T14:14:41.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-23T11:22:58.000Z","data_filter":"","data_source":"","data_source_param":"","id":563,"is_enabled":true,"is_full_html":false,"lft":44,"parent_id":558,"rgt":49,"root_id":64,"section_context":"","section_id":2,"section_instance":17,"site_id":1,"slug":"","title":"container17","updated_at":"2014-09-23T11:22:58.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T14:09:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":560,"is_enabled":true,"is_full_html":false,"lft":45,"parent_id":563,"rgt":46,"root_id":64,"section_context":"","section_id":109,"section_instance":3,"site_id":1,"slug":"","title":"Taxon description3","updated_at":"2014-09-22T14:09:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-23T14:05:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":566,"is_enabled":true,"is_full_html":false,"lft":47,"parent_id":563,"rgt":48,"root_id":64,"section_context":"","section_id":119,"section_instance":2,"site_id":1,"slug":"","title":"Taxon icon2","updated_at":"2014-09-23T14:05:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T14:22:52.000Z","data_filter":"","data_source":"","data_source_param":"","id":561,"is_enabled":true,"is_full_html":false,"lft":53,"parent_id":549,"rgt":56,"root_id":64,"section_context":"list","section_id":2,"section_instance":16,"site_id":1,"slug":"","title":"contact us","updated_at":"2014-10-20T03:53:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-22T14:23:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":562,"is_enabled":true,"is_full_html":false,"lft":54,"parent_id":561,"rgt":55,"root_id":64,"section_context":"","section_id":11,"section_instance":4,"site_id":1,"slug":"","title":"text4","updated_at":"2014-09-22T14:23:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-10-20T03:54:42.000Z","data_filter":"","data_source":"","data_source_param":"","id":651,"is_enabled":true,"is_full_html":false,"lft":57,"parent_id":549,"rgt":64,"root_id":64,"section_context":"","section_id":2,"section_instance":19,"site_id":1,"slug":"","title":"templates","updated_at":"2014-10-20T03:55:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-10-20T03:55:12.000Z","data_filter":"","data_source":"","data_source_param":"","id":652,"is_enabled":true,"is_full_html":false,"lft":58,"parent_id":651,"rgt":61,"root_id":64,"section_context":"","section_id":2,"section_instance":20,"site_id":1,"slug":"","title":"container20","updated_at":"2014-10-20T03:55:12.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-10-20T03:55:50.000Z","data_filter":"","data_source":"","data_source_param":"","id":654,"is_enabled":true,"is_full_html":false,"lft":59,"parent_id":652,"rgt":60,"root_id":64,"section_context":"","section_id":6,"section_instance":1,"site_id":1,"slug":"","title":"vmenu1","updated_at":"2014-10-20T03:55:50.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-10-20T03:55:21.000Z","data_filter":"","data_source":"","data_source_param":"","id":653,"is_enabled":true,"is_full_html":false,"lft":62,"parent_id":651,"rgt":63,"root_id":64,"section_context":"","section_id":2,"section_instance":21,"site_id":1,"slug":"","title":"container21","updated_at":"2014-10-20T03:55:21.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T03:13:27.000Z","data_filter":"","data_source":"","data_source_param":"","id":73,"is_enabled":true,"is_full_html":false,"lft":66,"parent_id":64,"rgt":69,"root_id":64,"section_context":"","section_id":2,"section_instance":7,"site_id":1,"slug":"container7","title":"container7","updated_at":"2014-03-09T03:13:27.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-17T12:57:54.000Z","data_filter":"","data_source":"","data_source_param":"","id":79,"is_enabled":true,"is_full_html":false,"lft":67,"parent_id":73,"rgt":68,"root_id":64,"section_context":"","section_id":11,"section_instance":2,"site_id":1,"slug":"text2","title":"text2","updated_at":"2014-03-17T12:57:54.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-09T02:07:12.000Z","data_filter":"","data_source":"","data_source_param":"","id":67,"is_enabled":true,"is_full_html":false,"lft":70,"parent_id":64,"rgt":73,"root_id":64,"section_context":"","section_id":2,"section_instance":3,"site_id":1,"slug":"container3","title":"footer","updated_at":"2014-06-22T00:18:00.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-03-18T13:48:55.000Z","data_filter":"","data_source":"","data_source_param":"","id":82,"is_enabled":true,"is_full_html":false,"lft":71,"parent_id":67,"rgt":72,"root_id":64,"section_context":"","section_id":11,"section_instance":3,"site_id":1,"slug":"text3","title":"text3","updated_at":"2014-03-18T13:48:55.000Z"}}],"template_files":[{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"dalianshops-logo.png","attachment_file_size":4503,"attachment_height":null,"attachment_updated_at":"2014-09-22T11:24:22.000Z","attachment_width":null,"created_at":"2014-09-22T11:24:22.000Z","id":44,"theme_id":2}},{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"feature-bg.png","attachment_file_size":1769,"attachment_height":null,"attachment_updated_at":"2014-09-23T13:26:31.000Z","attachment_width":null,"created_at":"2014-09-23T13:26:31.000Z","id":45,"theme_id":2}},{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"sanjiao.png","attachment_file_size":284,"attachment_height":null,"attachment_updated_at":"2014-09-23T13:30:55.000Z","attachment_width":null,"created_at":"2014-09-23T13:30:55.000Z","id":46,"theme_id":2}},{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"feature-bg.png","attachment_file_size":1769,"attachment_height":null,"attachment_updated_at":"2014-09-23T13:38:29.000Z","attachment_width":null,"created_at":"2014-09-23T13:38:29.000Z","id":47,"theme_id":2}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"feature-bg2.jpg","attachment_file_size":23127,"attachment_height":null,"attachment_updated_at":"2014-09-23T13:38:50.000Z","attachment_width":null,"created_at":"2014-09-23T13:38:50.000Z","id":48,"theme_id":2}},{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"dalianshop-logo2.png","attachment_file_size":3676,"attachment_height":null,"attachment_updated_at":"2014-09-23T15:32:25.000Z","attachment_width":null,"created_at":"2014-09-23T15:32:25.000Z","id":49,"theme_id":2}}],"template_releases":[{"template_release":{"created_at":"2014-09-20T02:23:24.000Z","id":22,"name":"just a test","theme_id":2,"updated_at":"2014-09-20T02:23:24.000Z"}}]} \ No newline at end of file diff --git a/spree_theme/db/themes/designs/1_2_1414758766/dalianshops-logo.png b/spree_theme/db/themes/designs/1_2_1414758766/dalianshops-logo.png deleted file mode 100644 index db6b01a8..00000000 Binary files a/spree_theme/db/themes/designs/1_2_1414758766/dalianshops-logo.png and /dev/null differ diff --git a/spree_theme/db/themes/designs/1_2_1414758766/feature-bg.png b/spree_theme/db/themes/designs/1_2_1414758766/feature-bg.png deleted file mode 100644 index 79ad0c1c..00000000 Binary files a/spree_theme/db/themes/designs/1_2_1414758766/feature-bg.png and /dev/null differ diff --git a/spree_theme/db/themes/designs/1_2_1414758766/feature-bg2.jpg b/spree_theme/db/themes/designs/1_2_1414758766/feature-bg2.jpg deleted file mode 100644 index 81ea4af0..00000000 Binary files a/spree_theme/db/themes/designs/1_2_1414758766/feature-bg2.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/1_2_1414758766/sanjiao.png b/spree_theme/db/themes/designs/1_2_1414758766/sanjiao.png deleted file mode 100644 index 030dd8e3..00000000 Binary files a/spree_theme/db/themes/designs/1_2_1414758766/sanjiao.png and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017.json b/spree_theme/db/themes/designs/2_12_1410527017.json deleted file mode 100644 index 05104ebe..00000000 --- a/spree_theme/db/themes/designs/2_12_1410527017.json +++ /dev/null @@ -1 +0,0 @@ -{"template":{"template_theme":{"assigned_resource_ids":{"479":{"spree/taxon":[101]},"483":{"spree/taxon":[82]},"476":{"spree/taxon":[69]},"489":{"spree/template_text":[9]},"492":{"spree/taxon":[0]},"496":{"spree/taxon":[0]},"498":{"spree/template_text":[8]},"500":{"spree/template_text":[10]},"490":{"spree/taxon":[0]},"508":{"spree/taxon":[76]},"494":{"spree/taxon":[87]},"513":{"spree/template_text":[11]},"478":{"spree/template_file":[29]}},"created_at":"2014-08-26T03:00:40.000Z","id":12,"page_layout_root_id":470,"release_id":20,"site_id":2,"slug":"","title":"\u5927\u8fde\u77e5\u8bc6\u4ea7\u6743\u4ee3\u7406\u516c\u53f8","updated_at":"2014-09-06T04:06:57.000Z"}},"param_values":[{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4266,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{"21":"width:960px","21unset":"1","20":"min-width:960px","20hidden":"1"},"section_param_id":226,"theme_id":12,"unset":null,"updated_at":"2014-08-27T05:32:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4267,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":227,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4268,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{"85":"clear:both"},"section_param_id":228,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4269,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":229,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4270,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{"49unset":"1","49":"color:aqua","52unset":"0","52":"letter-spacing:1px","16unset":"0","16":"line-height:110%","55unset":"1","55":"text-indent:200%"},"section_param_id":230,"theme_id":12,"unset":null,"updated_at":"2014-09-06T08:23:25.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4271,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":231,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4272,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":232,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4273,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":233,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4274,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":234,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4275,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":235,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4276,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":236,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4277,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":237,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4278,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":238,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4279,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":239,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4280,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":240,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4281,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":241,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4282,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":242,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4283,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":243,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4284,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":317,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4285,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":318,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4286,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":319,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4287,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":320,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4288,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":321,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4289,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":322,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4290,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":244,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4291,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":245,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4292,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":246,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4293,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{"49unset":"0","49":"color:#333333"},"section_param_id":247,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:41:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4294,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":248,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4295,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":249,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4296,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":250,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4297,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":251,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4298,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":252,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4299,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":253,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4300,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":254,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4301,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":255,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:00:40.000Z","id":4302,"page_layout_id":470,"page_layout_root_id":470,"pvalue":{},"section_param_id":256,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:00:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:10.000Z","id":4303,"page_layout_id":471,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:10.000Z","id":4304,"page_layout_id":471,"page_layout_root_id":470,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-05T13:51:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:10.000Z","id":4305,"page_layout_id":471,"page_layout_root_id":470,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid none none none","8unset":"0","8":"border-width:4px 0px 0px 0px","6unset":"0","6":"border-color:#C21F1F transparent transparent transparent"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-09-11T11:27:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:10.000Z","id":4306,"page_layout_id":471,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:10.000Z","id":4307,"page_layout_id":471,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:17.000Z","id":4308,"page_layout_id":472,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:17.000Z","id":4309,"page_layout_id":472,"page_layout_root_id":470,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-08-27T05:33:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:17.000Z","id":4310,"page_layout_id":472,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:17.000Z","id":4311,"page_layout_id":472,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:17.000Z","id":4312,"page_layout_id":472,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:21.000Z","id":4313,"page_layout_id":473,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:21.000Z","id":4314,"page_layout_id":473,"page_layout_root_id":470,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-08-27T05:34:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:21.000Z","id":4315,"page_layout_id":473,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:21.000Z","id":4316,"page_layout_id":473,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:21.000Z","id":4317,"page_layout_id":473,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:31.000Z","id":4318,"page_layout_id":474,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:31.000Z","id":4319,"page_layout_id":474,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-08-27T03:38:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:31.000Z","id":4320,"page_layout_id":474,"page_layout_root_id":470,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid none none none","8unset":"0","8":"border-width:5px 0px 0px 0px","6unset":"0","6":"border-color:#D8D8D8 transparent transparent transparent"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-27T05:31:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:31.000Z","id":4321,"page_layout_id":474,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#F7F7F8"},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-27T05:25:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:01:31.000Z","id":4322,"page_layout_id":474,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:01:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:02:38.000Z","id":4323,"page_layout_id":475,"page_layout_root_id":470,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-28T03:53:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:02:38.000Z","id":4324,"page_layout_id":475,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"1","21":"width:960px"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-05T13:53:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:02:38.000Z","id":4325,"page_layout_id":475,"page_layout_root_id":470,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:10px auto auto auto"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-09-11T10:42:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:02:38.000Z","id":4326,"page_layout_id":475,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:02:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:02:38.000Z","id":4327,"page_layout_id":475,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:02:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4328,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":11,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4329,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"101unset":"1","101":"float:left"},"section_param_id":12,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:52:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4330,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":13,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4331,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"3unset":"1","3":"background-image:none"},"section_param_id":14,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:28:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4332,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":15,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4333,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"32unset":"0","32":"padding:5px 15px 5px 15px","7unset":"0","7":"border-style:solid none none none","31unset":"0","31":"margin:auto 2px auto auto","8unset":"0","8":"border-width:3px 1px 0px 0px","6unset":"0","6":"border-color:#D8D8D8 transparent transparent transparent"},"section_param_id":16,"theme_id":12,"unset":null,"updated_at":"2014-09-11T11:30:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4334,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"49unset":"0","49":"color:#4C4C4C","54unset":"0","54":"text-decoration:none","24unset":"0","24":"font-size:0.8em"},"section_param_id":17,"theme_id":12,"unset":null,"updated_at":"2014-09-06T03:52:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4335,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"49unset":"0","49":"color:#C21F1F","54unset":"1","54":"text-decoration:underline"},"section_param_id":18,"theme_id":12,"unset":null,"updated_at":"2014-09-11T11:26:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4336,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"49unset":"0","49":"color:#C21F1F"},"section_param_id":19,"theme_id":12,"unset":null,"updated_at":"2014-09-11T11:28:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4337,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":20,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4338,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":21,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4339,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"3unset":"0","3":"background-image:10px-bg.jpg","5unset":"0","5":"background-repeat:no-repeat","4unset":"0","4":"background-position:right center"},"section_param_id":22,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:29:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4340,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"2unset":"1","2":"background-color:white"},"section_param_id":23,"theme_id":12,"unset":null,"updated_at":"2014-08-30T01:49:49.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4341,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":24,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4342,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":25,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4343,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":26,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4344,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"31unset":"1","31":"margin:auto auto auto auto"},"section_param_id":420,"theme_id":12,"unset":null,"updated_at":"2014-08-27T03:27:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4345,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":423,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4346,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":426,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4347,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":429,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4348,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":432,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4349,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":435,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4350,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":438,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:26.000Z","id":4351,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":441,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:27.000Z","id":4352,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":444,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:27.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:35.000Z","id":4353,"page_layout_id":477,"page_layout_root_id":470,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-09-05T13:54:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:35.000Z","id":4354,"page_layout_id":477,"page_layout_root_id":470,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-05T13:54:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:35.000Z","id":4355,"page_layout_id":477,"page_layout_root_id":470,"pvalue":{"15hidden":"1","15unset":"1","15":"height:100px"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-28T02:56:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:35.000Z","id":4356,"page_layout_id":477,"page_layout_root_id":470,"pvalue":{"2unset":"1","2":"background-color:#CC0000"},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-30T01:50:07.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:03:35.000Z","id":4357,"page_layout_id":477,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:03:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:00.000Z","id":4358,"page_layout_id":478,"page_layout_root_id":470,"pvalue":{},"section_param_id":323,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:00.000Z","id":4359,"page_layout_id":478,"page_layout_root_id":470,"pvalue":{},"section_param_id":324,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:00.000Z","id":4360,"page_layout_id":478,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":325,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:00.000Z","id":4361,"page_layout_id":478,"page_layout_root_id":470,"pvalue":{},"section_param_id":326,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:00.000Z","id":4362,"page_layout_id":478,"page_layout_root_id":470,"pvalue":{},"section_param_id":327,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:11.000Z","id":4363,"page_layout_id":479,"page_layout_root_id":470,"pvalue":{},"section_param_id":388,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:11.000Z","id":4364,"page_layout_id":479,"page_layout_root_id":470,"pvalue":{"21":"width:960px","21unset":"0","101unset":"0","101":"float:none"},"section_param_id":389,"theme_id":12,"unset":null,"updated_at":"2014-08-28T02:56:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:11.000Z","id":4365,"page_layout_id":479,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":390,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:11.000Z","id":4366,"page_layout_id":479,"page_layout_root_id":470,"pvalue":{},"section_param_id":391,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:11.000Z","id":4367,"page_layout_id":479,"page_layout_root_id":470,"pvalue":{},"section_param_id":392,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:11.000Z","id":4368,"page_layout_id":479,"page_layout_root_id":470,"pvalue":{"78":"width:600px","78unset":"0","79":"height:200px","79unset":"0"},"section_param_id":393,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:24.000Z","id":4369,"page_layout_id":480,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:24.000Z","id":4370,"page_layout_id":480,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:24.000Z","id":4371,"page_layout_id":480,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:24.000Z","id":4372,"page_layout_id":480,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:24.000Z","id":4373,"page_layout_id":480,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:37.000Z","id":4374,"page_layout_id":481,"page_layout_root_id":470,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:37:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:37.000Z","id":4375,"page_layout_id":481,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:41:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:37.000Z","id":4376,"page_layout_id":481,"page_layout_root_id":470,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto auto","32unset":"0","32":"padding:10px 0px 0px 0px"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-28T06:33:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:37.000Z","id":4377,"page_layout_id":481,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:04:37.000Z","id":4378,"page_layout_id":481,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:04:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:06:13.000Z","id":4384,"page_layout_id":483,"page_layout_root_id":470,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-27T02:24:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:06:13.000Z","id":4385,"page_layout_id":483,"page_layout_root_id":470,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:968px"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:25:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:06:13.000Z","id":4386,"page_layout_id":483,"page_layout_root_id":470,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:8px auto auto auto"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:01:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:06:13.000Z","id":4387,"page_layout_id":483,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:06:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:06:13.000Z","id":4388,"page_layout_id":483,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:06:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:06:24.000Z","id":4389,"page_layout_id":484,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:06:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:06:24.000Z","id":4390,"page_layout_id":484,"page_layout_root_id":470,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:21:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:06:24.000Z","id":4391,"page_layout_id":484,"page_layout_root_id":470,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:35px 0px 0px 0px","31unset":"0","31":"margin:8px auto auto auto"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:01:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:06:24.000Z","id":4392,"page_layout_id":484,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#EEEEEE","3unset":"0","3":"background-image:company-desc-head.jpg","5unset":"0","5":"background-repeat:no-repeat"},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:40:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:06:24.000Z","id":4393,"page_layout_id":484,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:06:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:14:54.000Z","id":4394,"page_layout_id":485,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:14:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:14:54.000Z","id":4395,"page_layout_id":485,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:242px"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:25:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:14:54.000Z","id":4396,"page_layout_id":485,"page_layout_root_id":470,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:0px 4px auto 4px"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:00:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:14:54.000Z","id":4397,"page_layout_id":485,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:14:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:14:54.000Z","id":4398,"page_layout_id":485,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:14:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:21:37.000Z","id":4404,"page_layout_id":487,"page_layout_root_id":470,"pvalue":{},"section_param_id":405,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:21:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:21:37.000Z","id":4405,"page_layout_id":487,"page_layout_root_id":470,"pvalue":{"15unset":"1","15":"height:auto","21unset":"0","21":"width:234px"},"section_param_id":406,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:37:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:21:37.000Z","id":4406,"page_layout_id":487,"page_layout_root_id":470,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 0px 0px","7unset":"0","7":"border-style:solid solid none solid","8unset":"0","8":"border-width:1px 1px 0px 1px","6unset":"0","6":"border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC"},"section_param_id":407,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:39:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:21:37.000Z","id":4407,"page_layout_id":487,"page_layout_root_id":470,"pvalue":{},"section_param_id":408,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:21:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:21:37.000Z","id":4408,"page_layout_id":487,"page_layout_root_id":470,"pvalue":{},"section_param_id":409,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:21:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:21:55.000Z","id":4409,"page_layout_id":488,"page_layout_root_id":470,"pvalue":{},"section_param_id":362,"theme_id":12,"unset":null,"updated_at":"2014-08-26T03:21:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:21:55.000Z","id":4410,"page_layout_id":488,"page_layout_root_id":470,"pvalue":{"21unset":"0","21":"width:234px"},"section_param_id":363,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:07:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:21:55.000Z","id":4411,"page_layout_id":488,"page_layout_root_id":470,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:5px 5px 5px 10px"},"section_param_id":364,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:29:49.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:21:55.000Z","id":4412,"page_layout_id":488,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#EEEEEE"},"section_param_id":365,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:26:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-26T03:21:55.000Z","id":4413,"page_layout_id":488,"page_layout_root_id":470,"pvalue":{"24unset":"0","24":"font-size:0.8em","49unset":"0","49":"color:#666666","55unset":"0","55":"text-indent:2.2em"},"section_param_id":366,"theme_id":12,"unset":null,"updated_at":"2014-09-06T14:30:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T03:36:04.000Z","id":4414,"page_layout_id":489,"page_layout_root_id":470,"pvalue":{},"section_param_id":50,"theme_id":12,"unset":null,"updated_at":"2014-08-27T03:36:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T03:36:04.000Z","id":4415,"page_layout_id":489,"page_layout_root_id":470,"pvalue":{"21unset":"0","21":"width:960px","101unset":"0","101":"float:none"},"section_param_id":51,"theme_id":12,"unset":null,"updated_at":"2014-08-27T05:33:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T03:36:04.000Z","id":4416,"page_layout_id":489,"page_layout_root_id":470,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto auto"},"section_param_id":52,"theme_id":12,"unset":null,"updated_at":"2014-08-27T05:33:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T03:36:04.000Z","id":4417,"page_layout_id":489,"page_layout_root_id":470,"pvalue":{},"section_param_id":53,"theme_id":12,"unset":null,"updated_at":"2014-08-27T03:36:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T03:36:04.000Z","id":4418,"page_layout_id":489,"page_layout_root_id":470,"pvalue":{"53unset":"0","53":"text-align:right","49unset":"0","49":"color:#8D9095","24unset":"0","24":"font-size:80%"},"section_param_id":54,"theme_id":12,"unset":null,"updated_at":"2014-08-31T04:14:07.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:18:25.000Z","id":4419,"page_layout_id":490,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:18:25.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:18:25.000Z","id":4420,"page_layout_id":490,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:240px"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-10T12:05:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:18:25.000Z","id":4421,"page_layout_id":490,"page_layout_root_id":470,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 10px 10px 0px"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:04:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:18:25.000Z","id":4422,"page_layout_id":490,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:18:25.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:18:25.000Z","id":4423,"page_layout_id":490,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:18:25.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:18:33.000Z","id":4424,"page_layout_id":491,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:18:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:18:33.000Z","id":4425,"page_layout_id":491,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:720px"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:43:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:18:33.000Z","id":4426,"page_layout_id":491,"page_layout_root_id":470,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:5px 25px 5px 25px","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:47:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:18:33.000Z","id":4427,"page_layout_id":491,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#EEEEEE"},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:43:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:18:33.000Z","id":4428,"page_layout_id":491,"page_layout_root_id":470,"pvalue":{"55unset":"0","55":"text-indent:2em"},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:47:44.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:34.000Z","id":4429,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":27,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:34.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:34.000Z","id":4430,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":28,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:08:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:34.000Z","id":4431,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:15px auto 10px auto"},"section_param_id":29,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:21:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:34.000Z","id":4432,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":30,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:34.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:34.000Z","id":4433,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":31,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:34.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:34.000Z","id":4434,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{"7unset":"0","7":"border-style:none none solid solid","8unset":"0","8":"border-width:0px 0px 1px 5px","32unset":"0","32":"padding:10px 0px 12px 0px","6unset":"0","6":"border-color:transparent transparent #D8D8D8 transparent","21unset":"0","21":"width:100%"},"section_param_id":32,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:59:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:34.000Z","id":4435,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{"54unset":"0","54":"text-decoration:none","53unset":"0","53":"text-align:center","49unset":"0","49":"color:#333333"},"section_param_id":33,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:15:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:34.000Z","id":4436,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{"49unset":"0","49":"color:#AF1233"},"section_param_id":34,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:19:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:34.000Z","id":4437,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":35,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:34.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4438,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":36,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4439,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":37,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4440,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":38,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4441,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:white"},"section_param_id":39,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:19:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4442,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":40,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4443,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":41,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4444,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":42,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4445,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":421,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4446,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":424,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4447,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":427,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4448,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":430,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4449,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":433,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4450,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":436,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4451,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":439,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4452,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":442,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:24:35.000Z","id":4453,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":445,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:24:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:26:26.000Z","id":4454,"page_layout_id":493,"page_layout_root_id":470,"pvalue":{},"section_param_id":362,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:26:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:26:26.000Z","id":4455,"page_layout_id":493,"page_layout_root_id":470,"pvalue":{},"section_param_id":363,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:26:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:26:26.000Z","id":4456,"page_layout_id":493,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":364,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:26:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:26:26.000Z","id":4457,"page_layout_id":493,"page_layout_root_id":470,"pvalue":{},"section_param_id":365,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:26:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:26:26.000Z","id":4458,"page_layout_id":493,"page_layout_root_id":470,"pvalue":{},"section_param_id":366,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:26:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:27:53.000Z","id":4459,"page_layout_id":494,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:27:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:27:53.000Z","id":4460,"page_layout_id":494,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:25:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:27:53.000Z","id":4461,"page_layout_id":494,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:27:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:27:54.000Z","id":4462,"page_layout_id":494,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#EEEEEE"},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:32:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:27:54.000Z","id":4463,"page_layout_id":494,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:27:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4469,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":27,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4470,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":28,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:27:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4471,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:15px auto 10px auto"},"section_param_id":29,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:28:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4472,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":30,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4473,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":31,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4474,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{"32unset":"0","32":"padding:18px 0px 12px 0px","21unset":"0","21":"width:100%","7unset":"0","7":"border-style:none none solid solid","6unset":"0","6":"border-color:transparent transparent #D8D8D8 transparent","8unset":"0","8":"border-width:0px 0px 1px 5px"},"section_param_id":32,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:11:25.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4475,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{"49unset":"0","49":"color:#333333","53unset":"0","53":"text-align:center","54unset":"0","54":"text-decoration:none"},"section_param_id":33,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:33:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4476,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{"49unset":"0","49":"color:#AF1233"},"section_param_id":34,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:34:27.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4477,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":35,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4478,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":36,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4479,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":37,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4480,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":38,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4481,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:white"},"section_param_id":39,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:33:49.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4482,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":40,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4483,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":41,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4484,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":42,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4485,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":421,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4486,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":424,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4487,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":427,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4488,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":430,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4489,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":433,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4490,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":436,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4491,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":439,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4492,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":442,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:19.000Z","id":4493,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":445,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:48.000Z","id":4494,"page_layout_id":497,"page_layout_root_id":470,"pvalue":{},"section_param_id":362,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:48.000Z","id":4495,"page_layout_id":497,"page_layout_root_id":470,"pvalue":{},"section_param_id":363,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:48.000Z","id":4496,"page_layout_id":497,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":364,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:48.000Z","id":4497,"page_layout_id":497,"page_layout_root_id":470,"pvalue":{},"section_param_id":365,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-27T06:28:48.000Z","id":4498,"page_layout_id":497,"page_layout_root_id":470,"pvalue":{},"section_param_id":366,"theme_id":12,"unset":null,"updated_at":"2014-08-27T06:28:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T02:57:41.000Z","id":4499,"page_layout_id":498,"page_layout_root_id":470,"pvalue":{},"section_param_id":50,"theme_id":12,"unset":null,"updated_at":"2014-08-28T02:57:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T02:57:41.000Z","id":4500,"page_layout_id":498,"page_layout_root_id":470,"pvalue":{},"section_param_id":51,"theme_id":12,"unset":null,"updated_at":"2014-08-28T02:57:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T02:57:41.000Z","id":4501,"page_layout_id":498,"page_layout_root_id":470,"pvalue":{"15hidden":"1","7unset":"1","7":"border-style:solid solid none solid","8unset":"1","8":"border-width:1px 0px 0px 0px","6unset":"1","6":"border-color:#D8D8D8 #D8D8D8 transparent #D8D8D8","32unset":"0","32":"padding:10px 180px 0px 30px"},"section_param_id":52,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:41:34.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T02:57:41.000Z","id":4502,"page_layout_id":498,"page_layout_root_id":470,"pvalue":{"3unset":"0","3":"background-image:company-desc-bg5.jpg","5unset":"0","5":"background-repeat:no-repeat","4unset":"0","4":"background-position:right bottom"},"section_param_id":53,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:44:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T02:57:41.000Z","id":4503,"page_layout_id":498,"page_layout_root_id":470,"pvalue":{"53unset":"1","53":"text-align:left","49unset":"0","49":"color:#666666","55unset":"0","55":"text-indent:2em","24unset":"0","24":"font-size:90%"},"section_param_id":54,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:57:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T03:12:50.000Z","id":4504,"page_layout_id":499,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-28T03:12:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T03:12:50.000Z","id":4505,"page_layout_id":499,"page_layout_root_id":470,"pvalue":{"101":"float:right","101unset":"0","15":"height:100px","15unset":"1","21unset":"1","21":"width:960px"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-05T13:53:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T03:12:50.000Z","id":4506,"page_layout_id":499,"page_layout_root_id":470,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:20px 0px 0px 0px"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-09-11T11:44:27.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T03:12:50.000Z","id":4507,"page_layout_id":499,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-28T03:12:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T03:12:50.000Z","id":4508,"page_layout_id":499,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-28T03:12:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T03:52:00.000Z","id":4509,"page_layout_id":500,"page_layout_root_id":470,"pvalue":{},"section_param_id":50,"theme_id":12,"unset":null,"updated_at":"2014-08-28T03:52:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T03:52:00.000Z","id":4510,"page_layout_id":500,"page_layout_root_id":470,"pvalue":{"101unset":"0","101":"float:right","15unset":"0","15":"height:80px","21unset":"0","21":"width:380px"},"section_param_id":51,"theme_id":12,"unset":null,"updated_at":"2014-09-11T11:43:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T03:52:00.000Z","id":4511,"page_layout_id":500,"page_layout_root_id":470,"pvalue":{"15hidden":"1","15unset":"0","15":"height:45px","31unset":"0","31":"margin:15px auto auto auto","32unset":"0","32":"padding:20px 0px 0px 0px"},"section_param_id":52,"theme_id":12,"unset":null,"updated_at":"2014-09-10T12:01:27.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T03:52:00.000Z","id":4512,"page_layout_id":500,"page_layout_root_id":470,"pvalue":{"3unset":"0","3":"background-image:social-media4.jpg","5unset":"0","5":"background-repeat:no-repeat"},"section_param_id":53,"theme_id":12,"unset":null,"updated_at":"2014-09-11T11:42:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T03:52:00.000Z","id":4513,"page_layout_id":500,"page_layout_root_id":470,"pvalue":{"24unset":"0","24":"font-size:80%"},"section_param_id":54,"theme_id":12,"unset":null,"updated_at":"2014-09-10T11:58:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T06:15:39.000Z","id":4514,"page_layout_id":501,"page_layout_root_id":470,"pvalue":{},"section_param_id":135,"theme_id":12,"unset":null,"updated_at":"2014-08-28T06:15:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T06:15:39.000Z","id":4515,"page_layout_id":501,"page_layout_root_id":470,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":136,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:04:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T06:15:39.000Z","id":4516,"page_layout_id":501,"page_layout_root_id":470,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto auto auto","32unset":"0","32":"padding:15px 10px 15px 10px"},"section_param_id":137,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:13:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T06:15:39.000Z","id":4517,"page_layout_id":501,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#AF1233"},"section_param_id":138,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:04:49.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T06:15:39.000Z","id":4518,"page_layout_id":501,"page_layout_root_id":470,"pvalue":{"24unset":"0","24":"font-size:120%","27unset":"0","27":"font-weight:bolder","49unset":"0","49":"color:white","53unset":"0","53":"text-align:center"},"section_param_id":139,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:07:18.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:02:09.000Z","id":4519,"page_layout_id":502,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:02:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:02:09.000Z","id":4520,"page_layout_id":502,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:40:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:02:09.000Z","id":4521,"page_layout_id":502,"page_layout_root_id":470,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 40px auto"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:37:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:02:09.000Z","id":4522,"page_layout_id":502,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:02:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:02:09.000Z","id":4523,"page_layout_id":502,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:02:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:02:57.000Z","id":4524,"page_layout_id":503,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:02:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:02:57.000Z","id":4525,"page_layout_id":503,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-08-29T12:45:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:02:58.000Z","id":4526,"page_layout_id":503,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:02:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:02:58.000Z","id":4527,"page_layout_id":503,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:02:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:02:58.000Z","id":4528,"page_layout_id":503,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:02:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:03:52.000Z","id":4529,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{},"section_param_id":447,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:03:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:03:52.000Z","id":4530,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{},"section_param_id":448,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:03:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:03:52.000Z","id":4531,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":449,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:03:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:03:52.000Z","id":4532,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{},"section_param_id":450,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:03:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:03:52.000Z","id":4533,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{"55unset":"0","55":"text-indent:0em"},"section_param_id":451,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:14:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:03:52.000Z","id":4534,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{},"section_param_id":452,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:03:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:03:52.000Z","id":4535,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{},"section_param_id":453,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:03:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:03:52.000Z","id":4536,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{},"section_param_id":454,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:03:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:03:52.000Z","id":4537,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{},"section_param_id":455,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:03:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:03:52.000Z","id":4538,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{},"section_param_id":456,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:03:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:04:02.000Z","id":4539,"page_layout_id":505,"page_layout_root_id":470,"pvalue":{},"section_param_id":457,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:04:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:04:02.000Z","id":4540,"page_layout_id":505,"page_layout_root_id":470,"pvalue":{"101unset":"0","101":"float:right"},"section_param_id":458,"theme_id":12,"unset":null,"updated_at":"2014-08-29T12:40:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:04:02.000Z","id":4541,"page_layout_id":505,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":459,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:04:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:04:02.000Z","id":4542,"page_layout_id":505,"page_layout_root_id":470,"pvalue":{},"section_param_id":460,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:04:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:04:02.000Z","id":4543,"page_layout_id":505,"page_layout_root_id":470,"pvalue":{"24unset":"0","24":"font-size:80%","55unset":"0","55":"text-indent:0em"},"section_param_id":461,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:14:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:04:30.000Z","id":4554,"page_layout_id":507,"page_layout_root_id":470,"pvalue":{},"section_param_id":467,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:04:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:04:30.000Z","id":4555,"page_layout_id":507,"page_layout_root_id":470,"pvalue":{},"section_param_id":468,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:04:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:04:30.000Z","id":4556,"page_layout_id":507,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":469,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:04:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:04:30.000Z","id":4557,"page_layout_id":507,"page_layout_root_id":470,"pvalue":{},"section_param_id":470,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:04:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-28T14:04:30.000Z","id":4558,"page_layout_id":507,"page_layout_root_id":470,"pvalue":{},"section_param_id":471,"theme_id":12,"unset":null,"updated_at":"2014-08-28T14:04:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-29T12:34:14.000Z","id":4559,"page_layout_id":508,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-29T12:34:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-29T12:34:14.000Z","id":4560,"page_layout_id":508,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-10T12:05:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-29T12:34:14.000Z","id":4561,"page_layout_id":508,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-29T12:34:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-29T12:34:14.000Z","id":4562,"page_layout_id":508,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#EEEEEE"},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:09:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-29T12:34:14.000Z","id":4563,"page_layout_id":508,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-29T12:34:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-29T12:38:21.000Z","id":4564,"page_layout_id":509,"page_layout_root_id":470,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-29T12:40:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-29T12:38:21.000Z","id":4565,"page_layout_id":509,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:39:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-29T12:38:21.000Z","id":4566,"page_layout_id":509,"page_layout_root_id":470,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #F7F7F8 transparent","32unset":"0","32":"padding:15px 0px 8px 0px"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:36:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-29T12:38:21.000Z","id":4567,"page_layout_id":509,"page_layout_root_id":470,"pvalue":{},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-08-29T12:38:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-29T12:38:21.000Z","id":4568,"page_layout_id":509,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-29T12:38:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:06:58.000Z","id":4569,"page_layout_id":510,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:06:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:06:58.000Z","id":4570,"page_layout_id":510,"page_layout_root_id":470,"pvalue":{"101":"float:none","101unset":"0","15":"height:150px","15unset":"0","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:17:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:06:58.000Z","id":4571,"page_layout_id":510,"page_layout_root_id":470,"pvalue":{"15hidden":"1","15unset":"0","15":"height:150px"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:17:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:06:58.000Z","id":4572,"page_layout_id":510,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#3D2315","3unset":"0","3":"background-image:banner4.jpg"},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:17:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:06:58.000Z","id":4573,"page_layout_id":510,"page_layout_root_id":470,"pvalue":{"49unset":"0","49":"color:white","53unset":"1","53":"text-align:center"},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-08-31T05:32:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:46:06.000Z","id":4579,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{},"section_param_id":447,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:46:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:46:06.000Z","id":4580,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{"101unset":"0","101":"float:none"},"section_param_id":448,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:47:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:46:06.000Z","id":4581,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":449,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:46:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:46:06.000Z","id":4582,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{},"section_param_id":450,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:46:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:46:06.000Z","id":4583,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{"53unset":"0","53":"text-align:center"},"section_param_id":451,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:48:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:46:06.000Z","id":4584,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{},"section_param_id":452,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:46:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:46:06.000Z","id":4585,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{},"section_param_id":453,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:46:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:46:06.000Z","id":4586,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{},"section_param_id":454,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:46:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:46:06.000Z","id":4587,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{},"section_param_id":455,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:46:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:46:06.000Z","id":4588,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{},"section_param_id":456,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:46:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:47:09.000Z","id":4589,"page_layout_id":513,"page_layout_root_id":470,"pvalue":{},"section_param_id":50,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:47:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:47:09.000Z","id":4590,"page_layout_id":513,"page_layout_root_id":470,"pvalue":{"15unset":"0","15":"height:100px","21unset":"0","21":"width:960px"},"section_param_id":51,"theme_id":12,"unset":null,"updated_at":"2014-08-31T05:32:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:47:09.000Z","id":4591,"page_layout_id":513,"page_layout_root_id":470,"pvalue":{"15hidden":"1","15unset":"0","15":"height:100px"},"section_param_id":52,"theme_id":12,"unset":null,"updated_at":"2014-08-31T05:30:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:47:09.000Z","id":4592,"page_layout_id":513,"page_layout_root_id":470,"pvalue":{},"section_param_id":53,"theme_id":12,"unset":null,"updated_at":"2014-08-30T02:47:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T02:47:09.000Z","id":4593,"page_layout_id":513,"page_layout_root_id":470,"pvalue":{"53unset":"0","53":"text-align:center"},"section_param_id":54,"theme_id":12,"unset":null,"updated_at":"2014-08-31T05:32:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T03:01:47.000Z","id":4594,"page_layout_id":514,"page_layout_root_id":470,"pvalue":{},"section_param_id":135,"theme_id":12,"unset":null,"updated_at":"2014-08-30T03:01:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T03:01:47.000Z","id":4595,"page_layout_id":514,"page_layout_root_id":470,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":136,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:25:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T03:01:47.000Z","id":4596,"page_layout_id":514,"page_layout_root_id":470,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto auto","32unset":"0","32":"padding:15px 10px 15px 10px"},"section_param_id":137,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:26:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T03:01:47.000Z","id":4597,"page_layout_id":514,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#AF1233"},"section_param_id":138,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:26:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-30T03:01:47.000Z","id":4598,"page_layout_id":514,"page_layout_root_id":470,"pvalue":{"24unset":"0","24":"font-size:120%","27unset":"0","27":"font-weight:bold","49unset":"0","49":"color:white","53unset":"0","53":"text-align:center"},"section_param_id":139,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:27:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:57.000Z","id":4603,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{"6unset":"0","6":"border-color:#C21F1F gray transparent transparent"},"section_param_id":477,"theme_id":12,"unset":null,"updated_at":"2014-09-11T11:26:34.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4610,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{"7unset":"0","7":"border-style:none none none solid","8unset":"0","8":"border-width:0px 0px 1px 5px","6unset":"0","6":"border-color:transparent transparent #D8D8D8 #AF1233"},"section_param_id":478,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:22:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4611,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{"7unset":"0","7":"border-style:none none solid solid","8unset":"0","8":"border-width:0px 0px 1px 5px","6unset":"0","6":"border-color:transparent transparent #D8D8D8 #AF1233"},"section_param_id":478,"theme_id":12,"unset":null,"updated_at":"2014-09-10T13:32:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4729,"page_layout_id":471,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4730,"page_layout_id":472,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4731,"page_layout_id":473,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4732,"page_layout_id":474,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4733,"page_layout_id":475,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4734,"page_layout_id":477,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4735,"page_layout_id":480,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4736,"page_layout_id":481,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4737,"page_layout_id":483,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4738,"page_layout_id":484,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4739,"page_layout_id":485,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4740,"page_layout_id":490,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4741,"page_layout_id":491,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4742,"page_layout_id":494,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4743,"page_layout_id":499,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4744,"page_layout_id":502,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4745,"page_layout_id":503,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4746,"page_layout_id":508,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4747,"page_layout_id":509,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4748,"page_layout_id":510,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4753,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":481,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4760,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":482,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4761,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":482,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4772,"page_layout_id":489,"page_layout_root_id":470,"pvalue":{},"section_param_id":484,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4773,"page_layout_id":498,"page_layout_root_id":470,"pvalue":{},"section_param_id":484,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4774,"page_layout_id":500,"page_layout_root_id":470,"pvalue":{},"section_param_id":484,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4775,"page_layout_id":513,"page_layout_root_id":470,"pvalue":{},"section_param_id":484,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4818,"page_layout_id":501,"page_layout_root_id":470,"pvalue":{},"section_param_id":501,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4819,"page_layout_id":514,"page_layout_root_id":470,"pvalue":{},"section_param_id":501,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4874,"page_layout_id":478,"page_layout_root_id":470,"pvalue":{},"section_param_id":520,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4886,"page_layout_id":488,"page_layout_root_id":470,"pvalue":{},"section_param_id":525,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4887,"page_layout_id":493,"page_layout_root_id":470,"pvalue":{},"section_param_id":525,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4891,"page_layout_id":479,"page_layout_root_id":470,"pvalue":{},"section_param_id":527,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4894,"page_layout_id":487,"page_layout_root_id":470,"pvalue":{},"section_param_id":529,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4897,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{},"section_param_id":531,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4898,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{},"section_param_id":531,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4899,"page_layout_id":505,"page_layout_root_id":470,"pvalue":{},"section_param_id":532,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4900,"page_layout_id":507,"page_layout_root_id":470,"pvalue":{},"section_param_id":534,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5015,"page_layout_id":471,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5016,"page_layout_id":472,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5017,"page_layout_id":473,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5018,"page_layout_id":474,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5019,"page_layout_id":475,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5020,"page_layout_id":477,"page_layout_root_id":470,"pvalue":{"2unset":"1","2":"background-color:silver"},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:55:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5021,"page_layout_id":480,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5022,"page_layout_id":481,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5023,"page_layout_id":483,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5024,"page_layout_id":484,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5025,"page_layout_id":485,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#C8C8C8"},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-09-07T14:10:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5026,"page_layout_id":490,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5027,"page_layout_id":491,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5028,"page_layout_id":494,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5029,"page_layout_id":499,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5030,"page_layout_id":502,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5031,"page_layout_id":503,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5032,"page_layout_id":508,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5033,"page_layout_id":509,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5034,"page_layout_id":510,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5039,"page_layout_id":476,"page_layout_root_id":470,"pvalue":{},"section_param_id":537,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5046,"page_layout_id":492,"page_layout_root_id":470,"pvalue":{},"section_param_id":538,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5047,"page_layout_id":496,"page_layout_root_id":470,"pvalue":{},"section_param_id":538,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5058,"page_layout_id":489,"page_layout_root_id":470,"pvalue":{},"section_param_id":540,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5059,"page_layout_id":498,"page_layout_root_id":470,"pvalue":{},"section_param_id":540,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5060,"page_layout_id":500,"page_layout_root_id":470,"pvalue":{},"section_param_id":540,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5061,"page_layout_id":513,"page_layout_root_id":470,"pvalue":{},"section_param_id":540,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5104,"page_layout_id":501,"page_layout_root_id":470,"pvalue":{},"section_param_id":557,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5105,"page_layout_id":514,"page_layout_root_id":470,"pvalue":{},"section_param_id":557,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5160,"page_layout_id":478,"page_layout_root_id":470,"pvalue":{},"section_param_id":576,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5172,"page_layout_id":488,"page_layout_root_id":470,"pvalue":{},"section_param_id":581,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5173,"page_layout_id":493,"page_layout_root_id":470,"pvalue":{},"section_param_id":581,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5177,"page_layout_id":479,"page_layout_root_id":470,"pvalue":{},"section_param_id":583,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5180,"page_layout_id":487,"page_layout_root_id":470,"pvalue":{},"section_param_id":585,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5183,"page_layout_id":504,"page_layout_root_id":470,"pvalue":{},"section_param_id":587,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5184,"page_layout_id":512,"page_layout_root_id":470,"pvalue":{},"section_param_id":587,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5185,"page_layout_id":505,"page_layout_root_id":470,"pvalue":{},"section_param_id":588,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5186,"page_layout_id":507,"page_layout_root_id":470,"pvalue":{},"section_param_id":590,"theme_id":12,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:29.000Z","id":5287,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{},"section_param_id":592,"theme_id":12,"unset":null,"updated_at":"2014-09-07T13:27:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:29.000Z","id":5288,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":593,"theme_id":12,"unset":null,"updated_at":"2014-09-11T12:27:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:29.000Z","id":5289,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:5px 0px 5px 0px"},"section_param_id":594,"theme_id":12,"unset":null,"updated_at":"2014-09-07T14:25:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:29.000Z","id":5290,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:#C21F1F"},"section_param_id":595,"theme_id":12,"unset":null,"updated_at":"2014-09-11T11:29:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:29.000Z","id":5291,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{},"section_param_id":596,"theme_id":12,"unset":null,"updated_at":"2014-09-07T13:27:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:29.000Z","id":5292,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{},"section_param_id":597,"theme_id":12,"unset":null,"updated_at":"2014-09-07T13:27:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:29.000Z","id":5293,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{"2unset":"1","2":"background-color:lime"},"section_param_id":598,"theme_id":12,"unset":null,"updated_at":"2014-09-07T13:51:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:29.000Z","id":5294,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{"32unset":"0","32":"padding:5px 0px 5px 0px","21unset":"0","21":"width:100%"},"section_param_id":599,"theme_id":12,"unset":null,"updated_at":"2014-09-07T14:26:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:30.000Z","id":5295,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{"2unset":"1","2":"background-color:transparent"},"section_param_id":600,"theme_id":12,"unset":null,"updated_at":"2014-09-07T13:51:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:30.000Z","id":5296,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{"2unset":"0","2":"background-color:silver"},"section_param_id":601,"theme_id":12,"unset":null,"updated_at":"2014-09-07T14:25:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:30.000Z","id":5297,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{"49unset":"0","49":"color:white","54unset":"0","54":"text-decoration:none","24unset":"0","24":"font-size:120%","53unset":"0","53":"text-align:center"},"section_param_id":602,"theme_id":12,"unset":null,"updated_at":"2014-09-07T13:47:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-07T13:27:30.000Z","id":5298,"page_layout_id":525,"page_layout_root_id":470,"pvalue":{},"section_param_id":603,"theme_id":12,"unset":null,"updated_at":"2014-09-07T13:27:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-11T03:50:20.000Z","id":5299,"page_layout_id":526,"page_layout_root_id":470,"pvalue":{},"section_param_id":6,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:50:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-11T03:50:20.000Z","id":5300,"page_layout_id":526,"page_layout_root_id":470,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:51:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-11T03:50:20.000Z","id":5301,"page_layout_id":526,"page_layout_root_id":470,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:50:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-11T03:50:20.000Z","id":5302,"page_layout_id":526,"page_layout_root_id":470,"pvalue":{"3unset":"0","3":"background-image:10px-bg.jpg","5unset":"0","5":"background-repeat:repeat-x","4unset":"0","4":"background-position:left -7px"},"section_param_id":9,"theme_id":12,"unset":null,"updated_at":"2014-09-11T13:28:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-11T03:50:20.000Z","id":5303,"page_layout_id":526,"page_layout_root_id":470,"pvalue":{},"section_param_id":10,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:50:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-11T03:50:21.000Z","id":5304,"page_layout_id":526,"page_layout_root_id":470,"pvalue":{},"section_param_id":480,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:50:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-11T03:50:21.000Z","id":5305,"page_layout_id":526,"page_layout_root_id":470,"pvalue":{},"section_param_id":536,"theme_id":12,"unset":null,"updated_at":"2014-09-11T03:50:21.000Z"}}],"page_layouts":[{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:00:40.000Z","data_filter":"","data_source":"","data_source_param":"","id":470,"is_enabled":true,"is_full_html":true,"lft":1,"parent_id":null,"rgt":82,"root_id":470,"section_context":"","section_id":75,"section_instance":1,"site_id":2,"slug":"","title":"root21","updated_at":"2014-08-26T03:00:40.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:01:10.000Z","data_filter":"","data_source":"","data_source_param":"","id":471,"is_enabled":true,"is_full_html":false,"lft":2,"parent_id":470,"rgt":17,"root_id":470,"section_context":"","section_id":2,"section_instance":1,"site_id":2,"slug":"","title":"header","updated_at":"2014-08-26T03:01:42.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:03:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":477,"is_enabled":true,"is_full_html":false,"lft":3,"parent_id":471,"rgt":16,"root_id":470,"section_context":"","section_id":2,"section_instance":6,"site_id":2,"slug":"","title":"container6","updated_at":"2014-08-26T03:03:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:02:38.000Z","data_filter":"","data_source":"","data_source_param":"","id":475,"is_enabled":true,"is_full_html":false,"lft":4,"parent_id":477,"rgt":7,"root_id":470,"section_context":"","section_id":2,"section_instance":5,"site_id":2,"slug":"","title":"container5","updated_at":"2014-08-26T03:02:38.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:04:00.000Z","data_filter":"","data_source":"","data_source_param":"","id":478,"is_enabled":true,"is_full_html":false,"lft":5,"parent_id":475,"rgt":6,"root_id":470,"section_context":"","section_id":97,"section_instance":1,"site_id":2,"slug":"","title":"Logo1","updated_at":"2014-08-26T03:04:00.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-28T03:12:50.000Z","data_filter":"","data_source":"","data_source_param":"","id":499,"is_enabled":true,"is_full_html":false,"lft":8,"parent_id":477,"rgt":11,"root_id":470,"section_context":"","section_id":2,"section_instance":17,"site_id":2,"slug":"","title":"container17","updated_at":"2014-08-28T03:12:50.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-28T03:52:00.000Z","data_filter":"","data_source":"","data_source_param":"","id":500,"is_enabled":true,"is_full_html":false,"lft":9,"parent_id":499,"rgt":10,"root_id":470,"section_context":"","section_id":11,"section_instance":3,"site_id":2,"slug":"","title":"social media","updated_at":"2014-08-28T03:52:12.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-11T03:50:20.000Z","data_filter":"","data_source":"","data_source_param":"","id":526,"is_enabled":true,"is_full_html":false,"lft":12,"parent_id":477,"rgt":15,"root_id":470,"section_context":"","section_id":2,"section_instance":21,"site_id":2,"slug":"","title":"container21","updated_at":"2014-09-11T03:50:20.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:03:26.000Z","data_filter":"","data_source":"","data_source_param":"","id":476,"is_enabled":true,"is_full_html":false,"lft":13,"parent_id":526,"rgt":14,"root_id":470,"section_context":"","section_id":3,"section_instance":1,"site_id":2,"slug":"","title":"hmenu1","updated_at":"2014-08-26T03:03:26.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:01:17.000Z","data_filter":"","data_source":"","data_source_param":"","id":472,"is_enabled":true,"is_full_html":false,"lft":18,"parent_id":470,"rgt":21,"root_id":470,"section_context":"home","section_id":2,"section_instance":2,"site_id":2,"slug":"","title":"slider container","updated_at":"2014-08-30T02:06:15.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:04:11.000Z","data_filter":"","data_source":"","data_source_param":"","id":479,"is_enabled":true,"is_full_html":false,"lft":19,"parent_id":472,"rgt":20,"root_id":470,"section_context":"","section_id":114,"section_instance":1,"site_id":2,"slug":"","title":"Slider1","updated_at":"2014-08-26T03:04:11.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-30T02:06:58.000Z","data_filter":"","data_source":"","data_source_param":"","id":510,"is_enabled":true,"is_full_html":false,"lft":22,"parent_id":470,"rgt":25,"root_id":470,"section_context":"list,detail,blog,post","section_id":2,"section_instance":20,"site_id":2,"slug":"","title":"banner container","updated_at":"2014-08-30T02:09:38.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-30T02:47:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":513,"is_enabled":true,"is_full_html":false,"lft":23,"parent_id":510,"rgt":24,"root_id":470,"section_context":"","section_id":11,"section_instance":4,"site_id":2,"slug":"","title":"text4","updated_at":"2014-08-30T02:47:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:04:24.000Z","data_filter":"","data_source":"","data_source_param":"","id":480,"is_enabled":true,"is_full_html":false,"lft":26,"parent_id":470,"rgt":41,"root_id":470,"section_context":"home","section_id":2,"section_instance":7,"site_id":2,"slug":"","title":"index container","updated_at":"2014-08-26T03:48:06.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:06:13.000Z","data_filter":"","data_source":"taxon","data_source_param":"","id":483,"is_enabled":true,"is_full_html":false,"lft":27,"parent_id":480,"rgt":36,"root_id":470,"section_context":"","section_id":2,"section_instance":10,"site_id":2,"slug":"","title":"container10","updated_at":"2014-08-26T04:06:05.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:14:54.000Z","data_filter":"","data_source":"","data_source_param":"","id":485,"is_enabled":true,"is_full_html":false,"lft":28,"parent_id":483,"rgt":35,"root_id":470,"section_context":"","section_id":2,"section_instance":12,"site_id":2,"slug":"","title":"container12","updated_at":"2014-08-26T03:14:54.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:21:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":487,"is_enabled":true,"is_full_html":false,"lft":29,"parent_id":485,"rgt":30,"root_id":470,"section_context":"","section_id":119,"section_instance":1,"site_id":2,"slug":"","title":"Taxon icon1","updated_at":"2014-08-26T03:21:37.000Z"}},{"page_layout":{"content_param":1,"copy_from_root_id":0,"created_at":"2014-09-07T13:27:29.000Z","data_filter":"","data_source":"","data_source_param":"","id":525,"is_enabled":true,"is_full_html":false,"lft":31,"parent_id":485,"rgt":32,"root_id":470,"section_context":"","section_id":135,"section_instance":1,"site_id":2,"slug":"","title":"taxon name as link1","updated_at":"2014-09-07T13:32:40.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:21:55.000Z","data_filter":"","data_source":"","data_source_param":"","id":488,"is_enabled":true,"is_full_html":false,"lft":33,"parent_id":485,"rgt":34,"root_id":470,"section_context":"","section_id":109,"section_instance":1,"site_id":2,"slug":"","title":"Taxon description1","updated_at":"2014-08-26T03:21:55.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:06:24.000Z","data_filter":"","data_source":"","data_source_param":"","id":484,"is_enabled":true,"is_full_html":false,"lft":37,"parent_id":480,"rgt":40,"root_id":470,"section_context":"","section_id":2,"section_instance":11,"site_id":2,"slug":"","title":"container11","updated_at":"2014-08-26T03:06:24.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-28T02:57:41.000Z","data_filter":"","data_source":"","data_source_param":"","id":498,"is_enabled":true,"is_full_html":false,"lft":38,"parent_id":484,"rgt":39,"root_id":470,"section_context":"","section_id":11,"section_instance":2,"site_id":2,"slug":"","title":"company intro","updated_at":"2014-08-28T02:58:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:01:21.000Z","data_filter":"","data_source":"","data_source_param":"","id":473,"is_enabled":true,"is_full_html":false,"lft":42,"parent_id":470,"rgt":77,"root_id":470,"section_context":"","section_id":2,"section_instance":3,"site_id":2,"slug":"","title":"content","updated_at":"2014-08-26T03:02:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:04:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":481,"is_enabled":true,"is_full_html":false,"lft":43,"parent_id":473,"rgt":76,"root_id":470,"section_context":"list,detail,blog,post","section_id":2,"section_instance":8,"site_id":2,"slug":"","title":"product container","updated_at":"2014-08-29T07:52:21.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-27T06:18:25.000Z","data_filter":"","data_source":"","data_source_param":"","id":490,"is_enabled":true,"is_full_html":false,"lft":44,"parent_id":481,"rgt":57,"root_id":470,"section_context":"","section_id":2,"section_instance":13,"site_id":2,"slug":"","title":"left container","updated_at":"2014-08-27T06:18:55.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-29T12:34:13.000Z","data_filter":"","data_source":"","data_source_param":"","id":508,"is_enabled":true,"is_full_html":false,"lft":45,"parent_id":490,"rgt":50,"root_id":470,"section_context":"list,detail","section_id":2,"section_instance":18,"site_id":2,"slug":"","title":"container18","updated_at":"2014-08-29T12:36:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-28T06:15:39.000Z","data_filter":"","data_source":"","data_source_param":"","id":501,"is_enabled":true,"is_full_html":false,"lft":46,"parent_id":508,"rgt":47,"root_id":470,"section_context":"","section_id":40,"section_instance":1,"site_id":2,"slug":"","title":"taxonomy name1","updated_at":"2014-08-28T06:15:39.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-27T06:24:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":492,"is_enabled":true,"is_full_html":false,"lft":48,"parent_id":508,"rgt":49,"root_id":470,"section_context":"","section_id":6,"section_instance":1,"site_id":2,"slug":"","title":"vmenu1","updated_at":"2014-08-27T06:24:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-27T06:27:53.000Z","data_filter":"","data_source":"","data_source_param":"","id":494,"is_enabled":true,"is_full_html":false,"lft":51,"parent_id":490,"rgt":56,"root_id":470,"section_context":"blog,post","section_id":2,"section_instance":15,"site_id":2,"slug":"","title":"container15","updated_at":"2014-08-29T12:36:22.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-30T03:01:47.000Z","data_filter":"","data_source":"","data_source_param":"","id":514,"is_enabled":true,"is_full_html":false,"lft":52,"parent_id":494,"rgt":53,"root_id":470,"section_context":"","section_id":40,"section_instance":2,"site_id":2,"slug":"","title":"taxonomy name2","updated_at":"2014-08-30T03:01:47.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-27T06:28:19.000Z","data_filter":"","data_source":"","data_source_param":"","id":496,"is_enabled":true,"is_full_html":false,"lft":54,"parent_id":494,"rgt":55,"root_id":470,"section_context":"","section_id":6,"section_instance":2,"site_id":2,"slug":"","title":"vmenu2","updated_at":"2014-08-27T06:28:19.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-27T06:18:32.000Z","data_filter":"","data_source":"","data_source_param":"","id":491,"is_enabled":true,"is_full_html":false,"lft":58,"parent_id":481,"rgt":75,"root_id":470,"section_context":"","section_id":2,"section_instance":14,"site_id":2,"slug":"","title":"main content","updated_at":"2014-08-27T06:19:19.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-27T06:26:26.000Z","data_filter":"","data_source":"","data_source_param":"","id":493,"is_enabled":true,"is_full_html":false,"lft":59,"parent_id":491,"rgt":60,"root_id":470,"section_context":"","section_id":109,"section_instance":2,"site_id":2,"slug":"","title":"Taxon description2","updated_at":"2014-08-27T06:26:26.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-28T14:02:09.000Z","data_filter":"","data_source":"blog","data_source_param":"","id":502,"is_enabled":true,"is_full_html":false,"lft":61,"parent_id":491,"rgt":68,"root_id":470,"section_context":"blog","section_id":2,"section_instance":18,"site_id":2,"slug":"","title":"post list","updated_at":"2014-08-29T12:39:40.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-29T12:38:21.000Z","data_filter":"","data_source":"","data_source_param":"","id":509,"is_enabled":true,"is_full_html":false,"lft":62,"parent_id":502,"rgt":67,"root_id":470,"section_context":"","section_id":2,"section_instance":19,"site_id":2,"slug":"","title":"container19","updated_at":"2014-08-29T12:38:21.000Z"}},{"page_layout":{"content_param":1,"copy_from_root_id":0,"created_at":"2014-08-28T14:03:52.000Z","data_filter":"","data_source":"","data_source_param":"","id":504,"is_enabled":true,"is_full_html":false,"lft":63,"parent_id":509,"rgt":64,"root_id":470,"section_context":"","section_id":124,"section_instance":1,"site_id":2,"slug":"","title":"Post title1","updated_at":"2014-09-01T14:22:41.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-28T14:04:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":505,"is_enabled":true,"is_full_html":false,"lft":65,"parent_id":509,"rgt":66,"root_id":470,"section_context":"","section_id":127,"section_instance":1,"site_id":2,"slug":"","title":"Post time1","updated_at":"2014-08-28T14:04:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-28T14:02:57.000Z","data_filter":"","data_source":"post","data_source_param":"","id":503,"is_enabled":true,"is_full_html":false,"lft":69,"parent_id":491,"rgt":74,"root_id":470,"section_context":"post","section_id":2,"section_instance":19,"site_id":2,"slug":"","title":"post detail","updated_at":"2014-08-29T12:44:41.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-30T02:46:06.000Z","data_filter":"","data_source":"","data_source_param":"","id":512,"is_enabled":true,"is_full_html":false,"lft":70,"parent_id":503,"rgt":71,"root_id":470,"section_context":"","section_id":124,"section_instance":2,"site_id":2,"slug":"","title":"Post title2","updated_at":"2014-08-30T02:46:06.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-28T14:04:30.000Z","data_filter":"","data_source":"","data_source_param":"","id":507,"is_enabled":true,"is_full_html":false,"lft":72,"parent_id":503,"rgt":73,"root_id":470,"section_context":"","section_id":131,"section_instance":1,"site_id":2,"slug":"","title":"Post body1","updated_at":"2014-08-28T14:04:30.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-26T03:01:31.000Z","data_filter":"","data_source":"","data_source_param":"","id":474,"is_enabled":true,"is_full_html":false,"lft":78,"parent_id":470,"rgt":81,"root_id":470,"section_context":"","section_id":2,"section_instance":4,"site_id":2,"slug":"","title":"footer","updated_at":"2014-08-26T03:02:13.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-08-27T03:36:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":489,"is_enabled":true,"is_full_html":false,"lft":79,"parent_id":474,"rgt":80,"root_id":470,"section_context":"","section_id":11,"section_instance":1,"site_id":2,"slug":"","title":"text1","updated_at":"2014-08-27T03:36:04.000Z"}}],"template_files":[{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"lnwz-logo2.jpg","attachment_file_size":37244,"attachment_height":null,"attachment_updated_at":"2014-09-06T04:13:50.000Z","attachment_width":null,"created_at":"2014-09-05T13:22:40.000Z","id":29,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"company-desc-bg.jpg","attachment_file_size":79958,"attachment_height":null,"attachment_updated_at":"2014-09-06T04:05:02.000Z","attachment_width":null,"created_at":"2014-09-06T04:05:03.000Z","id":30,"theme_id":12}},{"template_file":{"attachment_content_type":"image/gif","attachment_file_name":"social-media3.gif","attachment_file_size":3029,"attachment_height":null,"attachment_updated_at":"2014-09-10T11:46:29.000Z","attachment_width":null,"created_at":"2014-09-10T11:46:29.000Z","id":31,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"company-desc-bg3.jpg","attachment_file_size":156399,"attachment_height":null,"attachment_updated_at":"2014-09-10T12:25:26.000Z","attachment_width":null,"created_at":"2014-09-10T12:25:26.000Z","id":32,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"company-desc-bg4.jpg","attachment_file_size":53195,"attachment_height":null,"attachment_updated_at":"2014-09-10T12:54:38.000Z","attachment_width":null,"created_at":"2014-09-10T12:54:38.000Z","id":33,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"banner1.jpg","attachment_file_size":78247,"attachment_height":null,"attachment_updated_at":"2014-09-11T03:22:01.000Z","attachment_width":null,"created_at":"2014-09-11T03:22:01.000Z","id":34,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"social-media4.jpg","attachment_file_size":34485,"attachment_height":null,"attachment_updated_at":"2014-09-11T11:42:41.000Z","attachment_width":null,"created_at":"2014-09-11T11:42:41.000Z","id":35,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"main-menu-top-border.jpg","attachment_file_size":9869,"attachment_height":null,"attachment_updated_at":"2014-09-11T11:52:36.000Z","attachment_width":null,"created_at":"2014-09-11T11:52:36.000Z","id":36,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"company-desc-head.jpg","attachment_file_size":35477,"attachment_height":null,"attachment_updated_at":"2014-09-11T12:40:39.000Z","attachment_width":null,"created_at":"2014-09-11T12:40:39.000Z","id":37,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"company-desc-bg4.jpg","attachment_file_size":153740,"attachment_height":null,"attachment_updated_at":"2014-09-11T12:41:58.000Z","attachment_width":null,"created_at":"2014-09-11T12:41:58.000Z","id":38,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"company-desc-bg5.jpg","attachment_file_size":153740,"attachment_height":null,"attachment_updated_at":"2014-09-11T12:44:05.000Z","attachment_width":null,"created_at":"2014-09-11T12:44:05.000Z","id":39,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"banner3.jpg","attachment_file_size":96559,"attachment_height":null,"attachment_updated_at":"2014-09-11T12:57:49.000Z","attachment_width":null,"created_at":"2014-09-11T12:57:49.000Z","id":40,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"banner4.jpg","attachment_file_size":85219,"attachment_height":null,"attachment_updated_at":"2014-09-11T13:17:20.000Z","attachment_width":null,"created_at":"2014-09-11T13:17:20.000Z","id":41,"theme_id":12}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"10px-bg.jpg","attachment_file_size":10320,"attachment_height":null,"attachment_updated_at":"2014-09-11T13:27:12.000Z","attachment_width":null,"created_at":"2014-09-11T13:27:12.000Z","id":42,"theme_id":12}}],"template_releases":[{"template_release":{"created_at":"2014-08-30T06:33:25.000Z","id":16,"name":"just a test","theme_id":12,"updated_at":"2014-08-30T06:33:25.000Z"}},{"template_release":{"created_at":"2014-08-30T06:34:25.000Z","id":17,"name":"just a test","theme_id":12,"updated_at":"2014-08-30T06:34:25.000Z"}},{"template_release":{"created_at":"2014-09-05T14:03:18.000Z","id":19,"name":"just a test","theme_id":12,"updated_at":"2014-09-05T14:03:18.000Z"}},{"template_release":{"created_at":"2014-09-06T04:06:57.000Z","id":20,"name":"just a test","theme_id":12,"updated_at":"2014-09-06T04:06:57.000Z"}}]} \ No newline at end of file diff --git a/spree_theme/db/themes/designs/2_12_1410527017/10px-bg.jpg b/spree_theme/db/themes/designs/2_12_1410527017/10px-bg.jpg deleted file mode 100644 index e8b984fe..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/10px-bg.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/banner1.jpg b/spree_theme/db/themes/designs/2_12_1410527017/banner1.jpg deleted file mode 100644 index c3af3c26..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/banner1.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/banner3.jpg b/spree_theme/db/themes/designs/2_12_1410527017/banner3.jpg deleted file mode 100644 index 121eeb7c..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/banner3.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/banner4.jpg b/spree_theme/db/themes/designs/2_12_1410527017/banner4.jpg deleted file mode 100644 index c0a1f1a4..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/banner4.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg.jpg b/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg.jpg deleted file mode 100644 index 84de93df..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg3.jpg b/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg3.jpg deleted file mode 100644 index c2bdb23a..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg3.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg4.jpg b/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg4.jpg deleted file mode 100644 index 8849e1fd..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg4.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg5.jpg b/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg5.jpg deleted file mode 100644 index 8849e1fd..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/company-desc-bg5.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/company-desc-head.jpg b/spree_theme/db/themes/designs/2_12_1410527017/company-desc-head.jpg deleted file mode 100644 index 86d7adae..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/company-desc-head.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/lnwz-logo2.jpg b/spree_theme/db/themes/designs/2_12_1410527017/lnwz-logo2.jpg deleted file mode 100644 index 6d8bcdfd..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/lnwz-logo2.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/main-menu-top-border.jpg b/spree_theme/db/themes/designs/2_12_1410527017/main-menu-top-border.jpg deleted file mode 100644 index ed905628..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/main-menu-top-border.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/social-media3.gif b/spree_theme/db/themes/designs/2_12_1410527017/social-media3.gif deleted file mode 100644 index 2ce56fa7..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/social-media3.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_12_1410527017/social-media4.jpg b/spree_theme/db/themes/designs/2_12_1410527017/social-media4.jpg deleted file mode 100644 index 5edd6f35..00000000 Binary files a/spree_theme/db/themes/designs/2_12_1410527017/social-media4.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_16_1414758979.json b/spree_theme/db/themes/designs/2_16_1414758979.json deleted file mode 100644 index 79f6195a..00000000 --- a/spree_theme/db/themes/designs/2_16_1414758979.json +++ /dev/null @@ -1 +0,0 @@ -{"template":{"template_theme":{"assigned_resource_ids":{"237":{},"573":{"spree/taxon":[0,0]},"575":{"spree/taxon":[144]},"579":{"spree/taxon":[149]},"582":{"spree/taxon":[155]},"633":{"spree/taxon":[95]},"636":{"spree/taxon":[166]},"571":{"spree/template_file":[50]},"639":{"spree/taxon":[0]},"647":{"spree/taxon":[169]},"645":{"spree/taxon":[171]}},"created_at":"2014-09-27T11:37:04.000Z","id":16,"is_public":true,"page_layout_root_id":568,"release_id":23,"site_id":2,"slug":"","title":"\u65f6\u5c1a\u7537\u88c5","updated_at":"2014-10-26T09:01:10.000Z"}},"param_values":[{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5665,"page_layout_id":569,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5666,"page_layout_id":569,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:none","101unset":"0","21unset":"0","21":"width:980px"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:02:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5667,"page_layout_id":569,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5668,"page_layout_id":569,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5669,"page_layout_id":569,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5670,"page_layout_id":577,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5671,"page_layout_id":577,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:none","101unset":"0","21unset":"0","21":"width:980px"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-29T11:44:34.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5672,"page_layout_id":577,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5673,"page_layout_id":577,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:yellow"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5674,"page_layout_id":577,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5675,"page_layout_id":627,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5676,"page_layout_id":627,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:none","101unset":"0","21unset":"0","21":"width:980px"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-29T11:44:46.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5677,"page_layout_id":627,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:15px 0px 30px 0px","7unset":"0","7":"border-style:solid none none none","8unset":"0","8":"border-width:1px 0px 0px 0px","6unset":"0","6":"border-color:#D9D9DB transparent transparent transparent"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-10-09T14:49:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5678,"page_layout_id":627,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:#F5F5F5","3unset":"0","3":"background-image:16-logo-mini.png","5unset":"0","5":"background-repeat:no-repeat","4unset":"0","4":"background-position:right 10px"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:35:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5679,"page_layout_id":627,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5680,"page_layout_id":578,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5681,"page_layout_id":578,"page_layout_root_id":568,"pvalue":{"15":"height:100%","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:160px"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:42:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5682,"page_layout_id":578,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto 10px auto 10px","15unset":"1","15":"height:100%","32unset":"0","32":"padding:10px 0px 20px 0px"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-27T13:57:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5683,"page_layout_id":578,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:#FFF8ED"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5684,"page_layout_id":578,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","49unset":"1","49":"color:black"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5685,"page_layout_id":585,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5686,"page_layout_id":585,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:right","101unset":"0","21unset":"0","21":"width:800px"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:43:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5687,"page_layout_id":585,"page_layout_root_id":568,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:none none none solid","8unset":"0","8":"border-width:0px 0px 0px 1px","6unset":"0","6":"border-color:transparent transparent transparent #D9D9DB","32unset":"0","32":"padding:0px 0px 0px 20px","31unset":"1","31":"margin:auto auto auto auto"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:41:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5688,"page_layout_id":585,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5689,"page_layout_id":585,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5690,"page_layout_id":586,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5691,"page_layout_id":586,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5692,"page_layout_id":586,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5693,"page_layout_id":586,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5694,"page_layout_id":586,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5695,"page_layout_id":591,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5696,"page_layout_id":591,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-28T12:39:27.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5697,"page_layout_id":591,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5698,"page_layout_id":591,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5699,"page_layout_id":591,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5700,"page_layout_id":588,"page_layout_root_id":568,"pvalue":{},"section_param_id":65,"theme_id":16,"unset":null,"updated_at":"2013-04-08T13:27:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5701,"page_layout_id":588,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111","15unset":"1","15":"height:110px","21unset":"0","21":"width:240px"},"section_param_id":66,"theme_id":16,"unset":null,"updated_at":"2014-09-27T14:40:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5702,"page_layout_id":588,"page_layout_root_id":568,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","32unset":"1","32":"padding:5px 0px 5px 0px","15unset":"1","15":"height:98px"},"section_param_id":67,"theme_id":16,"unset":null,"updated_at":"2014-09-27T14:39:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5703,"page_layout_id":588,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":68,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5704,"page_layout_id":588,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111","53unset":"0","53":"text-align:center"},"section_param_id":69,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5705,"page_layout_id":597,"page_layout_root_id":568,"pvalue":{},"section_param_id":60,"theme_id":16,"unset":null,"updated_at":"2013-04-08T13:27:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5706,"page_layout_id":597,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":61,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5707,"page_layout_id":597,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 0px 10px 0px"},"section_param_id":62,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5708,"page_layout_id":597,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":63,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5709,"page_layout_id":597,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111","24unset":"0","24":"font-size:90%"},"section_param_id":64,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5710,"page_layout_id":628,"page_layout_root_id":568,"pvalue":{},"section_param_id":50,"theme_id":16,"unset":null,"updated_at":"2013-04-08T13:27:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5711,"page_layout_id":628,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":51,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5712,"page_layout_id":628,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5713,"page_layout_id":628,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":53,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5714,"page_layout_id":628,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":54,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5715,"page_layout_id":587,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-10-09T11:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5716,"page_layout_id":587,"page_layout_root_id":568,"pvalue":{"15":"height:160px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-10-09T09:37:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5717,"page_layout_id":587,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto","15unset":"1","15":"height:140px","32unset":"1","32":"padding:0px 0px 0px 0px","8unset":"1","8":"border-width:0px 0px 0px 0px"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5718,"page_layout_id":587,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5719,"page_layout_id":587,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5720,"page_layout_id":595,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5721,"page_layout_id":595,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:right","101unset":"0","21unset":"0","21":"width:260px"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-28T12:41:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5722,"page_layout_id":595,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5723,"page_layout_id":595,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5724,"page_layout_id":595,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5725,"page_layout_id":592,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5726,"page_layout_id":592,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5727,"page_layout_id":592,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto auto"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5728,"page_layout_id":592,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5729,"page_layout_id":592,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5730,"page_layout_id":601,"page_layout_root_id":568,"pvalue":{},"section_param_id":110,"theme_id":16,"unset":null,"updated_at":"2014-07-30T23:08:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5731,"page_layout_id":601,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":111,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5732,"page_layout_id":601,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":112,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5733,"page_layout_id":601,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":113,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5734,"page_layout_id":601,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111","27unset":"0","27":"font-weight:normal","24unset":"0","24":"font-size:150%","49unset":"0","49":"color:black"},"section_param_id":114,"theme_id":16,"unset":null,"updated_at":"2014-10-08T12:02:18.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5735,"page_layout_id":598,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5736,"page_layout_id":598,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"1","21unset":"0","21":"width:450px"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5737,"page_layout_id":598,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:10px auto auto auto"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5738,"page_layout_id":598,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5739,"page_layout_id":598,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5740,"page_layout_id":607,"page_layout_root_id":568,"pvalue":{},"section_param_id":125,"theme_id":16,"unset":null,"updated_at":"2013-04-16T14:20:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5741,"page_layout_id":607,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111","21unset":"1","21":"width:670px"},"section_param_id":126,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5742,"page_layout_id":607,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":127,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5743,"page_layout_id":607,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":128,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5744,"page_layout_id":607,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111","53unset":"1","53":"text-align:right"},"section_param_id":129,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5745,"page_layout_id":590,"page_layout_root_id":568,"pvalue":{},"section_param_id":110,"theme_id":16,"unset":null,"updated_at":"2013-04-19T13:03:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5746,"page_layout_id":590,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111","21unset":"0","21":"width:240px"},"section_param_id":111,"theme_id":16,"unset":null,"updated_at":"2014-09-27T14:42:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5747,"page_layout_id":590,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:5px 0px 0px 0px","31unset":"0","31":"margin:auto auto 5px auto"},"section_param_id":112,"theme_id":16,"unset":null,"updated_at":"2014-10-09T11:42:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5748,"page_layout_id":590,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":113,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5749,"page_layout_id":590,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111","53unset":"0","53":"text-align:center","49unset":"0","49":"color:black","27unset":"0","27":"font-weight:bold"},"section_param_id":114,"theme_id":16,"unset":null,"updated_at":"2014-09-28T01:15:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5750,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":27,"theme_id":16,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5751,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":28,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5752,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 0px 20px"},"section_param_id":29,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:18:27.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5753,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":30,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5754,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":31,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5755,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:5px 0px 5px 32px","21unset":"0","21":"width:120px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":32,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:19:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5756,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{"54unset":"0","54":"text-decoration:none","24unset":"1","24":"font-size:100%","49unset":"0","49":"color:black"},"section_param_id":33,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:22:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5757,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":34,"theme_id":16,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5758,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":35,"theme_id":16,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5759,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":36,"theme_id":16,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5760,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":37,"theme_id":16,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5761,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{"3unset":"0","3":"background-image:taxon-arrow.png","5unset":"0","5":"background-repeat:no-repeat","4unset":"0","4":"background-position:left 6px"},"section_param_id":38,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:09:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5762,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":39,"theme_id":16,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5763,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":40,"theme_id":16,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5764,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":41,"theme_id":16,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5765,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":42,"theme_id":16,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5766,"page_layout_id":579,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5767,"page_layout_id":579,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5768,"page_layout_id":579,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5769,"page_layout_id":579,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5770,"page_layout_id":579,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5771,"page_layout_id":582,"page_layout_root_id":568,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5772,"page_layout_id":582,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5773,"page_layout_id":582,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5774,"page_layout_id":582,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5775,"page_layout_id":582,"page_layout_root_id":568,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5776,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":27,"theme_id":16,"unset":null,"updated_at":"2013-10-05T00:38:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5777,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":28,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5778,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 20px","32unset":"1","32":"padding:0px 0px 0px 20px"},"section_param_id":29,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:25:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5779,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":30,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5780,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":31,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5781,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:5px 0px 5px 32px","21unset":"0","21":"width:120px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":32,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:25:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5782,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{"24unset":"0","24":"font-size:100%","49unset":"0","49":"color:black","54unset":"0","54":"text-decoration:none"},"section_param_id":33,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:24:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5783,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":34,"theme_id":16,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5784,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":35,"theme_id":16,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5785,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":36,"theme_id":16,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5786,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":37,"theme_id":16,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5787,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{"3unset":"0","3":"background-image:taxon-arrow.png","5unset":"0","5":"background-repeat:no-repeat","4unset":"0","4":"background-position:left 6px"},"section_param_id":38,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:11:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5788,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":39,"theme_id":16,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5789,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":40,"theme_id":16,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5790,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":41,"theme_id":16,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5791,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":42,"theme_id":16,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5792,"page_layout_id":611,"page_layout_root_id":568,"pvalue":{},"section_param_id":210,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:20:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5793,"page_layout_id":611,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:360px"},"section_param_id":211,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5794,"page_layout_id":611,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 10px 10px 0px","7unset":"1","7":"border-style:solid solid solid solid","8unset":"1","8":"border-width:1px 1px 1px 1px","6unset":"1","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":212,"theme_id":16,"unset":null,"updated_at":"2014-10-12T11:36:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5795,"page_layout_id":611,"page_layout_root_id":568,"pvalue":{},"section_param_id":213,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:20:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5796,"page_layout_id":611,"page_layout_root_id":568,"pvalue":{},"section_param_id":214,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:20:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5797,"page_layout_id":611,"page_layout_root_id":568,"pvalue":{},"section_param_id":215,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:20:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5798,"page_layout_id":611,"page_layout_root_id":568,"pvalue":{"2unset":"1","2":"background-color:#000000"},"section_param_id":216,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5799,"page_layout_id":611,"page_layout_root_id":568,"pvalue":{"49unset":"1","49":"color:#00ADEE","53unset":"1","53":"text-align:center"},"section_param_id":217,"theme_id":16,"unset":null,"updated_at":"2014-10-12T05:17:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5800,"page_layout_id":612,"page_layout_root_id":568,"pvalue":{},"section_param_id":218,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:21:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5801,"page_layout_id":612,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:360px"},"section_param_id":219,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5802,"page_layout_id":612,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 10px 10px 0px","7unset":"1","7":"border-style:solid solid solid solid","8unset":"1","8":"border-width:1px 1px 1px 1px","6unset":"1","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","31unset":"0","31":"margin:10px auto 10px auto"},"section_param_id":220,"theme_id":16,"unset":null,"updated_at":"2014-10-12T11:36:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5803,"page_layout_id":612,"page_layout_root_id":568,"pvalue":{},"section_param_id":221,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5804,"page_layout_id":612,"page_layout_root_id":568,"pvalue":{},"section_param_id":222,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5805,"page_layout_id":612,"page_layout_root_id":568,"pvalue":{},"section_param_id":223,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5806,"page_layout_id":612,"page_layout_root_id":568,"pvalue":{},"section_param_id":224,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5807,"page_layout_id":612,"page_layout_root_id":568,"pvalue":{"49unset":"1","49":"color:#00ADEE","53unset":"1","53":"text-align:center"},"section_param_id":225,"theme_id":16,"unset":null,"updated_at":"2014-10-12T05:17:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5808,"page_layout_id":605,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5809,"page_layout_id":605,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5810,"page_layout_id":605,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5811,"page_layout_id":605,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5812,"page_layout_id":605,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5813,"page_layout_id":606,"page_layout_root_id":568,"pvalue":{},"section_param_id":160,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5814,"page_layout_id":606,"page_layout_root_id":568,"pvalue":{},"section_param_id":161,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5815,"page_layout_id":606,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 10px 0px"},"section_param_id":162,"theme_id":16,"unset":null,"updated_at":"2014-10-12T05:47:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5816,"page_layout_id":606,"page_layout_root_id":568,"pvalue":{},"section_param_id":163,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5817,"page_layout_id":606,"page_layout_root_id":568,"pvalue":{"24unset":"0","24":"font-size:150%"},"section_param_id":164,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5818,"page_layout_id":615,"page_layout_root_id":568,"pvalue":{},"section_param_id":165,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5819,"page_layout_id":615,"page_layout_root_id":568,"pvalue":{},"section_param_id":166,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5820,"page_layout_id":615,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto auto"},"section_param_id":167,"theme_id":16,"unset":null,"updated_at":"2014-10-12T05:42:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5821,"page_layout_id":615,"page_layout_root_id":568,"pvalue":{},"section_param_id":168,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5822,"page_layout_id":615,"page_layout_root_id":568,"pvalue":{},"section_param_id":169,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5823,"page_layout_id":615,"page_layout_root_id":568,"pvalue":{"31unset":"0","31":"margin:auto auto 10px auto","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","32unset":"0","32":"padding:5px 0px 5px 0px"},"section_param_id":170,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5824,"page_layout_id":615,"page_layout_root_id":568,"pvalue":{},"section_param_id":171,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5825,"page_layout_id":615,"page_layout_root_id":568,"pvalue":{"27":"font-weight:bold","54unset":"1","54":"text-decoration:underline","53unset":"1","53":"text-align:left"},"section_param_id":172,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5826,"page_layout_id":616,"page_layout_root_id":568,"pvalue":{},"section_param_id":173,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5827,"page_layout_id":616,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:300px"},"section_param_id":174,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5828,"page_layout_id":616,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":175,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5829,"page_layout_id":616,"page_layout_root_id":568,"pvalue":{},"section_param_id":176,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5830,"page_layout_id":616,"page_layout_root_id":568,"pvalue":{},"section_param_id":177,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5831,"page_layout_id":616,"page_layout_root_id":568,"pvalue":{"31unset":"0","31":"margin:auto auto 10px auto","32unset":"0","32":"padding:5px 0px 5px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":178,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5832,"page_layout_id":616,"page_layout_root_id":568,"pvalue":{},"section_param_id":179,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5833,"page_layout_id":616,"page_layout_root_id":568,"pvalue":{"27":"font-weight:bold","54unset":"1","54":"text-decoration:underline"},"section_param_id":180,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5834,"page_layout_id":617,"page_layout_root_id":568,"pvalue":{},"section_param_id":181,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5835,"page_layout_id":617,"page_layout_root_id":568,"pvalue":{},"section_param_id":182,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5836,"page_layout_id":617,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":183,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5837,"page_layout_id":617,"page_layout_root_id":568,"pvalue":{},"section_param_id":184,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5838,"page_layout_id":617,"page_layout_root_id":568,"pvalue":{},"section_param_id":185,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5839,"page_layout_id":617,"page_layout_root_id":568,"pvalue":{},"section_param_id":186,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5840,"page_layout_id":617,"page_layout_root_id":568,"pvalue":{},"section_param_id":187,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5841,"page_layout_id":617,"page_layout_root_id":568,"pvalue":{"27":"font-weight:bold"},"section_param_id":188,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5842,"page_layout_id":619,"page_layout_root_id":568,"pvalue":{},"section_param_id":268,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5843,"page_layout_id":619,"page_layout_root_id":568,"pvalue":{},"section_param_id":269,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5844,"page_layout_id":619,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":270,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5845,"page_layout_id":619,"page_layout_root_id":568,"pvalue":{},"section_param_id":271,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5846,"page_layout_id":619,"page_layout_root_id":568,"pvalue":{},"section_param_id":272,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5847,"page_layout_id":619,"page_layout_root_id":568,"pvalue":{},"section_param_id":273,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5848,"page_layout_id":619,"page_layout_root_id":568,"pvalue":{},"section_param_id":274,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5849,"page_layout_id":619,"page_layout_root_id":568,"pvalue":{},"section_param_id":275,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5850,"page_layout_id":620,"page_layout_root_id":568,"pvalue":{},"section_param_id":260,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5851,"page_layout_id":620,"page_layout_root_id":568,"pvalue":{},"section_param_id":261,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5852,"page_layout_id":620,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":262,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5853,"page_layout_id":620,"page_layout_root_id":568,"pvalue":{},"section_param_id":263,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5854,"page_layout_id":620,"page_layout_root_id":568,"pvalue":{},"section_param_id":264,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5855,"page_layout_id":620,"page_layout_root_id":568,"pvalue":{},"section_param_id":265,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5856,"page_layout_id":620,"page_layout_root_id":568,"pvalue":{},"section_param_id":266,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5857,"page_layout_id":620,"page_layout_root_id":568,"pvalue":{},"section_param_id":267,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:38:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5858,"page_layout_id":621,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5859,"page_layout_id":621,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5860,"page_layout_id":621,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5861,"page_layout_id":621,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5862,"page_layout_id":621,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5863,"page_layout_id":623,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5864,"page_layout_id":623,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5865,"page_layout_id":623,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5866,"page_layout_id":623,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5867,"page_layout_id":623,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5868,"page_layout_id":622,"page_layout_root_id":568,"pvalue":{},"section_param_id":189,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5869,"page_layout_id":622,"page_layout_root_id":568,"pvalue":{},"section_param_id":190,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5870,"page_layout_id":622,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":191,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5871,"page_layout_id":622,"page_layout_root_id":568,"pvalue":{},"section_param_id":192,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5872,"page_layout_id":622,"page_layout_root_id":568,"pvalue":{},"section_param_id":193,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5873,"page_layout_id":622,"page_layout_root_id":568,"pvalue":{},"section_param_id":194,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5874,"page_layout_id":622,"page_layout_root_id":568,"pvalue":{},"section_param_id":195,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5875,"page_layout_id":622,"page_layout_root_id":568,"pvalue":{},"section_param_id":196,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5876,"page_layout_id":624,"page_layout_root_id":568,"pvalue":{},"section_param_id":197,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5877,"page_layout_id":624,"page_layout_root_id":568,"pvalue":{},"section_param_id":198,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5878,"page_layout_id":624,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":199,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5879,"page_layout_id":624,"page_layout_root_id":568,"pvalue":{},"section_param_id":200,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5880,"page_layout_id":624,"page_layout_root_id":568,"pvalue":{},"section_param_id":201,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5881,"page_layout_id":624,"page_layout_root_id":568,"pvalue":{},"section_param_id":202,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5882,"page_layout_id":624,"page_layout_root_id":568,"pvalue":{},"section_param_id":203,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5883,"page_layout_id":624,"page_layout_root_id":568,"pvalue":{},"section_param_id":204,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5884,"page_layout_id":618,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:50:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5885,"page_layout_id":618,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5886,"page_layout_id":618,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5887,"page_layout_id":618,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:50:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5888,"page_layout_id":618,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:50:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5889,"page_layout_id":613,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5890,"page_layout_id":613,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5891,"page_layout_id":613,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 0px 0px"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5892,"page_layout_id":613,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5893,"page_layout_id":613,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5894,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":11,"theme_id":16,"unset":null,"updated_at":"2013-11-05T03:16:07.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5895,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{"21unset":"1","21":"width:960px"},"section_param_id":12,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5896,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":13,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5897,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{"2unset":"1","2":"background-color:lime"},"section_param_id":14,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5898,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{"27unset":"1","27":"font-weight:bold","49unset":"1","49":"color:#00ADEE"},"section_param_id":15,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:12:07.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5899,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:5px 0px 8px 0px","21unset":"0","21":"width:90px","8unset":"0","8":"border-width:0px 1px 0px 0px","7unset":"0","7":"border-style:none solid none none","6unset":"0","6":"border-color:transparent gray transparent transparent"},"section_param_id":16,"theme_id":16,"unset":null,"updated_at":"2014-09-29T13:30:18.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5900,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{"54unset":"0","54":"text-decoration:none","49unset":"0","49":"color:white","53unset":"0","53":"text-align:center"},"section_param_id":17,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:14:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5901,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":18,"theme_id":16,"unset":null,"updated_at":"2014-10-13T15:03:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5902,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":19,"theme_id":16,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5903,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":20,"theme_id":16,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5904,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":21,"theme_id":16,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5905,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":22,"theme_id":16,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5906,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{"2unset":"0","2":"background-color:black"},"section_param_id":23,"theme_id":16,"unset":null,"updated_at":"2014-09-29T13:25:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5907,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{"2unset":"0","2":"background-color:black"},"section_param_id":24,"theme_id":16,"unset":null,"updated_at":"2014-09-29T13:24:44.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5908,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":25,"theme_id":16,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5909,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":26,"theme_id":16,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5910,"page_layout_id":580,"page_layout_root_id":568,"pvalue":{},"section_param_id":135,"theme_id":16,"unset":null,"updated_at":"2013-11-25T06:53:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5911,"page_layout_id":580,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:150px"},"section_param_id":136,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:21:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5912,"page_layout_id":580,"page_layout_root_id":568,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","32unset":"0","32":"padding:5px 0px 5px 32px"},"section_param_id":137,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5913,"page_layout_id":580,"page_layout_root_id":568,"pvalue":{"2unset":"1","2":"background-color:transparent","3unset":"0","3":"background-image:taxonmy-arrow.png","5unset":"0","5":"background-repeat:no-repeat","4unset":"0","4":"background-position:left 6px"},"section_param_id":138,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:08:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5914,"page_layout_id":580,"page_layout_root_id":568,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":139,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:26:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5915,"page_layout_id":583,"page_layout_root_id":568,"pvalue":{},"section_param_id":135,"theme_id":16,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5916,"page_layout_id":583,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:152px"},"section_param_id":136,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:26:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5917,"page_layout_id":583,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 5px 32px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":137,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:26:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5918,"page_layout_id":583,"page_layout_root_id":568,"pvalue":{"3unset":"0","3":"background-image:taxonmy-arrow.png","5unset":"0","5":"background-repeat:no-repeat","4unset":"0","4":"background-position:left top"},"section_param_id":138,"theme_id":16,"unset":null,"updated_at":"2014-09-29T13:01:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5919,"page_layout_id":583,"page_layout_root_id":568,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":139,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:26:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5920,"page_layout_id":608,"page_layout_root_id":568,"pvalue":{},"section_param_id":140,"theme_id":16,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5921,"page_layout_id":608,"page_layout_root_id":568,"pvalue":{},"section_param_id":141,"theme_id":16,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5922,"page_layout_id":608,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":142,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5923,"page_layout_id":608,"page_layout_root_id":568,"pvalue":{},"section_param_id":143,"theme_id":16,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5924,"page_layout_id":608,"page_layout_root_id":568,"pvalue":{},"section_param_id":144,"theme_id":16,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5925,"page_layout_id":609,"page_layout_root_id":568,"pvalue":{},"section_param_id":145,"theme_id":16,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5926,"page_layout_id":609,"page_layout_root_id":568,"pvalue":{"101unset":"0","101":"float:left","21unset":"0","21":"width:100%"},"section_param_id":146,"theme_id":16,"unset":null,"updated_at":"2014-10-12T00:51:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5927,"page_layout_id":609,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:10px auto 10px auto","32unset":"0","32":"padding:15px 15px 15px 0px","7unset":"1","7":"border-style:none none solid none","8unset":"1","8":"border-width:0px 0px 1px 0px"},"section_param_id":147,"theme_id":16,"unset":null,"updated_at":"2014-10-12T00:55:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5928,"page_layout_id":609,"page_layout_root_id":568,"pvalue":{"2unset":"0","2":"background-color:#D9D9DB"},"section_param_id":148,"theme_id":16,"unset":null,"updated_at":"2014-10-12T00:52:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5929,"page_layout_id":609,"page_layout_root_id":568,"pvalue":{"53unset":"0","53":"text-align:right","27unset":"0","27":"font-weight:bold"},"section_param_id":149,"theme_id":16,"unset":null,"updated_at":"2014-10-12T00:52:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5930,"page_layout_id":610,"page_layout_root_id":568,"pvalue":{},"section_param_id":150,"theme_id":16,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5931,"page_layout_id":610,"page_layout_root_id":568,"pvalue":{"21unset":"1","21":"width:600px"},"section_param_id":151,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5932,"page_layout_id":610,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":152,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5933,"page_layout_id":610,"page_layout_root_id":568,"pvalue":{},"section_param_id":153,"theme_id":16,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5934,"page_layout_id":610,"page_layout_root_id":568,"pvalue":{},"section_param_id":154,"theme_id":16,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5935,"page_layout_id":571,"page_layout_root_id":568,"pvalue":{},"section_param_id":323,"theme_id":16,"unset":null,"updated_at":"2013-11-29T02:49:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5936,"page_layout_id":571,"page_layout_root_id":568,"pvalue":{"21unset":"1","21":"width:220px","101unset":"1","101":"float:none"},"section_param_id":324,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5937,"page_layout_id":571,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:30px auto auto auto"},"section_param_id":325,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:02:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5938,"page_layout_id":571,"page_layout_root_id":568,"pvalue":{},"section_param_id":326,"theme_id":16,"unset":null,"updated_at":"2013-11-29T02:49:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5939,"page_layout_id":571,"page_layout_root_id":568,"pvalue":{},"section_param_id":327,"theme_id":16,"unset":null,"updated_at":"2013-11-29T02:49:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5940,"page_layout_id":574,"page_layout_root_id":568,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5941,"page_layout_id":574,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"1","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-29T13:29:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5942,"page_layout_id":574,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 6px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","31unset":"1","31":"margin:auto 10px auto 10px","15unset":"1","15":"height:99px"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-29T13:29:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5943,"page_layout_id":574,"page_layout_root_id":568,"pvalue":{"2unset":"1","2":"background-color:black","3unset":"0","3":"background-image:menu-bg.jpg"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-29T13:24:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5944,"page_layout_id":574,"page_layout_root_id":568,"pvalue":{"49unset":"1","49":"color:teal","25unset":"1","25":"font-style:normal","24unset":"1","24":"font-size:0%","27unset":"1","27":"font-weight:bold"},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5950,"page_layout_id":570,"page_layout_root_id":568,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5951,"page_layout_id":570,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:128px","15unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:02:18.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5952,"page_layout_id":570,"page_layout_root_id":568,"pvalue":{"15hidden":"1","15unset":"0","15":"height:128px"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:02:18.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5953,"page_layout_id":570,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2013-12-05T08:06:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5954,"page_layout_id":570,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2013-12-05T08:06:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5955,"page_layout_id":572,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5956,"page_layout_id":572,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-27T13:17:34.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5957,"page_layout_id":572,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5958,"page_layout_id":572,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5959,"page_layout_id":572,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5960,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"21":"width:100%","21unset":"0","20":"min-width:960px","20hidden":"1"},"section_param_id":226,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:49:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5961,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":227,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5962,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"85":"clear:both"},"section_param_id":228,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5963,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":229,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5964,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"24unset":"0","24":"font-size:0.85em"},"section_param_id":230,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:11:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5965,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent gray transparent","32unset":"0","32":"padding:5px 0px 10px 0px"},"section_param_id":231,"theme_id":16,"unset":null,"updated_at":"2014-10-13T01:59:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5966,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":232,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5967,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"53unset":"0","53":"text-align:left"},"section_param_id":233,"theme_id":16,"unset":null,"updated_at":"2014-10-12T05:14:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5968,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":234,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5969,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"31unset":"0","31":"margin:10px auto 5px auto"},"section_param_id":235,"theme_id":16,"unset":null,"updated_at":"2014-10-13T02:03:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5970,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":236,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5971,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:gray gray gray gray","32unset":"0","32":"padding:5px 5px 5px 5px","31unset":"1","31":"margin:auto auto 5px auto"},"section_param_id":237,"theme_id":16,"unset":null,"updated_at":"2014-10-13T02:03:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5972,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":238,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5973,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":239,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5974,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":240,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5975,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":241,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5976,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:red","24unset":"0","24":"font-size:82%"},"section_param_id":242,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5977,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":243,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5978,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:5px 20px 5px 20px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:black black black black","31unset":"0","31":"margin:5px auto 10px auto"},"section_param_id":317,"theme_id":16,"unset":null,"updated_at":"2014-10-13T02:06:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5979,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"2unset":"0","2":"background-color:black"},"section_param_id":318,"theme_id":16,"unset":null,"updated_at":"2014-10-12T00:58:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5980,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":319,"theme_id":16,"unset":null,"updated_at":"2014-10-12T00:58:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5981,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":320,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5982,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"2unset":"0","2":"background-color:#595757"},"section_param_id":321,"theme_id":16,"unset":null,"updated_at":"2014-10-13T13:54:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5983,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":322,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5984,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":244,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5985,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":245,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5986,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":246,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5987,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:#888889","24unset":"1","24":"font-size:80%"},"section_param_id":247,"theme_id":16,"unset":null,"updated_at":"2014-10-13T14:43:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5988,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:#595757"},"section_param_id":248,"theme_id":16,"unset":null,"updated_at":"2014-10-13T14:43:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5989,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"7unset":"0","7":"border-style:solid none solid none","8unset":"0","8":"border-width:1px 0px 1px 0px","6unset":"0","6":"border-color:#D9D9DB transparent #D9D9DB transparent"},"section_param_id":249,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5990,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:10px 15px 10px 0px"},"section_param_id":250,"theme_id":16,"unset":null,"updated_at":"2014-10-12T00:50:25.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5991,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":251,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5992,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"2unset":"1","2":"background-color:#D9D9DB"},"section_param_id":252,"theme_id":16,"unset":null,"updated_at":"2014-10-12T00:48:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5993,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":253,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5994,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":254,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5995,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":255,"theme_id":16,"unset":null,"updated_at":"2014-10-12T00:18:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5996,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":256,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5997,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{},"section_param_id":55,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5998,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:240px","15unset":"1","15":"height:34px"},"section_param_id":56,"theme_id":16,"unset":null,"updated_at":"2014-09-27T14:43:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":5999,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{"15hidden":"1","15unset":"1","15":"height:24px","32unset":"0","32":"padding:5px 0px 5px 0px","7unset":"1","7":"border-style:none none solid none","8unset":"1","8":"border-width:0px 0px 1px 0px","6unset":"1","6":"border-color:transparent transparent #BBBBBB transparent"},"section_param_id":57,"theme_id":16,"unset":null,"updated_at":"2014-09-27T14:43:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6000,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{},"section_param_id":58,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6001,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{"53unset":"0","53":"text-align:center"},"section_param_id":59,"theme_id":16,"unset":null,"updated_at":"2014-09-27T14:41:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6002,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{},"section_param_id":294,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6003,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{},"section_param_id":295,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6004,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:black","27unset":"0","27":"font-weight:normal","24unset":"0","24":"font-size:100%","54unset":"0","54":"text-decoration:none","53unset":"0","53":"text-align:center"},"section_param_id":296,"theme_id":16,"unset":null,"updated_at":"2014-09-28T01:15:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6005,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{},"section_param_id":297,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:39:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6006,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{},"section_param_id":105,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6007,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":106,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6008,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{},"section_param_id":107,"theme_id":16,"unset":null,"updated_at":"2014-07-30T23:08:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6009,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{},"section_param_id":108,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6010,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{},"section_param_id":109,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6011,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px","7unset":"0","7":"border-style:solid none solid none","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":302,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6012,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{"2unset":"0","2":"background-color:transparent"},"section_param_id":303,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6013,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{},"section_param_id":304,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6014,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":305,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6015,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{},"section_param_id":306,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6016,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{},"section_param_id":55,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6017,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":56,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6018,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 0px 0px","7unset":"1","7":"border-style:none none solid none","8unset":"1","8":"border-width:0px 0px 1px 0px","6unset":"1","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":57,"theme_id":16,"unset":null,"updated_at":"2014-10-08T11:59:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6019,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{},"section_param_id":58,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6020,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{"24unset":"0","24":"font-size:200%","27unset":"0","27":"font-weight:bold"},"section_param_id":59,"theme_id":16,"unset":null,"updated_at":"2014-10-08T12:02:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6021,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{},"section_param_id":294,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6022,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{},"section_param_id":295,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6023,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:black","54unset":"0","54":"text-decoration:none","27unset":"0","27":"font-weight:bold","24unset":"0","24":"font-size:150%"},"section_param_id":296,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6024,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{},"section_param_id":297,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6025,"page_layout_id":603,"page_layout_root_id":568,"pvalue":{},"section_param_id":115,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6026,"page_layout_id":603,"page_layout_root_id":568,"pvalue":{},"section_param_id":116,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6027,"page_layout_id":603,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:5px auto auto auto"},"section_param_id":117,"theme_id":16,"unset":null,"updated_at":"2014-10-13T02:07:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6028,"page_layout_id":603,"page_layout_root_id":568,"pvalue":{},"section_param_id":118,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6029,"page_layout_id":603,"page_layout_root_id":568,"pvalue":{},"section_param_id":119,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6030,"page_layout_id":603,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:60px","7unset":"0","7":"border-style:solid solid solid solid","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","8unset":"0","8":"border-width:1px 1px 1px 1px","32unset":"0","32":"padding:7px 10px 7px 10px"},"section_param_id":307,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6031,"page_layout_id":603,"page_layout_root_id":568,"pvalue":{},"section_param_id":308,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6032,"page_layout_id":603,"page_layout_root_id":568,"pvalue":{"53unset":"0","53":"text-align:left"},"section_param_id":309,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6033,"page_layout_id":604,"page_layout_root_id":568,"pvalue":{},"section_param_id":120,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6034,"page_layout_id":604,"page_layout_root_id":568,"pvalue":{},"section_param_id":121,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6035,"page_layout_id":604,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto auto 10px"},"section_param_id":122,"theme_id":16,"unset":null,"updated_at":"2014-10-08T12:08:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6036,"page_layout_id":604,"page_layout_root_id":568,"pvalue":{},"section_param_id":123,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6037,"page_layout_id":604,"page_layout_root_id":568,"pvalue":{},"section_param_id":124,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6038,"page_layout_id":604,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:7px 30px 7px 30px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:black black black black"},"section_param_id":310,"theme_id":16,"unset":null,"updated_at":"2014-10-08T12:07:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6039,"page_layout_id":604,"page_layout_root_id":568,"pvalue":{"2unset":"0","2":"background-color:black"},"section_param_id":311,"theme_id":16,"unset":null,"updated_at":"2014-10-08T12:04:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6040,"page_layout_id":604,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:white","24unset":"1","24":"font-size:14em"},"section_param_id":312,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6041,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{},"section_param_id":284,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6042,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{"21":"width:600px","21unset":"0"},"section_param_id":285,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6043,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{"7":"border-style:solid solid solid solid","7unset":"0","8":"border-width:1px 1px 1px 1px","8unset":"0","6":"border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC","6unset":"0","15":"height:598px","15hidden":"1"},"section_param_id":286,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6044,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{"2":"background-color:#FFFFFF","2unset":"0"},"section_param_id":287,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6045,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{},"section_param_id":288,"theme_id":16,"unset":null,"updated_at":"2014-01-22T03:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6046,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{"32":"padding:5px 2px 5px 2px","32unset":"0","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":313,"theme_id":16,"unset":null,"updated_at":"2014-10-13T16:27:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6047,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{"2":"background-color:#dfdede","2unset":"0"},"section_param_id":314,"theme_id":16,"unset":null,"updated_at":"2014-10-13T16:19:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6048,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{"49unset":"1","49":"color:aqua","53unset":"0","53":"text-align:center"},"section_param_id":315,"theme_id":16,"unset":null,"updated_at":"2014-10-13T16:15:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6049,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{"32":"padding:0px 25px 20px 25px","32unset":"0"},"section_param_id":316,"theme_id":16,"unset":null,"updated_at":"2014-10-12T11:24:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6050,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":333,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6051,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":334,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6052,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":335,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6053,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":336,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6054,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{"49unset":"1","49":"color:white","54unset":"1","54":"text-decoration:none"},"section_param_id":337,"theme_id":16,"unset":null,"updated_at":"2014-09-27T13:35:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6055,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 10px"},"section_param_id":338,"theme_id":16,"unset":null,"updated_at":"2014-09-27T13:39:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6056,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{"53unset":"1","53":"text-align:left","49unset":"0","49":"color:white","54unset":"0","54":"text-decoration:none"},"section_param_id":339,"theme_id":16,"unset":null,"updated_at":"2014-09-27T13:35:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6057,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":340,"theme_id":16,"unset":null,"updated_at":"2014-10-14T08:46:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6058,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":341,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6059,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":342,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6060,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":343,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6061,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":344,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6062,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":345,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6063,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":346,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6064,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":347,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6065,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":348,"theme_id":16,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6066,"page_layout_id":625,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6067,"page_layout_id":625,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6068,"page_layout_id":625,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6069,"page_layout_id":625,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6070,"page_layout_id":625,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6071,"page_layout_id":626,"page_layout_root_id":568,"pvalue":{},"section_param_id":349,"theme_id":16,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6072,"page_layout_id":626,"page_layout_root_id":568,"pvalue":{},"section_param_id":350,"theme_id":16,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6073,"page_layout_id":626,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":351,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6074,"page_layout_id":626,"page_layout_root_id":568,"pvalue":{},"section_param_id":352,"theme_id":16,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6075,"page_layout_id":626,"page_layout_root_id":568,"pvalue":{},"section_param_id":353,"theme_id":16,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6076,"page_layout_id":626,"page_layout_root_id":568,"pvalue":{},"section_param_id":354,"theme_id":16,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6077,"page_layout_id":626,"page_layout_root_id":568,"pvalue":{},"section_param_id":355,"theme_id":16,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6078,"page_layout_id":626,"page_layout_root_id":568,"pvalue":{},"section_param_id":356,"theme_id":16,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6079,"page_layout_id":593,"page_layout_root_id":568,"pvalue":{},"section_param_id":289,"theme_id":16,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6080,"page_layout_id":593,"page_layout_root_id":568,"pvalue":{},"section_param_id":290,"theme_id":16,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6081,"page_layout_id":593,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":291,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6082,"page_layout_id":593,"page_layout_root_id":568,"pvalue":{},"section_param_id":292,"theme_id":16,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6083,"page_layout_id":593,"page_layout_root_id":568,"pvalue":{},"section_param_id":293,"theme_id":16,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6084,"page_layout_id":593,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:0px 0px 5px 0px","7unset":"1","7":"border-style:solid solid solid solid","8unset":"1","8":"border-width:1px 1px 1px 1px","6unset":"1","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":299,"theme_id":16,"unset":null,"updated_at":"2014-09-29T01:03:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6085,"page_layout_id":593,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:2px 2px 2px 2px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","31unset":"0","31":"margin:auto 6px 6px auto"},"section_param_id":301,"theme_id":16,"unset":null,"updated_at":"2014-09-29T08:47:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6086,"page_layout_id":614,"page_layout_root_id":568,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6087,"page_layout_id":614,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6088,"page_layout_id":614,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6089,"page_layout_id":614,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-03-04T14:20:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6090,"page_layout_id":614,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-03-04T14:20:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6096,"page_layout_id":602,"page_layout_root_id":568,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6097,"page_layout_id":602,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:230px"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6098,"page_layout_id":602,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:25px auto auto auto"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-10-13T02:06:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6099,"page_layout_id":602,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-03-06T13:42:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6100,"page_layout_id":602,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-03-06T13:42:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6101,"page_layout_id":600,"page_layout_root_id":568,"pvalue":{"85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6102,"page_layout_id":600,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6103,"page_layout_id":600,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6104,"page_layout_id":600,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-03-06T15:17:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6105,"page_layout_id":600,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-03-06T15:17:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6106,"page_layout_id":588,"page_layout_root_id":568,"pvalue":{"84unset":"0","84":"product"},"section_param_id":404,"theme_id":16,"unset":null,"updated_at":"2014-09-27T14:34:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6107,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":420,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6108,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":421,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6109,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":421,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6110,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":422,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6111,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":423,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6112,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":424,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6113,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":424,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6114,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":425,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6115,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":426,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6116,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":427,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6117,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":427,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6118,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":428,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6119,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":429,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6120,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":430,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6121,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":430,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6122,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":431,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6123,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":432,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6124,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":433,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6125,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":433,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6126,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":434,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6127,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":435,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6128,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":436,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6129,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":436,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6130,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":437,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6131,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":438,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6132,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":439,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6133,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":439,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6134,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":440,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6135,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":441,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6136,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":442,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6137,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":442,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6138,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":443,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6139,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":444,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6140,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":445,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6141,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":445,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6142,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":446,"theme_id":16,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6143,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":477,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6144,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":478,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6145,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":478,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6146,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":479,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6147,"page_layout_id":569,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6148,"page_layout_id":570,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6149,"page_layout_id":572,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6150,"page_layout_id":574,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6151,"page_layout_id":577,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6152,"page_layout_id":578,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6153,"page_layout_id":579,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6154,"page_layout_id":582,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6155,"page_layout_id":585,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6156,"page_layout_id":586,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6157,"page_layout_id":587,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6158,"page_layout_id":591,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6159,"page_layout_id":592,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6160,"page_layout_id":595,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6161,"page_layout_id":598,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6162,"page_layout_id":600,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6163,"page_layout_id":602,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6164,"page_layout_id":605,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6165,"page_layout_id":613,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6166,"page_layout_id":614,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6167,"page_layout_id":618,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6168,"page_layout_id":621,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6169,"page_layout_id":623,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6170,"page_layout_id":625,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6171,"page_layout_id":627,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6172,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":481,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6173,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":482,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6174,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":482,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6175,"page_layout_id":628,"page_layout_root_id":568,"pvalue":{},"section_param_id":484,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6176,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{},"section_param_id":485,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6177,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{},"section_param_id":485,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6178,"page_layout_id":597,"page_layout_root_id":568,"pvalue":{},"section_param_id":486,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6179,"page_layout_id":588,"page_layout_root_id":568,"pvalue":{},"section_param_id":487,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6180,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{},"section_param_id":495,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6181,"page_layout_id":590,"page_layout_root_id":568,"pvalue":{},"section_param_id":496,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6182,"page_layout_id":601,"page_layout_root_id":568,"pvalue":{},"section_param_id":496,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6183,"page_layout_id":603,"page_layout_root_id":568,"pvalue":{},"section_param_id":497,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6184,"page_layout_id":604,"page_layout_root_id":568,"pvalue":{},"section_param_id":498,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6185,"page_layout_id":607,"page_layout_root_id":568,"pvalue":{},"section_param_id":499,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6186,"page_layout_id":580,"page_layout_root_id":568,"pvalue":{},"section_param_id":501,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6187,"page_layout_id":583,"page_layout_root_id":568,"pvalue":{},"section_param_id":501,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6188,"page_layout_id":608,"page_layout_root_id":568,"pvalue":{},"section_param_id":502,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6189,"page_layout_id":609,"page_layout_root_id":568,"pvalue":{},"section_param_id":503,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6190,"page_layout_id":610,"page_layout_root_id":568,"pvalue":{},"section_param_id":504,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6191,"page_layout_id":606,"page_layout_root_id":568,"pvalue":{},"section_param_id":506,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6192,"page_layout_id":615,"page_layout_root_id":568,"pvalue":{},"section_param_id":507,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6193,"page_layout_id":616,"page_layout_root_id":568,"pvalue":{},"section_param_id":508,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6194,"page_layout_id":617,"page_layout_root_id":568,"pvalue":{},"section_param_id":509,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6195,"page_layout_id":622,"page_layout_root_id":568,"pvalue":{},"section_param_id":510,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6196,"page_layout_id":624,"page_layout_root_id":568,"pvalue":{},"section_param_id":511,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6197,"page_layout_id":611,"page_layout_root_id":568,"pvalue":{},"section_param_id":513,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6198,"page_layout_id":612,"page_layout_root_id":568,"pvalue":{},"section_param_id":514,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6199,"page_layout_id":620,"page_layout_root_id":568,"pvalue":{},"section_param_id":515,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6200,"page_layout_id":619,"page_layout_root_id":568,"pvalue":{},"section_param_id":516,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6201,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{},"section_param_id":518,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6202,"page_layout_id":593,"page_layout_root_id":568,"pvalue":{},"section_param_id":519,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6203,"page_layout_id":571,"page_layout_root_id":568,"pvalue":{},"section_param_id":520,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6205,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":522,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6206,"page_layout_id":626,"page_layout_root_id":568,"pvalue":{},"section_param_id":523,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6208,"page_layout_id":569,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6209,"page_layout_id":570,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6210,"page_layout_id":572,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6211,"page_layout_id":574,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6212,"page_layout_id":577,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6213,"page_layout_id":578,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6214,"page_layout_id":579,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6215,"page_layout_id":582,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6216,"page_layout_id":585,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6217,"page_layout_id":586,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6218,"page_layout_id":587,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6219,"page_layout_id":591,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6220,"page_layout_id":592,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6221,"page_layout_id":595,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6222,"page_layout_id":598,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6223,"page_layout_id":600,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6224,"page_layout_id":602,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6225,"page_layout_id":605,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6226,"page_layout_id":613,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6227,"page_layout_id":614,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6228,"page_layout_id":618,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6229,"page_layout_id":621,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6230,"page_layout_id":623,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6231,"page_layout_id":625,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6232,"page_layout_id":627,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6233,"page_layout_id":575,"page_layout_root_id":568,"pvalue":{},"section_param_id":537,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6234,"page_layout_id":581,"page_layout_root_id":568,"pvalue":{},"section_param_id":538,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6235,"page_layout_id":584,"page_layout_root_id":568,"pvalue":{},"section_param_id":538,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6236,"page_layout_id":628,"page_layout_root_id":568,"pvalue":{},"section_param_id":540,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6237,"page_layout_id":589,"page_layout_root_id":568,"pvalue":{},"section_param_id":541,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6238,"page_layout_id":596,"page_layout_root_id":568,"pvalue":{},"section_param_id":541,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6239,"page_layout_id":597,"page_layout_root_id":568,"pvalue":{},"section_param_id":542,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6240,"page_layout_id":588,"page_layout_root_id":568,"pvalue":{},"section_param_id":543,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6241,"page_layout_id":594,"page_layout_root_id":568,"pvalue":{},"section_param_id":551,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6242,"page_layout_id":590,"page_layout_root_id":568,"pvalue":{},"section_param_id":552,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6243,"page_layout_id":601,"page_layout_root_id":568,"pvalue":{},"section_param_id":552,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6244,"page_layout_id":603,"page_layout_root_id":568,"pvalue":{},"section_param_id":553,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6245,"page_layout_id":604,"page_layout_root_id":568,"pvalue":{},"section_param_id":554,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6246,"page_layout_id":607,"page_layout_root_id":568,"pvalue":{},"section_param_id":555,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6247,"page_layout_id":580,"page_layout_root_id":568,"pvalue":{},"section_param_id":557,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6248,"page_layout_id":583,"page_layout_root_id":568,"pvalue":{"3unset":"1","3":"background-image:taxon-arrow.png","4unset":"1","4":"background-position:left 6px","5unset":"1","5":"background-repeat:no-repeat"},"section_param_id":557,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:10:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6249,"page_layout_id":608,"page_layout_root_id":568,"pvalue":{},"section_param_id":558,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6250,"page_layout_id":609,"page_layout_root_id":568,"pvalue":{},"section_param_id":559,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6251,"page_layout_id":610,"page_layout_root_id":568,"pvalue":{},"section_param_id":560,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6252,"page_layout_id":606,"page_layout_root_id":568,"pvalue":{},"section_param_id":562,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6253,"page_layout_id":615,"page_layout_root_id":568,"pvalue":{},"section_param_id":563,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6254,"page_layout_id":616,"page_layout_root_id":568,"pvalue":{},"section_param_id":564,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6255,"page_layout_id":617,"page_layout_root_id":568,"pvalue":{},"section_param_id":565,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6256,"page_layout_id":622,"page_layout_root_id":568,"pvalue":{},"section_param_id":566,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6257,"page_layout_id":624,"page_layout_root_id":568,"pvalue":{},"section_param_id":567,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6258,"page_layout_id":611,"page_layout_root_id":568,"pvalue":{},"section_param_id":569,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6259,"page_layout_id":612,"page_layout_root_id":568,"pvalue":{},"section_param_id":570,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6260,"page_layout_id":620,"page_layout_root_id":568,"pvalue":{},"section_param_id":571,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6261,"page_layout_id":619,"page_layout_root_id":568,"pvalue":{},"section_param_id":572,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6262,"page_layout_id":629,"page_layout_root_id":568,"pvalue":{},"section_param_id":574,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6263,"page_layout_id":593,"page_layout_root_id":568,"pvalue":{},"section_param_id":575,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6264,"page_layout_id":571,"page_layout_root_id":568,"pvalue":{},"section_param_id":576,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6266,"page_layout_id":573,"page_layout_root_id":568,"pvalue":{},"section_param_id":578,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:37:01.000Z","id":6267,"page_layout_id":626,"page_layout_root_id":568,"pvalue":{},"section_param_id":579,"theme_id":16,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:48:20.000Z","id":6688,"page_layout_id":630,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:48:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:48:20.000Z","id":6689,"page_layout_id":630,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:01:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:48:20.000Z","id":6690,"page_layout_id":630,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:48:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:48:20.000Z","id":6691,"page_layout_id":630,"page_layout_root_id":568,"pvalue":{"3unset":"0","3":"background-image:header-bg2.png","5unset":"0","5":"background-repeat:repeat-x"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:01:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:48:20.000Z","id":6692,"page_layout_id":630,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:48:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:48:20.000Z","id":6693,"page_layout_id":630,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:48:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:48:20.000Z","id":6694,"page_layout_id":630,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:48:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:52:19.000Z","id":6695,"page_layout_id":631,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:52:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:52:19.000Z","id":6696,"page_layout_id":631,"page_layout_root_id":568,"pvalue":{"101":"float:none","101unset":"0","15":"height:20px","15unset":"1","21unset":"0","21":"width:980px"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-27T13:38:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:52:19.000Z","id":6697,"page_layout_id":631,"page_layout_root_id":568,"pvalue":{"15hidden":"1","15unset":"1","15":"height:20px"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-27T13:38:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:52:19.000Z","id":6698,"page_layout_id":631,"page_layout_root_id":568,"pvalue":{"2unset":"0","2":"background-color:black"},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:54:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:52:19.000Z","id":6699,"page_layout_id":631,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:52:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:52:19.000Z","id":6700,"page_layout_id":631,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:52:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T11:52:19.000Z","id":6701,"page_layout_id":631,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-09-27T11:52:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6730,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":11,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6731,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":12,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6732,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":13,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6733,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":14,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6734,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{"54unset":"1","54":"text-decoration:none","49unset":"1","49":"color:black"},"section_param_id":15,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:58:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6735,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":481,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6736,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":537,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6737,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:0px 20px 5px 0px"},"section_param_id":16,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:58:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6738,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{"49unset":"1","49":"color:#717071","54unset":"0","54":"text-decoration:none"},"section_param_id":17,"theme_id":16,"unset":null,"updated_at":"2014-10-13T14:59:35.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6739,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":18,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6740,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":19,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6741,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":20,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6742,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":21,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6743,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":22,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6744,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":23,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6745,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":24,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6746,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":25,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6747,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":26,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6748,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":420,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6749,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":423,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6750,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":426,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6751,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":429,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6752,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":432,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6753,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":435,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6754,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":438,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6755,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":441,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6756,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":444,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-27T12:51:39.000Z","id":6757,"page_layout_id":633,"page_layout_root_id":568,"pvalue":{},"section_param_id":477,"theme_id":16,"unset":null,"updated_at":"2014-09-27T12:51:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:16:05.000Z","id":6758,"page_layout_id":634,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:16:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:16:05.000Z","id":6759,"page_layout_id":634,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:36:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:16:05.000Z","id":6760,"page_layout_id":634,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:16:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:16:05.000Z","id":6761,"page_layout_id":634,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:16:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:16:05.000Z","id":6762,"page_layout_id":634,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:16:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:16:05.000Z","id":6763,"page_layout_id":634,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:16:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:16:05.000Z","id":6764,"page_layout_id":634,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:16:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:01.000Z","id":6765,"page_layout_id":635,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:01.000Z","id":6766,"page_layout_id":635,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:34:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:01.000Z","id":6767,"page_layout_id":635,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:01.000Z","id":6768,"page_layout_id":635,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:01.000Z","id":6769,"page_layout_id":635,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:01.000Z","id":6770,"page_layout_id":635,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:01.000Z","id":6771,"page_layout_id":635,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:09.000Z","id":6772,"page_layout_id":636,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:09.000Z","id":6773,"page_layout_id":636,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:35:14.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:09.000Z","id":6774,"page_layout_id":636,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:09.000Z","id":6775,"page_layout_id":636,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:09.000Z","id":6776,"page_layout_id":636,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:09.000Z","id":6777,"page_layout_id":636,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:09.000Z","id":6778,"page_layout_id":636,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:38.000Z","id":6779,"page_layout_id":637,"page_layout_root_id":568,"pvalue":{},"section_param_id":160,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:38.000Z","id":6780,"page_layout_id":637,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:720px","101unset":"0","101":"float:none"},"section_param_id":161,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:58:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:38.000Z","id":6781,"page_layout_id":637,"page_layout_root_id":568,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid none none none","8unset":"0","8":"border-width:1px 0px 0px 0px","6unset":"0","6":"border-color:#d9d9db transparent transparent transparent","32unset":"0","32":"padding:5px 0px 15px 0px"},"section_param_id":162,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:43:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:38.000Z","id":6782,"page_layout_id":637,"page_layout_root_id":568,"pvalue":{},"section_param_id":163,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:38.000Z","id":6783,"page_layout_id":637,"page_layout_root_id":568,"pvalue":{},"section_param_id":164,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:38.000Z","id":6784,"page_layout_id":637,"page_layout_root_id":568,"pvalue":{},"section_param_id":506,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:38.000Z","id":6785,"page_layout_id":637,"page_layout_root_id":568,"pvalue":{},"section_param_id":562,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:50.000Z","id":6786,"page_layout_id":638,"page_layout_root_id":568,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:38:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:50.000Z","id":6787,"page_layout_id":638,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:39:28.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:50.000Z","id":6788,"page_layout_id":638,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:50.000Z","id":6789,"page_layout_id":638,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:50.000Z","id":6790,"page_layout_id":638,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:50.000Z","id":6791,"page_layout_id":638,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:17:50.000Z","id":6792,"page_layout_id":638,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:17:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:18:19.000Z","id":6793,"page_layout_id":639,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:18:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:18:19.000Z","id":6794,"page_layout_id":639,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:31:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:18:19.000Z","id":6795,"page_layout_id":639,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:33:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:18:19.000Z","id":6796,"page_layout_id":639,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:18:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:18:19.000Z","id":6797,"page_layout_id":639,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:18:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:18:19.000Z","id":6798,"page_layout_id":639,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:18:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:18:19.000Z","id":6799,"page_layout_id":639,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:18:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:09.000Z","id":6800,"page_layout_id":640,"page_layout_root_id":568,"pvalue":{},"section_param_id":65,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:09.000Z","id":6801,"page_layout_id":640,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":66,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:46:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:09.000Z","id":6802,"page_layout_id":640,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":67,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:09.000Z","id":6803,"page_layout_id":640,"page_layout_root_id":568,"pvalue":{},"section_param_id":68,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:09.000Z","id":6804,"page_layout_id":640,"page_layout_root_id":568,"pvalue":{"53unset":"0","53":"text-align:center"},"section_param_id":69,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:46:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:09.000Z","id":6805,"page_layout_id":640,"page_layout_root_id":568,"pvalue":{},"section_param_id":487,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:09.000Z","id":6806,"page_layout_id":640,"page_layout_root_id":568,"pvalue":{},"section_param_id":543,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:09.000Z","id":6807,"page_layout_id":640,"page_layout_root_id":568,"pvalue":{},"section_param_id":404,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:23.000Z","id":6808,"page_layout_id":641,"page_layout_root_id":568,"pvalue":{},"section_param_id":110,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:23.000Z","id":6809,"page_layout_id":641,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":111,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:44:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:23.000Z","id":6810,"page_layout_id":641,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 0px 0px 0px"},"section_param_id":112,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:49:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:23.000Z","id":6811,"page_layout_id":641,"page_layout_root_id":568,"pvalue":{},"section_param_id":113,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:23.000Z","id":6812,"page_layout_id":641,"page_layout_root_id":568,"pvalue":{"53unset":"0","53":"text-align:center"},"section_param_id":114,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:47:06.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:23.000Z","id":6813,"page_layout_id":641,"page_layout_root_id":568,"pvalue":{},"section_param_id":496,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:23.000Z","id":6814,"page_layout_id":641,"page_layout_root_id":568,"pvalue":{},"section_param_id":552,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6815,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{},"section_param_id":55,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6816,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":56,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:47:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6817,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 0px 20px 0px"},"section_param_id":57,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:49:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6818,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{},"section_param_id":58,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6819,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{"53unset":"0","53":"text-align:center"},"section_param_id":59,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:47:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6820,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{},"section_param_id":485,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6821,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{},"section_param_id":541,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6822,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{},"section_param_id":294,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6823,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{},"section_param_id":295,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6824,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{"53unset":"1","53":"text-align:center"},"section_param_id":296,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:47:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:20:32.000Z","id":6825,"page_layout_id":642,"page_layout_root_id":568,"pvalue":{},"section_param_id":297,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:20:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:36:48.000Z","id":6826,"page_layout_id":643,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:36:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:36:48.000Z","id":6827,"page_layout_id":643,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:250px"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:45:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:36:48.000Z","id":6828,"page_layout_id":643,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:36:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:36:48.000Z","id":6829,"page_layout_id":643,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:36:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:36:48.000Z","id":6830,"page_layout_id":643,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:36:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:36:48.000Z","id":6831,"page_layout_id":643,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:36:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-28T13:36:48.000Z","id":6832,"page_layout_id":643,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-09-28T13:36:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:19:33.000Z","id":6840,"page_layout_id":645,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:19:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:19:33.000Z","id":6841,"page_layout_id":645,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:54:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:19:33.000Z","id":6842,"page_layout_id":645,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:20px auto auto auto"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:55:20.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:19:33.000Z","id":6843,"page_layout_id":645,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:19:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:19:33.000Z","id":6844,"page_layout_id":645,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:19:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:19:33.000Z","id":6845,"page_layout_id":645,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:19:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:19:33.000Z","id":6846,"page_layout_id":645,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:19:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:20:41.000Z","id":6847,"page_layout_id":646,"page_layout_root_id":568,"pvalue":{},"section_param_id":405,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:20:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:20:41.000Z","id":6848,"page_layout_id":646,"page_layout_root_id":568,"pvalue":{},"section_param_id":406,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:20:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:20:41.000Z","id":6849,"page_layout_id":646,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":407,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:57:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:20:41.000Z","id":6850,"page_layout_id":646,"page_layout_root_id":568,"pvalue":{},"section_param_id":408,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:20:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:20:41.000Z","id":6851,"page_layout_id":646,"page_layout_root_id":568,"pvalue":{},"section_param_id":409,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:20:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:20:41.000Z","id":6852,"page_layout_id":646,"page_layout_root_id":568,"pvalue":{},"section_param_id":529,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:20:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:20:41.000Z","id":6853,"page_layout_id":646,"page_layout_root_id":568,"pvalue":{},"section_param_id":585,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:20:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:23:23.000Z","id":6854,"page_layout_id":647,"page_layout_root_id":568,"pvalue":{},"section_param_id":388,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:23:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:23:23.000Z","id":6855,"page_layout_id":647,"page_layout_root_id":568,"pvalue":{"21":"width:749px","21unset":"0","101unset":"0","101":"float:none"},"section_param_id":389,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:32:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:23:23.000Z","id":6856,"page_layout_id":647,"page_layout_root_id":568,"pvalue":{"15hidden":"1"},"section_param_id":390,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:23:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:23:23.000Z","id":6857,"page_layout_id":647,"page_layout_root_id":568,"pvalue":{},"section_param_id":391,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:23:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:23:23.000Z","id":6858,"page_layout_id":647,"page_layout_root_id":568,"pvalue":{},"section_param_id":392,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:23:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:23:23.000Z","id":6859,"page_layout_id":647,"page_layout_root_id":568,"pvalue":{},"section_param_id":527,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:23:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:23:23.000Z","id":6860,"page_layout_id":647,"page_layout_root_id":568,"pvalue":{},"section_param_id":583,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:23:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-09-29T12:23:23.000Z","id":6861,"page_layout_id":647,"page_layout_root_id":568,"pvalue":{"78":"width:600px","78unset":"0","79":"height:200px","79unset":"0"},"section_param_id":393,"theme_id":16,"unset":null,"updated_at":"2014-09-29T12:23:23.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:29:12.000Z","id":6869,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":631,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:29:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:29:12.000Z","id":6885,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":636,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:29:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:34:47.000Z","id":6901,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":658,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:34:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:34:47.000Z","id":6917,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":664,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:34:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6926,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{},"section_param_id":410,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:50:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6927,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{"101unset":"0","101":"float:right"},"section_param_id":411,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:51:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6928,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:5px 5px 5px 25px"},"section_param_id":412,"theme_id":16,"unset":null,"updated_at":"2014-10-09T14:34:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6929,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{"3unset":"0","3":"background-image:cart.png","4unset":"0","4":"background-position:left center","5unset":"0","5":"background-repeat:no-repeat"},"section_param_id":413,"theme_id":16,"unset":null,"updated_at":"2014-10-09T14:33:46.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6930,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{"49unset":"1","49":"color:white"},"section_param_id":414,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:52:07.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6931,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{},"section_param_id":530,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:50:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6932,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{},"section_param_id":586,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:50:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6933,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{},"section_param_id":415,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:50:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6934,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{},"section_param_id":416,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:50:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6935,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{},"section_param_id":417,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:50:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6936,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:white","54unset":"0","54":"text-decoration:none"},"section_param_id":418,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:52:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6937,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":419,"theme_id":16,"unset":null,"updated_at":"2014-10-13T15:03:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6938,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{},"section_param_id":633,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:50:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6939,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{},"section_param_id":638,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:50:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6940,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{},"section_param_id":660,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:50:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T13:50:38.000Z","id":6941,"page_layout_id":648,"page_layout_root_id":568,"pvalue":{},"section_param_id":666,"theme_id":16,"unset":null,"updated_at":"2014-10-07T13:50:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6942,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":641,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6943,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{"21unset":"0","21":"width:160px"},"section_param_id":642,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:11:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6944,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:10px auto auto auto"},"section_param_id":643,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:15:18.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6945,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":644,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6946,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":645,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6947,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":646,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6948,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":647,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6949,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:20px 5px 10px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent black transparent","31unset":"1","31":"margin:auto auto auto auto"},"section_param_id":648,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:15:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6950,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":649,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6951,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":650,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6952,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{"21unset":"1","21":"width:120px","32unset":"0","32":"padding:8px 0px 0px 0px"},"section_param_id":651,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:15:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6953,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":652,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6954,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":653,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6955,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:gray"},"section_param_id":654,"theme_id":16,"unset":null,"updated_at":"2014-10-08T12:00:18.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6956,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":655,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6957,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":656,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6958,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{"49unset":"0","49":"color:black"},"section_param_id":657,"theme_id":16,"unset":null,"updated_at":"2014-10-08T11:59:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6959,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":663,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-07T14:03:08.000Z","id":6960,"page_layout_id":649,"page_layout_root_id":568,"pvalue":{},"section_param_id":669,"theme_id":16,"unset":null,"updated_at":"2014-10-07T14:03:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-09T09:34:30.000Z","id":6961,"page_layout_id":650,"page_layout_root_id":568,"pvalue":{},"section_param_id":6,"theme_id":16,"unset":null,"updated_at":"2014-10-09T09:34:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-09T09:34:30.000Z","id":6962,"page_layout_id":650,"page_layout_root_id":568,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":16,"unset":null,"updated_at":"2014-10-09T09:35:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-09T09:34:30.000Z","id":6963,"page_layout_id":650,"page_layout_root_id":568,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 15px 20px auto"},"section_param_id":8,"theme_id":16,"unset":null,"updated_at":"2014-10-09T11:42:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-09T09:34:30.000Z","id":6964,"page_layout_id":650,"page_layout_root_id":568,"pvalue":{},"section_param_id":9,"theme_id":16,"unset":null,"updated_at":"2014-10-09T09:34:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-09T09:34:30.000Z","id":6965,"page_layout_id":650,"page_layout_root_id":568,"pvalue":{},"section_param_id":10,"theme_id":16,"unset":null,"updated_at":"2014-10-09T09:34:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-09T09:34:30.000Z","id":6966,"page_layout_id":650,"page_layout_root_id":568,"pvalue":{},"section_param_id":480,"theme_id":16,"unset":null,"updated_at":"2014-10-09T09:34:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-09T09:34:30.000Z","id":6967,"page_layout_id":650,"page_layout_root_id":568,"pvalue":{},"section_param_id":536,"theme_id":16,"unset":null,"updated_at":"2014-10-09T09:34:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-12T00:45:54.000Z","id":6975,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"7unset":"0","7":"border-style:solid none solid none","8unset":"0","8":"border-width:1px 0px 1px 0px","6unset":"0","6":"border-color:#D9D9DB transparent #D9D9DB transparent"},"section_param_id":670,"theme_id":16,"unset":null,"updated_at":"2014-10-12T00:48:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-13T12:48:39.000Z","id":6983,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:0px 0px 5px 0px"},"section_param_id":671,"theme_id":16,"unset":null,"updated_at":"2014-10-13T16:23:24.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-13T12:48:39.000Z","id":6991,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"2unset":"1","2":"background-color:transparent"},"section_param_id":672,"theme_id":16,"unset":null,"updated_at":"2014-10-13T12:49:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-13T12:48:40.000Z","id":6999,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"49unset":"1","49":"color:aqua","27unset":"0","27":"font-weight:bold"},"section_param_id":673,"theme_id":16,"unset":null,"updated_at":"2014-10-13T15:11:36.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-13T12:48:40.000Z","id":7007,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{"32unset":"0","32":"padding:0px 0px 10px 0px"},"section_param_id":674,"theme_id":16,"unset":null,"updated_at":"2014-10-13T16:22:46.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-13T12:48:40.000Z","id":7015,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":675,"theme_id":16,"unset":null,"updated_at":"2014-10-13T12:48:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-10-13T12:48:40.000Z","id":7023,"page_layout_id":568,"page_layout_root_id":568,"pvalue":{},"section_param_id":676,"theme_id":16,"unset":null,"updated_at":"2014-10-13T12:48:40.000Z"}}],"page_layouts":[{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":568,"is_enabled":true,"is_full_html":true,"lft":1,"parent_id":null,"rgt":158,"root_id":568,"section_context":"","section_id":75,"section_instance":2,"site_id":2,"slug":"root","title":"root","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-27T11:48:20.000Z","data_filter":"","data_source":"","data_source_param":"","id":630,"is_enabled":true,"is_full_html":false,"lft":2,"parent_id":568,"rgt":21,"root_id":568,"section_context":"","section_id":2,"section_instance":26,"site_id":2,"slug":"","title":"container26","updated_at":"2014-09-27T11:48:20.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-27T11:52:19.000Z","data_filter":"","data_source":"","data_source_param":"","id":631,"is_enabled":true,"is_full_html":false,"lft":3,"parent_id":630,"rgt":8,"root_id":568,"section_context":"","section_id":2,"section_instance":27,"site_id":2,"slug":"","title":"container27","updated_at":"2014-09-27T11:52:19.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":572,"is_enabled":true,"is_full_html":false,"lft":4,"parent_id":631,"rgt":7,"root_id":568,"section_context":"","section_id":2,"section_instance":21,"site_id":2,"slug":"container--6","title":"container","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":573,"is_enabled":true,"is_full_html":false,"lft":5,"parent_id":572,"rgt":6,"root_id":568,"section_context":"","section_id":101,"section_instance":2,"site_id":2,"slug":"logged-unlogged-menu","title":"logged\u0026unlogged menu","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":569,"is_enabled":true,"is_full_html":false,"lft":9,"parent_id":630,"rgt":20,"root_id":568,"section_context":"","section_id":2,"section_instance":1,"site_id":2,"slug":"header","title":"Header","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":570,"is_enabled":true,"is_full_html":false,"lft":10,"parent_id":569,"rgt":13,"root_id":568,"section_context":"","section_id":2,"section_instance":20,"site_id":2,"slug":"container000","title":"container000","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":571,"is_enabled":true,"is_full_html":false,"lft":11,"parent_id":570,"rgt":12,"root_id":568,"section_context":"","section_id":97,"section_instance":1,"site_id":2,"slug":"logo","title":"Logo","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":574,"is_enabled":true,"is_full_html":false,"lft":14,"parent_id":569,"rgt":19,"root_id":568,"section_context":"","section_id":2,"section_instance":19,"site_id":2,"slug":"container--7","title":"container","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":575,"is_enabled":true,"is_full_html":false,"lft":15,"parent_id":574,"rgt":16,"root_id":568,"section_context":"","section_id":3,"section_instance":3,"site_id":2,"slug":"main-menu","title":"Main menu","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-10-07T13:50:38.000Z","data_filter":"","data_source":"","data_source_param":"","id":648,"is_enabled":true,"is_full_html":false,"lft":17,"parent_id":574,"rgt":18,"root_id":568,"section_context":"","section_id":121,"section_instance":1,"site_id":2,"slug":"","title":"Mini cart21","updated_at":"2014-10-07T13:50:38.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":577,"is_enabled":true,"is_full_html":false,"lft":22,"parent_id":568,"rgt":149,"root_id":568,"section_context":"","section_id":2,"section_instance":2,"site_id":2,"slug":"content","title":"content","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":578,"is_enabled":true,"is_full_html":false,"lft":23,"parent_id":577,"rgt":40,"root_id":568,"section_context":"","section_id":2,"section_instance":4,"site_id":2,"slug":"lftnav","title":"lftnav","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":579,"is_enabled":true,"is_full_html":false,"lft":24,"parent_id":578,"rgt":29,"root_id":568,"section_context":"","section_id":2,"section_instance":12,"site_id":2,"slug":"container--8","title":"container","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":580,"is_enabled":true,"is_full_html":false,"lft":25,"parent_id":579,"rgt":26,"root_id":568,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name","title":"taxonomy name","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":581,"is_enabled":true,"is_full_html":false,"lft":27,"parent_id":579,"rgt":28,"root_id":568,"section_context":"","section_id":6,"section_instance":1,"site_id":2,"slug":"vmenu","title":"vmenu","updated_at":"2014-09-27T11:37:01.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":582,"is_enabled":true,"is_full_html":false,"lft":30,"parent_id":578,"rgt":35,"root_id":568,"section_context":"","section_id":2,"section_instance":13,"site_id":2,"slug":"container--9","title":"container","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":583,"is_enabled":true,"is_full_html":false,"lft":31,"parent_id":582,"rgt":32,"root_id":568,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name--2","title":"taxonomy name","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":584,"is_enabled":true,"is_full_html":false,"lft":33,"parent_id":582,"rgt":34,"root_id":568,"section_context":"","section_id":6,"section_instance":2,"site_id":2,"slug":"vmenu--2","title":"vmenu","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-29T12:19:33.000Z","data_filter":"","data_source":"taxon","data_source_param":"","id":645,"is_enabled":true,"is_full_html":false,"lft":36,"parent_id":578,"rgt":39,"root_id":568,"section_context":"","section_id":2,"section_instance":34,"site_id":2,"slug":"","title":"container34","updated_at":"2014-09-29T12:54:28.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-29T12:20:41.000Z","data_filter":"","data_source":"","data_source_param":"","id":646,"is_enabled":true,"is_full_html":false,"lft":37,"parent_id":645,"rgt":38,"root_id":568,"section_context":"","section_id":119,"section_instance":1,"site_id":2,"slug":"","title":"Taxon icon1","updated_at":"2014-09-29T12:54:23.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":585,"is_enabled":true,"is_full_html":false,"lft":41,"parent_id":577,"rgt":148,"root_id":568,"section_context":"","section_id":2,"section_instance":5,"site_id":2,"slug":"main-content","title":"main content","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-28T13:16:05.000Z","data_filter":"","data_source":"","data_source_param":"","id":634,"is_enabled":true,"is_full_html":false,"lft":42,"parent_id":585,"rgt":63,"root_id":568,"section_context":"home","section_id":2,"section_instance":28,"site_id":2,"slug":"","title":"index","updated_at":"2014-09-28T13:32:26.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-28T13:18:18.000Z","data_filter":"","data_source":"","data_source_param":"","id":639,"is_enabled":true,"is_full_html":false,"lft":43,"parent_id":634,"rgt":46,"root_id":568,"section_context":"","section_id":2,"section_instance":32,"site_id":2,"slug":"","title":"slider container","updated_at":"2014-09-28T13:26:40.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-29T12:23:23.000Z","data_filter":"","data_source":"","data_source_param":"","id":647,"is_enabled":true,"is_full_html":false,"lft":44,"parent_id":639,"rgt":45,"root_id":568,"section_context":"","section_id":114,"section_instance":1,"site_id":2,"slug":"","title":"Slider1","updated_at":"2014-09-29T12:23:23.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-28T13:17:01.000Z","data_filter":"","data_source":"","data_source_param":"","id":635,"is_enabled":true,"is_full_html":false,"lft":47,"parent_id":634,"rgt":62,"root_id":568,"section_context":"","section_id":2,"section_instance":29,"site_id":2,"slug":"","title":"products container","updated_at":"2014-09-28T13:27:14.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-28T13:17:09.000Z","data_filter":"","data_source":"taxon","data_source_param":"","id":636,"is_enabled":true,"is_full_html":false,"lft":48,"parent_id":635,"rgt":61,"root_id":568,"section_context":"","section_id":2,"section_instance":30,"site_id":2,"slug":"","title":"taxon data","updated_at":"2014-09-28T13:28:43.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-28T13:17:38.000Z","data_filter":"","data_source":"","data_source_param":"","id":637,"is_enabled":true,"is_full_html":false,"lft":49,"parent_id":636,"rgt":50,"root_id":568,"section_context":"","section_id":50,"section_instance":2,"site_id":2,"slug":"","title":"taxon name2","updated_at":"2014-09-28T13:17:38.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-28T13:17:50.000Z","data_filter":"","data_source":"gpvs","data_source_param":"","id":638,"is_enabled":true,"is_full_html":false,"lft":51,"parent_id":636,"rgt":60,"root_id":568,"section_context":"","section_id":2,"section_instance":31,"site_id":2,"slug":"","title":"product data","updated_at":"2014-09-28T13:28:51.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-28T13:36:48.000Z","data_filter":"","data_source":"","data_source_param":"","id":643,"is_enabled":true,"is_full_html":false,"lft":52,"parent_id":638,"rgt":59,"root_id":568,"section_context":"","section_id":2,"section_instance":33,"site_id":2,"slug":"","title":"container33","updated_at":"2014-09-28T13:36:48.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-28T13:20:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":640,"is_enabled":true,"is_full_html":false,"lft":53,"parent_id":643,"rgt":54,"root_id":568,"section_context":"","section_id":17,"section_instance":2,"site_id":2,"slug":"","title":"product image2","updated_at":"2014-09-28T13:20:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-28T13:20:23.000Z","data_filter":"","data_source":"","data_source_param":"","id":641,"is_enabled":true,"is_full_html":false,"lft":55,"parent_id":643,"rgt":56,"root_id":568,"section_context":"","section_id":30,"section_instance":3,"site_id":2,"slug":"","title":"product price3","updated_at":"2014-09-28T13:20:23.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-28T13:20:32.000Z","data_filter":"","data_source":"","data_source_param":"","id":642,"is_enabled":true,"is_full_html":false,"lft":57,"parent_id":643,"rgt":58,"root_id":568,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"","title":"product name3","updated_at":"2014-09-28T13:20:32.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":586,"is_enabled":true,"is_full_html":false,"lft":64,"parent_id":585,"rgt":75,"root_id":568,"section_context":"list","section_id":2,"section_instance":6,"site_id":2,"slug":"product-list","title":"product list","updated_at":"2014-09-28T13:32:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"gpvs","data_source_param":"","id":587,"is_enabled":true,"is_full_html":false,"lft":65,"parent_id":586,"rgt":74,"root_id":568,"section_context":"","section_id":2,"section_instance":8,"site_id":2,"slug":"container--10","title":"container","updated_at":"2014-10-09T09:33:20.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-10-09T09:34:30.000Z","data_filter":"","data_source":"","data_source_param":"","id":650,"is_enabled":true,"is_full_html":false,"lft":66,"parent_id":587,"rgt":73,"root_id":568,"section_context":"","section_id":2,"section_instance":35,"site_id":2,"slug":"","title":"container35","updated_at":"2014-10-09T09:34:30.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":588,"is_enabled":true,"is_full_html":false,"lft":67,"parent_id":650,"rgt":68,"root_id":568,"section_context":"","section_id":17,"section_instance":1,"site_id":2,"slug":"product-image","title":"product image","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":590,"is_enabled":true,"is_full_html":false,"lft":69,"parent_id":650,"rgt":70,"root_id":568,"section_context":"","section_id":30,"section_instance":2,"site_id":2,"slug":"product-price","title":"product price","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":1,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":589,"is_enabled":true,"is_full_html":false,"lft":71,"parent_id":650,"rgt":72,"root_id":568,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"product-name","title":"product name","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"this_product","data_source_param":"","id":591,"is_enabled":true,"is_full_html":false,"lft":76,"parent_id":585,"rgt":103,"root_id":568,"section_context":"detail","section_id":2,"section_instance":7,"site_id":2,"slug":"product-detail","title":"product detail","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":592,"is_enabled":true,"is_full_html":false,"lft":77,"parent_id":591,"rgt":82,"root_id":568,"section_context":"","section_id":2,"section_instance":10,"site_id":2,"slug":"container--11","title":"container","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":2,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":593,"is_enabled":true,"is_full_html":false,"lft":78,"parent_id":592,"rgt":79,"root_id":568,"section_context":"","section_id":94,"section_instance":2,"site_id":2,"slug":"image-with-thumbnails","title":"image with thumbnails","updated_at":"2014-09-28T12:14:30.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":594,"is_enabled":true,"is_full_html":false,"lft":80,"parent_id":592,"rgt":81,"root_id":568,"section_context":"","section_id":28,"section_instance":2,"site_id":2,"slug":"product_properties","title":"product_properties","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":595,"is_enabled":true,"is_full_html":false,"lft":83,"parent_id":591,"rgt":102,"root_id":568,"section_context":"","section_id":2,"section_instance":9,"site_id":2,"slug":"container--12","title":"container","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":596,"is_enabled":true,"is_full_html":false,"lft":84,"parent_id":595,"rgt":85,"root_id":568,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"product-name--2","title":"product name","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":597,"is_enabled":true,"is_full_html":false,"lft":86,"parent_id":595,"rgt":87,"root_id":568,"section_context":"","section_id":15,"section_instance":1,"site_id":2,"slug":"product-description","title":"product description","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":598,"is_enabled":true,"is_full_html":false,"lft":88,"parent_id":595,"rgt":101,"root_id":568,"section_context":"","section_id":2,"section_instance":11,"site_id":2,"slug":"container--13","title":"container","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":601,"is_enabled":true,"is_full_html":false,"lft":89,"parent_id":598,"rgt":90,"root_id":568,"section_context":"","section_id":30,"section_instance":1,"site_id":2,"slug":"product-price--2","title":"product price","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-10-07T14:03:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":649,"is_enabled":true,"is_full_html":false,"lft":91,"parent_id":598,"rgt":92,"root_id":568,"section_context":"","section_id":144,"section_instance":1,"site_id":2,"slug":"","title":"grouped option values selector21","updated_at":"2014-10-07T14:03:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:02.000Z","data_filter":"","data_source":"","data_source_param":"","id":600,"is_enabled":true,"is_full_html":false,"lft":93,"parent_id":598,"rgt":100,"root_id":568,"section_context":"","section_id":2,"section_instance":25,"site_id":2,"slug":"container--14","title":"container","updated_at":"2014-09-27T11:37:02.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":602,"is_enabled":true,"is_full_html":false,"lft":94,"parent_id":600,"rgt":99,"root_id":568,"section_context":"","section_id":2,"section_instance":24,"site_id":2,"slug":"container--15","title":"container","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":603,"is_enabled":true,"is_full_html":false,"lft":95,"parent_id":602,"rgt":96,"root_id":568,"section_context":"","section_id":32,"section_instance":2,"site_id":2,"slug":"product-quantity","title":"product quantity","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":604,"is_enabled":true,"is_full_html":false,"lft":97,"parent_id":602,"rgt":98,"root_id":568,"section_context":"","section_id":34,"section_instance":2,"site_id":2,"slug":"product-atc","title":"product atc","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":605,"is_enabled":true,"is_full_html":false,"lft":104,"parent_id":585,"rgt":147,"root_id":568,"section_context":"cart,checkout,thanks,account,signup,login,password","section_id":2,"section_instance":14,"site_id":2,"slug":"other-pages","title":"other pages","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":606,"is_enabled":true,"is_full_html":false,"lft":105,"parent_id":605,"rgt":106,"root_id":568,"section_context":"","section_id":50,"section_instance":1,"site_id":2,"slug":"taxon-name","title":"taxon name","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":607,"is_enabled":true,"is_full_html":false,"lft":107,"parent_id":605,"rgt":112,"root_id":568,"section_context":"cart","section_id":36,"section_instance":1,"site_id":2,"slug":"cart","title":"cart","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":608,"is_enabled":true,"is_full_html":false,"lft":108,"parent_id":607,"rgt":109,"root_id":568,"section_context":"","section_id":42,"section_instance":2,"site_id":2,"slug":"cart-items","title":"cart items","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":609,"is_enabled":true,"is_full_html":false,"lft":110,"parent_id":607,"rgt":111,"root_id":568,"section_context":"","section_id":44,"section_instance":2,"site_id":2,"slug":"order-total-price","title":"order total price","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":610,"is_enabled":true,"is_full_html":false,"lft":113,"parent_id":605,"rgt":118,"root_id":568,"section_context":"checkout","section_id":46,"section_instance":2,"site_id":2,"slug":"checkout","title":"checkout","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":611,"is_enabled":true,"is_full_html":false,"lft":114,"parent_id":610,"rgt":115,"root_id":568,"section_context":"","section_id":69,"section_instance":1,"site_id":2,"slug":"ship-form","title":"ship form","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":612,"is_enabled":true,"is_full_html":false,"lft":116,"parent_id":610,"rgt":117,"root_id":568,"section_context":"","section_id":72,"section_instance":1,"site_id":2,"slug":"payment-form","title":"payment form","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":613,"is_enabled":true,"is_full_html":false,"lft":119,"parent_id":605,"rgt":128,"root_id":568,"section_context":"thanks","section_id":2,"section_instance":18,"site_id":2,"slug":"thanks","title":"thanks","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":614,"is_enabled":true,"is_full_html":false,"lft":120,"parent_id":613,"rgt":125,"root_id":568,"section_context":"","section_id":2,"section_instance":23,"site_id":2,"slug":"container--16","title":"container","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":615,"is_enabled":true,"is_full_html":false,"lft":121,"parent_id":614,"rgt":122,"root_id":568,"section_context":"","section_id":52,"section_instance":1,"site_id":2,"slug":"order-address","title":"order address","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":616,"is_enabled":true,"is_full_html":false,"lft":123,"parent_id":614,"rgt":124,"root_id":568,"section_context":"","section_id":55,"section_instance":1,"site_id":2,"slug":"order-payment","title":"order payment","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":617,"is_enabled":true,"is_full_html":false,"lft":126,"parent_id":613,"rgt":127,"root_id":568,"section_context":"","section_id":58,"section_instance":1,"site_id":2,"slug":"order-items","title":"order items","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":618,"is_enabled":true,"is_full_html":false,"lft":129,"parent_id":605,"rgt":134,"root_id":568,"section_context":"account","section_id":2,"section_instance":17,"site_id":2,"slug":"account","title":"account","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:03.000Z","data_filter":"","data_source":"","data_source_param":"","id":619,"is_enabled":true,"is_full_html":false,"lft":130,"parent_id":618,"rgt":131,"root_id":568,"section_context":"","section_id":85,"section_instance":1,"site_id":2,"slug":"profile","title":"profile","updated_at":"2014-09-27T11:37:03.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":620,"is_enabled":true,"is_full_html":false,"lft":132,"parent_id":618,"rgt":133,"root_id":568,"section_context":"","section_id":82,"section_instance":1,"site_id":2,"slug":"order-list","title":"order list","updated_at":"2014-09-27T11:37:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":621,"is_enabled":true,"is_full_html":false,"lft":135,"parent_id":605,"rgt":138,"root_id":568,"section_context":"login","section_id":2,"section_instance":15,"site_id":2,"slug":"login","title":"login","updated_at":"2014-09-27T11:37:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":622,"is_enabled":true,"is_full_html":false,"lft":136,"parent_id":621,"rgt":137,"root_id":568,"section_context":"","section_id":61,"section_instance":1,"site_id":2,"slug":"login-form","title":"login form","updated_at":"2014-09-27T11:37:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":623,"is_enabled":true,"is_full_html":false,"lft":139,"parent_id":605,"rgt":142,"root_id":568,"section_context":"signup","section_id":2,"section_instance":16,"site_id":2,"slug":"signup","title":"signup","updated_at":"2014-09-27T11:37:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":624,"is_enabled":true,"is_full_html":false,"lft":140,"parent_id":623,"rgt":141,"root_id":568,"section_context":"","section_id":64,"section_instance":1,"site_id":2,"slug":"sign-up-form","title":"sign up form","updated_at":"2014-09-27T11:37:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":625,"is_enabled":true,"is_full_html":false,"lft":143,"parent_id":605,"rgt":146,"root_id":568,"section_context":"password","section_id":2,"section_instance":22,"site_id":2,"slug":"password","title":"password","updated_at":"2014-09-27T11:37:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":626,"is_enabled":true,"is_full_html":false,"lft":144,"parent_id":625,"rgt":145,"root_id":568,"section_context":"","section_id":104,"section_instance":1,"site_id":2,"slug":"password-recover-form","title":"password recover form","updated_at":"2014-09-27T11:37:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":627,"is_enabled":true,"is_full_html":false,"lft":150,"parent_id":568,"rgt":155,"root_id":568,"section_context":"","section_id":2,"section_instance":3,"site_id":2,"slug":"footer","title":"footer","updated_at":"2014-09-27T11:37:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":0,"created_at":"2014-09-27T12:51:38.000Z","data_filter":"","data_source":"","data_source_param":"","id":633,"is_enabled":true,"is_full_html":false,"lft":151,"parent_id":627,"rgt":152,"root_id":568,"section_context":"","section_id":3,"section_instance":3,"site_id":2,"slug":"","title":"hmenu3","updated_at":"2014-09-27T12:51:38.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":628,"is_enabled":true,"is_full_html":false,"lft":153,"parent_id":627,"rgt":154,"root_id":568,"section_context":"","section_id":11,"section_instance":1,"site_id":2,"slug":"copyright","title":"copyright","updated_at":"2014-09-27T11:37:04.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":234,"created_at":"2014-09-27T11:37:04.000Z","data_filter":"","data_source":"","data_source_param":"","id":629,"is_enabled":true,"is_full_html":false,"lft":156,"parent_id":568,"rgt":157,"root_id":568,"section_context":"","section_id":90,"section_instance":2,"site_id":2,"slug":"dialog","title":"dialog","updated_at":"2014-09-27T11:37:04.000Z"}}],"template_files":[{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"16-logo.png","attachment_file_size":3653,"attachment_height":null,"attachment_updated_at":"2014-09-29T11:54:03.000Z","attachment_width":null,"created_at":"2014-09-27T11:37:01.000Z","id":50,"theme_id":16}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"6a5e31b1jw1doccdf5tdqj.jpg","attachment_file_size":16469,"attachment_height":null,"attachment_updated_at":"2014-09-27T11:37:04.000Z","attachment_width":null,"created_at":"2014-09-27T11:37:01.000Z","id":51,"theme_id":16}},{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"header-bg.png","attachment_file_size":2855,"attachment_height":null,"attachment_updated_at":"2014-09-29T11:55:32.000Z","attachment_width":null,"created_at":"2014-09-29T11:55:32.000Z","id":52,"theme_id":16}},{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"header-bg2.png","attachment_file_size":2866,"attachment_height":null,"attachment_updated_at":"2014-09-29T12:01:33.000Z","attachment_width":null,"created_at":"2014-09-29T12:01:33.000Z","id":53,"theme_id":16}},{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"taxonmy-arrow.png","attachment_file_size":254,"attachment_height":null,"attachment_updated_at":"2014-09-29T12:08:00.000Z","attachment_width":null,"created_at":"2014-09-29T12:08:00.000Z","id":54,"theme_id":16}},{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"taxon-arrow.png","attachment_file_size":248,"attachment_height":null,"attachment_updated_at":"2014-09-29T12:09:11.000Z","attachment_width":null,"created_at":"2014-09-29T12:09:11.000Z","id":55,"theme_id":16}},{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"16-logo-mini.png","attachment_file_size":1807,"attachment_height":null,"attachment_updated_at":"2014-09-29T12:35:17.000Z","attachment_width":null,"created_at":"2014-09-29T12:35:17.000Z","id":56,"theme_id":16}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"menu-bg.jpg","attachment_file_size":14805,"attachment_height":null,"attachment_updated_at":"2014-09-29T13:24:03.000Z","attachment_width":null,"created_at":"2014-09-29T13:24:03.000Z","id":57,"theme_id":16}},{"template_file":{"attachment_content_type":"image/png","attachment_file_name":"cart.png","attachment_file_size":325,"attachment_height":null,"attachment_updated_at":"2014-10-09T14:33:05.000Z","attachment_width":null,"created_at":"2014-10-09T14:33:05.000Z","id":58,"theme_id":16}}],"template_releases":[{"template_release":{"created_at":"2014-09-28T13:59:52.000Z","id":23,"name":"just a test","theme_id":16,"updated_at":"2014-09-28T13:59:52.000Z"}}]} \ No newline at end of file diff --git a/spree_theme/db/themes/designs/2_16_1414758979/16-logo-mini.png b/spree_theme/db/themes/designs/2_16_1414758979/16-logo-mini.png deleted file mode 100644 index 23f487bc..00000000 Binary files a/spree_theme/db/themes/designs/2_16_1414758979/16-logo-mini.png and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_16_1414758979/16-logo.png b/spree_theme/db/themes/designs/2_16_1414758979/16-logo.png deleted file mode 100644 index 081ad92c..00000000 Binary files a/spree_theme/db/themes/designs/2_16_1414758979/16-logo.png and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_16_1414758979/6a5e31b1jw1doccdf5tdqj.jpg b/spree_theme/db/themes/designs/2_16_1414758979/6a5e31b1jw1doccdf5tdqj.jpg deleted file mode 100644 index 7fff0f08..00000000 Binary files a/spree_theme/db/themes/designs/2_16_1414758979/6a5e31b1jw1doccdf5tdqj.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_16_1414758979/cart.png b/spree_theme/db/themes/designs/2_16_1414758979/cart.png deleted file mode 100644 index 36cf0018..00000000 Binary files a/spree_theme/db/themes/designs/2_16_1414758979/cart.png and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_16_1414758979/header-bg.png b/spree_theme/db/themes/designs/2_16_1414758979/header-bg.png deleted file mode 100644 index 3407142d..00000000 Binary files a/spree_theme/db/themes/designs/2_16_1414758979/header-bg.png and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_16_1414758979/header-bg2.png b/spree_theme/db/themes/designs/2_16_1414758979/header-bg2.png deleted file mode 100644 index bbbd3eed..00000000 Binary files a/spree_theme/db/themes/designs/2_16_1414758979/header-bg2.png and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_16_1414758979/menu-bg.jpg b/spree_theme/db/themes/designs/2_16_1414758979/menu-bg.jpg deleted file mode 100644 index edeb8b62..00000000 Binary files a/spree_theme/db/themes/designs/2_16_1414758979/menu-bg.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_16_1414758979/taxon-arrow.png b/spree_theme/db/themes/designs/2_16_1414758979/taxon-arrow.png deleted file mode 100644 index fcdfd3f6..00000000 Binary files a/spree_theme/db/themes/designs/2_16_1414758979/taxon-arrow.png and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_16_1414758979/taxonmy-arrow.png b/spree_theme/db/themes/designs/2_16_1414758979/taxonmy-arrow.png deleted file mode 100644 index 547928c8..00000000 Binary files a/spree_theme/db/themes/designs/2_16_1414758979/taxonmy-arrow.png and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_1_1406937516.yml b/spree_theme/db/themes/designs/2_1_1406937516.yml deleted file mode 100644 index e7f76600..00000000 --- a/spree_theme/db/themes/designs/2_1_1406937516.yml +++ /dev/null @@ -1 +0,0 @@ -{"template":{"assigned_resource_ids":{"86":{"spree/template_file":[1]},"88":{"spree/taxon":[0,0]},"90":{"spree/taxon":[0]},"94":{"spree/taxon":[1]},"97":{"spree/taxon":[2]}},"created_at":"2013-04-08T13:27:02.000Z","id":1,"page_layout_root_id":83,"release_id":8,"site_id":2,"slug":"","title":"\u793a\u4f8b\u6a21\u677f","updated_at":"2014-07-31T14:19:41.000Z"},"param_values":[{"computed_pvalue":null,"created_at":"2013-04-08T13:27:02.000Z","id":2134,"page_layout_id":84,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:02.000Z","id":2135,"page_layout_id":84,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:03.000Z","id":2136,"page_layout_id":84,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:03.000Z","id":2137,"page_layout_id":84,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:03.000Z","id":2138,"page_layout_id":84,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:04.000Z","id":2139,"page_layout_id":92,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:21.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:04.000Z","id":2140,"page_layout_id":92,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:04.000Z","id":2141,"page_layout_id":92,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:04.000Z","id":2142,"page_layout_id":92,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:yellow"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:04.000Z","id":2143,"page_layout_id":92,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":2144,"page_layout_id":142,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":2145,"page_layout_id":142,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":2146,"page_layout_id":142,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":2147,"page_layout_id":142,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"0","2":"background-color:#F5F5F5"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":2148,"page_layout_id":142,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":2149,"page_layout_id":93,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":2150,"page_layout_id":93,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:200px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":2151,"page_layout_id":93,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto 10px"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":2152,"page_layout_id":93,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:#FFF8ED"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":2153,"page_layout_id":93,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","49unset":"1","49":"color:black"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":2154,"page_layout_id":100,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":2155,"page_layout_id":100,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:750px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":2156,"page_layout_id":100,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":2157,"page_layout_id":100,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":2158,"page_layout_id":100,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":2159,"page_layout_id":101,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":2160,"page_layout_id":101,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":2161,"page_layout_id":101,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":2162,"page_layout_id":101,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":2163,"page_layout_id":101,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":2164,"page_layout_id":106,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:08.000Z","id":2165,"page_layout_id":106,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"1","21":"width:200px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:08.000Z","id":2166,"page_layout_id":106,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:08.000Z","id":2167,"page_layout_id":106,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:08.000Z","id":2168,"page_layout_id":106,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:08.000Z","id":2169,"page_layout_id":103,"page_layout_root_id":83,"pvalue":{},"section_param_id":65,"theme_id":1,"unset":null,"updated_at":"2013-04-08T13:27:08.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:09.000Z","id":2170,"page_layout_id":103,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111","15unset":"0","15":"height:110px","21unset":"0","21":"width:150px"},"section_param_id":66,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:09.000Z","id":2171,"page_layout_id":103,"page_layout_root_id":83,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","32unset":"0","32":"padding:5px 0px 5px 0px","15unset":"0","15":"height:98px"},"section_param_id":67,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:09.000Z","id":2172,"page_layout_id":103,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":68,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:09.000Z","id":2173,"page_layout_id":103,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111","53unset":"0","53":"text-align:center"},"section_param_id":69,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:10.000Z","id":2174,"page_layout_id":112,"page_layout_root_id":83,"pvalue":{},"section_param_id":60,"theme_id":1,"unset":null,"updated_at":"2013-04-08T13:27:10.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:10.000Z","id":2175,"page_layout_id":112,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":61,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:10.000Z","id":2176,"page_layout_id":112,"page_layout_root_id":83,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 0px 10px 0px"},"section_param_id":62,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:10.000Z","id":2177,"page_layout_id":112,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":63,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:10.000Z","id":2178,"page_layout_id":112,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111","24unset":"0","24":"font-size:90%"},"section_param_id":64,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:22.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:11.000Z","id":2179,"page_layout_id":143,"page_layout_root_id":83,"pvalue":{},"section_param_id":50,"theme_id":1,"unset":null,"updated_at":"2013-04-08T13:27:11.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:11.000Z","id":2180,"page_layout_id":143,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":51,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:11.000Z","id":2181,"page_layout_id":143,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:11.000Z","id":2182,"page_layout_id":143,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":53,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:11.000Z","id":2183,"page_layout_id":143,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":54,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T14:05:42.000Z","id":2184,"page_layout_id":102,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T14:05:42.000Z","id":2185,"page_layout_id":102,"page_layout_root_id":83,"pvalue":{"15":"height:160px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:160px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T14:05:42.000Z","id":2186,"page_layout_id":102,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto","15unset":"1","15":"height:140px","32unset":"1","32":"padding:0px 0px 0px 0px","8unset":"1","8":"border-width:0px 0px 0px 0px"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T14:05:42.000Z","id":2187,"page_layout_id":102,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T14:05:42.000Z","id":2188,"page_layout_id":102,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-09T13:12:32.000Z","id":2189,"page_layout_id":110,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-09T13:12:32.000Z","id":2190,"page_layout_id":110,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:350px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-09T13:12:32.000Z","id":2191,"page_layout_id":110,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-09T13:12:32.000Z","id":2192,"page_layout_id":110,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-09T13:12:32.000Z","id":2193,"page_layout_id":110,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-12T13:44:05.000Z","id":2194,"page_layout_id":107,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-12T13:44:05.000Z","id":2195,"page_layout_id":107,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-12T13:44:05.000Z","id":2196,"page_layout_id":107,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto auto"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-12T13:44:05.000Z","id":2197,"page_layout_id":107,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-12T13:44:05.000Z","id":2198,"page_layout_id":107,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T01:32:40.000Z","id":2199,"page_layout_id":116,"page_layout_root_id":83,"pvalue":{},"section_param_id":110,"theme_id":1,"unset":null,"updated_at":"2014-07-30T23:08:13.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T01:32:40.000Z","id":2200,"page_layout_id":116,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":111,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T01:32:40.000Z","id":2201,"page_layout_id":116,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":112,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T01:32:40.000Z","id":2202,"page_layout_id":116,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":113,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T01:32:40.000Z","id":2203,"page_layout_id":116,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111","27unset":"0","27":"font-weight:bolder","24unset":"0","24":"font-size:110%","49unset":"0","49":"color:#00ADEE"},"section_param_id":114,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T02:35:25.000Z","id":2204,"page_layout_id":113,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T02:35:25.000Z","id":2205,"page_layout_id":113,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"1","21unset":"0","21":"width:450px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T02:35:25.000Z","id":2206,"page_layout_id":113,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:10px auto auto auto"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T02:35:25.000Z","id":2207,"page_layout_id":113,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T02:35:26.000Z","id":2208,"page_layout_id":113,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-16T14:20:10.000Z","id":2209,"page_layout_id":122,"page_layout_root_id":83,"pvalue":{},"section_param_id":125,"theme_id":1,"unset":null,"updated_at":"2013-04-16T14:20:10.000Z"},{"computed_pvalue":null,"created_at":"2013-04-16T14:20:10.000Z","id":2210,"page_layout_id":122,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111","21unset":"1","21":"width:670px"},"section_param_id":126,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-16T14:20:10.000Z","id":2211,"page_layout_id":122,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":127,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-16T14:20:10.000Z","id":2212,"page_layout_id":122,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":128,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-16T14:20:10.000Z","id":2213,"page_layout_id":122,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111","53unset":"1","53":"text-align:right"},"section_param_id":129,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-19T13:03:09.000Z","id":2214,"page_layout_id":105,"page_layout_root_id":83,"pvalue":{},"section_param_id":110,"theme_id":1,"unset":null,"updated_at":"2013-04-19T13:03:09.000Z"},{"computed_pvalue":null,"created_at":"2013-04-19T13:03:10.000Z","id":2215,"page_layout_id":105,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111","21unset":"0","21":"width:150px"},"section_param_id":111,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-19T13:03:10.000Z","id":2216,"page_layout_id":105,"page_layout_root_id":83,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:5px 0px 0px 0px","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":112,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-19T13:03:10.000Z","id":2217,"page_layout_id":105,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":113,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-04-19T13:03:10.000Z","id":2218,"page_layout_id":105,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111","53unset":"0","53":"text-align:center","49unset":"0","49":"color:#00ADEE","27unset":"0","27":"font-weight:bold"},"section_param_id":114,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":2219,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":27,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":2220,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":28,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":2221,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 0px 20px"},"section_param_id":29,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":2222,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":30,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:23.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":2223,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":31,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":2224,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 0px"},"section_param_id":32,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":2225,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{"54unset":"0","54":"text-decoration:none","24unset":"0","24":"font-size:90%","49unset":"0","49":"color:#00ADEE"},"section_param_id":33,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":2226,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":34,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":2227,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":35,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":2228,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":36,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":2229,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":37,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":2230,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":38,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":2231,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":39,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":2232,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":40,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":2233,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":41,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":2234,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":42,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:36:48.000Z","id":2235,"page_layout_id":94,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:36:48.000Z","id":2236,"page_layout_id":94,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:36:48.000Z","id":2237,"page_layout_id":94,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:36:48.000Z","id":2238,"page_layout_id":94,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:36:48.000Z","id":2239,"page_layout_id":94,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:37:55.000Z","id":2240,"page_layout_id":97,"page_layout_root_id":83,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:37:55.000Z","id":2241,"page_layout_id":97,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:37:55.000Z","id":2242,"page_layout_id":97,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:37:56.000Z","id":2243,"page_layout_id":97,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:37:56.000Z","id":2244,"page_layout_id":97,"page_layout_root_id":83,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:16.000Z","id":2245,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":27,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:16.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:16.000Z","id":2246,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":28,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:16.000Z","id":2247,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 20px","32unset":"0","32":"padding:0px 0px 0px 20px"},"section_param_id":29,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:16.000Z","id":2248,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":30,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:16.000Z","id":2249,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":31,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2250,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 0px"},"section_param_id":32,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2251,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{"24unset":"0","24":"font-size:90%","49unset":"0","49":"color:#00ADEE","54unset":"0","54":"text-decoration:none"},"section_param_id":33,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2252,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":34,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2253,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":35,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2254,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":36,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2255,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":37,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2256,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":38,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2257,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":39,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2258,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":40,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2259,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":41,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":2260,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":42,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:58.000Z","id":2261,"page_layout_id":126,"page_layout_root_id":83,"pvalue":{},"section_param_id":210,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:20:58.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:58.000Z","id":2262,"page_layout_id":126,"page_layout_root_id":83,"pvalue":{"21unset":"0","21":"width:360px"},"section_param_id":211,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:58.000Z","id":2263,"page_layout_id":126,"page_layout_root_id":83,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 10px 10px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":212,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:58.000Z","id":2264,"page_layout_id":126,"page_layout_root_id":83,"pvalue":{},"section_param_id":213,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:20:58.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:59.000Z","id":2265,"page_layout_id":126,"page_layout_root_id":83,"pvalue":{},"section_param_id":214,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:20:59.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:59.000Z","id":2266,"page_layout_id":126,"page_layout_root_id":83,"pvalue":{},"section_param_id":215,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:20:59.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:59.000Z","id":2267,"page_layout_id":126,"page_layout_root_id":83,"pvalue":{"2unset":"1","2":"background-color:#000000"},"section_param_id":216,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:59.000Z","id":2268,"page_layout_id":126,"page_layout_root_id":83,"pvalue":{"49unset":"0","49":"color:#00ADEE","53unset":"0","53":"text-align:center"},"section_param_id":217,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:08.000Z","id":2269,"page_layout_id":127,"page_layout_root_id":83,"pvalue":{},"section_param_id":218,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:21:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:08.000Z","id":2270,"page_layout_id":127,"page_layout_root_id":83,"pvalue":{"21unset":"0","21":"width:360px"},"section_param_id":219,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:08.000Z","id":2271,"page_layout_id":127,"page_layout_root_id":83,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 20px 10px 20px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","31unset":"0","31":"margin:10px auto 10px auto"},"section_param_id":220,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:09.000Z","id":2272,"page_layout_id":127,"page_layout_root_id":83,"pvalue":{},"section_param_id":221,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:09.000Z","id":2273,"page_layout_id":127,"page_layout_root_id":83,"pvalue":{},"section_param_id":222,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:09.000Z","id":2274,"page_layout_id":127,"page_layout_root_id":83,"pvalue":{},"section_param_id":223,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:09.000Z","id":2275,"page_layout_id":127,"page_layout_root_id":83,"pvalue":{},"section_param_id":224,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:09.000Z","id":2276,"page_layout_id":127,"page_layout_root_id":83,"pvalue":{"49unset":"0","49":"color:#00ADEE","53unset":"0","53":"text-align:center"},"section_param_id":225,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:35:02.000Z","id":2277,"page_layout_id":120,"page_layout_root_id":83,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:35:02.000Z","id":2278,"page_layout_id":120,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:35:02.000Z","id":2279,"page_layout_id":120,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:35:02.000Z","id":2280,"page_layout_id":120,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:35:02.000Z","id":2281,"page_layout_id":120,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:36:17.000Z","id":2282,"page_layout_id":121,"page_layout_root_id":83,"pvalue":{},"section_param_id":160,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:36:17.000Z","id":2283,"page_layout_id":121,"page_layout_root_id":83,"pvalue":{},"section_param_id":161,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:36:17.000Z","id":2284,"page_layout_id":121,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":162,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:36:17.000Z","id":2285,"page_layout_id":121,"page_layout_root_id":83,"pvalue":{},"section_param_id":163,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:36:18.000Z","id":2286,"page_layout_id":121,"page_layout_root_id":83,"pvalue":{"24unset":"0","24":"font-size:150%"},"section_param_id":164,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":2287,"page_layout_id":130,"page_layout_root_id":83,"pvalue":{},"section_param_id":165,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":2288,"page_layout_id":130,"page_layout_root_id":83,"pvalue":{},"section_param_id":166,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":2289,"page_layout_id":130,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto 10px"},"section_param_id":167,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":2290,"page_layout_id":130,"page_layout_root_id":83,"pvalue":{},"section_param_id":168,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":2291,"page_layout_id":130,"page_layout_root_id":83,"pvalue":{},"section_param_id":169,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":2292,"page_layout_id":130,"page_layout_root_id":83,"pvalue":{"31unset":"0","31":"margin:auto auto 10px auto","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","32unset":"0","32":"padding:5px 0px 5px 0px"},"section_param_id":170,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:22.000Z","id":2293,"page_layout_id":130,"page_layout_root_id":83,"pvalue":{},"section_param_id":171,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:22.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:22.000Z","id":2294,"page_layout_id":130,"page_layout_root_id":83,"pvalue":{"27":"font-weight:bold","54unset":"1","54":"text-decoration:underline","53unset":"1","53":"text-align:left"},"section_param_id":172,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:30.000Z","id":2295,"page_layout_id":131,"page_layout_root_id":83,"pvalue":{},"section_param_id":173,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:30.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":2296,"page_layout_id":131,"page_layout_root_id":83,"pvalue":{"21unset":"0","21":"width:300px"},"section_param_id":174,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":2297,"page_layout_id":131,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":175,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":2298,"page_layout_id":131,"page_layout_root_id":83,"pvalue":{},"section_param_id":176,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":2299,"page_layout_id":131,"page_layout_root_id":83,"pvalue":{},"section_param_id":177,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":2300,"page_layout_id":131,"page_layout_root_id":83,"pvalue":{"31unset":"0","31":"margin:auto auto 10px auto","32unset":"0","32":"padding:5px 0px 5px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":178,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:24.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":2301,"page_layout_id":131,"page_layout_root_id":83,"pvalue":{},"section_param_id":179,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":2302,"page_layout_id":131,"page_layout_root_id":83,"pvalue":{"27":"font-weight:bold","54unset":"1","54":"text-decoration:underline"},"section_param_id":180,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":2303,"page_layout_id":132,"page_layout_root_id":83,"pvalue":{},"section_param_id":181,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":2304,"page_layout_id":132,"page_layout_root_id":83,"pvalue":{},"section_param_id":182,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":2305,"page_layout_id":132,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":183,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":2306,"page_layout_id":132,"page_layout_root_id":83,"pvalue":{},"section_param_id":184,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":2307,"page_layout_id":132,"page_layout_root_id":83,"pvalue":{},"section_param_id":185,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":2308,"page_layout_id":132,"page_layout_root_id":83,"pvalue":{},"section_param_id":186,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":2309,"page_layout_id":132,"page_layout_root_id":83,"pvalue":{},"section_param_id":187,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":2310,"page_layout_id":132,"page_layout_root_id":83,"pvalue":{"27":"font-weight:bold"},"section_param_id":188,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:51.000Z","id":2311,"page_layout_id":134,"page_layout_root_id":83,"pvalue":{},"section_param_id":268,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:51.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:51.000Z","id":2312,"page_layout_id":134,"page_layout_root_id":83,"pvalue":{},"section_param_id":269,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:51.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":2313,"page_layout_id":134,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":270,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":2314,"page_layout_id":134,"page_layout_root_id":83,"pvalue":{},"section_param_id":271,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":2315,"page_layout_id":134,"page_layout_root_id":83,"pvalue":{},"section_param_id":272,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":2316,"page_layout_id":134,"page_layout_root_id":83,"pvalue":{},"section_param_id":273,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":2317,"page_layout_id":134,"page_layout_root_id":83,"pvalue":{},"section_param_id":274,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":2318,"page_layout_id":134,"page_layout_root_id":83,"pvalue":{},"section_param_id":275,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":2319,"page_layout_id":135,"page_layout_root_id":83,"pvalue":{},"section_param_id":260,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":2320,"page_layout_id":135,"page_layout_root_id":83,"pvalue":{},"section_param_id":261,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":2321,"page_layout_id":135,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":262,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":2322,"page_layout_id":135,"page_layout_root_id":83,"pvalue":{},"section_param_id":263,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":2323,"page_layout_id":135,"page_layout_root_id":83,"pvalue":{},"section_param_id":264,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":2324,"page_layout_id":135,"page_layout_root_id":83,"pvalue":{},"section_param_id":265,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":2325,"page_layout_id":135,"page_layout_root_id":83,"pvalue":{},"section_param_id":266,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:02.000Z","id":2326,"page_layout_id":135,"page_layout_root_id":83,"pvalue":{},"section_param_id":267,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:02.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:01.000Z","id":2327,"page_layout_id":136,"page_layout_root_id":83,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:01.000Z","id":2328,"page_layout_id":136,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:01.000Z","id":2329,"page_layout_id":136,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:01.000Z","id":2330,"page_layout_id":136,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:01.000Z","id":2331,"page_layout_id":136,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:32.000Z","id":2332,"page_layout_id":138,"page_layout_root_id":83,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:32.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:33.000Z","id":2333,"page_layout_id":138,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:33.000Z","id":2334,"page_layout_id":138,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:33.000Z","id":2335,"page_layout_id":138,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:33.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:33.000Z","id":2336,"page_layout_id":138,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:33.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":2337,"page_layout_id":137,"page_layout_root_id":83,"pvalue":{},"section_param_id":189,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":2338,"page_layout_id":137,"page_layout_root_id":83,"pvalue":{},"section_param_id":190,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":2339,"page_layout_id":137,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":191,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":2340,"page_layout_id":137,"page_layout_root_id":83,"pvalue":{},"section_param_id":192,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":2341,"page_layout_id":137,"page_layout_root_id":83,"pvalue":{},"section_param_id":193,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":2342,"page_layout_id":137,"page_layout_root_id":83,"pvalue":{},"section_param_id":194,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":2343,"page_layout_id":137,"page_layout_root_id":83,"pvalue":{},"section_param_id":195,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":2344,"page_layout_id":137,"page_layout_root_id":83,"pvalue":{},"section_param_id":196,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":2345,"page_layout_id":139,"page_layout_root_id":83,"pvalue":{},"section_param_id":197,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":2346,"page_layout_id":139,"page_layout_root_id":83,"pvalue":{},"section_param_id":198,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":2347,"page_layout_id":139,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":199,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":2348,"page_layout_id":139,"page_layout_root_id":83,"pvalue":{},"section_param_id":200,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":2349,"page_layout_id":139,"page_layout_root_id":83,"pvalue":{},"section_param_id":201,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":2350,"page_layout_id":139,"page_layout_root_id":83,"pvalue":{},"section_param_id":202,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":2351,"page_layout_id":139,"page_layout_root_id":83,"pvalue":{},"section_param_id":203,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":2352,"page_layout_id":139,"page_layout_root_id":83,"pvalue":{},"section_param_id":204,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:08.000Z","id":2353,"page_layout_id":133,"page_layout_root_id":83,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:08.000Z","id":2354,"page_layout_id":133,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:08.000Z","id":2355,"page_layout_id":133,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:08.000Z","id":2356,"page_layout_id":133,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:09.000Z","id":2357,"page_layout_id":133,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:37.000Z","id":2358,"page_layout_id":128,"page_layout_root_id":83,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:37.000Z","id":2359,"page_layout_id":128,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:37.000Z","id":2360,"page_layout_id":128,"page_layout_root_id":83,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 0px 0px"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:37.000Z","id":2361,"page_layout_id":128,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:37.000Z","id":2362,"page_layout_id":128,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:07.000Z","id":2363,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":11,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:07.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:07.000Z","id":2364,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{"21unset":"1","21":"width:960px"},"section_param_id":12,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2365,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":13,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2366,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{"2unset":"1","2":"background-color:lime"},"section_param_id":14,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2367,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{"27unset":"0","27":"font-weight:bold","49unset":"1","49":"color:#00ADEE"},"section_param_id":15,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2368,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":16,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2369,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{"54unset":"0","54":"text-decoration:none","49unset":"0","49":"color:#00ADEE"},"section_param_id":17,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2370,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":18,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2371,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":19,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2372,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":20,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2373,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":21,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2374,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":22,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":2375,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":23,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:09.000Z","id":2376,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":24,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:09.000Z","id":2377,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":25,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:09.000Z","id":2378,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":26,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:08.000Z","id":2379,"page_layout_id":95,"page_layout_root_id":83,"pvalue":{},"section_param_id":135,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:08.000Z","id":2380,"page_layout_id":95,"page_layout_root_id":83,"pvalue":{"21unset":"0","21":"width:160px"},"section_param_id":136,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":2381,"page_layout_id":95,"page_layout_root_id":83,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","32unset":"0","32":"padding:0px 0px 5px 0px"},"section_param_id":137,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:25.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":2382,"page_layout_id":95,"page_layout_root_id":83,"pvalue":{},"section_param_id":138,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":2383,"page_layout_id":95,"page_layout_root_id":83,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":139,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":2384,"page_layout_id":98,"page_layout_root_id":83,"pvalue":{},"section_param_id":135,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":2385,"page_layout_id":98,"page_layout_root_id":83,"pvalue":{"21unset":"0","21":"width:160px"},"section_param_id":136,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":2386,"page_layout_id":98,"page_layout_root_id":83,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 5px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":137,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":2387,"page_layout_id":98,"page_layout_root_id":83,"pvalue":{},"section_param_id":138,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":2388,"page_layout_id":98,"page_layout_root_id":83,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":139,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":2389,"page_layout_id":123,"page_layout_root_id":83,"pvalue":{},"section_param_id":140,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":2390,"page_layout_id":123,"page_layout_root_id":83,"pvalue":{},"section_param_id":141,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":2391,"page_layout_id":123,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":142,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":2392,"page_layout_id":123,"page_layout_root_id":83,"pvalue":{},"section_param_id":143,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":2393,"page_layout_id":123,"page_layout_root_id":83,"pvalue":{},"section_param_id":144,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":2394,"page_layout_id":124,"page_layout_root_id":83,"pvalue":{},"section_param_id":145,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":2395,"page_layout_id":124,"page_layout_root_id":83,"pvalue":{"101unset":"0","101":"float:right"},"section_param_id":146,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":2396,"page_layout_id":124,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:10px auto auto auto"},"section_param_id":147,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":2397,"page_layout_id":124,"page_layout_root_id":83,"pvalue":{},"section_param_id":148,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":2398,"page_layout_id":124,"page_layout_root_id":83,"pvalue":{},"section_param_id":149,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":2399,"page_layout_id":125,"page_layout_root_id":83,"pvalue":{},"section_param_id":150,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":2400,"page_layout_id":125,"page_layout_root_id":83,"pvalue":{"21unset":"1","21":"width:600px"},"section_param_id":151,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":2401,"page_layout_id":125,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":152,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":2402,"page_layout_id":125,"page_layout_root_id":83,"pvalue":{},"section_param_id":153,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":2403,"page_layout_id":125,"page_layout_root_id":83,"pvalue":{},"section_param_id":154,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"},{"computed_pvalue":null,"created_at":"2013-11-29T02:49:56.000Z","id":2404,"page_layout_id":86,"page_layout_root_id":83,"pvalue":{},"section_param_id":323,"theme_id":1,"unset":null,"updated_at":"2013-11-29T02:49:56.000Z"},{"computed_pvalue":null,"created_at":"2013-11-29T02:49:56.000Z","id":2405,"page_layout_id":86,"page_layout_root_id":83,"pvalue":{"21unset":"1","21":"width:220px","101unset":"1","101":"float:none"},"section_param_id":324,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-29T02:49:57.000Z","id":2406,"page_layout_id":86,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":325,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-11-29T02:49:57.000Z","id":2407,"page_layout_id":86,"page_layout_root_id":83,"pvalue":{},"section_param_id":326,"theme_id":1,"unset":null,"updated_at":"2013-11-29T02:49:57.000Z"},{"computed_pvalue":null,"created_at":"2013-11-29T02:49:57.000Z","id":2408,"page_layout_id":86,"page_layout_root_id":83,"pvalue":{},"section_param_id":327,"theme_id":1,"unset":null,"updated_at":"2013-11-29T02:49:57.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:14:45.000Z","id":2409,"page_layout_id":89,"page_layout_root_id":83,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:14:45.000Z","id":2410,"page_layout_id":89,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"1","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:14:46.000Z","id":2411,"page_layout_id":89,"page_layout_root_id":83,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 6px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","31unset":"0","31":"margin:auto 10px auto 10px"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:14:46.000Z","id":2412,"page_layout_id":89,"page_layout_root_id":83,"pvalue":{"2unset":"1","2":"background-color:green","3unset":"1","3":"background-image:pattern-1.png"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:14:46.000Z","id":2413,"page_layout_id":89,"page_layout_root_id":83,"pvalue":{"49unset":"1","49":"color:teal","25unset":"1","25":"font-style:normal","24unset":"1","24":"font-size:0%","27unset":"1","27":"font-weight:bold"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:15:21.000Z","id":2414,"page_layout_id":91,"page_layout_root_id":83,"pvalue":{},"section_param_id":328,"theme_id":1,"unset":null,"updated_at":"2013-12-03T08:15:21.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:15:21.000Z","id":2415,"page_layout_id":91,"page_layout_root_id":83,"pvalue":{"101unset":"0","101":"float:right"},"section_param_id":329,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:15:21.000Z","id":2416,"page_layout_id":91,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":330,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:15:21.000Z","id":2417,"page_layout_id":91,"page_layout_root_id":83,"pvalue":{},"section_param_id":331,"theme_id":1,"unset":null,"updated_at":"2013-12-03T08:15:21.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:15:21.000Z","id":2418,"page_layout_id":91,"page_layout_root_id":83,"pvalue":{},"section_param_id":332,"theme_id":1,"unset":null,"updated_at":"2013-12-03T08:15:21.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:06:08.000Z","id":2419,"page_layout_id":85,"page_layout_root_id":83,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:06:08.000Z","id":2420,"page_layout_id":85,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:06:08.000Z","id":2421,"page_layout_id":85,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:06:08.000Z","id":2422,"page_layout_id":85,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-12-05T08:06:08.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:06:08.000Z","id":2423,"page_layout_id":85,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-12-05T08:06:08.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:11:48.000Z","id":2424,"page_layout_id":87,"page_layout_root_id":83,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:11:48.000Z","id":2425,"page_layout_id":87,"page_layout_root_id":83,"pvalue":{"101":"float:right","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:11:48.000Z","id":2426,"page_layout_id":87,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:11:48.000Z","id":2427,"page_layout_id":87,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:11:48.000Z","id":2428,"page_layout_id":87,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:53.000Z","id":2429,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{"21":"width:960px","21unset":"0","20":"min-width:960px","20hidden":"1"},"section_param_id":226,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:53.000Z","id":2430,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":227,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:53.000Z","id":2431,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{"85":"clear:both"},"section_param_id":228,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:53.000Z","id":2432,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":229,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:53.000Z","id":2433,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":230,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2434,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":231,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2435,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":232,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2436,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":233,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2437,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":234,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2438,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{"31unset":"0","31":"margin:10px auto 2px auto"},"section_param_id":235,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2439,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":236,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2440,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":237,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2441,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":238,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2442,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":239,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2443,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":240,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":2444,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":241,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":2445,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{"49unset":"0","49":"color:red","24unset":"0","24":"font-size:82%"},"section_param_id":242,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":2446,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":243,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":2447,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":317,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":2448,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":318,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":2449,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":319,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":2450,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":320,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":2451,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":321,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":2452,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":322,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":2453,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":244,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":2454,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":245,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":2455,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":246,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":2456,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{"49unset":"0","49":"color:#00ADEE","24unset":"1","24":"font-size:80%"},"section_param_id":247,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":2457,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":248,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":2458,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{"7unset":"0","7":"border-style:solid none solid none","8unset":"0","8":"border-width:1px 0px 1px 0px","6unset":"0","6":"border-color:#D9D9DB transparent #D9D9DB transparent"},"section_param_id":249,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":2459,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{"32unset":"0","32":"padding:5px 10px 5px 10px"},"section_param_id":250,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":2460,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":251,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":2461,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{"2unset":"0","2":"background-color:#D9D9DB"},"section_param_id":252,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":2462,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":253,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":2463,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":254,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":2464,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":255,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":2465,"page_layout_id":83,"page_layout_root_id":83,"pvalue":{},"section_param_id":256,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":2466,"page_layout_id":104,"page_layout_root_id":83,"pvalue":{},"section_param_id":55,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":2467,"page_layout_id":104,"page_layout_root_id":83,"pvalue":{"21unset":"0","21":"width:150px","15unset":"0","15":"height:34px"},"section_param_id":56,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":2468,"page_layout_id":104,"page_layout_root_id":83,"pvalue":{"15hidden":"1","15unset":"0","15":"height:33px","32unset":"1","32":"padding:0px 0px 0px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #BBBBBB transparent"},"section_param_id":57,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":2469,"page_layout_id":104,"page_layout_root_id":83,"pvalue":{},"section_param_id":58,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":2470,"page_layout_id":104,"page_layout_root_id":83,"pvalue":{},"section_param_id":59,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":2471,"page_layout_id":104,"page_layout_root_id":83,"pvalue":{},"section_param_id":294,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":2472,"page_layout_id":104,"page_layout_root_id":83,"pvalue":{},"section_param_id":295,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":2473,"page_layout_id":104,"page_layout_root_id":83,"pvalue":{"49unset":"0","49":"color:#BBBBBB","27unset":"0","27":"font-weight:bold","24unset":"0","24":"font-size:80%","54unset":"0","54":"text-decoration:none","53unset":"0","53":"text-align:center"},"section_param_id":296,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:58.000Z","id":2474,"page_layout_id":104,"page_layout_root_id":83,"pvalue":{},"section_param_id":297,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:58.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":2475,"page_layout_id":109,"page_layout_root_id":83,"pvalue":{},"section_param_id":105,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":2476,"page_layout_id":109,"page_layout_root_id":83,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":106,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":2477,"page_layout_id":109,"page_layout_root_id":83,"pvalue":{},"section_param_id":107,"theme_id":1,"unset":null,"updated_at":"2014-07-30T23:08:17.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":2478,"page_layout_id":109,"page_layout_root_id":83,"pvalue":{},"section_param_id":108,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":2479,"page_layout_id":109,"page_layout_root_id":83,"pvalue":{},"section_param_id":109,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":2480,"page_layout_id":109,"page_layout_root_id":83,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px","7unset":"0","7":"border-style:solid none solid none","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":302,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":2481,"page_layout_id":109,"page_layout_root_id":83,"pvalue":{"2unset":"0","2":"background-color:transparent"},"section_param_id":303,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":2482,"page_layout_id":109,"page_layout_root_id":83,"pvalue":{},"section_param_id":304,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":2483,"page_layout_id":109,"page_layout_root_id":83,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":305,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":2484,"page_layout_id":109,"page_layout_root_id":83,"pvalue":{},"section_param_id":306,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":2485,"page_layout_id":111,"page_layout_root_id":83,"pvalue":{},"section_param_id":55,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":2486,"page_layout_id":111,"page_layout_root_id":83,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":56,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:26.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":2487,"page_layout_id":111,"page_layout_root_id":83,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 0px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":57,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":2488,"page_layout_id":111,"page_layout_root_id":83,"pvalue":{},"section_param_id":58,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":2489,"page_layout_id":111,"page_layout_root_id":83,"pvalue":{},"section_param_id":59,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":2490,"page_layout_id":111,"page_layout_root_id":83,"pvalue":{},"section_param_id":294,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":2491,"page_layout_id":111,"page_layout_root_id":83,"pvalue":{},"section_param_id":295,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":2492,"page_layout_id":111,"page_layout_root_id":83,"pvalue":{"49unset":"0","49":"color:black","54unset":"0","54":"text-decoration:none","27unset":"0","27":"font-weight:bold","24unset":"0","24":"font-size:150%"},"section_param_id":296,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":2493,"page_layout_id":111,"page_layout_root_id":83,"pvalue":{},"section_param_id":297,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":2494,"page_layout_id":118,"page_layout_root_id":83,"pvalue":{},"section_param_id":115,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":2495,"page_layout_id":118,"page_layout_root_id":83,"pvalue":{},"section_param_id":116,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":2496,"page_layout_id":118,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":117,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":2497,"page_layout_id":118,"page_layout_root_id":83,"pvalue":{},"section_param_id":118,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":2498,"page_layout_id":118,"page_layout_root_id":83,"pvalue":{},"section_param_id":119,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":2499,"page_layout_id":118,"page_layout_root_id":83,"pvalue":{"21unset":"0","21":"width:60px","7unset":"0","7":"border-style:solid solid solid solid","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","8unset":"0","8":"border-width:1px 1px 1px 1px","32unset":"0","32":"padding:7px 10px 7px 10px"},"section_param_id":307,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":2500,"page_layout_id":118,"page_layout_root_id":83,"pvalue":{},"section_param_id":308,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":2501,"page_layout_id":118,"page_layout_root_id":83,"pvalue":{"53unset":"0","53":"text-align:left"},"section_param_id":309,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":2502,"page_layout_id":119,"page_layout_root_id":83,"pvalue":{},"section_param_id":120,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":2503,"page_layout_id":119,"page_layout_root_id":83,"pvalue":{},"section_param_id":121,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":2504,"page_layout_id":119,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto auto 5px"},"section_param_id":122,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":2505,"page_layout_id":119,"page_layout_root_id":83,"pvalue":{},"section_param_id":123,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":2506,"page_layout_id":119,"page_layout_root_id":83,"pvalue":{},"section_param_id":124,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":2507,"page_layout_id":119,"page_layout_root_id":83,"pvalue":{},"section_param_id":310,"theme_id":1,"unset":null,"updated_at":"2014-07-30T23:08:17.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":2508,"page_layout_id":119,"page_layout_root_id":83,"pvalue":{"2unset":"0","2":"background-color:#00ADEE"},"section_param_id":311,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":2509,"page_layout_id":119,"page_layout_root_id":83,"pvalue":{"49unset":"0","49":"color:white","24unset":"1","24":"font-size:14em"},"section_param_id":312,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":2510,"page_layout_id":144,"page_layout_root_id":83,"pvalue":{},"section_param_id":284,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:04.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":2511,"page_layout_id":144,"page_layout_root_id":83,"pvalue":{"21":"width:600px","21unset":"0"},"section_param_id":285,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":2512,"page_layout_id":144,"page_layout_root_id":83,"pvalue":{"7":"border-style:solid solid solid solid","7unset":"0","8":"border-width:1px 1px 1px 1px","8unset":"0","6":"border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC","6unset":"0","15":"height:598px","15hidden":"1"},"section_param_id":286,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":2513,"page_layout_id":144,"page_layout_root_id":83,"pvalue":{"2":"background-color:#FFFFFF","2unset":"0"},"section_param_id":287,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":2514,"page_layout_id":144,"page_layout_root_id":83,"pvalue":{},"section_param_id":288,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:04.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":2515,"page_layout_id":144,"page_layout_root_id":83,"pvalue":{"32":"padding:2px 2px 2px 2px","32unset":"0"},"section_param_id":313,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":2516,"page_layout_id":144,"page_layout_root_id":83,"pvalue":{"2":"background-color:#EEEEEE","2unset":"0"},"section_param_id":314,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:05.000Z","id":2517,"page_layout_id":144,"page_layout_root_id":83,"pvalue":{},"section_param_id":315,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:05.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:05.000Z","id":2518,"page_layout_id":144,"page_layout_root_id":83,"pvalue":{"32":"padding:0 10px 5px 10px","32unset":"0"},"section_param_id":316,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2519,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":333,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2520,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":334,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2521,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":335,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2522,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":336,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2523,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":337,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2524,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":338,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2525,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":339,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2526,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":340,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2527,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":341,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2528,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":342,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2529,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":343,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2530,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":344,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2531,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":345,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2532,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":346,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2533,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":347,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":2534,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":348,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:03:39.000Z","id":2535,"page_layout_id":140,"page_layout_root_id":83,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:03:39.000Z","id":2536,"page_layout_id":140,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:03:39.000Z","id":2537,"page_layout_id":140,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:03:39.000Z","id":2538,"page_layout_id":140,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:03:39.000Z","id":2539,"page_layout_id":140,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":2540,"page_layout_id":141,"page_layout_root_id":83,"pvalue":{},"section_param_id":349,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-05-10T13:08:24.000Z","id":2541,"page_layout_id":141,"page_layout_root_id":83,"pvalue":{},"section_param_id":350,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":2542,"page_layout_id":141,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":351,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":2543,"page_layout_id":141,"page_layout_root_id":83,"pvalue":{},"section_param_id":352,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":2544,"page_layout_id":141,"page_layout_root_id":83,"pvalue":{},"section_param_id":353,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":2545,"page_layout_id":141,"page_layout_root_id":83,"pvalue":{},"section_param_id":354,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":2546,"page_layout_id":141,"page_layout_root_id":83,"pvalue":{},"section_param_id":355,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":2547,"page_layout_id":141,"page_layout_root_id":83,"pvalue":{},"section_param_id":356,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":2548,"page_layout_id":108,"page_layout_root_id":83,"pvalue":{},"section_param_id":289,"theme_id":1,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":2549,"page_layout_id":108,"page_layout_root_id":83,"pvalue":{},"section_param_id":290,"theme_id":1,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":2550,"page_layout_id":108,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":291,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":2551,"page_layout_id":108,"page_layout_root_id":83,"pvalue":{},"section_param_id":292,"theme_id":1,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":2552,"page_layout_id":108,"page_layout_root_id":83,"pvalue":{},"section_param_id":293,"theme_id":1,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":2553,"page_layout_id":108,"page_layout_root_id":83,"pvalue":{"32unset":"0","32":"padding:5px 10px 5px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":299,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":2554,"page_layout_id":108,"page_layout_root_id":83,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","31unset":"0","31":"margin:6px 6px 6px auto"},"section_param_id":301,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-04T14:20:03.000Z","id":2555,"page_layout_id":129,"page_layout_root_id":83,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-04T14:20:03.000Z","id":2556,"page_layout_id":129,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-04T14:20:03.000Z","id":2557,"page_layout_id":129,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-04T14:20:03.000Z","id":2558,"page_layout_id":129,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-03-04T14:20:03.000Z"},{"computed_pvalue":null,"created_at":"2014-03-04T14:20:03.000Z","id":2559,"page_layout_id":129,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-03-04T14:20:03.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:19:56.000Z","id":2560,"page_layout_id":114,"page_layout_root_id":83,"pvalue":{},"section_param_id":357,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:19:56.000Z","id":2561,"page_layout_id":114,"page_layout_root_id":83,"pvalue":{},"section_param_id":358,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:19:56.000Z","id":2562,"page_layout_id":114,"page_layout_root_id":83,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":359,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:19:56.000Z","id":2563,"page_layout_id":114,"page_layout_root_id":83,"pvalue":{},"section_param_id":360,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:19:56.000Z","id":2564,"page_layout_id":114,"page_layout_root_id":83,"pvalue":{},"section_param_id":361,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:42:19.000Z","id":2565,"page_layout_id":117,"page_layout_root_id":83,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:42:19.000Z","id":2566,"page_layout_id":117,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:230px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:42:19.000Z","id":2567,"page_layout_id":117,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:42:19.000Z","id":2568,"page_layout_id":117,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:42:19.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:42:19.000Z","id":2569,"page_layout_id":117,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:42:19.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T15:17:45.000Z","id":2570,"page_layout_id":115,"page_layout_root_id":83,"pvalue":{"85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T15:17:45.000Z","id":2571,"page_layout_id":115,"page_layout_root_id":83,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T15:17:45.000Z","id":2572,"page_layout_id":115,"page_layout_root_id":83,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-07-31T14:19:27.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T15:17:45.000Z","id":2573,"page_layout_id":115,"page_layout_root_id":83,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-03-06T15:17:45.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T15:17:45.000Z","id":2574,"page_layout_id":115,"page_layout_root_id":83,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-03-06T15:17:45.000Z"},{"computed_pvalue":null,"created_at":"2014-07-04T12:47:18.000Z","id":3973,"page_layout_id":103,"page_layout_root_id":83,"pvalue":{},"section_param_id":404,"theme_id":1,"unset":null,"updated_at":"2014-07-04T12:47:18.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4131,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":420,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4135,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":421,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4137,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":421,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4143,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":422,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4148,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":423,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4152,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":424,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4154,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":424,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4160,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":425,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4165,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":426,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4169,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":427,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4171,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":427,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4177,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":428,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4182,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":429,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4186,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":430,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4188,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":430,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4194,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":431,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4199,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":432,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4203,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":433,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4205,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":433,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4211,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":434,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4216,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":435,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4220,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":436,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4222,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":436,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4228,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":437,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4233,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":438,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4237,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":439,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4239,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":439,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4245,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":440,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4250,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":441,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4254,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":442,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4256,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":442,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4262,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":443,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4267,"page_layout_id":90,"page_layout_root_id":83,"pvalue":{},"section_param_id":444,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4271,"page_layout_id":96,"page_layout_root_id":83,"pvalue":{},"section_param_id":445,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4273,"page_layout_id":99,"page_layout_root_id":83,"pvalue":{},"section_param_id":445,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4279,"page_layout_id":88,"page_layout_root_id":83,"pvalue":{},"section_param_id":446,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}],"page_layouts":[{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":83,"is_enabled":true,"is_full_html":true,"lft":1,"parent_id":null,"rgt":124,"root_id":83,"section_context":"","section_id":75,"section_instance":2,"site_id":2,"slug":"root","title":"root","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":84,"is_enabled":true,"is_full_html":false,"lft":2,"parent_id":83,"rgt":17,"root_id":83,"section_context":"","section_id":2,"section_instance":1,"site_id":2,"slug":"header","title":"Header","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":85,"is_enabled":true,"is_full_html":false,"lft":3,"parent_id":84,"rgt":10,"root_id":83,"section_context":"","section_id":2,"section_instance":20,"site_id":2,"slug":"container000","title":"container000","updated_at":"2014-07-16T09:30:58.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":86,"is_enabled":true,"is_full_html":false,"lft":4,"parent_id":85,"rgt":5,"root_id":83,"section_context":"","section_id":97,"section_instance":1,"site_id":2,"slug":"logo","title":"Logo","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":87,"is_enabled":true,"is_full_html":false,"lft":6,"parent_id":85,"rgt":9,"root_id":83,"section_context":"","section_id":2,"section_instance":21,"site_id":2,"slug":"container--6","title":"container","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":88,"is_enabled":true,"is_full_html":false,"lft":7,"parent_id":87,"rgt":8,"root_id":83,"section_context":"","section_id":101,"section_instance":2,"site_id":2,"slug":"logged-unlogged-menu","title":"logged&unlogged menu","updated_at":"2014-07-12T06:27:35.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":89,"is_enabled":true,"is_full_html":false,"lft":11,"parent_id":84,"rgt":16,"root_id":83,"section_context":"","section_id":2,"section_instance":19,"site_id":2,"slug":"container--7","title":"container","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":90,"is_enabled":true,"is_full_html":false,"lft":12,"parent_id":89,"rgt":13,"root_id":83,"section_context":"","section_id":3,"section_instance":3,"site_id":2,"slug":"main-menu","title":"Main menu","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":91,"is_enabled":true,"is_full_html":false,"lft":14,"parent_id":89,"rgt":15,"root_id":83,"section_context":"","section_id":99,"section_instance":1,"site_id":2,"slug":"mini-cart","title":"Mini cart","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":92,"is_enabled":true,"is_full_html":false,"lft":18,"parent_id":83,"rgt":117,"root_id":83,"section_context":"","section_id":2,"section_instance":2,"site_id":2,"slug":"content","title":"content","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":93,"is_enabled":true,"is_full_html":false,"lft":19,"parent_id":92,"rgt":32,"root_id":83,"section_context":"","section_id":2,"section_instance":4,"site_id":2,"slug":"lftnav","title":"lftnav","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":94,"is_enabled":true,"is_full_html":false,"lft":20,"parent_id":93,"rgt":25,"root_id":83,"section_context":"","section_id":2,"section_instance":12,"site_id":2,"slug":"container--8","title":"container","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":95,"is_enabled":true,"is_full_html":false,"lft":21,"parent_id":94,"rgt":22,"root_id":83,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name","title":"taxonomy name","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":96,"is_enabled":true,"is_full_html":false,"lft":23,"parent_id":94,"rgt":24,"root_id":83,"section_context":"","section_id":6,"section_instance":1,"site_id":2,"slug":"vmenu","title":"vmenu","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":97,"is_enabled":true,"is_full_html":false,"lft":26,"parent_id":93,"rgt":31,"root_id":83,"section_context":"","section_id":2,"section_instance":13,"site_id":2,"slug":"container--9","title":"container","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":98,"is_enabled":true,"is_full_html":false,"lft":27,"parent_id":97,"rgt":28,"root_id":83,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name--2","title":"taxonomy name","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":99,"is_enabled":true,"is_full_html":false,"lft":29,"parent_id":97,"rgt":30,"root_id":83,"section_context":"","section_id":6,"section_instance":2,"site_id":2,"slug":"vmenu--2","title":"vmenu","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":100,"is_enabled":true,"is_full_html":false,"lft":33,"parent_id":92,"rgt":116,"root_id":83,"section_context":"","section_id":2,"section_instance":5,"site_id":2,"slug":"main-content","title":"main content","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"gpvs","id":101,"is_enabled":true,"is_full_html":false,"lft":34,"parent_id":100,"rgt":43,"root_id":83,"section_context":"home,list","section_id":2,"section_instance":6,"site_id":2,"slug":"product-list","title":"product list","updated_at":"2014-07-26T09:44:58.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":102,"is_enabled":true,"is_full_html":false,"lft":35,"parent_id":101,"rgt":42,"root_id":83,"section_context":"","section_id":2,"section_instance":8,"site_id":2,"slug":"container--10","title":"container","updated_at":"2014-07-26T09:44:58.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":103,"is_enabled":true,"is_full_html":false,"lft":36,"parent_id":102,"rgt":37,"root_id":83,"section_context":"","section_id":17,"section_instance":1,"site_id":2,"slug":"product-image","title":"product image","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":104,"is_enabled":true,"is_full_html":false,"lft":38,"parent_id":102,"rgt":39,"root_id":83,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"product-name","title":"product name","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":105,"is_enabled":true,"is_full_html":false,"lft":40,"parent_id":102,"rgt":41,"root_id":83,"section_context":"","section_id":30,"section_instance":2,"site_id":2,"slug":"product-price","title":"product price","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"this_product","id":106,"is_enabled":true,"is_full_html":false,"lft":44,"parent_id":100,"rgt":71,"root_id":83,"section_context":"detail","section_id":2,"section_instance":7,"site_id":2,"slug":"product-detail","title":"product detail","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":107,"is_enabled":true,"is_full_html":false,"lft":45,"parent_id":106,"rgt":50,"root_id":83,"section_context":"","section_id":2,"section_instance":10,"site_id":2,"slug":"container--11","title":"container","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":108,"is_enabled":true,"is_full_html":false,"lft":46,"parent_id":107,"rgt":47,"root_id":83,"section_context":"","section_id":94,"section_instance":2,"site_id":2,"slug":"image-with-thumbnails","title":"image with thumbnails","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":109,"is_enabled":true,"is_full_html":false,"lft":48,"parent_id":107,"rgt":49,"root_id":83,"section_context":"","section_id":28,"section_instance":2,"site_id":2,"slug":"product_properties","title":"product_properties","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":110,"is_enabled":true,"is_full_html":false,"lft":51,"parent_id":106,"rgt":70,"root_id":83,"section_context":"","section_id":2,"section_instance":9,"site_id":2,"slug":"container--12","title":"container","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":111,"is_enabled":true,"is_full_html":false,"lft":52,"parent_id":110,"rgt":53,"root_id":83,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"product-name--2","title":"product name","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":112,"is_enabled":true,"is_full_html":false,"lft":54,"parent_id":110,"rgt":55,"root_id":83,"section_context":"","section_id":15,"section_instance":1,"site_id":2,"slug":"product-description","title":"product description","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":113,"is_enabled":true,"is_full_html":false,"lft":56,"parent_id":110,"rgt":69,"root_id":83,"section_context":"","section_id":2,"section_instance":11,"site_id":2,"slug":"container--13","title":"container","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":114,"is_enabled":true,"is_full_html":false,"lft":57,"parent_id":113,"rgt":58,"root_id":83,"section_context":"","section_id":107,"section_instance":1,"site_id":2,"slug":"product-option-values","title":"Product option values","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":115,"is_enabled":true,"is_full_html":false,"lft":59,"parent_id":113,"rgt":68,"root_id":83,"section_context":"","section_id":2,"section_instance":25,"site_id":2,"slug":"container--14","title":"container","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":116,"is_enabled":true,"is_full_html":false,"lft":60,"parent_id":115,"rgt":61,"root_id":83,"section_context":"","section_id":30,"section_instance":1,"site_id":2,"slug":"product-price--2","title":"product price","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":117,"is_enabled":true,"is_full_html":false,"lft":62,"parent_id":115,"rgt":67,"root_id":83,"section_context":"","section_id":2,"section_instance":24,"site_id":2,"slug":"container--15","title":"container","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":118,"is_enabled":true,"is_full_html":false,"lft":63,"parent_id":117,"rgt":64,"root_id":83,"section_context":"","section_id":32,"section_instance":2,"site_id":2,"slug":"product-quantity","title":"product quantity","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":119,"is_enabled":true,"is_full_html":false,"lft":65,"parent_id":117,"rgt":66,"root_id":83,"section_context":"","section_id":34,"section_instance":2,"site_id":2,"slug":"product-atc","title":"product atc","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":120,"is_enabled":true,"is_full_html":false,"lft":72,"parent_id":100,"rgt":115,"root_id":83,"section_context":"cart,checkout,thanks,account,signup,login,password","section_id":2,"section_instance":14,"site_id":2,"slug":"other-pages","title":"other pages","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":121,"is_enabled":true,"is_full_html":false,"lft":73,"parent_id":120,"rgt":74,"root_id":83,"section_context":"","section_id":50,"section_instance":1,"site_id":2,"slug":"taxon-name","title":"taxon name","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":122,"is_enabled":true,"is_full_html":false,"lft":75,"parent_id":120,"rgt":80,"root_id":83,"section_context":"cart","section_id":36,"section_instance":1,"site_id":2,"slug":"cart","title":"cart","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":123,"is_enabled":true,"is_full_html":false,"lft":76,"parent_id":122,"rgt":77,"root_id":83,"section_context":"","section_id":42,"section_instance":2,"site_id":2,"slug":"cart-items","title":"cart items","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":124,"is_enabled":true,"is_full_html":false,"lft":78,"parent_id":122,"rgt":79,"root_id":83,"section_context":"","section_id":44,"section_instance":2,"site_id":2,"slug":"order-total-price","title":"order total price","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":125,"is_enabled":true,"is_full_html":false,"lft":81,"parent_id":120,"rgt":86,"root_id":83,"section_context":"checkout","section_id":46,"section_instance":2,"site_id":2,"slug":"checkout","title":"checkout","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":126,"is_enabled":true,"is_full_html":false,"lft":82,"parent_id":125,"rgt":83,"root_id":83,"section_context":"","section_id":69,"section_instance":1,"site_id":2,"slug":"ship-form","title":"ship form","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":127,"is_enabled":true,"is_full_html":false,"lft":84,"parent_id":125,"rgt":85,"root_id":83,"section_context":"","section_id":72,"section_instance":1,"site_id":2,"slug":"payment-form","title":"payment form","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":128,"is_enabled":true,"is_full_html":false,"lft":87,"parent_id":120,"rgt":96,"root_id":83,"section_context":"thanks","section_id":2,"section_instance":18,"site_id":2,"slug":"thanks","title":"thanks","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":129,"is_enabled":true,"is_full_html":false,"lft":88,"parent_id":128,"rgt":93,"root_id":83,"section_context":"","section_id":2,"section_instance":23,"site_id":2,"slug":"container--16","title":"container","updated_at":"2014-07-12T06:27:36.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":130,"is_enabled":true,"is_full_html":false,"lft":89,"parent_id":129,"rgt":90,"root_id":83,"section_context":"","section_id":52,"section_instance":1,"site_id":2,"slug":"order-address","title":"order address","updated_at":"2014-07-12T06:27:37.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":131,"is_enabled":true,"is_full_html":false,"lft":91,"parent_id":129,"rgt":92,"root_id":83,"section_context":"","section_id":55,"section_instance":1,"site_id":2,"slug":"order-payment","title":"order payment","updated_at":"2014-07-12T06:27:37.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":132,"is_enabled":true,"is_full_html":false,"lft":94,"parent_id":128,"rgt":95,"root_id":83,"section_context":"","section_id":58,"section_instance":1,"site_id":2,"slug":"order-items","title":"order items","updated_at":"2014-07-12T06:27:37.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":133,"is_enabled":true,"is_full_html":false,"lft":97,"parent_id":120,"rgt":102,"root_id":83,"section_context":"account","section_id":2,"section_instance":17,"site_id":2,"slug":"account","title":"account","updated_at":"2014-07-12T06:27:37.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":134,"is_enabled":true,"is_full_html":false,"lft":98,"parent_id":133,"rgt":99,"root_id":83,"section_context":"","section_id":85,"section_instance":1,"site_id":2,"slug":"profile","title":"profile","updated_at":"2014-07-12T06:27:37.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":135,"is_enabled":true,"is_full_html":false,"lft":100,"parent_id":133,"rgt":101,"root_id":83,"section_context":"","section_id":82,"section_instance":1,"site_id":2,"slug":"order-list","title":"order list","updated_at":"2014-07-12T06:27:37.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":136,"is_enabled":true,"is_full_html":false,"lft":103,"parent_id":120,"rgt":106,"root_id":83,"section_context":"login","section_id":2,"section_instance":15,"site_id":2,"slug":"login","title":"login","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":137,"is_enabled":true,"is_full_html":false,"lft":104,"parent_id":136,"rgt":105,"root_id":83,"section_context":"","section_id":61,"section_instance":1,"site_id":2,"slug":"login-form","title":"login form","updated_at":"2014-07-12T06:27:37.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":138,"is_enabled":true,"is_full_html":false,"lft":107,"parent_id":120,"rgt":110,"root_id":83,"section_context":"signup","section_id":2,"section_instance":16,"site_id":2,"slug":"signup","title":"signup","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":139,"is_enabled":true,"is_full_html":false,"lft":108,"parent_id":138,"rgt":109,"root_id":83,"section_context":"","section_id":64,"section_instance":1,"site_id":2,"slug":"sign-up-form","title":"sign up form","updated_at":"2014-07-12T06:27:37.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":140,"is_enabled":true,"is_full_html":false,"lft":111,"parent_id":120,"rgt":114,"root_id":83,"section_context":"password","section_id":2,"section_instance":22,"site_id":2,"slug":"password","title":"password","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":141,"is_enabled":true,"is_full_html":false,"lft":112,"parent_id":140,"rgt":113,"root_id":83,"section_context":"","section_id":104,"section_instance":1,"site_id":2,"slug":"password-recover-form","title":"password recover form","updated_at":"2014-07-12T06:27:37.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":142,"is_enabled":true,"is_full_html":false,"lft":118,"parent_id":83,"rgt":121,"root_id":83,"section_context":"","section_id":2,"section_instance":3,"site_id":2,"slug":"footer","title":"footer","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":143,"is_enabled":true,"is_full_html":false,"lft":119,"parent_id":142,"rgt":120,"root_id":83,"section_context":"","section_id":11,"section_instance":1,"site_id":2,"slug":"copyright","title":"copyright","updated_at":"2014-05-10T13:08:24.000Z"},{"copy_from_root_id":1,"created_at":"2014-05-10T13:08:24.000Z","data_filter":"","data_source":"","id":144,"is_enabled":true,"is_full_html":false,"lft":122,"parent_id":83,"rgt":123,"root_id":83,"section_context":"","section_id":90,"section_instance":2,"site_id":2,"slug":"dialog","title":"dialog","updated_at":"2014-07-12T06:27:37.000Z"}],"template_files":[{"attachment_content_type":"image/gif","attachment_file_name":"logo.gif","attachment_file_size":1574,"attachment_height":null,"attachment_updated_at":"2013-05-12T13:29:47.000Z","attachment_width":null,"created_at":"2013-05-12T13:29:53.000Z","id":1,"theme_id":1},{"attachment_content_type":"image/jpeg","attachment_file_name":"6a5e31b1jw1doccdf5tdqj.jpg","attachment_file_size":16469,"attachment_height":null,"attachment_updated_at":"2014-07-03T15:26:52.000Z","attachment_width":null,"created_at":"2014-07-03T15:26:52.000Z","id":16,"theme_id":1}],"template_releases":[{"created_at":"2013-05-12T13:29:53.000Z","id":1,"name":"First theme released","theme_id":1,"updated_at":"2013-05-12T13:29:47.000Z"},{"created_at":"2014-02-16T13:05:22.000Z","id":2,"name":"just a test","theme_id":1,"updated_at":"2014-02-16T13:05:22.000Z"},{"created_at":"2014-02-20T14:39:05.000Z","id":3,"name":"just a test","theme_id":1,"updated_at":"2014-02-20T14:39:05.000Z"},{"created_at":"2014-03-02T06:58:26.000Z","id":4,"name":"just a test","theme_id":1,"updated_at":"2014-03-02T06:58:26.000Z"},{"created_at":"2014-04-03T14:04:43.000Z","id":5,"name":"just a test","theme_id":1,"updated_at":"2014-04-03T14:04:43.000Z"},{"created_at":"2014-07-26T08:14:37.000Z","id":8,"name":"just a test","theme_id":1,"updated_at":"2014-07-26T08:14:37.000Z"}]} \ No newline at end of file diff --git a/spree_theme/db/themes/designs/2_1_1406937516/6a5e31b1jw1doccdf5tdqj.jpg b/spree_theme/db/themes/designs/2_1_1406937516/6a5e31b1jw1doccdf5tdqj.jpg deleted file mode 100644 index 7fff0f08..00000000 Binary files a/spree_theme/db/themes/designs/2_1_1406937516/6a5e31b1jw1doccdf5tdqj.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_1_1406937516/logo.gif b/spree_theme/db/themes/designs/2_1_1406937516/logo.gif deleted file mode 100644 index 2782a6b2..00000000 Binary files a/spree_theme/db/themes/designs/2_1_1406937516/logo.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_1_1408541455.yml b/spree_theme/db/themes/designs/2_1_1408541455.yml deleted file mode 100644 index c19a0724..00000000 --- a/spree_theme/db/themes/designs/2_1_1408541455.yml +++ /dev/null @@ -1,7861 +0,0 @@ ---- -template: !ruby/object:Spree::TemplateTheme - attributes: - id: 1 - site_id: 2 - page_layout_root_id: 83 - release_id: 8 - title: 示例模板 - slug: '' - assigned_resource_ids: - '86': - :spree/template_file: - - 1 - '88': - :spree/taxon: - - 0 - - 0 - '90': - :spree/taxon: - - 0 - '94': - :spree/taxon: - - 1 - '97': - :spree/taxon: - - 2 - created_at: 2013-04-08 13:27:02.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -param_values: -- !ruby/object:Spree::ParamValue - attributes: - id: 2134 - page_layout_root_id: 83 - page_layout_id: 84 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:02.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &106647770 - id: 2135 - page_layout_root_id: 83 - page_layout_id: 84 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:02.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2136 - page_layout_root_id: 83 - page_layout_id: 84 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto 20px auto - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2137 - page_layout_root_id: 83 - page_layout_id: 84 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2138 - page_layout_root_id: 83 - page_layout_id: 84 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2139 - page_layout_root_id: 83 - page_layout_id: 92 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2140 - page_layout_root_id: 83 - page_layout_id: 92 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2141 - page_layout_root_id: 83 - page_layout_id: 92 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2142 - page_layout_root_id: 83 - page_layout_id: 92 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - 2unset: '1' - '2': background-color:yellow - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2143 - page_layout_root_id: 83 - page_layout_id: 92 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-08-09 07:34:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2144 - page_layout_root_id: 83 - page_layout_id: 142 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2145 - page_layout_root_id: 83 - page_layout_id: 142 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2146 - page_layout_root_id: 83 - page_layout_id: 142 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2147 - page_layout_root_id: 83 - page_layout_id: 142 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - 2unset: '0' - '2': background-color:#F5F5F5 - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2148 - page_layout_root_id: 83 - page_layout_id: 142 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2149 - page_layout_root_id: 83 - page_layout_id: 93 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2150 - page_layout_root_id: 83 - page_layout_id: 93 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:200px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2151 - page_layout_root_id: 83 - page_layout_id: 93 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto 10px auto 10px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2152 - page_layout_root_id: 83 - page_layout_id: 93 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - 2unset: '1' - '2': background-color:#FFF8ED - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2153 - page_layout_root_id: 83 - page_layout_id: 93 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - 49unset: '1' - '49': color:black - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2154 - page_layout_root_id: 83 - page_layout_id: 100 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2155 - page_layout_root_id: 83 - page_layout_id: 100 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:750px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2156 - page_layout_root_id: 83 - page_layout_id: 100 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2157 - page_layout_root_id: 83 - page_layout_id: 100 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2158 - page_layout_root_id: 83 - page_layout_id: 100 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2159 - page_layout_root_id: 83 - page_layout_id: 101 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2160 - page_layout_root_id: 83 - page_layout_id: 101 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2161 - page_layout_root_id: 83 - page_layout_id: 101 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2162 - page_layout_root_id: 83 - page_layout_id: 101 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2163 - page_layout_root_id: 83 - page_layout_id: 101 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2164 - page_layout_root_id: 83 - page_layout_id: 106 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2165 - page_layout_root_id: 83 - page_layout_id: 106 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '1' - '21': width:200px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2166 - page_layout_root_id: 83 - page_layout_id: 106 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2167 - page_layout_root_id: 83 - page_layout_id: 106 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2168 - page_layout_root_id: 83 - page_layout_id: 106 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2169 - page_layout_root_id: 83 - page_layout_id: 103 - section_param_id: 65 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-08 13:27:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2170 - page_layout_root_id: 83 - page_layout_id: 103 - section_param_id: 66 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - 15unset: '0' - '15': height:110px - 21unset: '0' - '21': width:150px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2171 - page_layout_root_id: 83 - page_layout_id: 103 - section_param_id: 67 - theme_id: 1 - pvalue: - 15hidden: '1' - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 32unset: '0' - '32': padding:5px 0px 5px 0px - 15unset: '0' - '15': height:98px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2172 - page_layout_root_id: 83 - page_layout_id: 103 - section_param_id: 68 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2173 - page_layout_root_id: 83 - page_layout_id: 103 - section_param_id: 69 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - 53unset: '0' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2174 - page_layout_root_id: 83 - page_layout_id: 112 - section_param_id: 60 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-04-08 13:27:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2175 - page_layout_root_id: 83 - page_layout_id: 112 - section_param_id: 61 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2176 - page_layout_root_id: 83 - page_layout_id: 112 - section_param_id: 62 - theme_id: 1 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:10px 0px 10px 0px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2177 - page_layout_root_id: 83 - page_layout_id: 112 - section_param_id: 63 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2178 - page_layout_root_id: 83 - page_layout_id: 112 - section_param_id: 64 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - 24unset: '0' - '24': font-size:90% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2179 - page_layout_root_id: 83 - page_layout_id: 143 - section_param_id: 50 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2180 - page_layout_root_id: 83 - page_layout_id: 143 - section_param_id: 51 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2181 - page_layout_root_id: 83 - page_layout_id: 143 - section_param_id: 52 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2182 - page_layout_root_id: 83 - page_layout_id: 143 - section_param_id: 53 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2183 - page_layout_root_id: 83 - page_layout_id: 143 - section_param_id: 54 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2184 - page_layout_root_id: 83 - page_layout_id: 102 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - 85unset: '0' - '85': clear:both - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-08-09 07:34:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2185 - page_layout_root_id: 83 - page_layout_id: 102 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:160px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:160px - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2186 - page_layout_root_id: 83 - page_layout_id: 102 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto 20px auto - 15unset: '1' - '15': height:140px - 32unset: '1' - '32': padding:0px 0px 0px 0px - 8unset: '1' - '8': border-width:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2187 - page_layout_root_id: 83 - page_layout_id: 102 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2188 - page_layout_root_id: 83 - page_layout_id: 102 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2189 - page_layout_root_id: 83 - page_layout_id: 110 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2190 - page_layout_root_id: 83 - page_layout_id: 110 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:350px - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2191 - page_layout_root_id: 83 - page_layout_id: 110 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2192 - page_layout_root_id: 83 - page_layout_id: 110 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2193 - page_layout_root_id: 83 - page_layout_id: 110 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2194 - page_layout_root_id: 83 - page_layout_id: 107 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2195 - page_layout_root_id: 83 - page_layout_id: 107 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2196 - page_layout_root_id: 83 - page_layout_id: 107 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto 10px auto auto - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2197 - page_layout_root_id: 83 - page_layout_id: 107 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2198 - page_layout_root_id: 83 - page_layout_id: 107 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2199 - page_layout_root_id: 83 - page_layout_id: 116 - section_param_id: 110 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-07-30 23:08:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2200 - page_layout_root_id: 83 - page_layout_id: 116 - section_param_id: 111 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2201 - page_layout_root_id: 83 - page_layout_id: 116 - section_param_id: 112 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2202 - page_layout_root_id: 83 - page_layout_id: 116 - section_param_id: 113 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2203 - page_layout_root_id: 83 - page_layout_id: 116 - section_param_id: 114 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - 27unset: '0' - '27': font-weight:bolder - 24unset: '0' - '24': font-size:110% - 49unset: '0' - '49': color:#00ADEE - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &106563270 - id: 2204 - page_layout_root_id: 83 - page_layout_id: 113 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - 85unset: '0' - '85': clear:both - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2205 - page_layout_root_id: 83 - page_layout_id: 113 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '1' - 21unset: '0' - '21': width:450px - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2206 - page_layout_root_id: 83 - page_layout_id: 113 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:10px auto auto auto - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2207 - page_layout_root_id: 83 - page_layout_id: 113 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2208 - page_layout_root_id: 83 - page_layout_id: 113 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:26.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2209 - page_layout_root_id: 83 - page_layout_id: 122 - section_param_id: 125 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2013-04-16 14:20:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2210 - page_layout_root_id: 83 - page_layout_id: 122 - section_param_id: 126 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - *106647770: '1' - '21': width:670px - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2211 - page_layout_root_id: 83 - page_layout_id: 122 - section_param_id: 127 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2212 - page_layout_root_id: 83 - page_layout_id: 122 - section_param_id: 128 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2213 - page_layout_root_id: 83 - page_layout_id: 122 - section_param_id: 129 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - 53unset: '1' - '53': text-align:right - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2214 - page_layout_root_id: 83 - page_layout_id: 105 - section_param_id: 110 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:09.000000000 Z - updated_at: 2013-04-19 13:03:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2215 - page_layout_root_id: 83 - page_layout_id: 105 - section_param_id: 111 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - 21unset: '0' - '21': width:150px - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2216 - page_layout_root_id: 83 - page_layout_id: 105 - section_param_id: 112 - theme_id: 1 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:5px 0px 0px 0px - 31unset: '0' - '31': margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2217 - page_layout_root_id: 83 - page_layout_id: 105 - section_param_id: 113 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2218 - page_layout_root_id: 83 - page_layout_id: 105 - section_param_id: 114 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - 53unset: '0' - '53': text-align:center - 49unset: '0' - '49': color:#00ADEE - 27unset: '0' - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2219 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 27 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2220 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 28 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2221 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 29 - theme_id: 1 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:0px 0px 0px 20px - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2222 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 30 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2223 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 31 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2224 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 32 - theme_id: 1 - pvalue: - 32unset: '0' - '32': padding:5px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2225 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 33 - theme_id: 1 - pvalue: - 54unset: '0' - '54': text-decoration:none - 24unset: '0' - '24': font-size:90% - 49unset: '0' - '49': color:#00ADEE - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2226 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 34 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2227 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 35 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2228 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 36 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2229 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 37 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2230 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 38 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2231 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 39 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2232 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 40 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2233 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 41 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2234 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 42 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2235 - page_layout_root_id: 83 - page_layout_id: 94 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2236 - page_layout_root_id: 83 - page_layout_id: 94 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2237 - page_layout_root_id: 83 - page_layout_id: 94 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto 20px auto - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2238 - page_layout_root_id: 83 - page_layout_id: 94 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2239 - page_layout_root_id: 83 - page_layout_id: 94 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2240 - page_layout_root_id: 83 - page_layout_id: 97 - section_param_id: 6 - theme_id: 1 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2241 - page_layout_root_id: 83 - page_layout_id: 97 - section_param_id: 7 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2242 - page_layout_root_id: 83 - page_layout_id: 97 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2243 - page_layout_root_id: 83 - page_layout_id: 97 - section_param_id: 9 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:56.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2244 - page_layout_root_id: 83 - page_layout_id: 97 - section_param_id: 10 - theme_id: 1 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:56.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2245 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 27 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2013-10-05 00:38:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2246 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 28 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2247 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 29 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '1' - '31': margin:auto auto auto 20px - 32unset: '0' - '32': padding:0px 0px 0px 20px - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2248 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 30 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2249 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 31 - theme_id: 1 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2250 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 32 - theme_id: 1 - pvalue: - 32unset: '0' - '32': padding:5px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2251 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 33 - theme_id: 1 - pvalue: - 24unset: '0' - '24': font-size:90% - 49unset: '0' - '49': color:#00ADEE - 54unset: '0' - '54': text-decoration:none - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2252 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 34 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2253 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 35 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2254 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 36 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2255 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 37 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2256 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 38 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2257 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 39 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2258 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 40 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2259 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 41 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2260 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 42 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2261 - page_layout_root_id: 83 - page_layout_id: 126 - section_param_id: 210 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2013-11-02 09:20:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2262 - page_layout_root_id: 83 - page_layout_id: 126 - section_param_id: 211 - theme_id: 1 - pvalue: - 21unset: '0' - '21': width:360px - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2263 - page_layout_root_id: 83 - page_layout_id: 126 - section_param_id: 212 - theme_id: 1 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:10px 10px 10px 10px - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2264 - page_layout_root_id: 83 - page_layout_id: 126 - section_param_id: 213 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2013-11-02 09:20:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2265 - page_layout_root_id: 83 - page_layout_id: 126 - section_param_id: 214 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2013-11-02 09:20:59.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &106806970 - id: 2266 - page_layout_root_id: 83 - page_layout_id: 126 - section_param_id: 215 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2013-11-02 09:20:59.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2267 - page_layout_root_id: 83 - page_layout_id: 126 - section_param_id: 216 - theme_id: 1 - pvalue: - 2unset: '1' - '2': background-color:#000000 - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2268 - page_layout_root_id: 83 - page_layout_id: 126 - section_param_id: 217 - theme_id: 1 - pvalue: - 49unset: '0' - '49': color:#00ADEE - 53unset: '0' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2269 - page_layout_root_id: 83 - page_layout_id: 127 - section_param_id: 218 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2013-11-02 09:21:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2270 - page_layout_root_id: 83 - page_layout_id: 127 - section_param_id: 219 - theme_id: 1 - pvalue: - 21unset: '0' - '21': width:360px - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2271 - page_layout_root_id: 83 - page_layout_id: 127 - section_param_id: 220 - theme_id: 1 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:10px 20px 10px 20px - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 31unset: '0' - '31': margin:10px auto 10px auto - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2272 - page_layout_root_id: 83 - page_layout_id: 127 - section_param_id: 221 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2273 - page_layout_root_id: 83 - page_layout_id: 127 - section_param_id: 222 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2274 - page_layout_root_id: 83 - page_layout_id: 127 - section_param_id: 223 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2275 - page_layout_root_id: 83 - page_layout_id: 127 - section_param_id: 224 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2276 - page_layout_root_id: 83 - page_layout_id: 127 - section_param_id: 225 - theme_id: 1 - pvalue: - 49unset: '0' - '49': color:#00ADEE - 53unset: '0' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2277 - page_layout_root_id: 83 - page_layout_id: 120 - section_param_id: 6 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2278 - page_layout_root_id: 83 - page_layout_id: 120 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2279 - page_layout_root_id: 83 - page_layout_id: 120 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2280 - page_layout_root_id: 83 - page_layout_id: 120 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2281 - page_layout_root_id: 83 - page_layout_id: 120 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2282 - page_layout_root_id: 83 - page_layout_id: 121 - section_param_id: 160 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2283 - page_layout_root_id: 83 - page_layout_id: 121 - section_param_id: 161 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2284 - page_layout_root_id: 83 - page_layout_id: 121 - section_param_id: 162 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2285 - page_layout_root_id: 83 - page_layout_id: 121 - section_param_id: 163 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2286 - page_layout_root_id: 83 - page_layout_id: 121 - section_param_id: 164 - theme_id: 1 - pvalue: - 24unset: '0' - '24': font-size:150% - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:18.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2287 - page_layout_root_id: 83 - page_layout_id: 130 - section_param_id: 165 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2288 - page_layout_root_id: 83 - page_layout_id: 130 - section_param_id: 166 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2289 - page_layout_root_id: 83 - page_layout_id: 130 - section_param_id: 167 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto 10px auto 10px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2290 - page_layout_root_id: 83 - page_layout_id: 130 - section_param_id: 168 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2291 - page_layout_root_id: 83 - page_layout_id: 130 - section_param_id: 169 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2292 - page_layout_root_id: 83 - page_layout_id: 130 - section_param_id: 170 - theme_id: 1 - pvalue: - 31unset: '0' - '31': margin:auto auto 10px auto - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - 32unset: '0' - '32': padding:5px 0px 5px 0px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2293 - page_layout_root_id: 83 - page_layout_id: 130 - section_param_id: 171 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:22.000000000 Z - updated_at: 2013-11-02 09:37:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2294 - page_layout_root_id: 83 - page_layout_id: 130 - section_param_id: 172 - theme_id: 1 - pvalue: - '27': font-weight:bold - 54unset: '1' - '54': text-decoration:underline - 53unset: '1' - '53': text-align:left - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:22.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2295 - page_layout_root_id: 83 - page_layout_id: 131 - section_param_id: 173 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:30.000000000 Z - updated_at: 2013-11-02 09:37:30.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2296 - page_layout_root_id: 83 - page_layout_id: 131 - section_param_id: 174 - theme_id: 1 - pvalue: - 21unset: '0' - '21': width:300px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2297 - page_layout_root_id: 83 - page_layout_id: 131 - section_param_id: 175 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2298 - page_layout_root_id: 83 - page_layout_id: 131 - section_param_id: 176 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2299 - page_layout_root_id: 83 - page_layout_id: 131 - section_param_id: 177 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2300 - page_layout_root_id: 83 - page_layout_id: 131 - section_param_id: 178 - theme_id: 1 - pvalue: - 31unset: '0' - '31': margin:auto auto 10px auto - 32unset: '0' - '32': padding:5px 0px 5px 0px - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2301 - page_layout_root_id: 83 - page_layout_id: 131 - section_param_id: 179 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2302 - page_layout_root_id: 83 - page_layout_id: 131 - section_param_id: 180 - theme_id: 1 - pvalue: - '27': font-weight:bold - 54unset: '1' - '54': text-decoration:underline - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2303 - page_layout_root_id: 83 - page_layout_id: 132 - section_param_id: 181 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2304 - page_layout_root_id: 83 - page_layout_id: 132 - section_param_id: 182 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2305 - page_layout_root_id: 83 - page_layout_id: 132 - section_param_id: 183 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2014-08-09 07:34:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2306 - page_layout_root_id: 83 - page_layout_id: 132 - section_param_id: 184 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2307 - page_layout_root_id: 83 - page_layout_id: 132 - section_param_id: 185 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2308 - page_layout_root_id: 83 - page_layout_id: 132 - section_param_id: 186 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2309 - page_layout_root_id: 83 - page_layout_id: 132 - section_param_id: 187 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2310 - page_layout_root_id: 83 - page_layout_id: 132 - section_param_id: 188 - theme_id: 1 - pvalue: - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2311 - page_layout_root_id: 83 - page_layout_id: 134 - section_param_id: 268 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:51.000000000 Z - updated_at: 2013-11-02 09:37:51.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2312 - page_layout_root_id: 83 - page_layout_id: 134 - section_param_id: 269 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:51.000000000 Z - updated_at: 2013-11-02 09:37:51.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2313 - page_layout_root_id: 83 - page_layout_id: 134 - section_param_id: 270 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2314 - page_layout_root_id: 83 - page_layout_id: 134 - section_param_id: 271 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2315 - page_layout_root_id: 83 - page_layout_id: 134 - section_param_id: 272 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2316 - page_layout_root_id: 83 - page_layout_id: 134 - section_param_id: 273 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2317 - page_layout_root_id: 83 - page_layout_id: 134 - section_param_id: 274 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2318 - page_layout_root_id: 83 - page_layout_id: 134 - section_param_id: 275 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2319 - page_layout_root_id: 83 - page_layout_id: 135 - section_param_id: 260 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2320 - page_layout_root_id: 83 - page_layout_id: 135 - section_param_id: 261 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2321 - page_layout_root_id: 83 - page_layout_id: 135 - section_param_id: 262 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2322 - page_layout_root_id: 83 - page_layout_id: 135 - section_param_id: 263 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2323 - page_layout_root_id: 83 - page_layout_id: 135 - section_param_id: 264 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2324 - page_layout_root_id: 83 - page_layout_id: 135 - section_param_id: 265 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2325 - page_layout_root_id: 83 - page_layout_id: 135 - section_param_id: 266 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2326 - page_layout_root_id: 83 - page_layout_id: 135 - section_param_id: 267 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:02.000000000 Z - updated_at: 2013-11-02 09:38:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2327 - page_layout_root_id: 83 - page_layout_id: 136 - section_param_id: 6 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2328 - page_layout_root_id: 83 - page_layout_id: 136 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2329 - page_layout_root_id: 83 - page_layout_id: 136 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2330 - page_layout_root_id: 83 - page_layout_id: 136 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2331 - page_layout_root_id: 83 - page_layout_id: 136 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2332 - page_layout_root_id: 83 - page_layout_id: 138 - section_param_id: 6 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:32.000000000 Z - updated_at: 2013-11-02 09:39:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2333 - page_layout_root_id: 83 - page_layout_id: 138 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2334 - page_layout_root_id: 83 - page_layout_id: 138 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2335 - page_layout_root_id: 83 - page_layout_id: 138 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 09:39:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2336 - page_layout_root_id: 83 - page_layout_id: 138 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 09:39:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2337 - page_layout_root_id: 83 - page_layout_id: 137 - section_param_id: 189 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2338 - page_layout_root_id: 83 - page_layout_id: 137 - section_param_id: 190 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2339 - page_layout_root_id: 83 - page_layout_id: 137 - section_param_id: 191 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2340 - page_layout_root_id: 83 - page_layout_id: 137 - section_param_id: 192 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2341 - page_layout_root_id: 83 - page_layout_id: 137 - section_param_id: 193 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2342 - page_layout_root_id: 83 - page_layout_id: 137 - section_param_id: 194 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2343 - page_layout_root_id: 83 - page_layout_id: 137 - section_param_id: 195 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2344 - page_layout_root_id: 83 - page_layout_id: 137 - section_param_id: 196 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2345 - page_layout_root_id: 83 - page_layout_id: 139 - section_param_id: 197 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2346 - page_layout_root_id: 83 - page_layout_id: 139 - section_param_id: 198 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2347 - page_layout_root_id: 83 - page_layout_id: 139 - section_param_id: 199 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2348 - page_layout_root_id: 83 - page_layout_id: 139 - section_param_id: 200 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2349 - page_layout_root_id: 83 - page_layout_id: 139 - section_param_id: 201 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2350 - page_layout_root_id: 83 - page_layout_id: 139 - section_param_id: 202 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2351 - page_layout_root_id: 83 - page_layout_id: 139 - section_param_id: 203 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2352 - page_layout_root_id: 83 - page_layout_id: 139 - section_param_id: 204 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2353 - page_layout_root_id: 83 - page_layout_id: 133 - section_param_id: 6 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 09:50:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2354 - page_layout_root_id: 83 - page_layout_id: 133 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2355 - page_layout_root_id: 83 - page_layout_id: 133 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2356 - page_layout_root_id: 83 - page_layout_id: 133 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 09:50:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2357 - page_layout_root_id: 83 - page_layout_id: 133 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:09.000000000 Z - updated_at: 2013-11-02 09:50:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2358 - page_layout_root_id: 83 - page_layout_id: 128 - section_param_id: 6 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2359 - page_layout_root_id: 83 - page_layout_id: 128 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2360 - page_layout_root_id: 83 - page_layout_id: 128 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2361 - page_layout_root_id: 83 - page_layout_id: 128 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2362 - page_layout_root_id: 83 - page_layout_id: 128 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2363 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 11 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:07.000000000 Z - updated_at: 2013-11-05 03:16:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2364 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 12 - theme_id: 1 - pvalue: - 21unset: '1' - '21': width:960px - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:07.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2365 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 13 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2366 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 14 - theme_id: 1 - pvalue: - 2unset: '1' - '2': background-color:lime - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2367 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 15 - theme_id: 1 - pvalue: - 27unset: '0' - '27': font-weight:bold - 49unset: '1' - '49': color:#00ADEE - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2368 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 16 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2369 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 17 - theme_id: 1 - pvalue: - 54unset: '0' - '54': text-decoration:none - 49unset: '0' - '49': color:#00ADEE - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2370 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 18 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2371 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 19 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2372 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 20 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2373 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 21 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2374 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 22 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2375 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 23 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2376 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 24 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2013-11-05 03:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2377 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 25 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2013-11-05 03:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2378 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 26 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2013-11-05 03:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2379 - page_layout_root_id: 83 - page_layout_id: 95 - section_param_id: 135 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:08.000000000 Z - updated_at: 2013-11-25 06:53:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2380 - page_layout_root_id: 83 - page_layout_id: 95 - section_param_id: 136 - theme_id: 1 - pvalue: - 21unset: '0' - '21': width:160px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:08.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2381 - page_layout_root_id: 83 - page_layout_id: 95 - section_param_id: 137 - theme_id: 1 - pvalue: - 15hidden: '1' - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - 32unset: '0' - '32': padding:0px 0px 5px 0px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2382 - page_layout_root_id: 83 - page_layout_id: 95 - section_param_id: 138 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2383 - page_layout_root_id: 83 - page_layout_id: 95 - section_param_id: 139 - theme_id: 1 - pvalue: - 27unset: '0' - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2384 - page_layout_root_id: 83 - page_layout_id: 98 - section_param_id: 135 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2385 - page_layout_root_id: 83 - page_layout_id: 98 - section_param_id: 136 - theme_id: 1 - pvalue: - 21unset: '0' - '21': width:160px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2386 - page_layout_root_id: 83 - page_layout_id: 98 - section_param_id: 137 - theme_id: 1 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:0px 0px 5px 0px - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2387 - page_layout_root_id: 83 - page_layout_id: 98 - section_param_id: 138 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2388 - page_layout_root_id: 83 - page_layout_id: 98 - section_param_id: 139 - theme_id: 1 - pvalue: - 27unset: '0' - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2389 - page_layout_root_id: 83 - page_layout_id: 123 - section_param_id: 140 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2390 - page_layout_root_id: 83 - page_layout_id: 123 - section_param_id: 141 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2391 - page_layout_root_id: 83 - page_layout_id: 123 - section_param_id: 142 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2392 - page_layout_root_id: 83 - page_layout_id: 123 - section_param_id: 143 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2393 - page_layout_root_id: 83 - page_layout_id: 123 - section_param_id: 144 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2394 - page_layout_root_id: 83 - page_layout_id: 124 - section_param_id: 145 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2395 - page_layout_root_id: 83 - page_layout_id: 124 - section_param_id: 146 - theme_id: 1 - pvalue: - 101unset: '0' - '101': float:right - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2396 - page_layout_root_id: 83 - page_layout_id: 124 - section_param_id: 147 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:10px auto auto auto - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2397 - page_layout_root_id: 83 - page_layout_id: 124 - section_param_id: 148 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2398 - page_layout_root_id: 83 - page_layout_id: 124 - section_param_id: 149 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2399 - page_layout_root_id: 83 - page_layout_id: 125 - section_param_id: 150 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2400 - page_layout_root_id: 83 - page_layout_id: 125 - section_param_id: 151 - theme_id: 1 - pvalue: - 21unset: '1' - '21': width:600px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2401 - page_layout_root_id: 83 - page_layout_id: 125 - section_param_id: 152 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2402 - page_layout_root_id: 83 - page_layout_id: 125 - section_param_id: 153 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2403 - page_layout_root_id: 83 - page_layout_id: 125 - section_param_id: 154 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2404 - page_layout_root_id: 83 - page_layout_id: 86 - section_param_id: 323 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:56.000000000 Z - updated_at: 2013-11-29 02:49:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2405 - page_layout_root_id: 83 - page_layout_id: 86 - section_param_id: 324 - theme_id: 1 - pvalue: - 21unset: '1' - '21': width:220px - 101unset: '1' - '101': float:none - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:56.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2406 - page_layout_root_id: 83 - page_layout_id: 86 - section_param_id: 325 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2407 - page_layout_root_id: 83 - page_layout_id: 86 - section_param_id: 326 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2013-11-29 02:49:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2408 - page_layout_root_id: 83 - page_layout_id: 86 - section_param_id: 327 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2013-11-29 02:49:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2409 - page_layout_root_id: 83 - page_layout_id: 89 - section_param_id: 6 - theme_id: 1 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:45.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2410 - page_layout_root_id: 83 - page_layout_id: 89 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '1' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:45.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2411 - page_layout_root_id: 83 - page_layout_id: 89 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:0px 0px 6px 0px - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - 31unset: '0' - '31': margin:auto 10px auto 10px - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2412 - page_layout_root_id: 83 - page_layout_id: 89 - section_param_id: 9 - theme_id: 1 - pvalue: - 2unset: '1' - '2': background-color:green - 3unset: '1' - '3': background-image:pattern-1.png - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2413 - page_layout_root_id: 83 - page_layout_id: 89 - section_param_id: 10 - theme_id: 1 - pvalue: - 49unset: '1' - '49': color:teal - 25unset: '1' - '25': font-style:normal - 24unset: '1' - '24': font-size:0% - 27unset: '1' - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2414 - page_layout_root_id: 83 - page_layout_id: 91 - section_param_id: 328 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-03 08:15:21.000000000 Z - updated_at: 2013-12-03 08:15:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2415 - page_layout_root_id: 83 - page_layout_id: 91 - section_param_id: 329 - theme_id: 1 - pvalue: - 101unset: '0' - '101': float:right - unset: - computed_pvalue: - created_at: 2013-12-03 08:15:21.000000000 Z - updated_at: 2014-08-09 07:34:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2416 - page_layout_root_id: 83 - page_layout_id: 91 - section_param_id: 330 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-12-03 08:15:21.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2417 - page_layout_root_id: 83 - page_layout_id: 91 - section_param_id: 331 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-03 08:15:21.000000000 Z - updated_at: 2013-12-03 08:15:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2418 - page_layout_root_id: 83 - page_layout_id: 91 - section_param_id: 332 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-03 08:15:21.000000000 Z - updated_at: 2013-12-03 08:15:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2419 - page_layout_root_id: 83 - page_layout_id: 85 - section_param_id: 6 - theme_id: 1 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2420 - page_layout_root_id: 83 - page_layout_id: 85 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2421 - page_layout_root_id: 83 - page_layout_id: 85 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2422 - page_layout_root_id: 83 - page_layout_id: 85 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-05 08:06:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2423 - page_layout_root_id: 83 - page_layout_id: 85 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-05 08:06:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2424 - page_layout_root_id: 83 - page_layout_id: 87 - section_param_id: 6 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2425 - page_layout_root_id: 83 - page_layout_id: 87 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:right - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2426 - page_layout_root_id: 83 - page_layout_id: 87 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2427 - page_layout_root_id: 83 - page_layout_id: 87 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2428 - page_layout_root_id: 83 - page_layout_id: 87 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2429 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 226 - theme_id: 1 - pvalue: - '21': width:960px - 21unset: '0' - '20': min-width:960px - 20hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2430 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 227 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2431 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 228 - theme_id: 1 - pvalue: - '85': clear:both - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2432 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 229 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2433 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 230 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2434 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 231 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2435 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 232 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2436 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 233 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2437 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 234 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2438 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 235 - theme_id: 1 - pvalue: - 31unset: '0' - '31': margin:10px auto 2px auto - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2439 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 236 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2440 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 237 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2441 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 238 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2442 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 239 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2443 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 240 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2444 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 241 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2445 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 242 - theme_id: 1 - pvalue: - 49unset: '0' - '49': color:red - 24unset: '0' - '24': font-size:82% - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2446 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 243 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2447 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 317 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2448 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 318 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2449 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 319 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2450 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 320 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2451 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 321 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2452 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 322 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2453 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 244 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2454 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 245 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2455 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 246 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2456 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 247 - theme_id: 1 - pvalue: - 49unset: '0' - '49': color:#00ADEE - 24unset: '1' - '24': font-size:80% - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2457 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 248 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2458 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 249 - theme_id: 1 - pvalue: - 7unset: '0' - '7': border-style:solid none solid none - 8unset: '0' - '8': border-width:1px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:#D9D9DB transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2459 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 250 - theme_id: 1 - pvalue: - 32unset: '0' - '32': padding:5px 10px 5px 10px - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2460 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 251 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2461 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 252 - theme_id: 1 - pvalue: - 2unset: '0' - '2': background-color:#D9D9DB - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2462 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 253 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2463 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 254 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2464 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 255 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2465 - page_layout_root_id: 83 - page_layout_id: 83 - section_param_id: 256 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2466 - page_layout_root_id: 83 - page_layout_id: 104 - section_param_id: 55 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2467 - page_layout_root_id: 83 - page_layout_id: 104 - section_param_id: 56 - theme_id: 1 - pvalue: - 21unset: '0' - '21': width:150px - 15unset: '0' - '15': height:34px - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2468 - page_layout_root_id: 83 - page_layout_id: 104 - section_param_id: 57 - theme_id: 1 - pvalue: - 15hidden: '1' - 15unset: '0' - '15': height:33px - 32unset: '1' - '32': padding:0px 0px 0px 0px - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #BBBBBB transparent' - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2469 - page_layout_root_id: 83 - page_layout_id: 104 - section_param_id: 58 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2470 - page_layout_root_id: 83 - page_layout_id: 104 - section_param_id: 59 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2471 - page_layout_root_id: 83 - page_layout_id: 104 - section_param_id: 294 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2472 - page_layout_root_id: 83 - page_layout_id: 104 - section_param_id: 295 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2473 - page_layout_root_id: 83 - page_layout_id: 104 - section_param_id: 296 - theme_id: 1 - pvalue: - 49unset: '0' - '49': color:#BBBBBB - 27unset: '0' - '27': font-weight:bold - 24unset: '0' - '24': font-size:80% - 54unset: '0' - '54': text-decoration:none - 53unset: '0' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2474 - page_layout_root_id: 83 - page_layout_id: 104 - section_param_id: 297 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:58.000000000 Z - updated_at: 2014-01-22 03:39:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2475 - page_layout_root_id: 83 - page_layout_id: 109 - section_param_id: 105 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2476 - page_layout_root_id: 83 - page_layout_id: 109 - section_param_id: 106 - theme_id: 1 - pvalue: - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2477 - page_layout_root_id: 83 - page_layout_id: 109 - section_param_id: 107 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-07-30 23:08:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2478 - page_layout_root_id: 83 - page_layout_id: 109 - section_param_id: 108 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2479 - page_layout_root_id: 83 - page_layout_id: 109 - section_param_id: 109 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2480 - page_layout_root_id: 83 - page_layout_id: 109 - section_param_id: 302 - theme_id: 1 - pvalue: - 32unset: '0' - '32': padding:5px 5px 5px 5px - 7unset: '0' - '7': border-style:solid none solid none - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2481 - page_layout_root_id: 83 - page_layout_id: 109 - section_param_id: 303 - theme_id: 1 - pvalue: - 2unset: '0' - '2': background-color:transparent - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2482 - page_layout_root_id: 83 - page_layout_id: 109 - section_param_id: 304 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2483 - page_layout_root_id: 83 - page_layout_id: 109 - section_param_id: 305 - theme_id: 1 - pvalue: - 27unset: '0' - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2484 - page_layout_root_id: 83 - page_layout_id: 109 - section_param_id: 306 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2485 - page_layout_root_id: 83 - page_layout_id: 111 - section_param_id: 55 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2486 - page_layout_root_id: 83 - page_layout_id: 111 - section_param_id: 56 - theme_id: 1 - pvalue: - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2487 - page_layout_root_id: 83 - page_layout_id: 111 - section_param_id: 57 - theme_id: 1 - pvalue: - 15hidden: '1' - 32unset: '1' - '32': padding:0px 0px 0px 0px - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2488 - page_layout_root_id: 83 - page_layout_id: 111 - section_param_id: 58 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2489 - page_layout_root_id: 83 - page_layout_id: 111 - section_param_id: 59 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2490 - page_layout_root_id: 83 - page_layout_id: 111 - section_param_id: 294 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2491 - page_layout_root_id: 83 - page_layout_id: 111 - section_param_id: 295 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2492 - page_layout_root_id: 83 - page_layout_id: 111 - section_param_id: 296 - theme_id: 1 - pvalue: - 49unset: '0' - '49': color:black - 54unset: '0' - '54': text-decoration:none - 27unset: '0' - '27': font-weight:bold - 24unset: '0' - '24': font-size:150% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2493 - page_layout_root_id: 83 - page_layout_id: 111 - section_param_id: 297 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2494 - page_layout_root_id: 83 - page_layout_id: 118 - section_param_id: 115 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2495 - page_layout_root_id: 83 - page_layout_id: 118 - section_param_id: 116 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2496 - page_layout_root_id: 83 - page_layout_id: 118 - section_param_id: 117 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2497 - page_layout_root_id: 83 - page_layout_id: 118 - section_param_id: 118 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2498 - page_layout_root_id: 83 - page_layout_id: 118 - section_param_id: 119 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2499 - page_layout_root_id: 83 - page_layout_id: 118 - section_param_id: 307 - theme_id: 1 - pvalue: - 21unset: '0' - '21': width:60px - 7unset: '0' - '7': border-style:solid solid solid solid - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 32unset: '0' - '32': padding:7px 10px 7px 10px - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2500 - page_layout_root_id: 83 - page_layout_id: 118 - section_param_id: 308 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2501 - page_layout_root_id: 83 - page_layout_id: 118 - section_param_id: 309 - theme_id: 1 - pvalue: - 53unset: '0' - '53': text-align:left - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2502 - page_layout_root_id: 83 - page_layout_id: 119 - section_param_id: 120 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2503 - page_layout_root_id: 83 - page_layout_id: 119 - section_param_id: 121 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2504 - page_layout_root_id: 83 - page_layout_id: 119 - section_param_id: 122 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto auto 5px - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2505 - page_layout_root_id: 83 - page_layout_id: 119 - section_param_id: 123 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2506 - page_layout_root_id: 83 - page_layout_id: 119 - section_param_id: 124 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2507 - page_layout_root_id: 83 - page_layout_id: 119 - section_param_id: 310 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-07-30 23:08:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2508 - page_layout_root_id: 83 - page_layout_id: 119 - section_param_id: 311 - theme_id: 1 - pvalue: - 2unset: '0' - '2': background-color:#00ADEE - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2509 - page_layout_root_id: 83 - page_layout_id: 119 - section_param_id: 312 - theme_id: 1 - pvalue: - 49unset: '0' - '49': color:white - 24unset: '1' - '24': font-size:14em - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2510 - page_layout_root_id: 83 - page_layout_id: 144 - section_param_id: 284 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2511 - page_layout_root_id: 83 - page_layout_id: 144 - section_param_id: 285 - theme_id: 1 - pvalue: - '21': width:600px - 21unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2512 - page_layout_root_id: 83 - page_layout_id: 144 - section_param_id: 286 - theme_id: 1 - pvalue: - '7': border-style:solid solid solid solid - 7unset: '0' - '8': border-width:1px 1px 1px 1px - 8unset: '0' - '6': ! 'border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC' - 6unset: '0' - '15': height:598px - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2513 - page_layout_root_id: 83 - page_layout_id: 144 - section_param_id: 287 - theme_id: 1 - pvalue: - '2': background-color:#FFFFFF - 2unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2514 - page_layout_root_id: 83 - page_layout_id: 144 - section_param_id: 288 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2515 - page_layout_root_id: 83 - page_layout_id: 144 - section_param_id: 313 - theme_id: 1 - pvalue: - '32': padding:2px 2px 2px 2px - 32unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2516 - page_layout_root_id: 83 - page_layout_id: 144 - section_param_id: 314 - theme_id: 1 - pvalue: - '2': background-color:#EEEEEE - 2unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2517 - page_layout_root_id: 83 - page_layout_id: 144 - section_param_id: 315 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:05.000000000 Z - updated_at: 2014-01-22 03:40:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2518 - page_layout_root_id: 83 - page_layout_id: 144 - section_param_id: 316 - theme_id: 1 - pvalue: - '32': padding:0 10px 5px 10px - 32unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:05.000000000 Z - updated_at: 2014-08-09 07:34:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2519 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 333 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2520 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 334 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2521 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 335 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2522 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 336 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2523 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 337 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2524 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 338 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2525 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 339 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2526 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 340 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2527 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 341 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2528 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 342 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2529 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 343 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2530 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 344 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2531 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 345 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2532 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 346 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2533 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 347 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2534 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 348 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2535 - page_layout_root_id: 83 - page_layout_id: 140 - section_param_id: 6 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2536 - page_layout_root_id: 83 - page_layout_id: 140 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2537 - page_layout_root_id: 83 - page_layout_id: 140 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2538 - page_layout_root_id: 83 - page_layout_id: 140 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2539 - page_layout_root_id: 83 - page_layout_id: 140 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2540 - page_layout_root_id: 83 - page_layout_id: 141 - section_param_id: 349 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2541 - page_layout_root_id: 83 - page_layout_id: 141 - section_param_id: 350 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2542 - page_layout_root_id: 83 - page_layout_id: 141 - section_param_id: 351 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2543 - page_layout_root_id: 83 - page_layout_id: 141 - section_param_id: 352 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2544 - page_layout_root_id: 83 - page_layout_id: 141 - section_param_id: 353 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2545 - page_layout_root_id: 83 - page_layout_id: 141 - section_param_id: 354 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2546 - page_layout_root_id: 83 - page_layout_id: 141 - section_param_id: 355 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2547 - page_layout_root_id: 83 - page_layout_id: 141 - section_param_id: 356 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2548 - page_layout_root_id: 83 - page_layout_id: 108 - section_param_id: 289 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2549 - page_layout_root_id: 83 - page_layout_id: 108 - section_param_id: 290 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2550 - page_layout_root_id: 83 - page_layout_id: 108 - section_param_id: 291 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2551 - page_layout_root_id: 83 - page_layout_id: 108 - section_param_id: 292 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2552 - page_layout_root_id: 83 - page_layout_id: 108 - section_param_id: 293 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2553 - page_layout_root_id: 83 - page_layout_id: 108 - section_param_id: 299 - theme_id: 1 - pvalue: - 32unset: '0' - '32': padding:5px 10px 5px 10px - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2554 - page_layout_root_id: 83 - page_layout_id: 108 - section_param_id: 301 - theme_id: 1 - pvalue: - 32unset: '0' - '32': padding:5px 5px 5px 5px - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 31unset: '0' - '31': margin:6px 6px 6px auto - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2555 - page_layout_root_id: 83 - page_layout_id: 129 - section_param_id: 6 - theme_id: 1 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2556 - page_layout_root_id: 83 - page_layout_id: 129 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '0' - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2557 - page_layout_root_id: 83 - page_layout_id: 129 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2558 - page_layout_root_id: 83 - page_layout_id: 129 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2559 - page_layout_root_id: 83 - page_layout_id: 129 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2560 - page_layout_root_id: 83 - page_layout_id: 114 - section_param_id: 357 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2561 - page_layout_root_id: 83 - page_layout_id: 114 - section_param_id: 358 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2562 - page_layout_root_id: 83 - page_layout_id: 114 - section_param_id: 359 - theme_id: 1 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2563 - page_layout_root_id: 83 - page_layout_id: 114 - section_param_id: 360 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2564 - page_layout_root_id: 83 - page_layout_id: 114 - section_param_id: 361 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2565 - page_layout_root_id: 83 - page_layout_id: 117 - section_param_id: 6 - theme_id: 1 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2566 - page_layout_root_id: 83 - page_layout_id: 117 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:230px - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2567 - page_layout_root_id: 83 - page_layout_id: 117 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2568 - page_layout_root_id: 83 - page_layout_id: 117 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:42:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2569 - page_layout_root_id: 83 - page_layout_id: 117 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:42:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2570 - page_layout_root_id: 83 - page_layout_id: 115 - section_param_id: 6 - theme_id: 1 - pvalue: - 85unset: '0' - '85': clear:both - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2571 - page_layout_root_id: 83 - page_layout_id: 115 - section_param_id: 7 - theme_id: 1 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2572 - page_layout_root_id: 83 - page_layout_id: 115 - section_param_id: 8 - theme_id: 1 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-08-09 07:34:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2573 - page_layout_root_id: 83 - page_layout_id: 115 - section_param_id: 9 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:17:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 2574 - page_layout_root_id: 83 - page_layout_id: 115 - section_param_id: 10 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:17:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3973 - page_layout_root_id: 83 - page_layout_id: 103 - section_param_id: 404 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-04 12:47:18.000000000 Z - updated_at: 2014-07-04 12:47:18.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4131 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 420 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4135 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 421 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4137 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 421 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4143 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 422 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4148 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 423 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4152 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 424 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4154 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 424 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4160 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 425 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4165 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 426 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4169 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 427 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4171 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 427 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4177 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 428 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4182 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 429 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4186 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 430 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4188 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 430 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4194 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 431 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4199 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 432 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4203 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 433 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4205 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 433 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4211 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 434 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4216 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 435 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4220 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 436 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4222 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 436 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4228 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 437 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4233 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 438 - theme_id: 1 - pvalue: *106563270 - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4237 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 439 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4239 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 439 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4245 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 440 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4250 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 441 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4254 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 442 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4256 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 442 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4262 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 443 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4267 - page_layout_root_id: 83 - page_layout_id: 90 - section_param_id: 444 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4271 - page_layout_root_id: 83 - page_layout_id: 96 - section_param_id: 445 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4273 - page_layout_root_id: 83 - page_layout_id: 99 - section_param_id: 445 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4279 - page_layout_root_id: 83 - page_layout_id: 88 - section_param_id: 446 - theme_id: 1 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -page_layouts: -- !ruby/object:Spree::PageLayout - attributes: - id: 83 - site_id: 2 - root_id: 83 - parent_id: - lft: 1 - rgt: 124 - title: root - slug: root - section_id: 75 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: true - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 84 - site_id: 2 - root_id: 83 - parent_id: 83 - lft: 2 - rgt: 17 - title: Header - slug: header - section_id: 2 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 85 - site_id: 2 - root_id: 83 - parent_id: 84 - lft: 3 - rgt: 10 - title: container000 - slug: container000 - section_id: 2 - section_instance: 20 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-16 09:30:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 86 - site_id: 2 - root_id: 83 - parent_id: 85 - lft: 4 - rgt: 5 - title: Logo - slug: logo - section_id: 97 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 87 - site_id: 2 - root_id: 83 - parent_id: 85 - lft: 6 - rgt: 9 - title: container - slug: container--6 - section_id: 2 - section_instance: 21 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 88 - site_id: 2 - root_id: 83 - parent_id: 87 - lft: 7 - rgt: 8 - title: logged&unlogged menu - slug: logged-unlogged-menu - section_id: 101 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:35.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 89 - site_id: 2 - root_id: 83 - parent_id: 84 - lft: 11 - rgt: 16 - title: container - slug: container--7 - section_id: 2 - section_instance: 19 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 90 - site_id: 2 - root_id: 83 - parent_id: 89 - lft: 12 - rgt: 13 - title: Main menu - slug: main-menu - section_id: 3 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 91 - site_id: 2 - root_id: 83 - parent_id: 89 - lft: 14 - rgt: 15 - title: Mini cart - slug: mini-cart - section_id: 99 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 92 - site_id: 2 - root_id: 83 - parent_id: 83 - lft: 18 - rgt: 117 - title: content - slug: content - section_id: 2 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 93 - site_id: 2 - root_id: 83 - parent_id: 92 - lft: 19 - rgt: 32 - title: lftnav - slug: lftnav - section_id: 2 - section_instance: 4 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 94 - site_id: 2 - root_id: 83 - parent_id: 93 - lft: 20 - rgt: 25 - title: container - slug: container--8 - section_id: 2 - section_instance: 12 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 95 - site_id: 2 - root_id: 83 - parent_id: 94 - lft: 21 - rgt: 22 - title: taxonomy name - slug: taxonomy-name - section_id: 40 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 96 - site_id: 2 - root_id: 83 - parent_id: 94 - lft: 23 - rgt: 24 - title: vmenu - slug: vmenu - section_id: 6 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 97 - site_id: 2 - root_id: 83 - parent_id: 93 - lft: 26 - rgt: 31 - title: container - slug: container--9 - section_id: 2 - section_instance: 13 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 98 - site_id: 2 - root_id: 83 - parent_id: 97 - lft: 27 - rgt: 28 - title: taxonomy name - slug: taxonomy-name--2 - section_id: 40 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 99 - site_id: 2 - root_id: 83 - parent_id: 97 - lft: 29 - rgt: 30 - title: vmenu - slug: vmenu--2 - section_id: 6 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 100 - site_id: 2 - root_id: 83 - parent_id: 92 - lft: 33 - rgt: 116 - title: main content - slug: main-content - section_id: 2 - section_instance: 5 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 101 - site_id: 2 - root_id: 83 - parent_id: 100 - lft: 34 - rgt: 43 - title: product list - slug: product-list - section_id: 2 - section_instance: 6 - section_context: home,list - data_source: gpvs - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-26 09:44:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 102 - site_id: 2 - root_id: 83 - parent_id: 101 - lft: 35 - rgt: 42 - title: container - slug: container--10 - section_id: 2 - section_instance: 8 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-26 09:44:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 103 - site_id: 2 - root_id: 83 - parent_id: 102 - lft: 36 - rgt: 37 - title: product image - slug: product-image - section_id: 17 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 104 - site_id: 2 - root_id: 83 - parent_id: 102 - lft: 38 - rgt: 39 - title: product name - slug: product-name - section_id: 13 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 105 - site_id: 2 - root_id: 83 - parent_id: 102 - lft: 40 - rgt: 41 - title: product price - slug: product-price - section_id: 30 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 106 - site_id: 2 - root_id: 83 - parent_id: 100 - lft: 44 - rgt: 71 - title: product detail - slug: product-detail - section_id: 2 - section_instance: 7 - section_context: detail - data_source: this_product - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 107 - site_id: 2 - root_id: 83 - parent_id: 106 - lft: 45 - rgt: 50 - title: container - slug: container--11 - section_id: 2 - section_instance: 10 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 108 - site_id: 2 - root_id: 83 - parent_id: 107 - lft: 46 - rgt: 47 - title: image with thumbnails - slug: image-with-thumbnails - section_id: 94 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 109 - site_id: 2 - root_id: 83 - parent_id: 107 - lft: 48 - rgt: 49 - title: product_properties - slug: product_properties - section_id: 28 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 110 - site_id: 2 - root_id: 83 - parent_id: 106 - lft: 51 - rgt: 70 - title: container - slug: container--12 - section_id: 2 - section_instance: 9 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 111 - site_id: 2 - root_id: 83 - parent_id: 110 - lft: 52 - rgt: 53 - title: product name - slug: product-name--2 - section_id: 13 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 112 - site_id: 2 - root_id: 83 - parent_id: 110 - lft: 54 - rgt: 55 - title: product description - slug: product-description - section_id: 15 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 113 - site_id: 2 - root_id: 83 - parent_id: 110 - lft: 56 - rgt: 69 - title: container - slug: container--13 - section_id: 2 - section_instance: 11 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 114 - site_id: 2 - root_id: 83 - parent_id: 113 - lft: 57 - rgt: 58 - title: Product option values - slug: product-option-values - section_id: 107 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 115 - site_id: 2 - root_id: 83 - parent_id: 113 - lft: 59 - rgt: 68 - title: container - slug: container--14 - section_id: 2 - section_instance: 25 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 116 - site_id: 2 - root_id: 83 - parent_id: 115 - lft: 60 - rgt: 61 - title: product price - slug: product-price--2 - section_id: 30 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 117 - site_id: 2 - root_id: 83 - parent_id: 115 - lft: 62 - rgt: 67 - title: container - slug: container--15 - section_id: 2 - section_instance: 24 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 118 - site_id: 2 - root_id: 83 - parent_id: 117 - lft: 63 - rgt: 64 - title: product quantity - slug: product-quantity - section_id: 32 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 119 - site_id: 2 - root_id: 83 - parent_id: 117 - lft: 65 - rgt: 66 - title: product atc - slug: product-atc - section_id: 34 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 120 - site_id: 2 - root_id: 83 - parent_id: 100 - lft: 72 - rgt: 115 - title: other pages - slug: other-pages - section_id: 2 - section_instance: 14 - section_context: cart,checkout,thanks,account,signup,login,password - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 121 - site_id: 2 - root_id: 83 - parent_id: 120 - lft: 73 - rgt: 74 - title: taxon name - slug: taxon-name - section_id: 50 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 122 - site_id: 2 - root_id: 83 - parent_id: 120 - lft: 75 - rgt: 80 - title: cart - slug: cart - section_id: 36 - section_instance: 1 - section_context: cart - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 123 - site_id: 2 - root_id: 83 - parent_id: 122 - lft: 76 - rgt: 77 - title: cart items - slug: cart-items - section_id: 42 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 124 - site_id: 2 - root_id: 83 - parent_id: 122 - lft: 78 - rgt: 79 - title: order total price - slug: order-total-price - section_id: 44 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: *106806970 - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 125 - site_id: 2 - root_id: 83 - parent_id: 120 - lft: 81 - rgt: 86 - title: checkout - slug: checkout - section_id: 46 - section_instance: 2 - section_context: checkout - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 126 - site_id: 2 - root_id: 83 - parent_id: 125 - lft: 82 - rgt: 83 - title: ship form - slug: ship-form - section_id: 69 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 127 - site_id: 2 - root_id: 83 - parent_id: 125 - lft: 84 - rgt: 85 - title: payment form - slug: payment-form - section_id: 72 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 128 - site_id: 2 - root_id: 83 - parent_id: 120 - lft: 87 - rgt: 96 - title: thanks - slug: thanks - section_id: 2 - section_instance: 18 - section_context: thanks - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 129 - site_id: 2 - root_id: 83 - parent_id: 128 - lft: 88 - rgt: 93 - title: container - slug: container--16 - section_id: 2 - section_instance: 23 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:36.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 130 - site_id: 2 - root_id: 83 - parent_id: 129 - lft: 89 - rgt: 90 - title: order address - slug: order-address - section_id: 52 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 131 - site_id: 2 - root_id: 83 - parent_id: 129 - lft: 91 - rgt: 92 - title: order payment - slug: order-payment - section_id: 55 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 132 - site_id: 2 - root_id: 83 - parent_id: 128 - lft: 94 - rgt: 95 - title: order items - slug: order-items - section_id: 58 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 133 - site_id: 2 - root_id: 83 - parent_id: 120 - lft: 97 - rgt: 102 - title: account - slug: account - section_id: 2 - section_instance: 17 - section_context: account - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 134 - site_id: 2 - root_id: 83 - parent_id: 133 - lft: 98 - rgt: 99 - title: profile - slug: profile - section_id: 85 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 135 - site_id: 2 - root_id: 83 - parent_id: 133 - lft: 100 - rgt: 101 - title: order list - slug: order-list - section_id: 82 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 136 - site_id: 2 - root_id: 83 - parent_id: 120 - lft: 103 - rgt: 106 - title: login - slug: login - section_id: 2 - section_instance: 15 - section_context: login - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 137 - site_id: 2 - root_id: 83 - parent_id: 136 - lft: 104 - rgt: 105 - title: login form - slug: login-form - section_id: 61 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 138 - site_id: 2 - root_id: 83 - parent_id: 120 - lft: 107 - rgt: 110 - title: signup - slug: signup - section_id: 2 - section_instance: 16 - section_context: signup - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 139 - site_id: 2 - root_id: 83 - parent_id: 138 - lft: 108 - rgt: 109 - title: sign up form - slug: sign-up-form - section_id: 64 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 140 - site_id: 2 - root_id: 83 - parent_id: 120 - lft: 111 - rgt: 114 - title: password - slug: password - section_id: 2 - section_instance: 22 - section_context: password - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 141 - site_id: 2 - root_id: 83 - parent_id: 140 - lft: 112 - rgt: 113 - title: password recover form - slug: password-recover-form - section_id: 104 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 142 - site_id: 2 - root_id: 83 - parent_id: 83 - lft: 118 - rgt: 121 - title: footer - slug: footer - section_id: 2 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 143 - site_id: 2 - root_id: 83 - parent_id: 142 - lft: 119 - rgt: 120 - title: copyright - slug: copyright - section_id: 11 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-05-10 13:08:24.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 144 - site_id: 2 - root_id: 83 - parent_id: 83 - lft: 122 - rgt: 123 - title: dialog - slug: dialog - section_id: 90 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 1 - is_full_html: false - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-07-12 06:27:37.000000000 Z - data_source_param: '' -template_files: -- !ruby/object:Spree::TemplateFile - attributes: - id: 1 - theme_id: 1 - attachment_width: - attachment_height: - attachment_file_size: 1574 - attachment_content_type: image/gif - attachment_file_name: logo.gif - attachment_updated_at: 2013-05-12 13:29:47.000000000 Z - created_at: 2013-05-12 13:29:53.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 16 - theme_id: 1 - attachment_width: - attachment_height: - attachment_file_size: 16469 - attachment_content_type: image/jpeg - attachment_file_name: 6a5e31b1jw1doccdf5tdqj.jpg - attachment_updated_at: 2014-07-03 15:26:52.000000000 Z - created_at: 2014-07-03 15:26:52.000000000 Z -template_releases: -- !ruby/object:Spree::TemplateRelease - attributes: - id: 1 - name: First theme released - theme_id: 1 - created_at: 2013-05-12 13:29:53.000000000 Z - updated_at: 2013-05-12 13:29:47.000000000 Z -- !ruby/object:Spree::TemplateRelease - attributes: - id: 2 - name: just a test - theme_id: 1 - created_at: 2014-02-16 13:05:22.000000000 Z - updated_at: 2014-02-16 13:05:22.000000000 Z -- !ruby/object:Spree::TemplateRelease - attributes: - id: 3 - name: just a test - theme_id: 1 - created_at: 2014-02-20 14:39:05.000000000 Z - updated_at: 2014-02-20 14:39:05.000000000 Z -- !ruby/object:Spree::TemplateRelease - attributes: - id: 4 - name: just a test - theme_id: 1 - created_at: 2014-03-02 06:58:26.000000000 Z - updated_at: 2014-03-02 06:58:26.000000000 Z -- !ruby/object:Spree::TemplateRelease - attributes: - id: 5 - name: just a test - theme_id: 1 - created_at: 2014-04-03 14:04:43.000000000 Z - updated_at: 2014-04-03 14:04:43.000000000 Z -- !ruby/object:Spree::TemplateRelease - attributes: - id: 8 - name: just a test - theme_id: 1 - created_at: 2014-07-26 08:14:37.000000000 Z - updated_at: 2014-07-26 08:14:37.000000000 Z diff --git a/spree_theme/db/themes/designs/2_1_1408541455/6a5e31b1jw1doccdf5tdqj.jpg b/spree_theme/db/themes/designs/2_1_1408541455/6a5e31b1jw1doccdf5tdqj.jpg deleted file mode 100644 index 7fff0f08..00000000 Binary files a/spree_theme/db/themes/designs/2_1_1408541455/6a5e31b1jw1doccdf5tdqj.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_1_1408541455/logo.gif b/spree_theme/db/themes/designs/2_1_1408541455/logo.gif deleted file mode 100644 index 2782a6b2..00000000 Binary files a/spree_theme/db/themes/designs/2_1_1408541455/logo.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_1_1410512684.json b/spree_theme/db/themes/designs/2_1_1410512684.json deleted file mode 100644 index 7cd50a4f..00000000 --- a/spree_theme/db/themes/designs/2_1_1410512684.json +++ /dev/null @@ -1 +0,0 @@ -{"template":{"template_theme":{"assigned_resource_ids":{"237":{},"239":{"spree/taxon":[0,0]},"241":{"spree/taxon":[0]},"245":{"spree/taxon":[1]},"248":{"spree/taxon":[2]}},"created_at":"2014-08-02T07:06:06.000Z","id":1,"page_layout_root_id":234,"release_id":11,"site_id":2,"slug":"","title":"\u793a\u4f8b\u6a21\u677f","updated_at":"2014-08-23T00:09:42.000Z"}},"param_values":[{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2536,"page_layout_id":235,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2537,"page_layout_id":235,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2538,"page_layout_id":235,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2539,"page_layout_id":235,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2540,"page_layout_id":235,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2541,"page_layout_id":243,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2542,"page_layout_id":243,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2543,"page_layout_id":243,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2544,"page_layout_id":243,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:yellow"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2545,"page_layout_id":243,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2546,"page_layout_id":293,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2547,"page_layout_id":293,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2548,"page_layout_id":293,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2549,"page_layout_id":293,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"0","2":"background-color:#F5F5F5"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2550,"page_layout_id":293,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2551,"page_layout_id":244,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2552,"page_layout_id":244,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:200px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2553,"page_layout_id":244,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto 10px"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2554,"page_layout_id":244,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:#FFF8ED"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2555,"page_layout_id":244,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","49unset":"1","49":"color:black"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2556,"page_layout_id":251,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2557,"page_layout_id":251,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:750px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2558,"page_layout_id":251,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2559,"page_layout_id":251,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2560,"page_layout_id":251,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2561,"page_layout_id":252,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2562,"page_layout_id":252,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2563,"page_layout_id":252,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2564,"page_layout_id":252,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2565,"page_layout_id":252,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2566,"page_layout_id":257,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2567,"page_layout_id":257,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"1","21":"width:200px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2568,"page_layout_id":257,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2569,"page_layout_id":257,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2570,"page_layout_id":257,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2571,"page_layout_id":254,"page_layout_root_id":234,"pvalue":{},"section_param_id":65,"theme_id":1,"unset":null,"updated_at":"2013-04-08T13:27:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2572,"page_layout_id":254,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111","15unset":"0","15":"height:110px","21unset":"0","21":"width:150px"},"section_param_id":66,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2573,"page_layout_id":254,"page_layout_root_id":234,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","32unset":"0","32":"padding:5px 0px 5px 0px","15unset":"0","15":"height:98px"},"section_param_id":67,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2574,"page_layout_id":254,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":68,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2575,"page_layout_id":254,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111","53unset":"0","53":"text-align:center"},"section_param_id":69,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2576,"page_layout_id":263,"page_layout_root_id":234,"pvalue":{},"section_param_id":60,"theme_id":1,"unset":null,"updated_at":"2013-04-08T13:27:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2577,"page_layout_id":263,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":61,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2578,"page_layout_id":263,"page_layout_root_id":234,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 0px 10px 0px"},"section_param_id":62,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2579,"page_layout_id":263,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":63,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2580,"page_layout_id":263,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111","24unset":"0","24":"font-size:90%"},"section_param_id":64,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2581,"page_layout_id":294,"page_layout_root_id":234,"pvalue":{},"section_param_id":50,"theme_id":1,"unset":null,"updated_at":"2013-04-08T13:27:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2582,"page_layout_id":294,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":51,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2583,"page_layout_id":294,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2584,"page_layout_id":294,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":53,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2585,"page_layout_id":294,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":54,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2586,"page_layout_id":253,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2587,"page_layout_id":253,"page_layout_root_id":234,"pvalue":{"15":"height:160px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:160px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2588,"page_layout_id":253,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto","15unset":"1","15":"height:140px","32unset":"1","32":"padding:0px 0px 0px 0px","8unset":"1","8":"border-width:0px 0px 0px 0px"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2589,"page_layout_id":253,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2590,"page_layout_id":253,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2591,"page_layout_id":261,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2592,"page_layout_id":261,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:350px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2593,"page_layout_id":261,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2594,"page_layout_id":261,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2595,"page_layout_id":261,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2596,"page_layout_id":258,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2597,"page_layout_id":258,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2598,"page_layout_id":258,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto auto"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2599,"page_layout_id":258,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2600,"page_layout_id":258,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2601,"page_layout_id":267,"page_layout_root_id":234,"pvalue":{},"section_param_id":110,"theme_id":1,"unset":null,"updated_at":"2014-07-30T23:08:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2602,"page_layout_id":267,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":111,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2603,"page_layout_id":267,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":112,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2604,"page_layout_id":267,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":113,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2605,"page_layout_id":267,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111","27unset":"0","27":"font-weight:bolder","24unset":"0","24":"font-size:110%","49unset":"0","49":"color:#00ADEE"},"section_param_id":114,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2606,"page_layout_id":264,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2607,"page_layout_id":264,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"1","21unset":"0","21":"width:450px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2608,"page_layout_id":264,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:10px auto auto auto"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2609,"page_layout_id":264,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2610,"page_layout_id":264,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2611,"page_layout_id":273,"page_layout_root_id":234,"pvalue":{},"section_param_id":125,"theme_id":1,"unset":null,"updated_at":"2013-04-16T14:20:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2612,"page_layout_id":273,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111","21unset":"1","21":"width:670px"},"section_param_id":126,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2613,"page_layout_id":273,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":127,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2614,"page_layout_id":273,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":128,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2615,"page_layout_id":273,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111","53unset":"1","53":"text-align:right"},"section_param_id":129,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2616,"page_layout_id":256,"page_layout_root_id":234,"pvalue":{},"section_param_id":110,"theme_id":1,"unset":null,"updated_at":"2013-04-19T13:03:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2617,"page_layout_id":256,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111","21unset":"0","21":"width:150px"},"section_param_id":111,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2618,"page_layout_id":256,"page_layout_root_id":234,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:5px 0px 0px 0px","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":112,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2619,"page_layout_id":256,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":113,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2620,"page_layout_id":256,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111","53unset":"0","53":"text-align:center","49unset":"0","49":"color:#00ADEE","27unset":"0","27":"font-weight:bold"},"section_param_id":114,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2621,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":27,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2622,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":28,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2623,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 0px 20px"},"section_param_id":29,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2624,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":30,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2625,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":31,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2626,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 0px"},"section_param_id":32,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2627,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{"54unset":"0","54":"text-decoration:none","24unset":"0","24":"font-size:90%","49unset":"0","49":"color:#00ADEE"},"section_param_id":33,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2628,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":34,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2629,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":35,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2630,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":36,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2631,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":37,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2632,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":38,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2633,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":39,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2634,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":40,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2635,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":41,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2636,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":42,"theme_id":1,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2637,"page_layout_id":245,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2638,"page_layout_id":245,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2639,"page_layout_id":245,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2640,"page_layout_id":245,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2641,"page_layout_id":245,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2642,"page_layout_id":248,"page_layout_root_id":234,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2643,"page_layout_id":248,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2644,"page_layout_id":248,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2645,"page_layout_id":248,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2646,"page_layout_id":248,"page_layout_root_id":234,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2647,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":27,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2648,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":28,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2649,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 20px","32unset":"0","32":"padding:0px 0px 0px 20px"},"section_param_id":29,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2650,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":30,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2651,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":31,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2652,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 0px"},"section_param_id":32,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2653,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{"24unset":"0","24":"font-size:90%","49unset":"0","49":"color:#00ADEE","54unset":"0","54":"text-decoration:none"},"section_param_id":33,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2654,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":34,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2655,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":35,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2656,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":36,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2657,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":37,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2658,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":38,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2659,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":39,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2660,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":40,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2661,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":41,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2662,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":42,"theme_id":1,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2663,"page_layout_id":277,"page_layout_root_id":234,"pvalue":{},"section_param_id":210,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:20:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2664,"page_layout_id":277,"page_layout_root_id":234,"pvalue":{"21unset":"0","21":"width:360px"},"section_param_id":211,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2665,"page_layout_id":277,"page_layout_root_id":234,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 10px 10px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":212,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2666,"page_layout_id":277,"page_layout_root_id":234,"pvalue":{},"section_param_id":213,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:20:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2667,"page_layout_id":277,"page_layout_root_id":234,"pvalue":{},"section_param_id":214,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:20:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2668,"page_layout_id":277,"page_layout_root_id":234,"pvalue":{},"section_param_id":215,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:20:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2669,"page_layout_id":277,"page_layout_root_id":234,"pvalue":{"2unset":"1","2":"background-color:#000000"},"section_param_id":216,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2670,"page_layout_id":277,"page_layout_root_id":234,"pvalue":{"49unset":"0","49":"color:#00ADEE","53unset":"0","53":"text-align:center"},"section_param_id":217,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2671,"page_layout_id":278,"page_layout_root_id":234,"pvalue":{},"section_param_id":218,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:21:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2672,"page_layout_id":278,"page_layout_root_id":234,"pvalue":{"21unset":"0","21":"width:360px"},"section_param_id":219,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2673,"page_layout_id":278,"page_layout_root_id":234,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 20px 10px 20px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","31unset":"0","31":"margin:10px auto 10px auto"},"section_param_id":220,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2674,"page_layout_id":278,"page_layout_root_id":234,"pvalue":{},"section_param_id":221,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2675,"page_layout_id":278,"page_layout_root_id":234,"pvalue":{},"section_param_id":222,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2676,"page_layout_id":278,"page_layout_root_id":234,"pvalue":{},"section_param_id":223,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2677,"page_layout_id":278,"page_layout_root_id":234,"pvalue":{},"section_param_id":224,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2678,"page_layout_id":278,"page_layout_root_id":234,"pvalue":{"49unset":"0","49":"color:#00ADEE","53unset":"0","53":"text-align:center"},"section_param_id":225,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2679,"page_layout_id":271,"page_layout_root_id":234,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2680,"page_layout_id":271,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2681,"page_layout_id":271,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2682,"page_layout_id":271,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2683,"page_layout_id":271,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2684,"page_layout_id":272,"page_layout_root_id":234,"pvalue":{},"section_param_id":160,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2685,"page_layout_id":272,"page_layout_root_id":234,"pvalue":{},"section_param_id":161,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2686,"page_layout_id":272,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":162,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2687,"page_layout_id":272,"page_layout_root_id":234,"pvalue":{},"section_param_id":163,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2688,"page_layout_id":272,"page_layout_root_id":234,"pvalue":{"24unset":"0","24":"font-size:150%"},"section_param_id":164,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2689,"page_layout_id":281,"page_layout_root_id":234,"pvalue":{},"section_param_id":165,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2690,"page_layout_id":281,"page_layout_root_id":234,"pvalue":{},"section_param_id":166,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2691,"page_layout_id":281,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto 10px"},"section_param_id":167,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2692,"page_layout_id":281,"page_layout_root_id":234,"pvalue":{},"section_param_id":168,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2693,"page_layout_id":281,"page_layout_root_id":234,"pvalue":{},"section_param_id":169,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2694,"page_layout_id":281,"page_layout_root_id":234,"pvalue":{"31unset":"0","31":"margin:auto auto 10px auto","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","32unset":"0","32":"padding:5px 0px 5px 0px"},"section_param_id":170,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2695,"page_layout_id":281,"page_layout_root_id":234,"pvalue":{},"section_param_id":171,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2696,"page_layout_id":281,"page_layout_root_id":234,"pvalue":{"27":"font-weight:bold","54unset":"1","54":"text-decoration:underline","53unset":"1","53":"text-align:left"},"section_param_id":172,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2697,"page_layout_id":282,"page_layout_root_id":234,"pvalue":{},"section_param_id":173,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2698,"page_layout_id":282,"page_layout_root_id":234,"pvalue":{"21unset":"0","21":"width:300px"},"section_param_id":174,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2699,"page_layout_id":282,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":175,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2700,"page_layout_id":282,"page_layout_root_id":234,"pvalue":{},"section_param_id":176,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2701,"page_layout_id":282,"page_layout_root_id":234,"pvalue":{},"section_param_id":177,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2702,"page_layout_id":282,"page_layout_root_id":234,"pvalue":{"31unset":"0","31":"margin:auto auto 10px auto","32unset":"0","32":"padding:5px 0px 5px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":178,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2703,"page_layout_id":282,"page_layout_root_id":234,"pvalue":{},"section_param_id":179,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2704,"page_layout_id":282,"page_layout_root_id":234,"pvalue":{"27":"font-weight:bold","54unset":"1","54":"text-decoration:underline"},"section_param_id":180,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2705,"page_layout_id":283,"page_layout_root_id":234,"pvalue":{},"section_param_id":181,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2706,"page_layout_id":283,"page_layout_root_id":234,"pvalue":{},"section_param_id":182,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2707,"page_layout_id":283,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":183,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2708,"page_layout_id":283,"page_layout_root_id":234,"pvalue":{},"section_param_id":184,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2709,"page_layout_id":283,"page_layout_root_id":234,"pvalue":{},"section_param_id":185,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2710,"page_layout_id":283,"page_layout_root_id":234,"pvalue":{},"section_param_id":186,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2711,"page_layout_id":283,"page_layout_root_id":234,"pvalue":{},"section_param_id":187,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2712,"page_layout_id":283,"page_layout_root_id":234,"pvalue":{"27":"font-weight:bold"},"section_param_id":188,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2713,"page_layout_id":285,"page_layout_root_id":234,"pvalue":{},"section_param_id":268,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2714,"page_layout_id":285,"page_layout_root_id":234,"pvalue":{},"section_param_id":269,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2715,"page_layout_id":285,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":270,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2716,"page_layout_id":285,"page_layout_root_id":234,"pvalue":{},"section_param_id":271,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2717,"page_layout_id":285,"page_layout_root_id":234,"pvalue":{},"section_param_id":272,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2718,"page_layout_id":285,"page_layout_root_id":234,"pvalue":{},"section_param_id":273,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2719,"page_layout_id":285,"page_layout_root_id":234,"pvalue":{},"section_param_id":274,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2720,"page_layout_id":285,"page_layout_root_id":234,"pvalue":{},"section_param_id":275,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2721,"page_layout_id":286,"page_layout_root_id":234,"pvalue":{},"section_param_id":260,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2722,"page_layout_id":286,"page_layout_root_id":234,"pvalue":{},"section_param_id":261,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2723,"page_layout_id":286,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":262,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2724,"page_layout_id":286,"page_layout_root_id":234,"pvalue":{},"section_param_id":263,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2725,"page_layout_id":286,"page_layout_root_id":234,"pvalue":{},"section_param_id":264,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2726,"page_layout_id":286,"page_layout_root_id":234,"pvalue":{},"section_param_id":265,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2727,"page_layout_id":286,"page_layout_root_id":234,"pvalue":{},"section_param_id":266,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2728,"page_layout_id":286,"page_layout_root_id":234,"pvalue":{},"section_param_id":267,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:38:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2729,"page_layout_id":287,"page_layout_root_id":234,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2730,"page_layout_id":287,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2731,"page_layout_id":287,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2732,"page_layout_id":287,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2733,"page_layout_id":287,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2734,"page_layout_id":289,"page_layout_root_id":234,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2735,"page_layout_id":289,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2736,"page_layout_id":289,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2737,"page_layout_id":289,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2738,"page_layout_id":289,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2739,"page_layout_id":288,"page_layout_root_id":234,"pvalue":{},"section_param_id":189,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2740,"page_layout_id":288,"page_layout_root_id":234,"pvalue":{},"section_param_id":190,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2741,"page_layout_id":288,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":191,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2742,"page_layout_id":288,"page_layout_root_id":234,"pvalue":{},"section_param_id":192,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2743,"page_layout_id":288,"page_layout_root_id":234,"pvalue":{},"section_param_id":193,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2744,"page_layout_id":288,"page_layout_root_id":234,"pvalue":{},"section_param_id":194,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2745,"page_layout_id":288,"page_layout_root_id":234,"pvalue":{},"section_param_id":195,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2746,"page_layout_id":288,"page_layout_root_id":234,"pvalue":{},"section_param_id":196,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2747,"page_layout_id":290,"page_layout_root_id":234,"pvalue":{},"section_param_id":197,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2748,"page_layout_id":290,"page_layout_root_id":234,"pvalue":{},"section_param_id":198,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2749,"page_layout_id":290,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":199,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2750,"page_layout_id":290,"page_layout_root_id":234,"pvalue":{},"section_param_id":200,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2751,"page_layout_id":290,"page_layout_root_id":234,"pvalue":{},"section_param_id":201,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2752,"page_layout_id":290,"page_layout_root_id":234,"pvalue":{},"section_param_id":202,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2753,"page_layout_id":290,"page_layout_root_id":234,"pvalue":{},"section_param_id":203,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2754,"page_layout_id":290,"page_layout_root_id":234,"pvalue":{},"section_param_id":204,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2755,"page_layout_id":284,"page_layout_root_id":234,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2756,"page_layout_id":284,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2757,"page_layout_id":284,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2758,"page_layout_id":284,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2759,"page_layout_id":284,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2760,"page_layout_id":279,"page_layout_root_id":234,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2761,"page_layout_id":279,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2762,"page_layout_id":279,"page_layout_root_id":234,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 0px 0px"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2763,"page_layout_id":279,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2764,"page_layout_id":279,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2765,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":11,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:07.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2766,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{"21unset":"1","21":"width:960px"},"section_param_id":12,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2767,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":13,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2768,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{"2unset":"1","2":"background-color:lime"},"section_param_id":14,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2769,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{"27unset":"0","27":"font-weight:bold","49unset":"1","49":"color:#00ADEE"},"section_param_id":15,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2770,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":16,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2771,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{"54unset":"0","54":"text-decoration:none","49unset":"0","49":"color:#00ADEE"},"section_param_id":17,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2772,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":18,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2773,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":19,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2774,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":20,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2775,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":21,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2776,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":22,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2777,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":23,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2778,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":24,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2779,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":25,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2780,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":26,"theme_id":1,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2781,"page_layout_id":246,"page_layout_root_id":234,"pvalue":{},"section_param_id":135,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2782,"page_layout_id":246,"page_layout_root_id":234,"pvalue":{"21unset":"0","21":"width:160px"},"section_param_id":136,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2783,"page_layout_id":246,"page_layout_root_id":234,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","32unset":"0","32":"padding:0px 0px 5px 0px"},"section_param_id":137,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2784,"page_layout_id":246,"page_layout_root_id":234,"pvalue":{},"section_param_id":138,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2785,"page_layout_id":246,"page_layout_root_id":234,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":139,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2786,"page_layout_id":249,"page_layout_root_id":234,"pvalue":{},"section_param_id":135,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2787,"page_layout_id":249,"page_layout_root_id":234,"pvalue":{"21unset":"0","21":"width:160px"},"section_param_id":136,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2788,"page_layout_id":249,"page_layout_root_id":234,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 5px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":137,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2789,"page_layout_id":249,"page_layout_root_id":234,"pvalue":{},"section_param_id":138,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2790,"page_layout_id":249,"page_layout_root_id":234,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":139,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2791,"page_layout_id":274,"page_layout_root_id":234,"pvalue":{},"section_param_id":140,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2792,"page_layout_id":274,"page_layout_root_id":234,"pvalue":{},"section_param_id":141,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2793,"page_layout_id":274,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":142,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2794,"page_layout_id":274,"page_layout_root_id":234,"pvalue":{},"section_param_id":143,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2795,"page_layout_id":274,"page_layout_root_id":234,"pvalue":{},"section_param_id":144,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2796,"page_layout_id":275,"page_layout_root_id":234,"pvalue":{},"section_param_id":145,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2797,"page_layout_id":275,"page_layout_root_id":234,"pvalue":{"101unset":"0","101":"float:right"},"section_param_id":146,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2798,"page_layout_id":275,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:10px auto auto auto"},"section_param_id":147,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2799,"page_layout_id":275,"page_layout_root_id":234,"pvalue":{},"section_param_id":148,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2800,"page_layout_id":275,"page_layout_root_id":234,"pvalue":{},"section_param_id":149,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2801,"page_layout_id":276,"page_layout_root_id":234,"pvalue":{},"section_param_id":150,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2802,"page_layout_id":276,"page_layout_root_id":234,"pvalue":{"21unset":"1","21":"width:600px"},"section_param_id":151,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2803,"page_layout_id":276,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":152,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2804,"page_layout_id":276,"page_layout_root_id":234,"pvalue":{},"section_param_id":153,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2805,"page_layout_id":276,"page_layout_root_id":234,"pvalue":{},"section_param_id":154,"theme_id":1,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2806,"page_layout_id":237,"page_layout_root_id":234,"pvalue":{},"section_param_id":323,"theme_id":1,"unset":null,"updated_at":"2013-11-29T02:49:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2807,"page_layout_id":237,"page_layout_root_id":234,"pvalue":{"21unset":"1","21":"width:220px","101unset":"1","101":"float:none"},"section_param_id":324,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2808,"page_layout_id":237,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":325,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2809,"page_layout_id":237,"page_layout_root_id":234,"pvalue":{},"section_param_id":326,"theme_id":1,"unset":null,"updated_at":"2013-11-29T02:49:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2810,"page_layout_id":237,"page_layout_root_id":234,"pvalue":{},"section_param_id":327,"theme_id":1,"unset":null,"updated_at":"2013-11-29T02:49:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2811,"page_layout_id":240,"page_layout_root_id":234,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2812,"page_layout_id":240,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"1","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2813,"page_layout_id":240,"page_layout_root_id":234,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 6px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","31unset":"0","31":"margin:auto 10px auto 10px"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2814,"page_layout_id":240,"page_layout_root_id":234,"pvalue":{"2unset":"1","2":"background-color:green","3unset":"1","3":"background-image:pattern-1.png"},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2815,"page_layout_id":240,"page_layout_root_id":234,"pvalue":{"49unset":"1","49":"color:teal","25unset":"1","25":"font-style:normal","24unset":"1","24":"font-size:0%","27unset":"1","27":"font-weight:bold"},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2816,"page_layout_id":242,"page_layout_root_id":234,"pvalue":{},"section_param_id":328,"theme_id":1,"unset":null,"updated_at":"2013-12-03T08:15:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2817,"page_layout_id":242,"page_layout_root_id":234,"pvalue":{"101unset":"0","101":"float:right"},"section_param_id":329,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2818,"page_layout_id":242,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":330,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2819,"page_layout_id":242,"page_layout_root_id":234,"pvalue":{},"section_param_id":331,"theme_id":1,"unset":null,"updated_at":"2013-12-03T08:15:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2820,"page_layout_id":242,"page_layout_root_id":234,"pvalue":{},"section_param_id":332,"theme_id":1,"unset":null,"updated_at":"2013-12-03T08:15:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2821,"page_layout_id":236,"page_layout_root_id":234,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2822,"page_layout_id":236,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2823,"page_layout_id":236,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2824,"page_layout_id":236,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-12-05T08:06:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2825,"page_layout_id":236,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-12-05T08:06:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2826,"page_layout_id":238,"page_layout_root_id":234,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2827,"page_layout_id":238,"page_layout_root_id":234,"pvalue":{"101":"float:right","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2828,"page_layout_id":238,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2829,"page_layout_id":238,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2830,"page_layout_id":238,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2831,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{"21":"width:960px","21unset":"0","20":"min-width:960px","20hidden":"1"},"section_param_id":226,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2832,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":227,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2833,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{"85":"clear:both"},"section_param_id":228,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2834,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":229,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2835,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":230,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2836,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":231,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2837,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":232,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2838,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":233,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2839,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":234,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2840,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{"31unset":"0","31":"margin:10px auto 2px auto"},"section_param_id":235,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2841,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":236,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2842,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":237,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2843,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":238,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2844,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":239,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2845,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":240,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2846,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":241,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2847,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{"49unset":"0","49":"color:red","24unset":"0","24":"font-size:82%"},"section_param_id":242,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2848,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":243,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2849,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":317,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2850,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":318,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2851,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":319,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2852,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":320,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2853,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":321,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2854,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":322,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2855,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":244,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2856,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":245,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2857,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":246,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2858,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{"49unset":"0","49":"color:#00ADEE","24unset":"1","24":"font-size:80%"},"section_param_id":247,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2859,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":248,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2860,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{"7unset":"0","7":"border-style:solid none solid none","8unset":"0","8":"border-width:1px 0px 1px 0px","6unset":"0","6":"border-color:#D9D9DB transparent #D9D9DB transparent"},"section_param_id":249,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2861,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{"32unset":"0","32":"padding:5px 10px 5px 10px"},"section_param_id":250,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2862,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":251,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2863,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{"2unset":"0","2":"background-color:#D9D9DB"},"section_param_id":252,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2864,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":253,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2865,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":254,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2866,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":255,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2867,"page_layout_id":234,"page_layout_root_id":234,"pvalue":{},"section_param_id":256,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2868,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{},"section_param_id":55,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2869,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{"21unset":"0","21":"width:150px","15unset":"0","15":"height:34px"},"section_param_id":56,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2870,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{"15hidden":"1","15unset":"0","15":"height:33px","32unset":"1","32":"padding:0px 0px 0px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #BBBBBB transparent"},"section_param_id":57,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2871,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{},"section_param_id":58,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2872,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{},"section_param_id":59,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2873,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{},"section_param_id":294,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2874,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{},"section_param_id":295,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2875,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{"49unset":"0","49":"color:#BBBBBB","27unset":"0","27":"font-weight:bold","24unset":"0","24":"font-size:80%","54unset":"0","54":"text-decoration:none","53unset":"0","53":"text-align:center"},"section_param_id":296,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2876,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{},"section_param_id":297,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:39:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2877,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{},"section_param_id":105,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2878,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":106,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2879,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{},"section_param_id":107,"theme_id":1,"unset":null,"updated_at":"2014-07-30T23:08:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2880,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{},"section_param_id":108,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2881,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{},"section_param_id":109,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2882,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px","7unset":"0","7":"border-style:solid none solid none","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":302,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2883,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{"2unset":"0","2":"background-color:transparent"},"section_param_id":303,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2884,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{},"section_param_id":304,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2885,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":305,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2886,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{},"section_param_id":306,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2887,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{},"section_param_id":55,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2888,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":56,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2889,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 0px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":57,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2890,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{},"section_param_id":58,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2891,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{"24unset":"0","24":"font-size:150%","27unset":"0","27":"font-weight:bold"},"section_param_id":59,"theme_id":1,"unset":null,"updated_at":"2014-09-01T14:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2892,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{},"section_param_id":294,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2893,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{},"section_param_id":295,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2894,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{"49unset":"0","49":"color:black","54unset":"0","54":"text-decoration:none","27unset":"0","27":"font-weight:bold","24unset":"0","24":"font-size:150%"},"section_param_id":296,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2895,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{},"section_param_id":297,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2896,"page_layout_id":269,"page_layout_root_id":234,"pvalue":{},"section_param_id":115,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2897,"page_layout_id":269,"page_layout_root_id":234,"pvalue":{},"section_param_id":116,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2898,"page_layout_id":269,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":117,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2899,"page_layout_id":269,"page_layout_root_id":234,"pvalue":{},"section_param_id":118,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2900,"page_layout_id":269,"page_layout_root_id":234,"pvalue":{},"section_param_id":119,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2901,"page_layout_id":269,"page_layout_root_id":234,"pvalue":{"21unset":"0","21":"width:60px","7unset":"0","7":"border-style:solid solid solid solid","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","8unset":"0","8":"border-width:1px 1px 1px 1px","32unset":"0","32":"padding:7px 10px 7px 10px"},"section_param_id":307,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2902,"page_layout_id":269,"page_layout_root_id":234,"pvalue":{},"section_param_id":308,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2903,"page_layout_id":269,"page_layout_root_id":234,"pvalue":{"53unset":"0","53":"text-align:left"},"section_param_id":309,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2904,"page_layout_id":270,"page_layout_root_id":234,"pvalue":{},"section_param_id":120,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2905,"page_layout_id":270,"page_layout_root_id":234,"pvalue":{},"section_param_id":121,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2906,"page_layout_id":270,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto auto 5px"},"section_param_id":122,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2907,"page_layout_id":270,"page_layout_root_id":234,"pvalue":{},"section_param_id":123,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2908,"page_layout_id":270,"page_layout_root_id":234,"pvalue":{},"section_param_id":124,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2909,"page_layout_id":270,"page_layout_root_id":234,"pvalue":{},"section_param_id":310,"theme_id":1,"unset":null,"updated_at":"2014-07-30T23:08:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2910,"page_layout_id":270,"page_layout_root_id":234,"pvalue":{"2unset":"0","2":"background-color:#00ADEE"},"section_param_id":311,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2911,"page_layout_id":270,"page_layout_root_id":234,"pvalue":{"49unset":"0","49":"color:white","24unset":"1","24":"font-size:14em"},"section_param_id":312,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2912,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{},"section_param_id":284,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2913,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{"21":"width:600px","21unset":"0"},"section_param_id":285,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2914,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{"7":"border-style:solid solid solid solid","7unset":"0","8":"border-width:1px 1px 1px 1px","8unset":"0","6":"border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC","6unset":"0","15":"height:598px","15hidden":"1"},"section_param_id":286,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2915,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{"2":"background-color:#FFFFFF","2unset":"0"},"section_param_id":287,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2916,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{},"section_param_id":288,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2917,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{"32":"padding:2px 2px 2px 2px","32unset":"0"},"section_param_id":313,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2918,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{"2":"background-color:#EEEEEE","2unset":"0"},"section_param_id":314,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2919,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{},"section_param_id":315,"theme_id":1,"unset":null,"updated_at":"2014-01-22T03:40:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2920,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{"32":"padding:0 10px 5px 10px","32unset":"0"},"section_param_id":316,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2921,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":333,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2922,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":334,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2923,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":335,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2924,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":336,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2925,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":337,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2926,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":338,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2927,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":339,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2928,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":340,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2929,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":341,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2930,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":342,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2931,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":343,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2932,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":344,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2933,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":345,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2934,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":346,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2935,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":347,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2936,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":348,"theme_id":1,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2937,"page_layout_id":291,"page_layout_root_id":234,"pvalue":{},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2938,"page_layout_id":291,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2939,"page_layout_id":291,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2940,"page_layout_id":291,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2941,"page_layout_id":291,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2942,"page_layout_id":292,"page_layout_root_id":234,"pvalue":{},"section_param_id":349,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2943,"page_layout_id":292,"page_layout_root_id":234,"pvalue":{},"section_param_id":350,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2944,"page_layout_id":292,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":351,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2945,"page_layout_id":292,"page_layout_root_id":234,"pvalue":{},"section_param_id":352,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2946,"page_layout_id":292,"page_layout_root_id":234,"pvalue":{},"section_param_id":353,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2947,"page_layout_id":292,"page_layout_root_id":234,"pvalue":{},"section_param_id":354,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2948,"page_layout_id":292,"page_layout_root_id":234,"pvalue":{},"section_param_id":355,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2949,"page_layout_id":292,"page_layout_root_id":234,"pvalue":{},"section_param_id":356,"theme_id":1,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2950,"page_layout_id":259,"page_layout_root_id":234,"pvalue":{},"section_param_id":289,"theme_id":1,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2951,"page_layout_id":259,"page_layout_root_id":234,"pvalue":{},"section_param_id":290,"theme_id":1,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2952,"page_layout_id":259,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":291,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2953,"page_layout_id":259,"page_layout_root_id":234,"pvalue":{},"section_param_id":292,"theme_id":1,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2954,"page_layout_id":259,"page_layout_root_id":234,"pvalue":{},"section_param_id":293,"theme_id":1,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2955,"page_layout_id":259,"page_layout_root_id":234,"pvalue":{"32unset":"0","32":"padding:5px 10px 5px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":299,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2956,"page_layout_id":259,"page_layout_root_id":234,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","31unset":"0","31":"margin:6px 6px 6px auto"},"section_param_id":301,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2957,"page_layout_id":280,"page_layout_root_id":234,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2958,"page_layout_id":280,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2959,"page_layout_id":280,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2960,"page_layout_id":280,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-03-04T14:20:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2961,"page_layout_id":280,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-03-04T14:20:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2962,"page_layout_id":265,"page_layout_root_id":234,"pvalue":{},"section_param_id":357,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2963,"page_layout_id":265,"page_layout_root_id":234,"pvalue":{},"section_param_id":358,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2964,"page_layout_id":265,"page_layout_root_id":234,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":359,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2965,"page_layout_id":265,"page_layout_root_id":234,"pvalue":{},"section_param_id":360,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2966,"page_layout_id":265,"page_layout_root_id":234,"pvalue":{},"section_param_id":361,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2967,"page_layout_id":268,"page_layout_root_id":234,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2968,"page_layout_id":268,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:230px"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2969,"page_layout_id":268,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2970,"page_layout_id":268,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:42:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2971,"page_layout_id":268,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-03-06T13:42:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2972,"page_layout_id":266,"page_layout_root_id":234,"pvalue":{"85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2973,"page_layout_id":266,"page_layout_root_id":234,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2974,"page_layout_id":266,"page_layout_root_id":234,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":1,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2975,"page_layout_id":266,"page_layout_root_id":234,"pvalue":{},"section_param_id":9,"theme_id":1,"unset":null,"updated_at":"2014-03-06T15:17:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2976,"page_layout_id":266,"page_layout_root_id":234,"pvalue":{},"section_param_id":10,"theme_id":1,"unset":null,"updated_at":"2014-03-06T15:17:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2977,"page_layout_id":254,"page_layout_root_id":234,"pvalue":{},"section_param_id":404,"theme_id":1,"unset":null,"updated_at":"2014-07-04T12:47:18.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2978,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":420,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2979,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":421,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2980,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":421,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2981,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":422,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2982,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":423,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2983,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":424,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2984,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":424,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2985,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":425,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2986,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":426,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2987,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":427,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2988,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":427,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2989,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":428,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2990,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":429,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2991,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":430,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2992,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":430,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2993,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":431,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2994,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":432,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2995,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":433,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2996,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":433,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2997,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":434,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2998,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":435,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":2999,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":436,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3000,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":436,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3001,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":437,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3002,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":438,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3003,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":439,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3004,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":439,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3005,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":440,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3006,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":441,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3007,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":442,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3008,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":442,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3009,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":443,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3010,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":444,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3011,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":445,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3012,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":445,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:06:06.000Z","id":3013,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":446,"theme_id":1,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:57.000Z","id":4600,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":477,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:57.000Z","id":4604,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":478,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:57.000Z","id":4605,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":478,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4612,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":479,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4622,"page_layout_id":235,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4623,"page_layout_id":236,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4624,"page_layout_id":238,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4625,"page_layout_id":240,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4626,"page_layout_id":243,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4627,"page_layout_id":244,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4628,"page_layout_id":245,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4629,"page_layout_id":248,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4630,"page_layout_id":251,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4631,"page_layout_id":252,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4632,"page_layout_id":253,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4633,"page_layout_id":257,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4634,"page_layout_id":258,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4635,"page_layout_id":261,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4636,"page_layout_id":264,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4637,"page_layout_id":266,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4638,"page_layout_id":268,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4639,"page_layout_id":271,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4640,"page_layout_id":279,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4641,"page_layout_id":280,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4642,"page_layout_id":284,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4643,"page_layout_id":287,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4644,"page_layout_id":289,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4645,"page_layout_id":291,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4646,"page_layout_id":293,"page_layout_root_id":234,"pvalue":{},"section_param_id":480,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4750,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":481,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4754,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":482,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4755,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":482,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4765,"page_layout_id":294,"page_layout_root_id":234,"pvalue":{},"section_param_id":484,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4776,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{},"section_param_id":485,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4777,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{},"section_param_id":485,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4782,"page_layout_id":263,"page_layout_root_id":234,"pvalue":{},"section_param_id":486,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4785,"page_layout_id":254,"page_layout_root_id":234,"pvalue":{},"section_param_id":487,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4792,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{},"section_param_id":495,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4795,"page_layout_id":256,"page_layout_root_id":234,"pvalue":{},"section_param_id":496,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4796,"page_layout_id":267,"page_layout_root_id":234,"pvalue":{},"section_param_id":496,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4801,"page_layout_id":269,"page_layout_root_id":234,"pvalue":{},"section_param_id":497,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4804,"page_layout_id":270,"page_layout_root_id":234,"pvalue":{},"section_param_id":498,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4807,"page_layout_id":273,"page_layout_root_id":234,"pvalue":{},"section_param_id":499,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4810,"page_layout_id":246,"page_layout_root_id":234,"pvalue":{},"section_param_id":501,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4811,"page_layout_id":249,"page_layout_root_id":234,"pvalue":{},"section_param_id":501,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4820,"page_layout_id":274,"page_layout_root_id":234,"pvalue":{},"section_param_id":502,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4823,"page_layout_id":275,"page_layout_root_id":234,"pvalue":{},"section_param_id":503,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4826,"page_layout_id":276,"page_layout_root_id":234,"pvalue":{},"section_param_id":504,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4829,"page_layout_id":272,"page_layout_root_id":234,"pvalue":{},"section_param_id":506,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4837,"page_layout_id":281,"page_layout_root_id":234,"pvalue":{},"section_param_id":507,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4840,"page_layout_id":282,"page_layout_root_id":234,"pvalue":{},"section_param_id":508,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4843,"page_layout_id":283,"page_layout_root_id":234,"pvalue":{},"section_param_id":509,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4846,"page_layout_id":288,"page_layout_root_id":234,"pvalue":{},"section_param_id":510,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4849,"page_layout_id":290,"page_layout_root_id":234,"pvalue":{},"section_param_id":511,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4852,"page_layout_id":277,"page_layout_root_id":234,"pvalue":{},"section_param_id":513,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4855,"page_layout_id":278,"page_layout_root_id":234,"pvalue":{},"section_param_id":514,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4858,"page_layout_id":286,"page_layout_root_id":234,"pvalue":{},"section_param_id":515,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4861,"page_layout_id":285,"page_layout_root_id":234,"pvalue":{},"section_param_id":516,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4864,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{},"section_param_id":518,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4867,"page_layout_id":259,"page_layout_root_id":234,"pvalue":{},"section_param_id":519,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4871,"page_layout_id":237,"page_layout_root_id":234,"pvalue":{},"section_param_id":520,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4875,"page_layout_id":242,"page_layout_root_id":234,"pvalue":{},"section_param_id":521,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4876,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":522,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4879,"page_layout_id":292,"page_layout_root_id":234,"pvalue":{},"section_param_id":523,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4882,"page_layout_id":265,"page_layout_root_id":234,"pvalue":{},"section_param_id":524,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4908,"page_layout_id":235,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4909,"page_layout_id":236,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4910,"page_layout_id":238,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4911,"page_layout_id":240,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4912,"page_layout_id":243,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4913,"page_layout_id":244,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4914,"page_layout_id":245,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4915,"page_layout_id":248,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4916,"page_layout_id":251,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4917,"page_layout_id":252,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4918,"page_layout_id":253,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4919,"page_layout_id":257,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4920,"page_layout_id":258,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4921,"page_layout_id":261,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4922,"page_layout_id":264,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4923,"page_layout_id":266,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4924,"page_layout_id":268,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4925,"page_layout_id":271,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4926,"page_layout_id":279,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4927,"page_layout_id":280,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4928,"page_layout_id":284,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4929,"page_layout_id":287,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4930,"page_layout_id":289,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4931,"page_layout_id":291,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4932,"page_layout_id":293,"page_layout_root_id":234,"pvalue":{},"section_param_id":536,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5036,"page_layout_id":241,"page_layout_root_id":234,"pvalue":{},"section_param_id":537,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5040,"page_layout_id":247,"page_layout_root_id":234,"pvalue":{},"section_param_id":538,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5041,"page_layout_id":250,"page_layout_root_id":234,"pvalue":{},"section_param_id":538,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5051,"page_layout_id":294,"page_layout_root_id":234,"pvalue":{},"section_param_id":540,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5062,"page_layout_id":255,"page_layout_root_id":234,"pvalue":{},"section_param_id":541,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5063,"page_layout_id":262,"page_layout_root_id":234,"pvalue":{},"section_param_id":541,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5068,"page_layout_id":263,"page_layout_root_id":234,"pvalue":{},"section_param_id":542,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5071,"page_layout_id":254,"page_layout_root_id":234,"pvalue":{},"section_param_id":543,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5078,"page_layout_id":260,"page_layout_root_id":234,"pvalue":{},"section_param_id":551,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5081,"page_layout_id":256,"page_layout_root_id":234,"pvalue":{},"section_param_id":552,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5082,"page_layout_id":267,"page_layout_root_id":234,"pvalue":{},"section_param_id":552,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5087,"page_layout_id":269,"page_layout_root_id":234,"pvalue":{},"section_param_id":553,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5090,"page_layout_id":270,"page_layout_root_id":234,"pvalue":{},"section_param_id":554,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5093,"page_layout_id":273,"page_layout_root_id":234,"pvalue":{},"section_param_id":555,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5096,"page_layout_id":246,"page_layout_root_id":234,"pvalue":{},"section_param_id":557,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5097,"page_layout_id":249,"page_layout_root_id":234,"pvalue":{},"section_param_id":557,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5106,"page_layout_id":274,"page_layout_root_id":234,"pvalue":{},"section_param_id":558,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5109,"page_layout_id":275,"page_layout_root_id":234,"pvalue":{},"section_param_id":559,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5112,"page_layout_id":276,"page_layout_root_id":234,"pvalue":{},"section_param_id":560,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5115,"page_layout_id":272,"page_layout_root_id":234,"pvalue":{},"section_param_id":562,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5123,"page_layout_id":281,"page_layout_root_id":234,"pvalue":{},"section_param_id":563,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5126,"page_layout_id":282,"page_layout_root_id":234,"pvalue":{},"section_param_id":564,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5129,"page_layout_id":283,"page_layout_root_id":234,"pvalue":{},"section_param_id":565,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5132,"page_layout_id":288,"page_layout_root_id":234,"pvalue":{},"section_param_id":566,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5135,"page_layout_id":290,"page_layout_root_id":234,"pvalue":{},"section_param_id":567,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5138,"page_layout_id":277,"page_layout_root_id":234,"pvalue":{},"section_param_id":569,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5141,"page_layout_id":278,"page_layout_root_id":234,"pvalue":{},"section_param_id":570,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5144,"page_layout_id":286,"page_layout_root_id":234,"pvalue":{},"section_param_id":571,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5147,"page_layout_id":285,"page_layout_root_id":234,"pvalue":{},"section_param_id":572,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5150,"page_layout_id":295,"page_layout_root_id":234,"pvalue":{},"section_param_id":574,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5153,"page_layout_id":259,"page_layout_root_id":234,"pvalue":{},"section_param_id":575,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5157,"page_layout_id":237,"page_layout_root_id":234,"pvalue":{},"section_param_id":576,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5161,"page_layout_id":242,"page_layout_root_id":234,"pvalue":{},"section_param_id":577,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5162,"page_layout_id":239,"page_layout_root_id":234,"pvalue":{},"section_param_id":578,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5165,"page_layout_id":292,"page_layout_root_id":234,"pvalue":{},"section_param_id":579,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5168,"page_layout_id":265,"page_layout_root_id":234,"pvalue":{},"section_param_id":580,"theme_id":1,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}}],"page_layouts":[{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":234,"is_enabled":true,"is_full_html":true,"lft":1,"parent_id":null,"rgt":124,"root_id":234,"section_context":"","section_id":75,"section_instance":2,"site_id":2,"slug":"root","title":"root","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":235,"is_enabled":true,"is_full_html":false,"lft":2,"parent_id":234,"rgt":17,"root_id":234,"section_context":"","section_id":2,"section_instance":1,"site_id":2,"slug":"header","title":"Header","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":236,"is_enabled":true,"is_full_html":false,"lft":3,"parent_id":235,"rgt":10,"root_id":234,"section_context":"","section_id":2,"section_instance":20,"site_id":2,"slug":"container000","title":"container000","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":237,"is_enabled":true,"is_full_html":false,"lft":4,"parent_id":236,"rgt":5,"root_id":234,"section_context":"","section_id":97,"section_instance":1,"site_id":2,"slug":"logo","title":"Logo","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":238,"is_enabled":true,"is_full_html":false,"lft":6,"parent_id":236,"rgt":9,"root_id":234,"section_context":"","section_id":2,"section_instance":21,"site_id":2,"slug":"container--6","title":"container","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":239,"is_enabled":true,"is_full_html":false,"lft":7,"parent_id":238,"rgt":8,"root_id":234,"section_context":"","section_id":101,"section_instance":2,"site_id":2,"slug":"logged-unlogged-menu","title":"logged&unlogged menu","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":240,"is_enabled":true,"is_full_html":false,"lft":11,"parent_id":235,"rgt":16,"root_id":234,"section_context":"","section_id":2,"section_instance":19,"site_id":2,"slug":"container--7","title":"container","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":241,"is_enabled":true,"is_full_html":false,"lft":12,"parent_id":240,"rgt":13,"root_id":234,"section_context":"","section_id":3,"section_instance":3,"site_id":2,"slug":"main-menu","title":"Main menu","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":242,"is_enabled":true,"is_full_html":false,"lft":14,"parent_id":240,"rgt":15,"root_id":234,"section_context":"","section_id":99,"section_instance":1,"site_id":2,"slug":"mini-cart","title":"Mini cart","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":243,"is_enabled":true,"is_full_html":false,"lft":18,"parent_id":234,"rgt":117,"root_id":234,"section_context":"","section_id":2,"section_instance":2,"site_id":2,"slug":"content","title":"content","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":244,"is_enabled":true,"is_full_html":false,"lft":19,"parent_id":243,"rgt":32,"root_id":234,"section_context":"","section_id":2,"section_instance":4,"site_id":2,"slug":"lftnav","title":"lftnav","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":245,"is_enabled":true,"is_full_html":false,"lft":20,"parent_id":244,"rgt":25,"root_id":234,"section_context":"","section_id":2,"section_instance":12,"site_id":2,"slug":"container--8","title":"container","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":246,"is_enabled":true,"is_full_html":false,"lft":21,"parent_id":245,"rgt":22,"root_id":234,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name","title":"taxonomy name","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":247,"is_enabled":true,"is_full_html":false,"lft":23,"parent_id":245,"rgt":24,"root_id":234,"section_context":"","section_id":6,"section_instance":1,"site_id":2,"slug":"vmenu","title":"vmenu","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":248,"is_enabled":true,"is_full_html":false,"lft":26,"parent_id":244,"rgt":31,"root_id":234,"section_context":"","section_id":2,"section_instance":13,"site_id":2,"slug":"container--9","title":"container","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:07.000Z","data_filter":"","data_source":"","data_source_param":"","id":249,"is_enabled":true,"is_full_html":false,"lft":27,"parent_id":248,"rgt":28,"root_id":234,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name--2","title":"taxonomy name","updated_at":"2014-08-02T07:06:07.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":250,"is_enabled":true,"is_full_html":false,"lft":29,"parent_id":248,"rgt":30,"root_id":234,"section_context":"","section_id":6,"section_instance":2,"site_id":2,"slug":"vmenu--2","title":"vmenu","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":251,"is_enabled":true,"is_full_html":false,"lft":33,"parent_id":243,"rgt":116,"root_id":234,"section_context":"","section_id":2,"section_instance":5,"site_id":2,"slug":"main-content","title":"main content","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"gpvs","data_source_param":"","id":252,"is_enabled":true,"is_full_html":false,"lft":34,"parent_id":251,"rgt":43,"root_id":234,"section_context":"home,list","section_id":2,"section_instance":6,"site_id":2,"slug":"product-list","title":"product list","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":253,"is_enabled":true,"is_full_html":false,"lft":35,"parent_id":252,"rgt":42,"root_id":234,"section_context":"","section_id":2,"section_instance":8,"site_id":2,"slug":"container--10","title":"container","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":254,"is_enabled":true,"is_full_html":false,"lft":36,"parent_id":253,"rgt":37,"root_id":234,"section_context":"","section_id":17,"section_instance":1,"site_id":2,"slug":"product-image","title":"product image","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":1,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":255,"is_enabled":true,"is_full_html":false,"lft":38,"parent_id":253,"rgt":39,"root_id":234,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"product-name","title":"product name","updated_at":"2014-09-01T14:24:26.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":256,"is_enabled":true,"is_full_html":false,"lft":40,"parent_id":253,"rgt":41,"root_id":234,"section_context":"","section_id":30,"section_instance":2,"site_id":2,"slug":"product-price","title":"product price","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"this_product","data_source_param":"","id":257,"is_enabled":true,"is_full_html":false,"lft":44,"parent_id":251,"rgt":71,"root_id":234,"section_context":"detail","section_id":2,"section_instance":7,"site_id":2,"slug":"product-detail","title":"product detail","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":258,"is_enabled":true,"is_full_html":false,"lft":45,"parent_id":257,"rgt":50,"root_id":234,"section_context":"","section_id":2,"section_instance":10,"site_id":2,"slug":"container--11","title":"container","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":259,"is_enabled":true,"is_full_html":false,"lft":46,"parent_id":258,"rgt":47,"root_id":234,"section_context":"","section_id":94,"section_instance":2,"site_id":2,"slug":"image-with-thumbnails","title":"image with thumbnails","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":260,"is_enabled":true,"is_full_html":false,"lft":48,"parent_id":258,"rgt":49,"root_id":234,"section_context":"","section_id":28,"section_instance":2,"site_id":2,"slug":"product_properties","title":"product_properties","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":261,"is_enabled":true,"is_full_html":false,"lft":51,"parent_id":257,"rgt":70,"root_id":234,"section_context":"","section_id":2,"section_instance":9,"site_id":2,"slug":"container--12","title":"container","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":262,"is_enabled":true,"is_full_html":false,"lft":52,"parent_id":261,"rgt":53,"root_id":234,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"product-name--2","title":"product name","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":263,"is_enabled":true,"is_full_html":false,"lft":54,"parent_id":261,"rgt":55,"root_id":234,"section_context":"","section_id":15,"section_instance":1,"site_id":2,"slug":"product-description","title":"product description","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":264,"is_enabled":true,"is_full_html":false,"lft":56,"parent_id":261,"rgt":69,"root_id":234,"section_context":"","section_id":2,"section_instance":11,"site_id":2,"slug":"container--13","title":"container","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":265,"is_enabled":true,"is_full_html":false,"lft":57,"parent_id":264,"rgt":58,"root_id":234,"section_context":"","section_id":107,"section_instance":1,"site_id":2,"slug":"product-option-values","title":"Product option values","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":266,"is_enabled":true,"is_full_html":false,"lft":59,"parent_id":264,"rgt":68,"root_id":234,"section_context":"","section_id":2,"section_instance":25,"site_id":2,"slug":"container--14","title":"container","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":267,"is_enabled":true,"is_full_html":false,"lft":60,"parent_id":266,"rgt":61,"root_id":234,"section_context":"","section_id":30,"section_instance":1,"site_id":2,"slug":"product-price--2","title":"product price","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":268,"is_enabled":true,"is_full_html":false,"lft":62,"parent_id":266,"rgt":67,"root_id":234,"section_context":"","section_id":2,"section_instance":24,"site_id":2,"slug":"container--15","title":"container","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":269,"is_enabled":true,"is_full_html":false,"lft":63,"parent_id":268,"rgt":64,"root_id":234,"section_context":"","section_id":32,"section_instance":2,"site_id":2,"slug":"product-quantity","title":"product quantity","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":270,"is_enabled":true,"is_full_html":false,"lft":65,"parent_id":268,"rgt":66,"root_id":234,"section_context":"","section_id":34,"section_instance":2,"site_id":2,"slug":"product-atc","title":"product atc","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":271,"is_enabled":true,"is_full_html":false,"lft":72,"parent_id":251,"rgt":115,"root_id":234,"section_context":"cart,checkout,thanks,account,signup,login,password","section_id":2,"section_instance":14,"site_id":2,"slug":"other-pages","title":"other pages","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":272,"is_enabled":true,"is_full_html":false,"lft":73,"parent_id":271,"rgt":74,"root_id":234,"section_context":"","section_id":50,"section_instance":1,"site_id":2,"slug":"taxon-name","title":"taxon name","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":273,"is_enabled":true,"is_full_html":false,"lft":75,"parent_id":271,"rgt":80,"root_id":234,"section_context":"cart","section_id":36,"section_instance":1,"site_id":2,"slug":"cart","title":"cart","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":274,"is_enabled":true,"is_full_html":false,"lft":76,"parent_id":273,"rgt":77,"root_id":234,"section_context":"","section_id":42,"section_instance":2,"site_id":2,"slug":"cart-items","title":"cart items","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":275,"is_enabled":true,"is_full_html":false,"lft":78,"parent_id":273,"rgt":79,"root_id":234,"section_context":"","section_id":44,"section_instance":2,"site_id":2,"slug":"order-total-price","title":"order total price","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":276,"is_enabled":true,"is_full_html":false,"lft":81,"parent_id":271,"rgt":86,"root_id":234,"section_context":"checkout","section_id":46,"section_instance":2,"site_id":2,"slug":"checkout","title":"checkout","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":277,"is_enabled":true,"is_full_html":false,"lft":82,"parent_id":276,"rgt":83,"root_id":234,"section_context":"","section_id":69,"section_instance":1,"site_id":2,"slug":"ship-form","title":"ship form","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":278,"is_enabled":true,"is_full_html":false,"lft":84,"parent_id":276,"rgt":85,"root_id":234,"section_context":"","section_id":72,"section_instance":1,"site_id":2,"slug":"payment-form","title":"payment form","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":279,"is_enabled":true,"is_full_html":false,"lft":87,"parent_id":271,"rgt":96,"root_id":234,"section_context":"thanks","section_id":2,"section_instance":18,"site_id":2,"slug":"thanks","title":"thanks","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":280,"is_enabled":true,"is_full_html":false,"lft":88,"parent_id":279,"rgt":93,"root_id":234,"section_context":"","section_id":2,"section_instance":23,"site_id":2,"slug":"container--16","title":"container","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":281,"is_enabled":true,"is_full_html":false,"lft":89,"parent_id":280,"rgt":90,"root_id":234,"section_context":"","section_id":52,"section_instance":1,"site_id":2,"slug":"order-address","title":"order address","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":282,"is_enabled":true,"is_full_html":false,"lft":91,"parent_id":280,"rgt":92,"root_id":234,"section_context":"","section_id":55,"section_instance":1,"site_id":2,"slug":"order-payment","title":"order payment","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":283,"is_enabled":true,"is_full_html":false,"lft":94,"parent_id":279,"rgt":95,"root_id":234,"section_context":"","section_id":58,"section_instance":1,"site_id":2,"slug":"order-items","title":"order items","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":284,"is_enabled":true,"is_full_html":false,"lft":97,"parent_id":271,"rgt":102,"root_id":234,"section_context":"account","section_id":2,"section_instance":17,"site_id":2,"slug":"account","title":"account","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":285,"is_enabled":true,"is_full_html":false,"lft":98,"parent_id":284,"rgt":99,"root_id":234,"section_context":"","section_id":85,"section_instance":1,"site_id":2,"slug":"profile","title":"profile","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":286,"is_enabled":true,"is_full_html":false,"lft":100,"parent_id":284,"rgt":101,"root_id":234,"section_context":"","section_id":82,"section_instance":1,"site_id":2,"slug":"order-list","title":"order list","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:08.000Z","data_filter":"","data_source":"","data_source_param":"","id":287,"is_enabled":true,"is_full_html":false,"lft":103,"parent_id":271,"rgt":106,"root_id":234,"section_context":"login","section_id":2,"section_instance":15,"site_id":2,"slug":"login","title":"login","updated_at":"2014-08-02T07:06:08.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":288,"is_enabled":true,"is_full_html":false,"lft":104,"parent_id":287,"rgt":105,"root_id":234,"section_context":"","section_id":61,"section_instance":1,"site_id":2,"slug":"login-form","title":"login form","updated_at":"2014-08-02T07:06:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":289,"is_enabled":true,"is_full_html":false,"lft":107,"parent_id":271,"rgt":110,"root_id":234,"section_context":"signup","section_id":2,"section_instance":16,"site_id":2,"slug":"signup","title":"signup","updated_at":"2014-08-02T07:06:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":290,"is_enabled":true,"is_full_html":false,"lft":108,"parent_id":289,"rgt":109,"root_id":234,"section_context":"","section_id":64,"section_instance":1,"site_id":2,"slug":"sign-up-form","title":"sign up form","updated_at":"2014-08-02T07:06:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":291,"is_enabled":true,"is_full_html":false,"lft":111,"parent_id":271,"rgt":114,"root_id":234,"section_context":"password","section_id":2,"section_instance":22,"site_id":2,"slug":"password","title":"password","updated_at":"2014-08-02T07:06:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":292,"is_enabled":true,"is_full_html":false,"lft":112,"parent_id":291,"rgt":113,"root_id":234,"section_context":"","section_id":104,"section_instance":1,"site_id":2,"slug":"password-recover-form","title":"password recover form","updated_at":"2014-08-02T07:06:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":293,"is_enabled":true,"is_full_html":false,"lft":118,"parent_id":234,"rgt":121,"root_id":234,"section_context":"","section_id":2,"section_instance":3,"site_id":2,"slug":"footer","title":"footer","updated_at":"2014-08-02T07:06:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":294,"is_enabled":true,"is_full_html":false,"lft":119,"parent_id":293,"rgt":120,"root_id":234,"section_context":"","section_id":11,"section_instance":1,"site_id":2,"slug":"copyright","title":"copyright","updated_at":"2014-08-02T07:06:09.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":83,"created_at":"2014-08-02T07:06:09.000Z","data_filter":"","data_source":"","data_source_param":"","id":295,"is_enabled":true,"is_full_html":false,"lft":122,"parent_id":234,"rgt":123,"root_id":234,"section_context":"","section_id":90,"section_instance":2,"site_id":2,"slug":"dialog","title":"dialog","updated_at":"2014-08-02T07:06:09.000Z"}}],"template_files":[{"template_file":{"attachment_content_type":"image/gif","attachment_file_name":"logo.gif","attachment_file_size":1575,"attachment_height":null,"attachment_updated_at":"2014-08-02T07:06:10.000Z","attachment_width":null,"created_at":"2014-08-02T07:06:06.000Z","id":11,"theme_id":1}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"6a5e31b1jw1doccdf5tdqj.jpg","attachment_file_size":16469,"attachment_height":null,"attachment_updated_at":"2014-08-02T07:06:10.000Z","attachment_width":null,"created_at":"2014-08-02T07:06:06.000Z","id":12,"theme_id":1}}],"template_releases":[{"template_release":{"created_at":"2014-08-02T07:06:06.000Z","id":6,"name":"First theme released","theme_id":1,"updated_at":"2013-05-12T13:29:47.000Z"}},{"template_release":{"created_at":"2014-08-02T07:06:06.000Z","id":7,"name":"just a test","theme_id":1,"updated_at":"2014-02-16T13:05:22.000Z"}},{"template_release":{"created_at":"2014-08-02T07:06:06.000Z","id":8,"name":"just a test","theme_id":1,"updated_at":"2014-02-20T14:39:05.000Z"}},{"template_release":{"created_at":"2014-08-02T07:06:06.000Z","id":9,"name":"just a test","theme_id":1,"updated_at":"2014-03-02T06:58:26.000Z"}},{"template_release":{"created_at":"2014-08-02T07:06:06.000Z","id":10,"name":"just a test","theme_id":1,"updated_at":"2014-04-03T14:04:43.000Z"}},{"template_release":{"created_at":"2014-08-02T07:06:06.000Z","id":11,"name":"just a test","theme_id":1,"updated_at":"2014-07-26T08:14:37.000Z"}}]} \ No newline at end of file diff --git a/spree_theme/db/themes/designs/2_1_1410512684/6a5e31b1jw1doccdf5tdqj.jpg b/spree_theme/db/themes/designs/2_1_1410512684/6a5e31b1jw1doccdf5tdqj.jpg deleted file mode 100644 index 7fff0f08..00000000 Binary files a/spree_theme/db/themes/designs/2_1_1410512684/6a5e31b1jw1doccdf5tdqj.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_1_1410512684/logo.gif b/spree_theme/db/themes/designs/2_1_1410512684/logo.gif deleted file mode 100644 index 2782a6b2..00000000 Binary files a/spree_theme/db/themes/designs/2_1_1410512684/logo.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1404307519.yml b/spree_theme/db/themes/designs/2_5_1404307519.yml deleted file mode 100644 index 0437c15d..00000000 --- a/spree_theme/db/themes/designs/2_5_1404307519.yml +++ /dev/null @@ -1,7340 +0,0 @@ ---- -:template: !ruby/object:Spree::TemplateTheme - attributes: - id: 5 - site_id: 2 - page_layout_root_id: 208 - release_id: 5 - title: 服装定制 - slug: '' - assigned_resource_ids: - 211: - :spree/template_file: - - 1 - 213: - :spree/taxon: - - 0 - - 0 - 215: - :spree/taxon: - - 0 - 219: - :spree/taxon: - - 1 - 222: - :spree/taxon: - - 2 - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:03.000000000 Z -:param_values: -- !ruby/object:Spree::ParamValue - attributes: - id: 3091 - page_layout_root_id: 208 - page_layout_id: 209 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:02.000000000 Z - updated_at: 2013-04-08 13:27:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3092 - page_layout_root_id: 208 - page_layout_id: 209 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:02.000000000 Z - updated_at: 2013-12-03 08:15:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &101818570 - id: 3093 - page_layout_root_id: 208 - page_layout_id: 209 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto 20px auto - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2014-02-21 13:13:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3094 - page_layout_root_id: 208 - page_layout_id: 209 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2013-04-08 13:27:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3095 - page_layout_root_id: 208 - page_layout_id: 209 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2013-04-08 13:27:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3096 - page_layout_root_id: 208 - page_layout_id: 217 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2013-04-08 14:08:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3097 - page_layout_root_id: 208 - page_layout_id: 217 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-02-27 14:13:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3098 - page_layout_root_id: 208 - page_layout_id: 217 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2013-04-08 13:27:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3099 - page_layout_root_id: 208 - page_layout_id: 217 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - 2unset: '1' - 2: background-color:yellow - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2013-10-05 10:50:30.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3100 - page_layout_root_id: 208 - page_layout_id: 217 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2013-04-08 13:27:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3101 - page_layout_root_id: 208 - page_layout_id: 267 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3102 - page_layout_root_id: 208 - page_layout_id: 267 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-02-21 13:04:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3103 - page_layout_root_id: 208 - page_layout_id: 267 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3104 - page_layout_root_id: 208 - page_layout_id: 267 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - 2unset: '0' - 2: background-color:#F5F5F5 - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3105 - page_layout_root_id: 208 - page_layout_id: 267 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3106 - page_layout_root_id: 208 - page_layout_id: 218 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3107 - page_layout_root_id: 208 - page_layout_id: 218 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:200px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3108 - page_layout_root_id: 208 - page_layout_id: 218 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto 10px auto 10px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-02-23 12:35:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3109 - page_layout_root_id: 208 - page_layout_id: 218 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - 2unset: '1' - 2: background-color:#FFF8ED - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-10-05 01:17:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3110 - page_layout_root_id: 208 - page_layout_id: 218 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - 49unset: '1' - 49: color:black - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2013-10-02 10:05:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3111 - page_layout_root_id: 208 - page_layout_id: 225 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2013-04-08 13:27:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3112 - page_layout_root_id: 208 - page_layout_id: 225 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:750px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-02-27 14:13:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3113 - page_layout_root_id: 208 - page_layout_id: 225 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2013-04-08 13:27:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3114 - page_layout_root_id: 208 - page_layout_id: 225 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2013-04-08 13:27:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3115 - page_layout_root_id: 208 - page_layout_id: 225 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2013-04-08 13:27:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3116 - page_layout_root_id: 208 - page_layout_id: 226 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-09 11:57:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3117 - page_layout_root_id: 208 - page_layout_id: 226 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '1' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-09 11:57:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3118 - page_layout_root_id: 208 - page_layout_id: 226 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-08 13:27:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3119 - page_layout_root_id: 208 - page_layout_id: 226 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-08 13:27:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3120 - page_layout_root_id: 208 - page_layout_id: 226 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-08 13:27:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3121 - page_layout_root_id: 208 - page_layout_id: 231 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-12 13:03:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3122 - page_layout_root_id: 208 - page_layout_id: 231 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '1' - 21: width:200px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-09 13:14:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3123 - page_layout_root_id: 208 - page_layout_id: 231 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-08 13:27:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3124 - page_layout_root_id: 208 - page_layout_id: 231 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-08 13:27:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3125 - page_layout_root_id: 208 - page_layout_id: 231 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-08 13:27:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3126 - page_layout_root_id: 208 - page_layout_id: 228 - section_param_id: 65 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-08 13:27:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3127 - page_layout_root_id: 208 - page_layout_id: 228 - section_param_id: 66 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 15unset: '0' - 15: height:110px - 21unset: '0' - 21: width:150px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2013-10-05 01:20:44.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3128 - page_layout_root_id: 208 - page_layout_id: 228 - section_param_id: 67 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 32unset: '0' - 32: padding:5px 0px 5px 0px - 15unset: '0' - 15: height:98px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2013-10-05 01:21:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3129 - page_layout_root_id: 208 - page_layout_id: 228 - section_param_id: 68 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2013-04-08 13:27:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3130 - page_layout_root_id: 208 - page_layout_id: 228 - section_param_id: 69 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 53unset: '0' - 53: text-align:center - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2013-04-19 13:14:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3131 - page_layout_root_id: 208 - page_layout_id: 237 - section_param_id: 60 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-04-08 13:27:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3132 - page_layout_root_id: 208 - page_layout_id: 237 - section_param_id: 61 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-04-08 13:27:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3133 - page_layout_root_id: 208 - page_layout_id: 237 - section_param_id: 62 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:10px 0px 10px 0px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-10-04 07:23:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3134 - page_layout_root_id: 208 - page_layout_id: 237 - section_param_id: 63 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-04-08 13:27:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3135 - page_layout_root_id: 208 - page_layout_id: 237 - section_param_id: 64 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 24unset: '0' - 24: font-size:90% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-10-04 07:23:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3136 - page_layout_root_id: 208 - page_layout_id: 268 - section_param_id: 50 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3137 - page_layout_root_id: 208 - page_layout_id: 268 - section_param_id: 51 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3138 - page_layout_root_id: 208 - page_layout_id: 268 - section_param_id: 52 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3139 - page_layout_root_id: 208 - page_layout_id: 268 - section_param_id: 53 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3140 - page_layout_root_id: 208 - page_layout_id: 268 - section_param_id: 54 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3141 - page_layout_root_id: 208 - page_layout_id: 227 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - 85unset: '0' - 85: clear:both - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2013-04-09 13:23:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3142 - page_layout_root_id: 208 - page_layout_id: 227 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:160px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:160px - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-02-23 11:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3143 - page_layout_root_id: 208 - page_layout_id: 227 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto 20px auto - 15unset: '1' - 15: height:140px - 32unset: '1' - 32: padding:0px 0px 0px 0px - 8unset: '1' - 8: border-width:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-02-23 11:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3144 - page_layout_root_id: 208 - page_layout_id: 227 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2013-04-08 14:05:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3145 - page_layout_root_id: 208 - page_layout_id: 227 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2013-04-08 14:05:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3146 - page_layout_root_id: 208 - page_layout_id: 235 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2013-04-09 13:12:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &113322940 - id: 3147 - page_layout_root_id: 208 - page_layout_id: 235 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:350px - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2013-04-12 13:08:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3148 - page_layout_root_id: 208 - page_layout_id: 235 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2013-04-09 13:12:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3149 - page_layout_root_id: 208 - page_layout_id: 235 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2013-04-09 13:12:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3150 - page_layout_root_id: 208 - page_layout_id: 235 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2013-04-09 13:12:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3151 - page_layout_root_id: 208 - page_layout_id: 232 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2013-04-12 13:44:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3152 - page_layout_root_id: 208 - page_layout_id: 232 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2013-04-12 13:44:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3153 - page_layout_root_id: 208 - page_layout_id: 232 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto 10px auto auto - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2013-10-04 07:21:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3154 - page_layout_root_id: 208 - page_layout_id: 232 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2013-04-12 13:44:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3155 - page_layout_root_id: 208 - page_layout_id: 232 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2013-04-12 13:44:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3156 - page_layout_root_id: 208 - page_layout_id: 241 - section_param_id: 110 - theme_id: 5 - pvalue: - id: 32 - page_layout_root_id: 1 - page_layout_id: 7 - section_param_id: 7 - theme_id: 1 - pvalue: !ruby/struct:ActiveRecord::AttributeMethods::Serialization::Attribute - coder: !ruby/object:ActiveRecord::Coders::YAMLColumn - object_class: &82975580 !ruby/class 'Hash' - value: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:200px - state: :unserialized - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.780447000 Z - updated_at: 2013-04-08 13:27:12.963062000 Z - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2013-04-13 01:32:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3157 - page_layout_root_id: 208 - page_layout_id: 241 - section_param_id: 111 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2013-04-13 01:32:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3158 - page_layout_root_id: 208 - page_layout_id: 241 - section_param_id: 112 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2013-04-13 01:32:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3159 - page_layout_root_id: 208 - page_layout_id: 241 - section_param_id: 113 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2013-04-13 01:32:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3160 - page_layout_root_id: 208 - page_layout_id: 241 - section_param_id: 114 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 27unset: '0' - 27: font-weight:bolder - 24unset: '0' - 24: font-size:110% - 49unset: '0' - 49: color:#00ADEE - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2013-10-04 07:25:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3161 - page_layout_root_id: 208 - page_layout_id: 238 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - 85unset: '0' - 85: clear:both - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-04-14 12:45:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3162 - page_layout_root_id: 208 - page_layout_id: 238 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '1' - 21unset: '0' - 21: width:450px - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-03-06 13:45:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3163 - page_layout_root_id: 208 - page_layout_id: 238 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:10px auto auto auto - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2013-10-04 07:24:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3164 - page_layout_root_id: 208 - page_layout_id: 238 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2013-04-13 02:35:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3165 - page_layout_root_id: 208 - page_layout_id: 238 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:26.000000000 Z - updated_at: 2013-04-13 02:35:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3166 - page_layout_root_id: 208 - page_layout_id: 247 - section_param_id: 125 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2013-04-16 14:20:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3167 - page_layout_root_id: 208 - page_layout_id: 247 - section_param_id: 126 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 21unset: '1' - 21: width:670px - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2014-02-27 14:14:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3168 - page_layout_root_id: 208 - page_layout_id: 247 - section_param_id: 127 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2013-04-16 14:20:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3169 - page_layout_root_id: 208 - page_layout_id: 247 - section_param_id: 128 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2013-04-16 14:20:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3170 - page_layout_root_id: 208 - page_layout_id: 247 - section_param_id: 129 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 53unset: '1' - 53: text-align:right - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2013-11-27 06:05:44.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3171 - page_layout_root_id: 208 - page_layout_id: 230 - section_param_id: 110 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:09.000000000 Z - updated_at: 2013-04-19 13:03:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3172 - page_layout_root_id: 208 - page_layout_id: 230 - section_param_id: 111 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 21unset: '0' - 21: width:150px - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2013-10-02 09:59:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3173 - page_layout_root_id: 208 - page_layout_id: 230 - section_param_id: 112 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:5px 0px 0px 0px - 31unset: '0' - 31: margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2013-10-05 07:13:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3174 - page_layout_root_id: 208 - page_layout_id: 230 - section_param_id: 113 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2013-04-19 13:03:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3175 - page_layout_root_id: 208 - page_layout_id: 230 - section_param_id: 114 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 53unset: '0' - 53: text-align:center - 49unset: '0' - 49: color:#00ADEE - 27unset: '0' - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2013-10-02 10:00:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3176 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 27 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3177 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 28 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3178 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 29 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:0px 0px 0px 20px - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-05 00:49:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3179 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 30 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3180 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 31 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3181 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 32 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-05 01:11:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3182 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 33 - theme_id: 5 - pvalue: - 54unset: '0' - 54: text-decoration:none - 24unset: '0' - 24: font-size:90% - 49unset: '0' - 49: color:#00ADEE - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-05 01:12:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3183 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 34 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3184 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 35 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3185 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 36 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3186 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 37 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3187 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 38 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3188 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 39 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3189 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 40 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3190 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 41 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3191 - page_layout_root_id: 208 - page_layout_id: 221 - section_param_id: 42 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &111700650 - id: 3192 - page_layout_root_id: 208 - page_layout_id: 219 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2013-10-05 00:36:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3193 - page_layout_root_id: 208 - page_layout_id: 219 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2013-10-05 00:46:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3194 - page_layout_root_id: 208 - page_layout_id: 219 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto 20px auto - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2013-10-05 01:14:46.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3195 - page_layout_root_id: 208 - page_layout_id: 219 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2013-10-05 00:36:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3196 - page_layout_root_id: 208 - page_layout_id: 219 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2013-10-05 00:36:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3197 - page_layout_root_id: 208 - page_layout_id: 222 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2013-10-05 00:37:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3198 - page_layout_root_id: 208 - page_layout_id: 222 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2013-10-05 01:14:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3199 - page_layout_root_id: 208 - page_layout_id: 222 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2013-10-05 00:37:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3200 - page_layout_root_id: 208 - page_layout_id: 222 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:56.000000000 Z - updated_at: 2013-10-05 00:37:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3201 - page_layout_root_id: 208 - page_layout_id: 222 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:56.000000000 Z - updated_at: 2013-10-05 00:37:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3202 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 27 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2013-10-05 00:38:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3203 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 28 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2014-01-22 14:04:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3204 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 29 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '1' - 31: margin:auto auto auto 20px - 32unset: '0' - 32: padding:0px 0px 0px 20px - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2013-10-05 01:13:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3205 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 30 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2013-10-05 00:38:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3206 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 31 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2013-10-05 00:38:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3207 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 32 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 01:13:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3208 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 33 - theme_id: 5 - pvalue: - 24unset: '0' - 24: font-size:90% - 49unset: '0' - 49: color:#00ADEE - 54unset: '0' - 54: text-decoration:none - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 01:13:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3209 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 34 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3210 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 35 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3211 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 36 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3212 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 37 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3213 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 38 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3214 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 39 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3215 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 40 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3216 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 41 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3217 - page_layout_root_id: 208 - page_layout_id: 224 - section_param_id: 42 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3218 - page_layout_root_id: 208 - page_layout_id: 251 - section_param_id: 210 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2013-11-02 09:20:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3219 - page_layout_root_id: 208 - page_layout_id: 251 - section_param_id: 211 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:360px - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2014-03-04 13:56:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3220 - page_layout_root_id: 208 - page_layout_id: 251 - section_param_id: 212 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:10px 10px 10px 10px - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2014-03-04 13:52:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3221 - page_layout_root_id: 208 - page_layout_id: 251 - section_param_id: 213 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2013-11-02 09:20:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3222 - page_layout_root_id: 208 - page_layout_id: 251 - section_param_id: 214 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2013-11-02 09:20:59.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3223 - page_layout_root_id: 208 - page_layout_id: 251 - section_param_id: 215 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2013-11-02 09:20:59.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3224 - page_layout_root_id: 208 - page_layout_id: 251 - section_param_id: 216 - theme_id: 5 - pvalue: - 2unset: '1' - 2: background-color:#000000 - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2014-03-04 13:51:28.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3225 - page_layout_root_id: 208 - page_layout_id: 251 - section_param_id: 217 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:#00ADEE - 53unset: '0' - 53: text-align:center - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2014-03-04 13:51:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3226 - page_layout_root_id: 208 - page_layout_id: 252 - section_param_id: 218 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2013-11-02 09:21:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3227 - page_layout_root_id: 208 - page_layout_id: 252 - section_param_id: 219 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:360px - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2014-03-04 13:56:30.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3228 - page_layout_root_id: 208 - page_layout_id: 252 - section_param_id: 220 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:10px 20px 10px 20px - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 31unset: '0' - 31: margin:10px auto 10px auto - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2014-03-04 13:59:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3229 - page_layout_root_id: 208 - page_layout_id: 252 - section_param_id: 221 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3230 - page_layout_root_id: 208 - page_layout_id: 252 - section_param_id: 222 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3231 - page_layout_root_id: 208 - page_layout_id: 252 - section_param_id: 223 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3232 - page_layout_root_id: 208 - page_layout_id: 252 - section_param_id: 224 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3233 - page_layout_root_id: 208 - page_layout_id: 252 - section_param_id: 225 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:#00ADEE - 53unset: '0' - 53: text-align:center - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2014-03-04 13:57:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3234 - page_layout_root_id: 208 - page_layout_id: 245 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3235 - page_layout_root_id: 208 - page_layout_id: 245 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2014-02-27 14:14:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3236 - page_layout_root_id: 208 - page_layout_id: 245 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3237 - page_layout_root_id: 208 - page_layout_id: 245 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3238 - page_layout_root_id: 208 - page_layout_id: 245 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3239 - page_layout_root_id: 208 - page_layout_id: 246 - section_param_id: 160 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3240 - page_layout_root_id: 208 - page_layout_id: 246 - section_param_id: 161 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3241 - page_layout_root_id: 208 - page_layout_id: 246 - section_param_id: 162 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3242 - page_layout_root_id: 208 - page_layout_id: 246 - section_param_id: 163 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3243 - page_layout_root_id: 208 - page_layout_id: 246 - section_param_id: 164 - theme_id: 5 - pvalue: - 24unset: '0' - 24: font-size:150% - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:18.000000000 Z - updated_at: 2014-02-21 13:02:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3244 - page_layout_root_id: 208 - page_layout_id: 255 - section_param_id: 165 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3245 - page_layout_root_id: 208 - page_layout_id: 255 - section_param_id: 166 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3246 - page_layout_root_id: 208 - page_layout_id: 255 - section_param_id: 167 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto 10px auto 10px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2014-03-04 14:26:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3247 - page_layout_root_id: 208 - page_layout_id: 255 - section_param_id: 168 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3248 - page_layout_root_id: 208 - page_layout_id: 255 - section_param_id: 169 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3249 - page_layout_root_id: 208 - page_layout_id: 255 - section_param_id: 170 - theme_id: 5 - pvalue: - 31unset: '0' - 31: margin:auto auto 10px auto - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - 32unset: '0' - 32: padding:5px 0px 5px 0px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2014-03-04 14:24:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3250 - page_layout_root_id: 208 - page_layout_id: 255 - section_param_id: 171 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:22.000000000 Z - updated_at: 2013-11-02 09:37:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3251 - page_layout_root_id: 208 - page_layout_id: 255 - section_param_id: 172 - theme_id: 5 - pvalue: - 27: font-weight:bold - 54unset: '1' - 54: text-decoration:underline - 53unset: '1' - 53: text-align:left - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:22.000000000 Z - updated_at: 2014-03-04 14:24:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3252 - page_layout_root_id: 208 - page_layout_id: 256 - section_param_id: 173 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:30.000000000 Z - updated_at: 2013-11-02 09:37:30.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3253 - page_layout_root_id: 208 - page_layout_id: 256 - section_param_id: 174 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:300px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-03-04 14:28:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3254 - page_layout_root_id: 208 - page_layout_id: 256 - section_param_id: 175 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3255 - page_layout_root_id: 208 - page_layout_id: 256 - section_param_id: 176 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3256 - page_layout_root_id: 208 - page_layout_id: 256 - section_param_id: 177 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3257 - page_layout_root_id: 208 - page_layout_id: 256 - section_param_id: 178 - theme_id: 5 - pvalue: - 31unset: '0' - 31: margin:auto auto 10px auto - 32unset: '0' - 32: padding:5px 0px 5px 0px - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-03-04 14:27:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3258 - page_layout_root_id: 208 - page_layout_id: 256 - section_param_id: 179 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3259 - page_layout_root_id: 208 - page_layout_id: 256 - section_param_id: 180 - theme_id: 5 - pvalue: - 27: font-weight:bold - 54unset: '1' - 54: text-decoration:underline - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-03-04 14:27:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3260 - page_layout_root_id: 208 - page_layout_id: 257 - section_param_id: 181 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3261 - page_layout_root_id: 208 - page_layout_id: 257 - section_param_id: 182 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3262 - page_layout_root_id: 208 - page_layout_id: 257 - section_param_id: 183 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3263 - page_layout_root_id: 208 - page_layout_id: 257 - section_param_id: 184 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3264 - page_layout_root_id: 208 - page_layout_id: 257 - section_param_id: 185 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3265 - page_layout_root_id: 208 - page_layout_id: 257 - section_param_id: 186 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3266 - page_layout_root_id: 208 - page_layout_id: 257 - section_param_id: 187 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3267 - page_layout_root_id: 208 - page_layout_id: 257 - section_param_id: 188 - theme_id: 5 - pvalue: - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3268 - page_layout_root_id: 208 - page_layout_id: 259 - section_param_id: 268 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:51.000000000 Z - updated_at: 2013-11-02 09:37:51.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3269 - page_layout_root_id: 208 - page_layout_id: 259 - section_param_id: 269 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:51.000000000 Z - updated_at: 2013-11-02 09:37:51.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3270 - page_layout_root_id: 208 - page_layout_id: 259 - section_param_id: 270 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3271 - page_layout_root_id: 208 - page_layout_id: 259 - section_param_id: 271 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3272 - page_layout_root_id: 208 - page_layout_id: 259 - section_param_id: 272 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3273 - page_layout_root_id: 208 - page_layout_id: 259 - section_param_id: 273 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3274 - page_layout_root_id: 208 - page_layout_id: 259 - section_param_id: 274 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3275 - page_layout_root_id: 208 - page_layout_id: 259 - section_param_id: 275 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3276 - page_layout_root_id: 208 - page_layout_id: 260 - section_param_id: 260 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3277 - page_layout_root_id: 208 - page_layout_id: 260 - section_param_id: 261 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3278 - page_layout_root_id: 208 - page_layout_id: 260 - section_param_id: 262 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3279 - page_layout_root_id: 208 - page_layout_id: 260 - section_param_id: 263 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3280 - page_layout_root_id: 208 - page_layout_id: 260 - section_param_id: 264 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3281 - page_layout_root_id: 208 - page_layout_id: 260 - section_param_id: 265 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3282 - page_layout_root_id: 208 - page_layout_id: 260 - section_param_id: 266 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3283 - page_layout_root_id: 208 - page_layout_id: 260 - section_param_id: 267 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:02.000000000 Z - updated_at: 2013-11-02 09:38:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3284 - page_layout_root_id: 208 - page_layout_id: 261 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3285 - page_layout_root_id: 208 - page_layout_id: 261 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 10:07:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3286 - page_layout_root_id: 208 - page_layout_id: 261 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3287 - page_layout_root_id: 208 - page_layout_id: 261 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3288 - page_layout_root_id: 208 - page_layout_id: 261 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3289 - page_layout_root_id: 208 - page_layout_id: 263 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:32.000000000 Z - updated_at: 2013-11-02 09:39:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3290 - page_layout_root_id: 208 - page_layout_id: 263 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 10:07:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3291 - page_layout_root_id: 208 - page_layout_id: 263 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 09:39:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3292 - page_layout_root_id: 208 - page_layout_id: 263 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 09:39:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3293 - page_layout_root_id: 208 - page_layout_id: 263 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 09:39:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3294 - page_layout_root_id: 208 - page_layout_id: 262 - section_param_id: 189 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3295 - page_layout_root_id: 208 - page_layout_id: 262 - section_param_id: 190 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3296 - page_layout_root_id: 208 - page_layout_id: 262 - section_param_id: 191 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3297 - page_layout_root_id: 208 - page_layout_id: 262 - section_param_id: 192 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3298 - page_layout_root_id: 208 - page_layout_id: 262 - section_param_id: 193 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3299 - page_layout_root_id: 208 - page_layout_id: 262 - section_param_id: 194 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3300 - page_layout_root_id: 208 - page_layout_id: 262 - section_param_id: 195 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3301 - page_layout_root_id: 208 - page_layout_id: 262 - section_param_id: 196 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3302 - page_layout_root_id: 208 - page_layout_id: 264 - section_param_id: 197 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3303 - page_layout_root_id: 208 - page_layout_id: 264 - section_param_id: 198 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3304 - page_layout_root_id: 208 - page_layout_id: 264 - section_param_id: 199 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3305 - page_layout_root_id: 208 - page_layout_id: 264 - section_param_id: 200 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3306 - page_layout_root_id: 208 - page_layout_id: 264 - section_param_id: 201 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3307 - page_layout_root_id: 208 - page_layout_id: 264 - section_param_id: 202 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3308 - page_layout_root_id: 208 - page_layout_id: 264 - section_param_id: 203 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3309 - page_layout_root_id: 208 - page_layout_id: 264 - section_param_id: 204 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3310 - page_layout_root_id: 208 - page_layout_id: 258 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 09:50:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3311 - page_layout_root_id: 208 - page_layout_id: 258 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 10:07:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3312 - page_layout_root_id: 208 - page_layout_id: 258 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 09:50:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3313 - page_layout_root_id: 208 - page_layout_id: 258 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 09:50:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3314 - page_layout_root_id: 208 - page_layout_id: 258 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:09.000000000 Z - updated_at: 2013-11-02 09:50:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3315 - page_layout_root_id: 208 - page_layout_id: 253 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3316 - page_layout_root_id: 208 - page_layout_id: 253 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 10:07:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3317 - page_layout_root_id: 208 - page_layout_id: 253 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2014-03-04 14:25:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3318 - page_layout_root_id: 208 - page_layout_id: 253 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3319 - page_layout_root_id: 208 - page_layout_id: 253 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3320 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 11 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:07.000000000 Z - updated_at: 2013-11-05 03:16:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3321 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 12 - theme_id: 5 - pvalue: - 21unset: '1' - 21: width:960px - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:07.000000000 Z - updated_at: 2013-12-03 08:15:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3322 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 13 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3323 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 14 - theme_id: 5 - pvalue: - 2unset: '1' - 2: background-color:lime - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-12-03 08:36:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3324 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 15 - theme_id: 5 - pvalue: - 27unset: '0' - 27: font-weight:bold - 49unset: '1' - 49: color:#00ADEE - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-02-21 13:19:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3325 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 16 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3326 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 17 - theme_id: 5 - pvalue: - 54unset: '0' - 54: text-decoration:none - 49unset: '0' - 49: color:#00ADEE - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-02-21 13:20:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3327 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 18 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3328 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 19 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3329 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 20 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3330 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 21 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3331 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 22 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3332 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 23 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3333 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 24 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2013-11-05 03:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3334 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 25 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2013-11-05 03:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3335 - page_layout_root_id: 208 - page_layout_id: 215 - section_param_id: 26 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2013-11-05 03:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3336 - page_layout_root_id: 208 - page_layout_id: 220 - section_param_id: 135 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:08.000000000 Z - updated_at: 2013-11-25 06:53:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3337 - page_layout_root_id: 208 - page_layout_id: 220 - section_param_id: 136 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:160px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:08.000000000 Z - updated_at: 2014-02-23 12:39:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3338 - page_layout_root_id: 208 - page_layout_id: 220 - section_param_id: 137 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - 32unset: '0' - 32: padding:0px 0px 5px 0px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-02-23 12:38:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3339 - page_layout_root_id: 208 - page_layout_id: 220 - section_param_id: 138 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3340 - page_layout_root_id: 208 - page_layout_id: 220 - section_param_id: 139 - theme_id: 5 - pvalue: - 27unset: '0' - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-02-23 12:32:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3341 - page_layout_root_id: 208 - page_layout_id: 223 - section_param_id: 135 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3342 - page_layout_root_id: 208 - page_layout_id: 223 - section_param_id: 136 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:160px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-02-23 12:38:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3343 - page_layout_root_id: 208 - page_layout_id: 223 - section_param_id: 137 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:0px 0px 5px 0px - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-02-23 12:39:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3344 - page_layout_root_id: 208 - page_layout_id: 223 - section_param_id: 138 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3345 - page_layout_root_id: 208 - page_layout_id: 223 - section_param_id: 139 - theme_id: 5 - pvalue: - 27unset: '0' - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-02-23 12:35:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3346 - page_layout_root_id: 208 - page_layout_id: 248 - section_param_id: 140 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3347 - page_layout_root_id: 208 - page_layout_id: 248 - section_param_id: 141 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3348 - page_layout_root_id: 208 - page_layout_id: 248 - section_param_id: 142 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3349 - page_layout_root_id: 208 - page_layout_id: 248 - section_param_id: 143 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3350 - page_layout_root_id: 208 - page_layout_id: 248 - section_param_id: 144 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3351 - page_layout_root_id: 208 - page_layout_id: 249 - section_param_id: 145 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3352 - page_layout_root_id: 208 - page_layout_id: 249 - section_param_id: 146 - theme_id: 5 - pvalue: - 101unset: '0' - 101: float:right - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-27 06:07:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3353 - page_layout_root_id: 208 - page_layout_id: 249 - section_param_id: 147 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:10px auto auto auto - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-02-27 14:19:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3354 - page_layout_root_id: 208 - page_layout_id: 249 - section_param_id: 148 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3355 - page_layout_root_id: 208 - page_layout_id: 249 - section_param_id: 149 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3356 - page_layout_root_id: 208 - page_layout_id: 250 - section_param_id: 150 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3357 - page_layout_root_id: 208 - page_layout_id: 250 - section_param_id: 151 - theme_id: 5 - pvalue: - 21unset: '1' - 21: width:600px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-03-04 13:48:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3358 - page_layout_root_id: 208 - page_layout_id: 250 - section_param_id: 152 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3359 - page_layout_root_id: 208 - page_layout_id: 250 - section_param_id: 153 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3360 - page_layout_root_id: 208 - page_layout_id: 250 - section_param_id: 154 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3361 - page_layout_root_id: 208 - page_layout_id: 211 - section_param_id: 323 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:56.000000000 Z - updated_at: 2013-11-29 02:49:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3362 - page_layout_root_id: 208 - page_layout_id: 211 - section_param_id: 324 - theme_id: 5 - pvalue: - 21unset: '1' - 21: width:220px - 101unset: '1' - 101: float:none - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:56.000000000 Z - updated_at: 2014-03-12 14:29:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3363 - page_layout_root_id: 208 - page_layout_id: 211 - section_param_id: 325 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2013-11-29 02:49:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3364 - page_layout_root_id: 208 - page_layout_id: 211 - section_param_id: 326 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2013-11-29 02:49:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3365 - page_layout_root_id: 208 - page_layout_id: 211 - section_param_id: 327 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2013-11-29 02:49:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3366 - page_layout_root_id: 208 - page_layout_id: 214 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:45.000000000 Z - updated_at: 2013-12-03 08:32:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3367 - page_layout_root_id: 208 - page_layout_id: 214 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '1' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:45.000000000 Z - updated_at: 2014-03-12 14:11:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3368 - page_layout_root_id: 208 - page_layout_id: 214 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:0px 0px 6px 0px - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - 31unset: '0' - 31: margin:auto 10px auto 10px - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-02-21 13:15:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3369 - page_layout_root_id: 208 - page_layout_id: 214 - section_param_id: 9 - theme_id: 5 - pvalue: - 2unset: '1' - 2: background-color:green - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-02-21 13:13:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3370 - page_layout_root_id: 208 - page_layout_id: 214 - section_param_id: 10 - theme_id: 5 - pvalue: - 49unset: '1' - 49: color:teal - 25unset: '1' - 25: font-style:normal - 24unset: '1' - 24: font-size:0% - 27unset: '1' - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-02-21 13:19:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3371 - page_layout_root_id: 208 - page_layout_id: 216 - section_param_id: 328 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-03 08:15:21.000000000 Z - updated_at: 2013-12-03 08:15:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3372 - page_layout_root_id: 208 - page_layout_id: 216 - section_param_id: 329 - theme_id: 5 - pvalue: - 101unset: '0' - 101: float:right - unset: - computed_pvalue: - created_at: 2013-12-03 08:15:21.000000000 Z - updated_at: 2013-12-03 08:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3373 - page_layout_root_id: 208 - page_layout_id: 216 - section_param_id: 330 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-12-03 08:15:21.000000000 Z - updated_at: 2013-12-03 08:15:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3374 - page_layout_root_id: 208 - page_layout_id: 216 - section_param_id: 331 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-03 08:15:21.000000000 Z - updated_at: 2013-12-03 08:15:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3375 - page_layout_root_id: 208 - page_layout_id: 216 - section_param_id: 332 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-03 08:15:21.000000000 Z - updated_at: 2013-12-03 08:15:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3376 - page_layout_root_id: 208 - page_layout_id: 210 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-06 02:14:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3377 - page_layout_root_id: 208 - page_layout_id: 210 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-06 02:14:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3378 - page_layout_root_id: 208 - page_layout_id: 210 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-05 08:06:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3379 - page_layout_root_id: 208 - page_layout_id: 210 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-05 08:06:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3380 - page_layout_root_id: 208 - page_layout_id: 210 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-05 08:06:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3381 - page_layout_root_id: 208 - page_layout_id: 212 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3382 - page_layout_root_id: 208 - page_layout_id: 212 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:right - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-06 02:14:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3383 - page_layout_root_id: 208 - page_layout_id: 212 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3384 - page_layout_root_id: 208 - page_layout_id: 212 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3385 - page_layout_root_id: 208 - page_layout_id: 212 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3386 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 226 - theme_id: 5 - pvalue: - 21: width:960px - 21unset: '0' - 20: min-width:960px - 20hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3387 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 227 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3388 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 228 - theme_id: 5 - pvalue: - 85: clear:both - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3389 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 229 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3390 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 230 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3391 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 231 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3392 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 232 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3393 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 233 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3394 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 234 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3395 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 235 - theme_id: 5 - pvalue: - 31unset: '0' - 31: margin:10px auto 2px auto - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-03-04 13:53:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3396 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 236 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3397 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 237 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3398 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 238 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3399 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 239 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3400 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 240 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3401 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 241 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3402 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 242 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:red - 24unset: '0' - 24: font-size:82% - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-03-04 14:03:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3403 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 243 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3404 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 317 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3405 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 318 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3406 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 319 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3407 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 320 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3408 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 321 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3409 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 322 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3410 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 244 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3411 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 245 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3412 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 246 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3413 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 247 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:#00ADEE - 24unset: '1' - 24: font-size:80% - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-03-04 14:01:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3414 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 248 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3415 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 249 - theme_id: 5 - pvalue: *101818570 - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-02-27 14:09:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3416 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 250 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 10px 5px 10px - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-02-27 13:39:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3417 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 251 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3418 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 252 - theme_id: 5 - pvalue: - 2unset: '0' - 2: background-color:#D9D9DB - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-02-27 13:38:44.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3419 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 253 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3420 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 254 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3421 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 255 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3422 - page_layout_root_id: 208 - page_layout_id: 208 - section_param_id: 256 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3423 - page_layout_root_id: 208 - page_layout_id: 229 - section_param_id: 55 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3424 - page_layout_root_id: 208 - page_layout_id: 229 - section_param_id: 56 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:150px - 15unset: '0' - 15: height:34px - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-02-21 13:25:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3425 - page_layout_root_id: 208 - page_layout_id: 229 - section_param_id: 57 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '0' - 15: height:33px - 32unset: '1' - 32: padding:0px 0px 0px 0px - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #BBBBBB transparent' - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-02-21 13:25:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3426 - page_layout_root_id: 208 - page_layout_id: 229 - section_param_id: 58 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3427 - page_layout_root_id: 208 - page_layout_id: 229 - section_param_id: 59 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3428 - page_layout_root_id: 208 - page_layout_id: 229 - section_param_id: 294 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3429 - page_layout_root_id: 208 - page_layout_id: 229 - section_param_id: 295 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3430 - page_layout_root_id: 208 - page_layout_id: 229 - section_param_id: 296 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:#BBBBBB - 27unset: '0' - 27: font-weight:bold - 24unset: '0' - 24: font-size:80% - 54unset: '0' - 54: text-decoration:none - 53unset: '0' - 53: text-align:center - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-02-21 13:23:14.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3431 - page_layout_root_id: 208 - page_layout_id: 229 - section_param_id: 297 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:58.000000000 Z - updated_at: 2014-01-22 03:39:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3432 - page_layout_root_id: 208 - page_layout_id: 234 - section_param_id: 105 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3433 - page_layout_root_id: 208 - page_layout_id: 234 - section_param_id: 106 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-02-23 13:19:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3434 - page_layout_root_id: 208 - page_layout_id: 234 - section_param_id: 107 - theme_id: 5 - pvalue: - id: 495 - page_layout_root_id: 1 - page_layout_id: 34 - section_param_id: 41 - theme_id: 1 - pvalue: !ruby/struct:ActiveRecord::AttributeMethods::Serialization::Attribute - coder: !ruby/object:ActiveRecord::Coders::YAMLColumn - object_class: *82975580 - value: {} - state: :unserialized - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-02-23 13:20:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3435 - page_layout_root_id: 208 - page_layout_id: 234 - section_param_id: 108 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3436 - page_layout_root_id: 208 - page_layout_id: 234 - section_param_id: 109 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3437 - page_layout_root_id: 208 - page_layout_id: 234 - section_param_id: 302 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 5px 5px 5px - 7unset: '0' - 7: border-style:solid none solid none - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-02-23 13:18:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3438 - page_layout_root_id: 208 - page_layout_id: 234 - section_param_id: 303 - theme_id: 5 - pvalue: - 2unset: '0' - 2: background-color:transparent - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-04-14 12:47:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3439 - page_layout_root_id: 208 - page_layout_id: 234 - section_param_id: 304 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3440 - page_layout_root_id: 208 - page_layout_id: 234 - section_param_id: 305 - theme_id: 5 - pvalue: - 27unset: '0' - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-02-23 13:16:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3441 - page_layout_root_id: 208 - page_layout_id: 234 - section_param_id: 306 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3442 - page_layout_root_id: 208 - page_layout_id: 236 - section_param_id: 55 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3443 - page_layout_root_id: 208 - page_layout_id: 236 - section_param_id: 56 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-02-23 13:22:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3444 - page_layout_root_id: 208 - page_layout_id: 236 - section_param_id: 57 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '1' - 32: padding:0px 0px 0px 0px - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-02-23 13:22:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3445 - page_layout_root_id: 208 - page_layout_id: 236 - section_param_id: 58 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3446 - page_layout_root_id: 208 - page_layout_id: 236 - section_param_id: 59 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3447 - page_layout_root_id: 208 - page_layout_id: 236 - section_param_id: 294 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3448 - page_layout_root_id: 208 - page_layout_id: 236 - section_param_id: 295 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3449 - page_layout_root_id: 208 - page_layout_id: 236 - section_param_id: 296 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:black - 54unset: '0' - 54: text-decoration:none - 27unset: '0' - 27: font-weight:bold - 24unset: '0' - 24: font-size:150% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-02-23 13:21:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3450 - page_layout_root_id: 208 - page_layout_id: 236 - section_param_id: 297 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3451 - page_layout_root_id: 208 - page_layout_id: 243 - section_param_id: 115 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3452 - page_layout_root_id: 208 - page_layout_id: 243 - section_param_id: 116 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3453 - page_layout_root_id: 208 - page_layout_id: 243 - section_param_id: 117 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3454 - page_layout_root_id: 208 - page_layout_id: 243 - section_param_id: 118 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3455 - page_layout_root_id: 208 - page_layout_id: 243 - section_param_id: 119 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3456 - page_layout_root_id: 208 - page_layout_id: 243 - section_param_id: 307 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:60px - 7unset: '0' - 7: border-style:solid solid solid solid - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 32unset: '0' - 32: padding:7px 10px 7px 10px - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-02-23 13:33:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3457 - page_layout_root_id: 208 - page_layout_id: 243 - section_param_id: 308 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3458 - page_layout_root_id: 208 - page_layout_id: 243 - section_param_id: 309 - theme_id: 5 - pvalue: - 53unset: '0' - 53: text-align:left - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-02-23 13:25:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3459 - page_layout_root_id: 208 - page_layout_id: 244 - section_param_id: 120 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3460 - page_layout_root_id: 208 - page_layout_id: 244 - section_param_id: 121 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3461 - page_layout_root_id: 208 - page_layout_id: 244 - section_param_id: 122 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto auto 5px - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-02-23 13:33:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3462 - page_layout_root_id: 208 - page_layout_id: 244 - section_param_id: 123 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3463 - page_layout_root_id: 208 - page_layout_id: 244 - section_param_id: 124 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3464 - page_layout_root_id: 208 - page_layout_id: 244 - section_param_id: 310 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:7px 10px 7px 10px - 7unset: - id: 456 - page_layout_root_id: 1 - page_layout_id: 9 - section_param_id: 28 - theme_id: 1 - pvalue: !ruby/struct:ActiveRecord::AttributeMethods::Serialization::Attribute - coder: !ruby/object:ActiveRecord::Coders::YAMLColumn - object_class: *82975580 - value: - disabled_ha_ids: '111' - state: :unserialized - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#008ABD #008ABD #008ABD #008ABD' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-02-23 13:31:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3465 - page_layout_root_id: 208 - page_layout_id: 244 - section_param_id: 311 - theme_id: 5 - pvalue: - 2unset: '0' - 2: background-color:#00ADEE - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-02-23 13:28:59.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3466 - page_layout_root_id: 208 - page_layout_id: 244 - section_param_id: 312 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:white - 24unset: '1' - 24: font-size:14em - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-02-23 13:32:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3467 - page_layout_root_id: 208 - page_layout_id: 269 - section_param_id: 284 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3468 - page_layout_root_id: 208 - page_layout_id: 269 - section_param_id: 285 - theme_id: 5 - pvalue: - 21: width:600px - 21unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3469 - page_layout_root_id: 208 - page_layout_id: 269 - section_param_id: 286 - theme_id: 5 - pvalue: - 7: border-style:solid solid solid solid - 7unset: '0' - 8: border-width:1px 1px 1px 1px - 8unset: '0' - 6: ! 'border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC' - 6unset: '0' - 15: height:598px - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3470 - page_layout_root_id: 208 - page_layout_id: 269 - section_param_id: 287 - theme_id: 5 - pvalue: - 2: background-color:#FFFFFF - 2unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3471 - page_layout_root_id: 208 - page_layout_id: 269 - section_param_id: 288 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: *113322940 -- !ruby/object:Spree::ParamValue - attributes: - id: 3472 - page_layout_root_id: 208 - page_layout_id: 269 - section_param_id: 313 - theme_id: 5 - pvalue: - 32: padding:2px 2px 2px 2px - 32unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3473 - page_layout_root_id: 208 - page_layout_id: 269 - section_param_id: 314 - theme_id: 5 - pvalue: - 2: background-color:#EEEEEE - 2unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3474 - page_layout_root_id: 208 - page_layout_id: 269 - section_param_id: 315 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:05.000000000 Z - updated_at: 2014-01-22 03:40:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3475 - page_layout_root_id: 208 - page_layout_id: 269 - section_param_id: 316 - theme_id: 5 - pvalue: - 32: padding:0 10px 5px 10px - 32unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:05.000000000 Z - updated_at: 2014-01-22 03:40:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3476 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 333 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3477 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 334 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3478 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 335 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3479 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 336 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3480 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 337 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3481 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 338 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3482 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 339 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3483 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 340 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3484 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 341 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3485 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 342 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3486 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 343 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3487 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 344 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3488 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 345 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3489 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 346 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3490 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 347 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3491 - page_layout_root_id: 208 - page_layout_id: 213 - section_param_id: 348 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3492 - page_layout_root_id: 208 - page_layout_id: 265 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3493 - page_layout_root_id: 208 - page_layout_id: 265 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-21 12:44:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3494 - page_layout_root_id: 208 - page_layout_id: 265 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3495 - page_layout_root_id: 208 - page_layout_id: 265 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3496 - page_layout_root_id: 208 - page_layout_id: 265 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3497 - page_layout_root_id: 208 - page_layout_id: 266 - section_param_id: 349 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3498 - page_layout_root_id: 208 - page_layout_id: 266 - section_param_id: 350 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3499 - page_layout_root_id: 208 - page_layout_id: 266 - section_param_id: 351 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3500 - page_layout_root_id: 208 - page_layout_id: 266 - section_param_id: 352 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3501 - page_layout_root_id: 208 - page_layout_id: 266 - section_param_id: 353 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3502 - page_layout_root_id: 208 - page_layout_id: 266 - section_param_id: 354 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3503 - page_layout_root_id: 208 - page_layout_id: 266 - section_param_id: 355 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3504 - page_layout_root_id: 208 - page_layout_id: 266 - section_param_id: 356 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3505 - page_layout_root_id: 208 - page_layout_id: 233 - section_param_id: 289 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3506 - page_layout_root_id: 208 - page_layout_id: 233 - section_param_id: 290 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3507 - page_layout_root_id: 208 - page_layout_id: 233 - section_param_id: 291 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3508 - page_layout_root_id: 208 - page_layout_id: 233 - section_param_id: 292 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3509 - page_layout_root_id: 208 - page_layout_id: 233 - section_param_id: 293 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3510 - page_layout_root_id: 208 - page_layout_id: 233 - section_param_id: 299 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 10px 5px 10px - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:47:28.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3511 - page_layout_root_id: 208 - page_layout_id: 233 - section_param_id: 301 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 5px 5px 5px - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 31unset: '0' - 31: margin:6px 6px 6px auto - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:48:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3512 - page_layout_root_id: 208 - page_layout_id: 254 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:21:14.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3513 - page_layout_root_id: 208 - page_layout_id: 254 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '0' - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3514 - page_layout_root_id: 208 - page_layout_id: 254 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3515 - page_layout_root_id: 208 - page_layout_id: 254 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3516 - page_layout_root_id: 208 - page_layout_id: 254 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3517 - page_layout_root_id: 208 - page_layout_id: 239 - section_param_id: 357 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3518 - page_layout_root_id: 208 - page_layout_id: 239 - section_param_id: 358 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3519 - page_layout_root_id: 208 - page_layout_id: 239 - section_param_id: 359 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: *111700650 - updated_at: 2014-04-14 12:46:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3520 - page_layout_root_id: 208 - page_layout_id: 239 - section_param_id: 360 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3521 - page_layout_root_id: 208 - page_layout_id: 239 - section_param_id: 361 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3522 - page_layout_root_id: 208 - page_layout_id: 242 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 15:20:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3523 - page_layout_root_id: 208 - page_layout_id: 242 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:230px - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:48:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3524 - page_layout_root_id: 208 - page_layout_id: 242 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:42:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3525 - page_layout_root_id: 208 - page_layout_id: 242 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:42:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3526 - page_layout_root_id: 208 - page_layout_id: 242 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:42:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3527 - page_layout_root_id: 208 - page_layout_id: 240 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:both - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:19:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3528 - page_layout_root_id: 208 - page_layout_id: 240 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:20:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3529 - page_layout_root_id: 208 - page_layout_id: 240 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:17:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3530 - page_layout_root_id: 208 - page_layout_id: 240 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:17:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3531 - page_layout_root_id: 208 - page_layout_id: 240 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:17:45.000000000 Z -:page_layouts: -- !ruby/object:Spree::PageLayout - attributes: - id: 208 - site_id: 2 - root_id: 208 - parent_id: - lft: 1 - rgt: 124 - title: root1 - slug: root1--3 - section_id: 75 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: true - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 209 - site_id: 2 - root_id: 208 - parent_id: 208 - lft: 2 - rgt: 17 - title: Header - slug: header--3 - section_id: 2 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 210 - site_id: 2 - root_id: 208 - parent_id: 209 - lft: 3 - rgt: 10 - title: container20 - slug: container20--3 - section_id: 2 - section_instance: 20 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 211 - site_id: 2 - root_id: 208 - parent_id: 210 - lft: 4 - rgt: 5 - title: Logo - slug: logo--3 - section_id: 97 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 212 - site_id: 2 - root_id: 208 - parent_id: 210 - lft: 6 - rgt: 9 - title: container21 - slug: container21--3 - section_id: 2 - section_instance: 21 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 213 - site_id: 2 - root_id: 208 - parent_id: 212 - lft: 7 - rgt: 8 - title: logged&unlogged menu1 - slug: logged-unlogged-menu1--3 - section_id: 101 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 214 - site_id: 2 - root_id: 208 - parent_id: 209 - lft: 11 - rgt: 16 - title: container19 - slug: container19--3 - section_id: 2 - section_instance: 19 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 215 - site_id: 2 - root_id: 208 - parent_id: 214 - lft: 12 - rgt: 13 - title: Main menu - slug: main-menu--3 - section_id: 3 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 216 - site_id: 2 - root_id: 208 - parent_id: 214 - lft: 14 - rgt: 15 - title: Mini cart1 - slug: mini-cart1--2 - section_id: 99 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 217 - site_id: 2 - root_id: 208 - parent_id: 208 - lft: 18 - rgt: 117 - title: content - slug: content--3 - section_id: 2 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 218 - site_id: 2 - root_id: 208 - parent_id: 217 - lft: 19 - rgt: 32 - title: lftnav - slug: lftnav--3 - section_id: 2 - section_instance: 4 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 219 - site_id: 2 - root_id: 208 - parent_id: 218 - lft: 20 - rgt: 25 - title: container12 - slug: container12--3 - section_id: 2 - section_instance: 12 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 220 - site_id: 2 - root_id: 208 - parent_id: 219 - lft: 21 - rgt: 22 - title: taxonomy name1 - slug: taxonomy-name1--3 - section_id: 40 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 221 - site_id: 2 - root_id: 208 - parent_id: 219 - lft: 23 - rgt: 24 - title: vmenu1 - slug: vmenu1--3 - section_id: 6 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 222 - site_id: 2 - root_id: 208 - parent_id: 218 - lft: 26 - rgt: 31 - title: container13 - slug: container13--3 - section_id: 2 - section_instance: 13 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 223 - site_id: 2 - root_id: 208 - parent_id: 222 - lft: 27 - rgt: 28 - title: taxonomy name2 - slug: taxonomy-name2--3 - section_id: 40 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 224 - site_id: 2 - root_id: 208 - parent_id: 222 - lft: 29 - rgt: 30 - title: vmenu2 - slug: vmenu2--3 - section_id: 6 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 225 - site_id: 2 - root_id: 208 - parent_id: 217 - lft: 33 - rgt: 116 - title: main content - slug: main-content--3 - section_id: 2 - section_instance: 5 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 226 - site_id: 2 - root_id: 208 - parent_id: 225 - lft: 34 - rgt: 43 - title: product list - slug: product-list--3 - section_id: 2 - section_instance: 6 - section_context: list - data_source: gpvs - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 227 - site_id: 2 - root_id: 208 - parent_id: 226 - lft: 35 - rgt: 42 - title: container8 - slug: container8--3 - section_id: 2 - section_instance: 8 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 228 - site_id: 2 - root_id: 208 - parent_id: 227 - lft: 36 - rgt: 37 - title: product image - slug: product-image--3 - section_id: 17 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 229 - site_id: 2 - root_id: 208 - parent_id: 227 - lft: 38 - rgt: 39 - title: product name - slug: product-name--5 - section_id: 13 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:15:59.000000000 Z - updated_at: 2014-06-28 10:15:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 230 - site_id: 2 - root_id: 208 - parent_id: 227 - lft: 40 - rgt: 41 - title: product price2 - slug: product-price2--3 - section_id: 30 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 231 - site_id: 2 - root_id: 208 - parent_id: 225 - lft: 44 - rgt: 71 - title: product detail - slug: product-detail--3 - section_id: 2 - section_instance: 7 - section_context: detail - data_source: this_product - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 232 - site_id: 2 - root_id: 208 - parent_id: 231 - lft: 45 - rgt: 50 - title: container10 - slug: container10--3 - section_id: 2 - section_instance: 10 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 233 - site_id: 2 - root_id: 208 - parent_id: 232 - lft: 46 - rgt: 47 - title: image with thumbnails1 - slug: image-with-thumbnails1--3 - section_id: 94 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 234 - site_id: 2 - root_id: 208 - parent_id: 232 - lft: 48 - rgt: 49 - title: product_properties1 - slug: product_properties1--3 - section_id: 28 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 235 - site_id: 2 - root_id: 208 - parent_id: 231 - lft: 51 - rgt: 70 - title: container9 - slug: container9--3 - section_id: 2 - section_instance: 9 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 236 - site_id: 2 - root_id: 208 - parent_id: 235 - lft: 52 - rgt: 53 - title: product name - slug: product-name--6 - section_id: 13 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 237 - site_id: 2 - root_id: 208 - parent_id: 235 - lft: 54 - rgt: 55 - title: product description - slug: product-description--3 - section_id: 15 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 238 - site_id: 2 - root_id: 208 - parent_id: 235 - lft: 56 - rgt: 69 - title: container11 - slug: container11--3 - section_id: 2 - section_instance: 11 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 239 - site_id: 2 - root_id: 208 - parent_id: 238 - lft: 57 - rgt: 58 - title: Product option values1 - slug: product-option-values1--3 - section_id: 107 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 240 - site_id: 2 - root_id: 208 - parent_id: 238 - lft: 59 - rgt: 68 - title: container25 - slug: container25--3 - section_id: 2 - section_instance: 25 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 241 - site_id: 2 - root_id: 208 - parent_id: 240 - lft: 60 - rgt: 61 - title: product price1 - slug: product-price1--3 - section_id: 30 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 242 - site_id: 2 - root_id: 208 - parent_id: 240 - lft: 62 - rgt: 67 - title: container24 - slug: container24--3 - section_id: 2 - section_instance: 24 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 243 - site_id: 2 - root_id: 208 - parent_id: 242 - lft: 63 - rgt: 64 - title: product quantity1 - slug: product-quantity1--3 - section_id: 32 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 244 - site_id: 2 - root_id: 208 - parent_id: 242 - lft: 65 - rgt: 66 - title: product atc1 - slug: product-atc1--3 - section_id: 34 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 245 - site_id: 2 - root_id: 208 - parent_id: 225 - lft: 72 - rgt: 115 - title: other pages - slug: other-pages--3 - section_id: 2 - section_instance: 14 - section_context: cart,checkout,thanks,account,signup,login,password - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 246 - site_id: 2 - root_id: 208 - parent_id: 245 - lft: 73 - rgt: 74 - title: taxon name1 - slug: taxon-name1--3 - section_id: 50 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 247 - site_id: 2 - root_id: 208 - parent_id: 245 - lft: 75 - rgt: 80 - title: cart1 - slug: cart1--3 - section_id: 36 - section_instance: 1 - section_context: cart - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 248 - site_id: 2 - root_id: 208 - parent_id: 247 - lft: 76 - rgt: 77 - title: cart items1 - slug: cart-items1--3 - section_id: 42 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 249 - site_id: 2 - root_id: 208 - parent_id: 247 - lft: 78 - rgt: 79 - title: order total price1 - slug: order-total-price1--3 - section_id: 44 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 250 - site_id: 2 - root_id: 208 - parent_id: 245 - lft: 81 - rgt: 86 - title: checkout1 - slug: checkout1--3 - section_id: 46 - section_instance: 2 - section_context: checkout - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 251 - site_id: 2 - root_id: 208 - parent_id: 250 - lft: 82 - rgt: 83 - title: ship form1 - slug: ship-form1--3 - section_id: 69 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 252 - site_id: 2 - root_id: 208 - parent_id: 250 - lft: 84 - rgt: 85 - title: payment form1 - slug: payment-form1--3 - section_id: 72 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 253 - site_id: 2 - root_id: 208 - parent_id: 245 - lft: 87 - rgt: 96 - title: thanks1 - slug: thanks1--3 - section_id: 2 - section_instance: 18 - section_context: thanks - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 254 - site_id: 2 - root_id: 208 - parent_id: 253 - lft: 88 - rgt: 93 - title: container23 - slug: container23--3 - section_id: 2 - section_instance: 23 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 255 - site_id: 2 - root_id: 208 - parent_id: 254 - lft: 89 - rgt: 90 - title: order address1 - slug: order-address1--3 - section_id: 52 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 256 - site_id: 2 - root_id: 208 - parent_id: 254 - lft: 91 - rgt: 92 - title: order payment1 - slug: order-payment1--3 - section_id: 55 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:00.000000000 Z - updated_at: 2014-06-28 10:16:00.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 257 - site_id: 2 - root_id: 208 - parent_id: 253 - lft: 94 - rgt: 95 - title: order items1 - slug: order-items1--3 - section_id: 58 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 258 - site_id: 2 - root_id: 208 - parent_id: 245 - lft: 97 - rgt: 102 - title: account1 - slug: account1--3 - section_id: 2 - section_instance: 17 - section_context: account - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 259 - site_id: 2 - root_id: 208 - parent_id: 258 - lft: 98 - rgt: 99 - title: profile1 - slug: profile1--3 - section_id: 85 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 260 - site_id: 2 - root_id: 208 - parent_id: 258 - lft: 100 - rgt: 101 - title: order list1 - slug: order-list1--3 - section_id: 82 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 261 - site_id: 2 - root_id: 208 - parent_id: 245 - lft: 103 - rgt: 106 - title: login - slug: login--3 - section_id: 2 - section_instance: 15 - section_context: login - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 262 - site_id: 2 - root_id: 208 - parent_id: 261 - lft: 104 - rgt: 105 - title: login form1 - slug: login-form1--3 - section_id: 61 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 263 - site_id: 2 - root_id: 208 - parent_id: 245 - lft: 107 - rgt: 110 - title: signup - slug: signup--3 - section_id: 2 - section_instance: 16 - section_context: signup - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 264 - site_id: 2 - root_id: 208 - parent_id: 263 - lft: 108 - rgt: 109 - title: sign up form1 - slug: sign-up-form1--3 - section_id: 64 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 265 - site_id: 2 - root_id: 208 - parent_id: 245 - lft: 111 - rgt: 114 - title: password - slug: password--3 - section_id: 2 - section_instance: 22 - section_context: password - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 266 - site_id: 2 - root_id: 208 - parent_id: 265 - lft: 112 - rgt: 113 - title: password recover form1 - slug: password-recover-form1--3 - section_id: 104 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 267 - site_id: 2 - root_id: 208 - parent_id: 208 - lft: 118 - rgt: 121 - title: footer - slug: footer--3 - section_id: 2 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 268 - site_id: 2 - root_id: 208 - parent_id: 267 - lft: 119 - rgt: 120 - title: copyright - slug: copyright--3 - section_id: 11 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 269 - site_id: 2 - root_id: 208 - parent_id: 208 - lft: 122 - rgt: 123 - title: dialog21 - slug: dialog21--3 - section_id: 90 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 83 - is_full_html: false - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-06-28 10:16:01.000000000 Z -:template_files: [] -:template_releases: [] diff --git a/spree_theme/db/themes/designs/2_5_1406644739.yml b/spree_theme/db/themes/designs/2_5_1406644739.yml deleted file mode 100644 index b3b6253d..00000000 --- a/spree_theme/db/themes/designs/2_5_1406644739.yml +++ /dev/null @@ -1,10450 +0,0 @@ ---- -:template: !ruby/object:Spree::TemplateTheme - attributes: - id: 5 - site_id: 2 - page_layout_root_id: 270 - release_id: 7 - title: 服装定制 - slug: '' - assigned_resource_ids: - 273: - :spree/template_file: - - 19 - ! ':': - - 0 - 275: - :spree/taxon: - - 0 - - 0 - 277: - :spree/taxon: - - 36 - 281: - :spree/taxon: - - 61 - 284: - :spree/taxon: - - 71 - 332: - :spree/taxon: - - 47 - 335: - :spree/template_text: - - 5 - 343: - :spree/specific_taxon: - - 0 - :spree/taxon: - - 53 - 342: - :spree/specific_taxon: - - 0 - :spree/taxon: - - 52 - 347: - :spree/template_text: - - 6 - 346: - :spree/taxon: - - 0 - 353: - :spree/taxon: - - 54 - 330: - :spree/template_text: - - 7 - 362: - :spree/template_text: - - 8 - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-07-27 05:27:16.000000000 Z - specific_taxon_ids: '' -:param_values: -- !ruby/object:Spree::ParamValue - attributes: - id: 3532 - page_layout_root_id: 270 - page_layout_id: 271 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:02.000000000 Z - updated_at: 2013-04-08 13:27:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3533 - page_layout_root_id: 270 - page_layout_id: 271 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:none - 101unset: '0' - 21unset: '0' - 21: width:960px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:02.000000000 Z - updated_at: 2014-07-12 04:10:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3534 - page_layout_root_id: 270 - page_layout_id: 271 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto auto auto - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2014-07-12 04:12:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3535 - page_layout_root_id: 270 - page_layout_id: 271 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2013-04-08 13:27:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3536 - page_layout_root_id: 270 - page_layout_id: 271 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2013-04-08 13:27:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3537 - page_layout_root_id: 270 - page_layout_id: 279 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2013-04-08 14:08:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3538 - page_layout_root_id: 270 - page_layout_id: 279 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:none - 101unset: '0' - 21unset: '0' - 21: width:960px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-07-12 06:32:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3539 - page_layout_root_id: 270 - page_layout_id: 279 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2013-04-08 13:27:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3540 - page_layout_root_id: 270 - page_layout_id: 279 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - 2unset: '1' - 2: background-color:yellow - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2013-10-05 10:50:30.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3541 - page_layout_root_id: 270 - page_layout_id: 279 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2013-04-08 13:27:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3542 - page_layout_root_id: 270 - page_layout_id: 329 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3543 - page_layout_root_id: 270 - page_layout_id: 329 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-07-26 14:42:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3544 - page_layout_root_id: 270 - page_layout_id: 329 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - 7: border-style:solid none none none - 8unset: '0' - 8: border-width:4px 0px 0px 0px - 6unset: '0' - 6: border-color:#2D2D2F transparent transparent transparent - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-07-26 14:45:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3545 - page_layout_root_id: 270 - page_layout_id: 329 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - 2unset: '0' - 2: background-color:#F5F5F5 - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3546 - page_layout_root_id: 270 - page_layout_id: 329 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &98941530 - id: 3547 - page_layout_root_id: 270 - page_layout_id: 280 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3548 - page_layout_root_id: 270 - page_layout_id: 280 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:200px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-04-08 13:27:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3549 - page_layout_root_id: 270 - page_layout_id: 280 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto 5px auto auto - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB' - 32unset: '0' - 32: padding:10px 10px 10px 10px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-07-28 13:25:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3550 - page_layout_root_id: 270 - page_layout_id: 280 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - 2unset: '1' - 2: background-color:#FFF8ED - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2013-10-05 01:17:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3551 - page_layout_root_id: 270 - page_layout_id: 280 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - 49unset: '1' - 49: color:black - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2013-10-02 10:05:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &99121720 - id: 3552 - page_layout_root_id: 270 - page_layout_id: 287 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2013-04-08 13:27:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3553 - page_layout_root_id: 270 - page_layout_id: 287 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:750px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-02-27 14:13:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3554 - page_layout_root_id: 270 - page_layout_id: 287 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2013-04-08 13:27:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3555 - page_layout_root_id: 270 - page_layout_id: 287 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2013-04-08 13:27:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3556 - page_layout_root_id: 270 - page_layout_id: 287 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2013-04-08 13:27:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3557 - page_layout_root_id: 270 - page_layout_id: 288 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-09 11:57:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3558 - page_layout_root_id: 270 - page_layout_id: 288 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '1' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-09 11:57:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3559 - page_layout_root_id: 270 - page_layout_id: 288 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-08 13:27:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &99299100 - id: 3560 - page_layout_root_id: 270 - page_layout_id: 288 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-08 13:27:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3561 - page_layout_root_id: 270 - page_layout_id: 288 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-08 13:27:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3562 - page_layout_root_id: 270 - page_layout_id: 293 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2013-04-12 13:03:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3563 - page_layout_root_id: 270 - page_layout_id: 293 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '1' - 21: width:200px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-09 13:14:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3564 - page_layout_root_id: 270 - page_layout_id: 293 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-08 13:27:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3565 - page_layout_root_id: 270 - page_layout_id: 293 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-08 13:27:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3566 - page_layout_root_id: 270 - page_layout_id: 293 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-08 13:27:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3567 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 65 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-08 13:27:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3568 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 66 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 15unset: '0' - 15: height:110px - 21unset: '0' - 21: width:150px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2013-10-05 01:20:44.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3569 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 67 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 32unset: '0' - 32: padding:5px 0px 5px 0px - 15unset: '0' - 15: height:98px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2013-10-05 01:21:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3570 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 68 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2013-04-08 13:27:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3571 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 69 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 53unset: '0' - 53: text-align:center - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2013-04-19 13:14:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3572 - page_layout_root_id: 270 - page_layout_id: 299 - section_param_id: 60 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-04-08 13:27:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3573 - page_layout_root_id: 270 - page_layout_id: 299 - section_param_id: 61 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-04-08 13:27:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3574 - page_layout_root_id: 270 - page_layout_id: 299 - section_param_id: 62 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:10px 0px 10px 0px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-10-04 07:23:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3575 - page_layout_root_id: 270 - page_layout_id: 299 - section_param_id: 63 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-04-08 13:27:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3576 - page_layout_root_id: 270 - page_layout_id: 299 - section_param_id: 64 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 24unset: '0' - 24: font-size:90% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-10-04 07:23:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3577 - page_layout_root_id: 270 - page_layout_id: 330 - section_param_id: 50 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3578 - page_layout_root_id: 270 - page_layout_id: 330 - section_param_id: 51 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2014-07-26 10:51:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &97465510 - id: 3579 - page_layout_root_id: 270 - page_layout_id: 330 - section_param_id: 52 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3580 - page_layout_root_id: 270 - page_layout_id: 330 - section_param_id: 53 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3581 - page_layout_root_id: 270 - page_layout_id: 330 - section_param_id: 54 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3582 - page_layout_root_id: 270 - page_layout_id: 289 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - 85unset: '0' - 85: clear:both - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2013-04-09 13:23:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3583 - page_layout_root_id: 270 - page_layout_id: 289 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:160px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:160px - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-02-23 11:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3584 - page_layout_root_id: 270 - page_layout_id: 289 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto 20px auto - 15unset: '1' - 15: height:140px - 32unset: '1' - 32: padding:0px 0px 0px 0px - 8unset: '1' - 8: border-width:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-02-23 11:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3585 - page_layout_root_id: 270 - page_layout_id: 289 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2013-04-08 14:05:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3586 - page_layout_root_id: 270 - page_layout_id: 289 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2013-04-08 14:05:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3587 - page_layout_root_id: 270 - page_layout_id: 297 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2013-04-09 13:12:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &97641550 - id: 3588 - page_layout_root_id: 270 - page_layout_id: 297 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:350px - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2013-04-12 13:08:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3589 - page_layout_root_id: 270 - page_layout_id: 297 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2013-04-09 13:12:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3590 - page_layout_root_id: 270 - page_layout_id: 297 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2013-04-09 13:12:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3591 - page_layout_root_id: 270 - page_layout_id: 297 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2013-04-09 13:12:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3592 - page_layout_root_id: 270 - page_layout_id: 294 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2013-04-12 13:44:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3593 - page_layout_root_id: 270 - page_layout_id: 294 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2013-04-12 13:44:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3594 - page_layout_root_id: 270 - page_layout_id: 294 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto 10px auto auto - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2013-10-04 07:21:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3595 - page_layout_root_id: 270 - page_layout_id: 294 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2013-04-12 13:44:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3596 - page_layout_root_id: 270 - page_layout_id: 294 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2013-04-12 13:44:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3597 - page_layout_root_id: 270 - page_layout_id: 303 - section_param_id: 110 - theme_id: 5 - pvalue: - id: 32 - page_layout_root_id: 1 - page_layout_id: 7 - section_param_id: 7 - theme_id: 1 - pvalue: !ruby/struct:ActiveRecord::AttributeMethods::Serialization::Attribute - coder: !ruby/object:ActiveRecord::Coders::YAMLColumn - object_class: &68008810 !ruby/class 'Hash' - value: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - 21unset: '0' - 21: width:200px - state: :unserialized - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.780447000 Z - updated_at: 2013-04-08 13:27:12.963062000 Z - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2013-04-13 01:32:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3598 - page_layout_root_id: 270 - page_layout_id: 303 - section_param_id: 111 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2013-04-13 01:32:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3599 - page_layout_root_id: 270 - page_layout_id: 303 - section_param_id: 112 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:10px auto 20px auto - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-07-27 14:40:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3600 - page_layout_root_id: 270 - page_layout_id: 303 - section_param_id: 113 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2013-04-13 01:32:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &97139490 - id: 3601 - page_layout_root_id: 270 - page_layout_id: 303 - section_param_id: 114 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 27unset: '0' - 27: font-weight:bolder - 24unset: '0' - 24: font-size:110% - 49unset: '0' - 49: color:#00ADEE - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2013-10-04 07:25:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &97143870 - id: 3602 - page_layout_root_id: 270 - page_layout_id: 300 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - 85unset: '0' - 85: clear:both - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-04-14 12:45:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3603 - page_layout_root_id: 270 - page_layout_id: 300 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '1' - 21unset: '0' - 21: width:450px - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-03-06 13:45:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3604 - page_layout_root_id: 270 - page_layout_id: 300 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:40px auto auto auto - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-07-27 14:39:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3605 - page_layout_root_id: 270 - page_layout_id: 300 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2013-04-13 02:35:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3606 - page_layout_root_id: 270 - page_layout_id: 300 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:26.000000000 Z - updated_at: 2013-04-13 02:35:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3607 - page_layout_root_id: 270 - page_layout_id: 309 - section_param_id: 125 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2013-04-16 14:20:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3608 - page_layout_root_id: 270 - page_layout_id: 309 - section_param_id: 126 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 21unset: '1' - 21: width:670px - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2014-02-27 14:14:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3609 - page_layout_root_id: 270 - page_layout_id: 309 - section_param_id: 127 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2013-04-16 14:20:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3610 - page_layout_root_id: 270 - page_layout_id: 309 - section_param_id: 128 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2013-04-16 14:20:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3611 - page_layout_root_id: 270 - page_layout_id: 309 - section_param_id: 129 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 53unset: '1' - 53: text-align:right - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2013-11-27 06:05:44.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3612 - page_layout_root_id: 270 - page_layout_id: 292 - section_param_id: 110 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:09.000000000 Z - updated_at: 2013-04-19 13:03:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3613 - page_layout_root_id: 270 - page_layout_id: 292 - section_param_id: 111 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 21unset: '0' - 21: width:150px - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2013-10-02 09:59:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3614 - page_layout_root_id: 270 - page_layout_id: 292 - section_param_id: 112 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:5px 0px 0px 0px - 31unset: '0' - 31: margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2013-10-05 07:13:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3615 - page_layout_root_id: 270 - page_layout_id: 292 - section_param_id: 113 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2013-04-19 13:03:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3616 - page_layout_root_id: 270 - page_layout_id: 292 - section_param_id: 114 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 53unset: '0' - 53: text-align:center - 49unset: '0' - 49: color:#00ADEE - 27unset: '0' - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2013-10-02 10:00:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3617 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 27 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3618 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 28 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3619 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 29 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:0px 0px 0px 20px - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-05 00:49:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3620 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 30 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3621 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 31 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3622 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 32 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-05 01:11:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3623 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 33 - theme_id: 5 - pvalue: - 54unset: '0' - 54: text-decoration:none - 24unset: '0' - 24: font-size:90% - 49unset: '0' - 49: color:black - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-07-27 05:02:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3624 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 34 - theme_id: 5 - pvalue: - 54unset: '0' - 54: text-decoration:underline - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-07-27 06:04:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3625 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 35 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3626 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 36 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3627 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 37 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3628 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 38 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3629 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 39 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3630 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 40 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3631 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 41 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3632 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 42 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3633 - page_layout_root_id: 270 - page_layout_id: 281 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2013-10-05 00:36:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3634 - page_layout_root_id: 270 - page_layout_id: 281 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2013-10-05 00:46:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3635 - page_layout_root_id: 270 - page_layout_id: 281 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto 20px auto - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2013-10-05 01:14:46.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3636 - page_layout_root_id: 270 - page_layout_id: 281 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2013-10-05 00:36:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3637 - page_layout_root_id: 270 - page_layout_id: 281 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2013-10-05 00:36:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3638 - page_layout_root_id: 270 - page_layout_id: 284 - section_param_id: 6 - theme_id: 5 - pvalue: - 86: '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2013-10-05 00:37:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3639 - page_layout_root_id: 270 - page_layout_id: 284 - section_param_id: 7 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '1' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2013-10-05 01:14:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3640 - page_layout_root_id: 270 - page_layout_id: 284 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2013-10-05 00:37:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3641 - page_layout_root_id: 270 - page_layout_id: 284 - section_param_id: 9 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:56.000000000 Z - updated_at: 2013-10-05 00:37:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3642 - page_layout_root_id: 270 - page_layout_id: 284 - section_param_id: 10 - theme_id: 5 - pvalue: - 15: height:100px - 15unset: '0' - 101: float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:56.000000000 Z - updated_at: 2013-10-05 00:37:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3643 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 27 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2013-10-05 00:38:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3644 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 28 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2014-01-22 14:04:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3645 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 29 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '1' - 31: margin:auto auto auto 20px - 32unset: '0' - 32: padding:0px 0px 0px 20px - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2013-10-05 01:13:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3646 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 30 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2013-10-05 00:38:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3647 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 31 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2013-10-05 00:38:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3648 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 32 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 01:13:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3649 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 33 - theme_id: 5 - pvalue: - 24unset: '0' - 24: font-size:90% - 49unset: '0' - 49: color:black - 54unset: '0' - 54: text-decoration:none - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2014-07-27 05:02:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3650 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 34 - theme_id: 5 - pvalue: - 54unset: '0' - 54: text-decoration:underline - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2014-07-27 05:03:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3651 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 35 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3652 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 36 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3653 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 37 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3654 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 38 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3655 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 39 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3656 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 40 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3657 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 41 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3658 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 42 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3659 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 210 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2013-11-02 09:20:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3660 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 211 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:360px - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2014-03-04 13:56:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3661 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 212 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:10px 10px 10px 10px - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2014-03-04 13:52:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3662 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 213 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2013-11-02 09:20:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3663 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 214 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2013-11-02 09:20:59.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3664 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 215 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2013-11-02 09:20:59.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3665 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 216 - theme_id: 5 - pvalue: - 2unset: '1' - 2: background-color:#000000 - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2014-03-04 13:51:28.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3666 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 217 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:#00ADEE - 53unset: '0' - 53: text-align:center - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2014-03-04 13:51:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3667 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 218 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2013-11-02 09:21:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3668 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 219 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:360px - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2014-03-04 13:56:30.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3669 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 220 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:10px 20px 10px 20px - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 31unset: '0' - 31: margin:10px auto 10px auto - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2014-03-04 13:59:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3670 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 221 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3671 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 222 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3672 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 223 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3673 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 224 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3674 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 225 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:#00ADEE - 53unset: '0' - 53: text-align:center - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2014-03-04 13:57:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3675 - page_layout_root_id: 270 - page_layout_id: 307 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3676 - page_layout_root_id: 270 - page_layout_id: 307 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2014-02-27 14:14:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3677 - page_layout_root_id: 270 - page_layout_id: 307 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3678 - page_layout_root_id: 270 - page_layout_id: 307 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &98902910 - id: 3679 - page_layout_root_id: 270 - page_layout_id: 307 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3680 - page_layout_root_id: 270 - page_layout_id: 308 - section_param_id: 160 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3681 - page_layout_root_id: 270 - page_layout_id: 308 - section_param_id: 161 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3682 - page_layout_root_id: 270 - page_layout_id: 308 - section_param_id: 162 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3683 - page_layout_root_id: 270 - page_layout_id: 308 - section_param_id: 163 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3684 - page_layout_root_id: 270 - page_layout_id: 308 - section_param_id: 164 - theme_id: 5 - pvalue: - 24unset: '0' - 24: font-size:150% - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:18.000000000 Z - updated_at: 2014-02-21 13:02:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3685 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 165 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3686 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 166 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3687 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 167 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto 10px auto 10px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2014-03-04 14:26:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3688 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 168 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3689 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 169 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3690 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 170 - theme_id: 5 - pvalue: - 31unset: '0' - 31: margin:auto auto 10px auto - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - *99121720: '0' - 32: padding:5px 0px 5px 0px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2014-03-04 14:24:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3691 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 171 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:22.000000000 Z - updated_at: 2013-11-02 09:37:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3692 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 172 - theme_id: 5 - pvalue: - 27: font-weight:bold - 54unset: '1' - 54: text-decoration:underline - 53unset: '1' - 53: text-align:left - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:22.000000000 Z - updated_at: 2014-03-04 14:24:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3693 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 173 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:30.000000000 Z - updated_at: 2013-11-02 09:37:30.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3694 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 174 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:300px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-03-04 14:28:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3695 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 175 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3696 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 176 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3697 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 177 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3698 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 178 - theme_id: 5 - pvalue: - 31unset: '0' - 31: margin:auto auto 10px auto - 32unset: '0' - 32: padding:5px 0px 5px 0px - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-03-04 14:27:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3699 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 179 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3700 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 180 - theme_id: 5 - pvalue: - 27: font-weight:bold - 54unset: '1' - 54: text-decoration:underline - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-03-04 14:27:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3701 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 181 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3702 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 182 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3703 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 183 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3704 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 184 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3705 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 185 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3706 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 186 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3707 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 187 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3708 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 188 - theme_id: 5 - pvalue: - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3709 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 268 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:51.000000000 Z - updated_at: 2013-11-02 09:37:51.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3710 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 269 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:51.000000000 Z - updated_at: 2013-11-02 09:37:51.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3711 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 270 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3712 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 271 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3713 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 272 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3714 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 273 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3715 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 274 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3716 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 275 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3717 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 260 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3718 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 261 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3719 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 262 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3720 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 263 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3721 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 264 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3722 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 265 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3723 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 266 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3724 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 267 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:02.000000000 Z - updated_at: 2013-11-02 09:38:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3725 - page_layout_root_id: 270 - page_layout_id: 323 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3726 - page_layout_root_id: 270 - page_layout_id: 323 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 10:07:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3727 - page_layout_root_id: 270 - page_layout_id: 323 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3728 - page_layout_root_id: 270 - page_layout_id: 323 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3729 - page_layout_root_id: 270 - page_layout_id: 323 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3730 - page_layout_root_id: 270 - page_layout_id: 325 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:32.000000000 Z - updated_at: 2013-11-02 09:39:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3731 - page_layout_root_id: 270 - page_layout_id: 325 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 10:07:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3732 - page_layout_root_id: 270 - page_layout_id: 325 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 09:39:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3733 - page_layout_root_id: 270 - page_layout_id: 325 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 09:39:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3734 - page_layout_root_id: 270 - page_layout_id: 325 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 09:39:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3735 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 189 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3736 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 190 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3737 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 191 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3738 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 192 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3739 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 193 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3740 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 194 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3741 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 195 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3742 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 196 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3743 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 197 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3744 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 198 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3745 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 199 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3746 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 200 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3747 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 201 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3748 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 202 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3749 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 203 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3750 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 204 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3751 - page_layout_root_id: 270 - page_layout_id: 320 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 09:50:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3752 - page_layout_root_id: 270 - page_layout_id: 320 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 10:07:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3753 - page_layout_root_id: 270 - page_layout_id: 320 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: *97139490 -- !ruby/object:Spree::ParamValue - attributes: - id: 3754 - page_layout_root_id: 270 - page_layout_id: 320 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 09:50:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3755 - page_layout_root_id: 270 - page_layout_id: 320 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:09.000000000 Z - updated_at: 2013-11-02 09:50:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3756 - page_layout_root_id: 270 - page_layout_id: 315 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3757 - page_layout_root_id: 270 - page_layout_id: 315 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 10:07:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3758 - page_layout_root_id: 270 - page_layout_id: 315 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2014-03-04 14:25:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3759 - page_layout_root_id: 270 - page_layout_id: 315 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3760 - page_layout_root_id: 270 - page_layout_id: 315 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3761 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 11 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:07.000000000 Z - updated_at: 2013-11-05 03:16:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3762 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 12 - theme_id: 5 - pvalue: - 21unset: '1' - 21: width:960px - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:07.000000000 Z - updated_at: 2013-12-03 08:15:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3763 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 13 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '1' - 32: padding:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-07-27 13:47:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3764 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 14 - theme_id: 5 - pvalue: - 2unset: '1' - 2: background-color:lime - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-12-03 08:36:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3765 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 15 - theme_id: 5 - pvalue: - 27unset: '1' - 27: font-weight:bold - 49unset: '1' - 49: color:white - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-07-27 13:48:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3766 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 16 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:12px 10px 13px 10px - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-07-28 14:09:30.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3767 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 17 - theme_id: 5 - pvalue: - 54unset: '0' - 54: text-decoration:none - 49unset: '0' - 49: color:white - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-07-26 13:03:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3768 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 18 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3769 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 19 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3770 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 20 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3771 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 21 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3772 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 22 - theme_id: 5 - pvalue: - 3unset: '0' - 3: background-image:nav_not.gif - 4unset: '0' - 4: background-position:right top - 5unset: '0' - 5: background-repeat:no-repeat - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-07-28 14:08:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3773 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 23 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3774 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 24 - theme_id: 5 - pvalue: - 3unset: '0' - 3: background-image:tab_on_1px.gif - 4unset: '1' - 4: background-position:left top - 5unset: '0' - 5: background-repeat:repeat - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2014-07-28 14:10:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3775 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 25 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2013-11-05 03:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3776 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 26 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2013-11-05 03:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &95970820 - id: 3777 - page_layout_root_id: 270 - page_layout_id: 282 - section_param_id: 135 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:08.000000000 Z - updated_at: 2013-11-25 06:53:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3778 - page_layout_root_id: 270 - page_layout_id: 282 - section_param_id: 136 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:160px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:08.000000000 Z - updated_at: 2014-02-23 12:39:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3779 - page_layout_root_id: 270 - page_layout_id: 282 - section_param_id: 137 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - 32unset: '0' - 32: padding:0px 0px 5px 0px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-02-23 12:38:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3780 - page_layout_root_id: 270 - page_layout_id: 282 - section_param_id: 138 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3781 - page_layout_root_id: 270 - page_layout_id: 282 - section_param_id: 139 - theme_id: 5 - pvalue: - 27unset: '0' - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-02-23 12:32:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3782 - page_layout_root_id: 270 - page_layout_id: 285 - section_param_id: 135 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3783 - page_layout_root_id: 270 - page_layout_id: 285 - section_param_id: 136 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:160px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-02-23 12:38:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3784 - page_layout_root_id: 270 - page_layout_id: 285 - section_param_id: 137 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:0px 0px 5px 0px - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-02-23 12:39:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3785 - page_layout_root_id: 270 - page_layout_id: 285 - section_param_id: 138 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3786 - page_layout_root_id: 270 - page_layout_id: 285 - section_param_id: 139 - theme_id: 5 - pvalue: - 27unset: '0' - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-02-23 12:35:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3787 - page_layout_root_id: 270 - page_layout_id: 310 - section_param_id: 140 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3788 - page_layout_root_id: 270 - page_layout_id: 310 - section_param_id: 141 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3789 - page_layout_root_id: 270 - page_layout_id: 310 - section_param_id: 142 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3790 - page_layout_root_id: 270 - page_layout_id: 310 - section_param_id: 143 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3791 - page_layout_root_id: 270 - page_layout_id: 310 - section_param_id: 144 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3792 - page_layout_root_id: 270 - page_layout_id: 311 - section_param_id: 145 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3793 - page_layout_root_id: 270 - page_layout_id: 311 - section_param_id: 146 - theme_id: 5 - pvalue: - 101unset: '0' - 101: float:right - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-27 06:07:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3794 - page_layout_root_id: 270 - page_layout_id: 311 - section_param_id: 147 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:10px auto auto auto - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-02-27 14:19:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3795 - page_layout_root_id: 270 - page_layout_id: 311 - section_param_id: 148 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3796 - page_layout_root_id: 270 - page_layout_id: 311 - section_param_id: 149 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3797 - page_layout_root_id: 270 - page_layout_id: 312 - section_param_id: 150 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3798 - page_layout_root_id: 270 - page_layout_id: 312 - section_param_id: 151 - theme_id: 5 - pvalue: - 21unset: '1' - 21: width:600px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-03-04 13:48:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3799 - page_layout_root_id: 270 - page_layout_id: 312 - section_param_id: 152 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3800 - page_layout_root_id: 270 - page_layout_id: 312 - section_param_id: 153 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3801 - page_layout_root_id: 270 - page_layout_id: 312 - section_param_id: 154 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &97873860 - id: 3802 - page_layout_root_id: 270 - page_layout_id: 273 - section_param_id: 323 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:56.000000000 Z - updated_at: 2013-11-29 02:49:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3803 - page_layout_root_id: 270 - page_layout_id: 273 - section_param_id: 324 - theme_id: 5 - pvalue: - 21unset: '1' - 21: width:220px - 101unset: '1' - 101: float:none - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:56.000000000 Z - updated_at: 2014-03-12 14:29:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3804 - page_layout_root_id: 270 - page_layout_id: 273 - section_param_id: 325 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2013-11-29 02:49:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3805 - page_layout_root_id: 270 - page_layout_id: 273 - section_param_id: 326 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2013-11-29 02:49:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3806 - page_layout_root_id: 270 - page_layout_id: 273 - section_param_id: 327 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2013-11-29 02:49:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3807 - page_layout_root_id: 270 - page_layout_id: 276 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:45.000000000 Z - updated_at: 2013-12-03 08:32:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3808 - page_layout_root_id: 270 - page_layout_id: 276 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:none - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:960px - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:45.000000000 Z - updated_at: 2014-07-26 13:02:44.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3809 - page_layout_root_id: 270 - page_layout_id: 276 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:0px 0px 6px 0px - 7unset: '1' - 7: border-style:none none solid none - 8unset: '1' - 8: border-width:0px 0px 1px 0px - 6unset: '1' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - 31unset: '1' - 31: margin:auto 10px auto 10px - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-07-26 14:47:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3810 - page_layout_root_id: 270 - page_layout_id: 276 - section_param_id: 9 - theme_id: 5 - pvalue: - 2unset: '1' - 2: background-color:green - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-02-21 13:13:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3811 - page_layout_root_id: 270 - page_layout_id: 276 - section_param_id: 10 - theme_id: 5 - pvalue: - 49unset: '1' - 49: color:teal - 25unset: '1' - 25: font-style:normal - 24unset: '1' - 24: font-size:0% - 27unset: '1' - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-02-21 13:19:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3817 - page_layout_root_id: 270 - page_layout_id: 272 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-06 02:14:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3818 - page_layout_root_id: 270 - page_layout_id: 272 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-06 02:14:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3819 - page_layout_root_id: 270 - page_layout_id: 272 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-05 08:06:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3820 - page_layout_root_id: 270 - page_layout_id: 272 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-05 08:06:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3821 - page_layout_root_id: 270 - page_layout_id: 272 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-05 08:06:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3822 - page_layout_root_id: 270 - page_layout_id: 274 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3823 - page_layout_root_id: 270 - page_layout_id: 274 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:right - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-06 02:14:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3824 - page_layout_root_id: 270 - page_layout_id: 274 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3825 - page_layout_root_id: 270 - page_layout_id: 274 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3826 - page_layout_root_id: 270 - page_layout_id: 274 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3827 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 226 - theme_id: 5 - pvalue: - 21: width:960px - 21unset: '1' - 20: min-width:960px - 20hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-07-12 04:07:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3828 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 227 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3829 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 228 - theme_id: 5 - pvalue: - 85: clear:both - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3830 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 229 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3831 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 230 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3832 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 231 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3833 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 232 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3834 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 233 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3835 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 234 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3836 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 235 - theme_id: 5 - pvalue: - 31unset: '0' - 31: margin:10px auto 2px auto - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-03-04 13:53:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3837 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 236 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3838 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 237 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3839 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 238 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3840 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 239 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3841 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 240 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3842 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 241 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3843 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 242 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:red - 24unset: '0' - 24: font-size:82% - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-03-04 14:03:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3844 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 243 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3845 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 317 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3846 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 318 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3847 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 319 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3848 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 320 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3849 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 321 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3850 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 322 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3851 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 244 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3852 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 245 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3853 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 246 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3854 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 247 - theme_id: 5 - pvalue: - 49unset: '1' - 49: color:#00ADEE - 24unset: '1' - 24: font-size:80% - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-07-26 12:55:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3855 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 248 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3856 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 249 - theme_id: 5 - pvalue: - id: 3093 - page_layout_root_id: 208 - page_layout_id: 209 - section_param_id: 8 - theme_id: 5 - pvalue: !ruby/struct:ActiveRecord::AttributeMethods::Serialization::Attribute - coder: !ruby/object:ActiveRecord::Coders::YAMLColumn - object_class: *68008810 - value: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto 20px auto - state: :unserialized - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2014-02-21 13:13:17.000000000 Z - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-02-27 14:09:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3857 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 250 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 10px 5px 10px - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-02-27 13:39:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3858 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 251 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3859 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 252 - theme_id: 5 - pvalue: - 2unset: '0' - 2: background-color:#D9D9DB - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-02-27 13:38:44.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3860 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 253 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3861 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 254 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3862 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 255 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3863 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 256 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3864 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 55 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3865 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 56 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:150px - 15unset: '0' - 15: height:34px - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-02-21 13:25:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3866 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 57 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '0' - 15: height:33px - 32unset: '1' - 32: padding:0px 0px 0px 0px - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #BBBBBB transparent' - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-02-21 13:25:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3867 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 58 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3868 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 59 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3869 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 294 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3870 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 295 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3871 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 296 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:#BBBBBB - 27unset: '0' - 27: font-weight:bold - 24unset: '0' - 24: font-size:80% - 54unset: '0' - 54: text-decoration:none - 53unset: '0' - 53: text-align:center - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-02-21 13:23:14.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3872 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 297 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:58.000000000 Z - updated_at: 2014-01-22 03:39:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3873 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 105 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3874 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 106 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-02-23 13:19:20.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3875 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 107 - theme_id: 5 - pvalue: - id: 495 - page_layout_root_id: 1 - page_layout_id: 34 - section_param_id: 41 - theme_id: 1 - pvalue: !ruby/struct:ActiveRecord::AttributeMethods::Serialization::Attribute - coder: !ruby/object:ActiveRecord::Coders::YAMLColumn - object_class: *68008810 - value: {} - state: :unserialized - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-02-23 13:20:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3876 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 108 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3877 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 109 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3878 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 302 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 5px 5px 5px - 7unset: '0' - 7: border-style:solid none solid none - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-02-23 13:18:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3879 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 303 - theme_id: 5 - pvalue: - 2unset: '0' - 2: background-color:transparent - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-04-14 12:47:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3880 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 304 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3881 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 305 - theme_id: 5 - pvalue: - 27unset: '0' - 27: font-weight:bold - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-02-23 13:16:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3882 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 306 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3883 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 55 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3884 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 56 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-02-23 13:22:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3885 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 57 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '1' - 32: padding:0px 0px 0px 0px - 7unset: '0' - 7: border-style:none none solid none - 8unset: '0' - 8: border-width:0px 0px 1px 0px - 6unset: '0' - 6: ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-02-23 13:22:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3886 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 58 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3887 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 59 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3888 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 294 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3889 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 295 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3890 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 296 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:black - 54unset: '0' - 54: text-decoration:none - 27unset: '0' - 27: font-weight:bold - 24unset: '0' - 24: font-size:150% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-02-23 13:21:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3891 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 297 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3892 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 115 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3893 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 116 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3894 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 117 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3895 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 118 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3896 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 119 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &101568800 - id: 3897 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 307 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:60px - 7unset: '0' - 7: border-style:solid solid solid solid - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 32unset: '0' - 32: padding:7px 10px 7px 10px - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-02-23 13:33:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3898 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 308 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3899 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 309 - theme_id: 5 - pvalue: - 53unset: '0' - 53: text-align:left - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-02-23 13:25:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3900 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 120 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3901 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 121 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3902 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 122 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto auto 5px - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-02-23 13:33:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3903 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 123 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3904 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 124 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3905 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 310 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:7px 10px 7px 10px - 7unset: - id: 456 - page_layout_root_id: 1 - page_layout_id: 9 - section_param_id: 28 - theme_id: 1 - pvalue: !ruby/struct:ActiveRecord::AttributeMethods::Serialization::Attribute - coder: !ruby/object:ActiveRecord::Coders::YAMLColumn - object_class: *68008810 - value: - disabled_ha_ids: '111' - state: :unserialized - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#008ABD #008ABD #008ABD #008ABD' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-02-23 13:31:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3906 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 311 - theme_id: 5 - pvalue: - 2unset: '0' - 2: background-color:#00ADEE - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-02-23 13:28:59.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3907 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 312 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:white - 24unset: '1' - 24: font-size:14em - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-02-23 13:32:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3908 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 284 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3909 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 285 - theme_id: 5 - pvalue: - 21: width:600px - 21unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3910 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 286 - theme_id: 5 - pvalue: - 7: border-style:solid solid solid solid - 7unset: '0' - 8: border-width:1px 1px 1px 1px - 8unset: '0' - 6: ! 'border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC' - 6unset: '0' - 15: height:598px - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3911 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 287 - theme_id: 5 - pvalue: - 2: background-color:#FFFFFF - 2unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3912 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 288 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: -- !ruby/object:Spree::ParamValue - attributes: - id: 3913 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 313 - theme_id: 5 - pvalue: - 32: padding:2px 2px 2px 2px - 32unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3914 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 314 - theme_id: 5 - pvalue: - 2: background-color:#EEEEEE - 2unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3915 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 315 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:05.000000000 Z - updated_at: 2014-01-22 03:40:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3916 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 316 - theme_id: 5 - pvalue: - 32: padding:0 10px 5px 10px - 32unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:05.000000000 Z - updated_at: 2014-01-22 03:40:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3917 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 333 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3918 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 334 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3919 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 335 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3920 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 336 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3921 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 337 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3922 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 338 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3923 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 339 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3924 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 340 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3925 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 341 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3926 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 342 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3927 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 343 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3928 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 344 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3929 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 345 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3930 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 346 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3931 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 347 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3932 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 348 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3933 - page_layout_root_id: 270 - page_layout_id: 327 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3934 - page_layout_root_id: 270 - page_layout_id: 327 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-21 12:44:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3935 - page_layout_root_id: 270 - page_layout_id: 327 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3936 - page_layout_root_id: 270 - page_layout_id: 327 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3937 - page_layout_root_id: 270 - page_layout_id: 327 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3938 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 349 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3939 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 350 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-05-10 13:08:24.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3940 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 351 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3941 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 352 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3942 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 353 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3943 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 354 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3944 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 355 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3945 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 356 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3946 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 289 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3947 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 290 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3948 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 291 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3949 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 292 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3950 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 293 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3951 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 299 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 10px 5px 10px - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:47:28.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3952 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 301 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 5px 5px 5px - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 31unset: '0' - 31: margin:6px 6px 6px auto - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:48:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3953 - page_layout_root_id: 270 - page_layout_id: 316 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:21:14.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3954 - page_layout_root_id: 270 - page_layout_id: 316 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '0' - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3955 - page_layout_root_id: 270 - page_layout_id: 316 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3956 - page_layout_root_id: 270 - page_layout_id: 316 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3957 - page_layout_root_id: 270 - page_layout_id: 316 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3958 - page_layout_root_id: 270 - page_layout_id: 301 - section_param_id: 357 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3959 - page_layout_root_id: 270 - page_layout_id: 301 - section_param_id: 358 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3960 - page_layout_root_id: 270 - page_layout_id: 301 - section_param_id: 359 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: - updated_at: 2014-04-14 12:46:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3961 - page_layout_root_id: 270 - page_layout_id: 301 - section_param_id: 360 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3962 - page_layout_root_id: 270 - page_layout_id: 301 - section_param_id: 361 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3963 - page_layout_root_id: 270 - page_layout_id: 304 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 15:20:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3964 - page_layout_root_id: 270 - page_layout_id: 304 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:230px - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:48:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3965 - page_layout_root_id: 270 - page_layout_id: 304 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:42:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3966 - page_layout_root_id: 270 - page_layout_id: 304 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:42:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3967 - page_layout_root_id: 270 - page_layout_id: 304 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:42:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3968 - page_layout_root_id: 270 - page_layout_id: 302 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:both - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:19:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3969 - page_layout_root_id: 270 - page_layout_id: 302 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:20:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3970 - page_layout_root_id: 270 - page_layout_id: 302 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:17:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3971 - page_layout_root_id: 270 - page_layout_id: 302 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:17:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3972 - page_layout_root_id: 270 - page_layout_id: 302 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:17:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3976 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 404 - theme_id: 5 - pvalue: - 84unset: '1' - 84: product - unset: - computed_pvalue: - created_at: 2014-07-04 12:47:18.000000000 Z - updated_at: 2014-07-04 13:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3977 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 388 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-09 13:01:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3978 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 389 - theme_id: 5 - pvalue: - 21: width:960px - 21unset: '0' - 15unset: '0' - 15: height:300px - 101unset: '0' - 101: float:none - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-12 04:11:24.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3979 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 390 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '0' - 15: height:300px - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-09 13:28:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3980 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 391 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-09 13:01:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3981 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 392 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-09 13:01:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3982 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 393 - theme_id: 5 - pvalue: - 78: width:960px - 79: height:300px - 78unset: '0' - 79unset: '0' - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-12 04:11:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3983 - page_layout_root_id: 270 - page_layout_id: 333 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 04:07:03.000000000 Z - updated_at: 2014-07-12 04:07:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3984 - page_layout_root_id: 270 - page_layout_id: 333 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:300px - 15unset: '1' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-07-12 04:07:03.000000000 Z - updated_at: 2014-07-26 13:19:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3985 - page_layout_root_id: 270 - page_layout_id: 333 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '1' - 15: height:295px - 31unset: '0' - 31: margin:auto auto 5px auto - unset: - computed_pvalue: - created_at: 2014-07-12 04:07:03.000000000 Z - updated_at: 2014-07-26 13:19:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3986 - page_layout_root_id: 270 - page_layout_id: 333 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 04:07:03.000000000 Z - updated_at: 2014-07-12 04:07:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3987 - page_layout_root_id: 270 - page_layout_id: 333 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 04:07:03.000000000 Z - updated_at: 2014-07-12 04:07:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3993 - page_layout_root_id: 270 - page_layout_id: 335 - section_param_id: 50 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 05:05:49.000000000 Z - updated_at: 2014-07-12 05:05:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3994 - page_layout_root_id: 270 - page_layout_id: 335 - section_param_id: 51 - theme_id: 5 - pvalue: - 101unset: '0' - 101: float:none - 21unset: '0' - 21: width:800px - unset: - computed_pvalue: - created_at: 2014-07-12 05:05:49.000000000 Z - updated_at: 2014-07-12 06:32:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3995 - page_layout_root_id: 270 - page_layout_id: 335 - section_param_id: 52 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-12 05:05:49.000000000 Z - updated_at: 2014-07-12 05:05:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3996 - page_layout_root_id: 270 - page_layout_id: 335 - section_param_id: 53 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 05:05:49.000000000 Z - updated_at: 2014-07-12 05:05:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3997 - page_layout_root_id: 270 - page_layout_id: 335 - section_param_id: 54 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 05:05:49.000000000 Z - updated_at: 2014-07-12 05:05:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4003 - page_layout_root_id: 270 - page_layout_id: 337 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:03.000000000 Z - updated_at: 2014-07-17 00:16:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4004 - page_layout_root_id: 270 - page_layout_id: 337 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '0' - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:03.000000000 Z - updated_at: 2014-07-17 00:16:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4005 - page_layout_root_id: 270 - page_layout_id: 337 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:03.000000000 Z - updated_at: 2014-07-17 00:16:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4006 - page_layout_root_id: 270 - page_layout_id: 337 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:03.000000000 Z - updated_at: 2014-07-17 00:16:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4007 - page_layout_root_id: 270 - page_layout_id: 337 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:03.000000000 Z - updated_at: 2014-07-17 00:16:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4008 - page_layout_root_id: 270 - page_layout_id: 338 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:13.000000000 Z - updated_at: 2014-07-17 00:16:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4009 - page_layout_root_id: 270 - page_layout_id: 338 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '0' - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:13.000000000 Z - updated_at: 2014-07-17 00:16:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4010 - page_layout_root_id: 270 - page_layout_id: 338 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:13.000000000 Z - updated_at: 2014-07-17 00:16:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4011 - page_layout_root_id: 270 - page_layout_id: 338 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:13.000000000 Z - updated_at: 2014-07-17 00:16:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4012 - page_layout_root_id: 270 - page_layout_id: 338 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:13.000000000 Z - updated_at: 2014-07-17 00:16:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4013 - page_layout_root_id: 270 - page_layout_id: 339 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-07-23 23:51:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4014 - page_layout_root_id: 270 - page_layout_id: 339 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-07-26 04:56:25.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4015 - page_layout_root_id: 270 - page_layout_id: 339 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-07-17 00:19:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4016 - page_layout_root_id: 270 - page_layout_id: 339 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-07-17 00:19:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4017 - page_layout_root_id: 270 - page_layout_id: 339 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-07-17 00:19:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4018 - page_layout_root_id: 270 - page_layout_id: 340 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-07-17 00:26:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4019 - page_layout_root_id: 270 - page_layout_id: 340 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:655px - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-07-27 01:50:06.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4020 - page_layout_root_id: 270 - page_layout_id: 340 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-07-17 00:26:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4021 - page_layout_root_id: 270 - page_layout_id: 340 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-07-17 00:26:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4022 - page_layout_root_id: 270 - page_layout_id: 340 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-07-17 00:26:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4023 - page_layout_root_id: 270 - page_layout_id: 341 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:54.000000000 Z - updated_at: 2014-07-17 00:26:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4024 - page_layout_root_id: 270 - page_layout_id: 341 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:right - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '1' - 21: width:360px - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:55.000000000 Z - updated_at: 2014-07-26 14:33:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4025 - page_layout_root_id: 270 - page_layout_id: 341 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '1' - 15: height:100px - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:55.000000000 Z - updated_at: 2014-07-26 03:19:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4026 - page_layout_root_id: 270 - page_layout_id: 341 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:55.000000000 Z - updated_at: 2014-07-17 00:26:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4027 - page_layout_root_id: 270 - page_layout_id: 341 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:55.000000000 Z - updated_at: 2014-07-17 00:26:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4028 - page_layout_root_id: 270 - page_layout_id: 342 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '1' - 85: clear:none - unset: - computed_pvalue: - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-07-25 14:02:18.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4029 - page_layout_root_id: 270 - page_layout_id: 342 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-07-24 23:45:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4030 - page_layout_root_id: 270 - page_layout_id: 342 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB' - unset: - computed_pvalue: - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-07-26 01:32:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4031 - page_layout_root_id: 270 - page_layout_id: 342 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-07-17 00:28:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4032 - page_layout_root_id: 270 - page_layout_id: 342 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-07-17 00:28:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4033 - page_layout_root_id: 270 - page_layout_id: 343 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:29:03.000000000 Z - updated_at: 2014-07-17 00:29:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4034 - page_layout_root_id: 270 - page_layout_id: 343 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-07-17 00:29:03.000000000 Z - updated_at: 2014-07-26 13:43:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4035 - page_layout_root_id: 270 - page_layout_id: 343 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB' - 32unset: '1' - 32: padding:0px 0px 0px 0px - 31unset: '0' - 31: margin:5px auto auto auto - unset: - computed_pvalue: - created_at: 2014-07-17 00:29:03.000000000 Z - updated_at: 2014-07-26 14:39:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4036 - page_layout_root_id: 270 - page_layout_id: 343 - section_param_id: 9 - theme_id: 5 - pvalue: - 3unset: '1' - 3: background-image:none - unset: - computed_pvalue: - created_at: 2014-07-17 00:29:03.000000000 Z - updated_at: 2014-07-27 13:53:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4037 - page_layout_root_id: 270 - page_layout_id: 343 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:29:03.000000000 Z - updated_at: 2014-07-17 00:29:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4038 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 65 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4039 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 66 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4040 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 67 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4041 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 68 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4042 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 69 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4043 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 404 - theme_id: 5 - pvalue: - 84unset: '0' - 84: product - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-25 13:57:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4044 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 65 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4045 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 66 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4046 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 67 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4047 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 68 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4048 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 69 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4049 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 404 - theme_id: 5 - pvalue: - 84unset: '0' - 84: product - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-26 13:45:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4050 - page_layout_root_id: 270 - page_layout_id: 346 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-07-17 09:14:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4051 - page_layout_root_id: 270 - page_layout_id: 346 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-07-23 23:51:30.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4052 - page_layout_root_id: 270 - page_layout_id: 346 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:18px 5px 5px 5px - unset: - computed_pvalue: - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-07-27 05:00:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4053 - page_layout_root_id: 270 - page_layout_id: 346 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-07-17 09:14:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4054 - page_layout_root_id: 270 - page_layout_id: 346 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-07-17 09:14:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4055 - page_layout_root_id: 270 - page_layout_id: 347 - section_param_id: 50 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-07-17 09:15:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4056 - page_layout_root_id: 270 - page_layout_id: 347 - section_param_id: 51 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-07-26 04:49:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4057 - page_layout_root_id: 270 - page_layout_id: 347 - section_param_id: 52 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB' - 32unset: '0' - 32: padding:5px 5px 5px 5px - 31unset: '0' - 31: margin:5px auto auto auto - unset: - computed_pvalue: - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-07-26 05:29:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4058 - page_layout_root_id: 270 - page_layout_id: 347 - section_param_id: 53 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-07-17 09:15:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4059 - page_layout_root_id: 270 - page_layout_id: 347 - section_param_id: 54 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-07-17 09:15:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4060 - page_layout_root_id: 270 - page_layout_id: 348 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-07-24 23:46:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4061 - page_layout_root_id: 270 - page_layout_id: 348 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-07-24 23:45:46.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4062 - page_layout_root_id: 270 - page_layout_id: 348 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-07-24 23:40:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4063 - page_layout_root_id: 270 - page_layout_id: 348 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-07-24 23:40:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4064 - page_layout_root_id: 270 - page_layout_id: 348 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-07-24 23:40:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4065 - page_layout_root_id: 270 - page_layout_id: 349 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - 85: clear:none - unset: - computed_pvalue: - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-07-26 13:32:27.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4066 - page_layout_root_id: 270 - page_layout_id: 349 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-07-26 13:31:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4067 - page_layout_root_id: 270 - page_layout_id: 349 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-07-24 23:41:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4068 - page_layout_root_id: 270 - page_layout_id: 349 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-07-24 23:41:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4069 - page_layout_root_id: 270 - page_layout_id: 349 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-07-24 23:41:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4070 - page_layout_root_id: 270 - page_layout_id: 350 - section_param_id: 160 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-07-25 13:58:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4071 - page_layout_root_id: 270 - page_layout_id: 350 - section_param_id: 161 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-07-26 01:33:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4072 - page_layout_root_id: 270 - page_layout_id: 350 - section_param_id: 162 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:8px 5px 8px 28px - unset: - computed_pvalue: - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-07-27 13:52:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4073 - page_layout_root_id: 270 - page_layout_id: 350 - section_param_id: 163 - theme_id: 5 - pvalue: - 3unset: '0' - 3: background-image:tiao.jpg - 2unset: '0' - 2: background-color:#F8F8F8 - unset: - computed_pvalue: - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-07-27 13:50:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4074 - page_layout_root_id: 270 - page_layout_id: 350 - section_param_id: 164 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-07-25 13:58:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4075 - page_layout_root_id: 270 - page_layout_id: 351 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-07-25 14:01:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4076 - page_layout_root_id: 270 - page_layout_id: 351 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-07-25 14:02:51.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4077 - page_layout_root_id: 270 - page_layout_id: 351 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-07-25 14:01:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4078 - page_layout_root_id: 270 - page_layout_id: 351 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-07-25 14:01:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4079 - page_layout_root_id: 270 - page_layout_id: 351 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-07-25 14:01:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4080 - page_layout_root_id: 270 - page_layout_id: 352 - section_param_id: 405 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 03:12:38.000000000 Z - updated_at: 2014-07-26 03:12:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4081 - page_layout_root_id: 270 - page_layout_id: 352 - section_param_id: 406 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: *98902910 - updated_at: 2014-07-26 03:12:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4082 - page_layout_root_id: 270 - page_layout_id: 352 - section_param_id: 407 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - 31: margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: 2014-07-26 03:12:38.000000000 Z - updated_at: 2014-07-27 04:59:44.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: *98941530 -- !ruby/object:Spree::ParamValue - attributes: - id: 4084 - page_layout_root_id: 270 - page_layout_id: 352 - section_param_id: 409 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 03:12:38.000000000 Z - updated_at: 2014-07-26 03:12:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4085 - page_layout_root_id: 270 - page_layout_id: 353 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-07-26 04:58:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4086 - page_layout_root_id: 270 - page_layout_id: 353 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-07-26 05:15:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4087 - page_layout_root_id: 270 - page_layout_id: 353 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - 7: border-style:solid solid solid solid - 8unset: '0' - 8: border-width:1px 1px 1px 1px - 6unset: '0' - 6: ! 'border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB' - 32unset: '1' - 32: padding:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-07-26 05:18:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4088 - page_layout_root_id: 270 - page_layout_id: 353 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-07-26 04:58:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4089 - page_layout_root_id: 270 - page_layout_id: 353 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-07-26 04:58:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4090 - page_layout_root_id: 270 - page_layout_id: 354 - section_param_id: 135 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-07-26 04:59:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4091 - page_layout_root_id: 270 - page_layout_id: 354 - section_param_id: 136 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-07-26 13:10:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4092 - page_layout_root_id: 270 - page_layout_id: 354 - section_param_id: 137 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:8px 5px 8px 28px - unset: - computed_pvalue: - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-07-27 13:55:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4093 - page_layout_root_id: 270 - page_layout_id: 354 - section_param_id: 138 - theme_id: 5 - pvalue: - 2unset: '1' - 2: background-color:#F8F8F8 - 3unset: '0' - 3: background-image:tiao.jpg - unset: - computed_pvalue: - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-07-27 13:56:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4094 - page_layout_root_id: 270 - page_layout_id: 354 - section_param_id: 139 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-07-26 04:59:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4095 - page_layout_root_id: 270 - page_layout_id: 355 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:01:44.000000000 Z - updated_at: 2014-07-26 13:01:44.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4096 - page_layout_root_id: 270 - page_layout_id: 355 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:40px - 15unset: '0' - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-07-26 13:01:44.000000000 Z - updated_at: 2014-07-27 13:43:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4097 - page_layout_root_id: 270 - page_layout_id: 355 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: *99299100 - 15unset: '0' - 15: height:40px - unset: - computed_pvalue: - created_at: 2014-07-26 13:01:45.000000000 Z - updated_at: 2014-07-27 13:43:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4098 - page_layout_root_id: 270 - page_layout_id: 355 - section_param_id: 9 - theme_id: 5 - pvalue: - 3unset: '0' - 3: background-image:nav_bg_40px.gif - 2unset: '1' - 2: background-color:black - unset: - computed_pvalue: - created_at: 2014-07-26 13:01:45.000000000 Z - updated_at: 2014-07-27 13:43:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4099 - page_layout_root_id: 270 - page_layout_id: 355 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:01:45.000000000 Z - updated_at: 2014-07-26 13:01:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4100 - page_layout_root_id: 270 - page_layout_id: 356 - section_param_id: 160 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-07-26 13:30:46.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4101 - page_layout_root_id: 270 - page_layout_id: 356 - section_param_id: 161 - theme_id: 5 - pvalue: - 21unset: '0' - 21: width:100% - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-07-26 13:45:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4102 - page_layout_root_id: 270 - page_layout_id: 356 - section_param_id: 162 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:8px 5px 8px 28px - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-07-27 13:55:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4103 - page_layout_root_id: 270 - page_layout_id: 356 - section_param_id: 163 - theme_id: 5 - pvalue: - 3unset: '0' - 3: background-image:tiao.jpg - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-07-27 13:53:46.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4104 - page_layout_root_id: 270 - page_layout_id: 356 - section_param_id: 164 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-07-26 13:30:46.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4105 - page_layout_root_id: 270 - page_layout_id: 357 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '1' - 85: clear:none - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:57.000000000 Z - updated_at: 2014-07-26 13:32:23.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4106 - page_layout_root_id: 270 - page_layout_id: 357 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:57.000000000 Z - updated_at: 2014-07-26 13:31:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4107 - page_layout_root_id: 270 - page_layout_id: 357 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:57.000000000 Z - updated_at: 2014-07-26 13:30:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4108 - page_layout_root_id: 270 - page_layout_id: 357 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:58.000000000 Z - updated_at: 2014-07-26 13:30:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4109 - page_layout_root_id: 270 - page_layout_id: 357 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:58.000000000 Z - updated_at: 2014-07-26 13:30:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4110 - page_layout_root_id: 270 - page_layout_id: 358 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-07-26 14:41:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4111 - page_layout_root_id: 270 - page_layout_id: 358 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:none - 101unset: '0' - 15: height:100px - 15unset: '1' - 21unset: '0' - 21: width:960px - unset: - computed_pvalue: - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-07-26 14:42:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4112 - page_layout_root_id: 270 - page_layout_id: 358 - section_param_id: 8 - theme_id: 5 - pvalue: - *97465510: '1' - 7unset: '1' - 7: border-style:solid none none none - 8unset: '1' - 8: border-width:4px 0px 0px 0px - 6unset: '1' - 6: border-color:#2D2D2F transparent transparent transparent - unset: - computed_pvalue: - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-07-26 14:44:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4113 - page_layout_root_id: 270 - page_layout_id: 358 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-07-26 14:41:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4114 - page_layout_root_id: 270 - page_layout_id: 358 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-07-26 14:41:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4115 - page_layout_root_id: 270 - page_layout_id: 359 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-07-27 02:08:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4116 - page_layout_root_id: 270 - page_layout_id: 359 - section_param_id: 7 - theme_id: 5 - pvalue: - 101: float:left - 101unset: '0' - 15: height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-07-27 02:08:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4117 - page_layout_root_id: 270 - page_layout_id: 359 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-07-27 02:08:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4118 - page_layout_root_id: 270 - page_layout_id: 359 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-07-27 02:08:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4119 - page_layout_root_id: 270 - page_layout_id: 359 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-07-27 02:08:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4120 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 410 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-07-27 03:20:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: *97641550 -- !ruby/object:Spree::ParamValue - attributes: - id: 4122 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 412 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - 32: padding:12px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-07-27 13:49:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4123 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 413 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-07-27 03:20:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4124 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 414 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-07-27 03:20:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4125 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 415 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-07-27 03:20:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4126 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 416 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:53.000000000 Z - updated_at: 2014-07-27 03:20:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4127 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 417 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:53.000000000 Z - updated_at: 2014-07-27 03:20:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4128 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 418 - theme_id: 5 - pvalue: - 49unset: '0' - 49: color:white - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:53.000000000 Z - updated_at: 2014-07-27 03:22:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4129 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 419 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:53.000000000 Z - updated_at: 2014-07-27 03:20:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4134 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 420 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4141 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 421 - theme_id: 5 - pvalue: - 32unset: '1' - 32: padding:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-28 13:27:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4142 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 421 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4146 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 422 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4151 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 423 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4158 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 424 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4159 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 424 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4163 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 425 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4168 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 426 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4175 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 427 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4176 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 427 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: *97143870 - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4180 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 428 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4185 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 429 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4192 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 430 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 0px 0px 15px - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-28 13:41:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4193 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 430 - theme_id: 5 - pvalue: - 32unset: '0' - 32: padding:5px 0px 0px 15px - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-28 13:42:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4197 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 431 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4202 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 432 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4209 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 433 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4210 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 433 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4214 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 434 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4219 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 435 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4226 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 436 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4227 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 436 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4231 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 437 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4236 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 438 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4243 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 439 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4244 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 439 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4248 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 440 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4253 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 441 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4260 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 442 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4261 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 442 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4265 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 443 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4270 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 444 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4277 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 445 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4278 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 445 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4282 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 446 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4290 - page_layout_root_id: 270 - page_layout_id: 361 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:07:38.000000000 Z - updated_at: 2014-07-27 05:07:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4291 - page_layout_root_id: 270 - page_layout_id: 361 - section_param_id: 7 - theme_id: 5 - pvalue: *95970820 - unset: - computed_pvalue: - created_at: 2014-07-27 05:07:38.000000000 Z - updated_at: 2014-07-27 06:00:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4292 - page_layout_root_id: 270 - page_layout_id: 361 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '0' - 15: height:190px - 31unset: '0' - 31: margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: 2014-07-27 05:07:39.000000000 Z - updated_at: 2014-07-27 06:01:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4293 - page_layout_root_id: 270 - page_layout_id: 361 - section_param_id: 9 - theme_id: 5 - pvalue: - 3unset: '0' - 3: background-image:howbuy.jpg - 4unset: '0' - 4: background-position:center center - unset: - computed_pvalue: - created_at: 2014-07-27 05:07:39.000000000 Z - updated_at: 2014-07-27 06:02:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4294 - page_layout_root_id: 270 - page_layout_id: 361 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:07:39.000000000 Z - updated_at: 2014-07-27 05:07:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4295 - page_layout_root_id: 270 - page_layout_id: 362 - section_param_id: 50 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4296 - page_layout_root_id: 270 - page_layout_id: 362 - section_param_id: 51 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4297 - page_layout_root_id: 270 - page_layout_id: 362 - section_param_id: 52 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4298 - page_layout_root_id: 270 - page_layout_id: 362 - section_param_id: 53 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4299 - page_layout_root_id: 270 - page_layout_id: 362 - section_param_id: 54 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z -:page_layouts: -- !ruby/object:Spree::PageLayout - attributes: - id: 270 - site_id: 2 - root_id: 270 - parent_id: - lft: 1 - rgt: 174 - title: root - slug: root--3 - section_id: 75 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: true - created_at: 2014-07-02 13:33:57.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 271 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 2 - rgt: 11 - title: Header - slug: header--3 - section_id: 2 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:57.000000000 Z - updated_at: 2014-07-22 15:16:20.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 272 - site_id: 2 - root_id: 270 - parent_id: 271 - lft: 3 - rgt: 10 - title: container - slug: container--30 - section_id: 2 - section_instance: 20 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 273 - site_id: 2 - root_id: 270 - parent_id: 272 - lft: 4 - rgt: 5 - title: Logo - slug: logo--3 - section_id: 97 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 274 - site_id: 2 - root_id: 270 - parent_id: 272 - lft: 6 - rgt: 9 - title: container - slug: container--31 - section_id: 2 - section_instance: 21 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 275 - site_id: 2 - root_id: 270 - parent_id: 274 - lft: 7 - rgt: 8 - title: logged&unlogged menu - slug: logged-unlogged-menu--3 - section_id: 101 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 355 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 12 - rgt: 19 - title: container37 - slug: container37--2 - section_id: 2 - section_instance: 37 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 13:01:44.000000000 Z - updated_at: 2014-07-26 13:01:44.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 276 - site_id: 2 - root_id: 270 - parent_id: 355 - lft: 13 - rgt: 18 - title: container - slug: container--32 - section_id: 2 - section_instance: 19 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 277 - site_id: 2 - root_id: 270 - parent_id: 276 - lft: 14 - rgt: 15 - title: Main menu - slug: main-menu--3 - section_id: 3 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: *97873860 -- !ruby/object:Spree::PageLayout - attributes: - id: 333 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 20 - rgt: 23 - title: container - slug: container--42 - section_id: 2 - section_instance: 26 - section_context: home - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-12 04:07:02.000000000 Z - updated_at: 2014-07-22 14:22:01.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 332 - site_id: 2 - root_id: 270 - parent_id: 333 - lft: 21 - rgt: 22 - title: Slider - slug: slider - section_id: 114 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-12 06:27:40.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 361 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 24 - rgt: 27 - title: container41 - slug: container41 - section_id: 2 - section_instance: 41 - section_context: list,detail - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-27 05:07:38.000000000 Z - updated_at: 2014-07-27 14:20:43.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 362 - site_id: 2 - root_id: 270 - parent_id: 361 - lft: 25 - rgt: 26 - title: text3 - slug: text3--2 - section_id: 11 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 279 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 28 - rgt: 165 - title: content - slug: content--3 - section_id: 2 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 339 - site_id: 2 - root_id: 270 - parent_id: 279 - lft: 29 - rgt: 62 - title: container31 - slug: container31 - section_id: 2 - section_instance: 31 - section_context: home - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-07-26 14:40:12.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 340 - site_id: 2 - root_id: 270 - parent_id: 339 - lft: 30 - rgt: 51 - title: leftside - slug: leftside - section_id: 2 - section_instance: 32 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-07-17 00:27:28.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 342 - site_id: 2 - root_id: 270 - parent_id: 340 - lft: 31 - rgt: 40 - title: suits - slug: suits - section_id: 2 - section_instance: 31 - section_context: '' - data_source: taxon - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-07-25 12:45:06.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 350 - site_id: 2 - root_id: 270 - parent_id: 342 - lft: 32 - rgt: 33 - title: taxon name2 - slug: taxon-name2 - section_id: 50 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-07-25 13:58:55.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 351 - site_id: 2 - root_id: 270 - parent_id: 342 - lft: 34 - rgt: 39 - title: container36 - slug: container36 - section_id: 2 - section_instance: 36 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-07-25 14:01:47.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 348 - site_id: 2 - root_id: 270 - parent_id: 351 - lft: 35 - rgt: 38 - title: container34 - slug: container34 - section_id: 2 - section_instance: 34 - section_context: '' - data_source: gpvs - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-07-24 23:43:30.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 344 - site_id: 2 - root_id: 270 - parent_id: 348 - lft: 36 - rgt: 37 - title: product image2 - slug: product-image2 - section_id: 17 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 343 - site_id: 2 - root_id: 270 - parent_id: 340 - lft: 41 - rgt: 50 - title: fabrics - slug: fabrics - section_id: 2 - section_instance: 32 - section_context: '' - data_source: taxon - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 00:29:02.000000000 Z - updated_at: 2014-07-25 12:48:48.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 356 - site_id: 2 - root_id: 270 - parent_id: 343 - lft: 42 - rgt: 43 - title: taxon name3 - slug: taxon-name3 - section_id: 50 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-07-26 13:30:46.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 357 - site_id: 2 - root_id: 270 - parent_id: 343 - lft: 44 - rgt: 49 - title: container38 - slug: container38 - section_id: 2 - section_instance: 38 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 13:30:57.000000000 Z - updated_at: 2014-07-26 13:30:57.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 349 - site_id: 2 - root_id: 270 - parent_id: 357 - lft: 45 - rgt: 48 - title: container35 - slug: container35 - section_id: 2 - section_instance: 35 - section_context: '' - data_source: gpvs - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-07-24 23:43:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 345 - site_id: 2 - root_id: 270 - parent_id: 349 - lft: 46 - rgt: 47 - title: product image3 - slug: product-image3 - section_id: 17 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 341 - site_id: 2 - root_id: 270 - parent_id: 339 - lft: 52 - rgt: 61 - title: rightside - slug: rightside - section_id: 2 - section_instance: 33 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 00:26:54.000000000 Z - updated_at: 2014-07-17 00:27:40.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 353 - site_id: 2 - root_id: 270 - parent_id: 341 - lft: 53 - rgt: 60 - title: container37 - slug: container37 - section_id: 2 - section_instance: 37 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-07-26 04:58:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 354 - site_id: 2 - root_id: 270 - parent_id: 353 - lft: 54 - rgt: 55 - title: taxonomy name3 - slug: taxonomy-name3 - section_id: 40 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-07-26 04:59:54.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 346 - site_id: 2 - root_id: 270 - parent_id: 353 - lft: 56 - rgt: 59 - title: container33 - slug: container33 - section_id: 2 - section_instance: 33 - section_context: '' - data_source: taxon - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-07-26 03:15:19.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 352 - site_id: 2 - root_id: 270 - parent_id: 346 - lft: 57 - rgt: 58 - title: Taxon icon1 - slug: taxon-icon1 - section_id: 119 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 03:12:37.000000000 Z - updated_at: 2014-07-26 03:12:37.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 280 - site_id: 2 - root_id: 270 - parent_id: 279 - lft: 63 - rgt: 76 - title: lftnav - slug: lftnav--3 - section_id: 2 - section_instance: 4 - section_context: list,detail - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-27 02:04:37.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 281 - site_id: 2 - root_id: 270 - parent_id: 280 - lft: 64 - rgt: 69 - title: container - slug: container--33 - section_id: 2 - section_instance: 12 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 282 - site_id: 2 - root_id: 270 - parent_id: 281 - lft: 65 - rgt: 66 - title: taxonomy name - slug: taxonomy-name--5 - section_id: 40 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 283 - site_id: 2 - root_id: 270 - parent_id: 281 - lft: 67 - rgt: 68 - title: vmenu - slug: vmenu--5 - section_id: 6 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 284 - site_id: 2 - root_id: 270 - parent_id: 280 - lft: 70 - rgt: 75 - title: container - slug: container--34 - section_id: 2 - section_instance: 13 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 285 - site_id: 2 - root_id: 270 - parent_id: 284 - lft: 71 - rgt: 72 - title: taxonomy name - slug: taxonomy-name--6 - section_id: 40 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 286 - site_id: 2 - root_id: 270 - parent_id: 284 - lft: 73 - rgt: 74 - title: vmenu - slug: vmenu--6 - section_id: 6 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 287 - site_id: 2 - root_id: 270 - parent_id: 279 - lft: 77 - rgt: 162 - title: main content - slug: main-content--3 - section_id: 2 - section_instance: 5 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 288 - site_id: 2 - root_id: 270 - parent_id: 287 - lft: 78 - rgt: 87 - title: product list - slug: product-list--3 - section_id: 2 - section_instance: 6 - section_context: list - data_source: gpvs - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 289 - site_id: 2 - root_id: 270 - parent_id: 288 - lft: 79 - rgt: 86 - title: container - slug: container--35 - section_id: 2 - section_instance: 8 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 290 - site_id: 2 - root_id: 270 - parent_id: 289 - lft: 80 - rgt: 81 - title: product image - slug: product-image--3 - section_id: 17 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 291 - site_id: 2 - root_id: 270 - parent_id: 289 - lft: 82 - rgt: 83 - title: product name - slug: product-name--5 - section_id: 13 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 292 - site_id: 2 - root_id: 270 - parent_id: 289 - lft: 84 - rgt: 85 - title: product price - slug: product-price--5 - section_id: 30 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 293 - site_id: 2 - root_id: 270 - parent_id: 287 - lft: 88 - rgt: 117 - title: product detail - slug: product-detail--3 - section_id: 2 - section_instance: 7 - section_context: detail - data_source: this_product - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 294 - site_id: 2 - root_id: 270 - parent_id: 293 - lft: 89 - rgt: 94 - title: container - slug: container--36 - section_id: 2 - section_instance: 10 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 295 - site_id: 2 - root_id: 270 - parent_id: 294 - lft: 90 - rgt: 91 - title: image with thumbnails - slug: image-with-thumbnails--3 - section_id: 94 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 296 - site_id: 2 - root_id: 270 - parent_id: 294 - lft: 92 - rgt: 93 - title: product_properties - slug: product_properties--3 - section_id: 28 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 297 - site_id: 2 - root_id: 270 - parent_id: 293 - lft: 95 - rgt: 112 - title: container - slug: container--37 - section_id: 2 - section_instance: 9 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 298 - site_id: 2 - root_id: 270 - parent_id: 297 - lft: 96 - rgt: 97 - title: product name - slug: product-name--6 - section_id: 13 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 300 - site_id: 2 - root_id: 270 - parent_id: 297 - lft: 98 - rgt: 111 - title: container - slug: container--38 - section_id: 2 - section_instance: 11 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 301 - site_id: 2 - root_id: 270 - parent_id: 300 - lft: 99 - rgt: 100 - title: Product option values - slug: product-option-values--3 - section_id: 107 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 302 - site_id: 2 - root_id: 270 - parent_id: 300 - lft: 101 - rgt: 110 - title: container - slug: container--39 - section_id: 2 - section_instance: 25 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 303 - site_id: 2 - root_id: 270 - parent_id: 302 - lft: 102 - rgt: 103 - title: product price - slug: product-price--6 - section_id: 30 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 304 - site_id: 2 - root_id: 270 - parent_id: 302 - lft: 104 - rgt: 109 - title: container - slug: container--40 - section_id: 2 - section_instance: 24 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 305 - site_id: 2 - root_id: 270 - parent_id: 304 - lft: 105 - rgt: 106 - title: product quantity - slug: product-quantity--3 - section_id: 32 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 306 - site_id: 2 - root_id: 270 - parent_id: 304 - lft: 107 - rgt: 108 - title: product atc - slug: product-atc--3 - section_id: 34 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 359 - site_id: 2 - root_id: 270 - parent_id: 293 - lft: 113 - rgt: 116 - title: container40 - slug: container40 - section_id: 2 - section_instance: 40 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-07-27 02:08:02.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 299 - site_id: 2 - root_id: 270 - parent_id: 359 - lft: 114 - rgt: 115 - title: product description - slug: product-description--3 - section_id: 15 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 307 - site_id: 2 - root_id: 270 - parent_id: 287 - lft: 118 - rgt: 161 - title: other pages - slug: other-pages--3 - section_id: 2 - section_instance: 14 - section_context: cart,checkout,thanks,account,signup,login,password - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 308 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 119 - rgt: 120 - title: taxon name - slug: taxon-name--3 - section_id: 50 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 309 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 121 - rgt: 126 - title: cart - slug: cart--3 - section_id: 36 - section_instance: 1 - section_context: cart - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 310 - site_id: 2 - root_id: 270 - parent_id: 309 - lft: 122 - rgt: 123 - title: cart items - slug: cart-items--3 - section_id: 42 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 311 - site_id: 2 - root_id: 270 - parent_id: 309 - lft: 124 - rgt: 125 - title: order total price - slug: order-total-price--3 - section_id: 44 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 312 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 127 - rgt: 132 - title: checkout - slug: checkout--3 - section_id: 46 - section_instance: 2 - section_context: checkout - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 313 - site_id: 2 - root_id: 270 - parent_id: 312 - lft: 128 - rgt: 129 - title: ship form - slug: ship-form--3 - section_id: 69 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 314 - site_id: 2 - root_id: 270 - parent_id: 312 - lft: 130 - rgt: 131 - title: payment form - slug: payment-form--3 - section_id: 72 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 315 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 133 - rgt: 142 - title: thanks - slug: thanks--3 - section_id: 2 - section_instance: 18 - section_context: thanks - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 316 - site_id: 2 - root_id: 270 - parent_id: 315 - lft: 134 - rgt: 139 - title: container - slug: container--41 - section_id: 2 - section_instance: 23 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 317 - site_id: 2 - root_id: 270 - parent_id: 316 - lft: 135 - rgt: 136 - title: order address - slug: order-address--3 - section_id: 52 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 318 - site_id: 2 - root_id: 270 - parent_id: 316 - lft: 137 - rgt: 138 - title: order payment - slug: order-payment--3 - section_id: 55 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 319 - site_id: 2 - root_id: 270 - parent_id: 315 - lft: 140 - rgt: 141 - title: order items - slug: order-items--3 - section_id: 58 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 320 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 143 - rgt: 148 - title: account - slug: account--3 - section_id: 2 - section_instance: 17 - section_context: account - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 321 - site_id: 2 - root_id: 270 - parent_id: 320 - lft: 144 - rgt: 145 - title: profile - slug: profile--3 - section_id: 85 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: *101568800 - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 322 - site_id: 2 - root_id: 270 - parent_id: 320 - lft: 146 - rgt: 147 - title: order list - slug: order-list--3 - section_id: 82 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 323 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 149 - rgt: 152 - title: login - slug: login--3 - section_id: 2 - section_instance: 15 - section_context: login - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-02 13:33:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 324 - site_id: 2 - root_id: 270 - parent_id: 323 - lft: 150 - rgt: 151 - title: login form - slug: login-form--3 - section_id: 61 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 325 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 153 - rgt: 156 - title: signup - slug: signup--3 - section_id: 2 - section_instance: 16 - section_context: signup - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-02 13:33:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 326 - site_id: 2 - root_id: 270 - parent_id: 325 - lft: 154 - rgt: 155 - title: sign up form - slug: sign-up-form--3 - section_id: 64 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 327 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 157 - rgt: 160 - title: password - slug: password--3 - section_id: 2 - section_instance: 22 - section_context: password - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-02 13:33:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 328 - site_id: 2 - root_id: 270 - parent_id: 327 - lft: 158 - rgt: 159 - title: password recover form - slug: password-recover-form--3 - section_id: 104 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 347 - site_id: 2 - root_id: 270 - parent_id: 279 - lft: 163 - rgt: 164 - title: text3 - slug: text3 - section_id: 11 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-07-17 09:15:31.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 329 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 166 - rgt: 171 - title: footer - slug: footer--3 - section_id: 2 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-02 13:33:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 358 - site_id: 2 - root_id: 270 - parent_id: 329 - lft: 167 - rgt: 170 - title: container39 - slug: container39 - section_id: 2 - section_instance: 39 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-07-26 14:41:26.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 330 - site_id: 2 - root_id: 270 - parent_id: 358 - lft: 168 - rgt: 169 - title: copyright - slug: copyright--3 - section_id: 11 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-02 13:33:59.000000000 Z -- !ruby/object:Spree::PageLayout - attributes: - id: 331 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 172 - rgt: 173 - title: dialog - slug: dialog--3 - section_id: 90 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z -:template_files: -- !ruby/object:Spree::TemplateFile - attributes: - id: 18 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 16469 - attachment_content_type: image/jpeg - attachment_file_name: 6a5e31b1jw1doccdf5tdqj.jpg - attachment_updated_at: 2014-07-09 12:28:20.000000000 Z - created_at: 2014-07-09 12:28:20.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 19 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 6834 - attachment_content_type: image/jpeg - attachment_file_name: ushan-logo.jpg - attachment_updated_at: 2014-07-09 12:50:23.000000000 Z - created_at: 2014-07-09 12:50:23.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 20 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 1340 - attachment_content_type: image/gif - attachment_file_name: title_bg.gif - attachment_updated_at: 2014-07-26 01:36:57.000000000 Z - created_at: 2014-07-26 01:36:57.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 21 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 59008 - attachment_content_type: image/jpeg - attachment_file_name: howbuy.jpg - attachment_updated_at: 2014-07-27 05:59:59.000000000 Z - created_at: 2014-07-27 05:59:59.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 22 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 255 - attachment_content_type: image/gif - attachment_file_name: nav_bg_40px.gif - attachment_updated_at: 2014-07-27 13:43:43.000000000 Z - created_at: 2014-07-27 13:43:43.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 23 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 452 - attachment_content_type: image/gif - attachment_file_name: tab_on_1px.gif - attachment_updated_at: 2014-07-27 13:45:16.000000000 Z - created_at: 2014-07-27 13:45:16.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 24 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 19840 - attachment_content_type: image/jpeg - attachment_file_name: tiao.jpg - attachment_updated_at: 2014-07-27 13:50:26.000000000 Z - created_at: 2014-07-27 13:50:26.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 25 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 519 - attachment_content_type: image/gif - attachment_file_name: nav_not.gif - attachment_updated_at: 2014-07-28 14:08:34.000000000 Z - created_at: 2014-07-28 14:08:34.000000000 Z -:template_releases: -- !ruby/object:Spree::TemplateRelease - attributes: - id: 7 - name: just a test - theme_id: 5 - created_at: 2014-07-26 08:14:33.000000000 Z - updated_at: 2014-07-26 08:14:33.000000000 Z diff --git a/spree_theme/db/themes/designs/2_5_1406819373/6a5e31b1jw1doccdf5tdqj.jpg b/spree_theme/db/themes/designs/2_5_1406819373/6a5e31b1jw1doccdf5tdqj.jpg deleted file mode 100644 index 7fff0f08..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406819373/6a5e31b1jw1doccdf5tdqj.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406819373/howbuy.jpg b/spree_theme/db/themes/designs/2_5_1406819373/howbuy.jpg deleted file mode 100644 index bfeaca08..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406819373/howbuy.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406819373/nav_bg_40px.gif b/spree_theme/db/themes/designs/2_5_1406819373/nav_bg_40px.gif deleted file mode 100644 index c0bffae4..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406819373/nav_bg_40px.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406819373/nav_not.gif b/spree_theme/db/themes/designs/2_5_1406819373/nav_not.gif deleted file mode 100644 index c69d645d..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406819373/nav_not.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406819373/tab_on_1px.gif b/spree_theme/db/themes/designs/2_5_1406819373/tab_on_1px.gif deleted file mode 100644 index 5e4e066e..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406819373/tab_on_1px.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406819373/tiao.jpg b/spree_theme/db/themes/designs/2_5_1406819373/tiao.jpg deleted file mode 100644 index 203d1408..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406819373/tiao.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406819373/title_bg.gif b/spree_theme/db/themes/designs/2_5_1406819373/title_bg.gif deleted file mode 100644 index 26c8046b..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406819373/title_bg.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406819373/ushan-logo.jpg b/spree_theme/db/themes/designs/2_5_1406819373/ushan-logo.jpg deleted file mode 100644 index 9455e3de..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406819373/ushan-logo.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406820030.yml b/spree_theme/db/themes/designs/2_5_1406820030.yml deleted file mode 100644 index ede55aca..00000000 --- a/spree_theme/db/themes/designs/2_5_1406820030.yml +++ /dev/null @@ -1 +0,0 @@ -{"template":{"assigned_resource_ids":{"273":{"spree/template_file":[19]},"275":{"spree/taxon":[0,0]},"277":{"spree/taxon":[36]},"281":{"spree/taxon":[61]},"284":{"spree/taxon":[71]},"332":{"spree/taxon":[47]},"335":{"spree/template_text":[5]},"343":{"spree/specific_taxon":[0],"spree/taxon":[53]},"342":{"spree/specific_taxon":[0],"spree/taxon":[52]},"347":{"spree/template_text":[6]},"346":{"spree/taxon":[0]},"353":{"spree/taxon":[54]},"330":{"spree/template_text":[7]},"362":{"spree/template_text":[8]}},"created_at":"2014-06-28T10:16:01.000Z","id":5,"page_layout_root_id":270,"release_id":7,"site_id":2,"slug":"","title":"\u670d\u88c5\u5b9a\u5236","updated_at":"2014-07-31T14:21:29.000Z"},"param_values":[{"computed_pvalue":null,"created_at":"2013-04-08T13:27:02.000Z","id":3532,"page_layout_id":271,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:02.000Z","id":3533,"page_layout_id":271,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:none","101unset":"0","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:03.000Z","id":3534,"page_layout_id":271,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto auto auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:03.000Z","id":3535,"page_layout_id":271,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:03.000Z","id":3536,"page_layout_id":271,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:04.000Z","id":3537,"page_layout_id":279,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:04.000Z","id":3538,"page_layout_id":279,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:none","101unset":"0","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:04.000Z","id":3539,"page_layout_id":279,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:04.000Z","id":3540,"page_layout_id":279,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:yellow"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:04.000Z","id":3541,"page_layout_id":279,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":3542,"page_layout_id":329,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":3543,"page_layout_id":329,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":3544,"page_layout_id":329,"page_layout_root_id":270,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid none none none","8unset":"0","8":"border-width:4px 0px 0px 0px","6unset":"0","6":"border-color:#2D2D2F transparent transparent transparent"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":3545,"page_layout_id":329,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"0","2":"background-color:#F5F5F5"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":3546,"page_layout_id":329,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":3547,"page_layout_id":280,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":3548,"page_layout_id":280,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:200px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":3549,"page_layout_id":280,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 5px auto auto","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB","32unset":"0","32":"padding:10px 10px 10px 10px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:05.000Z","id":3550,"page_layout_id":280,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:#FFF8ED"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":3551,"page_layout_id":280,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","49unset":"1","49":"color:black"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:33.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":3552,"page_layout_id":287,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":3553,"page_layout_id":287,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:750px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":3554,"page_layout_id":287,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":3555,"page_layout_id":287,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:06.000Z","id":3556,"page_layout_id":287,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":3557,"page_layout_id":288,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":3558,"page_layout_id":288,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"1","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":3559,"page_layout_id":288,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":3560,"page_layout_id":288,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":3561,"page_layout_id":288,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:07.000Z","id":3562,"page_layout_id":293,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:08.000Z","id":3563,"page_layout_id":293,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"1","21":"width:200px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:08.000Z","id":3564,"page_layout_id":293,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:08.000Z","id":3565,"page_layout_id":293,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:08.000Z","id":3566,"page_layout_id":293,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:08.000Z","id":3567,"page_layout_id":290,"page_layout_root_id":270,"pvalue":{},"section_param_id":65,"theme_id":5,"unset":null,"updated_at":"2013-04-08T13:27:08.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:09.000Z","id":3568,"page_layout_id":290,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111","15unset":"0","15":"height:110px","21unset":"0","21":"width:150px"},"section_param_id":66,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:09.000Z","id":3569,"page_layout_id":290,"page_layout_root_id":270,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","32unset":"0","32":"padding:5px 0px 5px 0px","15unset":"0","15":"height:98px"},"section_param_id":67,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:09.000Z","id":3570,"page_layout_id":290,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":68,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:09.000Z","id":3571,"page_layout_id":290,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111","53unset":"0","53":"text-align:center"},"section_param_id":69,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:10.000Z","id":3572,"page_layout_id":299,"page_layout_root_id":270,"pvalue":{},"section_param_id":60,"theme_id":5,"unset":null,"updated_at":"2013-04-08T13:27:10.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:10.000Z","id":3573,"page_layout_id":299,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":61,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:10.000Z","id":3574,"page_layout_id":299,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 0px 10px 0px"},"section_param_id":62,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:10.000Z","id":3575,"page_layout_id":299,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":63,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:10.000Z","id":3576,"page_layout_id":299,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111","24unset":"0","24":"font-size:90%"},"section_param_id":64,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:11.000Z","id":3577,"page_layout_id":330,"page_layout_root_id":270,"pvalue":{},"section_param_id":50,"theme_id":5,"unset":null,"updated_at":"2013-04-08T13:27:11.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:11.000Z","id":3578,"page_layout_id":330,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111","21unset":"0","21":"width:100%"},"section_param_id":51,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:11.000Z","id":3579,"page_layout_id":330,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:11.000Z","id":3580,"page_layout_id":330,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":53,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T13:27:11.000Z","id":3581,"page_layout_id":330,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":54,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T14:05:42.000Z","id":3582,"page_layout_id":289,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T14:05:42.000Z","id":3583,"page_layout_id":289,"page_layout_root_id":270,"pvalue":{"15":"height:160px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:160px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T14:05:42.000Z","id":3584,"page_layout_id":289,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto","15unset":"1","15":"height:140px","32unset":"1","32":"padding:0px 0px 0px 0px","8unset":"1","8":"border-width:0px 0px 0px 0px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T14:05:42.000Z","id":3585,"page_layout_id":289,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-08T14:05:42.000Z","id":3586,"page_layout_id":289,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-09T13:12:32.000Z","id":3587,"page_layout_id":297,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-09T13:12:32.000Z","id":3588,"page_layout_id":297,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:350px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-09T13:12:32.000Z","id":3589,"page_layout_id":297,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-09T13:12:32.000Z","id":3590,"page_layout_id":297,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-09T13:12:32.000Z","id":3591,"page_layout_id":297,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:34.000Z"},{"computed_pvalue":null,"created_at":"2013-04-12T13:44:05.000Z","id":3592,"page_layout_id":294,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-12T13:44:05.000Z","id":3593,"page_layout_id":294,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-12T13:44:05.000Z","id":3594,"page_layout_id":294,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-12T13:44:05.000Z","id":3595,"page_layout_id":294,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-12T13:44:05.000Z","id":3596,"page_layout_id":294,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T01:32:40.000Z","id":3597,"page_layout_id":303,"page_layout_root_id":270,"pvalue":{},"section_param_id":110,"theme_id":5,"unset":null,"updated_at":"2014-07-30T23:08:26.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T01:32:40.000Z","id":3598,"page_layout_id":303,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":111,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T01:32:40.000Z","id":3599,"page_layout_id":303,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:10px auto 20px auto"},"section_param_id":112,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T01:32:40.000Z","id":3600,"page_layout_id":303,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":113,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T01:32:40.000Z","id":3601,"page_layout_id":303,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111","27unset":"0","27":"font-weight:bolder","24unset":"0","24":"font-size:110%","49unset":"0","49":"color:#00ADEE"},"section_param_id":114,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T02:35:25.000Z","id":3602,"page_layout_id":300,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T02:35:25.000Z","id":3603,"page_layout_id":300,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"1","21unset":"0","21":"width:450px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T02:35:25.000Z","id":3604,"page_layout_id":300,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:40px auto auto auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T02:35:25.000Z","id":3605,"page_layout_id":300,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-13T02:35:26.000Z","id":3606,"page_layout_id":300,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-16T14:20:10.000Z","id":3607,"page_layout_id":309,"page_layout_root_id":270,"pvalue":{},"section_param_id":125,"theme_id":5,"unset":null,"updated_at":"2013-04-16T14:20:10.000Z"},{"computed_pvalue":null,"created_at":"2013-04-16T14:20:10.000Z","id":3608,"page_layout_id":309,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111","21unset":"1","21":"width:670px"},"section_param_id":126,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-16T14:20:10.000Z","id":3609,"page_layout_id":309,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":127,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-16T14:20:10.000Z","id":3610,"page_layout_id":309,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":128,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-16T14:20:10.000Z","id":3611,"page_layout_id":309,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111","53unset":"1","53":"text-align:right"},"section_param_id":129,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-19T13:03:09.000Z","id":3612,"page_layout_id":292,"page_layout_root_id":270,"pvalue":{},"section_param_id":110,"theme_id":5,"unset":null,"updated_at":"2013-04-19T13:03:09.000Z"},{"computed_pvalue":null,"created_at":"2013-04-19T13:03:10.000Z","id":3613,"page_layout_id":292,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111","21unset":"0","21":"width:150px"},"section_param_id":111,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-19T13:03:10.000Z","id":3614,"page_layout_id":292,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:5px 0px 0px 0px","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":112,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-19T13:03:10.000Z","id":3615,"page_layout_id":292,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":113,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-04-19T13:03:10.000Z","id":3616,"page_layout_id":292,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111","53unset":"0","53":"text-align:center","49unset":"0","49":"color:#00ADEE","27unset":"0","27":"font-weight:bold"},"section_param_id":114,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":3617,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":27,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":3618,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":28,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":3619,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 0px 20px"},"section_param_id":29,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":3620,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":30,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":3621,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":31,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":3622,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 0px"},"section_param_id":32,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":3623,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{"54unset":"0","54":"text-decoration:none","24unset":"0","24":"font-size:90%","49unset":"0","49":"color:black"},"section_param_id":33,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":3624,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{"54unset":"0","54":"text-decoration:underline"},"section_param_id":34,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":3625,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":35,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:54.000Z","id":3626,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":36,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":3627,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":37,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":3628,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":38,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":3629,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":39,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":3630,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":40,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":3631,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":41,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-02T10:20:55.000Z","id":3632,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":42,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:36:48.000Z","id":3633,"page_layout_id":281,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:36:48.000Z","id":3634,"page_layout_id":281,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:36:48.000Z","id":3635,"page_layout_id":281,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:36:48.000Z","id":3636,"page_layout_id":281,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:36:48.000Z","id":3637,"page_layout_id":281,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:37:55.000Z","id":3638,"page_layout_id":284,"page_layout_root_id":270,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:37:55.000Z","id":3639,"page_layout_id":284,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:37:55.000Z","id":3640,"page_layout_id":284,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:37:56.000Z","id":3641,"page_layout_id":284,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:37:56.000Z","id":3642,"page_layout_id":284,"page_layout_root_id":270,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:35.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:16.000Z","id":3643,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":27,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:16.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:16.000Z","id":3644,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":28,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:16.000Z","id":3645,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 20px","32unset":"0","32":"padding:0px 0px 0px 20px"},"section_param_id":29,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:16.000Z","id":3646,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":30,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:16.000Z","id":3647,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":31,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3648,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 0px"},"section_param_id":32,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3649,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{"24unset":"0","24":"font-size:90%","49unset":"0","49":"color:black","54unset":"0","54":"text-decoration:none"},"section_param_id":33,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3650,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{"54unset":"0","54":"text-decoration:underline"},"section_param_id":34,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3651,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":35,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3652,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":36,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3653,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":37,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3654,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":38,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3655,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":39,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3656,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":40,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3657,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":41,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-10-05T00:38:17.000Z","id":3658,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":42,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:58.000Z","id":3659,"page_layout_id":313,"page_layout_root_id":270,"pvalue":{},"section_param_id":210,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:20:58.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:58.000Z","id":3660,"page_layout_id":313,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:360px"},"section_param_id":211,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:58.000Z","id":3661,"page_layout_id":313,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 10px 10px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":212,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:58.000Z","id":3662,"page_layout_id":313,"page_layout_root_id":270,"pvalue":{},"section_param_id":213,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:20:58.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:59.000Z","id":3663,"page_layout_id":313,"page_layout_root_id":270,"pvalue":{},"section_param_id":214,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:20:59.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:59.000Z","id":3664,"page_layout_id":313,"page_layout_root_id":270,"pvalue":{},"section_param_id":215,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:20:59.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:59.000Z","id":3665,"page_layout_id":313,"page_layout_root_id":270,"pvalue":{"2unset":"1","2":"background-color:#000000"},"section_param_id":216,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:20:59.000Z","id":3666,"page_layout_id":313,"page_layout_root_id":270,"pvalue":{"49unset":"0","49":"color:#00ADEE","53unset":"0","53":"text-align:center"},"section_param_id":217,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:08.000Z","id":3667,"page_layout_id":314,"page_layout_root_id":270,"pvalue":{},"section_param_id":218,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:21:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:08.000Z","id":3668,"page_layout_id":314,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:360px"},"section_param_id":219,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:08.000Z","id":3669,"page_layout_id":314,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 20px 10px 20px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","31unset":"0","31":"margin:10px auto 10px auto"},"section_param_id":220,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:09.000Z","id":3670,"page_layout_id":314,"page_layout_root_id":270,"pvalue":{},"section_param_id":221,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:09.000Z","id":3671,"page_layout_id":314,"page_layout_root_id":270,"pvalue":{},"section_param_id":222,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:09.000Z","id":3672,"page_layout_id":314,"page_layout_root_id":270,"pvalue":{},"section_param_id":223,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:09.000Z","id":3673,"page_layout_id":314,"page_layout_root_id":270,"pvalue":{},"section_param_id":224,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:21:09.000Z","id":3674,"page_layout_id":314,"page_layout_root_id":270,"pvalue":{"49unset":"0","49":"color:#00ADEE","53unset":"0","53":"text-align:center"},"section_param_id":225,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:35:02.000Z","id":3675,"page_layout_id":307,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:35:02.000Z","id":3676,"page_layout_id":307,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:35:02.000Z","id":3677,"page_layout_id":307,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:35:02.000Z","id":3678,"page_layout_id":307,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:35:02.000Z","id":3679,"page_layout_id":307,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:36:17.000Z","id":3680,"page_layout_id":308,"page_layout_root_id":270,"pvalue":{},"section_param_id":160,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:36:17.000Z","id":3681,"page_layout_id":308,"page_layout_root_id":270,"pvalue":{},"section_param_id":161,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:36:17.000Z","id":3682,"page_layout_id":308,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":162,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:36:17.000Z","id":3683,"page_layout_id":308,"page_layout_root_id":270,"pvalue":{},"section_param_id":163,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:36:18.000Z","id":3684,"page_layout_id":308,"page_layout_root_id":270,"pvalue":{"24unset":"0","24":"font-size:150%"},"section_param_id":164,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":3685,"page_layout_id":317,"page_layout_root_id":270,"pvalue":{},"section_param_id":165,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":3686,"page_layout_id":317,"page_layout_root_id":270,"pvalue":{},"section_param_id":166,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":3687,"page_layout_id":317,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto 10px"},"section_param_id":167,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":3688,"page_layout_id":317,"page_layout_root_id":270,"pvalue":{},"section_param_id":168,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":3689,"page_layout_id":317,"page_layout_root_id":270,"pvalue":{},"section_param_id":169,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:21.000Z","id":3690,"page_layout_id":317,"page_layout_root_id":270,"pvalue":{"31unset":"0","31":"margin:auto auto 10px auto","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","32unset":"0","32":"padding:5px 0px 5px 0px"},"section_param_id":170,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:36.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:22.000Z","id":3691,"page_layout_id":317,"page_layout_root_id":270,"pvalue":{},"section_param_id":171,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:22.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:22.000Z","id":3692,"page_layout_id":317,"page_layout_root_id":270,"pvalue":{"27":"font-weight:bold","54unset":"1","54":"text-decoration:underline","53unset":"1","53":"text-align:left"},"section_param_id":172,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:30.000Z","id":3693,"page_layout_id":318,"page_layout_root_id":270,"pvalue":{},"section_param_id":173,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:30.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":3694,"page_layout_id":318,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:300px"},"section_param_id":174,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":3695,"page_layout_id":318,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":175,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":3696,"page_layout_id":318,"page_layout_root_id":270,"pvalue":{},"section_param_id":176,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":3697,"page_layout_id":318,"page_layout_root_id":270,"pvalue":{},"section_param_id":177,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":3698,"page_layout_id":318,"page_layout_root_id":270,"pvalue":{"31unset":"0","31":"margin:auto auto 10px auto","32unset":"0","32":"padding:5px 0px 5px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":178,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":3699,"page_layout_id":318,"page_layout_root_id":270,"pvalue":{},"section_param_id":179,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:31.000Z","id":3700,"page_layout_id":318,"page_layout_root_id":270,"pvalue":{"27":"font-weight:bold","54unset":"1","54":"text-decoration:underline"},"section_param_id":180,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":3701,"page_layout_id":319,"page_layout_root_id":270,"pvalue":{},"section_param_id":181,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":3702,"page_layout_id":319,"page_layout_root_id":270,"pvalue":{},"section_param_id":182,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":3703,"page_layout_id":319,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":183,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":3704,"page_layout_id":319,"page_layout_root_id":270,"pvalue":{},"section_param_id":184,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":3705,"page_layout_id":319,"page_layout_root_id":270,"pvalue":{},"section_param_id":185,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":3706,"page_layout_id":319,"page_layout_root_id":270,"pvalue":{},"section_param_id":186,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":3707,"page_layout_id":319,"page_layout_root_id":270,"pvalue":{},"section_param_id":187,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:40.000Z","id":3708,"page_layout_id":319,"page_layout_root_id":270,"pvalue":{"27":"font-weight:bold"},"section_param_id":188,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:51.000Z","id":3709,"page_layout_id":321,"page_layout_root_id":270,"pvalue":{},"section_param_id":268,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:51.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:51.000Z","id":3710,"page_layout_id":321,"page_layout_root_id":270,"pvalue":{},"section_param_id":269,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:51.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":3711,"page_layout_id":321,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":270,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":3712,"page_layout_id":321,"page_layout_root_id":270,"pvalue":{},"section_param_id":271,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":3713,"page_layout_id":321,"page_layout_root_id":270,"pvalue":{},"section_param_id":272,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":3714,"page_layout_id":321,"page_layout_root_id":270,"pvalue":{},"section_param_id":273,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":3715,"page_layout_id":321,"page_layout_root_id":270,"pvalue":{},"section_param_id":274,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:37:52.000Z","id":3716,"page_layout_id":321,"page_layout_root_id":270,"pvalue":{},"section_param_id":275,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":3717,"page_layout_id":322,"page_layout_root_id":270,"pvalue":{},"section_param_id":260,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":3718,"page_layout_id":322,"page_layout_root_id":270,"pvalue":{},"section_param_id":261,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":3719,"page_layout_id":322,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":262,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":3720,"page_layout_id":322,"page_layout_root_id":270,"pvalue":{},"section_param_id":263,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":3721,"page_layout_id":322,"page_layout_root_id":270,"pvalue":{},"section_param_id":264,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":3722,"page_layout_id":322,"page_layout_root_id":270,"pvalue":{},"section_param_id":265,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:01.000Z","id":3723,"page_layout_id":322,"page_layout_root_id":270,"pvalue":{},"section_param_id":266,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:38:02.000Z","id":3724,"page_layout_id":322,"page_layout_root_id":270,"pvalue":{},"section_param_id":267,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:02.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:01.000Z","id":3725,"page_layout_id":323,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:01.000Z","id":3726,"page_layout_id":323,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:01.000Z","id":3727,"page_layout_id":323,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:01.000Z","id":3728,"page_layout_id":323,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:01.000Z","id":3729,"page_layout_id":323,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:32.000Z","id":3730,"page_layout_id":325,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:32.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:33.000Z","id":3731,"page_layout_id":325,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:33.000Z","id":3732,"page_layout_id":325,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:33.000Z","id":3733,"page_layout_id":325,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:33.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:33.000Z","id":3734,"page_layout_id":325,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:33.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":3735,"page_layout_id":324,"page_layout_root_id":270,"pvalue":{},"section_param_id":189,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":3736,"page_layout_id":324,"page_layout_root_id":270,"pvalue":{},"section_param_id":190,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":3737,"page_layout_id":324,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":191,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":3738,"page_layout_id":324,"page_layout_root_id":270,"pvalue":{},"section_param_id":192,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":3739,"page_layout_id":324,"page_layout_root_id":270,"pvalue":{},"section_param_id":193,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":3740,"page_layout_id":324,"page_layout_root_id":270,"pvalue":{},"section_param_id":194,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":3741,"page_layout_id":324,"page_layout_root_id":270,"pvalue":{},"section_param_id":195,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:39:53.000Z","id":3742,"page_layout_id":324,"page_layout_root_id":270,"pvalue":{},"section_param_id":196,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":3743,"page_layout_id":326,"page_layout_root_id":270,"pvalue":{},"section_param_id":197,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":3744,"page_layout_id":326,"page_layout_root_id":270,"pvalue":{},"section_param_id":198,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":3745,"page_layout_id":326,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":199,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":3746,"page_layout_id":326,"page_layout_root_id":270,"pvalue":{},"section_param_id":200,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":3747,"page_layout_id":326,"page_layout_root_id":270,"pvalue":{},"section_param_id":201,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":3748,"page_layout_id":326,"page_layout_root_id":270,"pvalue":{},"section_param_id":202,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":3749,"page_layout_id":326,"page_layout_root_id":270,"pvalue":{},"section_param_id":203,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:40:04.000Z","id":3750,"page_layout_id":326,"page_layout_root_id":270,"pvalue":{},"section_param_id":204,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:08.000Z","id":3751,"page_layout_id":320,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:08.000Z","id":3752,"page_layout_id":320,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:08.000Z","id":3753,"page_layout_id":320,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:08.000Z","id":3754,"page_layout_id":320,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:09.000Z","id":3755,"page_layout_id":320,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:37.000Z","id":3756,"page_layout_id":315,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:37.000Z","id":3757,"page_layout_id":315,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:37.000Z","id":3758,"page_layout_id":315,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 0px 0px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:37.000Z","id":3759,"page_layout_id":315,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-02T09:50:37.000Z","id":3760,"page_layout_id":315,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:07.000Z","id":3761,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":11,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:07.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:07.000Z","id":3762,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{"21unset":"1","21":"width:960px"},"section_param_id":12,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3763,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 0px 0px"},"section_param_id":13,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3764,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{"2unset":"1","2":"background-color:lime"},"section_param_id":14,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3765,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{"27unset":"1","27":"font-weight:bold","49unset":"1","49":"color:white"},"section_param_id":15,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3766,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{"32unset":"0","32":"padding:12px 10px 13px 10px"},"section_param_id":16,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3767,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{"54unset":"0","54":"text-decoration:none","49unset":"0","49":"color:white"},"section_param_id":17,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3768,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":18,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3769,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":19,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3770,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":20,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3771,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":21,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3772,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{"3unset":"0","3":"background-image:nav_not.gif","4unset":"0","4":"background-position:right top","5unset":"0","5":"background-repeat:no-repeat"},"section_param_id":22,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:08.000Z","id":3773,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":23,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:09.000Z","id":3774,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{"3unset":"0","3":"background-image:tab_on_1px.gif","4unset":"1","4":"background-position:left top","5unset":"0","5":"background-repeat:repeat"},"section_param_id":24,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:09.000Z","id":3775,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":25,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-05T03:16:09.000Z","id":3776,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":26,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:08.000Z","id":3777,"page_layout_id":282,"page_layout_root_id":270,"pvalue":{},"section_param_id":135,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:08.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:08.000Z","id":3778,"page_layout_id":282,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:160px"},"section_param_id":136,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":3779,"page_layout_id":282,"page_layout_root_id":270,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","32unset":"0","32":"padding:0px 0px 5px 0px"},"section_param_id":137,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":3780,"page_layout_id":282,"page_layout_root_id":270,"pvalue":{},"section_param_id":138,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":3781,"page_layout_id":282,"page_layout_root_id":270,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":139,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":3782,"page_layout_id":285,"page_layout_root_id":270,"pvalue":{},"section_param_id":135,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":3783,"page_layout_id":285,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:160px"},"section_param_id":136,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":3784,"page_layout_id":285,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 5px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":137,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":3785,"page_layout_id":285,"page_layout_root_id":270,"pvalue":{},"section_param_id":138,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:09.000Z","id":3786,"page_layout_id":285,"page_layout_root_id":270,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":139,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":3787,"page_layout_id":310,"page_layout_root_id":270,"pvalue":{},"section_param_id":140,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":3788,"page_layout_id":310,"page_layout_root_id":270,"pvalue":{},"section_param_id":141,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":3789,"page_layout_id":310,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":142,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":3790,"page_layout_id":310,"page_layout_root_id":270,"pvalue":{},"section_param_id":143,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":3791,"page_layout_id":310,"page_layout_root_id":270,"pvalue":{},"section_param_id":144,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:15.000Z","id":3792,"page_layout_id":311,"page_layout_root_id":270,"pvalue":{},"section_param_id":145,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":3793,"page_layout_id":311,"page_layout_root_id":270,"pvalue":{"101unset":"0","101":"float:right"},"section_param_id":146,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":3794,"page_layout_id":311,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:10px auto auto auto"},"section_param_id":147,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":3795,"page_layout_id":311,"page_layout_root_id":270,"pvalue":{},"section_param_id":148,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":3796,"page_layout_id":311,"page_layout_root_id":270,"pvalue":{},"section_param_id":149,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":3797,"page_layout_id":312,"page_layout_root_id":270,"pvalue":{},"section_param_id":150,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":3798,"page_layout_id":312,"page_layout_root_id":270,"pvalue":{"21unset":"1","21":"width:600px"},"section_param_id":151,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":3799,"page_layout_id":312,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":152,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":3800,"page_layout_id":312,"page_layout_root_id":270,"pvalue":{},"section_param_id":153,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"},{"computed_pvalue":null,"created_at":"2013-11-25T06:53:16.000Z","id":3801,"page_layout_id":312,"page_layout_root_id":270,"pvalue":{},"section_param_id":154,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"},{"computed_pvalue":null,"created_at":"2013-11-29T02:49:56.000Z","id":3802,"page_layout_id":273,"page_layout_root_id":270,"pvalue":{},"section_param_id":323,"theme_id":5,"unset":null,"updated_at":"2013-11-29T02:49:56.000Z"},{"computed_pvalue":null,"created_at":"2013-11-29T02:49:56.000Z","id":3803,"page_layout_id":273,"page_layout_root_id":270,"pvalue":{"21unset":"1","21":"width:220px","101unset":"1","101":"float:none"},"section_param_id":324,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:37.000Z"},{"computed_pvalue":null,"created_at":"2013-11-29T02:49:57.000Z","id":3804,"page_layout_id":273,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":325,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-11-29T02:49:57.000Z","id":3805,"page_layout_id":273,"page_layout_root_id":270,"pvalue":{},"section_param_id":326,"theme_id":5,"unset":null,"updated_at":"2013-11-29T02:49:57.000Z"},{"computed_pvalue":null,"created_at":"2013-11-29T02:49:57.000Z","id":3806,"page_layout_id":273,"page_layout_root_id":270,"pvalue":{},"section_param_id":327,"theme_id":5,"unset":null,"updated_at":"2013-11-29T02:49:57.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:14:45.000Z","id":3807,"page_layout_id":276,"page_layout_root_id":270,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:14:45.000Z","id":3808,"page_layout_id":276,"page_layout_root_id":270,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:14:46.000Z","id":3809,"page_layout_id":276,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 6px 0px","7unset":"1","7":"border-style:none none solid none","8unset":"1","8":"border-width:0px 0px 1px 0px","6unset":"1","6":"border-color:transparent transparent #D9D9DB transparent","31unset":"1","31":"margin:auto 10px auto 10px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:14:46.000Z","id":3810,"page_layout_id":276,"page_layout_root_id":270,"pvalue":{"2unset":"1","2":"background-color:green"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-12-03T08:14:46.000Z","id":3811,"page_layout_id":276,"page_layout_root_id":270,"pvalue":{"49unset":"1","49":"color:teal","25unset":"1","25":"font-style:normal","24unset":"1","24":"font-size:0%","27unset":"1","27":"font-weight:bold"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:06:08.000Z","id":3817,"page_layout_id":272,"page_layout_root_id":270,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:06:08.000Z","id":3818,"page_layout_id":272,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:06:08.000Z","id":3819,"page_layout_id":272,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:06:08.000Z","id":3820,"page_layout_id":272,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-12-05T08:06:08.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:06:08.000Z","id":3821,"page_layout_id":272,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-12-05T08:06:08.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:11:48.000Z","id":3822,"page_layout_id":274,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:11:48.000Z","id":3823,"page_layout_id":274,"page_layout_root_id":270,"pvalue":{"101":"float:right","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:11:48.000Z","id":3824,"page_layout_id":274,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:11:48.000Z","id":3825,"page_layout_id":274,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"},{"computed_pvalue":null,"created_at":"2013-12-05T08:11:48.000Z","id":3826,"page_layout_id":274,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:53.000Z","id":3827,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{"21":"width:960px","21unset":"1","20":"min-width:960px","20hidden":"1"},"section_param_id":226,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:53.000Z","id":3828,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":227,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:53.000Z","id":3829,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{"85":"clear:both"},"section_param_id":228,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:53.000Z","id":3830,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":229,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:53.000Z","id":3831,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":230,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3832,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":231,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3833,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":232,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3834,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":233,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3835,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":234,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3836,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{"31unset":"0","31":"margin:10px auto 2px auto"},"section_param_id":235,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3837,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":236,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3838,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":237,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3839,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":238,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3840,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":239,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3841,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":240,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:54.000Z","id":3842,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":241,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":3843,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{"49unset":"0","49":"color:red","24unset":"0","24":"font-size:82%"},"section_param_id":242,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":3844,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":243,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":3845,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":317,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":3846,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":318,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":3847,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":319,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":3848,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":320,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":3849,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":321,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":3850,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":322,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":3851,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":244,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:55.000Z","id":3852,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":245,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":3853,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":246,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":3854,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{"49unset":"1","49":"color:#00ADEE","24unset":"1","24":"font-size:80%"},"section_param_id":247,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":3855,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":248,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":3856,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":249,"theme_id":5,"unset":null,"updated_at":"2014-07-30T23:08:29.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":3857,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{"32unset":"0","32":"padding:5px 10px 5px 10px"},"section_param_id":250,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":3858,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":251,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":3859,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{"2unset":"0","2":"background-color:#D9D9DB"},"section_param_id":252,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":3860,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":253,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:56.000Z","id":3861,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":254,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":3862,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":255,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":3863,"page_layout_id":270,"page_layout_root_id":270,"pvalue":{},"section_param_id":256,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":3864,"page_layout_id":291,"page_layout_root_id":270,"pvalue":{},"section_param_id":55,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":3865,"page_layout_id":291,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:150px","15unset":"0","15":"height:34px"},"section_param_id":56,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":3866,"page_layout_id":291,"page_layout_root_id":270,"pvalue":{"15hidden":"1","15unset":"0","15":"height:33px","32unset":"1","32":"padding:0px 0px 0px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #BBBBBB transparent"},"section_param_id":57,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":3867,"page_layout_id":291,"page_layout_root_id":270,"pvalue":{},"section_param_id":58,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":3868,"page_layout_id":291,"page_layout_root_id":270,"pvalue":{},"section_param_id":59,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":3869,"page_layout_id":291,"page_layout_root_id":270,"pvalue":{},"section_param_id":294,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":3870,"page_layout_id":291,"page_layout_root_id":270,"pvalue":{},"section_param_id":295,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:57.000Z","id":3871,"page_layout_id":291,"page_layout_root_id":270,"pvalue":{"49unset":"0","49":"color:#BBBBBB","27unset":"0","27":"font-weight:bold","24unset":"0","24":"font-size:80%","54unset":"0","54":"text-decoration:none","53unset":"0","53":"text-align:center"},"section_param_id":296,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:39:58.000Z","id":3872,"page_layout_id":291,"page_layout_root_id":270,"pvalue":{},"section_param_id":297,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:58.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":3873,"page_layout_id":296,"page_layout_root_id":270,"pvalue":{},"section_param_id":105,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":3874,"page_layout_id":296,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":106,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":3875,"page_layout_id":296,"page_layout_root_id":270,"pvalue":{},"section_param_id":107,"theme_id":5,"unset":null,"updated_at":"2014-07-31T13:50:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":3876,"page_layout_id":296,"page_layout_root_id":270,"pvalue":{},"section_param_id":108,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":3877,"page_layout_id":296,"page_layout_root_id":270,"pvalue":{},"section_param_id":109,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":3878,"page_layout_id":296,"page_layout_root_id":270,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px","7unset":"0","7":"border-style:solid none solid none","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":302,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:00.000Z","id":3879,"page_layout_id":296,"page_layout_root_id":270,"pvalue":{"2unset":"0","2":"background-color:transparent"},"section_param_id":303,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":3880,"page_layout_id":296,"page_layout_root_id":270,"pvalue":{},"section_param_id":304,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":3881,"page_layout_id":296,"page_layout_root_id":270,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":305,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":3882,"page_layout_id":296,"page_layout_root_id":270,"pvalue":{},"section_param_id":306,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":3883,"page_layout_id":298,"page_layout_root_id":270,"pvalue":{},"section_param_id":55,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":3884,"page_layout_id":298,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":56,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":3885,"page_layout_id":298,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 0px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":57,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":3886,"page_layout_id":298,"page_layout_root_id":270,"pvalue":{},"section_param_id":58,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":3887,"page_layout_id":298,"page_layout_root_id":270,"pvalue":{},"section_param_id":59,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":3888,"page_layout_id":298,"page_layout_root_id":270,"pvalue":{},"section_param_id":294,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:01.000Z","id":3889,"page_layout_id":298,"page_layout_root_id":270,"pvalue":{},"section_param_id":295,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":3890,"page_layout_id":298,"page_layout_root_id":270,"pvalue":{"49unset":"0","49":"color:black","54unset":"0","54":"text-decoration:none","27unset":"0","27":"font-weight:bold","24unset":"0","24":"font-size:150%"},"section_param_id":296,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":3891,"page_layout_id":298,"page_layout_root_id":270,"pvalue":{},"section_param_id":297,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":3892,"page_layout_id":305,"page_layout_root_id":270,"pvalue":{},"section_param_id":115,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":3893,"page_layout_id":305,"page_layout_root_id":270,"pvalue":{},"section_param_id":116,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":3894,"page_layout_id":305,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":117,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":3895,"page_layout_id":305,"page_layout_root_id":270,"pvalue":{},"section_param_id":118,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":3896,"page_layout_id":305,"page_layout_root_id":270,"pvalue":{},"section_param_id":119,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":3897,"page_layout_id":305,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:60px","7unset":"0","7":"border-style:solid solid solid solid","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","8unset":"0","8":"border-width:1px 1px 1px 1px","32unset":"0","32":"padding:7px 10px 7px 10px"},"section_param_id":307,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:02.000Z","id":3898,"page_layout_id":305,"page_layout_root_id":270,"pvalue":{},"section_param_id":308,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":3899,"page_layout_id":305,"page_layout_root_id":270,"pvalue":{"53unset":"0","53":"text-align:left"},"section_param_id":309,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":3900,"page_layout_id":306,"page_layout_root_id":270,"pvalue":{},"section_param_id":120,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":3901,"page_layout_id":306,"page_layout_root_id":270,"pvalue":{},"section_param_id":121,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":3902,"page_layout_id":306,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto auto 5px"},"section_param_id":122,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":3903,"page_layout_id":306,"page_layout_root_id":270,"pvalue":{},"section_param_id":123,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":3904,"page_layout_id":306,"page_layout_root_id":270,"pvalue":{},"section_param_id":124,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":3905,"page_layout_id":306,"page_layout_root_id":270,"pvalue":{"32unset":"0","32":"padding:7px 10px 7px 10px","7unset":"1","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#008ABD #008ABD #008ABD #008ABD"},"section_param_id":310,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":3906,"page_layout_id":306,"page_layout_root_id":270,"pvalue":{"2unset":"0","2":"background-color:#00ADEE"},"section_param_id":311,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:03.000Z","id":3907,"page_layout_id":306,"page_layout_root_id":270,"pvalue":{"49unset":"0","49":"color:white","24unset":"1","24":"font-size:14em"},"section_param_id":312,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":3908,"page_layout_id":331,"page_layout_root_id":270,"pvalue":{},"section_param_id":284,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:04.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":3909,"page_layout_id":331,"page_layout_root_id":270,"pvalue":{"21":"width:600px","21unset":"0"},"section_param_id":285,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":3910,"page_layout_id":331,"page_layout_root_id":270,"pvalue":{"7":"border-style:solid solid solid solid","7unset":"0","8":"border-width:1px 1px 1px 1px","8unset":"0","6":"border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC","6unset":"0","15":"height:598px","15hidden":"1"},"section_param_id":286,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":3911,"page_layout_id":331,"page_layout_root_id":270,"pvalue":{"2":"background-color:#FFFFFF","2unset":"0"},"section_param_id":287,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:38.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":3912,"page_layout_id":331,"page_layout_root_id":270,"pvalue":{},"section_param_id":288,"theme_id":5,"unset":null,"updated_at":null},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":3913,"page_layout_id":331,"page_layout_root_id":270,"pvalue":{"32":"padding:2px 2px 2px 2px","32unset":"0"},"section_param_id":313,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:04.000Z","id":3914,"page_layout_id":331,"page_layout_root_id":270,"pvalue":{"2":"background-color:#EEEEEE","2unset":"0"},"section_param_id":314,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:05.000Z","id":3915,"page_layout_id":331,"page_layout_root_id":270,"pvalue":{},"section_param_id":315,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:05.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T03:40:05.000Z","id":3916,"page_layout_id":331,"page_layout_root_id":270,"pvalue":{"32":"padding:0 10px 5px 10px","32unset":"0"},"section_param_id":316,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3917,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":333,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3918,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":334,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3919,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":335,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3920,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":336,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3921,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":337,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3922,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":338,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3923,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":339,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3924,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":340,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3925,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":341,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3926,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":342,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3927,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":343,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3928,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":344,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3929,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":345,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3930,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":346,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3931,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":347,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-01-22T14:00:12.000Z","id":3932,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":348,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:03:39.000Z","id":3933,"page_layout_id":327,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:03:39.000Z","id":3934,"page_layout_id":327,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:03:39.000Z","id":3935,"page_layout_id":327,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:03:39.000Z","id":3936,"page_layout_id":327,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:03:39.000Z","id":3937,"page_layout_id":327,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":3938,"page_layout_id":328,"page_layout_root_id":270,"pvalue":{},"section_param_id":349,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-05-10T13:08:24.000Z","id":3939,"page_layout_id":328,"page_layout_root_id":270,"pvalue":{},"section_param_id":350,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":3940,"page_layout_id":328,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":351,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":3941,"page_layout_id":328,"page_layout_root_id":270,"pvalue":{},"section_param_id":352,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":3942,"page_layout_id":328,"page_layout_root_id":270,"pvalue":{},"section_param_id":353,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":3943,"page_layout_id":328,"page_layout_root_id":270,"pvalue":{},"section_param_id":354,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":3944,"page_layout_id":328,"page_layout_root_id":270,"pvalue":{},"section_param_id":355,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-19T13:12:08.000Z","id":3945,"page_layout_id":328,"page_layout_root_id":270,"pvalue":{},"section_param_id":356,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":3946,"page_layout_id":295,"page_layout_root_id":270,"pvalue":{},"section_param_id":289,"theme_id":5,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":3947,"page_layout_id":295,"page_layout_root_id":270,"pvalue":{},"section_param_id":290,"theme_id":5,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":3948,"page_layout_id":295,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":291,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":3949,"page_layout_id":295,"page_layout_root_id":270,"pvalue":{},"section_param_id":292,"theme_id":5,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":3950,"page_layout_id":295,"page_layout_root_id":270,"pvalue":{},"section_param_id":293,"theme_id":5,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":3951,"page_layout_id":295,"page_layout_root_id":270,"pvalue":{"32unset":"0","32":"padding:5px 10px 5px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":299,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-02-23T13:34:50.000Z","id":3952,"page_layout_id":295,"page_layout_root_id":270,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","31unset":"0","31":"margin:6px 6px 6px auto"},"section_param_id":301,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-04T14:20:03.000Z","id":3953,"page_layout_id":316,"page_layout_root_id":270,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-04T14:20:03.000Z","id":3954,"page_layout_id":316,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-04T14:20:03.000Z","id":3955,"page_layout_id":316,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-04T14:20:03.000Z","id":3956,"page_layout_id":316,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-03-04T14:20:03.000Z"},{"computed_pvalue":null,"created_at":"2014-03-04T14:20:03.000Z","id":3957,"page_layout_id":316,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-03-04T14:20:03.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:19:56.000Z","id":3958,"page_layout_id":301,"page_layout_root_id":270,"pvalue":{},"section_param_id":357,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:19:56.000Z","id":3959,"page_layout_id":301,"page_layout_root_id":270,"pvalue":{},"section_param_id":358,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"},{"computed_pvalue":null,"created_at":null,"id":3960,"page_layout_id":301,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":359,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:19:56.000Z","id":3961,"page_layout_id":301,"page_layout_root_id":270,"pvalue":{},"section_param_id":360,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:19:56.000Z","id":3962,"page_layout_id":301,"page_layout_root_id":270,"pvalue":{},"section_param_id":361,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:42:19.000Z","id":3963,"page_layout_id":304,"page_layout_root_id":270,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:42:19.000Z","id":3964,"page_layout_id":304,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:230px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:42:19.000Z","id":3965,"page_layout_id":304,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:42:19.000Z","id":3966,"page_layout_id":304,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:42:19.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T13:42:19.000Z","id":3967,"page_layout_id":304,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:42:19.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T15:17:45.000Z","id":3968,"page_layout_id":302,"page_layout_root_id":270,"pvalue":{"85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T15:17:45.000Z","id":3969,"page_layout_id":302,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T15:17:45.000Z","id":3970,"page_layout_id":302,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T15:17:45.000Z","id":3971,"page_layout_id":302,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-03-06T15:17:45.000Z"},{"computed_pvalue":null,"created_at":"2014-03-06T15:17:45.000Z","id":3972,"page_layout_id":302,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-03-06T15:17:45.000Z"},{"computed_pvalue":null,"created_at":"2014-07-04T12:47:18.000Z","id":3976,"page_layout_id":290,"page_layout_root_id":270,"pvalue":{"84unset":"1","84":"product"},"section_param_id":404,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-09T13:01:29.000Z","id":3977,"page_layout_id":332,"page_layout_root_id":270,"pvalue":{},"section_param_id":388,"theme_id":5,"unset":null,"updated_at":"2014-07-09T13:01:29.000Z"},{"computed_pvalue":null,"created_at":"2014-07-09T13:01:29.000Z","id":3978,"page_layout_id":332,"page_layout_root_id":270,"pvalue":{"21":"width:960px","21unset":"0","15unset":"0","15":"height:300px","101unset":"0","101":"float:none"},"section_param_id":389,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-09T13:01:29.000Z","id":3979,"page_layout_id":332,"page_layout_root_id":270,"pvalue":{"15hidden":"1","15unset":"0","15":"height:300px"},"section_param_id":390,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-09T13:01:29.000Z","id":3980,"page_layout_id":332,"page_layout_root_id":270,"pvalue":{},"section_param_id":391,"theme_id":5,"unset":null,"updated_at":"2014-07-09T13:01:29.000Z"},{"computed_pvalue":null,"created_at":"2014-07-09T13:01:29.000Z","id":3981,"page_layout_id":332,"page_layout_root_id":270,"pvalue":{},"section_param_id":392,"theme_id":5,"unset":null,"updated_at":"2014-07-09T13:01:29.000Z"},{"computed_pvalue":null,"created_at":"2014-07-09T13:01:29.000Z","id":3982,"page_layout_id":332,"page_layout_root_id":270,"pvalue":{"78":"width:960px","79":"height:300px","78unset":"0","79unset":"0"},"section_param_id":393,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-12T04:07:03.000Z","id":3983,"page_layout_id":333,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-12T04:07:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-12T04:07:03.000Z","id":3984,"page_layout_id":333,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:300px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-12T04:07:03.000Z","id":3985,"page_layout_id":333,"page_layout_root_id":270,"pvalue":{"15hidden":"1","15unset":"1","15":"height:295px","31unset":"0","31":"margin:auto auto 5px auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-12T04:07:03.000Z","id":3986,"page_layout_id":333,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-12T04:07:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-12T04:07:03.000Z","id":3987,"page_layout_id":333,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-12T04:07:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-12T05:05:49.000Z","id":3993,"page_layout_id":335,"page_layout_root_id":270,"pvalue":{},"section_param_id":50,"theme_id":5,"unset":null,"updated_at":"2014-07-12T05:05:49.000Z"},{"computed_pvalue":null,"created_at":"2014-07-12T05:05:49.000Z","id":3994,"page_layout_id":335,"page_layout_root_id":270,"pvalue":{"101unset":"0","101":"float:none","21unset":"0","21":"width:800px"},"section_param_id":51,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-12T05:05:49.000Z","id":3995,"page_layout_id":335,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-12T05:05:49.000Z","id":3996,"page_layout_id":335,"page_layout_root_id":270,"pvalue":{},"section_param_id":53,"theme_id":5,"unset":null,"updated_at":"2014-07-12T05:05:49.000Z"},{"computed_pvalue":null,"created_at":"2014-07-12T05:05:49.000Z","id":3997,"page_layout_id":335,"page_layout_root_id":270,"pvalue":{},"section_param_id":54,"theme_id":5,"unset":null,"updated_at":"2014-07-12T05:05:49.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:16:03.000Z","id":4003,"page_layout_id":337,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:16:03.000Z","id":4004,"page_layout_id":337,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:16:03.000Z","id":4005,"page_layout_id":337,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:16:03.000Z","id":4006,"page_layout_id":337,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:16:03.000Z","id":4007,"page_layout_id":337,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:16:13.000Z","id":4008,"page_layout_id":338,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:13.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:16:13.000Z","id":4009,"page_layout_id":338,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:16:13.000Z","id":4010,"page_layout_id":338,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:16:13.000Z","id":4011,"page_layout_id":338,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:13.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:16:13.000Z","id":4012,"page_layout_id":338,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:13.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:19:17.000Z","id":4013,"page_layout_id":339,"page_layout_root_id":270,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:19:17.000Z","id":4014,"page_layout_id":339,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:19:17.000Z","id":4015,"page_layout_id":339,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:19:17.000Z","id":4016,"page_layout_id":339,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:19:17.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:19:17.000Z","id":4017,"page_layout_id":339,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:19:17.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:26:45.000Z","id":4018,"page_layout_id":340,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:45.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:26:45.000Z","id":4019,"page_layout_id":340,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:655px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:26:45.000Z","id":4020,"page_layout_id":340,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:26:45.000Z","id":4021,"page_layout_id":340,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:45.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:26:45.000Z","id":4022,"page_layout_id":340,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:45.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:26:54.000Z","id":4023,"page_layout_id":341,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:54.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:26:55.000Z","id":4024,"page_layout_id":341,"page_layout_root_id":270,"pvalue":{"101":"float:right","101unset":"0","15":"height:100px","15unset":"1","21unset":"1","21":"width:360px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:26:55.000Z","id":4025,"page_layout_id":341,"page_layout_root_id":270,"pvalue":{"15hidden":"1","15unset":"1","15":"height:100px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:26:55.000Z","id":4026,"page_layout_id":341,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:55.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:26:55.000Z","id":4027,"page_layout_id":341,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:55.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:28:52.000Z","id":4028,"page_layout_id":342,"page_layout_root_id":270,"pvalue":{"85unset":"1","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:28:52.000Z","id":4029,"page_layout_id":342,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:28:52.000Z","id":4030,"page_layout_id":342,"page_layout_root_id":270,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:28:52.000Z","id":4031,"page_layout_id":342,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:28:52.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:28:52.000Z","id":4032,"page_layout_id":342,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:28:52.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:29:03.000Z","id":4033,"page_layout_id":343,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:29:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:29:03.000Z","id":4034,"page_layout_id":343,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:29:03.000Z","id":4035,"page_layout_id":343,"page_layout_root_id":270,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB","32unset":"1","32":"padding:0px 0px 0px 0px","31unset":"0","31":"margin:5px auto auto auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:29:03.000Z","id":4036,"page_layout_id":343,"page_layout_root_id":270,"pvalue":{"3unset":"1","3":"background-image:none"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T00:29:03.000Z","id":4037,"page_layout_id":343,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:29:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:10:10.000Z","id":4038,"page_layout_id":344,"page_layout_root_id":270,"pvalue":{},"section_param_id":65,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:10:10.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:10:10.000Z","id":4039,"page_layout_id":344,"page_layout_root_id":270,"pvalue":{},"section_param_id":66,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:10:10.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:10:10.000Z","id":4040,"page_layout_id":344,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":67,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:10:10.000Z","id":4041,"page_layout_id":344,"page_layout_root_id":270,"pvalue":{},"section_param_id":68,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:10:10.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:10:10.000Z","id":4042,"page_layout_id":344,"page_layout_root_id":270,"pvalue":{},"section_param_id":69,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:10:10.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:10:10.000Z","id":4043,"page_layout_id":344,"page_layout_root_id":270,"pvalue":{"84unset":"0","84":"product"},"section_param_id":404,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:13:54.000Z","id":4044,"page_layout_id":345,"page_layout_root_id":270,"pvalue":{},"section_param_id":65,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:13:54.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:13:54.000Z","id":4045,"page_layout_id":345,"page_layout_root_id":270,"pvalue":{},"section_param_id":66,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:13:54.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:13:54.000Z","id":4046,"page_layout_id":345,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":67,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:13:54.000Z","id":4047,"page_layout_id":345,"page_layout_root_id":270,"pvalue":{},"section_param_id":68,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:13:54.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:13:54.000Z","id":4048,"page_layout_id":345,"page_layout_root_id":270,"pvalue":{},"section_param_id":69,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:13:54.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:13:54.000Z","id":4049,"page_layout_id":345,"page_layout_root_id":270,"pvalue":{"84unset":"0","84":"product"},"section_param_id":404,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:14:54.000Z","id":4050,"page_layout_id":346,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:14:54.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:14:54.000Z","id":4051,"page_layout_id":346,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:14:54.000Z","id":4052,"page_layout_id":346,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:18px 5px 5px 5px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:14:54.000Z","id":4053,"page_layout_id":346,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:14:54.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:14:54.000Z","id":4054,"page_layout_id":346,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:14:54.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:15:31.000Z","id":4055,"page_layout_id":347,"page_layout_root_id":270,"pvalue":{},"section_param_id":50,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:15:31.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:15:31.000Z","id":4056,"page_layout_id":347,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":51,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:15:31.000Z","id":4057,"page_layout_id":347,"page_layout_root_id":270,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB","32unset":"0","32":"padding:5px 5px 5px 5px","31unset":"0","31":"margin:5px auto auto auto"},"section_param_id":52,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:15:31.000Z","id":4058,"page_layout_id":347,"page_layout_root_id":270,"pvalue":{},"section_param_id":53,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:15:31.000Z"},{"computed_pvalue":null,"created_at":"2014-07-17T09:15:31.000Z","id":4059,"page_layout_id":347,"page_layout_root_id":270,"pvalue":{},"section_param_id":54,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:15:31.000Z"},{"computed_pvalue":null,"created_at":"2014-07-24T23:40:52.000Z","id":4060,"page_layout_id":348,"page_layout_root_id":270,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-24T23:40:52.000Z","id":4061,"page_layout_id":348,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-24T23:40:52.000Z","id":4062,"page_layout_id":348,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-24T23:40:52.000Z","id":4063,"page_layout_id":348,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-24T23:40:52.000Z"},{"computed_pvalue":null,"created_at":"2014-07-24T23:40:52.000Z","id":4064,"page_layout_id":348,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-24T23:40:52.000Z"},{"computed_pvalue":null,"created_at":"2014-07-24T23:41:13.000Z","id":4065,"page_layout_id":349,"page_layout_root_id":270,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-24T23:41:13.000Z","id":4066,"page_layout_id":349,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-24T23:41:13.000Z","id":4067,"page_layout_id":349,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-24T23:41:13.000Z","id":4068,"page_layout_id":349,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-24T23:41:13.000Z"},{"computed_pvalue":null,"created_at":"2014-07-24T23:41:13.000Z","id":4069,"page_layout_id":349,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-24T23:41:13.000Z"},{"computed_pvalue":null,"created_at":"2014-07-25T13:58:55.000Z","id":4070,"page_layout_id":350,"page_layout_root_id":270,"pvalue":{},"section_param_id":160,"theme_id":5,"unset":null,"updated_at":"2014-07-25T13:58:55.000Z"},{"computed_pvalue":null,"created_at":"2014-07-25T13:58:55.000Z","id":4071,"page_layout_id":350,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":161,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-25T13:58:55.000Z","id":4072,"page_layout_id":350,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:8px 5px 8px 28px"},"section_param_id":162,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-25T13:58:55.000Z","id":4073,"page_layout_id":350,"page_layout_root_id":270,"pvalue":{"3unset":"0","3":"background-image:tiao.jpg","2unset":"0","2":"background-color:#F8F8F8"},"section_param_id":163,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-25T13:58:55.000Z","id":4074,"page_layout_id":350,"page_layout_root_id":270,"pvalue":{},"section_param_id":164,"theme_id":5,"unset":null,"updated_at":"2014-07-25T13:58:55.000Z"},{"computed_pvalue":null,"created_at":"2014-07-25T14:01:47.000Z","id":4075,"page_layout_id":351,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-25T14:01:47.000Z"},{"computed_pvalue":null,"created_at":"2014-07-25T14:01:47.000Z","id":4076,"page_layout_id":351,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-25T14:01:47.000Z","id":4077,"page_layout_id":351,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-25T14:01:47.000Z","id":4078,"page_layout_id":351,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-25T14:01:47.000Z"},{"computed_pvalue":null,"created_at":"2014-07-25T14:01:47.000Z","id":4079,"page_layout_id":351,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-25T14:01:47.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T03:12:38.000Z","id":4080,"page_layout_id":352,"page_layout_root_id":270,"pvalue":{},"section_param_id":405,"theme_id":5,"unset":null,"updated_at":"2014-07-26T03:12:38.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T03:12:38.000Z","id":4081,"page_layout_id":352,"page_layout_root_id":270,"pvalue":{},"section_param_id":406,"theme_id":5,"unset":null,"updated_at":"2014-07-26T03:12:38.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T03:12:38.000Z","id":4082,"page_layout_id":352,"page_layout_root_id":270,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":407,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T03:12:38.000Z","id":4083,"page_layout_id":352,"page_layout_root_id":270,"pvalue":{},"section_param_id":408,"theme_id":5,"unset":null,"updated_at":"2014-07-26T03:12:38.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T03:12:38.000Z","id":4084,"page_layout_id":352,"page_layout_root_id":270,"pvalue":{},"section_param_id":409,"theme_id":5,"unset":null,"updated_at":"2014-07-26T03:12:38.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T04:58:58.000Z","id":4085,"page_layout_id":353,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-26T04:58:58.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T04:58:58.000Z","id":4086,"page_layout_id":353,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T04:58:58.000Z","id":4087,"page_layout_id":353,"page_layout_root_id":270,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB","32unset":"1","32":"padding:0px 0px 0px 0px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T04:58:58.000Z","id":4088,"page_layout_id":353,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-26T04:58:58.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T04:58:58.000Z","id":4089,"page_layout_id":353,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-26T04:58:58.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T04:59:54.000Z","id":4090,"page_layout_id":354,"page_layout_root_id":270,"pvalue":{},"section_param_id":135,"theme_id":5,"unset":null,"updated_at":"2014-07-26T04:59:54.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T04:59:54.000Z","id":4091,"page_layout_id":354,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":136,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T04:59:54.000Z","id":4092,"page_layout_id":354,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:8px 5px 8px 28px"},"section_param_id":137,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T04:59:54.000Z","id":4093,"page_layout_id":354,"page_layout_root_id":270,"pvalue":{"2unset":"1","2":"background-color:#F8F8F8","3unset":"0","3":"background-image:tiao.jpg"},"section_param_id":138,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T04:59:54.000Z","id":4094,"page_layout_id":354,"page_layout_root_id":270,"pvalue":{},"section_param_id":139,"theme_id":5,"unset":null,"updated_at":"2014-07-26T04:59:54.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:01:44.000Z","id":4095,"page_layout_id":355,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:01:44.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:01:44.000Z","id":4096,"page_layout_id":355,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:40px","15unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:01:45.000Z","id":4097,"page_layout_id":355,"page_layout_root_id":270,"pvalue":{"15hidden":"1","15unset":"0","15":"height:40px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:01:45.000Z","id":4098,"page_layout_id":355,"page_layout_root_id":270,"pvalue":{"3unset":"0","3":"background-image:nav_bg_40px.gif","2unset":"1","2":"background-color:black"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:01:45.000Z","id":4099,"page_layout_id":355,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:01:45.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:30:46.000Z","id":4100,"page_layout_id":356,"page_layout_root_id":270,"pvalue":{},"section_param_id":160,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:30:46.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:30:46.000Z","id":4101,"page_layout_id":356,"page_layout_root_id":270,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":161,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:30:46.000Z","id":4102,"page_layout_id":356,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:8px 5px 8px 28px"},"section_param_id":162,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:30:46.000Z","id":4103,"page_layout_id":356,"page_layout_root_id":270,"pvalue":{"3unset":"0","3":"background-image:tiao.jpg"},"section_param_id":163,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:30:46.000Z","id":4104,"page_layout_id":356,"page_layout_root_id":270,"pvalue":{},"section_param_id":164,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:30:46.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:30:57.000Z","id":4105,"page_layout_id":357,"page_layout_root_id":270,"pvalue":{"85unset":"1","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:30:57.000Z","id":4106,"page_layout_id":357,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:40.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:30:57.000Z","id":4107,"page_layout_id":357,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:30:58.000Z","id":4108,"page_layout_id":357,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:30:58.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T13:30:58.000Z","id":4109,"page_layout_id":357,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:30:58.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T14:41:26.000Z","id":4110,"page_layout_id":358,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-26T14:41:26.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T14:41:26.000Z","id":4111,"page_layout_id":358,"page_layout_root_id":270,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T14:41:26.000Z","id":4112,"page_layout_id":358,"page_layout_root_id":270,"pvalue":{"15hidden":"1","7unset":"1","7":"border-style:solid none none none","8unset":"1","8":"border-width:4px 0px 0px 0px","6unset":"1","6":"border-color:#2D2D2F transparent transparent transparent"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T14:41:26.000Z","id":4113,"page_layout_id":358,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-26T14:41:26.000Z"},{"computed_pvalue":null,"created_at":"2014-07-26T14:41:26.000Z","id":4114,"page_layout_id":358,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-26T14:41:26.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T02:08:02.000Z","id":4115,"page_layout_id":359,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-27T02:08:02.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T02:08:02.000Z","id":4116,"page_layout_id":359,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T02:08:02.000Z","id":4117,"page_layout_id":359,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T02:08:02.000Z","id":4118,"page_layout_id":359,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-27T02:08:02.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T02:08:02.000Z","id":4119,"page_layout_id":359,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-27T02:08:02.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T03:20:52.000Z","id":4120,"page_layout_id":278,"page_layout_root_id":270,"pvalue":{},"section_param_id":410,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:52.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T03:20:52.000Z","id":4121,"page_layout_id":278,"page_layout_root_id":270,"pvalue":{"101unset":"0","101":"float:right"},"section_param_id":411,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T03:20:52.000Z","id":4122,"page_layout_id":278,"page_layout_root_id":270,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:12px 0px 0px 0px"},"section_param_id":412,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T03:20:52.000Z","id":4123,"page_layout_id":278,"page_layout_root_id":270,"pvalue":{},"section_param_id":413,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:52.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T03:20:52.000Z","id":4124,"page_layout_id":278,"page_layout_root_id":270,"pvalue":{},"section_param_id":414,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:52.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T03:20:52.000Z","id":4125,"page_layout_id":278,"page_layout_root_id":270,"pvalue":{},"section_param_id":415,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:52.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T03:20:53.000Z","id":4126,"page_layout_id":278,"page_layout_root_id":270,"pvalue":{},"section_param_id":416,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:53.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T03:20:53.000Z","id":4127,"page_layout_id":278,"page_layout_root_id":270,"pvalue":{},"section_param_id":417,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:53.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T03:20:53.000Z","id":4128,"page_layout_id":278,"page_layout_root_id":270,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":418,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T03:20:53.000Z","id":4129,"page_layout_id":278,"page_layout_root_id":270,"pvalue":{},"section_param_id":419,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:53.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4134,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":420,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4141,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{"32unset":"1","32":"padding:0px 0px 0px 0px"},"section_param_id":421,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4142,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":421,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4146,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":422,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4151,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":423,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4158,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":424,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4159,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":424,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4163,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":425,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4168,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":426,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4175,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":427,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4176,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":427,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4180,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":428,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4185,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":429,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4192,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 15px"},"section_param_id":430,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4193,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 15px"},"section_param_id":430,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4197,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":431,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4202,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":432,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4209,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":433,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4210,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":433,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4214,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":434,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4219,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":435,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4226,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":436,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4227,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":436,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4231,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":437,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4236,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":438,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4243,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":439,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4244,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":439,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4248,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":440,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4253,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":441,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4260,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":442,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4261,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":442,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4265,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":443,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4270,"page_layout_id":277,"page_layout_root_id":270,"pvalue":{},"section_param_id":444,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4277,"page_layout_id":283,"page_layout_root_id":270,"pvalue":{},"section_param_id":445,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4278,"page_layout_id":286,"page_layout_root_id":270,"pvalue":{},"section_param_id":445,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T04:41:03.000Z","id":4282,"page_layout_id":275,"page_layout_root_id":270,"pvalue":{},"section_param_id":446,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T05:07:38.000Z","id":4290,"page_layout_id":361,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:07:38.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T05:07:38.000Z","id":4291,"page_layout_id":361,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:200px","15unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T05:07:39.000Z","id":4292,"page_layout_id":361,"page_layout_root_id":270,"pvalue":{"15hidden":"1","15unset":"0","15":"height:190px","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T05:07:39.000Z","id":4293,"page_layout_id":361,"page_layout_root_id":270,"pvalue":{"3unset":"0","3":"background-image:howbuy.jpg","4unset":"0","4":"background-position:center center"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T05:07:39.000Z","id":4294,"page_layout_id":361,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:07:39.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T05:11:43.000Z","id":4295,"page_layout_id":362,"page_layout_root_id":270,"pvalue":{},"section_param_id":50,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:11:43.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T05:11:43.000Z","id":4296,"page_layout_id":362,"page_layout_root_id":270,"pvalue":{},"section_param_id":51,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:11:43.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T05:11:43.000Z","id":4297,"page_layout_id":362,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":5,"unset":null,"updated_at":"2014-07-31T14:19:41.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T05:11:43.000Z","id":4298,"page_layout_id":362,"page_layout_root_id":270,"pvalue":{},"section_param_id":53,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:11:43.000Z"},{"computed_pvalue":null,"created_at":"2014-07-27T05:11:43.000Z","id":4299,"page_layout_id":362,"page_layout_root_id":270,"pvalue":{},"section_param_id":54,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:11:43.000Z"}],"page_layouts":[{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:57.000Z","data_filter":"","data_source":"","id":270,"is_enabled":true,"is_full_html":true,"lft":1,"parent_id":null,"rgt":174,"root_id":270,"section_context":"","section_id":75,"section_instance":2,"site_id":2,"slug":"root--3","title":"root","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:57.000Z","data_filter":"","data_source":"","id":271,"is_enabled":true,"is_full_html":false,"lft":2,"parent_id":270,"rgt":11,"root_id":270,"section_context":"","section_id":2,"section_instance":1,"site_id":2,"slug":"header--3","title":"Header","updated_at":"2014-07-22T15:16:20.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":272,"is_enabled":true,"is_full_html":false,"lft":3,"parent_id":271,"rgt":10,"root_id":270,"section_context":"","section_id":2,"section_instance":20,"site_id":2,"slug":"container--30","title":"container","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":273,"is_enabled":true,"is_full_html":false,"lft":4,"parent_id":272,"rgt":5,"root_id":270,"section_context":"","section_id":97,"section_instance":1,"site_id":2,"slug":"logo--3","title":"Logo","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":274,"is_enabled":true,"is_full_html":false,"lft":6,"parent_id":272,"rgt":9,"root_id":270,"section_context":"","section_id":2,"section_instance":21,"site_id":2,"slug":"container--31","title":"container","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":275,"is_enabled":true,"is_full_html":false,"lft":7,"parent_id":274,"rgt":8,"root_id":270,"section_context":"","section_id":101,"section_instance":2,"site_id":2,"slug":"logged-unlogged-menu--3","title":"logged&unlogged menu","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-26T13:01:44.000Z","data_filter":"","data_source":"","id":355,"is_enabled":true,"is_full_html":false,"lft":12,"parent_id":270,"rgt":19,"root_id":270,"section_context":"","section_id":2,"section_instance":37,"site_id":2,"slug":"container37--2","title":"container37","updated_at":"2014-07-26T13:01:44.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":276,"is_enabled":true,"is_full_html":false,"lft":13,"parent_id":355,"rgt":18,"root_id":270,"section_context":"","section_id":2,"section_instance":19,"site_id":2,"slug":"container--32","title":"container","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":277,"is_enabled":true,"is_full_html":false,"lft":14,"parent_id":276,"rgt":15,"root_id":270,"section_context":"","section_id":3,"section_instance":3,"site_id":2,"slug":"main-menu--3","title":"Main menu","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":278,"is_enabled":true,"is_full_html":false,"lft":16,"parent_id":276,"rgt":17,"root_id":270,"section_context":"","section_id":121,"section_instance":1,"site_id":2,"slug":"mini-cart--2","title":"Mini cart","updated_at":"2014-07-27T03:20:52.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-12T04:07:02.000Z","data_filter":"","data_source":"","id":333,"is_enabled":true,"is_full_html":false,"lft":20,"parent_id":270,"rgt":23,"root_id":270,"section_context":"home","section_id":2,"section_instance":26,"site_id":2,"slug":"container--42","title":"container","updated_at":"2014-07-22T14:22:01.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-09T13:01:29.000Z","data_filter":"","data_source":"","id":332,"is_enabled":true,"is_full_html":false,"lft":21,"parent_id":333,"rgt":22,"root_id":270,"section_context":"","section_id":114,"section_instance":1,"site_id":2,"slug":"slider","title":"Slider","updated_at":"2014-07-12T06:27:40.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-27T05:07:38.000Z","data_filter":"","data_source":"","id":361,"is_enabled":true,"is_full_html":false,"lft":24,"parent_id":270,"rgt":27,"root_id":270,"section_context":"list,detail","section_id":2,"section_instance":41,"site_id":2,"slug":"container41","title":"container41","updated_at":"2014-07-27T14:20:43.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-27T05:11:43.000Z","data_filter":"","data_source":"","id":362,"is_enabled":true,"is_full_html":false,"lft":25,"parent_id":361,"rgt":26,"root_id":270,"section_context":"","section_id":11,"section_instance":3,"site_id":2,"slug":"text3--2","title":"text3","updated_at":"2014-07-27T05:11:43.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":279,"is_enabled":true,"is_full_html":false,"lft":28,"parent_id":270,"rgt":165,"root_id":270,"section_context":"","section_id":2,"section_instance":2,"site_id":2,"slug":"content--3","title":"content","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-17T00:19:17.000Z","data_filter":"","data_source":"","id":339,"is_enabled":true,"is_full_html":false,"lft":29,"parent_id":279,"rgt":62,"root_id":270,"section_context":"home","section_id":2,"section_instance":31,"site_id":2,"slug":"container31","title":"container31","updated_at":"2014-07-26T14:40:12.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-17T00:26:45.000Z","data_filter":"","data_source":"","id":340,"is_enabled":true,"is_full_html":false,"lft":30,"parent_id":339,"rgt":51,"root_id":270,"section_context":"","section_id":2,"section_instance":32,"site_id":2,"slug":"leftside","title":"leftside","updated_at":"2014-07-17T00:27:28.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-17T00:28:52.000Z","data_filter":"","data_source":"taxon","id":342,"is_enabled":true,"is_full_html":false,"lft":31,"parent_id":340,"rgt":40,"root_id":270,"section_context":"","section_id":2,"section_instance":31,"site_id":2,"slug":"suits","title":"suits","updated_at":"2014-07-25T12:45:06.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-25T13:58:55.000Z","data_filter":"","data_source":"","id":350,"is_enabled":true,"is_full_html":false,"lft":32,"parent_id":342,"rgt":33,"root_id":270,"section_context":"","section_id":50,"section_instance":2,"site_id":2,"slug":"taxon-name2","title":"taxon name2","updated_at":"2014-07-25T13:58:55.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-25T14:01:47.000Z","data_filter":"","data_source":"","id":351,"is_enabled":true,"is_full_html":false,"lft":34,"parent_id":342,"rgt":39,"root_id":270,"section_context":"","section_id":2,"section_instance":36,"site_id":2,"slug":"container36","title":"container36","updated_at":"2014-07-25T14:01:47.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-24T23:40:52.000Z","data_filter":"","data_source":"gpvs","id":348,"is_enabled":true,"is_full_html":false,"lft":35,"parent_id":351,"rgt":38,"root_id":270,"section_context":"","section_id":2,"section_instance":34,"site_id":2,"slug":"container34","title":"container34","updated_at":"2014-07-24T23:43:30.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-17T09:10:10.000Z","data_filter":"","data_source":"","id":344,"is_enabled":true,"is_full_html":false,"lft":36,"parent_id":348,"rgt":37,"root_id":270,"section_context":"","section_id":17,"section_instance":2,"site_id":2,"slug":"product-image2","title":"product image2","updated_at":"2014-07-17T09:10:10.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-17T00:29:02.000Z","data_filter":"","data_source":"taxon","id":343,"is_enabled":true,"is_full_html":false,"lft":41,"parent_id":340,"rgt":50,"root_id":270,"section_context":"","section_id":2,"section_instance":32,"site_id":2,"slug":"fabrics","title":"fabrics","updated_at":"2014-07-25T12:48:48.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-26T13:30:46.000Z","data_filter":"","data_source":"","id":356,"is_enabled":true,"is_full_html":false,"lft":42,"parent_id":343,"rgt":43,"root_id":270,"section_context":"","section_id":50,"section_instance":3,"site_id":2,"slug":"taxon-name3","title":"taxon name3","updated_at":"2014-07-26T13:30:46.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-26T13:30:57.000Z","data_filter":"","data_source":"","id":357,"is_enabled":true,"is_full_html":false,"lft":44,"parent_id":343,"rgt":49,"root_id":270,"section_context":"","section_id":2,"section_instance":38,"site_id":2,"slug":"container38","title":"container38","updated_at":"2014-07-26T13:30:57.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-24T23:41:13.000Z","data_filter":"","data_source":"gpvs","id":349,"is_enabled":true,"is_full_html":false,"lft":45,"parent_id":357,"rgt":48,"root_id":270,"section_context":"","section_id":2,"section_instance":35,"site_id":2,"slug":"container35","title":"container35","updated_at":"2014-07-24T23:43:38.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-17T09:13:54.000Z","data_filter":"","data_source":"","id":345,"is_enabled":true,"is_full_html":false,"lft":46,"parent_id":349,"rgt":47,"root_id":270,"section_context":"","section_id":17,"section_instance":3,"site_id":2,"slug":"product-image3","title":"product image3","updated_at":"2014-07-17T09:13:54.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-17T00:26:54.000Z","data_filter":"","data_source":"","id":341,"is_enabled":true,"is_full_html":false,"lft":52,"parent_id":339,"rgt":61,"root_id":270,"section_context":"","section_id":2,"section_instance":33,"site_id":2,"slug":"rightside","title":"rightside","updated_at":"2014-07-17T00:27:40.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-26T04:58:58.000Z","data_filter":"","data_source":"","id":353,"is_enabled":true,"is_full_html":false,"lft":53,"parent_id":341,"rgt":60,"root_id":270,"section_context":"","section_id":2,"section_instance":37,"site_id":2,"slug":"container37","title":"container37","updated_at":"2014-07-26T04:58:58.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-26T04:59:54.000Z","data_filter":"","data_source":"","id":354,"is_enabled":true,"is_full_html":false,"lft":54,"parent_id":353,"rgt":55,"root_id":270,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name3","title":"taxonomy name3","updated_at":"2014-07-26T04:59:54.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-17T09:14:54.000Z","data_filter":"","data_source":"taxon","id":346,"is_enabled":true,"is_full_html":false,"lft":56,"parent_id":353,"rgt":59,"root_id":270,"section_context":"","section_id":2,"section_instance":33,"site_id":2,"slug":"container33","title":"container33","updated_at":"2014-07-26T03:15:19.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-26T03:12:37.000Z","data_filter":"","data_source":"","id":352,"is_enabled":true,"is_full_html":false,"lft":57,"parent_id":346,"rgt":58,"root_id":270,"section_context":"","section_id":119,"section_instance":1,"site_id":2,"slug":"taxon-icon1","title":"Taxon icon1","updated_at":"2014-07-26T03:12:37.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":280,"is_enabled":true,"is_full_html":false,"lft":63,"parent_id":279,"rgt":76,"root_id":270,"section_context":"list,detail","section_id":2,"section_instance":4,"site_id":2,"slug":"lftnav--3","title":"lftnav","updated_at":"2014-07-27T02:04:37.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":281,"is_enabled":true,"is_full_html":false,"lft":64,"parent_id":280,"rgt":69,"root_id":270,"section_context":"","section_id":2,"section_instance":12,"site_id":2,"slug":"container--33","title":"container","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":282,"is_enabled":true,"is_full_html":false,"lft":65,"parent_id":281,"rgt":66,"root_id":270,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name--5","title":"taxonomy name","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":283,"is_enabled":true,"is_full_html":false,"lft":67,"parent_id":281,"rgt":68,"root_id":270,"section_context":"","section_id":6,"section_instance":1,"site_id":2,"slug":"vmenu--5","title":"vmenu","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":284,"is_enabled":true,"is_full_html":false,"lft":70,"parent_id":280,"rgt":75,"root_id":270,"section_context":"","section_id":2,"section_instance":13,"site_id":2,"slug":"container--34","title":"container","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":285,"is_enabled":true,"is_full_html":false,"lft":71,"parent_id":284,"rgt":72,"root_id":270,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name--6","title":"taxonomy name","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":286,"is_enabled":true,"is_full_html":false,"lft":73,"parent_id":284,"rgt":74,"root_id":270,"section_context":"","section_id":6,"section_instance":2,"site_id":2,"slug":"vmenu--6","title":"vmenu","updated_at":"2014-07-12T06:27:38.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":287,"is_enabled":true,"is_full_html":false,"lft":77,"parent_id":279,"rgt":162,"root_id":270,"section_context":"","section_id":2,"section_instance":5,"site_id":2,"slug":"main-content--3","title":"main content","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"gpvs","id":288,"is_enabled":true,"is_full_html":false,"lft":78,"parent_id":287,"rgt":87,"root_id":270,"section_context":"list","section_id":2,"section_instance":6,"site_id":2,"slug":"product-list--3","title":"product list","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":289,"is_enabled":true,"is_full_html":false,"lft":79,"parent_id":288,"rgt":86,"root_id":270,"section_context":"","section_id":2,"section_instance":8,"site_id":2,"slug":"container--35","title":"container","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":290,"is_enabled":true,"is_full_html":false,"lft":80,"parent_id":289,"rgt":81,"root_id":270,"section_context":"","section_id":17,"section_instance":1,"site_id":2,"slug":"product-image--3","title":"product image","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":291,"is_enabled":true,"is_full_html":false,"lft":82,"parent_id":289,"rgt":83,"root_id":270,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"product-name--5","title":"product name","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":292,"is_enabled":true,"is_full_html":false,"lft":84,"parent_id":289,"rgt":85,"root_id":270,"section_context":"","section_id":30,"section_instance":2,"site_id":2,"slug":"product-price--5","title":"product price","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"this_product","id":293,"is_enabled":true,"is_full_html":false,"lft":88,"parent_id":287,"rgt":117,"root_id":270,"section_context":"detail","section_id":2,"section_instance":7,"site_id":2,"slug":"product-detail--3","title":"product detail","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":294,"is_enabled":true,"is_full_html":false,"lft":89,"parent_id":293,"rgt":94,"root_id":270,"section_context":"","section_id":2,"section_instance":10,"site_id":2,"slug":"container--36","title":"container","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":295,"is_enabled":true,"is_full_html":false,"lft":90,"parent_id":294,"rgt":91,"root_id":270,"section_context":"","section_id":94,"section_instance":2,"site_id":2,"slug":"image-with-thumbnails--3","title":"image with thumbnails","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":296,"is_enabled":true,"is_full_html":false,"lft":92,"parent_id":294,"rgt":93,"root_id":270,"section_context":"","section_id":28,"section_instance":2,"site_id":2,"slug":"product_properties--3","title":"product_properties","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":297,"is_enabled":true,"is_full_html":false,"lft":95,"parent_id":293,"rgt":112,"root_id":270,"section_context":"","section_id":2,"section_instance":9,"site_id":2,"slug":"container--37","title":"container","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":298,"is_enabled":true,"is_full_html":false,"lft":96,"parent_id":297,"rgt":97,"root_id":270,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"product-name--6","title":"product name","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":300,"is_enabled":true,"is_full_html":false,"lft":98,"parent_id":297,"rgt":111,"root_id":270,"section_context":"","section_id":2,"section_instance":11,"site_id":2,"slug":"container--38","title":"container","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":301,"is_enabled":true,"is_full_html":false,"lft":99,"parent_id":300,"rgt":100,"root_id":270,"section_context":"","section_id":107,"section_instance":1,"site_id":2,"slug":"product-option-values--3","title":"Product option values","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":302,"is_enabled":true,"is_full_html":false,"lft":101,"parent_id":300,"rgt":110,"root_id":270,"section_context":"","section_id":2,"section_instance":25,"site_id":2,"slug":"container--39","title":"container","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":303,"is_enabled":true,"is_full_html":false,"lft":102,"parent_id":302,"rgt":103,"root_id":270,"section_context":"","section_id":30,"section_instance":1,"site_id":2,"slug":"product-price--6","title":"product price","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":304,"is_enabled":true,"is_full_html":false,"lft":104,"parent_id":302,"rgt":109,"root_id":270,"section_context":"","section_id":2,"section_instance":24,"site_id":2,"slug":"container--40","title":"container","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":305,"is_enabled":true,"is_full_html":false,"lft":105,"parent_id":304,"rgt":106,"root_id":270,"section_context":"","section_id":32,"section_instance":2,"site_id":2,"slug":"product-quantity--3","title":"product quantity","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":306,"is_enabled":true,"is_full_html":false,"lft":107,"parent_id":304,"rgt":108,"root_id":270,"section_context":"","section_id":34,"section_instance":2,"site_id":2,"slug":"product-atc--3","title":"product atc","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-27T02:08:02.000Z","data_filter":"","data_source":"","id":359,"is_enabled":true,"is_full_html":false,"lft":113,"parent_id":293,"rgt":116,"root_id":270,"section_context":"","section_id":2,"section_instance":40,"site_id":2,"slug":"container40","title":"container40","updated_at":"2014-07-27T02:08:02.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":299,"is_enabled":true,"is_full_html":false,"lft":114,"parent_id":359,"rgt":115,"root_id":270,"section_context":"","section_id":15,"section_instance":1,"site_id":2,"slug":"product-description--3","title":"product description","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":307,"is_enabled":true,"is_full_html":false,"lft":118,"parent_id":287,"rgt":161,"root_id":270,"section_context":"cart,checkout,thanks,account,signup,login,password","section_id":2,"section_instance":14,"site_id":2,"slug":"other-pages--3","title":"other pages","updated_at":"2014-07-02T13:33:58.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":308,"is_enabled":true,"is_full_html":false,"lft":119,"parent_id":307,"rgt":120,"root_id":270,"section_context":"","section_id":50,"section_instance":1,"site_id":2,"slug":"taxon-name--3","title":"taxon name","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":309,"is_enabled":true,"is_full_html":false,"lft":121,"parent_id":307,"rgt":126,"root_id":270,"section_context":"cart","section_id":36,"section_instance":1,"site_id":2,"slug":"cart--3","title":"cart","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":310,"is_enabled":true,"is_full_html":false,"lft":122,"parent_id":309,"rgt":123,"root_id":270,"section_context":"","section_id":42,"section_instance":2,"site_id":2,"slug":"cart-items--3","title":"cart items","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":311,"is_enabled":true,"is_full_html":false,"lft":124,"parent_id":309,"rgt":125,"root_id":270,"section_context":"","section_id":44,"section_instance":2,"site_id":2,"slug":"order-total-price--3","title":"order total price","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":312,"is_enabled":true,"is_full_html":false,"lft":127,"parent_id":307,"rgt":132,"root_id":270,"section_context":"checkout","section_id":46,"section_instance":2,"site_id":2,"slug":"checkout--3","title":"checkout","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:58.000Z","data_filter":"","data_source":"","id":313,"is_enabled":true,"is_full_html":false,"lft":128,"parent_id":312,"rgt":129,"root_id":270,"section_context":"","section_id":69,"section_instance":1,"site_id":2,"slug":"ship-form--3","title":"ship form","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":314,"is_enabled":true,"is_full_html":false,"lft":130,"parent_id":312,"rgt":131,"root_id":270,"section_context":"","section_id":72,"section_instance":1,"site_id":2,"slug":"payment-form--3","title":"payment form","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":315,"is_enabled":true,"is_full_html":false,"lft":133,"parent_id":307,"rgt":142,"root_id":270,"section_context":"thanks","section_id":2,"section_instance":18,"site_id":2,"slug":"thanks--3","title":"thanks","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":316,"is_enabled":true,"is_full_html":false,"lft":134,"parent_id":315,"rgt":139,"root_id":270,"section_context":"","section_id":2,"section_instance":23,"site_id":2,"slug":"container--41","title":"container","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":317,"is_enabled":true,"is_full_html":false,"lft":135,"parent_id":316,"rgt":136,"root_id":270,"section_context":"","section_id":52,"section_instance":1,"site_id":2,"slug":"order-address--3","title":"order address","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":318,"is_enabled":true,"is_full_html":false,"lft":137,"parent_id":316,"rgt":138,"root_id":270,"section_context":"","section_id":55,"section_instance":1,"site_id":2,"slug":"order-payment--3","title":"order payment","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":319,"is_enabled":true,"is_full_html":false,"lft":140,"parent_id":315,"rgt":141,"root_id":270,"section_context":"","section_id":58,"section_instance":1,"site_id":2,"slug":"order-items--3","title":"order items","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":320,"is_enabled":true,"is_full_html":false,"lft":143,"parent_id":307,"rgt":148,"root_id":270,"section_context":"account","section_id":2,"section_instance":17,"site_id":2,"slug":"account--3","title":"account","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":321,"is_enabled":true,"is_full_html":false,"lft":144,"parent_id":320,"rgt":145,"root_id":270,"section_context":"","section_id":85,"section_instance":1,"site_id":2,"slug":"profile--3","title":"profile","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":322,"is_enabled":true,"is_full_html":false,"lft":146,"parent_id":320,"rgt":147,"root_id":270,"section_context":"","section_id":82,"section_instance":1,"site_id":2,"slug":"order-list--3","title":"order list","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":323,"is_enabled":true,"is_full_html":false,"lft":149,"parent_id":307,"rgt":152,"root_id":270,"section_context":"login","section_id":2,"section_instance":15,"site_id":2,"slug":"login--3","title":"login","updated_at":"2014-07-02T13:33:59.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":324,"is_enabled":true,"is_full_html":false,"lft":150,"parent_id":323,"rgt":151,"root_id":270,"section_context":"","section_id":61,"section_instance":1,"site_id":2,"slug":"login-form--3","title":"login form","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":325,"is_enabled":true,"is_full_html":false,"lft":153,"parent_id":307,"rgt":156,"root_id":270,"section_context":"signup","section_id":2,"section_instance":16,"site_id":2,"slug":"signup--3","title":"signup","updated_at":"2014-07-02T13:33:59.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":326,"is_enabled":true,"is_full_html":false,"lft":154,"parent_id":325,"rgt":155,"root_id":270,"section_context":"","section_id":64,"section_instance":1,"site_id":2,"slug":"sign-up-form--3","title":"sign up form","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":327,"is_enabled":true,"is_full_html":false,"lft":157,"parent_id":307,"rgt":160,"root_id":270,"section_context":"password","section_id":2,"section_instance":22,"site_id":2,"slug":"password--3","title":"password","updated_at":"2014-07-02T13:33:59.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":328,"is_enabled":true,"is_full_html":false,"lft":158,"parent_id":327,"rgt":159,"root_id":270,"section_context":"","section_id":104,"section_instance":1,"site_id":2,"slug":"password-recover-form--3","title":"password recover form","updated_at":"2014-07-12T06:27:39.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-17T09:15:31.000Z","data_filter":"","data_source":"","id":347,"is_enabled":true,"is_full_html":false,"lft":163,"parent_id":279,"rgt":164,"root_id":270,"section_context":"","section_id":11,"section_instance":3,"site_id":2,"slug":"text3","title":"text3","updated_at":"2014-07-17T09:15:31.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":329,"is_enabled":true,"is_full_html":false,"lft":166,"parent_id":270,"rgt":171,"root_id":270,"section_context":"","section_id":2,"section_instance":3,"site_id":2,"slug":"footer--3","title":"footer","updated_at":"2014-07-02T13:33:59.000Z"},{"copy_from_root_id":0,"created_at":"2014-07-26T14:41:26.000Z","data_filter":"","data_source":"","id":358,"is_enabled":true,"is_full_html":false,"lft":167,"parent_id":329,"rgt":170,"root_id":270,"section_context":"","section_id":2,"section_instance":39,"site_id":2,"slug":"container39","title":"container39","updated_at":"2014-07-26T14:41:26.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":330,"is_enabled":true,"is_full_html":false,"lft":168,"parent_id":358,"rgt":169,"root_id":270,"section_context":"","section_id":11,"section_instance":1,"site_id":2,"slug":"copyright--3","title":"copyright","updated_at":"2014-07-02T13:33:59.000Z"},{"copy_from_root_id":208,"created_at":"2014-07-02T13:33:59.000Z","data_filter":"","data_source":"","id":331,"is_enabled":true,"is_full_html":false,"lft":172,"parent_id":270,"rgt":173,"root_id":270,"section_context":"","section_id":90,"section_instance":2,"site_id":2,"slug":"dialog--3","title":"dialog","updated_at":"2014-07-12T06:27:39.000Z"}],"template_files":[{"attachment_content_type":"image/jpeg","attachment_file_name":"6a5e31b1jw1doccdf5tdqj.jpg","attachment_file_size":16469,"attachment_height":null,"attachment_updated_at":"2014-07-09T12:28:20.000Z","attachment_width":null,"created_at":"2014-07-09T12:28:20.000Z","id":18,"theme_id":5},{"attachment_content_type":"image/jpeg","attachment_file_name":"ushan-logo.jpg","attachment_file_size":6834,"attachment_height":null,"attachment_updated_at":"2014-07-09T12:50:23.000Z","attachment_width":null,"created_at":"2014-07-09T12:50:23.000Z","id":19,"theme_id":5},{"attachment_content_type":"image/gif","attachment_file_name":"title_bg.gif","attachment_file_size":1340,"attachment_height":null,"attachment_updated_at":"2014-07-26T01:36:57.000Z","attachment_width":null,"created_at":"2014-07-26T01:36:57.000Z","id":20,"theme_id":5},{"attachment_content_type":"image/jpeg","attachment_file_name":"howbuy.jpg","attachment_file_size":59008,"attachment_height":null,"attachment_updated_at":"2014-07-27T05:59:59.000Z","attachment_width":null,"created_at":"2014-07-27T05:59:59.000Z","id":21,"theme_id":5},{"attachment_content_type":"image/gif","attachment_file_name":"nav_bg_40px.gif","attachment_file_size":255,"attachment_height":null,"attachment_updated_at":"2014-07-27T13:43:43.000Z","attachment_width":null,"created_at":"2014-07-27T13:43:43.000Z","id":22,"theme_id":5},{"attachment_content_type":"image/gif","attachment_file_name":"tab_on_1px.gif","attachment_file_size":452,"attachment_height":null,"attachment_updated_at":"2014-07-27T13:45:16.000Z","attachment_width":null,"created_at":"2014-07-27T13:45:16.000Z","id":23,"theme_id":5},{"attachment_content_type":"image/jpeg","attachment_file_name":"tiao.jpg","attachment_file_size":19840,"attachment_height":null,"attachment_updated_at":"2014-07-27T13:50:26.000Z","attachment_width":null,"created_at":"2014-07-27T13:50:26.000Z","id":24,"theme_id":5},{"attachment_content_type":"image/gif","attachment_file_name":"nav_not.gif","attachment_file_size":519,"attachment_height":null,"attachment_updated_at":"2014-07-28T14:08:34.000Z","attachment_width":null,"created_at":"2014-07-28T14:08:34.000Z","id":25,"theme_id":5}],"template_releases":[{"created_at":"2014-07-26T08:14:33.000Z","id":7,"name":"just a test","theme_id":5,"updated_at":"2014-07-26T08:14:33.000Z"}]} \ No newline at end of file diff --git a/spree_theme/db/themes/designs/2_5_1406820030/6a5e31b1jw1doccdf5tdqj.jpg b/spree_theme/db/themes/designs/2_5_1406820030/6a5e31b1jw1doccdf5tdqj.jpg deleted file mode 100644 index 7fff0f08..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406820030/6a5e31b1jw1doccdf5tdqj.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406820030/howbuy.jpg b/spree_theme/db/themes/designs/2_5_1406820030/howbuy.jpg deleted file mode 100644 index bfeaca08..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406820030/howbuy.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406820030/nav_bg_40px.gif b/spree_theme/db/themes/designs/2_5_1406820030/nav_bg_40px.gif deleted file mode 100644 index c0bffae4..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406820030/nav_bg_40px.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406820030/nav_not.gif b/spree_theme/db/themes/designs/2_5_1406820030/nav_not.gif deleted file mode 100644 index c69d645d..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406820030/nav_not.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406820030/tab_on_1px.gif b/spree_theme/db/themes/designs/2_5_1406820030/tab_on_1px.gif deleted file mode 100644 index 5e4e066e..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406820030/tab_on_1px.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406820030/tiao.jpg b/spree_theme/db/themes/designs/2_5_1406820030/tiao.jpg deleted file mode 100644 index 203d1408..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406820030/tiao.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406820030/title_bg.gif b/spree_theme/db/themes/designs/2_5_1406820030/title_bg.gif deleted file mode 100644 index 26c8046b..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406820030/title_bg.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1406820030/ushan-logo.jpg b/spree_theme/db/themes/designs/2_5_1406820030/ushan-logo.jpg deleted file mode 100644 index 9455e3de..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1406820030/ushan-logo.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1408541541.yml b/spree_theme/db/themes/designs/2_5_1408541541.yml deleted file mode 100644 index 7fa54f2e..00000000 --- a/spree_theme/db/themes/designs/2_5_1408541541.yml +++ /dev/null @@ -1,10487 +0,0 @@ ---- -template: !ruby/object:Spree::TemplateTheme - attributes: - id: 5 - site_id: 2 - page_layout_root_id: 270 - release_id: 7 - title: 服装定制 - slug: '' - assigned_resource_ids: - '273': - :spree/template_file: - - 19 - '275': - :spree/taxon: - - 0 - - 0 - '277': - :spree/taxon: - - 36 - '281': - :spree/taxon: - - 61 - '284': - :spree/taxon: - - 71 - '332': - :spree/taxon: - - 47 - spree/taxon: - - 47 - '335': - :spree/template_text: - - 5 - '343': - :spree/specific_taxon: - - 0 - :spree/taxon: - - 53 - '342': - :spree/specific_taxon: - - 0 - :spree/taxon: - - 52 - '347': - :spree/template_text: - - 6 - '346': - :spree/taxon: - - 0 - '353': - :spree/taxon: - - 54 - '330': - :spree/template_text: - - 7 - '362': - :spree/template_text: - - 8 - created_at: 2014-06-28 10:16:01.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -param_values: -- !ruby/object:Spree::ParamValue - attributes: - id: 3532 - page_layout_root_id: 270 - page_layout_id: 271 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:02.000000000 Z - updated_at: 2014-08-09 07:34:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3533 - page_layout_root_id: 270 - page_layout_id: 271 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:none - 101unset: '0' - 21unset: '0' - '21': width:960px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:02.000000000 Z - updated_at: 2014-08-09 07:34:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3534 - page_layout_root_id: 270 - page_layout_id: 271 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto auto auto - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2014-08-09 07:34:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3535 - page_layout_root_id: 270 - page_layout_id: 271 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2014-08-09 07:34:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &103274600 - id: 3536 - page_layout_root_id: 270 - page_layout_id: 271 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:03.000000000 Z - updated_at: 2014-08-09 07:34:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3537 - page_layout_root_id: 270 - page_layout_id: 279 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-08-09 07:34:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3538 - page_layout_root_id: 270 - page_layout_id: 279 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:none - 101unset: '0' - 21unset: '0' - '21': width:960px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-08-09 07:34:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3539 - page_layout_root_id: 270 - page_layout_id: 279 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3540 - page_layout_root_id: 270 - page_layout_id: 279 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - 2unset: '1' - '2': background-color:yellow - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3541 - page_layout_root_id: 270 - page_layout_id: 279 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:04.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &100363720 - id: 3542 - page_layout_root_id: 270 - page_layout_id: 329 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3543 - page_layout_root_id: 270 - page_layout_id: 329 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3544 - page_layout_root_id: 270 - page_layout_id: 329 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - '7': border-style:solid none none none - 8unset: '0' - '8': border-width:4px 0px 0px 0px - 6unset: '0' - '6': border-color:#2D2D2F transparent transparent transparent - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3545 - page_layout_root_id: 270 - page_layout_id: 329 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - 2unset: '0' - '2': background-color:#F5F5F5 - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3546 - page_layout_root_id: 270 - page_layout_id: 329 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3547 - page_layout_root_id: 270 - page_layout_id: 280 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3548 - page_layout_root_id: 270 - page_layout_id: 280 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:200px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3549 - page_layout_root_id: 270 - page_layout_id: 280 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto 5px auto auto - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB' - 32unset: '0' - '32': padding:10px 10px 10px 10px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3550 - page_layout_root_id: 270 - page_layout_id: 280 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - 2unset: '1' - '2': background-color:#FFF8ED - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:05.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3551 - page_layout_root_id: 270 - page_layout_id: 280 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - 49unset: '1' - '49': color:black - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3552 - page_layout_root_id: 270 - page_layout_id: 287 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3553 - page_layout_root_id: 270 - page_layout_id: 287 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:750px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3554 - page_layout_root_id: 270 - page_layout_id: 287 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3555 - page_layout_root_id: 270 - page_layout_id: 287 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3556 - page_layout_root_id: 270 - page_layout_id: 287 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:06.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3557 - page_layout_root_id: 270 - page_layout_id: 288 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3558 - page_layout_root_id: 270 - page_layout_id: 288 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '1' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3559 - page_layout_root_id: 270 - page_layout_id: 288 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3560 - page_layout_root_id: 270 - page_layout_id: 288 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3561 - page_layout_root_id: 270 - page_layout_id: 288 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3562 - page_layout_root_id: 270 - page_layout_id: 293 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:07.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3563 - page_layout_root_id: 270 - page_layout_id: 293 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '1' - '21': width:200px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3564 - page_layout_root_id: 270 - page_layout_id: 293 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3565 - page_layout_root_id: 270 - page_layout_id: 293 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3566 - page_layout_root_id: 270 - page_layout_id: 293 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3567 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 65 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:08.000000000 Z - updated_at: 2013-04-08 13:27:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3568 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 66 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 15unset: '0' - '15': height:110px - 21unset: '0' - '21': width:150px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &96130400 - id: 3569 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 67 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 32unset: '0' - '32': padding:5px 0px 5px 0px - 15unset: '0' - '15': height:98px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3570 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 68 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3571 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 69 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 53unset: '0' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:09.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3572 - page_layout_root_id: 270 - page_layout_id: 299 - section_param_id: 60 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2013-04-08 13:27:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3573 - page_layout_root_id: 270 - page_layout_id: 299 - section_param_id: 61 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3574 - page_layout_root_id: 270 - page_layout_id: 299 - section_param_id: 62 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:10px 0px 10px 0px - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3575 - page_layout_root_id: 270 - page_layout_id: 299 - section_param_id: 63 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3576 - page_layout_root_id: 270 - page_layout_id: 299 - section_param_id: 64 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 24unset: '0' - '24': font-size:90% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:10.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3577 - page_layout_root_id: 270 - page_layout_id: 330 - section_param_id: 50 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2013-04-08 13:27:11.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3578 - page_layout_root_id: 270 - page_layout_id: 330 - section_param_id: 51 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3579 - page_layout_root_id: 270 - page_layout_id: 330 - section_param_id: 52 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2014-08-09 07:34:34.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3580 - page_layout_root_id: 270 - page_layout_id: 330 - section_param_id: 53 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3581 - page_layout_root_id: 270 - page_layout_id: 330 - section_param_id: 54 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-08 13:27:11.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3582 - page_layout_root_id: 270 - page_layout_id: 289 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - 85unset: '0' - '85': clear:both - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3583 - page_layout_root_id: 270 - page_layout_id: 289 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:160px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:160px - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3584 - page_layout_root_id: 270 - page_layout_id: 289 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto 20px auto - 15unset: '1' - '15': height:140px - 32unset: '1' - '32': padding:0px 0px 0px 0px - 8unset: '1' - '8': border-width:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3585 - page_layout_root_id: 270 - page_layout_id: 289 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3586 - page_layout_root_id: 270 - page_layout_id: 289 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-08 14:05:42.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3587 - page_layout_root_id: 270 - page_layout_id: 297 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3588 - page_layout_root_id: 270 - page_layout_id: 297 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - 21unset: '0' - '21': width:350px - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3589 - page_layout_root_id: 270 - page_layout_id: 297 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3590 - page_layout_root_id: 270 - page_layout_id: 297 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3591 - page_layout_root_id: 270 - page_layout_id: 297 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-09 13:12:32.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3592 - page_layout_root_id: 270 - page_layout_id: 294 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3593 - page_layout_root_id: 270 - page_layout_id: 294 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3594 - page_layout_root_id: 270 - page_layout_id: 294 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto 10px auto auto - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3595 - page_layout_root_id: 270 - page_layout_id: 294 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3596 - page_layout_root_id: 270 - page_layout_id: 294 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-12 13:44:05.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3597 - page_layout_root_id: 270 - page_layout_id: 303 - section_param_id: 110 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-07-30 23:08:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3598 - page_layout_root_id: 270 - page_layout_id: 303 - section_param_id: 111 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3599 - page_layout_root_id: 270 - page_layout_id: 303 - section_param_id: 112 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:10px auto 20px auto - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3600 - page_layout_root_id: 270 - page_layout_id: 303 - section_param_id: 113 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3601 - page_layout_root_id: 270 - page_layout_id: 303 - section_param_id: 114 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 27unset: '0' - '27': font-weight:bolder - 24unset: '0' - '24': font-size:110% - 49unset: '0' - '49': color:#00ADEE - unset: - computed_pvalue: - created_at: 2013-04-13 01:32:40.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3602 - page_layout_root_id: 270 - page_layout_id: 300 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - 85unset: '0' - '85': clear:both - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3603 - page_layout_root_id: 270 - page_layout_id: 300 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '1' - 21unset: '0' - '21': width:450px - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3604 - page_layout_root_id: 270 - page_layout_id: 300 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:40px auto auto auto - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3605 - page_layout_root_id: 270 - page_layout_id: 300 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:25.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3606 - page_layout_root_id: 270 - page_layout_id: 300 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-04-13 02:35:26.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3607 - page_layout_root_id: 270 - page_layout_id: 309 - section_param_id: 125 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2013-04-16 14:20:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3608 - page_layout_root_id: 270 - page_layout_id: 309 - section_param_id: 126 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 21unset: '1' - '21': width:670px - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3609 - page_layout_root_id: 270 - page_layout_id: 309 - section_param_id: 127 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3610 - page_layout_root_id: 270 - page_layout_id: 309 - section_param_id: 128 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3611 - page_layout_root_id: 270 - page_layout_id: 309 - section_param_id: 129 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 53unset: '1' - '53': text-align:right - unset: - computed_pvalue: - created_at: 2013-04-16 14:20:10.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3612 - page_layout_root_id: 270 - page_layout_id: 292 - section_param_id: 110 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:09.000000000 Z - updated_at: 2013-04-19 13:03:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3613 - page_layout_root_id: 270 - page_layout_id: 292 - section_param_id: 111 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 21unset: '0' - '21': width:150px - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3614 - page_layout_root_id: 270 - page_layout_id: 292 - section_param_id: 112 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:5px 0px 0px 0px - 31unset: '0' - '31': margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3615 - page_layout_root_id: 270 - page_layout_id: 292 - section_param_id: 113 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3616 - page_layout_root_id: 270 - page_layout_id: 292 - section_param_id: 114 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - 53unset: '0' - '53': text-align:center - 49unset: '0' - '49': color:#00ADEE - 27unset: '0' - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2013-04-19 13:03:10.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3617 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 27 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3618 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 28 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3619 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 29 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:0px 0px 0px 20px - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:35.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3620 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 30 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3621 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 31 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3622 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 32 - theme_id: 5 - pvalue: - 32unset: '0' - '32': padding:5px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3623 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 33 - theme_id: 5 - pvalue: - 54unset: '0' - '54': text-decoration:none - 24unset: '0' - '24': font-size:90% - 49unset: '0' - '49': color:black - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3624 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 34 - theme_id: 5 - pvalue: - 54unset: '0' - '54': text-decoration:underline - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3625 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 35 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3626 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 36 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:54.000000000 Z - updated_at: 2013-10-02 10:20:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3627 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 37 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &103282020 - id: 3628 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 38 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3629 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 39 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3630 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 40 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3631 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 41 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3632 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 42 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-02 10:20:55.000000000 Z - updated_at: 2013-10-02 10:20:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3633 - page_layout_root_id: 270 - page_layout_id: 281 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3634 - page_layout_root_id: 270 - page_layout_id: 281 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3635 - page_layout_root_id: 270 - page_layout_id: 281 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto 20px auto - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3636 - page_layout_root_id: 270 - page_layout_id: 281 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3637 - page_layout_root_id: 270 - page_layout_id: 281 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:36:48.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3638 - page_layout_root_id: 270 - page_layout_id: 284 - section_param_id: 6 - theme_id: 5 - pvalue: - '86': '1' - 86unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3639 - page_layout_root_id: 270 - page_layout_id: 284 - section_param_id: 7 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '1' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3640 - page_layout_root_id: 270 - page_layout_id: 284 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:55.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3641 - page_layout_root_id: 270 - page_layout_id: 284 - section_param_id: 9 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:56.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3642 - page_layout_root_id: 270 - page_layout_id: 284 - section_param_id: 10 - theme_id: 5 - pvalue: - '15': height:100px - 15unset: '0' - '101': float:left - 101unset: '0' - unset: - computed_pvalue: - created_at: 2013-10-05 00:37:56.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3643 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 27 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2013-10-05 00:38:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3644 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 28 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3645 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 29 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '1' - '31': margin:auto auto auto 20px - 32unset: '0' - '32': padding:0px 0px 0px 20px - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3646 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 30 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3647 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 31 - theme_id: 5 - pvalue: - disabled_ha_ids: '111' - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:16.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3648 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 32 - theme_id: 5 - pvalue: - 32unset: '0' - '32': padding:5px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3649 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 33 - theme_id: 5 - pvalue: - 24unset: '0' - '24': font-size:90% - 49unset: '0' - '49': color:black - 54unset: '0' - '54': text-decoration:none - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3650 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 34 - theme_id: 5 - pvalue: - 54unset: '0' - '54': text-decoration:underline - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3651 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 35 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3652 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 36 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3653 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 37 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3654 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 38 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3655 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 39 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3656 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 40 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3657 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 41 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3658 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 42 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-10-05 00:38:17.000000000 Z - updated_at: 2013-10-05 00:38:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3659 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 210 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2013-11-02 09:20:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3660 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 211 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:360px - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3661 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 212 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:10px 10px 10px 10px - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3662 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 213 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:58.000000000 Z - updated_at: 2013-11-02 09:20:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3663 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 214 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2013-11-02 09:20:59.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3664 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 215 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2013-11-02 09:20:59.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3665 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 216 - theme_id: 5 - pvalue: - 2unset: '1' - '2': background-color:#000000 - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3666 - page_layout_root_id: 270 - page_layout_id: 313 - section_param_id: 217 - theme_id: 5 - pvalue: - 49unset: '0' - '49': color:#00ADEE - 53unset: '0' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2013-11-02 09:20:59.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3667 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 218 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2013-11-02 09:21:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3668 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 219 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:360px - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3669 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 220 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:10px 20px 10px 20px - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 31unset: '0' - '31': margin:10px auto 10px auto - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:08.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3670 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 221 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3671 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 222 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3672 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 223 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3673 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 224 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2013-11-02 09:21:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3674 - page_layout_root_id: 270 - page_layout_id: 314 - section_param_id: 225 - theme_id: 5 - pvalue: - 49unset: '0' - '49': color:#00ADEE - 53unset: '0' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2013-11-02 09:21:09.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3675 - page_layout_root_id: 270 - page_layout_id: 307 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3676 - page_layout_root_id: 270 - page_layout_id: 307 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3677 - page_layout_root_id: 270 - page_layout_id: 307 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3678 - page_layout_root_id: 270 - page_layout_id: 307 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3679 - page_layout_root_id: 270 - page_layout_id: 307 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:35:02.000000000 Z - updated_at: 2013-11-02 09:35:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3680 - page_layout_root_id: 270 - page_layout_id: 308 - section_param_id: 160 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3681 - page_layout_root_id: 270 - page_layout_id: 308 - section_param_id: 161 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3682 - page_layout_root_id: 270 - page_layout_id: 308 - section_param_id: 162 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3683 - page_layout_root_id: 270 - page_layout_id: 308 - section_param_id: 163 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:17.000000000 Z - updated_at: 2013-11-02 09:36:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3684 - page_layout_root_id: 270 - page_layout_id: 308 - section_param_id: 164 - theme_id: 5 - pvalue: - 24unset: '0' - '24': font-size:150% - unset: - computed_pvalue: - created_at: 2013-11-02 09:36:18.000000000 Z - updated_at: 2014-08-09 07:34:36.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3685 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 165 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3686 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 166 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3687 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 167 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto 10px auto 10px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3688 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 168 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3689 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 169 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2013-11-02 09:37:21.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3690 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 170 - theme_id: 5 - pvalue: - 31unset: '0' - '31': margin:auto auto 10px auto - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - 32unset: '0' - '32': padding:5px 0px 5px 0px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:21.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3691 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 171 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:22.000000000 Z - updated_at: 2013-11-02 09:37:22.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3692 - page_layout_root_id: 270 - page_layout_id: 317 - section_param_id: 172 - theme_id: 5 - pvalue: - '27': font-weight:bold - 54unset: '1' - '54': text-decoration:underline - 53unset: '1' - '53': text-align:left - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:22.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3693 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 173 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:30.000000000 Z - updated_at: 2013-11-02 09:37:30.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3694 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 174 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:300px - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3695 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 175 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3696 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 176 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3697 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 177 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3698 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 178 - theme_id: 5 - pvalue: - 31unset: '0' - '31': margin:auto auto 10px auto - 32unset: '0' - '32': padding:5px 0px 5px 0px - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3699 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 179 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2013-11-02 09:37:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3700 - page_layout_root_id: 270 - page_layout_id: 318 - section_param_id: 180 - theme_id: 5 - pvalue: - '27': font-weight:bold - 54unset: '1' - '54': text-decoration:underline - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:31.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3701 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 181 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3702 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 182 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3703 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 183 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3704 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 184 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3705 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 185 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3706 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 186 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3707 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 187 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2013-11-02 09:37:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &103666040 - id: 3708 - page_layout_root_id: 270 - page_layout_id: 319 - section_param_id: 188 - theme_id: 5 - pvalue: - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:40.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3709 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 268 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:51.000000000 Z - updated_at: 2013-11-02 09:37:51.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3710 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 269 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:51.000000000 Z - updated_at: 2013-11-02 09:37:51.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3711 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 270 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3712 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 271 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3713 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 272 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3714 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 273 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3715 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 274 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3716 - page_layout_root_id: 270 - page_layout_id: 321 - section_param_id: 275 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:37:52.000000000 Z - updated_at: 2013-11-02 09:37:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3717 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 260 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3718 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 261 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3719 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 262 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3720 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 263 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3721 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 264 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3722 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 265 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3723 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 266 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:01.000000000 Z - updated_at: 2013-11-02 09:38:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3724 - page_layout_root_id: 270 - page_layout_id: 322 - section_param_id: 267 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:38:02.000000000 Z - updated_at: 2013-11-02 09:38:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3725 - page_layout_root_id: 270 - page_layout_id: 323 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3726 - page_layout_root_id: 270 - page_layout_id: 323 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3727 - page_layout_root_id: 270 - page_layout_id: 323 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3728 - page_layout_root_id: 270 - page_layout_id: 323 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3729 - page_layout_root_id: 270 - page_layout_id: 323 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:01.000000000 Z - updated_at: 2013-11-02 09:39:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3730 - page_layout_root_id: 270 - page_layout_id: 325 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:32.000000000 Z - updated_at: 2013-11-02 09:39:32.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3731 - page_layout_root_id: 270 - page_layout_id: 325 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3732 - page_layout_root_id: 270 - page_layout_id: 325 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3733 - page_layout_root_id: 270 - page_layout_id: 325 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 09:39:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3734 - page_layout_root_id: 270 - page_layout_id: 325 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:33.000000000 Z - updated_at: 2013-11-02 09:39:33.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3735 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 189 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3736 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 190 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3737 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 191 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3738 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 192 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3739 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 193 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3740 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 194 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3741 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 195 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3742 - page_layout_root_id: 270 - page_layout_id: 324 - section_param_id: 196 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:39:53.000000000 Z - updated_at: 2013-11-02 09:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3743 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 197 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3744 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 198 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3745 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 199 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3746 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 200 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3747 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 201 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3748 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 202 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3749 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 203 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3750 - page_layout_root_id: 270 - page_layout_id: 326 - section_param_id: 204 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:40:04.000000000 Z - updated_at: 2013-11-02 09:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3751 - page_layout_root_id: 270 - page_layout_id: 320 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 09:50:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3752 - page_layout_root_id: 270 - page_layout_id: 320 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3753 - page_layout_root_id: 270 - page_layout_id: 320 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3754 - page_layout_root_id: 270 - page_layout_id: 320 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:08.000000000 Z - updated_at: 2013-11-02 09:50:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3755 - page_layout_root_id: 270 - page_layout_id: 320 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:09.000000000 Z - updated_at: 2013-11-02 09:50:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3756 - page_layout_root_id: 270 - page_layout_id: 315 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3757 - page_layout_root_id: 270 - page_layout_id: 315 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3758 - page_layout_root_id: 270 - page_layout_id: 315 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3759 - page_layout_root_id: 270 - page_layout_id: 315 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3760 - page_layout_root_id: 270 - page_layout_id: 315 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-02 09:50:37.000000000 Z - updated_at: 2013-11-02 09:50:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3761 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 11 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:07.000000000 Z - updated_at: 2013-11-05 03:16:07.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3762 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 12 - theme_id: 5 - pvalue: - 21unset: '1' - '21': width:960px - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:07.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3763 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 13 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '1' - '32': padding:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3764 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 14 - theme_id: 5 - pvalue: - 2unset: '1' - '2': background-color:lime - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3765 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 15 - theme_id: 5 - pvalue: - 27unset: '1' - '27': font-weight:bold - 49unset: '1' - '49': color:white - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3766 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 16 - theme_id: 5 - pvalue: - 32unset: '0' - '32': padding:12px 10px 13px 10px - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3767 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 17 - theme_id: 5 - pvalue: - 54unset: '0' - '54': text-decoration:none - 49unset: '0' - '49': color:white - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3768 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 18 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3769 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 19 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3770 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 20 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3771 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 21 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3772 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 22 - theme_id: 5 - pvalue: - 3unset: '0' - '3': background-image:nav_not.gif - 4unset: '0' - '4': background-position:right top - 5unset: '0' - '5': background-repeat:no-repeat - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3773 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 23 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:08.000000000 Z - updated_at: 2013-11-05 03:16:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3774 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 24 - theme_id: 5 - pvalue: - 3unset: '0' - '3': background-image:tab_on_1px.gif - 4unset: '1' - '4': background-position:left top - 5unset: '0' - '5': background-repeat:repeat - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3775 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 25 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2013-11-05 03:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3776 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 26 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-05 03:16:09.000000000 Z - updated_at: 2013-11-05 03:16:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3777 - page_layout_root_id: 270 - page_layout_id: 282 - section_param_id: 135 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:08.000000000 Z - updated_at: 2013-11-25 06:53:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3778 - page_layout_root_id: 270 - page_layout_id: 282 - section_param_id: 136 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:160px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:08.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3779 - page_layout_root_id: 270 - page_layout_id: 282 - section_param_id: 137 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - 32unset: '0' - '32': padding:0px 0px 5px 0px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3780 - page_layout_root_id: 270 - page_layout_id: 282 - section_param_id: 138 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3781 - page_layout_root_id: 270 - page_layout_id: 282 - section_param_id: 139 - theme_id: 5 - pvalue: - 27unset: '0' - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3782 - page_layout_root_id: 270 - page_layout_id: 285 - section_param_id: 135 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3783 - page_layout_root_id: 270 - page_layout_id: 285 - section_param_id: 136 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:160px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3784 - page_layout_root_id: 270 - page_layout_id: 285 - section_param_id: 137 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:0px 0px 5px 0px - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3785 - page_layout_root_id: 270 - page_layout_id: 285 - section_param_id: 138 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2013-11-25 06:53:09.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3786 - page_layout_root_id: 270 - page_layout_id: 285 - section_param_id: 139 - theme_id: 5 - pvalue: - 27unset: '0' - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:09.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3787 - page_layout_root_id: 270 - page_layout_id: 310 - section_param_id: 140 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3788 - page_layout_root_id: 270 - page_layout_id: 310 - section_param_id: 141 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3789 - page_layout_root_id: 270 - page_layout_id: 310 - section_param_id: 142 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3790 - page_layout_root_id: 270 - page_layout_id: 310 - section_param_id: 143 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3791 - page_layout_root_id: 270 - page_layout_id: 310 - section_param_id: 144 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3792 - page_layout_root_id: 270 - page_layout_id: 311 - section_param_id: 145 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:15.000000000 Z - updated_at: 2013-11-25 06:53:15.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3793 - page_layout_root_id: 270 - page_layout_id: 311 - section_param_id: 146 - theme_id: 5 - pvalue: - 101unset: '0' - '101': float:right - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3794 - page_layout_root_id: 270 - page_layout_id: 311 - section_param_id: 147 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:10px auto auto auto - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-08-09 07:34:37.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3795 - page_layout_root_id: 270 - page_layout_id: 311 - section_param_id: 148 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3796 - page_layout_root_id: 270 - page_layout_id: 311 - section_param_id: 149 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &105285340 - id: 3797 - page_layout_root_id: 270 - page_layout_id: 312 - section_param_id: 150 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3798 - page_layout_root_id: 270 - page_layout_id: 312 - section_param_id: 151 - theme_id: 5 - pvalue: - 21unset: '1' - '21': width:600px - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3799 - page_layout_root_id: 270 - page_layout_id: 312 - section_param_id: 152 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3800 - page_layout_root_id: 270 - page_layout_id: 312 - section_param_id: 153 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3801 - page_layout_root_id: 270 - page_layout_id: 312 - section_param_id: 154 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-25 06:53:16.000000000 Z - updated_at: 2013-11-25 06:53:16.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3802 - page_layout_root_id: 270 - page_layout_id: 273 - section_param_id: 323 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:56.000000000 Z - updated_at: 2013-11-29 02:49:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3803 - page_layout_root_id: 270 - page_layout_id: 273 - section_param_id: 324 - theme_id: 5 - pvalue: - 21unset: '1' - '21': width:220px - 101unset: '1' - '101': float:none - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:56.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3804 - page_layout_root_id: 270 - page_layout_id: 273 - section_param_id: 325 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3805 - page_layout_root_id: 270 - page_layout_id: 273 - section_param_id: 326 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2013-11-29 02:49:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3806 - page_layout_root_id: 270 - page_layout_id: 273 - section_param_id: 327 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-11-29 02:49:57.000000000 Z - updated_at: 2013-11-29 02:49:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3807 - page_layout_root_id: 270 - page_layout_id: 276 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:45.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3808 - page_layout_root_id: 270 - page_layout_id: 276 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:none - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:960px - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:45.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3809 - page_layout_root_id: 270 - page_layout_id: 276 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:0px 0px 6px 0px - 7unset: '1' - '7': border-style:none none solid none - 8unset: '1' - '8': border-width:0px 0px 1px 0px - 6unset: '1' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - 31unset: '1' - '31': margin:auto 10px auto 10px - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3810 - page_layout_root_id: 270 - page_layout_id: 276 - section_param_id: 9 - theme_id: 5 - pvalue: - 2unset: '1' - '2': background-color:green - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3811 - page_layout_root_id: 270 - page_layout_id: 276 - section_param_id: 10 - theme_id: 5 - pvalue: - 49unset: '1' - '49': color:teal - 25unset: '1' - '25': font-style:normal - 24unset: '1' - '24': font-size:0% - 27unset: '1' - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2013-12-03 08:14:46.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3817 - page_layout_root_id: 270 - page_layout_id: 272 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3818 - page_layout_root_id: 270 - page_layout_id: 272 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3819 - page_layout_root_id: 270 - page_layout_id: 272 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3820 - page_layout_root_id: 270 - page_layout_id: 272 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-05 08:06:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3821 - page_layout_root_id: 270 - page_layout_id: 272 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:06:08.000000000 Z - updated_at: 2013-12-05 08:06:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3822 - page_layout_root_id: 270 - page_layout_id: 274 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3823 - page_layout_root_id: 270 - page_layout_id: 274 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:right - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3824 - page_layout_root_id: 270 - page_layout_id: 274 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3825 - page_layout_root_id: 270 - page_layout_id: 274 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3826 - page_layout_root_id: 270 - page_layout_id: 274 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2013-12-05 08:11:48.000000000 Z - updated_at: 2013-12-05 08:11:48.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3827 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 226 - theme_id: 5 - pvalue: - '21': width:960px - 21unset: '1' - '20': min-width:960px - 20hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3828 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 227 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3829 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 228 - theme_id: 5 - pvalue: - '85': clear:both - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3830 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 229 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3831 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 230 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:53.000000000 Z - updated_at: 2014-01-22 03:39:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3832 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 231 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3833 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 232 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3834 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 233 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3835 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 234 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3836 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 235 - theme_id: 5 - pvalue: - 31unset: '0' - '31': margin:10px auto 2px auto - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3837 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 236 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3838 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 237 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3839 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 238 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3840 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 239 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3841 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 240 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3842 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 241 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:54.000000000 Z - updated_at: 2014-01-22 03:39:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3843 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 242 - theme_id: 5 - pvalue: - 49unset: '0' - '49': color:red - 24unset: '0' - '24': font-size:82% - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3844 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 243 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3845 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 317 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3846 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 318 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3847 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 319 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3848 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 320 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3849 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 321 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3850 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 322 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3851 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 244 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3852 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 245 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:55.000000000 Z - updated_at: 2014-01-22 03:39:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3853 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 246 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3854 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 247 - theme_id: 5 - pvalue: - 49unset: '1' - '49': color:#00ADEE - 24unset: '1' - '24': font-size:80% - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &107466080 - id: 3855 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 248 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3856 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 249 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-07-30 23:08:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3857 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 250 - theme_id: 5 - pvalue: - 32unset: '0' - '32': padding:5px 10px 5px 10px - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3858 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 251 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3859 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 252 - theme_id: 5 - pvalue: - 2unset: '0' - '2': background-color:#D9D9DB - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3860 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 253 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3861 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 254 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:56.000000000 Z - updated_at: 2014-01-22 03:39:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3862 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 255 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3863 - page_layout_root_id: 270 - page_layout_id: 270 - section_param_id: 256 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3864 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 55 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3865 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 56 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:150px - 15unset: '0' - '15': height:34px - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3866 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 57 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '0' - '15': height:33px - 32unset: '1' - '32': padding:0px 0px 0px 0px - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #BBBBBB transparent' - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3867 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 58 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3868 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 59 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3869 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 294 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3870 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 295 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-01-22 03:39:57.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3871 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 296 - theme_id: 5 - pvalue: - 49unset: '0' - '49': color:#BBBBBB - 27unset: '0' - '27': font-weight:bold - 24unset: '0' - '24': font-size:80% - 54unset: '0' - '54': text-decoration:none - 53unset: '0' - '53': text-align:center - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:57.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3872 - page_layout_root_id: 270 - page_layout_id: 291 - section_param_id: 297 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:39:58.000000000 Z - updated_at: 2014-01-22 03:39:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3873 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 105 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3874 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 106 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3875 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 107 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-07-31 13:50:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3876 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 108 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3877 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 109 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-01-22 03:40:00.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3878 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 302 - theme_id: 5 - pvalue: - 32unset: '0' - '32': padding:5px 5px 5px 5px - 7unset: '0' - '7': border-style:solid none solid none - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3879 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 303 - theme_id: 5 - pvalue: - 2unset: '0' - '2': background-color:transparent - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:00.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3880 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 304 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3881 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 305 - theme_id: 5 - pvalue: - 27unset: '0' - '27': font-weight:bold - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3882 - page_layout_root_id: 270 - page_layout_id: 296 - section_param_id: 306 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3883 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 55 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3884 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 56 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3885 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 57 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '1' - '32': padding:0px 0px 0px 0px - 7unset: '0' - '7': border-style:none none solid none - 8unset: '0' - '8': border-width:0px 0px 1px 0px - 6unset: '0' - '6': ! 'border-color:transparent transparent #D9D9DB transparent' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3886 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 58 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3887 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 59 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3888 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 294 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: &118524550 - id: 3889 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 295 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:01.000000000 Z - updated_at: 2014-01-22 03:40:01.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3890 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 296 - theme_id: 5 - pvalue: - 49unset: '0' - '49': color:black - 54unset: '0' - '54': text-decoration:none - 27unset: '0' - '27': font-weight:bold - 24unset: '0' - '24': font-size:150% - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3891 - page_layout_root_id: 270 - page_layout_id: 298 - section_param_id: 297 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3892 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 115 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3893 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 116 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3894 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 117 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3895 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 118 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3896 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 119 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3897 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 307 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:60px - 7unset: '0' - '7': border-style:solid solid solid solid - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 32unset: '0' - '32': padding:7px 10px 7px 10px - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3898 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 308 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:02.000000000 Z - updated_at: 2014-01-22 03:40:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3899 - page_layout_root_id: 270 - page_layout_id: 305 - section_param_id: 309 - theme_id: 5 - pvalue: - 53unset: '0' - '53': text-align:left - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-08-09 07:34:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3900 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 120 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3901 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 121 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3902 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 122 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto auto 5px - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3903 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 123 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3904 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 124 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-01-22 03:40:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3905 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 310 - theme_id: 5 - pvalue: - 32unset: '0' - '32': padding:7px 10px 7px 10px - 7unset: '1' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#008ABD #008ABD #008ABD #008ABD' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3906 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 311 - theme_id: 5 - pvalue: - 2unset: '0' - '2': background-color:#00ADEE - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3907 - page_layout_root_id: 270 - page_layout_id: 306 - section_param_id: 312 - theme_id: 5 - pvalue: - 49unset: '0' - '49': color:white - 24unset: '1' - '24': font-size:14em - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3908 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 284 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-01-22 03:40:04.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3909 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 285 - theme_id: 5 - pvalue: - '21': width:600px - 21unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3910 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 286 - theme_id: 5 - pvalue: - '7': border-style:solid solid solid solid - 7unset: '0' - '8': border-width:1px 1px 1px 1px - 8unset: '0' - '6': ! 'border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC' - 6unset: '0' - '15': height:598px - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3911 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 287 - theme_id: 5 - pvalue: - '2': background-color:#FFFFFF - 2unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3912 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 288 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: -- !ruby/object:Spree::ParamValue - attributes: - id: 3913 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 313 - theme_id: 5 - pvalue: - '32': padding:2px 2px 2px 2px - 32unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3914 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 314 - theme_id: 5 - pvalue: - '2': background-color:#EEEEEE - 2unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:04.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3915 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 315 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:05.000000000 Z - updated_at: 2014-01-22 03:40:05.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3916 - page_layout_root_id: 270 - page_layout_id: 331 - section_param_id: 316 - theme_id: 5 - pvalue: - '32': padding:0 10px 5px 10px - 32unset: '0' - unset: - computed_pvalue: - created_at: 2014-01-22 03:40:05.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3917 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 333 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3918 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 334 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3919 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 335 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3920 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 336 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3921 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 337 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3922 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 338 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3923 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 339 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3924 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 340 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3925 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 341 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3926 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 342 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3927 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 343 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3928 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 344 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3929 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 345 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3930 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 346 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3931 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 347 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3932 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 348 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-01-22 14:00:12.000000000 Z - updated_at: 2014-01-22 14:00:12.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3933 - page_layout_root_id: 270 - page_layout_id: 327 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3934 - page_layout_root_id: 270 - page_layout_id: 327 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3935 - page_layout_root_id: 270 - page_layout_id: 327 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3936 - page_layout_root_id: 270 - page_layout_id: 327 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3937 - page_layout_root_id: 270 - page_layout_id: 327 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:03:39.000000000 Z - updated_at: 2014-02-19 13:03:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3938 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 349 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: *96130400 -- !ruby/object:Spree::ParamValue - attributes: - id: 3940 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 351 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3941 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 352 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3942 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 353 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3943 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 354 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3944 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 355 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3945 - page_layout_root_id: 270 - page_layout_id: 328 - section_param_id: 356 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-19 13:12:08.000000000 Z - updated_at: 2014-02-19 13:12:08.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3946 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 289 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3947 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 290 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3948 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 291 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3949 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 292 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3950 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 293 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-02-23 13:34:50.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3951 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 299 - theme_id: 5 - pvalue: - 32unset: '0' - '32': padding:5px 10px 5px 10px - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3952 - page_layout_root_id: 270 - page_layout_id: 295 - section_param_id: 301 - theme_id: 5 - pvalue: - 32unset: '0' - '32': padding:5px 5px 5px 5px - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB' - 31unset: '0' - '31': margin:6px 6px 6px auto - unset: - computed_pvalue: - created_at: 2014-02-23 13:34:50.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3953 - page_layout_root_id: 270 - page_layout_id: 316 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3954 - page_layout_root_id: 270 - page_layout_id: 316 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '0' - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3955 - page_layout_root_id: 270 - page_layout_id: 316 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3956 - page_layout_root_id: 270 - page_layout_id: 316 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3957 - page_layout_root_id: 270 - page_layout_id: 316 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-04 14:20:03.000000000 Z - updated_at: 2014-03-04 14:20:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3958 - page_layout_root_id: 270 - page_layout_id: 301 - section_param_id: 357 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3959 - page_layout_root_id: 270 - page_layout_id: 301 - section_param_id: 358 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3960 - page_layout_root_id: 270 - page_layout_id: 301 - section_param_id: 359 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3961 - page_layout_root_id: 270 - page_layout_id: 301 - section_param_id: 360 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3962 - page_layout_root_id: 270 - page_layout_id: 301 - section_param_id: 361 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:19:56.000000000 Z - updated_at: 2014-03-06 13:19:56.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3963 - page_layout_root_id: 270 - page_layout_id: 304 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3964 - page_layout_root_id: 270 - page_layout_id: 304 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:230px - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3965 - page_layout_root_id: 270 - page_layout_id: 304 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3966 - page_layout_root_id: 270 - page_layout_id: 304 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:42:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3967 - page_layout_root_id: 270 - page_layout_id: 304 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 13:42:19.000000000 Z - updated_at: 2014-03-06 13:42:19.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3968 - page_layout_root_id: 270 - page_layout_id: 302 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - '85': clear:both - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3969 - page_layout_root_id: 270 - page_layout_id: 302 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3970 - page_layout_root_id: 270 - page_layout_id: 302 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3971 - page_layout_root_id: 270 - page_layout_id: 302 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:17:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3972 - page_layout_root_id: 270 - page_layout_id: 302 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-03-06 15:17:45.000000000 Z - updated_at: 2014-03-06 15:17:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3976 - page_layout_root_id: 270 - page_layout_id: 290 - section_param_id: 404 - theme_id: 5 - pvalue: - 84unset: '1' - '84': product - unset: - computed_pvalue: - created_at: 2014-07-04 12:47:18.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3977 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 388 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-09 13:01:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3978 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 389 - theme_id: 5 - pvalue: - '21': width:960px - 21unset: '0' - 15unset: '1' - '15': height:480px - 101unset: '0' - '101': float:none - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3979 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 390 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '1' - '15': height:480px - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3980 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 391 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-09 13:01:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3981 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 392 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-09 13:01:29.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3982 - page_layout_root_id: 270 - page_layout_id: 332 - section_param_id: 393 - theme_id: 5 - pvalue: - '78': width:960px - '79': height:300px - 78unset: '0' - 79unset: '0' - unset: - computed_pvalue: - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3983 - page_layout_root_id: 270 - page_layout_id: 333 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 04:07:03.000000000 Z - updated_at: *103274600 -- !ruby/object:Spree::ParamValue - attributes: - id: 3984 - page_layout_root_id: 270 - page_layout_id: 333 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:300px - 15unset: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-07-12 04:07:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3985 - page_layout_root_id: 270 - page_layout_id: 333 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '1' - '15': height:295px - 31unset: '0' - '31': margin:auto auto 5px auto - unset: - computed_pvalue: - created_at: 2014-07-12 04:07:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3986 - page_layout_root_id: 270 - page_layout_id: 333 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 04:07:03.000000000 Z - updated_at: 2014-07-12 04:07:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3987 - page_layout_root_id: 270 - page_layout_id: 333 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 04:07:03.000000000 Z - updated_at: 2014-07-12 04:07:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3993 - page_layout_root_id: 270 - page_layout_id: 335 - section_param_id: 50 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 05:05:49.000000000 Z - updated_at: 2014-07-12 05:05:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3994 - page_layout_root_id: 270 - page_layout_id: 335 - section_param_id: 51 - theme_id: 5 - pvalue: - *100363720: '0' - '101': float:none - 21unset: '0' - '21': width:800px - unset: - computed_pvalue: - created_at: 2014-07-12 05:05:49.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3995 - page_layout_root_id: 270 - page_layout_id: 335 - section_param_id: 52 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-12 05:05:49.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3996 - page_layout_root_id: 270 - page_layout_id: 335 - section_param_id: 53 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 05:05:49.000000000 Z - updated_at: 2014-07-12 05:05:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 3997 - page_layout_root_id: 270 - page_layout_id: 335 - section_param_id: 54 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-12 05:05:49.000000000 Z - updated_at: 2014-07-12 05:05:49.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4003 - page_layout_root_id: 270 - page_layout_id: 337 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:03.000000000 Z - updated_at: 2014-07-17 00:16:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4004 - page_layout_root_id: 270 - page_layout_id: 337 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '0' - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4005 - page_layout_root_id: 270 - page_layout_id: 337 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:03.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4006 - page_layout_root_id: 270 - page_layout_id: 337 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:03.000000000 Z - updated_at: 2014-07-17 00:16:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4007 - page_layout_root_id: 270 - page_layout_id: 337 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:03.000000000 Z - updated_at: 2014-07-17 00:16:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4008 - page_layout_root_id: 270 - page_layout_id: 338 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:13.000000000 Z - updated_at: 2014-07-17 00:16:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4009 - page_layout_root_id: 270 - page_layout_id: 338 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '0' - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:13.000000000 Z - updated_at: 2014-08-09 07:34:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4010 - page_layout_root_id: 270 - page_layout_id: 338 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:13.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4011 - page_layout_root_id: 270 - page_layout_id: 338 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:13.000000000 Z - updated_at: 2014-07-17 00:16:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4012 - page_layout_root_id: 270 - page_layout_id: 338 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:16:13.000000000 Z - updated_at: 2014-07-17 00:16:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4013 - page_layout_root_id: 270 - page_layout_id: 339 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4014 - page_layout_root_id: 270 - page_layout_id: 339 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - *103282020: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4015 - page_layout_root_id: 270 - page_layout_id: 339 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4016 - page_layout_root_id: 270 - page_layout_id: 339 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-07-17 00:19:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4017 - page_layout_root_id: 270 - page_layout_id: 339 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-07-17 00:19:17.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4018 - page_layout_root_id: 270 - page_layout_id: 340 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-07-17 00:26:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4019 - page_layout_root_id: 270 - page_layout_id: 340 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:655px - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4020 - page_layout_root_id: 270 - page_layout_id: 340 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4021 - page_layout_root_id: 270 - page_layout_id: 340 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-07-17 00:26:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4022 - page_layout_root_id: 270 - page_layout_id: 340 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-07-17 00:26:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4023 - page_layout_root_id: 270 - page_layout_id: 341 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:54.000000000 Z - updated_at: 2014-07-17 00:26:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4024 - page_layout_root_id: 270 - page_layout_id: 341 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:right - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '1' - '21': width:360px - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:55.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4025 - page_layout_root_id: 270 - page_layout_id: 341 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '1' - '15': height:100px - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:55.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4026 - page_layout_root_id: 270 - page_layout_id: 341 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:55.000000000 Z - updated_at: 2014-07-17 00:26:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4027 - page_layout_root_id: 270 - page_layout_id: 341 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:26:55.000000000 Z - updated_at: 2014-07-17 00:26:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4028 - page_layout_root_id: 270 - page_layout_id: 342 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '1' - '85': clear:none - unset: - computed_pvalue: - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4029 - page_layout_root_id: 270 - page_layout_id: 342 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4030 - page_layout_root_id: 270 - page_layout_id: 342 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB' - unset: - computed_pvalue: - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4031 - page_layout_root_id: 270 - page_layout_id: 342 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-07-17 00:28:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4032 - page_layout_root_id: 270 - page_layout_id: 342 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-07-17 00:28:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4033 - page_layout_root_id: 270 - page_layout_id: 343 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:29:03.000000000 Z - updated_at: 2014-07-17 00:29:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4034 - page_layout_root_id: 270 - page_layout_id: 343 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-07-17 00:29:03.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4035 - page_layout_root_id: 270 - page_layout_id: 343 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB' - 32unset: '1' - '32': padding:0px 0px 0px 0px - 31unset: '0' - '31': margin:5px auto auto auto - unset: - computed_pvalue: - created_at: 2014-07-17 00:29:03.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4036 - page_layout_root_id: 270 - page_layout_id: 343 - section_param_id: 9 - theme_id: 5 - pvalue: - 3unset: '1' - '3': background-image:none - unset: - computed_pvalue: - created_at: 2014-07-17 00:29:03.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4037 - page_layout_root_id: 270 - page_layout_id: 343 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 00:29:03.000000000 Z - updated_at: 2014-07-17 00:29:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4038 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 65 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4039 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 66 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4040 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 67 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4041 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 68 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4042 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 69 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4043 - page_layout_root_id: 270 - page_layout_id: 344 - section_param_id: 404 - theme_id: 5 - pvalue: - 84unset: '0' - '84': product - unset: - computed_pvalue: - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4044 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 65 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4045 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 66 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4046 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 67 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4047 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 68 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4048 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 69 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4049 - page_layout_root_id: 270 - page_layout_id: 345 - section_param_id: 404 - theme_id: 5 - pvalue: - 84unset: '0' - '84': product - unset: - computed_pvalue: - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4050 - page_layout_root_id: 270 - page_layout_id: 346 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-07-17 09:14:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4051 - page_layout_root_id: 270 - page_layout_id: 346 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4052 - page_layout_root_id: 270 - page_layout_id: 346 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:18px 5px 5px 5px - unset: - computed_pvalue: - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4053 - page_layout_root_id: 270 - page_layout_id: 346 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-07-17 09:14:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4054 - page_layout_root_id: 270 - page_layout_id: 346 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-07-17 09:14:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4055 - page_layout_root_id: 270 - page_layout_id: 347 - section_param_id: 50 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-07-17 09:15:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4056 - page_layout_root_id: 270 - page_layout_id: 347 - section_param_id: 51 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4057 - page_layout_root_id: 270 - page_layout_id: 347 - section_param_id: 52 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB' - 32unset: '0' - '32': padding:5px 5px 5px 5px - 31unset: '0' - '31': margin:5px auto auto auto - unset: - computed_pvalue: - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4058 - page_layout_root_id: 270 - page_layout_id: 347 - section_param_id: 53 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-07-17 09:15:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4059 - page_layout_root_id: 270 - page_layout_id: 347 - section_param_id: 54 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-07-17 09:15:31.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4060 - page_layout_root_id: 270 - page_layout_id: 348 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4061 - page_layout_root_id: 270 - page_layout_id: 348 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4062 - page_layout_root_id: 270 - page_layout_id: 348 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4063 - page_layout_root_id: 270 - page_layout_id: 348 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-07-24 23:40:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4064 - page_layout_root_id: 270 - page_layout_id: 348 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-07-24 23:40:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4065 - page_layout_root_id: 270 - page_layout_id: 349 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '0' - '85': clear:none - unset: - computed_pvalue: - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4066 - page_layout_root_id: 270 - page_layout_id: 349 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4067 - page_layout_root_id: 270 - page_layout_id: 349 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4068 - page_layout_root_id: 270 - page_layout_id: 349 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-07-24 23:41:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4069 - page_layout_root_id: 270 - page_layout_id: 349 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-07-24 23:41:13.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4070 - page_layout_root_id: 270 - page_layout_id: 350 - section_param_id: 160 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-07-25 13:58:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4071 - page_layout_root_id: 270 - page_layout_id: 350 - section_param_id: 161 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4072 - page_layout_root_id: 270 - page_layout_id: 350 - section_param_id: 162 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:8px 5px 8px 28px - unset: - computed_pvalue: - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4073 - page_layout_root_id: 270 - page_layout_id: 350 - section_param_id: 163 - theme_id: 5 - pvalue: - 3unset: '0' - '3': background-image:tiao.jpg - 2unset: '0' - '2': background-color:#F8F8F8 - unset: - computed_pvalue: - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4074 - page_layout_root_id: 270 - page_layout_id: 350 - section_param_id: 164 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-07-25 13:58:55.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4075 - page_layout_root_id: 270 - page_layout_id: 351 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-07-25 14:01:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4076 - page_layout_root_id: 270 - page_layout_id: 351 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': *103666040 - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4077 - page_layout_root_id: 270 - page_layout_id: 351 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-08-09 07:34:40.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4078 - page_layout_root_id: 270 - page_layout_id: 351 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-07-25 14:01:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4079 - page_layout_root_id: 270 - page_layout_id: 351 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-07-25 14:01:47.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4080 - page_layout_root_id: 270 - page_layout_id: 352 - section_param_id: 405 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 03:12:38.000000000 Z - updated_at: 2014-07-26 03:12:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4081 - page_layout_root_id: 270 - page_layout_id: 352 - section_param_id: 406 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 03:12:38.000000000 Z - updated_at: 2014-07-26 03:12:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4082 - page_layout_root_id: 270 - page_layout_id: 352 - section_param_id: 407 - theme_id: 5 - pvalue: - 15hidden: '1' - 31unset: '0' - '31': margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: 2014-07-26 03:12:38.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4083 - page_layout_root_id: 270 - page_layout_id: 352 - section_param_id: 408 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 03:12:38.000000000 Z - updated_at: 2014-07-26 03:12:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4084 - page_layout_root_id: 270 - page_layout_id: 352 - section_param_id: 409 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 03:12:38.000000000 Z - updated_at: 2014-07-26 03:12:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4085 - page_layout_root_id: 270 - page_layout_id: 353 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-07-26 04:58:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4086 - page_layout_root_id: 270 - page_layout_id: 353 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4087 - page_layout_root_id: 270 - page_layout_id: 353 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '0' - '7': border-style:solid solid solid solid - 8unset: '0' - '8': border-width:1px 1px 1px 1px - 6unset: '0' - '6': ! 'border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB' - 32unset: '1' - '32': padding:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4088 - page_layout_root_id: 270 - page_layout_id: 353 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-07-26 04:58:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4089 - page_layout_root_id: 270 - page_layout_id: 353 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-07-26 04:58:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4090 - page_layout_root_id: 270 - page_layout_id: 354 - section_param_id: 135 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-07-26 04:59:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4091 - page_layout_root_id: 270 - page_layout_id: 354 - section_param_id: 136 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4092 - page_layout_root_id: 270 - page_layout_id: 354 - section_param_id: 137 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:8px 5px 8px 28px - unset: - computed_pvalue: - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4093 - page_layout_root_id: 270 - page_layout_id: 354 - section_param_id: 138 - theme_id: 5 - pvalue: - 2unset: '1' - '2': background-color:#F8F8F8 - 3unset: '0' - '3': background-image:tiao.jpg - unset: - computed_pvalue: - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4094 - page_layout_root_id: 270 - page_layout_id: 354 - section_param_id: 139 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-07-26 04:59:54.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4095 - page_layout_root_id: 270 - page_layout_id: 355 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:01:44.000000000 Z - updated_at: 2014-07-26 13:01:44.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4096 - page_layout_root_id: 270 - page_layout_id: 355 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:40px - 15unset: '0' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-07-26 13:01:44.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4097 - page_layout_root_id: 270 - page_layout_id: 355 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '0' - '15': height:40px - unset: - computed_pvalue: - created_at: 2014-07-26 13:01:45.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4098 - page_layout_root_id: 270 - page_layout_id: 355 - section_param_id: 9 - theme_id: 5 - pvalue: - 3unset: '0' - '3': background-image:nav_bg_40px.gif - 2unset: '1' - '2': background-color:black - unset: - computed_pvalue: - created_at: 2014-07-26 13:01:45.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4099 - page_layout_root_id: 270 - page_layout_id: 355 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:01:45.000000000 Z - updated_at: 2014-07-26 13:01:45.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4100 - page_layout_root_id: 270 - page_layout_id: 356 - section_param_id: 160 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-07-26 13:30:46.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4101 - page_layout_root_id: 270 - page_layout_id: 356 - section_param_id: 161 - theme_id: 5 - pvalue: - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4102 - page_layout_root_id: 270 - page_layout_id: 356 - section_param_id: 162 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:8px 5px 8px 28px - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4103 - page_layout_root_id: 270 - page_layout_id: 356 - section_param_id: 163 - theme_id: 5 - pvalue: - 3unset: '0' - '3': background-image:tiao.jpg - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4104 - page_layout_root_id: 270 - page_layout_id: 356 - section_param_id: 164 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-07-26 13:30:46.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4105 - page_layout_root_id: 270 - page_layout_id: 357 - section_param_id: 6 - theme_id: 5 - pvalue: - 85unset: '1' - '85': clear:none - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:57.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4106 - page_layout_root_id: 270 - page_layout_id: 357 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:57.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4107 - page_layout_root_id: 270 - page_layout_id: 357 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:57.000000000 Z - updated_at: 2014-08-09 07:34:41.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4108 - page_layout_root_id: 270 - page_layout_id: 357 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:58.000000000 Z - updated_at: 2014-07-26 13:30:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4109 - page_layout_root_id: 270 - page_layout_id: 357 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 13:30:58.000000000 Z - updated_at: 2014-07-26 13:30:58.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4110 - page_layout_root_id: 270 - page_layout_id: 358 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-07-26 14:41:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4111 - page_layout_root_id: 270 - page_layout_id: 358 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:none - 101unset: '0' - '15': height:100px - 15unset: '1' - 21unset: '0' - '21': width:960px - unset: - computed_pvalue: - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4112 - page_layout_root_id: 270 - page_layout_id: 358 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 7unset: '1' - '7': border-style:solid none none none - 8unset: '1' - '8': border-width:4px 0px 0px 0px - 6unset: '1' - '6': border-color:#2D2D2F transparent transparent transparent - unset: - computed_pvalue: - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4113 - page_layout_root_id: 270 - page_layout_id: 358 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-07-26 14:41:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4114 - page_layout_root_id: 270 - page_layout_id: 358 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-07-26 14:41:26.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4115 - page_layout_root_id: 270 - page_layout_id: 359 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-07-27 02:08:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4116 - page_layout_root_id: 270 - page_layout_id: 359 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:100px - 15unset: '1' - unset: - computed_pvalue: - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4117 - page_layout_root_id: 270 - page_layout_id: 359 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4118 - page_layout_root_id: 270 - page_layout_id: 359 - section_param_id: 9 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-07-27 02:08:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4119 - page_layout_root_id: 270 - page_layout_id: 359 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-07-27 02:08:02.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4120 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 410 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-07-27 03:20:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4121 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 411 - theme_id: 5 - pvalue: - 101unset: '0' - '101': float:right - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4122 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 412 - theme_id: 5 - pvalue: - 15hidden: '1' - 32unset: '0' - '32': padding:12px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4123 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 413 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-07-27 03:20:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4124 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 414 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-07-27 03:20:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4125 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 415 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:52.000000000 Z - updated_at: 2014-07-27 03:20:52.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4126 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 416 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:53.000000000 Z - updated_at: 2014-07-27 03:20:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4127 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 417 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:53.000000000 Z - updated_at: 2014-07-27 03:20:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4128 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 418 - theme_id: 5 - pvalue: - 49unset: '0' - '49': color:white - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:53.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4129 - page_layout_root_id: 270 - page_layout_id: 278 - section_param_id: 419 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 03:20:53.000000000 Z - updated_at: 2014-07-27 03:20:53.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4134 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 420 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4141 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 421 - theme_id: 5 - pvalue: - 32unset: '1' - '32': padding:0px 0px 0px 0px - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4142 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 421 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4146 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 422 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4151 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 423 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4158 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 424 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4159 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 424 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4163 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 425 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4168 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 426 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4175 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 427 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4176 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 427 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4180 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 428 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: *105285340 -- !ruby/object:Spree::ParamValue - attributes: - id: 4185 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 429 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4192 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 430 - theme_id: 5 - pvalue: - 32unset: '0' - '32': padding:5px 0px 0px 15px - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4193 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 430 - theme_id: 5 - pvalue: - 32unset: '0' - '32': padding:5px 0px 0px 15px - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4197 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 431 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4202 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 432 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4209 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 433 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4210 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 433 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4214 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 434 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4219 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 435 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4226 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 436 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4227 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 436 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4231 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 437 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4236 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 438 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4243 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 439 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4244 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 439 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4248 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 440 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4253 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 441 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4260 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 442 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4261 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 442 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4265 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 443 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4270 - page_layout_root_id: 270 - page_layout_id: 277 - section_param_id: 444 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4277 - page_layout_root_id: 270 - page_layout_id: 283 - section_param_id: 445 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4278 - page_layout_root_id: 270 - page_layout_id: 286 - section_param_id: 445 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4282 - page_layout_root_id: 270 - page_layout_id: 275 - section_param_id: 446 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 04:41:03.000000000 Z - updated_at: 2014-07-27 04:41:03.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4290 - page_layout_root_id: 270 - page_layout_id: 361 - section_param_id: 6 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:07:38.000000000 Z - updated_at: 2014-07-27 05:07:38.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4291 - page_layout_root_id: 270 - page_layout_id: 361 - section_param_id: 7 - theme_id: 5 - pvalue: - '101': float:left - 101unset: '0' - '15': height:200px - 15unset: '0' - 21unset: '0' - '21': width:100% - unset: - computed_pvalue: - created_at: 2014-07-27 05:07:38.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4292 - page_layout_root_id: 270 - page_layout_id: 361 - section_param_id: 8 - theme_id: 5 - pvalue: - 15hidden: '1' - 15unset: '0' - '15': height:190px - 31unset: '0' - '31': margin:auto auto 10px auto - unset: - computed_pvalue: - created_at: 2014-07-27 05:07:39.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4293 - page_layout_root_id: 270 - page_layout_id: 361 - section_param_id: 9 - theme_id: 5 - pvalue: - 3unset: '0' - '3': background-image:howbuy.jpg - 4unset: '0' - '4': background-position:center center - unset: - computed_pvalue: - created_at: 2014-07-27 05:07:39.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4294 - page_layout_root_id: 270 - page_layout_id: 361 - section_param_id: 10 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:07:39.000000000 Z - updated_at: 2014-07-27 05:07:39.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4295 - page_layout_root_id: 270 - page_layout_id: 362 - section_param_id: 50 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4296 - page_layout_root_id: 270 - page_layout_id: 362 - section_param_id: 51 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4297 - page_layout_root_id: 270 - page_layout_id: 362 - section_param_id: 52 - theme_id: 5 - pvalue: - 15hidden: '1' - unset: - computed_pvalue: - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-08-09 07:34:42.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4298 - page_layout_root_id: 270 - page_layout_id: 362 - section_param_id: 53 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z -- !ruby/object:Spree::ParamValue - attributes: - id: 4299 - page_layout_root_id: 270 - page_layout_id: 362 - section_param_id: 54 - theme_id: 5 - pvalue: {} - unset: - computed_pvalue: - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z -page_layouts: -- !ruby/object:Spree::PageLayout - attributes: - id: 270 - site_id: 2 - root_id: 270 - parent_id: - lft: 1 - rgt: 174 - title: root - slug: root--3 - section_id: 75 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: true - created_at: 2014-07-02 13:33:57.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 271 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 2 - rgt: 11 - title: Header - slug: header--3 - section_id: 2 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:57.000000000 Z - updated_at: 2014-07-22 15:16:20.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 272 - site_id: 2 - root_id: 270 - parent_id: 271 - lft: 3 - rgt: 10 - title: container - slug: container--30 - section_id: 2 - section_instance: 20 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 273 - site_id: 2 - root_id: 270 - parent_id: 272 - lft: 4 - rgt: 5 - title: Logo - slug: logo--3 - section_id: 97 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 274 - site_id: 2 - root_id: 270 - parent_id: 272 - lft: 6 - rgt: 9 - title: container - slug: container--31 - section_id: 2 - section_instance: 21 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 275 - site_id: 2 - root_id: 270 - parent_id: 274 - lft: 7 - rgt: 8 - title: logged&unlogged menu - slug: logged-unlogged-menu--3 - section_id: 101 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 355 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 12 - rgt: 19 - title: container37 - slug: container37--2 - section_id: 2 - section_instance: 37 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 13:01:44.000000000 Z - updated_at: 2014-07-26 13:01:44.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 276 - site_id: 2 - root_id: 270 - parent_id: 355 - lft: 13 - rgt: 18 - title: container - slug: container--32 - section_id: 2 - section_instance: 19 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 277 - site_id: 2 - root_id: 270 - parent_id: 276 - lft: 14 - rgt: 15 - title: Main menu - slug: main-menu--3 - section_id: 3 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 278 - site_id: 2 - root_id: 270 - parent_id: 276 - lft: 16 - rgt: 17 - title: Mini cart - slug: mini-cart--2 - section_id: 121 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-27 03:20:52.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: *107466080 -- !ruby/object:Spree::PageLayout - attributes: - id: 332 - site_id: 2 - root_id: 270 - parent_id: 333 - lft: 21 - rgt: 22 - title: Slider - slug: slider - section_id: 114 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-09 13:01:29.000000000 Z - updated_at: 2014-07-12 06:27:40.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 361 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 24 - rgt: 27 - title: container41 - slug: container41 - section_id: 2 - section_instance: 41 - section_context: list,detail - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-27 05:07:38.000000000 Z - updated_at: 2014-07-27 14:20:43.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 362 - site_id: 2 - root_id: 270 - parent_id: 361 - lft: 25 - rgt: 26 - title: text3 - slug: text3--2 - section_id: 11 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-27 05:11:43.000000000 Z - updated_at: 2014-07-27 05:11:43.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 279 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 28 - rgt: 165 - title: content - slug: content--3 - section_id: 2 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 339 - site_id: 2 - root_id: 270 - parent_id: 279 - lft: 29 - rgt: 62 - title: container31 - slug: container31 - section_id: 2 - section_instance: 31 - section_context: home - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 00:19:17.000000000 Z - updated_at: 2014-07-26 14:40:12.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 340 - site_id: 2 - root_id: 270 - parent_id: 339 - lft: 30 - rgt: 51 - title: leftside - slug: leftside - section_id: 2 - section_instance: 32 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 00:26:45.000000000 Z - updated_at: 2014-07-17 00:27:28.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 342 - site_id: 2 - root_id: 270 - parent_id: 340 - lft: 31 - rgt: 40 - title: suits - slug: suits - section_id: 2 - section_instance: 31 - section_context: '' - data_source: taxon - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 00:28:52.000000000 Z - updated_at: 2014-07-25 12:45:06.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 350 - site_id: 2 - root_id: 270 - parent_id: 342 - lft: 32 - rgt: 33 - title: taxon name2 - slug: taxon-name2 - section_id: 50 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-25 13:58:55.000000000 Z - updated_at: 2014-07-25 13:58:55.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 351 - site_id: 2 - root_id: 270 - parent_id: 342 - lft: 34 - rgt: 39 - title: container36 - slug: container36 - section_id: 2 - section_instance: 36 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-25 14:01:47.000000000 Z - updated_at: 2014-07-25 14:01:47.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 348 - site_id: 2 - root_id: 270 - parent_id: 351 - lft: 35 - rgt: 38 - title: container34 - slug: container34 - section_id: 2 - section_instance: 34 - section_context: '' - data_source: gpvs - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-24 23:40:52.000000000 Z - updated_at: 2014-07-24 23:43:30.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 344 - site_id: 2 - root_id: 270 - parent_id: 348 - lft: 36 - rgt: 37 - title: product image2 - slug: product-image2 - section_id: 17 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 09:10:10.000000000 Z - updated_at: 2014-07-17 09:10:10.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 343 - site_id: 2 - root_id: 270 - parent_id: 340 - lft: 41 - rgt: 50 - title: fabrics - slug: fabrics - section_id: 2 - section_instance: 32 - section_context: '' - data_source: taxon - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 00:29:02.000000000 Z - updated_at: 2014-07-25 12:48:48.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 356 - site_id: 2 - root_id: 270 - parent_id: 343 - lft: 42 - rgt: 43 - title: taxon name3 - slug: taxon-name3 - section_id: 50 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 13:30:46.000000000 Z - updated_at: 2014-07-26 13:30:46.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 357 - site_id: 2 - root_id: 270 - parent_id: 343 - lft: 44 - rgt: 49 - title: container38 - slug: container38 - section_id: 2 - section_instance: 38 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 13:30:57.000000000 Z - updated_at: 2014-07-26 13:30:57.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 349 - site_id: 2 - root_id: 270 - parent_id: 357 - lft: 45 - rgt: 48 - title: container35 - slug: container35 - section_id: 2 - section_instance: 35 - section_context: '' - data_source: gpvs - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-24 23:41:13.000000000 Z - updated_at: 2014-07-24 23:43:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 345 - site_id: 2 - root_id: 270 - parent_id: 349 - lft: 46 - rgt: 47 - title: product image3 - slug: product-image3 - section_id: 17 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 09:13:54.000000000 Z - updated_at: 2014-07-17 09:13:54.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 341 - site_id: 2 - root_id: 270 - parent_id: 339 - lft: 52 - rgt: 61 - title: rightside - slug: rightside - section_id: 2 - section_instance: 33 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 00:26:54.000000000 Z - updated_at: 2014-07-17 00:27:40.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 353 - site_id: 2 - root_id: 270 - parent_id: 341 - lft: 53 - rgt: 60 - title: container37 - slug: container37 - section_id: 2 - section_instance: 37 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 04:58:58.000000000 Z - updated_at: 2014-07-26 04:58:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 354 - site_id: 2 - root_id: 270 - parent_id: 353 - lft: 54 - rgt: 55 - title: taxonomy name3 - slug: taxonomy-name3 - section_id: 40 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 04:59:54.000000000 Z - updated_at: 2014-07-26 04:59:54.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 346 - site_id: 2 - root_id: 270 - parent_id: 353 - lft: 56 - rgt: 59 - title: container33 - slug: container33 - section_id: 2 - section_instance: 33 - section_context: '' - data_source: taxon - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 09:14:54.000000000 Z - updated_at: 2014-07-26 03:15:19.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 352 - site_id: 2 - root_id: 270 - parent_id: 346 - lft: 57 - rgt: 58 - title: Taxon icon1 - slug: taxon-icon1 - section_id: 119 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 03:12:37.000000000 Z - updated_at: 2014-07-26 03:12:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 280 - site_id: 2 - root_id: 270 - parent_id: 279 - lft: 63 - rgt: 76 - title: lftnav - slug: lftnav--3 - section_id: 2 - section_instance: 4 - section_context: list,detail - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-27 02:04:37.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 281 - site_id: 2 - root_id: 270 - parent_id: 280 - lft: 64 - rgt: 69 - title: container - slug: container--33 - section_id: 2 - section_instance: 12 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 282 - site_id: 2 - root_id: 270 - parent_id: 281 - lft: 65 - rgt: 66 - title: taxonomy name - slug: taxonomy-name--5 - section_id: 40 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: *118524550 - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 283 - site_id: 2 - root_id: 270 - parent_id: 281 - lft: 67 - rgt: 68 - title: vmenu - slug: vmenu--5 - section_id: 6 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 284 - site_id: 2 - root_id: 270 - parent_id: 280 - lft: 70 - rgt: 75 - title: container - slug: container--34 - section_id: 2 - section_instance: 13 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 285 - site_id: 2 - root_id: 270 - parent_id: 284 - lft: 71 - rgt: 72 - title: taxonomy name - slug: taxonomy-name--6 - section_id: 40 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 286 - site_id: 2 - root_id: 270 - parent_id: 284 - lft: 73 - rgt: 74 - title: vmenu - slug: vmenu--6 - section_id: 6 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:38.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 287 - site_id: 2 - root_id: 270 - parent_id: 279 - lft: 77 - rgt: 162 - title: main content - slug: main-content--3 - section_id: 2 - section_instance: 5 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 288 - site_id: 2 - root_id: 270 - parent_id: 287 - lft: 78 - rgt: 87 - title: product list - slug: product-list--3 - section_id: 2 - section_instance: 6 - section_context: list - data_source: gpvs - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 289 - site_id: 2 - root_id: 270 - parent_id: 288 - lft: 79 - rgt: 86 - title: container - slug: container--35 - section_id: 2 - section_instance: 8 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 290 - site_id: 2 - root_id: 270 - parent_id: 289 - lft: 80 - rgt: 81 - title: product image - slug: product-image--3 - section_id: 17 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 291 - site_id: 2 - root_id: 270 - parent_id: 289 - lft: 82 - rgt: 83 - title: product name - slug: product-name--5 - section_id: 13 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 292 - site_id: 2 - root_id: 270 - parent_id: 289 - lft: 84 - rgt: 85 - title: product price - slug: product-price--5 - section_id: 30 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 293 - site_id: 2 - root_id: 270 - parent_id: 287 - lft: 88 - rgt: 117 - title: product detail - slug: product-detail--3 - section_id: 2 - section_instance: 7 - section_context: detail - data_source: this_product - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 294 - site_id: 2 - root_id: 270 - parent_id: 293 - lft: 89 - rgt: 94 - title: container - slug: container--36 - section_id: 2 - section_instance: 10 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 295 - site_id: 2 - root_id: 270 - parent_id: 294 - lft: 90 - rgt: 91 - title: image with thumbnails - slug: image-with-thumbnails--3 - section_id: 94 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 296 - site_id: 2 - root_id: 270 - parent_id: 294 - lft: 92 - rgt: 93 - title: product_properties - slug: product_properties--3 - section_id: 28 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 297 - site_id: 2 - root_id: 270 - parent_id: 293 - lft: 95 - rgt: 112 - title: container - slug: container--37 - section_id: 2 - section_instance: 9 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 298 - site_id: 2 - root_id: 270 - parent_id: 297 - lft: 96 - rgt: 97 - title: product name - slug: product-name--6 - section_id: 13 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 300 - site_id: 2 - root_id: 270 - parent_id: 297 - lft: 98 - rgt: 111 - title: container - slug: container--38 - section_id: 2 - section_instance: 11 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 301 - site_id: 2 - root_id: 270 - parent_id: 300 - lft: 99 - rgt: 100 - title: Product option values - slug: product-option-values--3 - section_id: 107 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 302 - site_id: 2 - root_id: 270 - parent_id: 300 - lft: 101 - rgt: 110 - title: container - slug: container--39 - section_id: 2 - section_instance: 25 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 303 - site_id: 2 - root_id: 270 - parent_id: 302 - lft: 102 - rgt: 103 - title: product price - slug: product-price--6 - section_id: 30 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 304 - site_id: 2 - root_id: 270 - parent_id: 302 - lft: 104 - rgt: 109 - title: container - slug: container--40 - section_id: 2 - section_instance: 24 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 305 - site_id: 2 - root_id: 270 - parent_id: 304 - lft: 105 - rgt: 106 - title: product quantity - slug: product-quantity--3 - section_id: 32 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 306 - site_id: 2 - root_id: 270 - parent_id: 304 - lft: 107 - rgt: 108 - title: product atc - slug: product-atc--3 - section_id: 34 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 359 - site_id: 2 - root_id: 270 - parent_id: 293 - lft: 113 - rgt: 116 - title: container40 - slug: container40 - section_id: 2 - section_instance: 40 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-27 02:08:02.000000000 Z - updated_at: 2014-07-27 02:08:02.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 299 - site_id: 2 - root_id: 270 - parent_id: 359 - lft: 114 - rgt: 115 - title: product description - slug: product-description--3 - section_id: 15 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 307 - site_id: 2 - root_id: 270 - parent_id: 287 - lft: 118 - rgt: 161 - title: other pages - slug: other-pages--3 - section_id: 2 - section_instance: 14 - section_context: cart,checkout,thanks,account,signup,login,password - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-02 13:33:58.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 308 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 119 - rgt: 120 - title: taxon name - slug: taxon-name--3 - section_id: 50 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 309 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 121 - rgt: 126 - title: cart - slug: cart--3 - section_id: 36 - section_instance: 1 - section_context: cart - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 310 - site_id: 2 - root_id: 270 - parent_id: 309 - lft: 122 - rgt: 123 - title: cart items - slug: cart-items--3 - section_id: 42 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 311 - site_id: 2 - root_id: 270 - parent_id: 309 - lft: 124 - rgt: 125 - title: order total price - slug: order-total-price--3 - section_id: 44 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 312 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 127 - rgt: 132 - title: checkout - slug: checkout--3 - section_id: 46 - section_instance: 2 - section_context: checkout - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 313 - site_id: 2 - root_id: 270 - parent_id: 312 - lft: 128 - rgt: 129 - title: ship form - slug: ship-form--3 - section_id: 69 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:58.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 314 - site_id: 2 - root_id: 270 - parent_id: 312 - lft: 130 - rgt: 131 - title: payment form - slug: payment-form--3 - section_id: 72 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 315 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 133 - rgt: 142 - title: thanks - slug: thanks--3 - section_id: 2 - section_instance: 18 - section_context: thanks - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 316 - site_id: 2 - root_id: 270 - parent_id: 315 - lft: 134 - rgt: 139 - title: container - slug: container--41 - section_id: 2 - section_instance: 23 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 317 - site_id: 2 - root_id: 270 - parent_id: 316 - lft: 135 - rgt: 136 - title: order address - slug: order-address--3 - section_id: 52 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 318 - site_id: 2 - root_id: 270 - parent_id: 316 - lft: 137 - rgt: 138 - title: order payment - slug: order-payment--3 - section_id: 55 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 319 - site_id: 2 - root_id: 270 - parent_id: 315 - lft: 140 - rgt: 141 - title: order items - slug: order-items--3 - section_id: 58 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 320 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 143 - rgt: 148 - title: account - slug: account--3 - section_id: 2 - section_instance: 17 - section_context: account - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 321 - site_id: 2 - root_id: 270 - parent_id: 320 - lft: 144 - rgt: 145 - title: profile - slug: profile--3 - section_id: 85 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 322 - site_id: 2 - root_id: 270 - parent_id: 320 - lft: 146 - rgt: 147 - title: order list - slug: order-list--3 - section_id: 82 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 323 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 149 - rgt: 152 - title: login - slug: login--3 - section_id: 2 - section_instance: 15 - section_context: login - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-02 13:33:59.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 324 - site_id: 2 - root_id: 270 - parent_id: 323 - lft: 150 - rgt: 151 - title: login form - slug: login-form--3 - section_id: 61 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 325 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 153 - rgt: 156 - title: signup - slug: signup--3 - section_id: 2 - section_instance: 16 - section_context: signup - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-02 13:33:59.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 326 - site_id: 2 - root_id: 270 - parent_id: 325 - lft: 154 - rgt: 155 - title: sign up form - slug: sign-up-form--3 - section_id: 64 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 327 - site_id: 2 - root_id: 270 - parent_id: 307 - lft: 157 - rgt: 160 - title: password - slug: password--3 - section_id: 2 - section_instance: 22 - section_context: password - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-02 13:33:59.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 328 - site_id: 2 - root_id: 270 - parent_id: 327 - lft: 158 - rgt: 159 - title: password recover form - slug: password-recover-form--3 - section_id: 104 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 347 - site_id: 2 - root_id: 270 - parent_id: 279 - lft: 163 - rgt: 164 - title: text3 - slug: text3 - section_id: 11 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-17 09:15:31.000000000 Z - updated_at: 2014-07-17 09:15:31.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 329 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 166 - rgt: 171 - title: footer - slug: footer--3 - section_id: 2 - section_instance: 3 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-02 13:33:59.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 358 - site_id: 2 - root_id: 270 - parent_id: 329 - lft: 167 - rgt: 170 - title: container39 - slug: container39 - section_id: 2 - section_instance: 39 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 0 - is_full_html: false - created_at: 2014-07-26 14:41:26.000000000 Z - updated_at: 2014-07-26 14:41:26.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 330 - site_id: 2 - root_id: 270 - parent_id: 358 - lft: 168 - rgt: 169 - title: copyright - slug: copyright--3 - section_id: 11 - section_instance: 1 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-02 13:33:59.000000000 Z - data_source_param: '' -- !ruby/object:Spree::PageLayout - attributes: - id: 331 - site_id: 2 - root_id: 270 - parent_id: 270 - lft: 172 - rgt: 173 - title: dialog - slug: dialog--3 - section_id: 90 - section_instance: 2 - section_context: '' - data_source: '' - data_filter: '' - is_enabled: true - copy_from_root_id: 208 - is_full_html: false - created_at: 2014-07-02 13:33:59.000000000 Z - updated_at: 2014-07-12 06:27:39.000000000 Z - data_source_param: '' -template_files: -- !ruby/object:Spree::TemplateFile - attributes: - id: 18 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 16469 - attachment_content_type: image/jpeg - attachment_file_name: 6a5e31b1jw1doccdf5tdqj.jpg - attachment_updated_at: 2014-07-09 12:28:20.000000000 Z - created_at: 2014-07-09 12:28:20.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 19 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 6834 - attachment_content_type: image/jpeg - attachment_file_name: ushan-logo.jpg - attachment_updated_at: 2014-07-09 12:50:23.000000000 Z - created_at: 2014-07-09 12:50:23.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 20 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 1340 - attachment_content_type: image/gif - attachment_file_name: title_bg.gif - attachment_updated_at: 2014-07-26 01:36:57.000000000 Z - created_at: 2014-07-26 01:36:57.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 21 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 59008 - attachment_content_type: image/jpeg - attachment_file_name: howbuy.jpg - attachment_updated_at: 2014-07-27 05:59:59.000000000 Z - created_at: 2014-07-27 05:59:59.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 22 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 255 - attachment_content_type: image/gif - attachment_file_name: nav_bg_40px.gif - attachment_updated_at: 2014-07-27 13:43:43.000000000 Z - created_at: 2014-07-27 13:43:43.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 23 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 452 - attachment_content_type: image/gif - attachment_file_name: tab_on_1px.gif - attachment_updated_at: 2014-07-27 13:45:16.000000000 Z - created_at: 2014-07-27 13:45:16.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 24 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 19840 - attachment_content_type: image/jpeg - attachment_file_name: tiao.jpg - attachment_updated_at: 2014-07-27 13:50:26.000000000 Z - created_at: 2014-07-27 13:50:26.000000000 Z -- !ruby/object:Spree::TemplateFile - attributes: - id: 25 - theme_id: 5 - attachment_width: - attachment_height: - attachment_file_size: 519 - attachment_content_type: image/gif - attachment_file_name: nav_not.gif - attachment_updated_at: 2014-07-28 14:08:34.000000000 Z - created_at: 2014-07-28 14:08:34.000000000 Z -template_releases: -- !ruby/object:Spree::TemplateRelease - attributes: - id: 7 - name: just a test - theme_id: 5 - created_at: 2014-07-26 08:14:33.000000000 Z - updated_at: 2014-07-26 08:14:33.000000000 Z diff --git a/spree_theme/db/themes/designs/2_5_1408541541/6a5e31b1jw1doccdf5tdqj.jpg b/spree_theme/db/themes/designs/2_5_1408541541/6a5e31b1jw1doccdf5tdqj.jpg deleted file mode 100644 index 7fff0f08..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1408541541/6a5e31b1jw1doccdf5tdqj.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1408541541/howbuy.jpg b/spree_theme/db/themes/designs/2_5_1408541541/howbuy.jpg deleted file mode 100644 index bfeaca08..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1408541541/howbuy.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1408541541/nav_bg_40px.gif b/spree_theme/db/themes/designs/2_5_1408541541/nav_bg_40px.gif deleted file mode 100644 index c0bffae4..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1408541541/nav_bg_40px.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1408541541/nav_not.gif b/spree_theme/db/themes/designs/2_5_1408541541/nav_not.gif deleted file mode 100644 index c69d645d..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1408541541/nav_not.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1408541541/tab_on_1px.gif b/spree_theme/db/themes/designs/2_5_1408541541/tab_on_1px.gif deleted file mode 100644 index 5e4e066e..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1408541541/tab_on_1px.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1408541541/tiao.jpg b/spree_theme/db/themes/designs/2_5_1408541541/tiao.jpg deleted file mode 100644 index 203d1408..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1408541541/tiao.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1408541541/title_bg.gif b/spree_theme/db/themes/designs/2_5_1408541541/title_bg.gif deleted file mode 100644 index 26c8046b..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1408541541/title_bg.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1408541541/ushan-logo.jpg b/spree_theme/db/themes/designs/2_5_1408541541/ushan-logo.jpg deleted file mode 100644 index 9455e3de..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1408541541/ushan-logo.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1410526949.json b/spree_theme/db/themes/designs/2_5_1410526949.json deleted file mode 100644 index f072da2d..00000000 --- a/spree_theme/db/themes/designs/2_5_1410526949.json +++ /dev/null @@ -1 +0,0 @@ -{"template":{"template_theme":{"assigned_resource_ids":{"335":{"spree/template_text":[5]},"386":{},"388":{"spree/taxon":[0,0]},"391":{},"394":{"spree/taxon":[65]},"396":{},"400":{},"405":{},"411":{},"413":{"spree/taxon":[0]},"416":{},"419":{},"465":{},"468":{}},"created_at":"2014-08-02T07:39:31.000Z","id":5,"page_layout_root_id":383,"release_id":15,"site_id":2,"slug":"","title":"\u670d\u88c5\u5b9a\u5236","updated_at":"2014-08-23T00:09:42.000Z"}},"param_values":[{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3640,"page_layout_id":384,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3641,"page_layout_id":384,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:none","101unset":"0","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3642,"page_layout_id":384,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto auto auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3643,"page_layout_id":384,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3644,"page_layout_id":384,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3645,"page_layout_id":397,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3646,"page_layout_id":397,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:none","101unset":"0","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3647,"page_layout_id":397,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3648,"page_layout_id":397,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:yellow"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3649,"page_layout_id":397,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3650,"page_layout_id":466,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3651,"page_layout_id":466,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3652,"page_layout_id":466,"page_layout_root_id":383,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid none none none","8unset":"0","8":"border-width:4px 0px 0px 0px","6unset":"0","6":"border-color:#2D2D2F transparent transparent transparent"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3653,"page_layout_id":466,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"0","2":"background-color:#F5F5F5"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3654,"page_layout_id":466,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3655,"page_layout_id":415,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3656,"page_layout_id":415,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:200px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3657,"page_layout_id":415,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 5px auto auto","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB","32unset":"0","32":"padding:10px 10px 10px 10px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3658,"page_layout_id":415,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","2unset":"1","2":"background-color:#FFF8ED"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3659,"page_layout_id":415,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0","49unset":"1","49":"color:black"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3660,"page_layout_id":422,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3661,"page_layout_id":422,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:750px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3662,"page_layout_id":422,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3663,"page_layout_id":422,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3664,"page_layout_id":422,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3665,"page_layout_id":423,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3666,"page_layout_id":423,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"1","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3667,"page_layout_id":423,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3668,"page_layout_id":423,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3669,"page_layout_id":423,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3670,"page_layout_id":428,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3671,"page_layout_id":428,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"1","21":"width:200px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3672,"page_layout_id":428,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3673,"page_layout_id":428,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3674,"page_layout_id":428,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3675,"page_layout_id":425,"page_layout_root_id":383,"pvalue":{},"section_param_id":65,"theme_id":5,"unset":null,"updated_at":"2013-04-08T13:27:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3676,"page_layout_id":425,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111","15unset":"0","15":"height:110px","21unset":"0","21":"width:150px"},"section_param_id":66,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3677,"page_layout_id":425,"page_layout_root_id":383,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","32unset":"0","32":"padding:5px 0px 5px 0px","15unset":"0","15":"height:98px"},"section_param_id":67,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3678,"page_layout_id":425,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":68,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3679,"page_layout_id":425,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111","53unset":"0","53":"text-align:center"},"section_param_id":69,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3680,"page_layout_id":442,"page_layout_root_id":383,"pvalue":{},"section_param_id":60,"theme_id":5,"unset":null,"updated_at":"2013-04-08T13:27:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3681,"page_layout_id":442,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":61,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3682,"page_layout_id":442,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 0px 10px 0px"},"section_param_id":62,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3683,"page_layout_id":442,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":63,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3684,"page_layout_id":442,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111","24unset":"0","24":"font-size:90%"},"section_param_id":64,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3685,"page_layout_id":468,"page_layout_root_id":383,"pvalue":{},"section_param_id":50,"theme_id":5,"unset":null,"updated_at":"2013-04-08T13:27:11.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3686,"page_layout_id":468,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111","21unset":"0","21":"width:100%"},"section_param_id":51,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3687,"page_layout_id":468,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3688,"page_layout_id":468,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":53,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3689,"page_layout_id":468,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":54,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3690,"page_layout_id":424,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3691,"page_layout_id":424,"page_layout_root_id":383,"pvalue":{"15":"height:160px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:160px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3692,"page_layout_id":424,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto","15unset":"1","15":"height:140px","32unset":"1","32":"padding:0px 0px 0px 0px","8unset":"1","8":"border-width:0px 0px 0px 0px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3693,"page_layout_id":424,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3694,"page_layout_id":424,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3695,"page_layout_id":432,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3696,"page_layout_id":432,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0","21unset":"0","21":"width:350px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3697,"page_layout_id":432,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3698,"page_layout_id":432,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3699,"page_layout_id":432,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3700,"page_layout_id":429,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3701,"page_layout_id":429,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3702,"page_layout_id":429,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3703,"page_layout_id":429,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3704,"page_layout_id":429,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3705,"page_layout_id":437,"page_layout_root_id":383,"pvalue":{},"section_param_id":110,"theme_id":5,"unset":null,"updated_at":"2014-07-30T23:08:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3706,"page_layout_id":437,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":111,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3707,"page_layout_id":437,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:10px auto 20px auto"},"section_param_id":112,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3708,"page_layout_id":437,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":113,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3709,"page_layout_id":437,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111","27unset":"0","27":"font-weight:bolder","24unset":"0","24":"font-size:110%","49unset":"0","49":"color:#00ADEE"},"section_param_id":114,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3710,"page_layout_id":434,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0","85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3711,"page_layout_id":434,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"1","21unset":"0","21":"width:450px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3712,"page_layout_id":434,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:40px auto auto auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3713,"page_layout_id":434,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3714,"page_layout_id":434,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3715,"page_layout_id":445,"page_layout_root_id":383,"pvalue":{},"section_param_id":125,"theme_id":5,"unset":null,"updated_at":"2013-04-16T14:20:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3716,"page_layout_id":445,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111","21unset":"1","21":"width:670px"},"section_param_id":126,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3717,"page_layout_id":445,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":127,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3718,"page_layout_id":445,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":128,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3719,"page_layout_id":445,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111","53unset":"1","53":"text-align:right"},"section_param_id":129,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3720,"page_layout_id":427,"page_layout_root_id":383,"pvalue":{},"section_param_id":110,"theme_id":5,"unset":null,"updated_at":"2013-04-19T13:03:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3721,"page_layout_id":427,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111","21unset":"0","21":"width:150px"},"section_param_id":111,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3722,"page_layout_id":427,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:5px 0px 0px 0px","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":112,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3723,"page_layout_id":427,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":113,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3724,"page_layout_id":427,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111","53unset":"0","53":"text-align:center","49unset":"0","49":"color:#00ADEE","27unset":"0","27":"font-weight:bold"},"section_param_id":114,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3725,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":27,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3726,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":28,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3727,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 0px 20px"},"section_param_id":29,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3728,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":30,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3729,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":31,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3730,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 0px"},"section_param_id":32,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3731,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{"54unset":"0","54":"text-decoration:none","24unset":"0","24":"font-size:90%","49unset":"0","49":"color:black"},"section_param_id":33,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3732,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{"54unset":"0","54":"text-decoration:underline"},"section_param_id":34,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3733,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":35,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3734,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":36,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3735,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":37,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3736,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":38,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3737,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":39,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3738,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":40,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3739,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":41,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3740,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":42,"theme_id":5,"unset":null,"updated_at":"2013-10-02T10:20:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3741,"page_layout_id":416,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3742,"page_layout_id":416,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3743,"page_layout_id":416,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 20px auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3744,"page_layout_id":416,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3745,"page_layout_id":416,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3746,"page_layout_id":419,"page_layout_root_id":383,"pvalue":{"86":"1","86unset":"0"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3747,"page_layout_id":419,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"1","101":"float:left","101unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3748,"page_layout_id":419,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3749,"page_layout_id":419,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3750,"page_layout_id":419,"page_layout_root_id":383,"pvalue":{"15":"height:100px","15unset":"0","101":"float:left","101unset":"0"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3751,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":27,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3752,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":28,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3753,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"1","31":"margin:auto auto auto 20px","32unset":"0","32":"padding:0px 0px 0px 20px"},"section_param_id":29,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3754,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":30,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3755,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{"disabled_ha_ids":"111"},"section_param_id":31,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3756,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 0px"},"section_param_id":32,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3757,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{"24unset":"0","24":"font-size:90%","49unset":"0","49":"color:black","54unset":"0","54":"text-decoration:none"},"section_param_id":33,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3758,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{"54unset":"0","54":"text-decoration:underline"},"section_param_id":34,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3759,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":35,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3760,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":36,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3761,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":37,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3762,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":38,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3763,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":39,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3764,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":40,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3765,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":41,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3766,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":42,"theme_id":5,"unset":null,"updated_at":"2013-10-05T00:38:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3767,"page_layout_id":449,"page_layout_root_id":383,"pvalue":{},"section_param_id":210,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:20:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3768,"page_layout_id":449,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:360px"},"section_param_id":211,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3769,"page_layout_id":449,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 10px 10px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":212,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3770,"page_layout_id":449,"page_layout_root_id":383,"pvalue":{},"section_param_id":213,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:20:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3771,"page_layout_id":449,"page_layout_root_id":383,"pvalue":{},"section_param_id":214,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:20:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3772,"page_layout_id":449,"page_layout_root_id":383,"pvalue":{},"section_param_id":215,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:20:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3773,"page_layout_id":449,"page_layout_root_id":383,"pvalue":{"2unset":"1","2":"background-color:#000000"},"section_param_id":216,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3774,"page_layout_id":449,"page_layout_root_id":383,"pvalue":{"49unset":"0","49":"color:#00ADEE","53unset":"0","53":"text-align:center"},"section_param_id":217,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3775,"page_layout_id":450,"page_layout_root_id":383,"pvalue":{},"section_param_id":218,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:21:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3776,"page_layout_id":450,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:360px"},"section_param_id":219,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3777,"page_layout_id":450,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:10px 20px 10px 20px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","31unset":"0","31":"margin:10px auto 10px auto"},"section_param_id":220,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3778,"page_layout_id":450,"page_layout_root_id":383,"pvalue":{},"section_param_id":221,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3779,"page_layout_id":450,"page_layout_root_id":383,"pvalue":{},"section_param_id":222,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3780,"page_layout_id":450,"page_layout_root_id":383,"pvalue":{},"section_param_id":223,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3781,"page_layout_id":450,"page_layout_root_id":383,"pvalue":{},"section_param_id":224,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:21:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3782,"page_layout_id":450,"page_layout_root_id":383,"pvalue":{"49unset":"0","49":"color:#00ADEE","53unset":"0","53":"text-align:center"},"section_param_id":225,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3783,"page_layout_id":443,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3784,"page_layout_id":443,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3785,"page_layout_id":443,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3786,"page_layout_id":443,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3787,"page_layout_id":443,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:35:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3788,"page_layout_id":444,"page_layout_root_id":383,"pvalue":{},"section_param_id":160,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3789,"page_layout_id":444,"page_layout_root_id":383,"pvalue":{},"section_param_id":161,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3790,"page_layout_id":444,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":162,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3791,"page_layout_id":444,"page_layout_root_id":383,"pvalue":{},"section_param_id":163,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:36:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3792,"page_layout_id":444,"page_layout_root_id":383,"pvalue":{"24unset":"0","24":"font-size:150%"},"section_param_id":164,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3793,"page_layout_id":453,"page_layout_root_id":383,"pvalue":{},"section_param_id":165,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3794,"page_layout_id":453,"page_layout_root_id":383,"pvalue":{},"section_param_id":166,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3795,"page_layout_id":453,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto 10px auto 10px"},"section_param_id":167,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3796,"page_layout_id":453,"page_layout_root_id":383,"pvalue":{},"section_param_id":168,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3797,"page_layout_id":453,"page_layout_root_id":383,"pvalue":{},"section_param_id":169,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:21.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3798,"page_layout_id":453,"page_layout_root_id":383,"pvalue":{"31unset":"0","31":"margin:auto auto 10px auto","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","32unset":"0","32":"padding:5px 0px 5px 0px"},"section_param_id":170,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3799,"page_layout_id":453,"page_layout_root_id":383,"pvalue":{},"section_param_id":171,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:22.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3800,"page_layout_id":453,"page_layout_root_id":383,"pvalue":{"27":"font-weight:bold","54unset":"1","54":"text-decoration:underline","53unset":"1","53":"text-align:left"},"section_param_id":172,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3801,"page_layout_id":454,"page_layout_root_id":383,"pvalue":{},"section_param_id":173,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:30.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3802,"page_layout_id":454,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:300px"},"section_param_id":174,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3803,"page_layout_id":454,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":175,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3804,"page_layout_id":454,"page_layout_root_id":383,"pvalue":{},"section_param_id":176,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3805,"page_layout_id":454,"page_layout_root_id":383,"pvalue":{},"section_param_id":177,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3806,"page_layout_id":454,"page_layout_root_id":383,"pvalue":{"31unset":"0","31":"margin:auto auto 10px auto","32unset":"0","32":"padding:5px 0px 5px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":178,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3807,"page_layout_id":454,"page_layout_root_id":383,"pvalue":{},"section_param_id":179,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3808,"page_layout_id":454,"page_layout_root_id":383,"pvalue":{"27":"font-weight:bold","54unset":"1","54":"text-decoration:underline"},"section_param_id":180,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3809,"page_layout_id":455,"page_layout_root_id":383,"pvalue":{},"section_param_id":181,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3810,"page_layout_id":455,"page_layout_root_id":383,"pvalue":{},"section_param_id":182,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3811,"page_layout_id":455,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":183,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3812,"page_layout_id":455,"page_layout_root_id":383,"pvalue":{},"section_param_id":184,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3813,"page_layout_id":455,"page_layout_root_id":383,"pvalue":{},"section_param_id":185,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3814,"page_layout_id":455,"page_layout_root_id":383,"pvalue":{},"section_param_id":186,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3815,"page_layout_id":455,"page_layout_root_id":383,"pvalue":{},"section_param_id":187,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:40.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3816,"page_layout_id":455,"page_layout_root_id":383,"pvalue":{"27":"font-weight:bold"},"section_param_id":188,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3817,"page_layout_id":457,"page_layout_root_id":383,"pvalue":{},"section_param_id":268,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3818,"page_layout_id":457,"page_layout_root_id":383,"pvalue":{},"section_param_id":269,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:51.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3819,"page_layout_id":457,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":270,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3820,"page_layout_id":457,"page_layout_root_id":383,"pvalue":{},"section_param_id":271,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3821,"page_layout_id":457,"page_layout_root_id":383,"pvalue":{},"section_param_id":272,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3822,"page_layout_id":457,"page_layout_root_id":383,"pvalue":{},"section_param_id":273,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3823,"page_layout_id":457,"page_layout_root_id":383,"pvalue":{},"section_param_id":274,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3824,"page_layout_id":457,"page_layout_root_id":383,"pvalue":{},"section_param_id":275,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:37:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3825,"page_layout_id":458,"page_layout_root_id":383,"pvalue":{},"section_param_id":260,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3826,"page_layout_id":458,"page_layout_root_id":383,"pvalue":{},"section_param_id":261,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3827,"page_layout_id":458,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":262,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3828,"page_layout_id":458,"page_layout_root_id":383,"pvalue":{},"section_param_id":263,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3829,"page_layout_id":458,"page_layout_root_id":383,"pvalue":{},"section_param_id":264,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3830,"page_layout_id":458,"page_layout_root_id":383,"pvalue":{},"section_param_id":265,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3831,"page_layout_id":458,"page_layout_root_id":383,"pvalue":{},"section_param_id":266,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3832,"page_layout_id":458,"page_layout_root_id":383,"pvalue":{},"section_param_id":267,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:38:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3833,"page_layout_id":459,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3834,"page_layout_id":459,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3835,"page_layout_id":459,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3836,"page_layout_id":459,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3837,"page_layout_id":459,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3838,"page_layout_id":461,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:32.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3839,"page_layout_id":461,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3840,"page_layout_id":461,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3841,"page_layout_id":461,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3842,"page_layout_id":461,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:33.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3843,"page_layout_id":460,"page_layout_root_id":383,"pvalue":{},"section_param_id":189,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3844,"page_layout_id":460,"page_layout_root_id":383,"pvalue":{},"section_param_id":190,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3845,"page_layout_id":460,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":191,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3846,"page_layout_id":460,"page_layout_root_id":383,"pvalue":{},"section_param_id":192,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3847,"page_layout_id":460,"page_layout_root_id":383,"pvalue":{},"section_param_id":193,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3848,"page_layout_id":460,"page_layout_root_id":383,"pvalue":{},"section_param_id":194,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3849,"page_layout_id":460,"page_layout_root_id":383,"pvalue":{},"section_param_id":195,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3850,"page_layout_id":460,"page_layout_root_id":383,"pvalue":{},"section_param_id":196,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3851,"page_layout_id":462,"page_layout_root_id":383,"pvalue":{},"section_param_id":197,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3852,"page_layout_id":462,"page_layout_root_id":383,"pvalue":{},"section_param_id":198,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3853,"page_layout_id":462,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":199,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3854,"page_layout_id":462,"page_layout_root_id":383,"pvalue":{},"section_param_id":200,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3855,"page_layout_id":462,"page_layout_root_id":383,"pvalue":{},"section_param_id":201,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3856,"page_layout_id":462,"page_layout_root_id":383,"pvalue":{},"section_param_id":202,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3857,"page_layout_id":462,"page_layout_root_id":383,"pvalue":{},"section_param_id":203,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3858,"page_layout_id":462,"page_layout_root_id":383,"pvalue":{},"section_param_id":204,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3859,"page_layout_id":456,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3860,"page_layout_id":456,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3861,"page_layout_id":456,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3862,"page_layout_id":456,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3863,"page_layout_id":456,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3864,"page_layout_id":451,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3865,"page_layout_id":451,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3866,"page_layout_id":451,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 0px 0px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3867,"page_layout_id":451,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3868,"page_layout_id":451,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-11-02T09:50:37.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3869,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":11,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:07.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3870,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{"21unset":"1","21":"width:960px"},"section_param_id":12,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3871,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 0px 0px"},"section_param_id":13,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3872,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{"2unset":"1","2":"background-color:lime"},"section_param_id":14,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3873,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{"27unset":"1","27":"font-weight:bold","49unset":"1","49":"color:white"},"section_param_id":15,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3874,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{"32unset":"0","32":"padding:12px 10px 13px 10px"},"section_param_id":16,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3875,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{"54unset":"0","54":"text-decoration:none","49unset":"0","49":"color:white"},"section_param_id":17,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3876,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":18,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3877,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":19,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3878,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":20,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3879,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":21,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3880,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{"3unset":"0","3":"background-image:nav_not.gif","4unset":"0","4":"background-position:right top","5unset":"0","5":"background-repeat:no-repeat"},"section_param_id":22,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3881,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":23,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3882,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{"3unset":"0","3":"background-image:tab_on_1px.gif","4unset":"1","4":"background-position:left top","5unset":"0","5":"background-repeat:repeat"},"section_param_id":24,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3883,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":25,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3884,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":26,"theme_id":5,"unset":null,"updated_at":"2013-11-05T03:16:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3885,"page_layout_id":417,"page_layout_root_id":383,"pvalue":{},"section_param_id":135,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3886,"page_layout_id":417,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:160px"},"section_param_id":136,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3887,"page_layout_id":417,"page_layout_root_id":383,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent","32unset":"0","32":"padding:0px 0px 5px 0px"},"section_param_id":137,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3888,"page_layout_id":417,"page_layout_root_id":383,"pvalue":{},"section_param_id":138,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3889,"page_layout_id":417,"page_layout_root_id":383,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":139,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3890,"page_layout_id":420,"page_layout_root_id":383,"pvalue":{},"section_param_id":135,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3891,"page_layout_id":420,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:160px"},"section_param_id":136,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3892,"page_layout_id":420,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 5px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":137,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3893,"page_layout_id":420,"page_layout_root_id":383,"pvalue":{},"section_param_id":138,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:09.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3894,"page_layout_id":420,"page_layout_root_id":383,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":139,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3895,"page_layout_id":446,"page_layout_root_id":383,"pvalue":{},"section_param_id":140,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3896,"page_layout_id":446,"page_layout_root_id":383,"pvalue":{},"section_param_id":141,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3897,"page_layout_id":446,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":142,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3898,"page_layout_id":446,"page_layout_root_id":383,"pvalue":{},"section_param_id":143,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3899,"page_layout_id":446,"page_layout_root_id":383,"pvalue":{},"section_param_id":144,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3900,"page_layout_id":447,"page_layout_root_id":383,"pvalue":{},"section_param_id":145,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:15.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3901,"page_layout_id":447,"page_layout_root_id":383,"pvalue":{"101unset":"0","101":"float:right"},"section_param_id":146,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3902,"page_layout_id":447,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:10px auto auto auto"},"section_param_id":147,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3903,"page_layout_id":447,"page_layout_root_id":383,"pvalue":{},"section_param_id":148,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3904,"page_layout_id":447,"page_layout_root_id":383,"pvalue":{},"section_param_id":149,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3905,"page_layout_id":448,"page_layout_root_id":383,"pvalue":{},"section_param_id":150,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3906,"page_layout_id":448,"page_layout_root_id":383,"pvalue":{"21unset":"1","21":"width:600px"},"section_param_id":151,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3907,"page_layout_id":448,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":152,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3908,"page_layout_id":448,"page_layout_root_id":383,"pvalue":{},"section_param_id":153,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3909,"page_layout_id":448,"page_layout_root_id":383,"pvalue":{},"section_param_id":154,"theme_id":5,"unset":null,"updated_at":"2013-11-25T06:53:16.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3910,"page_layout_id":386,"page_layout_root_id":383,"pvalue":{},"section_param_id":323,"theme_id":5,"unset":null,"updated_at":"2013-11-29T02:49:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3911,"page_layout_id":386,"page_layout_root_id":383,"pvalue":{"21unset":"1","21":"width:220px","101unset":"1","101":"float:none"},"section_param_id":324,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3912,"page_layout_id":386,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":325,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3913,"page_layout_id":386,"page_layout_root_id":383,"pvalue":{},"section_param_id":326,"theme_id":5,"unset":null,"updated_at":"2013-11-29T02:49:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3914,"page_layout_id":386,"page_layout_root_id":383,"pvalue":{},"section_param_id":327,"theme_id":5,"unset":null,"updated_at":"2013-11-29T02:49:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3915,"page_layout_id":390,"page_layout_root_id":383,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3916,"page_layout_id":390,"page_layout_root_id":383,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3917,"page_layout_id":390,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:0px 0px 6px 0px","7unset":"1","7":"border-style:none none solid none","8unset":"1","8":"border-width:0px 0px 1px 0px","6unset":"1","6":"border-color:transparent transparent #D9D9DB transparent","31unset":"1","31":"margin:auto 10px auto 10px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3918,"page_layout_id":390,"page_layout_root_id":383,"pvalue":{"2unset":"1","2":"background-color:green"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3919,"page_layout_id":390,"page_layout_root_id":383,"pvalue":{"49unset":"1","49":"color:teal","25unset":"1","25":"font-style:normal","24unset":"1","24":"font-size:0%","27unset":"1","27":"font-weight:bold"},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3920,"page_layout_id":385,"page_layout_root_id":383,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3921,"page_layout_id":385,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3922,"page_layout_id":385,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3923,"page_layout_id":385,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-12-05T08:06:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3924,"page_layout_id":385,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-12-05T08:06:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3925,"page_layout_id":387,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3926,"page_layout_id":387,"page_layout_root_id":383,"pvalue":{"101":"float:right","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3927,"page_layout_id":387,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3928,"page_layout_id":387,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3929,"page_layout_id":387,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2013-12-05T08:11:48.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3930,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{"21":"width:960px","21unset":"1","20":"min-width:960px","20hidden":"1"},"section_param_id":226,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3931,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":227,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3932,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{"85":"clear:both"},"section_param_id":228,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3933,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{"3unset":"1","3":"background-image:none","2unset":"1","2":"background-color:black"},"section_param_id":229,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3934,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":230,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3935,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":231,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3936,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":232,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3937,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":233,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3938,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":234,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3939,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{"31unset":"0","31":"margin:10px auto 2px auto"},"section_param_id":235,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3940,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":236,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3941,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":237,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3942,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":238,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3943,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":239,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3944,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":240,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3945,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":241,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3946,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{"49unset":"0","49":"color:red","24unset":"0","24":"font-size:82%"},"section_param_id":242,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3947,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":243,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3948,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":317,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3949,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":318,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3950,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":319,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3951,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":320,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3952,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":321,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3953,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":322,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3954,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":244,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3955,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":245,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3956,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":246,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3957,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{"49unset":"1","49":"color:#00ADEE","24unset":"1","24":"font-size:80%"},"section_param_id":247,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3958,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":248,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3959,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":249,"theme_id":5,"unset":null,"updated_at":"2014-07-30T23:08:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3960,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{"32unset":"0","32":"padding:5px 10px 5px 10px"},"section_param_id":250,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3961,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":251,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3962,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{"2unset":"0","2":"background-color:#D9D9DB"},"section_param_id":252,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3963,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":253,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3964,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":254,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3965,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":255,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3966,"page_layout_id":383,"page_layout_root_id":383,"pvalue":{},"section_param_id":256,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3967,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{},"section_param_id":55,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3968,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:150px","15unset":"0","15":"height:34px"},"section_param_id":56,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3969,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{"15hidden":"1","15unset":"0","15":"height:33px","32unset":"1","32":"padding:0px 0px 0px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #BBBBBB transparent"},"section_param_id":57,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3970,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{},"section_param_id":58,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3971,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{},"section_param_id":59,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3972,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{},"section_param_id":294,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3973,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{},"section_param_id":295,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3974,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{"49unset":"0","49":"color:#BBBBBB","27unset":"0","27":"font-weight:bold","24unset":"0","24":"font-size:80%","54unset":"0","54":"text-decoration:none","53unset":"0","53":"text-align:center"},"section_param_id":296,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3975,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{},"section_param_id":297,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:39:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3976,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{},"section_param_id":105,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3977,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":106,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3978,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{},"section_param_id":107,"theme_id":5,"unset":null,"updated_at":"2014-07-31T13:50:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3979,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{},"section_param_id":108,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3980,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{},"section_param_id":109,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3981,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px","7unset":"0","7":"border-style:solid none solid none","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":302,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3982,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{"2unset":"0","2":"background-color:transparent"},"section_param_id":303,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3983,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{},"section_param_id":304,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3984,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{"27unset":"0","27":"font-weight:bold"},"section_param_id":305,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3985,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{},"section_param_id":306,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3986,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{},"section_param_id":55,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3987,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":56,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3988,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"1","32":"padding:0px 0px 0px 0px","7unset":"0","7":"border-style:none none solid none","8unset":"0","8":"border-width:0px 0px 1px 0px","6unset":"0","6":"border-color:transparent transparent #D9D9DB transparent"},"section_param_id":57,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3989,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{},"section_param_id":58,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3990,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{},"section_param_id":59,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3991,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{},"section_param_id":294,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3992,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{},"section_param_id":295,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3993,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{"49unset":"0","49":"color:black","54unset":"0","54":"text-decoration:none","27unset":"0","27":"font-weight:bold","24unset":"0","24":"font-size:150%"},"section_param_id":296,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:41.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3994,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{},"section_param_id":297,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3995,"page_layout_id":439,"page_layout_root_id":383,"pvalue":{},"section_param_id":115,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3996,"page_layout_id":439,"page_layout_root_id":383,"pvalue":{},"section_param_id":116,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3997,"page_layout_id":439,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":117,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3998,"page_layout_id":439,"page_layout_root_id":383,"pvalue":{},"section_param_id":118,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":3999,"page_layout_id":439,"page_layout_root_id":383,"pvalue":{},"section_param_id":119,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4000,"page_layout_id":439,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:60px","7unset":"0","7":"border-style:solid solid solid solid","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","8unset":"0","8":"border-width:1px 1px 1px 1px","32unset":"0","32":"padding:7px 10px 7px 10px"},"section_param_id":307,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4001,"page_layout_id":439,"page_layout_root_id":383,"pvalue":{},"section_param_id":308,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4002,"page_layout_id":439,"page_layout_root_id":383,"pvalue":{"53unset":"0","53":"text-align:left"},"section_param_id":309,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4003,"page_layout_id":440,"page_layout_root_id":383,"pvalue":{},"section_param_id":120,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4004,"page_layout_id":440,"page_layout_root_id":383,"pvalue":{},"section_param_id":121,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4005,"page_layout_id":440,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto auto 5px"},"section_param_id":122,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4006,"page_layout_id":440,"page_layout_root_id":383,"pvalue":{},"section_param_id":123,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4007,"page_layout_id":440,"page_layout_root_id":383,"pvalue":{},"section_param_id":124,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4008,"page_layout_id":440,"page_layout_root_id":383,"pvalue":{"32unset":"0","32":"padding:7px 10px 7px 10px","7unset":"1","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#008ABD #008ABD #008ABD #008ABD"},"section_param_id":310,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4009,"page_layout_id":440,"page_layout_root_id":383,"pvalue":{"2unset":"0","2":"background-color:#00ADEE"},"section_param_id":311,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4010,"page_layout_id":440,"page_layout_root_id":383,"pvalue":{"49unset":"0","49":"color:white","24unset":"1","24":"font-size:14em"},"section_param_id":312,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4011,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{},"section_param_id":284,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:04.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4012,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{"21":"width:600px","21unset":"0"},"section_param_id":285,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4013,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{"7":"border-style:solid solid solid solid","7unset":"0","8":"border-width:1px 1px 1px 1px","8unset":"0","6":"border-color:#CCCCCC #CCCCCC #CCCCCC #CCCCCC","6unset":"0","15":"height:598px","15hidden":"1"},"section_param_id":286,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4014,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{"2":"background-color:#FFFFFF","2unset":"0"},"section_param_id":287,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4015,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{},"section_param_id":288,"theme_id":5,"unset":null,"updated_at":"2014-08-02T07:39:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4016,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{"32":"padding:2px 2px 2px 2px","32unset":"0"},"section_param_id":313,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4017,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{"2":"background-color:#EEEEEE","2unset":"0"},"section_param_id":314,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4018,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{},"section_param_id":315,"theme_id":5,"unset":null,"updated_at":"2014-01-22T03:40:05.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4019,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{"32":"padding:0 10px 5px 10px","32unset":"0"},"section_param_id":316,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4020,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":333,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4021,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":334,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4022,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":335,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4023,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":336,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4024,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":337,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4025,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":338,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4026,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":339,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4027,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":340,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4028,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":341,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4029,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":342,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4030,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":343,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4031,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":344,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4032,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":345,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4033,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":346,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4034,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":347,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4035,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":348,"theme_id":5,"unset":null,"updated_at":"2014-01-22T14:00:12.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4036,"page_layout_id":463,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4037,"page_layout_id":463,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4038,"page_layout_id":463,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4039,"page_layout_id":463,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4040,"page_layout_id":463,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:03:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4041,"page_layout_id":464,"page_layout_root_id":383,"pvalue":{},"section_param_id":349,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4042,"page_layout_id":464,"page_layout_root_id":383,"pvalue":{},"section_param_id":350,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4043,"page_layout_id":464,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":351,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4044,"page_layout_id":464,"page_layout_root_id":383,"pvalue":{},"section_param_id":352,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4045,"page_layout_id":464,"page_layout_root_id":383,"pvalue":{},"section_param_id":353,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4046,"page_layout_id":464,"page_layout_root_id":383,"pvalue":{},"section_param_id":354,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4047,"page_layout_id":464,"page_layout_root_id":383,"pvalue":{},"section_param_id":355,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4048,"page_layout_id":464,"page_layout_root_id":383,"pvalue":{},"section_param_id":356,"theme_id":5,"unset":null,"updated_at":"2014-02-19T13:12:08.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4049,"page_layout_id":430,"page_layout_root_id":383,"pvalue":{},"section_param_id":289,"theme_id":5,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4050,"page_layout_id":430,"page_layout_root_id":383,"pvalue":{},"section_param_id":290,"theme_id":5,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4051,"page_layout_id":430,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":291,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4052,"page_layout_id":430,"page_layout_root_id":383,"pvalue":{},"section_param_id":292,"theme_id":5,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4053,"page_layout_id":430,"page_layout_root_id":383,"pvalue":{},"section_param_id":293,"theme_id":5,"unset":null,"updated_at":"2014-02-23T13:34:50.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4054,"page_layout_id":430,"page_layout_root_id":383,"pvalue":{"32unset":"0","32":"padding:5px 10px 5px 10px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB"},"section_param_id":299,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4055,"page_layout_id":430,"page_layout_root_id":383,"pvalue":{"32unset":"0","32":"padding:5px 5px 5px 5px","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#D9D9DB #D9D9DB #D9D9DB #D9D9DB","31unset":"0","31":"margin:6px 6px 6px auto"},"section_param_id":301,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4056,"page_layout_id":452,"page_layout_root_id":383,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4057,"page_layout_id":452,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4058,"page_layout_id":452,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4059,"page_layout_id":452,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-03-04T14:20:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4060,"page_layout_id":452,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-03-04T14:20:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4061,"page_layout_id":435,"page_layout_root_id":383,"pvalue":{},"section_param_id":357,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4062,"page_layout_id":435,"page_layout_root_id":383,"pvalue":{},"section_param_id":358,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4063,"page_layout_id":435,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":359,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4064,"page_layout_id":435,"page_layout_root_id":383,"pvalue":{},"section_param_id":360,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4065,"page_layout_id":435,"page_layout_root_id":383,"pvalue":{},"section_param_id":361,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:19:56.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4066,"page_layout_id":438,"page_layout_root_id":383,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4067,"page_layout_id":438,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:230px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4068,"page_layout_id":438,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4069,"page_layout_id":438,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:42:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4070,"page_layout_id":438,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-03-06T13:42:19.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4071,"page_layout_id":436,"page_layout_root_id":383,"pvalue":{"85unset":"0","85":"clear:both"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4072,"page_layout_id":436,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4073,"page_layout_id":436,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4074,"page_layout_id":436,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-03-06T15:17:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4075,"page_layout_id":436,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-03-06T15:17:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4076,"page_layout_id":425,"page_layout_root_id":383,"pvalue":{"84unset":"1","84":"product"},"section_param_id":404,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4077,"page_layout_id":394,"page_layout_root_id":383,"pvalue":{},"section_param_id":388,"theme_id":5,"unset":null,"updated_at":"2014-07-09T13:01:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4078,"page_layout_id":394,"page_layout_root_id":383,"pvalue":{"21":"width:100%","21unset":"0","15unset":"0","15":"height:300px","101unset":"0","101":"float:none"},"section_param_id":389,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4079,"page_layout_id":394,"page_layout_root_id":383,"pvalue":{"15hidden":"1","15unset":"0","15":"height:300px"},"section_param_id":390,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4080,"page_layout_id":394,"page_layout_root_id":383,"pvalue":{},"section_param_id":391,"theme_id":5,"unset":null,"updated_at":"2014-07-09T13:01:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4081,"page_layout_id":394,"page_layout_root_id":383,"pvalue":{},"section_param_id":392,"theme_id":5,"unset":null,"updated_at":"2014-07-09T13:01:29.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4082,"page_layout_id":394,"page_layout_root_id":383,"pvalue":{"78":"width:1350px","79":"height:300px","78unset":"0","79unset":"0"},"section_param_id":393,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4083,"page_layout_id":393,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-12T04:07:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4084,"page_layout_id":393,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:300px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4085,"page_layout_id":393,"page_layout_root_id":383,"pvalue":{"15hidden":"1","15unset":"1","15":"height:295px","31unset":"0","31":"margin:auto auto 5px auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4086,"page_layout_id":393,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-12T04:07:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4087,"page_layout_id":393,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-12T04:07:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4088,"page_layout_id":335,"page_layout_root_id":270,"pvalue":{},"section_param_id":50,"theme_id":5,"unset":null,"updated_at":"2014-07-12T05:05:49.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4089,"page_layout_id":335,"page_layout_root_id":270,"pvalue":{"101unset":"0","101":"float:none","21unset":"0","21":"width:800px"},"section_param_id":51,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4090,"page_layout_id":335,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4091,"page_layout_id":335,"page_layout_root_id":270,"pvalue":{},"section_param_id":53,"theme_id":5,"unset":null,"updated_at":"2014-07-12T05:05:49.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4092,"page_layout_id":335,"page_layout_root_id":270,"pvalue":{},"section_param_id":54,"theme_id":5,"unset":null,"updated_at":"2014-07-12T05:05:49.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4093,"page_layout_id":337,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4094,"page_layout_id":337,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4095,"page_layout_id":337,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4096,"page_layout_id":337,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4097,"page_layout_id":337,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4098,"page_layout_id":338,"page_layout_root_id":270,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4099,"page_layout_id":338,"page_layout_root_id":270,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"0"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4100,"page_layout_id":338,"page_layout_root_id":270,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4101,"page_layout_id":338,"page_layout_root_id":270,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4102,"page_layout_id":338,"page_layout_root_id":270,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:16:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4103,"page_layout_id":398,"page_layout_root_id":383,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4104,"page_layout_id":398,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4105,"page_layout_id":398,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4106,"page_layout_id":398,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:19:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4107,"page_layout_id":398,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:19:17.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4108,"page_layout_id":399,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4109,"page_layout_id":399,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:655px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4110,"page_layout_id":399,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4111,"page_layout_id":399,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4112,"page_layout_id":399,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4113,"page_layout_id":410,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4114,"page_layout_id":410,"page_layout_root_id":383,"pvalue":{"101":"float:right","101unset":"0","15":"height:100px","15unset":"1","21unset":"1","21":"width:360px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4115,"page_layout_id":410,"page_layout_root_id":383,"pvalue":{"15hidden":"1","15unset":"1","15":"height:100px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4116,"page_layout_id":410,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4117,"page_layout_id":410,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:26:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4118,"page_layout_id":400,"page_layout_root_id":383,"pvalue":{"85unset":"1","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4119,"page_layout_id":400,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4120,"page_layout_id":400,"page_layout_root_id":383,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4121,"page_layout_id":400,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:28:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4122,"page_layout_id":400,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:28:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4123,"page_layout_id":405,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:29:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4124,"page_layout_id":405,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4125,"page_layout_id":405,"page_layout_root_id":383,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB","32unset":"1","32":"padding:0px 0px 0px 0px","31unset":"0","31":"margin:5px auto auto auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4126,"page_layout_id":405,"page_layout_root_id":383,"pvalue":{"3unset":"1","3":"background-image:none"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4127,"page_layout_id":405,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T00:29:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4128,"page_layout_id":404,"page_layout_root_id":383,"pvalue":{},"section_param_id":65,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:10:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4129,"page_layout_id":404,"page_layout_root_id":383,"pvalue":{},"section_param_id":66,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:10:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4130,"page_layout_id":404,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":67,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4131,"page_layout_id":404,"page_layout_root_id":383,"pvalue":{},"section_param_id":68,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:10:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4132,"page_layout_id":404,"page_layout_root_id":383,"pvalue":{},"section_param_id":69,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:10:10.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4133,"page_layout_id":404,"page_layout_root_id":383,"pvalue":{"84unset":"0","84":"product"},"section_param_id":404,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4134,"page_layout_id":409,"page_layout_root_id":383,"pvalue":{},"section_param_id":65,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:13:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4135,"page_layout_id":409,"page_layout_root_id":383,"pvalue":{},"section_param_id":66,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:13:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4136,"page_layout_id":409,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":67,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4137,"page_layout_id":409,"page_layout_root_id":383,"pvalue":{},"section_param_id":68,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:13:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4138,"page_layout_id":409,"page_layout_root_id":383,"pvalue":{},"section_param_id":69,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:13:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4139,"page_layout_id":409,"page_layout_root_id":383,"pvalue":{"84unset":"0","84":"product"},"section_param_id":404,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4140,"page_layout_id":413,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:14:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4141,"page_layout_id":413,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4142,"page_layout_id":413,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:18px 5px 5px 5px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4143,"page_layout_id":413,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:14:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4144,"page_layout_id":413,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:14:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4145,"page_layout_id":465,"page_layout_root_id":383,"pvalue":{},"section_param_id":50,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:15:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4146,"page_layout_id":465,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":51,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4147,"page_layout_id":465,"page_layout_root_id":383,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB","32unset":"0","32":"padding:5px 5px 5px 5px","31unset":"0","31":"margin:5px auto auto auto"},"section_param_id":52,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4148,"page_layout_id":465,"page_layout_root_id":383,"pvalue":{},"section_param_id":53,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:15:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4149,"page_layout_id":465,"page_layout_root_id":383,"pvalue":{},"section_param_id":54,"theme_id":5,"unset":null,"updated_at":"2014-07-17T09:15:31.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4150,"page_layout_id":403,"page_layout_root_id":383,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4151,"page_layout_id":403,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4152,"page_layout_id":403,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4153,"page_layout_id":403,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-24T23:40:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4154,"page_layout_id":403,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-24T23:40:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4155,"page_layout_id":408,"page_layout_root_id":383,"pvalue":{"85unset":"0","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4156,"page_layout_id":408,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4157,"page_layout_id":408,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4158,"page_layout_id":408,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-24T23:41:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4159,"page_layout_id":408,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-24T23:41:13.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4160,"page_layout_id":401,"page_layout_root_id":383,"pvalue":{},"section_param_id":160,"theme_id":5,"unset":null,"updated_at":"2014-07-25T13:58:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4161,"page_layout_id":401,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":161,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4162,"page_layout_id":401,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:8px 5px 8px 28px"},"section_param_id":162,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4163,"page_layout_id":401,"page_layout_root_id":383,"pvalue":{"3unset":"0","3":"background-image:tiao.jpg","2unset":"0","2":"background-color:#F8F8F8"},"section_param_id":163,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4164,"page_layout_id":401,"page_layout_root_id":383,"pvalue":{},"section_param_id":164,"theme_id":5,"unset":null,"updated_at":"2014-07-25T13:58:55.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4165,"page_layout_id":402,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-25T14:01:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4166,"page_layout_id":402,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4167,"page_layout_id":402,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4168,"page_layout_id":402,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-25T14:01:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4169,"page_layout_id":402,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-25T14:01:47.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4170,"page_layout_id":414,"page_layout_root_id":383,"pvalue":{},"section_param_id":405,"theme_id":5,"unset":null,"updated_at":"2014-07-26T03:12:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4171,"page_layout_id":414,"page_layout_root_id":383,"pvalue":{},"section_param_id":406,"theme_id":5,"unset":null,"updated_at":"2014-07-26T03:12:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4172,"page_layout_id":414,"page_layout_root_id":383,"pvalue":{"15hidden":"1","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":407,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4173,"page_layout_id":414,"page_layout_root_id":383,"pvalue":{},"section_param_id":408,"theme_id":5,"unset":null,"updated_at":"2014-07-26T03:12:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4174,"page_layout_id":414,"page_layout_root_id":383,"pvalue":{},"section_param_id":409,"theme_id":5,"unset":null,"updated_at":"2014-07-26T03:12:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4175,"page_layout_id":411,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-26T04:58:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4176,"page_layout_id":411,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4177,"page_layout_id":411,"page_layout_root_id":383,"pvalue":{"15hidden":"1","7unset":"0","7":"border-style:solid solid solid solid","8unset":"0","8":"border-width:1px 1px 1px 1px","6unset":"0","6":"border-color:#CDCBCB #CDCBCB #CDCBCB #CDCBCB","32unset":"1","32":"padding:0px 0px 0px 0px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4178,"page_layout_id":411,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-26T04:58:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4179,"page_layout_id":411,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-26T04:58:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4180,"page_layout_id":412,"page_layout_root_id":383,"pvalue":{},"section_param_id":135,"theme_id":5,"unset":null,"updated_at":"2014-07-26T04:59:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4181,"page_layout_id":412,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":136,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4182,"page_layout_id":412,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:8px 5px 8px 28px"},"section_param_id":137,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4183,"page_layout_id":412,"page_layout_root_id":383,"pvalue":{"2unset":"1","2":"background-color:#F8F8F8","3unset":"0","3":"background-image:tiao.jpg"},"section_param_id":138,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4184,"page_layout_id":412,"page_layout_root_id":383,"pvalue":{},"section_param_id":139,"theme_id":5,"unset":null,"updated_at":"2014-07-26T04:59:54.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4185,"page_layout_id":389,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:01:44.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4186,"page_layout_id":389,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:40px","15unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4187,"page_layout_id":389,"page_layout_root_id":383,"pvalue":{"15hidden":"1","15unset":"0","15":"height:40px"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4188,"page_layout_id":389,"page_layout_root_id":383,"pvalue":{"3unset":"0","3":"background-image:nav_bg_40px.gif","2unset":"1","2":"background-color:black"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4189,"page_layout_id":389,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:01:45.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4190,"page_layout_id":406,"page_layout_root_id":383,"pvalue":{},"section_param_id":160,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:30:46.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4191,"page_layout_id":406,"page_layout_root_id":383,"pvalue":{"21unset":"0","21":"width:100%"},"section_param_id":161,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4192,"page_layout_id":406,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:8px 5px 8px 28px"},"section_param_id":162,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4193,"page_layout_id":406,"page_layout_root_id":383,"pvalue":{"3unset":"0","3":"background-image:tiao.jpg"},"section_param_id":163,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4194,"page_layout_id":406,"page_layout_root_id":383,"pvalue":{},"section_param_id":164,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:30:46.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4195,"page_layout_id":407,"page_layout_root_id":383,"pvalue":{"85unset":"1","85":"clear:none"},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4196,"page_layout_id":407,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4197,"page_layout_id":407,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4198,"page_layout_id":407,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:30:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4199,"page_layout_id":407,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-26T13:30:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4200,"page_layout_id":467,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-26T14:41:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4201,"page_layout_id":467,"page_layout_root_id":383,"pvalue":{"101":"float:none","101unset":"0","15":"height:100px","15unset":"1","21unset":"0","21":"width:960px"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4202,"page_layout_id":467,"page_layout_root_id":383,"pvalue":{"15hidden":"1","7unset":"1","7":"border-style:solid none none none","8unset":"1","8":"border-width:4px 0px 0px 0px","6unset":"1","6":"border-color:#2D2D2F transparent transparent transparent"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4203,"page_layout_id":467,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-26T14:41:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4204,"page_layout_id":467,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-26T14:41:26.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4205,"page_layout_id":441,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-27T02:08:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4206,"page_layout_id":441,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:100px","15unset":"1"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4207,"page_layout_id":441,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4208,"page_layout_id":441,"page_layout_root_id":383,"pvalue":{},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-07-27T02:08:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4209,"page_layout_id":441,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-27T02:08:02.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4210,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{},"section_param_id":410,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4211,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{"101unset":"0","101":"float:right"},"section_param_id":411,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4212,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{"15hidden":"1","32unset":"0","32":"padding:12px 0px 0px 0px"},"section_param_id":412,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4213,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{},"section_param_id":413,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4214,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{},"section_param_id":414,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4215,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{},"section_param_id":415,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:52.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4216,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{},"section_param_id":416,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4217,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{},"section_param_id":417,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4218,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{"49unset":"0","49":"color:white"},"section_param_id":418,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4219,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{},"section_param_id":419,"theme_id":5,"unset":null,"updated_at":"2014-07-27T03:20:53.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4220,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":420,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4221,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{"32unset":"1","32":"padding:0px 0px 0px 0px"},"section_param_id":421,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4222,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":421,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4223,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":422,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4224,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":423,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4225,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":424,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4226,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":424,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4227,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":425,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4228,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":426,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4229,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":427,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4230,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":427,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4231,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":428,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4232,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":429,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4233,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 15px"},"section_param_id":430,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4234,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{"32unset":"0","32":"padding:5px 0px 0px 15px"},"section_param_id":430,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4235,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":431,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4236,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":432,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4237,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":433,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4238,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":433,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4239,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":434,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4240,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":435,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4241,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":436,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4242,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":436,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4243,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":437,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4244,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":438,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4245,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":439,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4246,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":439,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4247,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":440,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4248,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":441,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4249,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":442,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4250,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":442,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4251,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":443,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4252,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":444,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4253,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":445,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4254,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":445,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4255,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":446,"theme_id":5,"unset":null,"updated_at":"2014-07-27T04:41:03.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4256,"page_layout_id":395,"page_layout_root_id":383,"pvalue":{},"section_param_id":6,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:07:38.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4257,"page_layout_id":395,"page_layout_root_id":383,"pvalue":{"101":"float:left","101unset":"0","15":"height:200px","15unset":"0","21unset":"0","21":"width:100%"},"section_param_id":7,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4258,"page_layout_id":395,"page_layout_root_id":383,"pvalue":{"15hidden":"1","15unset":"0","15":"height:190px","31unset":"0","31":"margin:auto auto 10px auto"},"section_param_id":8,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4259,"page_layout_id":395,"page_layout_root_id":383,"pvalue":{"3unset":"0","3":"background-image:howbuy.jpg","4unset":"0","4":"background-position:center center"},"section_param_id":9,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4260,"page_layout_id":395,"page_layout_root_id":383,"pvalue":{},"section_param_id":10,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:07:39.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4261,"page_layout_id":396,"page_layout_root_id":383,"pvalue":{},"section_param_id":50,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:11:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4262,"page_layout_id":396,"page_layout_root_id":383,"pvalue":{},"section_param_id":51,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:11:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4263,"page_layout_id":396,"page_layout_root_id":383,"pvalue":{"15hidden":"1"},"section_param_id":52,"theme_id":5,"unset":null,"updated_at":"2014-08-23T00:09:42.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4264,"page_layout_id":396,"page_layout_root_id":383,"pvalue":{},"section_param_id":53,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:11:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-02T07:39:31.000Z","id":4265,"page_layout_id":396,"page_layout_root_id":383,"pvalue":{},"section_param_id":54,"theme_id":5,"unset":null,"updated_at":"2014-07-27T05:11:43.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:57.000Z","id":4601,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":477,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:57.000Z","id":4606,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":478,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:57.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4608,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":478,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4613,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":479,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4647,"page_layout_id":384,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4649,"page_layout_id":385,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4651,"page_layout_id":387,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4653,"page_layout_id":389,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4655,"page_layout_id":390,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4657,"page_layout_id":393,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4659,"page_layout_id":395,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4661,"page_layout_id":397,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4663,"page_layout_id":398,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4665,"page_layout_id":399,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4667,"page_layout_id":400,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4669,"page_layout_id":402,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4671,"page_layout_id":403,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4673,"page_layout_id":405,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4675,"page_layout_id":407,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4677,"page_layout_id":408,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4679,"page_layout_id":410,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4681,"page_layout_id":411,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4683,"page_layout_id":413,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4685,"page_layout_id":415,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4687,"page_layout_id":416,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4689,"page_layout_id":419,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4691,"page_layout_id":422,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4693,"page_layout_id":423,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4695,"page_layout_id":424,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4697,"page_layout_id":428,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4699,"page_layout_id":429,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4701,"page_layout_id":432,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4703,"page_layout_id":434,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4705,"page_layout_id":436,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4707,"page_layout_id":438,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4709,"page_layout_id":441,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4711,"page_layout_id":443,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4713,"page_layout_id":451,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4715,"page_layout_id":452,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4717,"page_layout_id":456,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4719,"page_layout_id":459,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4721,"page_layout_id":461,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4723,"page_layout_id":463,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4725,"page_layout_id":466,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4727,"page_layout_id":467,"page_layout_root_id":383,"pvalue":{},"section_param_id":480,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4751,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":481,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4756,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":482,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4758,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":482,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4766,"page_layout_id":396,"page_layout_root_id":383,"pvalue":{},"section_param_id":484,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4768,"page_layout_id":465,"page_layout_root_id":383,"pvalue":{},"section_param_id":484,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4770,"page_layout_id":468,"page_layout_root_id":383,"pvalue":{},"section_param_id":484,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4778,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{},"section_param_id":485,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4780,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{},"section_param_id":485,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4783,"page_layout_id":442,"page_layout_root_id":383,"pvalue":{},"section_param_id":486,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4786,"page_layout_id":404,"page_layout_root_id":383,"pvalue":{},"section_param_id":487,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4788,"page_layout_id":409,"page_layout_root_id":383,"pvalue":{},"section_param_id":487,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4790,"page_layout_id":425,"page_layout_root_id":383,"pvalue":{},"section_param_id":487,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4793,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{},"section_param_id":495,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4797,"page_layout_id":427,"page_layout_root_id":383,"pvalue":{},"section_param_id":496,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4799,"page_layout_id":437,"page_layout_root_id":383,"pvalue":{},"section_param_id":496,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4802,"page_layout_id":439,"page_layout_root_id":383,"pvalue":{},"section_param_id":497,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4805,"page_layout_id":440,"page_layout_root_id":383,"pvalue":{},"section_param_id":498,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4808,"page_layout_id":445,"page_layout_root_id":383,"pvalue":{},"section_param_id":499,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4812,"page_layout_id":412,"page_layout_root_id":383,"pvalue":{},"section_param_id":501,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4814,"page_layout_id":417,"page_layout_root_id":383,"pvalue":{},"section_param_id":501,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4816,"page_layout_id":420,"page_layout_root_id":383,"pvalue":{},"section_param_id":501,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4821,"page_layout_id":446,"page_layout_root_id":383,"pvalue":{},"section_param_id":502,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4824,"page_layout_id":447,"page_layout_root_id":383,"pvalue":{},"section_param_id":503,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:58.000Z","id":4827,"page_layout_id":448,"page_layout_root_id":383,"pvalue":{},"section_param_id":504,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:58.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4830,"page_layout_id":401,"page_layout_root_id":383,"pvalue":{},"section_param_id":506,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4832,"page_layout_id":406,"page_layout_root_id":383,"pvalue":{},"section_param_id":506,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4834,"page_layout_id":444,"page_layout_root_id":383,"pvalue":{},"section_param_id":506,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4838,"page_layout_id":453,"page_layout_root_id":383,"pvalue":{},"section_param_id":507,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4841,"page_layout_id":454,"page_layout_root_id":383,"pvalue":{},"section_param_id":508,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4844,"page_layout_id":455,"page_layout_root_id":383,"pvalue":{},"section_param_id":509,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4847,"page_layout_id":460,"page_layout_root_id":383,"pvalue":{},"section_param_id":510,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4850,"page_layout_id":462,"page_layout_root_id":383,"pvalue":{},"section_param_id":511,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4853,"page_layout_id":449,"page_layout_root_id":383,"pvalue":{},"section_param_id":513,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4856,"page_layout_id":450,"page_layout_root_id":383,"pvalue":{},"section_param_id":514,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4859,"page_layout_id":458,"page_layout_root_id":383,"pvalue":{},"section_param_id":515,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4862,"page_layout_id":457,"page_layout_root_id":383,"pvalue":{},"section_param_id":516,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4865,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{},"section_param_id":518,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4868,"page_layout_id":430,"page_layout_root_id":383,"pvalue":{},"section_param_id":519,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4872,"page_layout_id":386,"page_layout_root_id":383,"pvalue":{},"section_param_id":520,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4877,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":522,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4880,"page_layout_id":464,"page_layout_root_id":383,"pvalue":{},"section_param_id":523,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4883,"page_layout_id":435,"page_layout_root_id":383,"pvalue":{},"section_param_id":524,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4889,"page_layout_id":394,"page_layout_root_id":383,"pvalue":{},"section_param_id":527,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4892,"page_layout_id":414,"page_layout_root_id":383,"pvalue":{},"section_param_id":529,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:52:59.000Z","id":4895,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{},"section_param_id":530,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:52:59.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4933,"page_layout_id":384,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4935,"page_layout_id":385,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4937,"page_layout_id":387,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4939,"page_layout_id":389,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4941,"page_layout_id":390,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4943,"page_layout_id":393,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4945,"page_layout_id":395,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4947,"page_layout_id":397,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4949,"page_layout_id":398,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4951,"page_layout_id":399,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4953,"page_layout_id":400,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4955,"page_layout_id":402,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4957,"page_layout_id":403,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4959,"page_layout_id":405,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4961,"page_layout_id":407,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4963,"page_layout_id":408,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4965,"page_layout_id":410,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4967,"page_layout_id":411,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4969,"page_layout_id":413,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4971,"page_layout_id":415,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4973,"page_layout_id":416,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4975,"page_layout_id":419,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4977,"page_layout_id":422,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4979,"page_layout_id":423,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4981,"page_layout_id":424,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4983,"page_layout_id":428,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4985,"page_layout_id":429,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4987,"page_layout_id":432,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4989,"page_layout_id":434,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4991,"page_layout_id":436,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4993,"page_layout_id":438,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4995,"page_layout_id":441,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4997,"page_layout_id":443,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":4999,"page_layout_id":451,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5001,"page_layout_id":452,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5003,"page_layout_id":456,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5005,"page_layout_id":459,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5007,"page_layout_id":461,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5009,"page_layout_id":463,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5011,"page_layout_id":466,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5013,"page_layout_id":467,"page_layout_root_id":383,"pvalue":{},"section_param_id":536,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5037,"page_layout_id":391,"page_layout_root_id":383,"pvalue":{},"section_param_id":537,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5042,"page_layout_id":418,"page_layout_root_id":383,"pvalue":{},"section_param_id":538,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5044,"page_layout_id":421,"page_layout_root_id":383,"pvalue":{},"section_param_id":538,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5052,"page_layout_id":396,"page_layout_root_id":383,"pvalue":{},"section_param_id":540,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5054,"page_layout_id":465,"page_layout_root_id":383,"pvalue":{},"section_param_id":540,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5056,"page_layout_id":468,"page_layout_root_id":383,"pvalue":{},"section_param_id":540,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5064,"page_layout_id":426,"page_layout_root_id":383,"pvalue":{},"section_param_id":541,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5066,"page_layout_id":433,"page_layout_root_id":383,"pvalue":{},"section_param_id":541,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5069,"page_layout_id":442,"page_layout_root_id":383,"pvalue":{},"section_param_id":542,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5072,"page_layout_id":404,"page_layout_root_id":383,"pvalue":{},"section_param_id":543,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5074,"page_layout_id":409,"page_layout_root_id":383,"pvalue":{},"section_param_id":543,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5076,"page_layout_id":425,"page_layout_root_id":383,"pvalue":{},"section_param_id":543,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5079,"page_layout_id":431,"page_layout_root_id":383,"pvalue":{},"section_param_id":551,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5083,"page_layout_id":427,"page_layout_root_id":383,"pvalue":{},"section_param_id":552,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5085,"page_layout_id":437,"page_layout_root_id":383,"pvalue":{},"section_param_id":552,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5088,"page_layout_id":439,"page_layout_root_id":383,"pvalue":{},"section_param_id":553,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5091,"page_layout_id":440,"page_layout_root_id":383,"pvalue":{},"section_param_id":554,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5094,"page_layout_id":445,"page_layout_root_id":383,"pvalue":{},"section_param_id":555,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5098,"page_layout_id":412,"page_layout_root_id":383,"pvalue":{},"section_param_id":557,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5100,"page_layout_id":417,"page_layout_root_id":383,"pvalue":{},"section_param_id":557,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5102,"page_layout_id":420,"page_layout_root_id":383,"pvalue":{},"section_param_id":557,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5107,"page_layout_id":446,"page_layout_root_id":383,"pvalue":{},"section_param_id":558,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5110,"page_layout_id":447,"page_layout_root_id":383,"pvalue":{},"section_param_id":559,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5113,"page_layout_id":448,"page_layout_root_id":383,"pvalue":{},"section_param_id":560,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5116,"page_layout_id":401,"page_layout_root_id":383,"pvalue":{},"section_param_id":562,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5118,"page_layout_id":406,"page_layout_root_id":383,"pvalue":{},"section_param_id":562,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:00.000Z","id":5120,"page_layout_id":444,"page_layout_root_id":383,"pvalue":{},"section_param_id":562,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:00.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5124,"page_layout_id":453,"page_layout_root_id":383,"pvalue":{},"section_param_id":563,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5127,"page_layout_id":454,"page_layout_root_id":383,"pvalue":{},"section_param_id":564,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5130,"page_layout_id":455,"page_layout_root_id":383,"pvalue":{},"section_param_id":565,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5133,"page_layout_id":460,"page_layout_root_id":383,"pvalue":{},"section_param_id":566,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5136,"page_layout_id":462,"page_layout_root_id":383,"pvalue":{},"section_param_id":567,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5139,"page_layout_id":449,"page_layout_root_id":383,"pvalue":{},"section_param_id":569,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5142,"page_layout_id":450,"page_layout_root_id":383,"pvalue":{},"section_param_id":570,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5145,"page_layout_id":458,"page_layout_root_id":383,"pvalue":{},"section_param_id":571,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5148,"page_layout_id":457,"page_layout_root_id":383,"pvalue":{},"section_param_id":572,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5151,"page_layout_id":469,"page_layout_root_id":383,"pvalue":{},"section_param_id":574,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5154,"page_layout_id":430,"page_layout_root_id":383,"pvalue":{},"section_param_id":575,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5158,"page_layout_id":386,"page_layout_root_id":383,"pvalue":{},"section_param_id":576,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5163,"page_layout_id":388,"page_layout_root_id":383,"pvalue":{},"section_param_id":578,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5166,"page_layout_id":464,"page_layout_root_id":383,"pvalue":{},"section_param_id":579,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5169,"page_layout_id":435,"page_layout_root_id":383,"pvalue":{},"section_param_id":580,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5175,"page_layout_id":394,"page_layout_root_id":383,"pvalue":{},"section_param_id":583,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5178,"page_layout_id":414,"page_layout_root_id":383,"pvalue":{},"section_param_id":585,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}},{"param_value":{"computed_pvalue":null,"created_at":"2014-08-31T07:53:01.000Z","id":5181,"page_layout_id":392,"page_layout_root_id":383,"pvalue":{},"section_param_id":586,"theme_id":5,"unset":null,"updated_at":"2014-08-31T07:53:01.000Z"}}],"page_layouts":[{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":383,"is_enabled":true,"is_full_html":true,"lft":1,"parent_id":null,"rgt":174,"root_id":383,"section_context":"","section_id":75,"section_instance":2,"site_id":2,"slug":"root--3","title":"root","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":384,"is_enabled":true,"is_full_html":false,"lft":2,"parent_id":383,"rgt":11,"root_id":383,"section_context":"","section_id":2,"section_instance":1,"site_id":2,"slug":"header--3","title":"Header","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":385,"is_enabled":true,"is_full_html":false,"lft":3,"parent_id":384,"rgt":10,"root_id":383,"section_context":"","section_id":2,"section_instance":20,"site_id":2,"slug":"container--30","title":"container","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":386,"is_enabled":true,"is_full_html":false,"lft":4,"parent_id":385,"rgt":5,"root_id":383,"section_context":"","section_id":97,"section_instance":1,"site_id":2,"slug":"logo--3","title":"Logo","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":387,"is_enabled":true,"is_full_html":false,"lft":6,"parent_id":385,"rgt":9,"root_id":383,"section_context":"","section_id":2,"section_instance":21,"site_id":2,"slug":"container--31","title":"container","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":388,"is_enabled":true,"is_full_html":false,"lft":7,"parent_id":387,"rgt":8,"root_id":383,"section_context":"","section_id":101,"section_instance":2,"site_id":2,"slug":"logged-unlogged-menu--3","title":"logged&unlogged menu","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":389,"is_enabled":true,"is_full_html":false,"lft":12,"parent_id":383,"rgt":19,"root_id":383,"section_context":"","section_id":2,"section_instance":37,"site_id":2,"slug":"container37--2","title":"container37","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":390,"is_enabled":true,"is_full_html":false,"lft":13,"parent_id":389,"rgt":18,"root_id":383,"section_context":"","section_id":2,"section_instance":19,"site_id":2,"slug":"container--32","title":"container","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":391,"is_enabled":true,"is_full_html":false,"lft":14,"parent_id":390,"rgt":15,"root_id":383,"section_context":"","section_id":3,"section_instance":3,"site_id":2,"slug":"main-menu--3","title":"Main menu","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":392,"is_enabled":true,"is_full_html":false,"lft":16,"parent_id":390,"rgt":17,"root_id":383,"section_context":"","section_id":121,"section_instance":1,"site_id":2,"slug":"mini-cart--2","title":"Mini cart","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":393,"is_enabled":true,"is_full_html":false,"lft":20,"parent_id":383,"rgt":23,"root_id":383,"section_context":"home","section_id":2,"section_instance":26,"site_id":2,"slug":"container--42","title":"container","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":394,"is_enabled":true,"is_full_html":false,"lft":21,"parent_id":393,"rgt":22,"root_id":383,"section_context":"","section_id":114,"section_instance":1,"site_id":2,"slug":"slider","title":"Slider","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":395,"is_enabled":true,"is_full_html":false,"lft":24,"parent_id":383,"rgt":27,"root_id":383,"section_context":"list,detail","section_id":2,"section_instance":41,"site_id":2,"slug":"container41","title":"container41","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":396,"is_enabled":true,"is_full_html":false,"lft":25,"parent_id":395,"rgt":26,"root_id":383,"section_context":"","section_id":11,"section_instance":3,"site_id":2,"slug":"text3--2","title":"text3","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":397,"is_enabled":true,"is_full_html":false,"lft":28,"parent_id":383,"rgt":165,"root_id":383,"section_context":"","section_id":2,"section_instance":2,"site_id":2,"slug":"content--3","title":"content","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":398,"is_enabled":true,"is_full_html":false,"lft":29,"parent_id":397,"rgt":62,"root_id":383,"section_context":"home","section_id":2,"section_instance":31,"site_id":2,"slug":"container31","title":"container31","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"","data_source_param":"","id":399,"is_enabled":true,"is_full_html":false,"lft":30,"parent_id":398,"rgt":51,"root_id":383,"section_context":"","section_id":2,"section_instance":32,"site_id":2,"slug":"leftside","title":"leftside","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:34.000Z","data_filter":"","data_source":"taxon","data_source_param":"","id":400,"is_enabled":true,"is_full_html":false,"lft":31,"parent_id":399,"rgt":40,"root_id":383,"section_context":"","section_id":2,"section_instance":31,"site_id":2,"slug":"suits","title":"suits","updated_at":"2014-08-02T07:39:34.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":401,"is_enabled":true,"is_full_html":false,"lft":32,"parent_id":400,"rgt":33,"root_id":383,"section_context":"","section_id":50,"section_instance":2,"site_id":2,"slug":"taxon-name2","title":"taxon name2","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":402,"is_enabled":true,"is_full_html":false,"lft":34,"parent_id":400,"rgt":39,"root_id":383,"section_context":"","section_id":2,"section_instance":36,"site_id":2,"slug":"container36","title":"container36","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"gpvs","data_source_param":"","id":403,"is_enabled":true,"is_full_html":false,"lft":35,"parent_id":402,"rgt":38,"root_id":383,"section_context":"","section_id":2,"section_instance":34,"site_id":2,"slug":"container34","title":"container34","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":404,"is_enabled":true,"is_full_html":false,"lft":36,"parent_id":403,"rgt":37,"root_id":383,"section_context":"","section_id":17,"section_instance":2,"site_id":2,"slug":"product-image2","title":"product image2","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"taxon","data_source_param":"","id":405,"is_enabled":true,"is_full_html":false,"lft":41,"parent_id":399,"rgt":50,"root_id":383,"section_context":"","section_id":2,"section_instance":32,"site_id":2,"slug":"fabrics","title":"fabrics","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":406,"is_enabled":true,"is_full_html":false,"lft":42,"parent_id":405,"rgt":43,"root_id":383,"section_context":"","section_id":50,"section_instance":3,"site_id":2,"slug":"taxon-name3","title":"taxon name3","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":407,"is_enabled":true,"is_full_html":false,"lft":44,"parent_id":405,"rgt":49,"root_id":383,"section_context":"","section_id":2,"section_instance":38,"site_id":2,"slug":"container38","title":"container38","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"gpvs","data_source_param":"","id":408,"is_enabled":true,"is_full_html":false,"lft":45,"parent_id":407,"rgt":48,"root_id":383,"section_context":"","section_id":2,"section_instance":35,"site_id":2,"slug":"container35","title":"container35","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":409,"is_enabled":true,"is_full_html":false,"lft":46,"parent_id":408,"rgt":47,"root_id":383,"section_context":"","section_id":17,"section_instance":3,"site_id":2,"slug":"product-image3","title":"product image3","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":410,"is_enabled":true,"is_full_html":false,"lft":52,"parent_id":398,"rgt":61,"root_id":383,"section_context":"","section_id":2,"section_instance":33,"site_id":2,"slug":"rightside","title":"rightside","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":411,"is_enabled":true,"is_full_html":false,"lft":53,"parent_id":410,"rgt":60,"root_id":383,"section_context":"","section_id":2,"section_instance":37,"site_id":2,"slug":"container37","title":"container37","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":412,"is_enabled":true,"is_full_html":false,"lft":54,"parent_id":411,"rgt":55,"root_id":383,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name3","title":"taxonomy name3","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"taxon","data_source_param":"","id":413,"is_enabled":true,"is_full_html":false,"lft":56,"parent_id":411,"rgt":59,"root_id":383,"section_context":"","section_id":2,"section_instance":33,"site_id":2,"slug":"container33","title":"container33","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":414,"is_enabled":true,"is_full_html":false,"lft":57,"parent_id":413,"rgt":58,"root_id":383,"section_context":"","section_id":119,"section_instance":1,"site_id":2,"slug":"taxon-icon1","title":"Taxon icon1","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":415,"is_enabled":true,"is_full_html":false,"lft":63,"parent_id":397,"rgt":76,"root_id":383,"section_context":"list,detail","section_id":2,"section_instance":4,"site_id":2,"slug":"lftnav--3","title":"lftnav","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":416,"is_enabled":true,"is_full_html":false,"lft":64,"parent_id":415,"rgt":69,"root_id":383,"section_context":"","section_id":2,"section_instance":12,"site_id":2,"slug":"container--33","title":"container","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":417,"is_enabled":true,"is_full_html":false,"lft":65,"parent_id":416,"rgt":66,"root_id":383,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name--5","title":"taxonomy name","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":418,"is_enabled":true,"is_full_html":false,"lft":67,"parent_id":416,"rgt":68,"root_id":383,"section_context":"","section_id":6,"section_instance":1,"site_id":2,"slug":"vmenu--5","title":"vmenu","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":419,"is_enabled":true,"is_full_html":false,"lft":70,"parent_id":415,"rgt":75,"root_id":383,"section_context":"","section_id":2,"section_instance":13,"site_id":2,"slug":"container--34","title":"container","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":420,"is_enabled":true,"is_full_html":false,"lft":71,"parent_id":419,"rgt":72,"root_id":383,"section_context":"","section_id":40,"section_instance":3,"site_id":2,"slug":"taxonomy-name--6","title":"taxonomy name","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":421,"is_enabled":true,"is_full_html":false,"lft":73,"parent_id":419,"rgt":74,"root_id":383,"section_context":"","section_id":6,"section_instance":2,"site_id":2,"slug":"vmenu--6","title":"vmenu","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":422,"is_enabled":true,"is_full_html":false,"lft":77,"parent_id":397,"rgt":162,"root_id":383,"section_context":"","section_id":2,"section_instance":5,"site_id":2,"slug":"main-content--3","title":"main content","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"gpvs","data_source_param":"","id":423,"is_enabled":true,"is_full_html":false,"lft":78,"parent_id":422,"rgt":87,"root_id":383,"section_context":"list","section_id":2,"section_instance":6,"site_id":2,"slug":"product-list--3","title":"product list","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":424,"is_enabled":true,"is_full_html":false,"lft":79,"parent_id":423,"rgt":86,"root_id":383,"section_context":"","section_id":2,"section_instance":8,"site_id":2,"slug":"container--35","title":"container","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":425,"is_enabled":true,"is_full_html":false,"lft":80,"parent_id":424,"rgt":81,"root_id":383,"section_context":"","section_id":17,"section_instance":1,"site_id":2,"slug":"product-image--3","title":"product image","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:35.000Z","data_filter":"","data_source":"","data_source_param":"","id":426,"is_enabled":true,"is_full_html":false,"lft":82,"parent_id":424,"rgt":83,"root_id":383,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"product-name--5","title":"product name","updated_at":"2014-08-02T07:39:35.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":427,"is_enabled":true,"is_full_html":false,"lft":84,"parent_id":424,"rgt":85,"root_id":383,"section_context":"","section_id":30,"section_instance":2,"site_id":2,"slug":"product-price--5","title":"product price","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"this_product","data_source_param":"","id":428,"is_enabled":true,"is_full_html":false,"lft":88,"parent_id":422,"rgt":117,"root_id":383,"section_context":"detail","section_id":2,"section_instance":7,"site_id":2,"slug":"product-detail--3","title":"product detail","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":429,"is_enabled":true,"is_full_html":false,"lft":89,"parent_id":428,"rgt":94,"root_id":383,"section_context":"","section_id":2,"section_instance":10,"site_id":2,"slug":"container--36","title":"container","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":430,"is_enabled":true,"is_full_html":false,"lft":90,"parent_id":429,"rgt":91,"root_id":383,"section_context":"","section_id":94,"section_instance":2,"site_id":2,"slug":"image-with-thumbnails--3","title":"image with thumbnails","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":431,"is_enabled":true,"is_full_html":false,"lft":92,"parent_id":429,"rgt":93,"root_id":383,"section_context":"","section_id":28,"section_instance":2,"site_id":2,"slug":"product_properties--3","title":"product_properties","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":432,"is_enabled":true,"is_full_html":false,"lft":95,"parent_id":428,"rgt":112,"root_id":383,"section_context":"","section_id":2,"section_instance":9,"site_id":2,"slug":"container--37","title":"container","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":433,"is_enabled":true,"is_full_html":false,"lft":96,"parent_id":432,"rgt":97,"root_id":383,"section_context":"","section_id":13,"section_instance":3,"site_id":2,"slug":"product-name--6","title":"product name","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":434,"is_enabled":true,"is_full_html":false,"lft":98,"parent_id":432,"rgt":111,"root_id":383,"section_context":"","section_id":2,"section_instance":11,"site_id":2,"slug":"container--38","title":"container","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":435,"is_enabled":true,"is_full_html":false,"lft":99,"parent_id":434,"rgt":100,"root_id":383,"section_context":"","section_id":107,"section_instance":1,"site_id":2,"slug":"product-option-values--3","title":"Product option values","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":436,"is_enabled":true,"is_full_html":false,"lft":101,"parent_id":434,"rgt":110,"root_id":383,"section_context":"","section_id":2,"section_instance":25,"site_id":2,"slug":"container--39","title":"container","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":437,"is_enabled":true,"is_full_html":false,"lft":102,"parent_id":436,"rgt":103,"root_id":383,"section_context":"","section_id":30,"section_instance":1,"site_id":2,"slug":"product-price--6","title":"product price","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":438,"is_enabled":true,"is_full_html":false,"lft":104,"parent_id":436,"rgt":109,"root_id":383,"section_context":"","section_id":2,"section_instance":24,"site_id":2,"slug":"container--40","title":"container","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":439,"is_enabled":true,"is_full_html":false,"lft":105,"parent_id":438,"rgt":106,"root_id":383,"section_context":"","section_id":32,"section_instance":2,"site_id":2,"slug":"product-quantity--3","title":"product quantity","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":440,"is_enabled":true,"is_full_html":false,"lft":107,"parent_id":438,"rgt":108,"root_id":383,"section_context":"","section_id":34,"section_instance":2,"site_id":2,"slug":"product-atc--3","title":"product atc","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":441,"is_enabled":true,"is_full_html":false,"lft":113,"parent_id":428,"rgt":116,"root_id":383,"section_context":"","section_id":2,"section_instance":40,"site_id":2,"slug":"container40","title":"container40","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":442,"is_enabled":true,"is_full_html":false,"lft":114,"parent_id":441,"rgt":115,"root_id":383,"section_context":"","section_id":15,"section_instance":1,"site_id":2,"slug":"product-description--3","title":"product description","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":443,"is_enabled":true,"is_full_html":false,"lft":118,"parent_id":422,"rgt":161,"root_id":383,"section_context":"cart,checkout,thanks,account,signup,login,password","section_id":2,"section_instance":14,"site_id":2,"slug":"other-pages--3","title":"other pages","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":444,"is_enabled":true,"is_full_html":false,"lft":119,"parent_id":443,"rgt":120,"root_id":383,"section_context":"","section_id":50,"section_instance":1,"site_id":2,"slug":"taxon-name--3","title":"taxon name","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":445,"is_enabled":true,"is_full_html":false,"lft":121,"parent_id":443,"rgt":126,"root_id":383,"section_context":"cart","section_id":36,"section_instance":1,"site_id":2,"slug":"cart--3","title":"cart","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":446,"is_enabled":true,"is_full_html":false,"lft":122,"parent_id":445,"rgt":123,"root_id":383,"section_context":"","section_id":42,"section_instance":2,"site_id":2,"slug":"cart-items--3","title":"cart items","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":447,"is_enabled":true,"is_full_html":false,"lft":124,"parent_id":445,"rgt":125,"root_id":383,"section_context":"","section_id":44,"section_instance":2,"site_id":2,"slug":"order-total-price--3","title":"order total price","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":448,"is_enabled":true,"is_full_html":false,"lft":127,"parent_id":443,"rgt":132,"root_id":383,"section_context":"checkout","section_id":46,"section_instance":2,"site_id":2,"slug":"checkout--3","title":"checkout","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":449,"is_enabled":true,"is_full_html":false,"lft":128,"parent_id":448,"rgt":129,"root_id":383,"section_context":"","section_id":69,"section_instance":1,"site_id":2,"slug":"ship-form--3","title":"ship form","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":450,"is_enabled":true,"is_full_html":false,"lft":130,"parent_id":448,"rgt":131,"root_id":383,"section_context":"","section_id":72,"section_instance":1,"site_id":2,"slug":"payment-form--3","title":"payment form","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:36.000Z","data_filter":"","data_source":"","data_source_param":"","id":451,"is_enabled":true,"is_full_html":false,"lft":133,"parent_id":443,"rgt":142,"root_id":383,"section_context":"thanks","section_id":2,"section_instance":18,"site_id":2,"slug":"thanks--3","title":"thanks","updated_at":"2014-08-02T07:39:36.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":452,"is_enabled":true,"is_full_html":false,"lft":134,"parent_id":451,"rgt":139,"root_id":383,"section_context":"","section_id":2,"section_instance":23,"site_id":2,"slug":"container--41","title":"container","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":453,"is_enabled":true,"is_full_html":false,"lft":135,"parent_id":452,"rgt":136,"root_id":383,"section_context":"","section_id":52,"section_instance":1,"site_id":2,"slug":"order-address--3","title":"order address","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":454,"is_enabled":true,"is_full_html":false,"lft":137,"parent_id":452,"rgt":138,"root_id":383,"section_context":"","section_id":55,"section_instance":1,"site_id":2,"slug":"order-payment--3","title":"order payment","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":455,"is_enabled":true,"is_full_html":false,"lft":140,"parent_id":451,"rgt":141,"root_id":383,"section_context":"","section_id":58,"section_instance":1,"site_id":2,"slug":"order-items--3","title":"order items","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":456,"is_enabled":true,"is_full_html":false,"lft":143,"parent_id":443,"rgt":148,"root_id":383,"section_context":"account","section_id":2,"section_instance":17,"site_id":2,"slug":"account--3","title":"account","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":457,"is_enabled":true,"is_full_html":false,"lft":144,"parent_id":456,"rgt":145,"root_id":383,"section_context":"","section_id":85,"section_instance":1,"site_id":2,"slug":"profile--3","title":"profile","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":458,"is_enabled":true,"is_full_html":false,"lft":146,"parent_id":456,"rgt":147,"root_id":383,"section_context":"","section_id":82,"section_instance":1,"site_id":2,"slug":"order-list--3","title":"order list","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":459,"is_enabled":true,"is_full_html":false,"lft":149,"parent_id":443,"rgt":152,"root_id":383,"section_context":"login","section_id":2,"section_instance":15,"site_id":2,"slug":"login--3","title":"login","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":460,"is_enabled":true,"is_full_html":false,"lft":150,"parent_id":459,"rgt":151,"root_id":383,"section_context":"","section_id":61,"section_instance":1,"site_id":2,"slug":"login-form--3","title":"login form","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":461,"is_enabled":true,"is_full_html":false,"lft":153,"parent_id":443,"rgt":156,"root_id":383,"section_context":"signup","section_id":2,"section_instance":16,"site_id":2,"slug":"signup--3","title":"signup","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":462,"is_enabled":true,"is_full_html":false,"lft":154,"parent_id":461,"rgt":155,"root_id":383,"section_context":"","section_id":64,"section_instance":1,"site_id":2,"slug":"sign-up-form--3","title":"sign up form","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":463,"is_enabled":true,"is_full_html":false,"lft":157,"parent_id":443,"rgt":160,"root_id":383,"section_context":"password","section_id":2,"section_instance":22,"site_id":2,"slug":"password--3","title":"password","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":464,"is_enabled":true,"is_full_html":false,"lft":158,"parent_id":463,"rgt":159,"root_id":383,"section_context":"","section_id":104,"section_instance":1,"site_id":2,"slug":"password-recover-form--3","title":"password recover form","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":465,"is_enabled":true,"is_full_html":false,"lft":163,"parent_id":397,"rgt":164,"root_id":383,"section_context":"","section_id":11,"section_instance":3,"site_id":2,"slug":"text3","title":"text3","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":466,"is_enabled":true,"is_full_html":false,"lft":166,"parent_id":383,"rgt":171,"root_id":383,"section_context":"","section_id":2,"section_instance":3,"site_id":2,"slug":"footer--3","title":"footer","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":467,"is_enabled":true,"is_full_html":false,"lft":167,"parent_id":466,"rgt":170,"root_id":383,"section_context":"","section_id":2,"section_instance":39,"site_id":2,"slug":"container39","title":"container39","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":468,"is_enabled":true,"is_full_html":false,"lft":168,"parent_id":467,"rgt":169,"root_id":383,"section_context":"","section_id":11,"section_instance":1,"site_id":2,"slug":"copyright--3","title":"copyright","updated_at":"2014-08-02T07:39:37.000Z"}},{"page_layout":{"content_param":0,"copy_from_root_id":270,"created_at":"2014-08-02T07:39:37.000Z","data_filter":"","data_source":"","data_source_param":"","id":469,"is_enabled":true,"is_full_html":false,"lft":172,"parent_id":383,"rgt":173,"root_id":383,"section_context":"","section_id":90,"section_instance":2,"site_id":2,"slug":"dialog--3","title":"dialog","updated_at":"2014-08-02T07:39:37.000Z"}}],"template_files":[{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"6a5e31b1jw1doccdf5tdqj.jpg","attachment_file_size":16469,"attachment_height":null,"attachment_updated_at":"2014-08-02T07:39:40.000Z","attachment_width":null,"created_at":"2014-08-02T07:39:31.000Z","id":21,"theme_id":5}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"ushan-logo.jpg","attachment_file_size":6834,"attachment_height":null,"attachment_updated_at":"2014-08-02T07:39:40.000Z","attachment_width":null,"created_at":"2014-08-02T07:39:31.000Z","id":22,"theme_id":5}},{"template_file":{"attachment_content_type":"image/gif","attachment_file_name":"title_bg.gif","attachment_file_size":1340,"attachment_height":null,"attachment_updated_at":"2014-08-02T07:39:40.000Z","attachment_width":null,"created_at":"2014-08-02T07:39:31.000Z","id":23,"theme_id":5}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"howbuy.jpg","attachment_file_size":59008,"attachment_height":null,"attachment_updated_at":"2014-08-02T07:39:40.000Z","attachment_width":null,"created_at":"2014-08-02T07:39:31.000Z","id":24,"theme_id":5}},{"template_file":{"attachment_content_type":"image/gif","attachment_file_name":"nav_bg_40px.gif","attachment_file_size":255,"attachment_height":null,"attachment_updated_at":"2014-08-02T07:39:40.000Z","attachment_width":null,"created_at":"2014-08-02T07:39:31.000Z","id":25,"theme_id":5}},{"template_file":{"attachment_content_type":"image/gif","attachment_file_name":"tab_on_1px.gif","attachment_file_size":452,"attachment_height":null,"attachment_updated_at":"2014-08-02T07:39:40.000Z","attachment_width":null,"created_at":"2014-08-02T07:39:31.000Z","id":26,"theme_id":5}},{"template_file":{"attachment_content_type":"image/jpeg","attachment_file_name":"tiao.jpg","attachment_file_size":19840,"attachment_height":null,"attachment_updated_at":"2014-08-02T07:39:40.000Z","attachment_width":null,"created_at":"2014-08-02T07:39:31.000Z","id":27,"theme_id":5}},{"template_file":{"attachment_content_type":"image/gif","attachment_file_name":"nav_not.gif","attachment_file_size":519,"attachment_height":null,"attachment_updated_at":"2014-08-02T07:39:40.000Z","attachment_width":null,"created_at":"2014-08-02T07:39:31.000Z","id":28,"theme_id":5}}],"template_releases":[{"template_release":{"created_at":"2014-08-02T07:39:31.000Z","id":13,"name":"just a test","theme_id":5,"updated_at":"2014-07-26T08:14:33.000Z"}},{"template_release":{"created_at":"2014-08-03T03:15:19.000Z","id":14,"name":"just a test","theme_id":5,"updated_at":"2014-08-03T03:15:19.000Z"}},{"template_release":{"created_at":"2014-08-03T03:24:55.000Z","id":15,"name":"just a test","theme_id":5,"updated_at":"2014-08-03T03:24:55.000Z"}}]} \ No newline at end of file diff --git a/spree_theme/db/themes/designs/2_5_1410526949/6a5e31b1jw1doccdf5tdqj.jpg b/spree_theme/db/themes/designs/2_5_1410526949/6a5e31b1jw1doccdf5tdqj.jpg deleted file mode 100644 index 7fff0f08..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1410526949/6a5e31b1jw1doccdf5tdqj.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1410526949/howbuy.jpg b/spree_theme/db/themes/designs/2_5_1410526949/howbuy.jpg deleted file mode 100644 index bfeaca08..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1410526949/howbuy.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1410526949/nav_bg_40px.gif b/spree_theme/db/themes/designs/2_5_1410526949/nav_bg_40px.gif deleted file mode 100644 index c0bffae4..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1410526949/nav_bg_40px.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1410526949/nav_not.gif b/spree_theme/db/themes/designs/2_5_1410526949/nav_not.gif deleted file mode 100644 index c69d645d..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1410526949/nav_not.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1410526949/tab_on_1px.gif b/spree_theme/db/themes/designs/2_5_1410526949/tab_on_1px.gif deleted file mode 100644 index 5e4e066e..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1410526949/tab_on_1px.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1410526949/tiao.jpg b/spree_theme/db/themes/designs/2_5_1410526949/tiao.jpg deleted file mode 100644 index 203d1408..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1410526949/tiao.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1410526949/title_bg.gif b/spree_theme/db/themes/designs/2_5_1410526949/title_bg.gif deleted file mode 100644 index 26c8046b..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1410526949/title_bg.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/2_5_1410526949/ushan-logo.jpg b/spree_theme/db/themes/designs/2_5_1410526949/ushan-logo.jpg deleted file mode 100644 index 9455e3de..00000000 Binary files a/spree_theme/db/themes/designs/2_5_1410526949/ushan-logo.jpg and /dev/null differ diff --git a/spree_theme/db/themes/designs/config_template.rb b/spree_theme/db/themes/designs/config_template.rb new file mode 100644 index 00000000..441bda46 --- /dev/null +++ b/spree_theme/db/themes/designs/config_template.rb @@ -0,0 +1,13 @@ +template = Spree::TemplateTheme.first +taxon_class = SpreeTheme.taxon_class + +categories = taxon_class.find_by_name("Categories") +brands = taxon_class.find_by_name("Brand") +main_menu = taxon_class.find_by_name("MainMenu") + +#template.assign_resource(main_menu, main_menu_section) +main_menu_section = template.page_layouts.where(:title=>'Main menu').first +#template.assign_resource(main_menu, main_menu_section) + +category_section = template.page_layouts.where(:title=>'Categories').first +template.assign_resource(categories, category_section) diff --git a/spree_theme/db/themes/first/site_form.rb b/spree_theme/db/themes/first/site_form.rb new file mode 100644 index 00000000..509a0ad1 --- /dev/null +++ b/spree_theme/db/themes/first/site_form.rb @@ -0,0 +1,8 @@ +include SpreeTheme::SeedHelper +# +# root - site_form +# +# +template = Spree::TemplateTheme.create_plain_template( section_piece_hash['root2'], "TemplateSiteForm" ) + +site_form_section = template.add_section(section_hash['site-form']) diff --git a/spree_theme/db/themes/template_images/logo.gif b/spree_theme/db/themes/template_images/logo.gif deleted file mode 100644 index 2782a6b2..00000000 Binary files a/spree_theme/db/themes/template_images/logo.gif and /dev/null differ diff --git a/spree_theme/db/themes/designs/1_2_1414758766/dalianshop-logo2.png b/spree_theme/db/themes/template_images/logo.png similarity index 100% rename from spree_theme/db/themes/designs/1_2_1414758766/dalianshop-logo2.png rename to spree_theme/db/themes/template_images/logo.png diff --git a/spree_theme/db/themes/test/for_page_resources.rb b/spree_theme/db/themes/test/for_page_resources.rb index 1398e1e9..b1890c3d 100644 --- a/spree_theme/db/themes/test/for_page_resources.rb +++ b/spree_theme/db/themes/test/for_page_resources.rb @@ -1,6 +1,6 @@ # # root - container(assign_taxon: 'category', data_source:menu) -# - container (data_source:gpvs) +# - container (data_source:gpvs) # - product_name # # @@ -13,7 +13,7 @@ section_hash= objects.inject({}){|h,sp| h[sp.slug] = sp; h} # puts "section_hash=#{section_hash.keys}" template = Spree::TemplateTheme.create_plain_template(section_hash['root2'], header3) -document = template.page_layout +document = template.page_layout_root menu_container = template.add_section(section_hash['container'], document) gpvs_container = template.add_section(section_hash['container'], menu_container) @@ -23,4 +23,3 @@ gpvs_container.update_attribute(:data_source, Spree::PageLayout::DataSourceEnum.gpvs ) template.assign_resource(categories, menu_container) - diff --git a/spree_theme/db/themes/weizheng b/spree_theme/db/themes/weizheng deleted file mode 100644 index f70dddfd..00000000 --- a/spree_theme/db/themes/weizheng +++ /dev/null @@ -1,18 +0,0 @@ -辽宁维正知识产权代理有限公司 - - 主菜单 - 首页 关于维正 联系我们 - - - 信息导航 这些是文章 - 商标新闻 - 政策法规 - - - 业务范围 这些都是产品/服务 - 商标服务 - 专利服务 - 版权服务 - 维权服务 - 诉讼服务 - \ No newline at end of file diff --git a/spree_theme/doc/2017/remove-specific-taxon.txt b/spree_theme/doc/2017/remove-specific-taxon.txt new file mode 100644 index 00000000..ab5592c6 --- /dev/null +++ b/spree_theme/doc/2017/remove-specific-taxon.txt @@ -0,0 +1,1242 @@ + select * from spree_template_themes where assigned_resource_ids like '%specific%'; ++-----+---------+---------------------+------------+--------------------------------------------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+---------------------+-----------+--------------+-----------+------------------+-----------------+----------+--------+--------------+--------------+------------------+----------+ +| id | site_id | page_layout_root_id | release_id | title | slug | assigned_resource_ids | created_at | updated_at | is_public | for_terminal | master_id | last_released_at | last_changed_at | store_id | locale | home_page_id | copy_from_id | user_terminal_id | renderer | ++-----+---------+---------------------+------------+--------------------------------------------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+---------------------+-----------+--------------+-----------+------------------+-----------------+----------+--------+--------------+--------------+------------------+----------+ +| 2 | 1 | 64 | 148 | Dalianshops | | --- +'69': + spree/taxon: + - 23 +'78': + spree/template_text: + - 1 +'79': + spree/template_text: + - 0 +'80': + spree/template_text: + - 0 +'82': + spree/template_text: + - 4 +'71': + spree/template_file: + - 49 +'550': + spree/taxon: + - 134 + spree/specific_taxon: + - 25 +'557': + spree/taxon: + - 139 +'561': + spree/specific_taxon: + - 28 +'562': + spree/template_text: + - 16 +'651': + spree/specific_taxon: + - 208 +'654': + spree/taxon: + - 0 +'662': + spree/specific_taxon: + - 27 +'663': + spree/template_text: + - 17 +'652': + spree/taxon: + - 208 +'665': + spree/taxon: + - 214 +'695': + spree/taxon: + - 313 + | 2014-03-09 01:13:21 | 2017-12-17 11:17:06 | 0 | 0 | 0 | NULL | NULL | 1 | NULL | NULL | 0 | 1 | 1 | +| 42 | 336 | 1226 | 146 | 北电新能源 | | --- +'911': + spree/taxon: + - 474 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 477 +'1121': + spree/taxon: + - 602 +'1123': + spree/taxon: + - 603 +'1228': + spree/template_file: + - 112 +'1230': + spree/taxon: + - 0 +'1234': + spree/taxon: + - 477 +'1241': + spree/taxon: + - 707 +'1245': + spree/taxon: + - 729 +'1247': + spree/taxon: + - 726 +'1254': + spree/taxon: + - 491 +'1260': + spree/taxon: + - 715 +'1267': + spree/taxon: + - 0 +'1274': + spree/taxon: + - 715 +'1291': + spree/template_file: + - 93 +'1292': + spree/taxon: + - 725 +'1312': + spree/taxon: + - 0 +'1317': + spree/template_text: + - 23 +'1322': + spree/taxon: + - 722 +'1318': + spree/taxon: + - 723 +'1330': + spree/taxon: + - 724 +'1332': + spree/taxon: + - 728 +'1493': + spree/template_file: + - 114 +'1494': + spree/template_file: + - 131 +'1501': + spree/template_text: + - 31 +'1502': + spree/specific_taxon: + - 0 +'1508': + spree/taxon: + - 734 +'1621': + spree/taxon: + - 940 +'2622': + spree/template_text: + - 100 + | 2015-07-27 12:32:27 | 2017-12-17 11:17:06 | 1 | 0 | 0 | NULL | NULL | 336 | NULL | NULL | 0 | 1 | 1 | +| 45 | 1 | 1555 | 234 | GetStore | | --- +'79': + spree/template_text: + - 0 +'80': + spree/template_text: + - 0 +'654': + spree/taxon: + - 0 +'1558': + spree/template_file: + - 292 +'1559': + spree/taxon: + - 214 +'1562': + spree/taxon: + - 932 +'1565': + spree/template_text: + - 1 +'1570': + spree/taxon: + - 1009 + spree/specific_taxon: + - 0 +'1577': + spree/taxon: + - 139 +'1583': + spree/specific_taxon: + - 938 +'1584': + spree/template_text: + - 16 +'1585': + spree/specific_taxon: + - 208 +'1586': + spree/taxon: + - 208 +'1595': + spree/specific_taxon: + - 27 +'1596': + spree/template_text: + - 17 +'1600': + spree/template_text: + - 41 +'1603': + spree/taxon: + - 313 +'1615': + spree/taxon: + - 748 +'1637': + spree/template_text: + - 36 +'1638': + spree/taxon: + - 997 +'1639': + spree/taxon: + - 997 +'1644': + spree/template_text: + - 37 +'1646': + spree/template_text: + - 38 +'1648': + spree/template_text: + - 39 +'1650': + spree/template_text: + - 40 +'1653': + spree/taxon: + - 999 +'1669': + spree/specific_taxon: + - 1009 +'1670': + spree/taxon: + - 0 +'1674': + spree/taxon: + - 1016 +'1677': + spree/template_text: + - 42 +'1679': + spree/template_text: + - 43 +'1678': + spree/specific_taxon: + - 937 +'1680': + spree/taxon: + - 997 +'1682': + spree/template_text: + - 44 +'1683': + spree/template_text: + - 45 + | 2015-09-20 10:05:17 | 2017-12-17 11:15:25 | 0 | 0 | 0 | NULL | NULL | 1 | NULL | NULL | 0 | 1 | 1 | +| 53 | 342 | 1226 | 146 | Imported 北电新能源 | | --- +'911': + spree/taxon: + - 944 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 947 +'1121': + spree/taxon: + - 0 +'1123': + spree/taxon: + - 0 +'1228': + spree/template_file: + - 146 +'1230': + spree/taxon: + - 0 +'1234': + spree/taxon: + - 947 +'1241': + spree/taxon: + - 950 +'1245': + spree/taxon: + - 959 +'1247': + spree/taxon: + - 970 +'1254': + spree/taxon: + - 971 +'1260': + spree/taxon: + - 963 +'1267': + spree/taxon: + - 0 +'1274': + spree/taxon: + - 963 +'1291': + spree/template_file: + - 0 +'1292': + spree/taxon: + - 969 +'1312': + spree/taxon: + - 0 +'1317': + spree/template_text: + - 33 +'1322': + spree/taxon: + - 983 +'1318': + spree/taxon: + - 984 +'1330': + spree/taxon: + - 985 +'1332': + spree/taxon: + - 973 +'1493': + spree/template_file: + - 147 +'1494': + spree/template_file: + - 148 +'1501': + spree/template_text: + - 34 +'1502': + spree/specific_taxon: + - 0 +'1508': + spree/taxon: + - 974 +'1621': + spree/taxon: + - 978 +'2620': + spree/template_text: + - 91 +'2622': + spree/template_text: + - 101 + | 2015-10-17 08:53:27 | 2017-12-17 11:17:06 | 1 | 0 | 0 | NULL | NULL | 342 | NULL | NULL | 42 | 1 | 1 | +| 73 | 352 | 1226 | 146 | Imported 北电新能源 | | --- +'911': + spree/taxon: + - 1335 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 1338 +'1121': + spree/taxon: + - 0 +'1123': + spree/taxon: + - 0 +'1228': + spree/template_file: + - 0 +'1230': + spree/taxon: + - 0 +'1234': + spree/taxon: + - 1338 +'1241': + spree/taxon: + - 1341 +'1245': + spree/taxon: + - 1350 +'1247': + spree/taxon: + - 0 +'1254': + spree/taxon: + - 0 +'1260': + spree/taxon: + - 1354 +'1267': + spree/taxon: + - 0 +'1274': + spree/taxon: + - 1354 +'1291': + spree/template_file: + - 0 +'1292': + spree/taxon: + - 1360 +'1312': + spree/taxon: + - 0 +'1317': + spree/template_text: + - 60 +'1322': + spree/taxon: + - 0 +'1318': + spree/taxon: + - 0 +'1330': + spree/taxon: + - 0 +'1332': + spree/taxon: + - 0 +'1493': + spree/template_file: + - 0 +'1494': + spree/template_file: + - 0 +'1501': + spree/template_text: + - 61 +'1502': + spree/specific_taxon: + - 0 +'1508': + spree/taxon: + - 1365 +'1621': + spree/taxon: + - 1369 + | 2016-03-18 06:54:07 | 2017-12-17 11:17:07 | 1 | 0 | 0 | NULL | NULL | 352 | NULL | NULL | 42 | 1 | 1 | +| 77 | 336 | 1916 | 177 | 大连中和能源 | | --- +'911': + spree/taxon: + - 474 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 477 +'1121': + spree/taxon: + - 602 +'1123': + spree/taxon: + - 603 +'1230': + spree/taxon: + - 0 +'1267': + spree/taxon: + - 0 +'1312': + spree/taxon: + - 0 +'1502': + spree/specific_taxon: + - 0 +'1918': + spree/template_file: + - 206 +'1924': + spree/taxon: + - 0 +'1931': + spree/taxon: + - 707 +'1934': + spree/taxon: + - 729 +'1937': + spree/taxon: + - 727 +'1941': + spree/template_file: + - 114 +'1945': + spree/taxon: + - 722 +'1953': + spree/taxon: + - 724 +'1956': + spree/template_file: + - 131 +'1957': + spree/taxon: + - 728 +'1959': + spree/template_text: + - 66 +'1961': + spree/taxon: + - 726 +'1967': + spree/taxon: + - 723 +'1974': + spree/taxon: + - 715 +'1982': + spree/taxon: + - 715 +'2002': + spree/template_file: + - 93 +'2003': + spree/taxon: + - 725 +'2028': + spree/taxon: + - 734 +'2048': + spree/taxon: + - 940 +'2064': + spree/template_text: + - 23 +'2071': + spree/template_text: + - 65 +'2074': + spree/taxon: + - 1457 +'2079': + spree/template_file: + - 211 + | 2016-04-02 03:30:55 | 2017-12-17 11:17:07 | 1 | 0 | 0 | NULL | NULL | 336 | NULL | NULL | 0 | 1 | 1 | +| 83 | 353 | 1916 | 177 | Imported 大连中和能源 | | --- +'911': + spree/taxon: + - 1460 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 1463 +'1121': + spree/taxon: + - 0 +'1123': + spree/taxon: + - 0 +'1230': + spree/taxon: + - 0 +'1267': + spree/taxon: + - 0 +'1312': + spree/taxon: + - 0 +'1502': + spree/specific_taxon: + - 0 +'1918': + spree/template_file: + - 212 +'1924': + spree/taxon: + - 0 +'1931': + spree/taxon: + - 1466 +'1934': + spree/taxon: + - 1475 +'1937': + spree/taxon: + - 1487 +'1941': + spree/template_file: + - 0 +'1945': + spree/taxon: + - 1502 +'1953': + spree/taxon: + - 0 +'1956': + spree/template_file: + - 0 +'1957': + spree/taxon: + - 0 +'1959': + spree/template_text: + - 69 +'1961': + spree/taxon: + - 1486 +'1967': + spree/taxon: + - 0 +'1974': + spree/taxon: + - 1479 +'1982': + spree/taxon: + - 1479 +'2002': + spree/template_file: + - 0 +'2003': + spree/taxon: + - 1485 +'2028': + spree/taxon: + - 1490 +'2048': + spree/taxon: + - 1494 +'2064': + spree/template_text: + - 70 +'2071': + spree/template_text: + - 71 +'2074': + spree/taxon: + - 1498 +'2079': + spree/template_file: + - 213 +'1962': + spree/taxon: + - 0 +'1964': + spree/taxon: + - 0 +'1952': + spree/taxon: + - 1489 + | 2016-04-11 04:04:00 | 2017-12-17 11:17:07 | 1 | 0 | 0 | NULL | NULL | 353 | NULL | NULL | 77 | 1 | 1 | +| 105 | 366 | 1916 | 177 | Imported 大连中和能源 | | --- +'911': + spree/taxon: + - 1792 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 1795 +'1121': + spree/taxon: + - 0 +'1123': + spree/taxon: + - 0 +'1230': + spree/taxon: + - 0 +'1267': + spree/taxon: + - 0 +'1312': + spree/taxon: + - 0 +'1502': + spree/specific_taxon: + - 0 +'1918': + spree/template_file: + - 0 +'1924': + spree/taxon: + - 0 +'1931': + spree/taxon: + - 1798 +'1934': + spree/taxon: + - 1807 +'1937': + spree/taxon: + - 0 +'1941': + spree/template_file: + - 0 +'1945': + spree/taxon: + - 0 +'1953': + spree/taxon: + - 0 +'1956': + spree/template_file: + - 0 +'1957': + spree/taxon: + - 0 +'1959': + spree/template_text: + - 109 +'1961': + spree/taxon: + - 0 +'1967': + spree/taxon: + - 0 +'1974': + spree/taxon: + - 1811 +'1982': + spree/taxon: + - 1811 +'2002': + spree/template_file: + - 0 +'2003': + spree/taxon: + - 1817 +'2028': + spree/taxon: + - 1822 +'2048': + spree/taxon: + - 1826 +'2064': + spree/template_text: + - 105 +'2071': + spree/template_text: + - 110 +'2074': + spree/taxon: + - 1830 +'2079': + spree/template_file: + - 0 + | 2016-08-14 15:32:29 | 2017-12-17 11:17:08 | 1 | 0 | 0 | NULL | NULL | 366 | NULL | NULL | 77 | 1 | 1 | +| 110 | 366 | 1226 | 146 | Imported 北电新能源 | | --- +'911': + spree/taxon: + - 1792 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 1795 +'1121': + spree/taxon: + - 0 +'1123': + spree/taxon: + - 0 +'1228': + spree/template_file: + - 0 +'1230': + spree/taxon: + - 0 +'1234': + spree/taxon: + - 1795 +'1241': + spree/taxon: + - 1798 +'1245': + spree/taxon: + - 1807 +'1247': + spree/taxon: + - 0 +'1254': + spree/taxon: + - 0 +'1260': + spree/taxon: + - 1811 +'1267': + spree/taxon: + - 0 +'1274': + spree/taxon: + - 1811 +'1291': + spree/template_file: + - 0 +'1292': + spree/taxon: + - 1817 +'1312': + spree/taxon: + - 0 +'1317': + spree/template_text: + - 105 +'1322': + spree/taxon: + - 0 +'1318': + spree/taxon: + - 0 +'1330': + spree/taxon: + - 0 +'1332': + spree/taxon: + - 0 +'1493': + spree/template_file: + - 0 +'1494': + spree/template_file: + - 0 +'1501': + spree/template_text: + - 113 +'1502': + spree/specific_taxon: + - 0 +'1508': + spree/taxon: + - 1822 +'1621': + spree/taxon: + - 1826 +'2622': + spree/template_text: + - 114 + | 2016-08-14 15:32:44 | 2017-12-17 11:17:08 | 1 | 0 | 0 | NULL | NULL | 366 | NULL | NULL | 42 | 1 | 1 | +| 129 | 374 | 1226 | 146 | Imported 北电新能源 | | --- +'911': + spree/taxon: + - 2154 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 2157 +'1121': + spree/taxon: + - 0 +'1123': + spree/taxon: + - 0 +'1228': + spree/template_file: + - 0 +'1230': + spree/taxon: + - 0 +'1234': + spree/taxon: + - 2157 +'1241': + spree/taxon: + - 2160 +'1245': + spree/taxon: + - 2169 +'1247': + spree/taxon: + - 2180 +'1254': + spree/taxon: + - 2181 +'1260': + spree/taxon: + - 2173 +'1267': + spree/taxon: + - 0 +'1274': + spree/taxon: + - 2173 +'1291': + spree/template_file: + - 0 +'1292': + spree/taxon: + - 2179 +'1312': + spree/taxon: + - 0 +'1317': + spree/template_text: + - 129 +'1322': + spree/taxon: + - 2203 +'1318': + spree/taxon: + - 2204 +'1330': + spree/taxon: + - 2205 +'1332': + spree/taxon: + - 2183 +'1493': + spree/template_file: + - 0 +'1494': + spree/template_file: + - 0 +'1501': + spree/template_text: + - 130 +'1502': + spree/specific_taxon: + - 0 +'1508': + spree/taxon: + - 2184 +'1621': + spree/taxon: + - 2188 +'2622': + spree/template_text: + - 131 +'1255': + spree/taxon: + - 0 +'1492': + spree/taxon: + - 0 +'1320': + spree/taxon: + - 0 +'1319': + spree/taxon: + - 0 + | 2017-01-19 02:39:47 | 2017-12-17 11:17:08 | 1 | 0 | 0 | NULL | NULL | 374 | NULL | NULL | 42 | 1 | 1 | +| 139 | 376 | 1916 | 177 | 大连新动能自动化装备有限公司 | | --- +'911': + spree/taxon: + - 2311 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 2314 +'1121': + spree/taxon: + - 0 +'1123': + spree/taxon: + - 0 +'1230': + spree/taxon: + - 0 +'1267': + spree/taxon: + - 0 +'1312': + spree/taxon: + - 0 +'1502': + spree/specific_taxon: + - 0 +'1918': + spree/template_file: + - 303 +'1924': + spree/taxon: + - 0 +'1931': + spree/taxon: + - 2317 +'1934': + spree/taxon: + - 2326 +'1937': + spree/taxon: + - 2338 +'1941': + spree/template_file: + - 0 +'1945': + spree/taxon: + - 2322 +'1953': + spree/taxon: + - 0 +'1956': + spree/template_file: + - 0 +'1957': + spree/taxon: + - 0 +'1959': + spree/template_text: + - 147 +'1961': + spree/taxon: + - 2319 +'1967': + spree/taxon: + - 0 +'1974': + spree/taxon: + - 2330 +'1982': + spree/taxon: + - 2330 +'2002': + spree/template_file: + - 0 +'2003': + spree/taxon: + - 2336 +'2028': + spree/taxon: + - 2341 +'2048': + spree/taxon: + - 2345 +'2064': + spree/template_text: + - 148 +'2071': + spree/template_text: + - 149 +'2074': + spree/taxon: + - 2349 +'2079': + spree/template_file: + - 302 +'1952': + spree/taxon: + - 2325 + | 2017-04-14 01:50:10 | 2017-12-17 11:17:08 | 1 | 0 | 0 | NULL | NULL | 376 | NULL | NULL | 77 | 1 | 1 | +| 140 | 378 | 1916 | 177 | Imported 大连中和能源 | | --- +'911': + spree/taxon: + - 2353 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 2356 +'1121': + spree/taxon: + - 0 +'1123': + spree/taxon: + - 0 +'1230': + spree/taxon: + - 0 +'1267': + spree/taxon: + - 0 +'1312': + spree/taxon: + - 0 +'1502': + spree/specific_taxon: + - 0 +'1918': + spree/template_file: + - 0 +'1924': + spree/taxon: + - 0 +'1931': + spree/taxon: + - 2359 +'1934': + spree/taxon: + - 2368 +'1937': + spree/taxon: + - 0 +'1941': + spree/template_file: + - 0 +'1945': + spree/taxon: + - 0 +'1953': + spree/taxon: + - 0 +'1956': + spree/template_file: + - 0 +'1957': + spree/taxon: + - 0 +'1959': + spree/template_text: + - 150 +'1961': + spree/taxon: + - 0 +'1967': + spree/taxon: + - 0 +'1974': + spree/taxon: + - 2372 +'1982': + spree/taxon: + - 2372 +'2002': + spree/template_file: + - 0 +'2003': + spree/taxon: + - 2378 +'2028': + spree/taxon: + - 2383 +'2048': + spree/taxon: + - 2387 +'2064': + spree/template_text: + - 151 +'2071': + spree/template_text: + - 152 +'2074': + spree/taxon: + - 2391 +'2079': + spree/template_file: + - 0 + | 2017-07-03 09:18:12 | 2017-12-17 11:17:08 | 1 | 0 | 0 | NULL | NULL | 378 | NULL | NULL | 77 | 1 | 1 | +| 141 | 378 | 1916 | 177 | Imported 大连中和能源 | | --- +'911': + spree/taxon: + - 2394 +'875': + spree/taxon: + - 0 +'961': + spree/taxon: + - 2356 +'1121': + spree/taxon: + - 0 +'1123': + spree/taxon: + - 0 +'1230': + spree/taxon: + - 0 +'1267': + spree/taxon: + - 0 +'1312': + spree/taxon: + - 0 +'1502': + spree/specific_taxon: + - 0 +'1918': + spree/template_file: + - 0 +'1924': + spree/taxon: + - 0 +'1931': + spree/taxon: + - 2397 +'1934': + spree/taxon: + - 2368 +'1937': + spree/taxon: + - 0 +'1941': + spree/template_file: + - 0 +'1945': + spree/taxon: + - 0 +'1953': + spree/taxon: + - 0 +'1956': + spree/template_file: + - 0 +'1957': + spree/taxon: + - 0 +'1959': + spree/template_text: + - 153 +'1961': + spree/taxon: + - 0 +'1967': + spree/taxon: + - 0 +'1974': + spree/taxon: + - 2372 +'1982': + spree/taxon: + - 2372 +'2002': + spree/template_file: + - 0 +'2003': + spree/taxon: + - 2378 +'2028': + spree/taxon: + - 2383 +'2048': + spree/taxon: + - 2387 +'2064': + spree/template_text: + - 154 +'2071': + spree/template_text: + - 155 +'2074': + spree/taxon: + - 2391 +'2079': + spree/template_file: + - 0 + | 2017-07-03 09:18:16 | 2017-12-17 11:17:08 | 1 | 0 | 0 | NULL | NULL | 378 | NULL | NULL | 77 | 1 | 1 | ++-----+---------+---------------------+------------+--------------------------------------------+------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------+---------------------+-----------+--------------+-----------+------------------+-----------------+----------+--------+--------------+--------------+------------------+----------+ +13 rows in set (0.11 sec) diff --git a/spree_theme/doc/2017/todo b/spree_theme/doc/2017/todo new file mode 100644 index 00000000..bd9007bd --- /dev/null +++ b/spree_theme/doc/2017/todo @@ -0,0 +1,2 @@ +1. 合并 spree_posts, spree_theme, 简化系统,便于测试spree_theme +2. 使用 stylish 删除 Spree::SpecificTaxon 功能 diff --git a/spree_theme/doc/clickable b/spree_theme/doc/clickable new file mode 100644 index 00000000..7682d66e --- /dev/null +++ b/spree_theme/doc/clickable @@ -0,0 +1,8 @@ +## how to decide a taxon is clickable? + +if section.clickable? + # section taxon.icon + if taxon.clickable? + taxon.attribute + end +end diff --git a/spree_theme/doc/faq b/spree_theme/doc/faq index eb57d239..afaaeb2c 100644 --- a/spree_theme/doc/faq +++ b/spree_theme/doc/faq @@ -1,27 +1,27 @@ 1. recognize_path in console Rails.appplication.routes.recognize_path - + 2. create directory recursively path = "/tmp/a/b/c" FileUtils.mkdir_p(path) unless File.exists?(path) - + 3. reinstall all migration remove dummy/db/migrate/* rake spree:install:migrations rake spree_auth:install:migrations rake spree_theme:install:migrations - + 4. copy db structure to test rake db:test:clone Recreate the test database from the current environment’s database schema rake db:test:clone_structure Recreate the test database from the development structure rake db:test:load Recreate the test database from the current schema.rb rake db:test:prepare Check for pending migrations and load the test schema rake db:test:purge Empty the test database. - + 5. add a section - rake spree_theme:reload_section_piece + rake spree_theme:reload_section_piece rails r "load SpreeTheme::Engine.root.to_s+'/db/seeds/10_sections.rb'" 6. prepare for test @@ -33,7 +33,7 @@ rake db:seed rake spree_theme:load_sample rake spree_theme:import_template -8. load seed without extra_piece_params +8. load seed without extra_piece_params rake db:seed DISABLE_EXTRA_PARAMS=1 9. load a extra_piece_param rails r "load SpreeTheme::Engine.root.to_s+'/db/extra_piece_params/xxx.rb'" @@ -49,4 +49,12 @@ a. spree_china_checkout/app/view/address/_form b. spree_china_checkout/controllers/spree/cities_controller c. spree_china_checkout/models/spree/address_decorator - \ No newline at end of file + + +12. Module prepend + https://www.justinweiss.com/articles/rails-5-module-number-prepend-and-the-end-of-alias-method-chain/ + + +13. add date format + + spree_abc/config/locales/zh-CN.rails.yml diff --git a/spree_theme/doc/features b/spree_theme/doc/features index a019c64b..1f2e54e5 100644 --- a/spree_theme/doc/features +++ b/spree_theme/doc/features @@ -3,13 +3,13 @@ how to add a section piece param? #sectionA -container # -container - # -text + # -text #page_layoutA -root - # -sectionA - #add a section piece param into continer + # -sectionA + #add a section piece param into continer # - - add record of section_piece_param + + add record of section_piece_param # after create add section_param where section.section_piece_id = ? for each section tree. # after create @@ -19,52 +19,106 @@ how to remove a section piece param? del record of section_piece_param del section_param where section.section_piece_id = ? for each section tree. del param_value where page_layout.section_id = ? for each layout tree. - + features ===================================================================================================== - - + + template_theme -------------- 1. designer could copy template for new design copy html(layout) and css(param_value) - - + + logo ------- - 1. a site has one logo, user could upload own logo +------ + 1. a site has one logo, user could upload own logo logo section always get logo from app configuration. - 2. a template could have own logo, design shop require it. + 2. a template could have own logo, design shop require it. index page ----------- - 1. 在设计商店, 每一个模板,期望有自己的主页,显示相应的产品。 - 2. 在一般商店,如果当前页是系统缺省页面,默认所有产品分配给当前页. + 1. 在设计商店, 每一个模板,期望有自己的主页,显示相应的产品。 + 2. 在一般商店,如果当前页是系统缺省页面,默认所有产品分配给当前页. 期望用户做最少的事情,实现他想要的效果。 模板发布后,可以继续修改而不影响已发布内容(当它成为一个问题时再处理) --------------------------------------------------------------------------------- - 1. 保证生成页面过程中,不再访问page_layouts,sections, section_pieces, param_values - page_layouts,sections, section_pieces => html.erb +-------------------------------------------------------------------------------- + 1. 保证生成页面过程中,不再访问page_layouts,sections, section_pieces, param_values + page_layouts,sections, section_pieces => html.erb param_values => css - + @template.css(:image_style) @template.css(:slides) - 2. assigned_resource_id 是否可以更改? - + 2. assigned_resource_id 是否可以更改? + add table released_page_layout? - -使模板导入简单,用户预览模板,看到喜欢的, 点‘导入’,完成。 import_with_resource --------------------------------------------------------------------------------- + +使模板导入简单,用户预览模板,看到喜欢的, 点‘导入’,完成。 import_with_resource +-------------------------------------------------------------------------------- 模板中使用了taxon, 它表示菜单和分类,如:主菜单,产品分类,图片轮播(slider)。 为了方便用户使用模板,简化导入过程,导入模板时无需配置taxon, 直接拷贝模板所用分类。 - - -#themes-+ + +支持sitemap.xml,robots.txt +-------------------------------------------------------------------------------- +搜索引擎优化 + +#themes-+ +- foreign : themes from design shop - +- native -+ has native layout, can edit, release - + no native layout, can not edit, + +- native -+ has native layout, can edit, release + + no native layout, can not edit, theme.release_id: release id of original theme, means imported that release - - \ No newline at end of file + +a design/shopping site must have a released theme, or redirect to under_contruction. + + requirement + admin.sometld/... is for user preview, ex. admin.somtld/some_taxon + www.sometld/... is for customer, ex. www.sometld/some_taxon + + how roles get layout? + --------------------- + designer: get current editing template + customer: get layout from current site + + path + ---- + 1. designer design product list page + www.tld/tid + 2. designer design product detail page + www.tld/tid/pid + 2. designer release design + www.tld/admin/template_theme + 3. customer view product list + www.tld/tid -> /var/www/shops/n/ + 4. customer view product detail + www.tld/tid/pid + 5. admin manage site + www.tld/admin/... + 6. user login + www.tld/admin/ + 7. customer view live template demo + design.tld -> /var/www/shops/2 + 8. customer browse published template list + www.tld/admin/template_themes/ + 9. shop folders + template folder + t(current template id)-> /var/www/shops/1/t(original template id) + theme image folder: + tx/images + generated layout + tx/tx.html.erb + theme css, js + tx/cssx.css + tx/jsx.js + page_layout image folder: images belongs to shop, like logo + lx + + configure + --------- + website theme_id, index_page should greater than 0. + website index_page could equal to 0. + + extra feature for theme + ----------------------- + option value has image, please look at https://github.com/citrus/spree_variant_options for detail diff --git a/spree_theme/doc/html/add_to_favorites.html b/spree_theme/doc/html/add_to_favorites.html new file mode 100644 index 00000000..9230eabf --- /dev/null +++ b/spree_theme/doc/html/add_to_favorites.html @@ -0,0 +1,58 @@ + + + + + + + + + + +设为首页| +加入收藏 + + diff --git a/spree_theme/doc/html/hover-effect/baidu-map-iframe.html b/spree_theme/doc/html/hover-effect/baidu-map-iframe.html new file mode 100644 index 00000000..3a86890f --- /dev/null +++ b/spree_theme/doc/html/hover-effect/baidu-map-iframe.html @@ -0,0 +1,25 @@ + + + + + 百度地图 Iframe + + + + + + + + + +

                  百度地图 Iframe

                  + + + + diff --git a/spree_theme/doc/html/hover-effect/baidu-map.html b/spree_theme/doc/html/hover-effect/baidu-map.html new file mode 100644 index 00000000..2ed4ce6b --- /dev/null +++ b/spree_theme/doc/html/hover-effect/baidu-map.html @@ -0,0 +1,113 @@ + + + + + + + + 百度地图API自定义地图 + + + + + + + +
                  + +
                  +
                  + + + diff --git a/spree_theme/doc/html/hover-effect/css/normalize.css b/spree_theme/doc/html/hover-effect/css/normalize.css new file mode 100644 index 00000000..458eea1e --- /dev/null +++ b/spree_theme/doc/html/hover-effect/css/normalize.css @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/spree_theme/doc/html/hover-effect/goto-top.html b/spree_theme/doc/html/hover-effect/goto-top.html new file mode 100644 index 00000000..10e1e5b0 --- /dev/null +++ b/spree_theme/doc/html/hover-effect/goto-top.html @@ -0,0 +1,56 @@ + + + + Goto Top test + + + + + + + + + +
                  it long content.
                  + + Top + + + + + diff --git a/spree_theme/doc/html/hover-effect/hover-effect-expansion.html b/spree_theme/doc/html/hover-effect/hover-effect-expansion.html new file mode 100644 index 00000000..9ffceb4f --- /dev/null +++ b/spree_theme/doc/html/hover-effect/hover-effect-expansion.html @@ -0,0 +1,115 @@ + + + + +Accordion Menu Using jQuery + + + + + +
                  +

                   Works on clicking

                  + +
                  + +
                  +

                  Works with mouse over

                  + +
                  + + + + + diff --git a/spree_theme/doc/html/hover-effect/hover-effect-fadein.html b/spree_theme/doc/html/hover-effect/hover-effect-fadein.html new file mode 100644 index 00000000..ca11fbcd --- /dev/null +++ b/spree_theme/doc/html/hover-effect/hover-effect-fadein.html @@ -0,0 +1,74 @@ + + + + images test + + + + + + +
                  +
                  +
                  + box1 +
                  + +
                  +
                  +
                  + box2 +
                  + +
                  +
                  +
                  box3
                  + +
                  +
                  +
                  box4
                  + +
                  + + +
                  + + + + + + diff --git a/spree_theme/doc/html/hover-effect/hover-effect-show.html b/spree_theme/doc/html/hover-effect/hover-effect-show.html new file mode 100644 index 00000000..70f31ab9 --- /dev/null +++ b/spree_theme/doc/html/hover-effect/hover-effect-show.html @@ -0,0 +1,73 @@ + + + + images test + + + + + + +
                  +
                  +
                  + box1 +
                  + +
                  +
                  +
                  + box2 +
                  + +
                  +
                  +
                  box3
                  + +
                  +
                  +
                  box4
                  + +
                  + + +
                  + + + + + + diff --git a/spree_theme/doc/html/hover-effect/hover-effect-slide.html b/spree_theme/doc/html/hover-effect/hover-effect-slide.html new file mode 100644 index 00000000..65f32897 --- /dev/null +++ b/spree_theme/doc/html/hover-effect/hover-effect-slide.html @@ -0,0 +1,86 @@ + + + + main menu test + + + + + + + + + + + + + diff --git a/spree_theme/doc/html/hover-effect/js/jquery-1.8.1.min.js b/spree_theme/doc/html/hover-effect/js/jquery-1.8.1.min.js new file mode 100644 index 00000000..e7f2a292 --- /dev/null +++ b/spree_theme/doc/html/hover-effect/js/jquery-1.8.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v@1.8.1 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.1",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
                  a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
                  t
                  ",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
                  ",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0),h[l]&&j.push(k);j.length&&t.push({elem:f,matches:j})}n.length>o&&t.push({elem:this,matches:n.slice(o)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function $(a,b,c,d){c=c||[],b=b||q;var e,f,g,j,k=b.nodeType;if(k!==1&&k!==9)return[];if(!a||typeof a!="string")return c;g=h(b);if(!g&&!d)if(e=L.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&i(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return u.apply(c,t.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&X&&b.getElementsByClassName)return u.apply(c,t.call(b.getElementsByClassName(j),0)),c}return bk(a,b,c,d,g)}function _(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function ba(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bb(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bc(a,b,c,d){var e,g,h,i,j,k,l,m,n,p,r=!c&&b!==q,s=(r?"":"")+a.replace(H,"$1"),u=y[o][s];if(u)return d?0:t.call(u,0);j=a,k=[],m=0,n=f.preFilter,p=f.filter;while(j){if(!e||(g=I.exec(j)))g&&(j=j.slice(g[0].length),h.selector=l),k.push(h=[]),l="",r&&(j=" "+j);e=!1;if(g=J.exec(j))l+=g[0],j=j.slice(g[0].length),e=h.push({part:g.pop().replace(H," "),string:g[0],captures:g});for(i in p)(g=S[i].exec(j))&&(!n[i]||(g=n[i](g,b,c)))&&(l+=g[0],j=j.slice(g[0].length),e=h.push({part:i,string:g.shift(),captures:g}));if(!e)break}return l&&(h.selector=l),d?j.length:j?$.error(a):t.call(y(s,k),0)}function bd(a,b,e,f){var g=b.dir,h=s++;return a||(a=function(a){return a===e}),b.first?function(b){while(b=b[g])if(b.nodeType===1)return a(b)&&b}:f?function(b){while(b=b[g])if(b.nodeType===1&&a(b))return b}:function(b){var e,f=h+"."+c,i=f+"."+d;while(b=b[g])if(b.nodeType===1){if((e=b[o])===i)return b.sizset;if(typeof e=="string"&&e.indexOf(f)===0){if(b.sizset)return b}else{b[o]=i;if(a(b))return b.sizset=!0,b;b.sizset=!1}}}}function be(a,b){return a?function(c){var d=b(c);return d&&a(d===!0?c:d)}:b}function bf(a,b,c){var d,e,g=0;for(;d=a[g];g++)f.relative[d.part]?e=bd(e,f.relative[d.part],b,c):e=be(e,f.filter[d.part].apply(null,d.captures.concat(b,c)));return e}function bg(a){return function(b){var c,d=0;for(;c=a[d];d++)if(c(b))return!0;return!1}}function bh(a,b,c,d){var e=0,f=b.length;for(;e0?i(h,c,g):[]}function bj(a,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s=0,t=a.length,v=S.POS,w=new RegExp("^"+v.source+"(?!"+A+")","i"),x=function(){var a=1,c=arguments.length-2;for(;al){g+=k.slice(l,n.index),l=p,q=[c],J.test(g)&&(m&&(q=m),m=e);if(r=O.test(g))g=g.slice(0,-5).replace(J,"$&*"),l++;n.length>1&&n[0].replace(w,x),m=bi(g,n[1],n[2],q,m,r)}g=""}}o||(g+=k),o=!1}g?J.test(g)?bh(g,m||[c],d,e):$(g,c,d,e?e.concat(m):m):u.apply(d,m)}return t===1?d:$.uniqueSort(d)}function bk(a,b,e,g,h){a=a.replace(H,"$1");var i,k,l,m,n,o,p,q,r,s,v=bc(a,b,h),w=b.nodeType;if(S.POS.test(a))return bj(v,b,e,g);if(g)i=t.call(g,0);else if(v.length===1){if((o=t.call(v[0],0)).length>2&&(p=o[0]).part==="ID"&&w===9&&!h&&f.relative[o[1].part]){b=f.find.ID(p.captures[0].replace(R,""),b,h)[0];if(!b)return e;a=a.slice(o.shift().string.length)}r=(v=N.exec(o[0].string))&&!v.index&&b.parentNode||b,q="";for(n=o.length-1;n>=0;n--){p=o[n],s=p.part,q=p.string+q;if(f.relative[s])break;if(f.order.test(s)){i=f.find[s](p.captures[0].replace(R,""),r,h);if(i==null)continue;a=a.slice(0,a.length-q.length)+q.replace(S[s],""),a||u.apply(e,t.call(i,0));break}}}if(a){k=j(a,b,h),c=k.dirruns++,i==null&&(i=f.find.TAG("*",N.test(a)&&b.parentNode||b));for(n=0;m=i[n];n++)d=k.runs++,k(m)&&e.push(m)}return e}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=a.document,r=q.documentElement,s=0,t=[].slice,u=[].push,v=function(a,b){return a[o]=b||!0,a},w=function(){var a={},b=[];return v(function(c,d){return b.push(c)>f.cacheLength&&delete a[b.shift()],a[c]=d},a)},x=w(),y=w(),z=w(),A="[\\x20\\t\\r\\n\\f]",B="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",C=B.replace("w","w#"),D="([*^$|!~]?=)",E="\\["+A+"*("+B+")"+A+"*(?:"+D+A+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+C+")|)|)"+A+"*\\]",F=":("+B+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+E+")|[^:]|\\\\.)*|.*))\\)|)",G=":(nth|eq|gt|lt|first|last|even|odd)(?:\\(((?:-\\d)?\\d*)\\)|)(?=[^-]|$)",H=new RegExp("^"+A+"+|((?:^|[^\\\\])(?:\\\\.)*)"+A+"+$","g"),I=new RegExp("^"+A+"*,"+A+"*"),J=new RegExp("^"+A+"*([\\x20\\t\\r\\n\\f>+~])"+A+"*"),K=new RegExp(F),L=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,M=/^:not/,N=/[\x20\t\r\n\f]*[+~]/,O=/:not\($/,P=/h\d/i,Q=/input|select|textarea|button/i,R=/\\(?!\\)/g,S={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),NAME:new RegExp("^\\[name=['\"]?("+B+")['\"]?\\]"),TAG:new RegExp("^("+B.replace("w","w*")+")"),ATTR:new RegExp("^"+E),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+A+"*(even|odd|(([+-]|)(\\d*)n|)"+A+"*(?:([+-]|)"+A+"*(\\d+)|))"+A+"*\\)|)","i"),POS:new RegExp(G,"ig"),needsContext:new RegExp("^"+A+"*[>+~]|"+G,"i")},T=function(a){var b=q.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},U=T(function(a){return a.appendChild(q.createComment("")),!a.getElementsByTagName("*").length}),V=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),W=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),X=T(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),Y=T(function(a){a.id=o+0,a.innerHTML="
                  ",r.insertBefore(a,r.firstChild);var b=q.getElementsByName&&q.getElementsByName(o).length===2+q.getElementsByName(o+0).length;return e=!q.getElementById(o),r.removeChild(a),b});try{t.call(r.childNodes,0)[0].nodeType}catch(Z){t=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}$.matches=function(a,b){return $(a,null,null,b)},$.matchesSelector=function(a,b){return $(b,null,null,[a]).length>0},g=$.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=g(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=g(b);return c},h=$.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},i=$.contains=r.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:r.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},$.attr=function(a,b){var c,d=h(a);return d||(b=b.toLowerCase()),f.attrHandle[b]?f.attrHandle[b](a):W||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},f=$.selectors={cacheLength:50,createPseudo:v,match:S,order:new RegExp("ID|TAG"+(Y?"|NAME":"")+(X?"|CLASS":"")),attrHandle:V?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:e?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:U?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(R,""),a[3]=(a[4]||a[5]||"").replace(R,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||$.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&$.error(a[0]),a},PSEUDO:function(a,b,c){var d,e;if(S.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(d=a[4])K.test(d)&&(e=bc(d,b,c,!0))&&(e=d.indexOf(")",d.length-e)-d.length)&&(d=d.slice(0,e),a[0]=a[0].slice(0,e)),a[2]=d;return a.slice(0,3)}},filter:{ID:e?function(a){return a=a.replace(R,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(R,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(R,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=x[o][a];return b||(b=x(a,new RegExp("(^|"+A+")"+a+"("+A+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=$.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return $.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=s++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[o]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[o]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e,g=f.pseudos[a]||f.pseudos[a.toLowerCase()];return g||$.error("unsupported pseudo: "+a),g[o]?g(b,c,d):g.length>1?(e=[a,a,"",b],function(a){return g(a,0,e)}):g}},pseudos:{not:v(function(a,b,c){var d=j(a.replace(H,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!f.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:v(function(a){return function(b){return(b.textContent||b.innerText||g(b)).indexOf(a)>-1}}),has:v(function(a){return function(b){return $(a,b).length>0}}),header:function(a){return P.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:_("radio"),checkbox:_("checkbox"),file:_("file"),password:_("password"),image:_("image"),submit:ba("submit"),reset:ba("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return Q.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e",a.querySelectorAll("[selected]").length||e.push("\\["+A+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

                  ",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+A+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bk=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return u.apply(f,t.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j,k,l,m=d.getAttribute("id"),n=m||o,p=N.test(a)&&d.parentNode||d;m?n=n.replace(c,"\\$&"):d.setAttribute("id",n),j=bc(a,d,h),n="[id='"+n+"']";for(k=0,l=j.length;k0})}(),f.setFilters.nth=f.setFilters.eq,f.filters=f.pseudos,$.attr=p.attr,p.find=$,p.expr=$.selectors,p.expr[":"]=p.expr.pseudos,p.unique=$.uniqueSort,p.text=$.getText,p.isXMLDoc=$.isXML,p.contains=$.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
                  ","
                  "],thead:[1,"","
                  "],tr:[2,"","
                  "],td:[3,"","
                  "],col:[2,"","
                  "],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
                  ","
                  "]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{cj=f.href}catch(cy){cj=e.createElement("a"),cj.href="",cj=cj.href}ck=ct.exec(cj.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
                  ").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:cj,isLocal:cn.test(ck[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,ck[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==ck[1]&&i[2]==ck[2]&&(i[3]||(i[1]==="http:"?80:443))==(ck[3]||(ck[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cQ.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/spree_theme/doc/html/hover-effect/js/jquery.easing.1.3.js b/spree_theme/doc/html/hover-effect/js/jquery.easing.1.3.js new file mode 100644 index 00000000..ef743210 --- /dev/null +++ b/spree_theme/doc/html/hover-effect/js/jquery.easing.1.3.js @@ -0,0 +1,205 @@ +/* + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ + * + * Uses the built in easing capabilities added In jQuery 1.1 + * to offer multiple easing options + * + * TERMS OF USE - jQuery Easing + * + * Open source under the BSD License. + * + * Copyright © 2008 George McGinley Smith + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +// t: current time, b: begInnIng value, c: change In value, d: duration +jQuery.easing['jswing'] = jQuery.easing['swing']; + +jQuery.extend( jQuery.easing, +{ + def: 'easeOutQuad', + swing: function (x, t, b, c, d) { + //alert(jQuery.easing.default); + return jQuery.easing[jQuery.easing.def](x, t, b, c, d); + }, + easeInQuad: function (x, t, b, c, d) { + return c*(t/=d)*t + b; + }, + easeOutQuad: function (x, t, b, c, d) { + return -c *(t/=d)*(t-2) + b; + }, + easeInOutQuad: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t + b; + return -c/2 * ((--t)*(t-2) - 1) + b; + }, + easeInCubic: function (x, t, b, c, d) { + return c*(t/=d)*t*t + b; + }, + easeOutCubic: function (x, t, b, c, d) { + return c*((t=t/d-1)*t*t + 1) + b; + }, + easeInOutCubic: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t + b; + return c/2*((t-=2)*t*t + 2) + b; + }, + easeInQuart: function (x, t, b, c, d) { + return c*(t/=d)*t*t*t + b; + }, + easeOutQuart: function (x, t, b, c, d) { + return -c * ((t=t/d-1)*t*t*t - 1) + b; + }, + easeInOutQuart: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t + b; + return -c/2 * ((t-=2)*t*t*t - 2) + b; + }, + easeInQuint: function (x, t, b, c, d) { + return c*(t/=d)*t*t*t*t + b; + }, + easeOutQuint: function (x, t, b, c, d) { + return c*((t=t/d-1)*t*t*t*t + 1) + b; + }, + easeInOutQuint: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; + return c/2*((t-=2)*t*t*t*t + 2) + b; + }, + easeInSine: function (x, t, b, c, d) { + return -c * Math.cos(t/d * (Math.PI/2)) + c + b; + }, + easeOutSine: function (x, t, b, c, d) { + return c * Math.sin(t/d * (Math.PI/2)) + b; + }, + easeInOutSine: function (x, t, b, c, d) { + return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; + }, + easeInExpo: function (x, t, b, c, d) { + return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; + }, + easeOutExpo: function (x, t, b, c, d) { + return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; + }, + easeInOutExpo: function (x, t, b, c, d) { + if (t==0) return b; + if (t==d) return b+c; + if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; + return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; + }, + easeInCirc: function (x, t, b, c, d) { + return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; + }, + easeOutCirc: function (x, t, b, c, d) { + return c * Math.sqrt(1 - (t=t/d-1)*t) + b; + }, + easeInOutCirc: function (x, t, b, c, d) { + if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; + return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; + }, + easeInElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + }, + easeOutElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; + }, + easeInOutElastic: function (x, t, b, c, d) { + var s=1.70158;var p=0;var a=c; + if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); + if (a < Math.abs(c)) { a=c; var s=p/4; } + else var s = p/(2*Math.PI) * Math.asin (c/a); + if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; + return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; + }, + easeInBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*(t/=d)*t*((s+1)*t - s) + b; + }, + easeOutBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; + }, + easeInOutBack: function (x, t, b, c, d, s) { + if (s == undefined) s = 1.70158; + if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; + return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; + }, + easeInBounce: function (x, t, b, c, d) { + return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; + }, + easeOutBounce: function (x, t, b, c, d) { + if ((t/=d) < (1/2.75)) { + return c*(7.5625*t*t) + b; + } else if (t < (2/2.75)) { + return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; + } else if (t < (2.5/2.75)) { + return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; + } else { + return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; + } + }, + easeInOutBounce: function (x, t, b, c, d) { + if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; + return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; + } +}); + +/* + * + * TERMS OF USE - EASING EQUATIONS + * + * Open source under the BSD License. + * + * Copyright © 2001 Robert Penner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ \ No newline at end of file diff --git a/spree_theme/doc/html/hover-effect/js/jquery.hoverIntent.js b/spree_theme/doc/html/hover-effect/js/jquery.hoverIntent.js new file mode 100644 index 00000000..ac2f1192 --- /dev/null +++ b/spree_theme/doc/html/hover-effect/js/jquery.hoverIntent.js @@ -0,0 +1,115 @@ +/*! + * hoverIntent v1.8.1 // 2014.08.11 // jQuery v1.9.1+ + * http://cherne.net/brian/resources/jquery.hoverIntent.html + * + * You may use hoverIntent under the terms of the MIT license. Basically that + * means you are free to use hoverIntent as long as this header is left intact. + * Copyright 2007, 2014 Brian Cherne + */ + +/* hoverIntent is similar to jQuery's built-in "hover" method except that + * instead of firing the handlerIn function immediately, hoverIntent checks + * to see if the user's mouse has slowed down (beneath the sensitivity + * threshold) before firing the event. The handlerOut function is only + * called after a matching handlerIn. + * + * // basic usage ... just like .hover() + * .hoverIntent( handlerIn, handlerOut ) + * .hoverIntent( handlerInOut ) + * + * // basic usage ... with event delegation! + * .hoverIntent( handlerIn, handlerOut, selector ) + * .hoverIntent( handlerInOut, selector ) + * + * // using a basic configuration object + * .hoverIntent( config ) + * + * @param handlerIn function OR configuration object + * @param handlerOut function OR selector for delegation OR undefined + * @param selector selector OR undefined + * @author Brian Cherne + */ +(function($) { + $.fn.hoverIntent = function(handlerIn,handlerOut,selector) { + + // default configuration values + var cfg = { + interval: 100, + sensitivity: 6, + timeout: 0 + }; + + if ( typeof handlerIn === "object" ) { + cfg = $.extend(cfg, handlerIn ); + } else if ($.isFunction(handlerOut)) { + cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } ); + } else { + cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } ); + } + + // instantiate variables + // cX, cY = current X and Y position of mouse, updated by mousemove event + // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval + var cX, cY, pX, pY; + + // A private function for getting mouse position + var track = function(ev) { + cX = ev.pageX; + cY = ev.pageY; + }; + + // A private function for comparing current and previous mouse position + var compare = function(ev,ob) { + ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); + // compare mouse positions to see if they've crossed the threshold + if ( Math.sqrt( (pX-cX)*(pX-cX) + (pY-cY)*(pY-cY) ) < cfg.sensitivity ) { + $(ob).off("mousemove.hoverIntent",track); + // set hoverIntent state to true (so mouseOut can be called) + ob.hoverIntent_s = true; + return cfg.over.apply(ob,[ev]); + } else { + // set previous coordinates for next time + pX = cX; pY = cY; + // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs) + ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval ); + } + }; + + // A private function for delaying the mouseOut function + var delay = function(ev,ob) { + ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); + ob.hoverIntent_s = false; + return cfg.out.apply(ob,[ev]); + }; + + // A private function for handling mouse 'hovering' + var handleHover = function(e) { + // copy objects to be passed into t (required for event object to be passed in IE) + var ev = $.extend({},e); + var ob = this; + + // cancel hoverIntent timer if it exists + if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); } + + // if e.type === "mouseenter" + if (e.type === "mouseenter") { + // set "previous" X and Y position based on initial entry point + pX = ev.pageX; pY = ev.pageY; + // update "current" X and Y position based on mousemove + $(ob).on("mousemove.hoverIntent",track); + // start polling interval (self-calling timeout) to compare mouse coordinates over time + if (!ob.hoverIntent_s) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );} + + // else e.type == "mouseleave" + } else { + // unbind expensive mousemove event + $(ob).off("mousemove.hoverIntent",track); + // if hoverIntent state is true, then call the mouseOut function after the specified delay + if (ob.hoverIntent_s) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );} + } + }; + + // listen for mouseenter and mouseleave + return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector); + }; +})(jQuery); diff --git a/spree_theme/doc/html/hover-effect/list-product.html b/spree_theme/doc/html/hover-effect/list-product.html new file mode 100644 index 00000000..8c4562c0 --- /dev/null +++ b/spree_theme/doc/html/hover-effect/list-product.html @@ -0,0 +1,104 @@ + + + + list product + + + + + + +
                  +
                  +
                  + box1 +
                  + +
                  +
                  +
                  + box2 +
                  + +
                  +
                  +
                  box3
                  + +
                  +
                  +
                  box4
                  + +
                  + +
                  +
                  + box1 +
                  + +
                  +
                  +
                  + box2 +
                  + +
                  +
                  +
                  box3
                  + +
                  +
                  +
                  box4
                  + +
                  +
                  + +
                  + + + + + + diff --git a/spree_theme/doc/html/relative_absolute.html b/spree_theme/doc/html/relative_absolute.html new file mode 100644 index 00000000..93b9951a --- /dev/null +++ b/spree_theme/doc/html/relative_absolute.html @@ -0,0 +1,23 @@ + + + + input size test + + + +
                  +
                  + this is absolute positioned block +
                  +
                  + + \ No newline at end of file diff --git a/spree_theme/doc/html/set_timeout.html b/spree_theme/doc/html/set_timeout.html new file mode 100644 index 00000000..eb4ce4b5 --- /dev/null +++ b/spree_theme/doc/html/set_timeout.html @@ -0,0 +1,27 @@ + + + + +text-overflow + + + + + + + + + diff --git a/spree_theme/doc/html/text-overflow.html b/spree_theme/doc/html/text-overflow.html new file mode 100644 index 00000000..74629f39 --- /dev/null +++ b/spree_theme/doc/html/text-overflow.html @@ -0,0 +1,23 @@ + + + + +text-overflow + + + + + + + + diff --git a/spree_theme/doc/html/z-index.txt b/spree_theme/doc/html/z-index.txt new file mode 100644 index 00000000..2db9d65e --- /dev/null +++ b/spree_theme/doc/html/z-index.txt @@ -0,0 +1,7 @@ + +absolute_container +1 + +fixed container +10 + +sidr +15 + sidr-cover +14 diff --git a/spree_theme/doc/oss/move_oss_taxon_icon b/spree_theme/doc/oss/move_oss_taxon_icon new file mode 100644 index 00000000..c188a1f6 --- /dev/null +++ b/spree_theme/doc/oss/move_oss_taxon_icon @@ -0,0 +1,995 @@ +object: 25/spree_taxon/42_天猫定制2.jpg-42-25/spree_taxon/1176_天猫定制2.jpg +object: 25/spree_taxon/43_我们的承诺1.jpg-43-25/spree_taxon/1177_我们的承诺1.jpg +object: 25/spree_taxon/44_zegna3.jpg-44-25/spree_taxon/1178_zegna3.jpg +object: 25/spree_taxon/49_zegna.gif-49-25/spree_taxon/1179_zegna.gif +object: 25/spree_taxon/50_scabal.gif-50-25/spree_taxon/1180_scabal.gif +object: 25/spree_taxon/51_cerruti.gif-51-25/spree_taxon/1181_cerruti.gif +object: 25/spree_taxon/52_holland.gif-52-25/spree_taxon/1182_holland.gif +object: 25/spree_taxon/53_loro.gif-53-25/spree_taxon/1183_loro.gif +object: 2/spree_taxon/102_slide11.jpg-102-2/spree_taxon/1191_slide11.jpg +object: 2/spree_taxon/103_slide12.jpg-103-2/spree_taxon/1192_slide12.jpg +object: 2/spree_taxon/170_slide1.png-170-2/spree_taxon/1207_slide1.png +object: 2/spree_taxon/172_ztc1.png-172-2/spree_taxon/1208_ztc1.png +object: 2/spree_taxon/173_ztc2.png-173-2/spree_taxon/1209_ztc2.png +object: 2/spree_taxon/174_ztc3.png-174-2/spree_taxon/1210_ztc3.png +object: 2/spree_taxon/175_slide2.png-175-2/spree_taxon/1211_slide2.png +object: 2/spree_taxon/233_t1-discount.jpg-233-2/spree_taxon/1217_t1-discount.jpg +object: 2/spree_taxon/234_t1-new-arrival.jpg-234-2/spree_taxon/1218_t1-new-arrival.jpg +object: 2/spree_taxon/235_t1-giftcard.jpg-235-2/spree_taxon/1219_t1-giftcard.jpg +object: 2/spree_taxon/240_t1-sale-service.jpg-240-2/spree_taxon/1220_t1-sale-service.jpg +object: 2/spree_taxon/241_t1-follow-us.jpg-241-2/spree_taxon/1221_t1-follow-us.jpg +object: 2/spree_taxon/242_t1-delivery-service.jpg-242-2/spree_taxon/1222_t1-delivery-service.jpg +object: 2/spree_taxon/66_slide1.jpg-66-2/spree_taxon/1184_slide1.jpg +object: 2/spree_taxon/67_slide2.jpg-67-2/spree_taxon/1185_slide2.jpg +object: 2/spree_taxon/68_slider3.jpg-68-2/spree_taxon/1186_slider3.jpg +object: 2/spree_taxon/83_service1.jpg-83-2/spree_taxon/1187_service1.jpg +object: 2/spree_taxon/84_service2.jpg-84-2/spree_taxon/1188_service2.jpg +object: 2/spree_taxon/85_service3.jpg-85-2/spree_taxon/1189_service3.jpg +object: 2/spree_taxon/86_service4.jpg-86-2/spree_taxon/1190_service4.jpg +object: 31/spree_taxon/120_service1.jpg-120-31/spree_taxon/1193_service1.jpg +object: 31/spree_taxon/121_service2.jpg-121-31/spree_taxon/1194_service2.jpg +object: 31/spree_taxon/122_service3.jpg-122-31/spree_taxon/1195_service3.jpg +object: 31/spree_taxon/123_service4.jpg-123-31/spree_taxon/1196_service4.jpg +object: 31/spree_taxon/131_slide11.jpg-131-31/spree_taxon/1197_slide11.jpg +object: 31/spree_taxon/132_slide12.jpg-132-31/spree_taxon/1198_slide12.jpg +object: 1/spree_taxon/1000_contact1.png-1000-1/spree_taxon/1329_contact1.png +object: 1/spree_taxon/1001_contact2.png-1001-1/spree_taxon/1330_contact2.png +object: 1/spree_taxon/1002_contact3.png-1002-1/spree_taxon/1331_contact3.png +object: 1/spree_taxon/1003_contact4.png-1003-1/spree_taxon/1332_contact4.png +object: 1/spree_taxon/1010_feature1.png-1010-1/spree_taxon/1333_feature1.png +object: 1/spree_taxon/1011_feature4.png-1011-1/spree_taxon/1334_feature4.png +object: 1/spree_taxon/1012_feature3.png-1012-1/spree_taxon/1335_feature3.png +object: 1/spree_taxon/1013_feature5.png-1013-1/spree_taxon/1336_feature5.png +object: 1/spree_taxon/1014_feature2.png-1014-1/spree_taxon/1337_feature2.png +object: 1/spree_taxon/1015_feature6.png-1015-1/spree_taxon/1338_feature6.png +object: 1/spree_taxon/1017_logo-yilin.jpg-1017-1/spree_taxon/1339_logo-yilin.jpg +object: 1/spree_taxon/1018_logo-beidian.jpg-1018-1/spree_taxon/1340_logo-beidian.jpg +object: 1/spree_taxon/1019_logo-ruilang.jpg-1019-1/spree_taxon/1341_logo-ruilang.jpg +object: 1/spree_taxon/1020_logo-dalianshops.jpg-1020-1/spree_taxon/1342_logo-dalianshops.jpg +object: 1/spree_taxon/135_feature1.png-135-1/spree_taxon/1199_feature1.png +object: 1/spree_taxon/136_feature2.png-136-1/spree_taxon/1200_feature2.png +object: 1/spree_taxon/137_feature3.png-137-1/spree_taxon/1201_feature3.png +object: 1/spree_taxon/138_feature4.png-138-1/spree_taxon/1202_feature4.png +object: 1/spree_taxon/140_customer1.jpg-140-1/spree_taxon/1203_customer1.jpg +object: 1/spree_taxon/141_customer3.jpg-141-1/spree_taxon/1204_customer3.jpg +object: 1/spree_taxon/142_customer2.jpg-142-1/spree_taxon/1205_customer2.jpg +object: 1/spree_taxon/143_customer4.jpg-143-1/spree_taxon/1206_customer4.jpg +object: 4/spree_taxon/202_slide1.png-202-4/spree_taxon/1212_slide1.png +object: 4/spree_taxon/203_slide2.png-203-4/spree_taxon/1213_slide2.png +object: 4/spree_taxon/205_ztc1.png-205-4/spree_taxon/1214_ztc1.png +object: 4/spree_taxon/206_ztc2.png-206-4/spree_taxon/1215_ztc2.png +object: 4/spree_taxon/207_ztc3.png-207-4/spree_taxon/1216_ztc3.png +object: 3/spree_taxon/249_slide1.jpg-249-3/spree_taxon/1223_slide1.jpg +object: 3/spree_taxon/250_slider3.jpg-250-3/spree_taxon/1224_slider3.jpg +object: 3/spree_taxon/252_t1-new-arrival.jpg-252-3/spree_taxon/1225_t1-new-arrival.jpg +object: 3/spree_taxon/253_t1-discount.jpg-253-3/spree_taxon/1226_t1-discount.jpg +object: 3/spree_taxon/254_t1-giftcard.jpg-254-3/spree_taxon/1227_t1-giftcard.jpg +object: 3/spree_taxon/259_t1-sale-service.jpg-259-3/spree_taxon/1228_t1-sale-service.jpg +object: 3/spree_taxon/260_t1-follow-us.jpg-260-3/spree_taxon/1229_t1-follow-us.jpg +object: 3/spree_taxon/261_t1-delivery-service.jpg-261-3/spree_taxon/1230_t1-delivery-service.jpg +object: 42/spree_taxon/342_slide1.png-342-42/spree_taxon/1231_slide1.png +object: 42/spree_taxon/343_slide2.png-343-42/spree_taxon/1232_slide2.png +object: 42/spree_taxon/345_ztc1.png-345-42/spree_taxon/1233_ztc1.png +object: 42/spree_taxon/346_ztc2.png-346-42/spree_taxon/1234_ztc2.png +object: 42/spree_taxon/347_ztc3.png-347-42/spree_taxon/1235_ztc3.png +object: 43/spree_taxon/365_slide1.jpg-365-43/spree_taxon/1236_slide1.jpg +object: 43/spree_taxon/366_slide2.jpg-366-43/spree_taxon/1237_slide2.jpg +object: 43/spree_taxon/367_slider3.jpg-367-43/spree_taxon/1238_slider3.jpg +object: 43/spree_taxon/372_t1-new-arrival.jpg-372-43/spree_taxon/1239_t1-new-arrival.jpg +object: 43/spree_taxon/373_t1-discount.jpg-373-43/spree_taxon/1240_t1-discount.jpg +object: 43/spree_taxon/374_t1-giftcard.jpg-374-43/spree_taxon/1241_t1-giftcard.jpg +object: 43/spree_taxon/382_t1-sale-service.jpg-382-43/spree_taxon/1242_t1-sale-service.jpg +object: 43/spree_taxon/383_t1-follow-us.jpg-383-43/spree_taxon/1243_t1-follow-us.jpg +object: 43/spree_taxon/384_t1-delivery-service.jpg-384-43/spree_taxon/1244_t1-delivery-service.jpg +object: 33/spree_taxon/1533_slide11.jpg-1533-33/spree_taxon/1433_slide11.jpg +object: 33/spree_taxon/1534_slide21.jpg-1534-33/spree_taxon/1434_slide21.jpg +object: 33/spree_taxon/1535_slide31.jpg-1535-33/spree_taxon/1435_slide31.jpg +object: 33/spree_taxon/2038_首页-03.jpg-2038-33/spree_taxon/1573_首页-03.jpg +object: 33/spree_taxon/2039_slide2.jpg-2039-33/spree_taxon/1574_slide2.jpg +object: 33/spree_taxon/2040_banner1011-04.jpg-2040-33/spree_taxon/1575_banner1011-04.jpg +object: 33/spree_taxon/2042_qq_43x41.jpg-2042-33/spree_taxon/1576_qq_43x41.jpg +object: 33/spree_taxon/2043_weixin_43x41.jpg-2043-33/spree_taxon/1577_weixin_43x41.jpg +object: 33/spree_taxon/2044_telephone_43x41.jpg-2044-33/spree_taxon/1578_telephone_43x41.jpg +object: 33/spree_taxon/392_工作室网站1.21-01.jpg-392-33/spree_taxon/1245_工作室网站1.21-01.jpg +object: 33/spree_taxon/393_工作室网站1.28-09.jpg-393-33/spree_taxon/1246_工作室网站1.28-09.jpg +object: 33/spree_taxon/394_工作室网站1.28-10.jpg-394-33/spree_taxon/1247_工作室网站1.28-10.jpg +object: 33/spree_taxon/395_工作室网站1.28-11.jpg-395-33/spree_taxon/1248_工作室网站1.28-11.jpg +object: 33/spree_taxon/407_工作室网站1.30-09.png-407-33/spree_taxon/1249_工作室网站1.30-09.png +object: 33/spree_taxon/408_工作室网站1.30-10.png-408-33/spree_taxon/1250_工作室网站1.30-10.png +object: 33/spree_taxon/410_工作室网站1.30-12.png-410-33/spree_taxon/1251_工作室网站1.30-12.png +object: 33/spree_taxon/438_侧边标签-07.jpg-438-33/spree_taxon/1252_侧边标签-07.jpg +object: 33/spree_taxon/439_侧边标签-06.jpg-439-33/spree_taxon/1253_侧边标签-06.jpg +object: 336/spree_taxon/1124_icon1.png-1124-336/spree_taxon/1357_icon1.png +object: 336/spree_taxon/1125_icon2.png-1125-336/spree_taxon/1358_icon2.png +object: 336/spree_taxon/1126_icon3.png-1126-336/spree_taxon/1359_icon3.png +object: 336/spree_taxon/1127_icon4.png-1127-336/spree_taxon/1360_icon4.png +object: 336/spree_taxon/1135_slide3.jpg-1135-336/spree_taxon/1361_slide3.jpg +object: 336/spree_taxon/1155_slide2.jpg-1155-336/spree_taxon/1362_slide2.jpg +object: 336/spree_taxon/1157_weixin.png-1157-336/spree_taxon/1363_weixin.png +object: 336/spree_taxon/1158_qq.png-1158-336/spree_taxon/1364_qq.png +object: 336/spree_taxon/1458_chat.jpg-1458-336/spree_taxon/1421_chat.jpg +object: 336/spree_taxon/1459_gototop.jpg-1459-336/spree_taxon/1422_gototop.jpg +object: 336/spree_taxon/2310_轮播海报02.jpg-2310-336/spree_taxon/1625_轮播海报02.jpg +object: 336/spree_taxon/459_company.jpg-459-336/spree_taxon/1254_company.jpg +object: 336/spree_taxon/470_penji.png-470-336/spree_taxon/1255_penji.png +object: 336/spree_taxon/471_tieji.png-471-336/spree_taxon/1256_tieji.png +object: 336/spree_taxon/472_ruangao.png-472-336/spree_taxon/1257_ruangao.png +object: 336/spree_taxon/473_yangsheng.png-473-336/spree_taxon/1258_yangsheng.png +object: 336/spree_taxon/475_cn.png-475-336/spree_taxon/1259_cn.png +object: 336/spree_taxon/476_en.png-476-336/spree_taxon/1260_en.png +object: 336/spree_taxon/478_weixin-icon.png-478-336/spree_taxon/1261_weixin-icon.png +object: 336/spree_taxon/479_qq-icon.png-479-336/spree_taxon/1262_qq-icon.png +object: 336/spree_taxon/486_轮播海报01.jpg-486-336/spree_taxon/1263_轮播海报01.jpg +object: 336/spree_taxon/493_company2.jpg-493-336/spree_taxon/1264_company2.jpg +object: 336/spree_taxon/553_喷剂.png-553-336/spree_taxon/1275_喷剂.png +object: 336/spree_taxon/554_贴剂.png-554-336/spree_taxon/1276_贴剂.png +object: 336/spree_taxon/555_软膏.png-555-336/spree_taxon/1277_软膏.png +object: 336/spree_taxon/556_养生.png-556-336/spree_taxon/1278_养生.png +object: 336/spree_taxon/561_company.jpg-561-336/spree_taxon/1279_company.jpg +object: 336/spree_taxon/726_compan_profile.JPG-726-336/spree_taxon/1308_compan_profile.JPG +object: 336/spree_taxon/730_slide1920-1.jpg-730-336/spree_taxon/1309_slide1920-1.jpg +object: 336/spree_taxon/731_slide1920-2.jpg-731-336/spree_taxon/1310_slide1920-2.jpg +object: 336/spree_taxon/732_slide1920-3.jpg-732-336/spree_taxon/1311_slide1920-3.jpg +object: 45/spree_taxon/506_company2.jpg-506-45/spree_taxon/1265_company2.jpg +object: 45/spree_taxon/514_0011.jpg-514-45/spree_taxon/1266_0011.jpg +object: 45/spree_taxon/514_轮播海报01.jpg-514-45/spree_taxon/1266_轮播海报01.jpg +object: 45/spree_taxon/521_weixin-icon.png-521-45/spree_taxon/1267_weixin-icon.png +object: 45/spree_taxon/522_qq-icon.png-522-45/spree_taxon/1268_qq-icon.png +object: 45/spree_taxon/524_cn.png-524-45/spree_taxon/1269_cn.png +object: 45/spree_taxon/525_en.png-525-45/spree_taxon/1270_en.png +object: 45/spree_taxon/527_喷剂.png-527-45/spree_taxon/1271_喷剂.png +object: 45/spree_taxon/528_贴剂.png-528-45/spree_taxon/1272_贴剂.png +object: 45/spree_taxon/529_软膏.png-529-45/spree_taxon/1273_软膏.png +object: 45/spree_taxon/530_养生.png-530-45/spree_taxon/1274_养生.png +object: 45/spree_taxon/705_0022.jpg-705-45/spree_taxon/1306_0022.jpg +object: 45/spree_taxon/705_轮播海报02.jpg-705-45/spree_taxon/1306_轮播海报02.jpg +object: 45/spree_taxon/706_0033.jpg-706-45/spree_taxon/1307_0033.jpg +object: 45/spree_taxon/706_轮播海报03.jpg-706-45/spree_taxon/1307_轮播海报03.jpg +object: 337/spree_taxon/2308_轮播海报02.jpg-2308-337/spree_taxon/1623_轮播海报02.jpg +object: 337/spree_taxon/2309_轮播海报03.jpg-2309-337/spree_taxon/1624_轮播海报03.jpg +object: 337/spree_taxon/567_cn.png-567-337/spree_taxon/1280_cn.png +object: 337/spree_taxon/568_en.png-568-337/spree_taxon/1281_en.png +object: 337/spree_taxon/570_weixin-icon.png-570-337/spree_taxon/1282_weixin-icon.png +object: 337/spree_taxon/571_weixin-icon.png-571-337/spree_taxon/1283_weixin-icon.png +object: 337/spree_taxon/573_weixin-icon.png-573-337/spree_taxon/1284_weixin-icon.png +object: 337/spree_taxon/574_qq-icon.png-574-337/spree_taxon/1285_qq-icon.png +object: 337/spree_taxon/583_轮播海报01.jpg-583-337/spree_taxon/1286_轮播海报01.jpg +object: 337/spree_taxon/585_喷剂.png-585-337/spree_taxon/1287_喷剂.png +object: 337/spree_taxon/586_贴剂.png-586-337/spree_taxon/1288_贴剂.png +object: 337/spree_taxon/587_软膏.png-587-337/spree_taxon/1289_软膏.png +object: 337/spree_taxon/588_养生.png-588-337/spree_taxon/1290_养生.png +object: 337/spree_taxon/590_company2.jpg-590-337/spree_taxon/1291_company2.jpg +object: 338/spree_taxon/633_slide1.jpg-633-338/spree_taxon/1292_slide1.jpg +object: 338/spree_taxon/634_slide2.jpg-634-338/spree_taxon/1293_slide2.jpg +object: 338/spree_taxon/635_slider3.jpg-635-338/spree_taxon/1294_slider3.jpg +object: 338/spree_taxon/640_t1-new-arrival.jpg-640-338/spree_taxon/1295_t1-new-arrival.jpg +object: 338/spree_taxon/641_t1-discount.jpg-641-338/spree_taxon/1296_t1-discount.jpg +object: 338/spree_taxon/642_t1-giftcard.jpg-642-338/spree_taxon/1297_t1-giftcard.jpg +object: 338/spree_taxon/650_t1-sale-service.jpg-650-338/spree_taxon/1298_t1-sale-service.jpg +object: 338/spree_taxon/651_t1-follow-us.jpg-651-338/spree_taxon/1299_t1-follow-us.jpg +object: 338/spree_taxon/652_t1-delivery-service.jpg-652-338/spree_taxon/1300_t1-delivery-service.jpg +object: 341/spree_taxon/699_slide1.png-699-341/spree_taxon/1301_slide1.png +object: 341/spree_taxon/700_slide2.png-700-341/spree_taxon/1302_slide2.png +object: 341/spree_taxon/702_ztc1.png-702-341/spree_taxon/1303_ztc1.png +object: 341/spree_taxon/703_ztc2.png-703-341/spree_taxon/1304_ztc2.png +object: 341/spree_taxon/704_ztc3.png-704-341/spree_taxon/1305_ztc3.png +error: can not find taxon 343/spree_taxon/802_slide1.jpg +error: can not find taxon 343/spree_taxon/803_slide2.jpg +error: can not find taxon 343/spree_taxon/804_slider3.jpg +error: can not find taxon 343/spree_taxon/809_t1-new-arrival.jpg +error: can not find taxon 343/spree_taxon/810_t1-discount.jpg +error: can not find taxon 343/spree_taxon/811_t1-giftcard.jpg +error: can not find taxon 343/spree_taxon/851_slide1.jpg +error: can not find taxon 343/spree_taxon/852_slide2.jpg +error: can not find taxon 343/spree_taxon/853_slider3.jpg +error: can not find taxon 343/spree_taxon/858_t1-new-arrival.jpg +error: can not find taxon 343/spree_taxon/859_t1-discount.jpg +error: can not find taxon 343/spree_taxon/860_t1-giftcard.jpg +error: can not find taxon 343/spree_taxon/868_t1-sale-service.jpg +error: can not find taxon 343/spree_taxon/869_t1-follow-us.jpg +object: 343/spree_taxon/903_公司图片.jpg-903-343/spree_taxon/1312_公司图片.jpg +object: 343/spree_taxon/910_t1-new-arrival.jpg-910-343/spree_taxon/1313_t1-new-arrival.jpg +object: 343/spree_taxon/911_t1-discount.jpg-911-343/spree_taxon/1314_t1-discount.jpg +object: 343/spree_taxon/912_t1-giftcard.jpg-912-343/spree_taxon/1315_t1-giftcard.jpg +object: 343/spree_taxon/920_t1-sale-service.jpg-920-343/spree_taxon/1316_t1-sale-service.jpg +object: 343/spree_taxon/921_t1-follow-us.jpg-921-343/spree_taxon/1317_t1-follow-us.jpg +object: 343/spree_taxon/922_t1-delivery-service.jpg-922-343/spree_taxon/1318_t1-delivery-service.jpg +object: 342/spree_taxon/1691_信誉和品质.jpg-1691-342/spree_taxon/1492_信誉和品质.jpg +object: 342/spree_taxon/1767_2016-06-13_134936.jpg-1767-342/spree_taxon/1508_2016-06-13_134936.jpg +object: 342/spree_taxon/945_cn.png-945-342/spree_taxon/1319_cn.png +object: 342/spree_taxon/946_en.png-946-342/spree_taxon/1320_en.png +object: 342/spree_taxon/948_weixin-icon.png-948-342/spree_taxon/1321_weixin-icon.png +object: 342/spree_taxon/949_qq-icon.png-949-342/spree_taxon/1322_qq-icon.png +object: 342/spree_taxon/960_光伏.jpg-960-342/spree_taxon/1323_光伏.jpg +object: 342/spree_taxon/961_销售安装维修运维.jpg-961-342/spree_taxon/1324_销售安装维修运维.jpg +object: 342/spree_taxon/962_APP副本.jpg-962-342/spree_taxon/1325_APP副本.jpg +object: 342/spree_taxon/983_penji.png-983-342/spree_taxon/1326_penji.png +object: 342/spree_taxon/984_tieji.png-984-342/spree_taxon/1327_tieji.png +object: 342/spree_taxon/985_ruangao.png-985-342/spree_taxon/1328_ruangao.png +object: 344/spree_taxon/1048_slide1.png-1048-344/spree_taxon/1343_slide1.png +object: 344/spree_taxon/1049_slide2.png-1049-344/spree_taxon/1344_slide2.png +object: 344/spree_taxon/1051_ztc1.png-1051-344/spree_taxon/1345_ztc1.png +object: 344/spree_taxon/1052_ztc2.png-1052-344/spree_taxon/1346_ztc2.png +object: 344/spree_taxon/1053_ztc3.png-1053-344/spree_taxon/1347_ztc3.png +object: 345/spree_taxon/1076_进口商品benner.jpg-1076-345/spree_taxon/1348_进口商品benner.jpg +object: 345/spree_taxon/1077_奶粉benner2.jpg-1077-345/spree_taxon/1349_奶粉benner2.jpg +object: 345/spree_taxon/1078_尿不湿benner.jpg-1078-345/spree_taxon/1350_尿不湿benner.jpg +object: 345/spree_taxon/1083_新品.jpg-1083-345/spree_taxon/1351_新品.jpg +object: 345/spree_taxon/1084_热卖.jpg-1084-345/spree_taxon/1352_热卖.jpg +object: 345/spree_taxon/1085_秒杀.jpg-1085-345/spree_taxon/1353_秒杀.jpg +object: 345/spree_taxon/1093_t1-sale-service.jpg-1093-345/spree_taxon/1354_t1-sale-service.jpg +object: 345/spree_taxon/1094_t1-follow-us.jpg-1094-345/spree_taxon/1355_t1-follow-us.jpg +object: 345/spree_taxon/1095_t1-delivery-service.jpg-1095-345/spree_taxon/1356_t1-delivery-service.jpg +object: 346/spree_taxon/1167_cn.png-1167-346/spree_taxon/1365_cn.png +object: 346/spree_taxon/1168_en.png-1168-346/spree_taxon/1366_en.png +object: 346/spree_taxon/1170_weixin-icon.png-1170-346/spree_taxon/1367_weixin-icon.png +object: 346/spree_taxon/1171_qq-icon.png-1171-346/spree_taxon/1368_qq-icon.png +object: 346/spree_taxon/1176_weixin.png-1176-346/spree_taxon/1369_weixin.png +object: 346/spree_taxon/1177_qq.png-1177-346/spree_taxon/1370_qq.png +object: 346/spree_taxon/1188_slide2.jpg-1188-346/spree_taxon/1371_slide2.jpg +object: 346/spree_taxon/1189_slide3.jpg-1189-346/spree_taxon/1372_slide3.jpg +object: 346/spree_taxon/1191_icon1.png-1191-346/spree_taxon/1373_icon1.png +object: 346/spree_taxon/1192_icon2.png-1192-346/spree_taxon/1374_icon2.png +object: 346/spree_taxon/1193_icon3.png-1193-346/spree_taxon/1375_icon3.png +object: 346/spree_taxon/1194_icon4.png-1194-346/spree_taxon/1376_icon4.png +object: 348/spree_taxon/1227_slide3.jpg-1227-348/spree_taxon/1377_slide3.jpg +object: 348/spree_taxon/1232_t1-new-arrival.jpg-1232-348/spree_taxon/1378_t1-new-arrival.jpg +object: 348/spree_taxon/1233_t1-discount.jpg-1233-348/spree_taxon/1379_t1-discount.jpg +object: 348/spree_taxon/1234_t1-giftcard.jpg-1234-348/spree_taxon/1380_t1-giftcard.jpg +object: 348/spree_taxon/1242_t1-sale-service.jpg-1242-348/spree_taxon/1381_t1-sale-service.jpg +object: 348/spree_taxon/1243_t1-follow-us.jpg-1243-348/spree_taxon/1382_t1-follow-us.jpg +object: 348/spree_taxon/1244_t1-delivery-service.jpg-1244-348/spree_taxon/1383_t1-delivery-service.jpg +object: 349/spree_taxon/1267_001.jpg-1267-349/spree_taxon/1384_001.jpg +object: 349/spree_taxon/1274_t1-new-arrival.jpg-1274-349/spree_taxon/1385_t1-new-arrival.jpg +object: 349/spree_taxon/1275_t1-discount.jpg-1275-349/spree_taxon/1386_t1-discount.jpg +object: 349/spree_taxon/1276_t1-giftcard.jpg-1276-349/spree_taxon/1387_t1-giftcard.jpg +object: 349/spree_taxon/1284_sale-service2.jpg-1284-349/spree_taxon/1388_sale-service2.jpg +object: 349/spree_taxon/1285_t1-follow-us.jpg-1285-349/spree_taxon/1389_t1-follow-us.jpg +object: 349/spree_taxon/1286_t1-delivery-service.jpg-1286-349/spree_taxon/1390_t1-delivery-service.jpg +object: 349/spree_taxon/1425_002.jpg-1425-349/spree_taxon/1420_002.jpg +object: 350/spree_taxon/1310_slide1.jpg-1310-350/spree_taxon/1391_slide1.jpg +object: 350/spree_taxon/1311_slide2.jpg-1311-350/spree_taxon/1392_slide2.jpg +object: 350/spree_taxon/1312_slider3.jpg-1312-350/spree_taxon/1393_slider3.jpg +object: 350/spree_taxon/1317_t1-new-arrival.jpg-1317-350/spree_taxon/1394_t1-new-arrival.jpg +object: 350/spree_taxon/1318_t1-discount.jpg-1318-350/spree_taxon/1395_t1-discount.jpg +object: 350/spree_taxon/1319_t1-giftcard.jpg-1319-350/spree_taxon/1396_t1-giftcard.jpg +object: 350/spree_taxon/1327_t1-sale-service.jpg-1327-350/spree_taxon/1397_t1-sale-service.jpg +object: 350/spree_taxon/1328_t1-follow-us.jpg-1328-350/spree_taxon/1398_t1-follow-us.jpg +object: 350/spree_taxon/1329_t1-delivery-service.jpg-1329-350/spree_taxon/1399_t1-delivery-service.jpg +object: 352/spree_taxon/1336_cn.png-1336-352/spree_taxon/1400_cn.png +object: 352/spree_taxon/1337_en.png-1337-352/spree_taxon/1401_en.png +object: 352/spree_taxon/1339_weixin-icon.png-1339-352/spree_taxon/1402_weixin-icon.png +object: 352/spree_taxon/1340_qq-icon.png-1340-352/spree_taxon/1403_qq-icon.png +object: 352/spree_taxon/1351_slide1.jpg-1351-352/spree_taxon/1404_slide1.jpg +object: 352/spree_taxon/1352_slide2.jpg-1352-352/spree_taxon/1405_slide2.jpg +object: 352/spree_taxon/1353_slide3.jpg-1353-352/spree_taxon/1406_slide3.jpg +object: 352/spree_taxon/1374_penji.png-1374-352/spree_taxon/1407_penji.png +object: 352/spree_taxon/1375_tieji.png-1375-352/spree_taxon/1408_tieji.png +object: 352/spree_taxon/1376_ruangao.png-1376-352/spree_taxon/1409_ruangao.png +object: 352/spree_taxon/1377_yangsheng.png-1377-352/spree_taxon/1410_yangsheng.png +object: 352/spree_taxon/1400_slide1.jpg-1400-352/spree_taxon/1411_slide1.jpg +object: 352/spree_taxon/1401_slide2.jpg-1401-352/spree_taxon/1412_slide2.jpg +object: 352/spree_taxon/1402_slider3.jpg-1402-352/spree_taxon/1413_slider3.jpg +object: 352/spree_taxon/1407_t1-new-arrival.jpg-1407-352/spree_taxon/1414_t1-new-arrival.jpg +object: 352/spree_taxon/1408_t1-discount.jpg-1408-352/spree_taxon/1415_t1-discount.jpg +object: 352/spree_taxon/1409_t1-giftcard.jpg-1409-352/spree_taxon/1416_t1-giftcard.jpg +object: 352/spree_taxon/1417_t1-sale-service.jpg-1417-352/spree_taxon/1417_t1-sale-service.jpg +object: 352/spree_taxon/1418_t1-follow-us.jpg-1418-352/spree_taxon/1418_t1-follow-us.jpg +object: 352/spree_taxon/1419_t1-delivery-service.jpg-1419-352/spree_taxon/1419_t1-delivery-service.jpg +object: 353/spree_taxon/1461_cn.png-1461-353/spree_taxon/1423_cn.png +object: 353/spree_taxon/1462_en.png-1462-353/spree_taxon/1424_en.png +object: 353/spree_taxon/1464_weixin-icon.png-1464-353/spree_taxon/1425_weixin-icon.png +object: 353/spree_taxon/1465_qq-icon.png-1465-353/spree_taxon/1426_qq-icon.png +object: 353/spree_taxon/1476_slide1920-1.jpg-1476-353/spree_taxon/1427_slide1920-1.jpg +object: 353/spree_taxon/1477_slide1920-2.jpg-1477-353/spree_taxon/1428_slide1920-2.jpg +object: 353/spree_taxon/1478_slide1920-3.jpg-1478-353/spree_taxon/1429_slide1920-3.jpg +object: 353/spree_taxon/1486_compan_profile.JPG-1486-353/spree_taxon/1430_compan_profile.JPG +object: 353/spree_taxon/1499_chat.jpg-1499-353/spree_taxon/1431_chat.jpg +object: 353/spree_taxon/1500_gototop.jpg-1500-353/spree_taxon/1432_gototop.jpg +object: 358/spree_taxon/1543_工作室网站1.21-01.jpg-1543-358/spree_taxon/1436_工作室网站1.21-01.jpg +object: 358/spree_taxon/1544_工作室网站1.28-09.jpg-1544-358/spree_taxon/1437_工作室网站1.28-09.jpg +object: 358/spree_taxon/1545_工作室网站1.28-10.jpg-1545-358/spree_taxon/1438_工作室网站1.28-10.jpg +object: 358/spree_taxon/1546_工作室网站1.28-11.jpg-1546-358/spree_taxon/1439_工作室网站1.28-11.jpg +object: 358/spree_taxon/1552_工作室网站1.30-09.png-1552-358/spree_taxon/1440_工作室网站1.30-09.png +object: 358/spree_taxon/1553_工作室网站1.30-10.png-1553-358/spree_taxon/1441_工作室网站1.30-10.png +object: 358/spree_taxon/1554_工作室网站1.30-11.png-1554-358/spree_taxon/1442_工作室网站1.30-11.png +object: 358/spree_taxon/1555_工作室网站1.30-12.png-1555-358/spree_taxon/1443_工作室网站1.30-12.png +object: 358/spree_taxon/1573_侧边标签-07.jpg-1573-358/spree_taxon/1444_侧边标签-07.jpg +object: 358/spree_taxon/1574_侧边标签-06.jpg-1574-358/spree_taxon/1445_侧边标签-06.jpg +object: 358/spree_taxon/1587_slide21.jpg-1587-358/spree_taxon/1446_slide21.jpg +object: 358/spree_taxon/1588_slide11.jpg-1588-358/spree_taxon/1447_slide11.jpg +object: 358/spree_taxon/1589_slide31.jpg-1589-358/spree_taxon/1448_slide31.jpg +object: 358/spree_taxon/1641_qq_43x41.jpg-1641-358/spree_taxon/1464_qq_43x41.jpg +object: 358/spree_taxon/1642_weixin_43x41.jpg-1642-358/spree_taxon/1465_weixin_43x41.jpg +object: 358/spree_taxon/1643_telephone_43x41.jpg-1643-358/spree_taxon/1466_telephone_43x41.jpg +object: 358/spree_taxon/2034_slide1.jpg-2034-358/spree_taxon/1570_slide1.jpg +object: 358/spree_taxon/2035_slide2.jpg-2035-358/spree_taxon/1571_slide2.jpg +object: 358/spree_taxon/2036_slide3.jpg-2036-358/spree_taxon/1572_slide3.jpg +object: 357/spree_taxon/1597_company.jpg-1597-357/spree_taxon/1449_company.jpg +object: 357/spree_taxon/1603_中文首页滚动01.jpg-1603-357/spree_taxon/1450_中文首页滚动01.jpg +object: 357/spree_taxon/1605_icon1_275x75.jpg-1605-357/spree_taxon/1451_icon1_275x75.jpg +object: 357/spree_taxon/1606_icon2_275x75.jpg-1606-357/spree_taxon/1452_icon2_275x75.jpg +object: 357/spree_taxon/1607_icon3_275x75.jpg-1607-357/spree_taxon/1453_icon3_275x75.jpg +object: 357/spree_taxon/1608_icon4_275x75.png-1608-357/spree_taxon/1454_icon4_275x75.png +object: 357/spree_taxon/1610_cn.png-1610-357/spree_taxon/1455_cn.png +object: 357/spree_taxon/1611_en.png-1611-357/spree_taxon/1456_en.png +object: 357/spree_taxon/1613_weixin-icon.png-1613-357/spree_taxon/1457_weixin-icon.png +object: 357/spree_taxon/1614_qq-icon.png-1614-357/spree_taxon/1458_qq-icon.png +object: 357/spree_taxon/1621_company2.jpg-1621-357/spree_taxon/1459_company2.jpg +object: 357/spree_taxon/1632_t1_352_420.png-1632-357/spree_taxon/1460_t1_352_420.png +object: 357/spree_taxon/1633_t2_352x420.png-1633-357/spree_taxon/1461_t2_352x420.png +object: 357/spree_taxon/1637_slide1.jpg-1637-357/spree_taxon/1462_slide1.jpg +object: 357/spree_taxon/1639_slide2.jpg-1639-357/spree_taxon/1463_slide2.jpg +object: 357/spree_taxon/1644_中文首页滚动02.jpg-1644-357/spree_taxon/1467_中文首页滚动02.jpg +object: 357/spree_taxon/1645_中文首页滚动03.jpg-1645-357/spree_taxon/1468_中文首页滚动03.jpg +object: 357/spree_taxon/1646_中文首页滚动04.jpg-1646-357/spree_taxon/1469_中文首页滚动04.jpg +object: 357/spree_taxon/1648_524_cn.png-1648-357/spree_taxon/1470_524_cn.png +object: 357/spree_taxon/1649_525_en.png-1649-357/spree_taxon/1471_525_en.png +object: 357/spree_taxon/1651_524_cn.png-1651-357/spree_taxon/1472_524_cn.png +object: 357/spree_taxon/1652_525_en.png-1652-357/spree_taxon/1473_525_en.png +object: 357/spree_taxon/1653_slide3.jpg-1653-357/spree_taxon/1474_slide3.jpg +object: 359/spree_taxon/1656_company.jpg-1656-359/spree_taxon/1475_company.jpg +object: 359/spree_taxon/1660_中文首页滚动01.jpg-1660-359/spree_taxon/1476_中文首页滚动01.jpg +object: 359/spree_taxon/1661_中文首页滚动02.jpg-1661-359/spree_taxon/1477_中文首页滚动02.jpg +object: 359/spree_taxon/1662_中文首页滚动03.jpg-1662-359/spree_taxon/1478_中文首页滚动03.jpg +object: 359/spree_taxon/1663_中文首页滚动04.jpg-1663-359/spree_taxon/1479_中文首页滚动04.jpg +object: 359/spree_taxon/1665_icon1_275x75.jpg-1665-359/spree_taxon/1480_icon1_275x75.jpg +object: 359/spree_taxon/1666_icon2_275x75.jpg-1666-359/spree_taxon/1481_icon2_275x75.jpg +object: 359/spree_taxon/1667_icon3_275x75.jpg-1667-359/spree_taxon/1482_icon3_275x75.jpg +object: 359/spree_taxon/1668_icon4_275x75.png-1668-359/spree_taxon/1483_icon4_275x75.png +object: 359/spree_taxon/1671_524_cn.png-1671-359/spree_taxon/1484_524_cn.png +object: 359/spree_taxon/1672_525_en.png-1672-359/spree_taxon/1485_525_en.png +object: 359/spree_taxon/1673_slide5.jpg-1673-359/spree_taxon/1486_slide5.jpg +object: 360/spree_taxon/1679_t1_352_420.png-1679-360/spree_taxon/1487_t1_352_420.png +object: 360/spree_taxon/1680_t2_352x420.png-1680-360/spree_taxon/1488_t2_352x420.png +object: 360/spree_taxon/1683_slide1.jpg-1683-360/spree_taxon/1489_slide1.jpg +object: 360/spree_taxon/1684_slide2.jpg-1684-360/spree_taxon/1490_slide2.jpg +object: 360/spree_taxon/1685_slide3.jpg-1685-360/spree_taxon/1491_slide3.jpg +object: 361/spree_taxon/1709_slide1.jpg-1709-361/spree_taxon/1493_slide1.jpg +object: 361/spree_taxon/1710_slide2.jpg-1710-361/spree_taxon/1494_slide2.jpg +object: 361/spree_taxon/1711_slider3.jpg-1711-361/spree_taxon/1495_slider3.jpg +object: 361/spree_taxon/1716_t1-new-arrival.jpg-1716-361/spree_taxon/1496_t1-new-arrival.jpg +object: 361/spree_taxon/1717_t1-discount.jpg-1717-361/spree_taxon/1497_t1-discount.jpg +object: 361/spree_taxon/1718_t1-giftcard.jpg-1718-361/spree_taxon/1498_t1-giftcard.jpg +object: 361/spree_taxon/1726_t1-sale-service.jpg-1726-361/spree_taxon/1499_t1-sale-service.jpg +object: 361/spree_taxon/1727_t1-follow-us.jpg-1727-361/spree_taxon/1500_t1-follow-us.jpg +object: 361/spree_taxon/1728_t1-delivery-service.jpg-1728-361/spree_taxon/1501_t1-delivery-service.jpg +object: 361/spree_taxon/1730_slide11.jpg-1730-361/spree_taxon/1502_slide11.jpg +object: 361/spree_taxon/1731_slide12.jpg-1731-361/spree_taxon/1503_slide12.jpg +object: 361/spree_taxon/1733_service1.jpg-1733-361/spree_taxon/1504_service1.jpg +object: 361/spree_taxon/1734_service2.jpg-1734-361/spree_taxon/1505_service2.jpg +object: 361/spree_taxon/1735_service3.jpg-1735-361/spree_taxon/1506_service3.jpg +object: 361/spree_taxon/1736_service4.jpg-1736-361/spree_taxon/1507_service4.jpg +object: 366/spree_taxon/1770_company.jpg-1770-366/spree_taxon/1509_company.jpg +object: 366/spree_taxon/1774_中文首页滚动01.jpg-1774-366/spree_taxon/1510_中文首页滚动01.jpg +object: 366/spree_taxon/1775_中文首页滚动02.jpg-1775-366/spree_taxon/1511_中文首页滚动02.jpg +object: 366/spree_taxon/1776_中文首页滚动03.jpg-1776-366/spree_taxon/1512_中文首页滚动03.jpg +object: 366/spree_taxon/1777_中文首页滚动04.jpg-1777-366/spree_taxon/1513_中文首页滚动04.jpg +object: 366/spree_taxon/1779_icon1_275x75.jpg-1779-366/spree_taxon/1514_icon1_275x75.jpg +object: 366/spree_taxon/1780_icon2_275x75.jpg-1780-366/spree_taxon/1515_icon2_275x75.jpg +object: 366/spree_taxon/1781_icon3_275x75.jpg-1781-366/spree_taxon/1516_icon3_275x75.jpg +object: 366/spree_taxon/1782_icon4_275x75.png-1782-366/spree_taxon/1517_icon4_275x75.png +object: 366/spree_taxon/1785_524_cn.png-1785-366/spree_taxon/1518_524_cn.png +object: 366/spree_taxon/1786_525_en.png-1786-366/spree_taxon/1519_525_en.png +object: 366/spree_taxon/1789_company.jpg-1789-366/spree_taxon/1520_company.jpg +object: 366/spree_taxon/1793_524_cn.png-1793-366/spree_taxon/1521_524_cn.png +object: 366/spree_taxon/1794_525_en.png-1794-366/spree_taxon/1522_525_en.png +object: 366/spree_taxon/1796_weixin-icon.png-1796-366/spree_taxon/1523_weixin-icon.png +object: 366/spree_taxon/1797_qq-icon.png-1797-366/spree_taxon/1524_qq-icon.png +object: 366/spree_taxon/1808_slide1920-1.jpg-1808-366/spree_taxon/1525_slide1920-1.jpg +object: 366/spree_taxon/1809_slide1920-2.jpg-1809-366/spree_taxon/1526_slide1920-2.jpg +object: 366/spree_taxon/1810_slide1920-3.jpg-1810-366/spree_taxon/1527_slide1920-3.jpg +object: 366/spree_taxon/1818_compan_profile.JPG-1818-366/spree_taxon/1528_compan_profile.JPG +object: 366/spree_taxon/1831_chat.jpg-1831-366/spree_taxon/1529_chat.jpg +object: 366/spree_taxon/1832_gototop.jpg-1832-366/spree_taxon/1530_gototop.jpg +object: 366/spree_taxon/1839_slide1.jpg-1839-366/spree_taxon/1531_slide1.jpg +object: 366/spree_taxon/1840_slide2.jpg-1840-366/spree_taxon/1532_slide2.jpg +object: 366/spree_taxon/1841_slider3.jpg-1841-366/spree_taxon/1533_slider3.jpg +object: 366/spree_taxon/1843_t1-new-arrival.jpg-1843-366/spree_taxon/1534_t1-new-arrival.jpg +object: 366/spree_taxon/1844_t1-discount.jpg-1844-366/spree_taxon/1535_t1-discount.jpg +object: 366/spree_taxon/1845_t1-giftcard.jpg-1845-366/spree_taxon/1536_t1-giftcard.jpg +object: 366/spree_taxon/1861_t1-sale-service.jpg-1861-366/spree_taxon/1537_t1-sale-service.jpg +object: 366/spree_taxon/1862_t1-follow-us.jpg-1862-366/spree_taxon/1538_t1-follow-us.jpg +object: 366/spree_taxon/1863_t1-delivery-service.jpg-1863-366/spree_taxon/1539_t1-delivery-service.jpg +object: 366/spree_taxon/1881_weixin.png-1881-366/spree_taxon/1540_weixin.png +object: 366/spree_taxon/1882_qq.png-1882-366/spree_taxon/1541_qq.png +object: 366/spree_taxon/1893_slide2.jpg-1893-366/spree_taxon/1542_slide2.jpg +object: 366/spree_taxon/1894_slide3.jpg-1894-366/spree_taxon/1543_slide3.jpg +object: 366/spree_taxon/1896_icon1.png-1896-366/spree_taxon/1544_icon1.png +object: 366/spree_taxon/1897_icon2.png-1897-366/spree_taxon/1545_icon2.png +object: 366/spree_taxon/1898_icon3.png-1898-366/spree_taxon/1546_icon3.png +object: 366/spree_taxon/1899_icon4.png-1899-366/spree_taxon/1547_icon4.png +object: 366/spree_taxon/1928_喷剂.png-1928-366/spree_taxon/1548_喷剂.png +object: 366/spree_taxon/1929_贴剂.png-1929-366/spree_taxon/1549_贴剂.png +object: 366/spree_taxon/1930_软膏.png-1930-366/spree_taxon/1550_软膏.png +object: 366/spree_taxon/1931_养生.png-1931-366/spree_taxon/1551_养生.png +object: 366/spree_taxon/1933_company.jpg-1933-366/spree_taxon/1552_company.jpg +object: 366/spree_taxon/1949_company2.jpg-1949-366/spree_taxon/1553_company2.jpg +object: 366/spree_taxon/1975_slide1.png-1975-366/spree_taxon/1554_slide1.png +object: 366/spree_taxon/1976_slide2.png-1976-366/spree_taxon/1555_slide2.png +object: 366/spree_taxon/1978_ztc1.png-1978-366/spree_taxon/1556_ztc1.png +object: 366/spree_taxon/1979_ztc2.png-1979-366/spree_taxon/1557_ztc2.png +object: 366/spree_taxon/1980_ztc3.png-1980-366/spree_taxon/1558_ztc3.png +object: 366/spree_taxon/1994_slide11.jpg-1994-366/spree_taxon/1559_slide11.jpg +object: 366/spree_taxon/1995_slide12.jpg-1995-366/spree_taxon/1560_slide12.jpg +object: 366/spree_taxon/1997_service1.jpg-1997-366/spree_taxon/1561_service1.jpg +object: 366/spree_taxon/1998_service2.jpg-1998-366/spree_taxon/1562_service2.jpg +object: 366/spree_taxon/1999_service3.jpg-1999-366/spree_taxon/1563_service3.jpg +object: 366/spree_taxon/2000_service4.jpg-2000-366/spree_taxon/1564_service4.jpg +object: 366/spree_taxon/2025_t1_352_420.png-2025-366/spree_taxon/1565_t1_352_420.png +object: 366/spree_taxon/2026_t2_352x420.png-2026-366/spree_taxon/1566_t2_352x420.png +object: 366/spree_taxon/2029_slide1.jpg-2029-366/spree_taxon/1567_slide1.jpg +object: 366/spree_taxon/2030_slide2.jpg-2030-366/spree_taxon/1568_slide2.jpg +object: 366/spree_taxon/2031_slide3.jpg-2031-366/spree_taxon/1569_slide3.jpg +object: 369/spree_taxon/2052_slide1.jpg-2052-369/spree_taxon/1579_slide1.jpg +object: 369/spree_taxon/2053_slide2.jpg-2053-369/spree_taxon/1580_slide2.jpg +object: 369/spree_taxon/2056_weibo.png-2056-369/spree_taxon/1581_weibo.png +object: 369/spree_taxon/2057_weixin.png-2057-369/spree_taxon/1582_weixin.png +object: 369/spree_taxon/2058_qq.png-2058-369/spree_taxon/1583_qq.png +object: 371/spree_taxon/2104_slide1.png-2104-371/spree_taxon/1584_slide1.png +object: 371/spree_taxon/2105_slide2.png-2105-371/spree_taxon/1585_slide2.png +object: 371/spree_taxon/2107_ztc1.png-2107-371/spree_taxon/1586_ztc1.png +object: 371/spree_taxon/2108_ztc2.png-2108-371/spree_taxon/1587_ztc2.png +object: 371/spree_taxon/2109_ztc3.png-2109-371/spree_taxon/1588_ztc3.png +object: 371/spree_taxon/2117_slide1.png-2117-371/spree_taxon/1589_slide1.png +object: 371/spree_taxon/2118_slide2.png-2118-371/spree_taxon/1590_slide2.png +object: 372/spree_taxon/2127_slide1.jpg-2127-372/spree_taxon/1591_slide1.jpg +object: 372/spree_taxon/2128_slide2.jpg-2128-372/spree_taxon/1592_slide2.jpg +object: 372/spree_taxon/2143_weibo.png-2143-372/spree_taxon/1593_weibo.png +object: 372/spree_taxon/2144_weixin.png-2144-372/spree_taxon/1594_weixin.png +object: 372/spree_taxon/2145_qq.png-2145-372/spree_taxon/1595_qq.png +object: 374/spree_taxon/2155_cn.png-2155-374/spree_taxon/1596_cn.png +object: 374/spree_taxon/2156_en.png-2156-374/spree_taxon/1597_en.png +object: 374/spree_taxon/2158_weixin-icon.png-2158-374/spree_taxon/1598_weixin-icon.png +object: 374/spree_taxon/2159_qq-icon.png-2159-374/spree_taxon/1599_qq-icon.png +object: 374/spree_taxon/2170_slide1920-1.jpg-2170-374/spree_taxon/1600_slide1920-1.jpg +object: 374/spree_taxon/2171_slide1920-2.jpg-2171-374/spree_taxon/1601_slide1920-2.jpg +object: 374/spree_taxon/2172_slide1920-3.jpg-2172-374/spree_taxon/1602_slide1920-3.jpg +object: 374/spree_taxon/2180_compan_profile.JPG-2180-374/spree_taxon/1603_compan_profile.JPG +object: 374/spree_taxon/2193_penji.png-2193-374/spree_taxon/1604_penji.png +object: 374/spree_taxon/2194_tieji.png-2194-374/spree_taxon/1605_tieji.png +object: 374/spree_taxon/2195_ruangao.png-2195-374/spree_taxon/1606_ruangao.png +object: 374/spree_taxon/2196_yangsheng.png-2196-374/spree_taxon/1607_yangsheng.png +object: 375/spree_taxon/2223_slide1.jpg-2223-375/spree_taxon/1608_slide1.jpg +object: 375/spree_taxon/2224_slide2.jpg-2224-375/spree_taxon/1609_slide2.jpg +object: 375/spree_taxon/2225_slider3.jpg-2225-375/spree_taxon/1610_slider3.jpg +object: 375/spree_taxon/2230_t1-new-arrival.jpg-2230-375/spree_taxon/1611_t1-new-arrival.jpg +object: 375/spree_taxon/2231_t1-discount.jpg-2231-375/spree_taxon/1612_t1-discount.jpg +object: 375/spree_taxon/2232_t1-giftcard.jpg-2232-375/spree_taxon/1613_t1-giftcard.jpg +object: 375/spree_taxon/2240_t1-sale-service.jpg-2240-375/spree_taxon/1614_t1-sale-service.jpg +object: 375/spree_taxon/2241_t1-follow-us.jpg-2241-375/spree_taxon/1615_t1-follow-us.jpg +object: 375/spree_taxon/2242_t1-delivery-service.jpg-2242-375/spree_taxon/1616_t1-delivery-service.jpg +object: 375/spree_taxon/2258_slide11.jpg-2258-375/spree_taxon/1617_slide11.jpg +object: 375/spree_taxon/2259_slide12.jpg-2259-375/spree_taxon/1618_slide12.jpg +object: 375/spree_taxon/2261_service1.jpg-2261-375/spree_taxon/1619_service1.jpg +object: 375/spree_taxon/2262_service2.jpg-2262-375/spree_taxon/1620_service2.jpg +object: 375/spree_taxon/2263_service3.jpg-2263-375/spree_taxon/1621_service3.jpg +object: 375/spree_taxon/2264_service4.jpg-2264-375/spree_taxon/1622_service4.jpg +object: 376/spree_taxon/2312_cn.png-2312-376/spree_taxon/1626_cn.png +object: 376/spree_taxon/2313_en.png-2313-376/spree_taxon/1627_en.png +object: 376/spree_taxon/2315_weixin-icon.png-2315-376/spree_taxon/1628_weixin-icon.png +object: 376/spree_taxon/2316_qq-icon.png-2316-376/spree_taxon/1629_qq-icon.png +object: 376/spree_taxon/2327_5719020_ban1.jpeg-2327-376/spree_taxon/1630_5719020_ban1.jpeg +object: 376/spree_taxon/2328_5719021_ban2.jpeg-2328-376/spree_taxon/1631_5719021_ban2.jpeg +object: 376/spree_taxon/2337_compan_profile.JPG-2337-376/spree_taxon/1632_compan_profile.JPG +object: 376/spree_taxon/2350_chat.jpg-2350-376/spree_taxon/1633_chat.jpg +object: 376/spree_taxon/2351_gototop.jpg-2351-376/spree_taxon/1634_gototop.jpg +object: 378/spree_taxon/2354_cn.png-2354-378/spree_taxon/1635_cn.png +object: 378/spree_taxon/2355_en.png-2355-378/spree_taxon/1636_en.png +object: 378/spree_taxon/2357_weixin-icon.png-2357-378/spree_taxon/1637_weixin-icon.png +object: 378/spree_taxon/2358_qq-icon.png-2358-378/spree_taxon/1638_qq-icon.png +object: 378/spree_taxon/2369_slide1920-1.jpg-2369-378/spree_taxon/1639_slide1920-1.jpg +object: 378/spree_taxon/2370_slide1920-2.jpg-2370-378/spree_taxon/1640_slide1920-2.jpg +object: 378/spree_taxon/2371_slide1920-3.jpg-2371-378/spree_taxon/1641_slide1920-3.jpg +object: 378/spree_taxon/2379_compan_profile.JPG-2379-378/spree_taxon/1642_compan_profile.JPG +object: 378/spree_taxon/2392_chat.jpg-2392-378/spree_taxon/1643_chat.jpg +object: 378/spree_taxon/2393_gototop.jpg-2393-378/spree_taxon/1644_gototop.jpg +object: 378/spree_taxon/2395_cn.png-2395-378/spree_taxon/1645_cn.png +object: 378/spree_taxon/2396_en.png-2396-378/spree_taxon/1646_en.png +object: 378/spree_taxon/2423_slide1.jpg-2423-378/spree_taxon/1647_slide1.jpg +object: 378/spree_taxon/2424_slide2.jpg-2424-378/spree_taxon/1648_slide2.jpg +object: 378/spree_taxon/2425_slider3.jpg-2425-378/spree_taxon/1649_slider3.jpg +object: 378/spree_taxon/2430_t1-new-arrival.jpg-2430-378/spree_taxon/1650_t1-new-arrival.jpg +object: 378/spree_taxon/2431_t1-discount.jpg-2431-378/spree_taxon/1651_t1-discount.jpg +object: 378/spree_taxon/2432_t1-giftcard.jpg-2432-378/spree_taxon/1652_t1-giftcard.jpg +object: 378/spree_taxon/2440_t1-sale-service.jpg-2440-378/spree_taxon/1653_t1-sale-service.jpg +object: 378/spree_taxon/2441_t1-follow-us.jpg-2441-378/spree_taxon/1654_t1-follow-us.jpg +object: 378/spree_taxon/2442_t1-delivery-service.jpg-2442-378/spree_taxon/1655_t1-delivery-service.jpg +[deploy@iZ25zo61itoZ spree_abc_master]$ RAILS_ENV=aliyun_staging bundle exec rails spree_theme:fix_oss_taxon_icon +object: 25/spree_taxon/42_天猫定制2.jpg-42-25/spree_taxon/1176_天猫定制2.jpg +object: 25/spree_taxon/43_我们的承诺1.jpg-43-25/spree_taxon/1177_我们的承诺1.jpg +object: 25/spree_taxon/44_zegna3.jpg-44-25/spree_taxon/1178_zegna3.jpg +object: 25/spree_taxon/49_zegna.gif-49-25/spree_taxon/1179_zegna.gif +object: 25/spree_taxon/50_scabal.gif-50-25/spree_taxon/1180_scabal.gif +object: 25/spree_taxon/51_cerruti.gif-51-25/spree_taxon/1181_cerruti.gif +object: 25/spree_taxon/52_holland.gif-52-25/spree_taxon/1182_holland.gif +object: 25/spree_taxon/53_loro.gif-53-25/spree_taxon/1183_loro.gif +object: 2/spree_taxon/102_slide11.jpg-102-2/spree_taxon/1191_slide11.jpg +object: 2/spree_taxon/103_slide12.jpg-103-2/spree_taxon/1192_slide12.jpg +object: 2/spree_taxon/170_slide1.png-170-2/spree_taxon/1207_slide1.png +object: 2/spree_taxon/172_ztc1.png-172-2/spree_taxon/1208_ztc1.png +object: 2/spree_taxon/173_ztc2.png-173-2/spree_taxon/1209_ztc2.png +object: 2/spree_taxon/174_ztc3.png-174-2/spree_taxon/1210_ztc3.png +object: 2/spree_taxon/175_slide2.png-175-2/spree_taxon/1211_slide2.png +object: 2/spree_taxon/233_t1-discount.jpg-233-2/spree_taxon/1217_t1-discount.jpg +object: 2/spree_taxon/234_t1-new-arrival.jpg-234-2/spree_taxon/1218_t1-new-arrival.jpg +object: 2/spree_taxon/235_t1-giftcard.jpg-235-2/spree_taxon/1219_t1-giftcard.jpg +object: 2/spree_taxon/240_t1-sale-service.jpg-240-2/spree_taxon/1220_t1-sale-service.jpg +object: 2/spree_taxon/241_t1-follow-us.jpg-241-2/spree_taxon/1221_t1-follow-us.jpg +object: 2/spree_taxon/242_t1-delivery-service.jpg-242-2/spree_taxon/1222_t1-delivery-service.jpg +object: 2/spree_taxon/66_slide1.jpg-66-2/spree_taxon/1184_slide1.jpg +object: 2/spree_taxon/67_slide2.jpg-67-2/spree_taxon/1185_slide2.jpg +object: 2/spree_taxon/68_slider3.jpg-68-2/spree_taxon/1186_slider3.jpg +object: 2/spree_taxon/83_service1.jpg-83-2/spree_taxon/1187_service1.jpg +object: 2/spree_taxon/84_service2.jpg-84-2/spree_taxon/1188_service2.jpg +object: 2/spree_taxon/85_service3.jpg-85-2/spree_taxon/1189_service3.jpg +object: 2/spree_taxon/86_service4.jpg-86-2/spree_taxon/1190_service4.jpg +object: 31/spree_taxon/120_service1.jpg-120-31/spree_taxon/1193_service1.jpg +object: 31/spree_taxon/121_service2.jpg-121-31/spree_taxon/1194_service2.jpg +object: 31/spree_taxon/122_service3.jpg-122-31/spree_taxon/1195_service3.jpg +object: 31/spree_taxon/123_service4.jpg-123-31/spree_taxon/1196_service4.jpg +object: 31/spree_taxon/131_slide11.jpg-131-31/spree_taxon/1197_slide11.jpg +object: 31/spree_taxon/132_slide12.jpg-132-31/spree_taxon/1198_slide12.jpg +object: 1/spree_taxon/1000_contact1.png-1000-1/spree_taxon/1329_contact1.png +object: 1/spree_taxon/1001_contact2.png-1001-1/spree_taxon/1330_contact2.png +object: 1/spree_taxon/1002_contact3.png-1002-1/spree_taxon/1331_contact3.png +object: 1/spree_taxon/1003_contact4.png-1003-1/spree_taxon/1332_contact4.png +object: 1/spree_taxon/1010_feature1.png-1010-1/spree_taxon/1333_feature1.png +object: 1/spree_taxon/1011_feature4.png-1011-1/spree_taxon/1334_feature4.png +object: 1/spree_taxon/1012_feature3.png-1012-1/spree_taxon/1335_feature3.png +object: 1/spree_taxon/1013_feature5.png-1013-1/spree_taxon/1336_feature5.png +object: 1/spree_taxon/1014_feature2.png-1014-1/spree_taxon/1337_feature2.png +object: 1/spree_taxon/1015_feature6.png-1015-1/spree_taxon/1338_feature6.png +object: 1/spree_taxon/1017_logo-yilin.jpg-1017-1/spree_taxon/1339_logo-yilin.jpg +object: 1/spree_taxon/1018_logo-beidian.jpg-1018-1/spree_taxon/1340_logo-beidian.jpg +object: 1/spree_taxon/1019_logo-ruilang.jpg-1019-1/spree_taxon/1341_logo-ruilang.jpg +object: 1/spree_taxon/1020_logo-dalianshops.jpg-1020-1/spree_taxon/1342_logo-dalianshops.jpg +object: 1/spree_taxon/135_feature1.png-135-1/spree_taxon/1199_feature1.png +object: 1/spree_taxon/136_feature2.png-136-1/spree_taxon/1200_feature2.png +object: 1/spree_taxon/137_feature3.png-137-1/spree_taxon/1201_feature3.png +object: 1/spree_taxon/138_feature4.png-138-1/spree_taxon/1202_feature4.png +object: 1/spree_taxon/140_customer1.jpg-140-1/spree_taxon/1203_customer1.jpg +object: 1/spree_taxon/141_customer3.jpg-141-1/spree_taxon/1204_customer3.jpg +object: 1/spree_taxon/142_customer2.jpg-142-1/spree_taxon/1205_customer2.jpg +object: 1/spree_taxon/143_customer4.jpg-143-1/spree_taxon/1206_customer4.jpg +object: 4/spree_taxon/202_slide1.png-202-4/spree_taxon/1212_slide1.png +object: 4/spree_taxon/203_slide2.png-203-4/spree_taxon/1213_slide2.png +object: 4/spree_taxon/205_ztc1.png-205-4/spree_taxon/1214_ztc1.png +object: 4/spree_taxon/206_ztc2.png-206-4/spree_taxon/1215_ztc2.png +object: 4/spree_taxon/207_ztc3.png-207-4/spree_taxon/1216_ztc3.png +object: 3/spree_taxon/249_slide1.jpg-249-3/spree_taxon/1223_slide1.jpg +object: 3/spree_taxon/250_slider3.jpg-250-3/spree_taxon/1224_slider3.jpg +object: 3/spree_taxon/252_t1-new-arrival.jpg-252-3/spree_taxon/1225_t1-new-arrival.jpg +object: 3/spree_taxon/253_t1-discount.jpg-253-3/spree_taxon/1226_t1-discount.jpg +object: 3/spree_taxon/254_t1-giftcard.jpg-254-3/spree_taxon/1227_t1-giftcard.jpg +object: 3/spree_taxon/259_t1-sale-service.jpg-259-3/spree_taxon/1228_t1-sale-service.jpg +object: 3/spree_taxon/260_t1-follow-us.jpg-260-3/spree_taxon/1229_t1-follow-us.jpg +object: 3/spree_taxon/261_t1-delivery-service.jpg-261-3/spree_taxon/1230_t1-delivery-service.jpg +object: 42/spree_taxon/342_slide1.png-342-42/spree_taxon/1231_slide1.png +object: 42/spree_taxon/343_slide2.png-343-42/spree_taxon/1232_slide2.png +object: 42/spree_taxon/345_ztc1.png-345-42/spree_taxon/1233_ztc1.png +object: 42/spree_taxon/346_ztc2.png-346-42/spree_taxon/1234_ztc2.png +object: 42/spree_taxon/347_ztc3.png-347-42/spree_taxon/1235_ztc3.png +object: 43/spree_taxon/365_slide1.jpg-365-43/spree_taxon/1236_slide1.jpg +object: 43/spree_taxon/366_slide2.jpg-366-43/spree_taxon/1237_slide2.jpg +object: 43/spree_taxon/367_slider3.jpg-367-43/spree_taxon/1238_slider3.jpg +object: 43/spree_taxon/372_t1-new-arrival.jpg-372-43/spree_taxon/1239_t1-new-arrival.jpg +object: 43/spree_taxon/373_t1-discount.jpg-373-43/spree_taxon/1240_t1-discount.jpg +object: 43/spree_taxon/374_t1-giftcard.jpg-374-43/spree_taxon/1241_t1-giftcard.jpg +object: 43/spree_taxon/382_t1-sale-service.jpg-382-43/spree_taxon/1242_t1-sale-service.jpg +object: 43/spree_taxon/383_t1-follow-us.jpg-383-43/spree_taxon/1243_t1-follow-us.jpg +object: 43/spree_taxon/384_t1-delivery-service.jpg-384-43/spree_taxon/1244_t1-delivery-service.jpg +object: 33/spree_taxon/1533_slide11.jpg-1533-33/spree_taxon/1433_slide11.jpg +object: 33/spree_taxon/1534_slide21.jpg-1534-33/spree_taxon/1434_slide21.jpg +object: 33/spree_taxon/1535_slide31.jpg-1535-33/spree_taxon/1435_slide31.jpg +object: 33/spree_taxon/2038_首页-03.jpg-2038-33/spree_taxon/1573_首页-03.jpg +object: 33/spree_taxon/2039_slide2.jpg-2039-33/spree_taxon/1574_slide2.jpg +object: 33/spree_taxon/2040_banner1011-04.jpg-2040-33/spree_taxon/1575_banner1011-04.jpg +object: 33/spree_taxon/2042_qq_43x41.jpg-2042-33/spree_taxon/1576_qq_43x41.jpg +object: 33/spree_taxon/2043_weixin_43x41.jpg-2043-33/spree_taxon/1577_weixin_43x41.jpg +object: 33/spree_taxon/2044_telephone_43x41.jpg-2044-33/spree_taxon/1578_telephone_43x41.jpg +object: 33/spree_taxon/392_工作室网站1.21-01.jpg-392-33/spree_taxon/1245_工作室网站1.21-01.jpg +object: 33/spree_taxon/393_工作室网站1.28-09.jpg-393-33/spree_taxon/1246_工作室网站1.28-09.jpg +object: 33/spree_taxon/394_工作室网站1.28-10.jpg-394-33/spree_taxon/1247_工作室网站1.28-10.jpg +object: 33/spree_taxon/395_工作室网站1.28-11.jpg-395-33/spree_taxon/1248_工作室网站1.28-11.jpg +object: 33/spree_taxon/407_工作室网站1.30-09.png-407-33/spree_taxon/1249_工作室网站1.30-09.png +object: 33/spree_taxon/408_工作室网站1.30-10.png-408-33/spree_taxon/1250_工作室网站1.30-10.png +object: 33/spree_taxon/410_工作室网站1.30-12.png-410-33/spree_taxon/1251_工作室网站1.30-12.png +object: 33/spree_taxon/438_侧边标签-07.jpg-438-33/spree_taxon/1252_侧边标签-07.jpg +object: 33/spree_taxon/439_侧边标签-06.jpg-439-33/spree_taxon/1253_侧边标签-06.jpg +object: 336/spree_taxon/1124_icon1.png-1124-336/spree_taxon/1357_icon1.png +object: 336/spree_taxon/1125_icon2.png-1125-336/spree_taxon/1358_icon2.png +object: 336/spree_taxon/1126_icon3.png-1126-336/spree_taxon/1359_icon3.png +object: 336/spree_taxon/1127_icon4.png-1127-336/spree_taxon/1360_icon4.png +object: 336/spree_taxon/1135_slide3.jpg-1135-336/spree_taxon/1361_slide3.jpg +object: 336/spree_taxon/1155_slide2.jpg-1155-336/spree_taxon/1362_slide2.jpg +object: 336/spree_taxon/1157_weixin.png-1157-336/spree_taxon/1363_weixin.png +object: 336/spree_taxon/1158_qq.png-1158-336/spree_taxon/1364_qq.png +object: 336/spree_taxon/1458_chat.jpg-1458-336/spree_taxon/1421_chat.jpg +object: 336/spree_taxon/1459_gototop.jpg-1459-336/spree_taxon/1422_gototop.jpg +object: 336/spree_taxon/2310_轮播海报02.jpg-2310-336/spree_taxon/1625_轮播海报02.jpg +object: 336/spree_taxon/459_company.jpg-459-336/spree_taxon/1254_company.jpg +object: 336/spree_taxon/470_penji.png-470-336/spree_taxon/1255_penji.png +object: 336/spree_taxon/471_tieji.png-471-336/spree_taxon/1256_tieji.png +object: 336/spree_taxon/472_ruangao.png-472-336/spree_taxon/1257_ruangao.png +object: 336/spree_taxon/473_yangsheng.png-473-336/spree_taxon/1258_yangsheng.png +object: 336/spree_taxon/475_cn.png-475-336/spree_taxon/1259_cn.png +object: 336/spree_taxon/476_en.png-476-336/spree_taxon/1260_en.png +object: 336/spree_taxon/478_weixin-icon.png-478-336/spree_taxon/1261_weixin-icon.png +object: 336/spree_taxon/479_qq-icon.png-479-336/spree_taxon/1262_qq-icon.png +object: 336/spree_taxon/486_轮播海报01.jpg-486-336/spree_taxon/1263_轮播海报01.jpg +object: 336/spree_taxon/493_company2.jpg-493-336/spree_taxon/1264_company2.jpg +object: 336/spree_taxon/553_喷剂.png-553-336/spree_taxon/1275_喷剂.png +object: 336/spree_taxon/554_贴剂.png-554-336/spree_taxon/1276_贴剂.png +object: 336/spree_taxon/555_软膏.png-555-336/spree_taxon/1277_软膏.png +object: 336/spree_taxon/556_养生.png-556-336/spree_taxon/1278_养生.png +object: 336/spree_taxon/561_company.jpg-561-336/spree_taxon/1279_company.jpg +object: 336/spree_taxon/726_compan_profile.JPG-726-336/spree_taxon/1308_compan_profile.JPG +object: 336/spree_taxon/730_slide1920-1.jpg-730-336/spree_taxon/1309_slide1920-1.jpg +object: 336/spree_taxon/731_slide1920-2.jpg-731-336/spree_taxon/1310_slide1920-2.jpg +object: 336/spree_taxon/732_slide1920-3.jpg-732-336/spree_taxon/1311_slide1920-3.jpg +object: 45/spree_taxon/506_company2.jpg-506-45/spree_taxon/1265_company2.jpg +object: 45/spree_taxon/514_0011.jpg-514-45/spree_taxon/1266_0011.jpg +object: 45/spree_taxon/514_轮播海报01.jpg-514-45/spree_taxon/1266_轮播海报01.jpg +object: 45/spree_taxon/521_weixin-icon.png-521-45/spree_taxon/1267_weixin-icon.png +object: 45/spree_taxon/522_qq-icon.png-522-45/spree_taxon/1268_qq-icon.png +object: 45/spree_taxon/524_cn.png-524-45/spree_taxon/1269_cn.png +object: 45/spree_taxon/525_en.png-525-45/spree_taxon/1270_en.png +object: 45/spree_taxon/527_喷剂.png-527-45/spree_taxon/1271_喷剂.png +object: 45/spree_taxon/528_贴剂.png-528-45/spree_taxon/1272_贴剂.png +object: 45/spree_taxon/529_软膏.png-529-45/spree_taxon/1273_软膏.png +object: 45/spree_taxon/530_养生.png-530-45/spree_taxon/1274_养生.png +object: 45/spree_taxon/705_0022.jpg-705-45/spree_taxon/1306_0022.jpg +object: 45/spree_taxon/705_轮播海报02.jpg-705-45/spree_taxon/1306_轮播海报02.jpg +object: 45/spree_taxon/706_0033.jpg-706-45/spree_taxon/1307_0033.jpg +object: 45/spree_taxon/706_轮播海报03.jpg-706-45/spree_taxon/1307_轮播海报03.jpg +object: 337/spree_taxon/2308_轮播海报02.jpg-2308-337/spree_taxon/1623_轮播海报02.jpg +object: 337/spree_taxon/2309_轮播海报03.jpg-2309-337/spree_taxon/1624_轮播海报03.jpg +object: 337/spree_taxon/567_cn.png-567-337/spree_taxon/1280_cn.png +object: 337/spree_taxon/568_en.png-568-337/spree_taxon/1281_en.png +object: 337/spree_taxon/570_weixin-icon.png-570-337/spree_taxon/1282_weixin-icon.png +object: 337/spree_taxon/571_weixin-icon.png-571-337/spree_taxon/1283_weixin-icon.png +object: 337/spree_taxon/573_weixin-icon.png-573-337/spree_taxon/1284_weixin-icon.png +object: 337/spree_taxon/574_qq-icon.png-574-337/spree_taxon/1285_qq-icon.png +object: 337/spree_taxon/583_轮播海报01.jpg-583-337/spree_taxon/1286_轮播海报01.jpg +object: 337/spree_taxon/585_喷剂.png-585-337/spree_taxon/1287_喷剂.png +object: 337/spree_taxon/586_贴剂.png-586-337/spree_taxon/1288_贴剂.png +object: 337/spree_taxon/587_软膏.png-587-337/spree_taxon/1289_软膏.png +object: 337/spree_taxon/588_养生.png-588-337/spree_taxon/1290_养生.png +object: 337/spree_taxon/590_company2.jpg-590-337/spree_taxon/1291_company2.jpg +object: 338/spree_taxon/633_slide1.jpg-633-338/spree_taxon/1292_slide1.jpg +object: 338/spree_taxon/634_slide2.jpg-634-338/spree_taxon/1293_slide2.jpg +object: 338/spree_taxon/635_slider3.jpg-635-338/spree_taxon/1294_slider3.jpg +object: 338/spree_taxon/640_t1-new-arrival.jpg-640-338/spree_taxon/1295_t1-new-arrival.jpg +object: 338/spree_taxon/641_t1-discount.jpg-641-338/spree_taxon/1296_t1-discount.jpg +object: 338/spree_taxon/642_t1-giftcard.jpg-642-338/spree_taxon/1297_t1-giftcard.jpg +object: 338/spree_taxon/650_t1-sale-service.jpg-650-338/spree_taxon/1298_t1-sale-service.jpg +object: 338/spree_taxon/651_t1-follow-us.jpg-651-338/spree_taxon/1299_t1-follow-us.jpg +object: 338/spree_taxon/652_t1-delivery-service.jpg-652-338/spree_taxon/1300_t1-delivery-service.jpg +object: 341/spree_taxon/699_slide1.png-699-341/spree_taxon/1301_slide1.png +object: 341/spree_taxon/700_slide2.png-700-341/spree_taxon/1302_slide2.png +object: 341/spree_taxon/702_ztc1.png-702-341/spree_taxon/1303_ztc1.png +object: 341/spree_taxon/703_ztc2.png-703-341/spree_taxon/1304_ztc2.png +object: 341/spree_taxon/704_ztc3.png-704-341/spree_taxon/1305_ztc3.png +error: can not find taxon 343/spree_taxon/802_slide1.jpg +error: can not find taxon 343/spree_taxon/803_slide2.jpg +error: can not find taxon 343/spree_taxon/804_slider3.jpg +error: can not find taxon 343/spree_taxon/809_t1-new-arrival.jpg +error: can not find taxon 343/spree_taxon/810_t1-discount.jpg +error: can not find taxon 343/spree_taxon/811_t1-giftcard.jpg +error: can not find taxon 343/spree_taxon/851_slide1.jpg +error: can not find taxon 343/spree_taxon/852_slide2.jpg +error: can not find taxon 343/spree_taxon/853_slider3.jpg +error: can not find taxon 343/spree_taxon/858_t1-new-arrival.jpg +error: can not find taxon 343/spree_taxon/859_t1-discount.jpg +error: can not find taxon 343/spree_taxon/860_t1-giftcard.jpg +error: can not find taxon 343/spree_taxon/868_t1-sale-service.jpg +error: can not find taxon 343/spree_taxon/869_t1-follow-us.jpg +object: 343/spree_taxon/903_公司图片.jpg-903-343/spree_taxon/1312_公司图片.jpg +object: 343/spree_taxon/910_t1-new-arrival.jpg-910-343/spree_taxon/1313_t1-new-arrival.jpg +object: 343/spree_taxon/911_t1-discount.jpg-911-343/spree_taxon/1314_t1-discount.jpg +object: 343/spree_taxon/912_t1-giftcard.jpg-912-343/spree_taxon/1315_t1-giftcard.jpg +object: 343/spree_taxon/920_t1-sale-service.jpg-920-343/spree_taxon/1316_t1-sale-service.jpg +object: 343/spree_taxon/921_t1-follow-us.jpg-921-343/spree_taxon/1317_t1-follow-us.jpg +object: 343/spree_taxon/922_t1-delivery-service.jpg-922-343/spree_taxon/1318_t1-delivery-service.jpg +object: 342/spree_taxon/1691_信誉和品质.jpg-1691-342/spree_taxon/1492_信誉和品质.jpg +object: 342/spree_taxon/1767_2016-06-13_134936.jpg-1767-342/spree_taxon/1508_2016-06-13_134936.jpg +object: 342/spree_taxon/945_cn.png-945-342/spree_taxon/1319_cn.png +object: 342/spree_taxon/946_en.png-946-342/spree_taxon/1320_en.png +object: 342/spree_taxon/948_weixin-icon.png-948-342/spree_taxon/1321_weixin-icon.png +object: 342/spree_taxon/949_qq-icon.png-949-342/spree_taxon/1322_qq-icon.png +object: 342/spree_taxon/960_光伏.jpg-960-342/spree_taxon/1323_光伏.jpg +object: 342/spree_taxon/961_销售安装维修运维.jpg-961-342/spree_taxon/1324_销售安装维修运维.jpg +object: 342/spree_taxon/962_APP副本.jpg-962-342/spree_taxon/1325_APP副本.jpg +object: 342/spree_taxon/983_penji.png-983-342/spree_taxon/1326_penji.png +object: 342/spree_taxon/984_tieji.png-984-342/spree_taxon/1327_tieji.png +object: 342/spree_taxon/985_ruangao.png-985-342/spree_taxon/1328_ruangao.png +object: 344/spree_taxon/1048_slide1.png-1048-344/spree_taxon/1343_slide1.png +object: 344/spree_taxon/1049_slide2.png-1049-344/spree_taxon/1344_slide2.png +object: 344/spree_taxon/1051_ztc1.png-1051-344/spree_taxon/1345_ztc1.png +object: 344/spree_taxon/1052_ztc2.png-1052-344/spree_taxon/1346_ztc2.png +object: 344/spree_taxon/1053_ztc3.png-1053-344/spree_taxon/1347_ztc3.png +object: 345/spree_taxon/1076_进口商品benner.jpg-1076-345/spree_taxon/1348_进口商品benner.jpg +object: 345/spree_taxon/1077_奶粉benner2.jpg-1077-345/spree_taxon/1349_奶粉benner2.jpg +object: 345/spree_taxon/1078_尿不湿benner.jpg-1078-345/spree_taxon/1350_尿不湿benner.jpg +object: 345/spree_taxon/1083_新品.jpg-1083-345/spree_taxon/1351_新品.jpg +object: 345/spree_taxon/1084_热卖.jpg-1084-345/spree_taxon/1352_热卖.jpg +object: 345/spree_taxon/1085_秒杀.jpg-1085-345/spree_taxon/1353_秒杀.jpg +object: 345/spree_taxon/1093_t1-sale-service.jpg-1093-345/spree_taxon/1354_t1-sale-service.jpg +object: 345/spree_taxon/1094_t1-follow-us.jpg-1094-345/spree_taxon/1355_t1-follow-us.jpg +object: 345/spree_taxon/1095_t1-delivery-service.jpg-1095-345/spree_taxon/1356_t1-delivery-service.jpg +object: 346/spree_taxon/1167_cn.png-1167-346/spree_taxon/1365_cn.png +object: 346/spree_taxon/1168_en.png-1168-346/spree_taxon/1366_en.png +object: 346/spree_taxon/1170_weixin-icon.png-1170-346/spree_taxon/1367_weixin-icon.png +object: 346/spree_taxon/1171_qq-icon.png-1171-346/spree_taxon/1368_qq-icon.png +object: 346/spree_taxon/1176_weixin.png-1176-346/spree_taxon/1369_weixin.png +object: 346/spree_taxon/1177_qq.png-1177-346/spree_taxon/1370_qq.png +object: 346/spree_taxon/1188_slide2.jpg-1188-346/spree_taxon/1371_slide2.jpg +object: 346/spree_taxon/1189_slide3.jpg-1189-346/spree_taxon/1372_slide3.jpg +object: 346/spree_taxon/1191_icon1.png-1191-346/spree_taxon/1373_icon1.png +object: 346/spree_taxon/1192_icon2.png-1192-346/spree_taxon/1374_icon2.png +object: 346/spree_taxon/1193_icon3.png-1193-346/spree_taxon/1375_icon3.png +object: 346/spree_taxon/1194_icon4.png-1194-346/spree_taxon/1376_icon4.png +object: 348/spree_taxon/1227_slide3.jpg-1227-348/spree_taxon/1377_slide3.jpg +object: 348/spree_taxon/1232_t1-new-arrival.jpg-1232-348/spree_taxon/1378_t1-new-arrival.jpg +object: 348/spree_taxon/1233_t1-discount.jpg-1233-348/spree_taxon/1379_t1-discount.jpg +object: 348/spree_taxon/1234_t1-giftcard.jpg-1234-348/spree_taxon/1380_t1-giftcard.jpg +object: 348/spree_taxon/1242_t1-sale-service.jpg-1242-348/spree_taxon/1381_t1-sale-service.jpg +object: 348/spree_taxon/1243_t1-follow-us.jpg-1243-348/spree_taxon/1382_t1-follow-us.jpg +object: 348/spree_taxon/1244_t1-delivery-service.jpg-1244-348/spree_taxon/1383_t1-delivery-service.jpg +object: 349/spree_taxon/1267_001.jpg-1267-349/spree_taxon/1384_001.jpg +object: 349/spree_taxon/1274_t1-new-arrival.jpg-1274-349/spree_taxon/1385_t1-new-arrival.jpg +object: 349/spree_taxon/1275_t1-discount.jpg-1275-349/spree_taxon/1386_t1-discount.jpg +object: 349/spree_taxon/1276_t1-giftcard.jpg-1276-349/spree_taxon/1387_t1-giftcard.jpg +object: 349/spree_taxon/1284_sale-service2.jpg-1284-349/spree_taxon/1388_sale-service2.jpg +object: 349/spree_taxon/1285_t1-follow-us.jpg-1285-349/spree_taxon/1389_t1-follow-us.jpg +object: 349/spree_taxon/1286_t1-delivery-service.jpg-1286-349/spree_taxon/1390_t1-delivery-service.jpg +object: 349/spree_taxon/1425_002.jpg-1425-349/spree_taxon/1420_002.jpg +object: 350/spree_taxon/1310_slide1.jpg-1310-350/spree_taxon/1391_slide1.jpg +object: 350/spree_taxon/1311_slide2.jpg-1311-350/spree_taxon/1392_slide2.jpg +object: 350/spree_taxon/1312_slider3.jpg-1312-350/spree_taxon/1393_slider3.jpg +object: 350/spree_taxon/1317_t1-new-arrival.jpg-1317-350/spree_taxon/1394_t1-new-arrival.jpg +object: 350/spree_taxon/1318_t1-discount.jpg-1318-350/spree_taxon/1395_t1-discount.jpg +object: 350/spree_taxon/1319_t1-giftcard.jpg-1319-350/spree_taxon/1396_t1-giftcard.jpg +object: 350/spree_taxon/1327_t1-sale-service.jpg-1327-350/spree_taxon/1397_t1-sale-service.jpg +object: 350/spree_taxon/1328_t1-follow-us.jpg-1328-350/spree_taxon/1398_t1-follow-us.jpg +object: 350/spree_taxon/1329_t1-delivery-service.jpg-1329-350/spree_taxon/1399_t1-delivery-service.jpg +object: 352/spree_taxon/1336_cn.png-1336-352/spree_taxon/1400_cn.png +object: 352/spree_taxon/1337_en.png-1337-352/spree_taxon/1401_en.png +object: 352/spree_taxon/1339_weixin-icon.png-1339-352/spree_taxon/1402_weixin-icon.png +object: 352/spree_taxon/1340_qq-icon.png-1340-352/spree_taxon/1403_qq-icon.png +object: 352/spree_taxon/1351_slide1.jpg-1351-352/spree_taxon/1404_slide1.jpg +object: 352/spree_taxon/1352_slide2.jpg-1352-352/spree_taxon/1405_slide2.jpg +object: 352/spree_taxon/1353_slide3.jpg-1353-352/spree_taxon/1406_slide3.jpg +object: 352/spree_taxon/1374_penji.png-1374-352/spree_taxon/1407_penji.png +object: 352/spree_taxon/1375_tieji.png-1375-352/spree_taxon/1408_tieji.png +object: 352/spree_taxon/1376_ruangao.png-1376-352/spree_taxon/1409_ruangao.png +object: 352/spree_taxon/1377_yangsheng.png-1377-352/spree_taxon/1410_yangsheng.png +object: 352/spree_taxon/1400_slide1.jpg-1400-352/spree_taxon/1411_slide1.jpg +object: 352/spree_taxon/1401_slide2.jpg-1401-352/spree_taxon/1412_slide2.jpg +object: 352/spree_taxon/1402_slider3.jpg-1402-352/spree_taxon/1413_slider3.jpg +object: 352/spree_taxon/1407_t1-new-arrival.jpg-1407-352/spree_taxon/1414_t1-new-arrival.jpg +object: 352/spree_taxon/1408_t1-discount.jpg-1408-352/spree_taxon/1415_t1-discount.jpg +object: 352/spree_taxon/1409_t1-giftcard.jpg-1409-352/spree_taxon/1416_t1-giftcard.jpg +object: 352/spree_taxon/1417_t1-sale-service.jpg-1417-352/spree_taxon/1417_t1-sale-service.jpg +object: 352/spree_taxon/1418_t1-follow-us.jpg-1418-352/spree_taxon/1418_t1-follow-us.jpg +object: 352/spree_taxon/1419_t1-delivery-service.jpg-1419-352/spree_taxon/1419_t1-delivery-service.jpg +object: 353/spree_taxon/1461_cn.png-1461-353/spree_taxon/1423_cn.png +object: 353/spree_taxon/1462_en.png-1462-353/spree_taxon/1424_en.png +object: 353/spree_taxon/1464_weixin-icon.png-1464-353/spree_taxon/1425_weixin-icon.png +object: 353/spree_taxon/1465_qq-icon.png-1465-353/spree_taxon/1426_qq-icon.png +object: 353/spree_taxon/1476_slide1920-1.jpg-1476-353/spree_taxon/1427_slide1920-1.jpg +object: 353/spree_taxon/1477_slide1920-2.jpg-1477-353/spree_taxon/1428_slide1920-2.jpg +object: 353/spree_taxon/1478_slide1920-3.jpg-1478-353/spree_taxon/1429_slide1920-3.jpg +object: 353/spree_taxon/1486_compan_profile.JPG-1486-353/spree_taxon/1430_compan_profile.JPG +object: 353/spree_taxon/1499_chat.jpg-1499-353/spree_taxon/1431_chat.jpg +object: 353/spree_taxon/1500_gototop.jpg-1500-353/spree_taxon/1432_gototop.jpg +object: 358/spree_taxon/1543_工作室网站1.21-01.jpg-1543-358/spree_taxon/1436_工作室网站1.21-01.jpg +object: 358/spree_taxon/1544_工作室网站1.28-09.jpg-1544-358/spree_taxon/1437_工作室网站1.28-09.jpg +object: 358/spree_taxon/1545_工作室网站1.28-10.jpg-1545-358/spree_taxon/1438_工作室网站1.28-10.jpg +object: 358/spree_taxon/1546_工作室网站1.28-11.jpg-1546-358/spree_taxon/1439_工作室网站1.28-11.jpg +object: 358/spree_taxon/1552_工作室网站1.30-09.png-1552-358/spree_taxon/1440_工作室网站1.30-09.png +object: 358/spree_taxon/1553_工作室网站1.30-10.png-1553-358/spree_taxon/1441_工作室网站1.30-10.png +object: 358/spree_taxon/1554_工作室网站1.30-11.png-1554-358/spree_taxon/1442_工作室网站1.30-11.png +object: 358/spree_taxon/1555_工作室网站1.30-12.png-1555-358/spree_taxon/1443_工作室网站1.30-12.png +object: 358/spree_taxon/1573_侧边标签-07.jpg-1573-358/spree_taxon/1444_侧边标签-07.jpg +object: 358/spree_taxon/1574_侧边标签-06.jpg-1574-358/spree_taxon/1445_侧边标签-06.jpg +object: 358/spree_taxon/1587_slide21.jpg-1587-358/spree_taxon/1446_slide21.jpg +object: 358/spree_taxon/1588_slide11.jpg-1588-358/spree_taxon/1447_slide11.jpg +object: 358/spree_taxon/1589_slide31.jpg-1589-358/spree_taxon/1448_slide31.jpg +object: 358/spree_taxon/1641_qq_43x41.jpg-1641-358/spree_taxon/1464_qq_43x41.jpg +object: 358/spree_taxon/1642_weixin_43x41.jpg-1642-358/spree_taxon/1465_weixin_43x41.jpg +object: 358/spree_taxon/1643_telephone_43x41.jpg-1643-358/spree_taxon/1466_telephone_43x41.jpg +object: 358/spree_taxon/2034_slide1.jpg-2034-358/spree_taxon/1570_slide1.jpg +object: 358/spree_taxon/2035_slide2.jpg-2035-358/spree_taxon/1571_slide2.jpg +object: 358/spree_taxon/2036_slide3.jpg-2036-358/spree_taxon/1572_slide3.jpg +object: 357/spree_taxon/1597_company.jpg-1597-357/spree_taxon/1449_company.jpg +object: 357/spree_taxon/1603_中文首页滚动01.jpg-1603-357/spree_taxon/1450_中文首页滚动01.jpg +object: 357/spree_taxon/1605_icon1_275x75.jpg-1605-357/spree_taxon/1451_icon1_275x75.jpg +object: 357/spree_taxon/1606_icon2_275x75.jpg-1606-357/spree_taxon/1452_icon2_275x75.jpg +object: 357/spree_taxon/1607_icon3_275x75.jpg-1607-357/spree_taxon/1453_icon3_275x75.jpg +object: 357/spree_taxon/1608_icon4_275x75.png-1608-357/spree_taxon/1454_icon4_275x75.png +object: 357/spree_taxon/1610_cn.png-1610-357/spree_taxon/1455_cn.png +object: 357/spree_taxon/1611_en.png-1611-357/spree_taxon/1456_en.png +object: 357/spree_taxon/1613_weixin-icon.png-1613-357/spree_taxon/1457_weixin-icon.png +object: 357/spree_taxon/1614_qq-icon.png-1614-357/spree_taxon/1458_qq-icon.png +object: 357/spree_taxon/1621_company2.jpg-1621-357/spree_taxon/1459_company2.jpg +object: 357/spree_taxon/1632_t1_352_420.png-1632-357/spree_taxon/1460_t1_352_420.png +object: 357/spree_taxon/1633_t2_352x420.png-1633-357/spree_taxon/1461_t2_352x420.png +object: 357/spree_taxon/1637_slide1.jpg-1637-357/spree_taxon/1462_slide1.jpg +object: 357/spree_taxon/1639_slide2.jpg-1639-357/spree_taxon/1463_slide2.jpg +object: 357/spree_taxon/1644_中文首页滚动02.jpg-1644-357/spree_taxon/1467_中文首页滚动02.jpg +object: 357/spree_taxon/1645_中文首页滚动03.jpg-1645-357/spree_taxon/1468_中文首页滚动03.jpg +object: 357/spree_taxon/1646_中文首页滚动04.jpg-1646-357/spree_taxon/1469_中文首页滚动04.jpg +object: 357/spree_taxon/1648_524_cn.png-1648-357/spree_taxon/1470_524_cn.png +object: 357/spree_taxon/1649_525_en.png-1649-357/spree_taxon/1471_525_en.png +object: 357/spree_taxon/1651_524_cn.png-1651-357/spree_taxon/1472_524_cn.png +object: 357/spree_taxon/1652_525_en.png-1652-357/spree_taxon/1473_525_en.png +object: 357/spree_taxon/1653_slide3.jpg-1653-357/spree_taxon/1474_slide3.jpg +object: 359/spree_taxon/1656_company.jpg-1656-359/spree_taxon/1475_company.jpg +object: 359/spree_taxon/1660_中文首页滚动01.jpg-1660-359/spree_taxon/1476_中文首页滚动01.jpg +object: 359/spree_taxon/1661_中文首页滚动02.jpg-1661-359/spree_taxon/1477_中文首页滚动02.jpg +object: 359/spree_taxon/1662_中文首页滚动03.jpg-1662-359/spree_taxon/1478_中文首页滚动03.jpg +object: 359/spree_taxon/1663_中文首页滚动04.jpg-1663-359/spree_taxon/1479_中文首页滚动04.jpg +object: 359/spree_taxon/1665_icon1_275x75.jpg-1665-359/spree_taxon/1480_icon1_275x75.jpg +object: 359/spree_taxon/1666_icon2_275x75.jpg-1666-359/spree_taxon/1481_icon2_275x75.jpg +object: 359/spree_taxon/1667_icon3_275x75.jpg-1667-359/spree_taxon/1482_icon3_275x75.jpg +object: 359/spree_taxon/1668_icon4_275x75.png-1668-359/spree_taxon/1483_icon4_275x75.png +object: 359/spree_taxon/1671_524_cn.png-1671-359/spree_taxon/1484_524_cn.png +object: 359/spree_taxon/1672_525_en.png-1672-359/spree_taxon/1485_525_en.png +object: 359/spree_taxon/1673_slide5.jpg-1673-359/spree_taxon/1486_slide5.jpg +object: 360/spree_taxon/1679_t1_352_420.png-1679-360/spree_taxon/1487_t1_352_420.png +object: 360/spree_taxon/1680_t2_352x420.png-1680-360/spree_taxon/1488_t2_352x420.png +object: 360/spree_taxon/1683_slide1.jpg-1683-360/spree_taxon/1489_slide1.jpg +object: 360/spree_taxon/1684_slide2.jpg-1684-360/spree_taxon/1490_slide2.jpg +object: 360/spree_taxon/1685_slide3.jpg-1685-360/spree_taxon/1491_slide3.jpg +object: 361/spree_taxon/1709_slide1.jpg-1709-361/spree_taxon/1493_slide1.jpg +object: 361/spree_taxon/1710_slide2.jpg-1710-361/spree_taxon/1494_slide2.jpg +object: 361/spree_taxon/1711_slider3.jpg-1711-361/spree_taxon/1495_slider3.jpg +object: 361/spree_taxon/1716_t1-new-arrival.jpg-1716-361/spree_taxon/1496_t1-new-arrival.jpg +object: 361/spree_taxon/1717_t1-discount.jpg-1717-361/spree_taxon/1497_t1-discount.jpg +object: 361/spree_taxon/1718_t1-giftcard.jpg-1718-361/spree_taxon/1498_t1-giftcard.jpg +object: 361/spree_taxon/1726_t1-sale-service.jpg-1726-361/spree_taxon/1499_t1-sale-service.jpg +object: 361/spree_taxon/1727_t1-follow-us.jpg-1727-361/spree_taxon/1500_t1-follow-us.jpg +object: 361/spree_taxon/1728_t1-delivery-service.jpg-1728-361/spree_taxon/1501_t1-delivery-service.jpg +object: 361/spree_taxon/1730_slide11.jpg-1730-361/spree_taxon/1502_slide11.jpg +object: 361/spree_taxon/1731_slide12.jpg-1731-361/spree_taxon/1503_slide12.jpg +object: 361/spree_taxon/1733_service1.jpg-1733-361/spree_taxon/1504_service1.jpg +object: 361/spree_taxon/1734_service2.jpg-1734-361/spree_taxon/1505_service2.jpg +object: 361/spree_taxon/1735_service3.jpg-1735-361/spree_taxon/1506_service3.jpg +object: 361/spree_taxon/1736_service4.jpg-1736-361/spree_taxon/1507_service4.jpg +object: 366/spree_taxon/1770_company.jpg-1770-366/spree_taxon/1509_company.jpg +object: 366/spree_taxon/1774_中文首页滚动01.jpg-1774-366/spree_taxon/1510_中文首页滚动01.jpg +object: 366/spree_taxon/1775_中文首页滚动02.jpg-1775-366/spree_taxon/1511_中文首页滚动02.jpg +object: 366/spree_taxon/1776_中文首页滚动03.jpg-1776-366/spree_taxon/1512_中文首页滚动03.jpg +object: 366/spree_taxon/1777_中文首页滚动04.jpg-1777-366/spree_taxon/1513_中文首页滚动04.jpg +object: 366/spree_taxon/1779_icon1_275x75.jpg-1779-366/spree_taxon/1514_icon1_275x75.jpg +object: 366/spree_taxon/1780_icon2_275x75.jpg-1780-366/spree_taxon/1515_icon2_275x75.jpg +object: 366/spree_taxon/1781_icon3_275x75.jpg-1781-366/spree_taxon/1516_icon3_275x75.jpg +object: 366/spree_taxon/1782_icon4_275x75.png-1782-366/spree_taxon/1517_icon4_275x75.png +object: 366/spree_taxon/1785_524_cn.png-1785-366/spree_taxon/1518_524_cn.png +object: 366/spree_taxon/1786_525_en.png-1786-366/spree_taxon/1519_525_en.png +object: 366/spree_taxon/1789_company.jpg-1789-366/spree_taxon/1520_company.jpg +object: 366/spree_taxon/1793_524_cn.png-1793-366/spree_taxon/1521_524_cn.png +object: 366/spree_taxon/1794_525_en.png-1794-366/spree_taxon/1522_525_en.png +object: 366/spree_taxon/1796_weixin-icon.png-1796-366/spree_taxon/1523_weixin-icon.png +object: 366/spree_taxon/1797_qq-icon.png-1797-366/spree_taxon/1524_qq-icon.png +object: 366/spree_taxon/1808_slide1920-1.jpg-1808-366/spree_taxon/1525_slide1920-1.jpg +object: 366/spree_taxon/1809_slide1920-2.jpg-1809-366/spree_taxon/1526_slide1920-2.jpg +object: 366/spree_taxon/1810_slide1920-3.jpg-1810-366/spree_taxon/1527_slide1920-3.jpg +object: 366/spree_taxon/1818_compan_profile.JPG-1818-366/spree_taxon/1528_compan_profile.JPG +object: 366/spree_taxon/1831_chat.jpg-1831-366/spree_taxon/1529_chat.jpg +object: 366/spree_taxon/1832_gototop.jpg-1832-366/spree_taxon/1530_gototop.jpg +object: 366/spree_taxon/1839_slide1.jpg-1839-366/spree_taxon/1531_slide1.jpg +object: 366/spree_taxon/1840_slide2.jpg-1840-366/spree_taxon/1532_slide2.jpg +object: 366/spree_taxon/1841_slider3.jpg-1841-366/spree_taxon/1533_slider3.jpg +object: 366/spree_taxon/1843_t1-new-arrival.jpg-1843-366/spree_taxon/1534_t1-new-arrival.jpg +object: 366/spree_taxon/1844_t1-discount.jpg-1844-366/spree_taxon/1535_t1-discount.jpg +object: 366/spree_taxon/1845_t1-giftcard.jpg-1845-366/spree_taxon/1536_t1-giftcard.jpg +object: 366/spree_taxon/1861_t1-sale-service.jpg-1861-366/spree_taxon/1537_t1-sale-service.jpg +object: 366/spree_taxon/1862_t1-follow-us.jpg-1862-366/spree_taxon/1538_t1-follow-us.jpg +object: 366/spree_taxon/1863_t1-delivery-service.jpg-1863-366/spree_taxon/1539_t1-delivery-service.jpg +object: 366/spree_taxon/1881_weixin.png-1881-366/spree_taxon/1540_weixin.png +object: 366/spree_taxon/1882_qq.png-1882-366/spree_taxon/1541_qq.png +object: 366/spree_taxon/1893_slide2.jpg-1893-366/spree_taxon/1542_slide2.jpg +object: 366/spree_taxon/1894_slide3.jpg-1894-366/spree_taxon/1543_slide3.jpg +object: 366/spree_taxon/1896_icon1.png-1896-366/spree_taxon/1544_icon1.png +object: 366/spree_taxon/1897_icon2.png-1897-366/spree_taxon/1545_icon2.png +object: 366/spree_taxon/1898_icon3.png-1898-366/spree_taxon/1546_icon3.png +object: 366/spree_taxon/1899_icon4.png-1899-366/spree_taxon/1547_icon4.png +object: 366/spree_taxon/1928_喷剂.png-1928-366/spree_taxon/1548_喷剂.png +object: 366/spree_taxon/1929_贴剂.png-1929-366/spree_taxon/1549_贴剂.png +object: 366/spree_taxon/1930_软膏.png-1930-366/spree_taxon/1550_软膏.png +object: 366/spree_taxon/1931_养生.png-1931-366/spree_taxon/1551_养生.png +object: 366/spree_taxon/1933_company.jpg-1933-366/spree_taxon/1552_company.jpg +object: 366/spree_taxon/1949_company2.jpg-1949-366/spree_taxon/1553_company2.jpg +object: 366/spree_taxon/1975_slide1.png-1975-366/spree_taxon/1554_slide1.png +object: 366/spree_taxon/1976_slide2.png-1976-366/spree_taxon/1555_slide2.png +object: 366/spree_taxon/1978_ztc1.png-1978-366/spree_taxon/1556_ztc1.png +object: 366/spree_taxon/1979_ztc2.png-1979-366/spree_taxon/1557_ztc2.png +object: 366/spree_taxon/1980_ztc3.png-1980-366/spree_taxon/1558_ztc3.png +object: 366/spree_taxon/1994_slide11.jpg-1994-366/spree_taxon/1559_slide11.jpg +object: 366/spree_taxon/1995_slide12.jpg-1995-366/spree_taxon/1560_slide12.jpg +object: 366/spree_taxon/1997_service1.jpg-1997-366/spree_taxon/1561_service1.jpg +object: 366/spree_taxon/1998_service2.jpg-1998-366/spree_taxon/1562_service2.jpg +object: 366/spree_taxon/1999_service3.jpg-1999-366/spree_taxon/1563_service3.jpg +object: 366/spree_taxon/2000_service4.jpg-2000-366/spree_taxon/1564_service4.jpg +object: 366/spree_taxon/2025_t1_352_420.png-2025-366/spree_taxon/1565_t1_352_420.png +object: 366/spree_taxon/2026_t2_352x420.png-2026-366/spree_taxon/1566_t2_352x420.png +object: 366/spree_taxon/2029_slide1.jpg-2029-366/spree_taxon/1567_slide1.jpg +object: 366/spree_taxon/2030_slide2.jpg-2030-366/spree_taxon/1568_slide2.jpg +object: 366/spree_taxon/2031_slide3.jpg-2031-366/spree_taxon/1569_slide3.jpg +object: 369/spree_taxon/2052_slide1.jpg-2052-369/spree_taxon/1579_slide1.jpg +object: 369/spree_taxon/2053_slide2.jpg-2053-369/spree_taxon/1580_slide2.jpg +object: 369/spree_taxon/2056_weibo.png-2056-369/spree_taxon/1581_weibo.png +object: 369/spree_taxon/2057_weixin.png-2057-369/spree_taxon/1582_weixin.png +object: 369/spree_taxon/2058_qq.png-2058-369/spree_taxon/1583_qq.png +object: 371/spree_taxon/2104_slide1.png-2104-371/spree_taxon/1584_slide1.png +object: 371/spree_taxon/2105_slide2.png-2105-371/spree_taxon/1585_slide2.png +object: 371/spree_taxon/2107_ztc1.png-2107-371/spree_taxon/1586_ztc1.png +object: 371/spree_taxon/2108_ztc2.png-2108-371/spree_taxon/1587_ztc2.png +object: 371/spree_taxon/2109_ztc3.png-2109-371/spree_taxon/1588_ztc3.png +object: 371/spree_taxon/2117_slide1.png-2117-371/spree_taxon/1589_slide1.png +object: 371/spree_taxon/2118_slide2.png-2118-371/spree_taxon/1590_slide2.png +object: 372/spree_taxon/2127_slide1.jpg-2127-372/spree_taxon/1591_slide1.jpg +object: 372/spree_taxon/2128_slide2.jpg-2128-372/spree_taxon/1592_slide2.jpg +object: 372/spree_taxon/2143_weibo.png-2143-372/spree_taxon/1593_weibo.png +object: 372/spree_taxon/2144_weixin.png-2144-372/spree_taxon/1594_weixin.png +object: 372/spree_taxon/2145_qq.png-2145-372/spree_taxon/1595_qq.png +object: 374/spree_taxon/2155_cn.png-2155-374/spree_taxon/1596_cn.png +object: 374/spree_taxon/2156_en.png-2156-374/spree_taxon/1597_en.png +object: 374/spree_taxon/2158_weixin-icon.png-2158-374/spree_taxon/1598_weixin-icon.png +object: 374/spree_taxon/2159_qq-icon.png-2159-374/spree_taxon/1599_qq-icon.png +object: 374/spree_taxon/2170_slide1920-1.jpg-2170-374/spree_taxon/1600_slide1920-1.jpg +object: 374/spree_taxon/2171_slide1920-2.jpg-2171-374/spree_taxon/1601_slide1920-2.jpg +object: 374/spree_taxon/2172_slide1920-3.jpg-2172-374/spree_taxon/1602_slide1920-3.jpg +object: 374/spree_taxon/2180_compan_profile.JPG-2180-374/spree_taxon/1603_compan_profile.JPG +object: 374/spree_taxon/2193_penji.png-2193-374/spree_taxon/1604_penji.png +object: 374/spree_taxon/2194_tieji.png-2194-374/spree_taxon/1605_tieji.png +object: 374/spree_taxon/2195_ruangao.png-2195-374/spree_taxon/1606_ruangao.png +object: 374/spree_taxon/2196_yangsheng.png-2196-374/spree_taxon/1607_yangsheng.png +object: 375/spree_taxon/2223_slide1.jpg-2223-375/spree_taxon/1608_slide1.jpg +object: 375/spree_taxon/2224_slide2.jpg-2224-375/spree_taxon/1609_slide2.jpg +object: 375/spree_taxon/2225_slider3.jpg-2225-375/spree_taxon/1610_slider3.jpg +object: 375/spree_taxon/2230_t1-new-arrival.jpg-2230-375/spree_taxon/1611_t1-new-arrival.jpg +object: 375/spree_taxon/2231_t1-discount.jpg-2231-375/spree_taxon/1612_t1-discount.jpg +object: 375/spree_taxon/2232_t1-giftcard.jpg-2232-375/spree_taxon/1613_t1-giftcard.jpg +object: 375/spree_taxon/2240_t1-sale-service.jpg-2240-375/spree_taxon/1614_t1-sale-service.jpg +object: 375/spree_taxon/2241_t1-follow-us.jpg-2241-375/spree_taxon/1615_t1-follow-us.jpg +object: 375/spree_taxon/2242_t1-delivery-service.jpg-2242-375/spree_taxon/1616_t1-delivery-service.jpg +object: 375/spree_taxon/2258_slide11.jpg-2258-375/spree_taxon/1617_slide11.jpg +object: 375/spree_taxon/2259_slide12.jpg-2259-375/spree_taxon/1618_slide12.jpg +object: 375/spree_taxon/2261_service1.jpg-2261-375/spree_taxon/1619_service1.jpg +object: 375/spree_taxon/2262_service2.jpg-2262-375/spree_taxon/1620_service2.jpg +object: 375/spree_taxon/2263_service3.jpg-2263-375/spree_taxon/1621_service3.jpg +object: 375/spree_taxon/2264_service4.jpg-2264-375/spree_taxon/1622_service4.jpg +object: 376/spree_taxon/2312_cn.png-2312-376/spree_taxon/1626_cn.png +object: 376/spree_taxon/2313_en.png-2313-376/spree_taxon/1627_en.png +object: 376/spree_taxon/2315_weixin-icon.png-2315-376/spree_taxon/1628_weixin-icon.png +object: 376/spree_taxon/2316_qq-icon.png-2316-376/spree_taxon/1629_qq-icon.png +object: 376/spree_taxon/2327_5719020_ban1.jpeg-2327-376/spree_taxon/1630_5719020_ban1.jpeg +object: 376/spree_taxon/2328_5719021_ban2.jpeg-2328-376/spree_taxon/1631_5719021_ban2.jpeg +object: 376/spree_taxon/2337_compan_profile.JPG-2337-376/spree_taxon/1632_compan_profile.JPG +object: 376/spree_taxon/2350_chat.jpg-2350-376/spree_taxon/1633_chat.jpg +object: 376/spree_taxon/2351_gototop.jpg-2351-376/spree_taxon/1634_gototop.jpg +object: 378/spree_taxon/2354_cn.png-2354-378/spree_taxon/1635_cn.png +object: 378/spree_taxon/2355_en.png-2355-378/spree_taxon/1636_en.png +object: 378/spree_taxon/2357_weixin-icon.png-2357-378/spree_taxon/1637_weixin-icon.png +object: 378/spree_taxon/2358_qq-icon.png-2358-378/spree_taxon/1638_qq-icon.png +object: 378/spree_taxon/2369_slide1920-1.jpg-2369-378/spree_taxon/1639_slide1920-1.jpg +object: 378/spree_taxon/2370_slide1920-2.jpg-2370-378/spree_taxon/1640_slide1920-2.jpg +object: 378/spree_taxon/2371_slide1920-3.jpg-2371-378/spree_taxon/1641_slide1920-3.jpg +object: 378/spree_taxon/2379_compan_profile.JPG-2379-378/spree_taxon/1642_compan_profile.JPG +object: 378/spree_taxon/2392_chat.jpg-2392-378/spree_taxon/1643_chat.jpg +object: 378/spree_taxon/2393_gototop.jpg-2393-378/spree_taxon/1644_gototop.jpg +object: 378/spree_taxon/2395_cn.png-2395-378/spree_taxon/1645_cn.png +object: 378/spree_taxon/2396_en.png-2396-378/spree_taxon/1646_en.png +object: 378/spree_taxon/2423_slide1.jpg-2423-378/spree_taxon/1647_slide1.jpg +object: 378/spree_taxon/2424_slide2.jpg-2424-378/spree_taxon/1648_slide2.jpg +object: 378/spree_taxon/2425_slider3.jpg-2425-378/spree_taxon/1649_slider3.jpg +object: 378/spree_taxon/2430_t1-new-arrival.jpg-2430-378/spree_taxon/1650_t1-new-arrival.jpg +object: 378/spree_taxon/2431_t1-discount.jpg-2431-378/spree_taxon/1651_t1-discount.jpg +object: 378/spree_taxon/2432_t1-giftcard.jpg-2432-378/spree_taxon/1652_t1-giftcard.jpg +object: 378/spree_taxon/2440_t1-sale-service.jpg-2440-378/spree_taxon/1653_t1-sale-service.jpg +object: 378/spree_taxon/2441_t1-follow-us.jpg-2441-378/spree_taxon/1654_t1-follow-us.jpg +object: 378/spree_taxon/2442_t1-delivery-service.jpg-2442-378/spree_taxon/1655_t1-delivery-service.jpg diff --git a/spree_theme/doc/roadmap b/spree_theme/doc/roadmap deleted file mode 100644 index 84c6eb93..00000000 --- a/spree_theme/doc/roadmap +++ /dev/null @@ -1,4 +0,0 @@ -1. 做一个简单的模板, 测试编辑器功能。 -2. 以一个公司为例,做个示例模板, -3. 实现spree_abc引用发布模板, 即用户能够选择发布的模板。 -4. 创建www.dalianshops.com网站, 用户可以注册和创建自己的商店。 diff --git a/spree_theme/doc/template_html_tag b/spree_theme/doc/template_html_tag new file mode 100644 index 00000000..172d4132 --- /dev/null +++ b/spree_theme/doc/template_html_tag @@ -0,0 +1,2 @@ +1. dl,dt,dd +user profile / order detail/ next(previous) post link/ diff --git a/spree_theme/doc/template_theme b/spree_theme/doc/template_theme new file mode 100644 index 00000000..d508893b --- /dev/null +++ b/spree_theme/doc/template_theme @@ -0,0 +1,25 @@ +# using dialog + 1. ajax checkout, pop up dialog before open new alipay window + 2. customer click one_click_trial + 3. customer make comment of site + 4. customer view order detail + 5. customer edit profile + +#模板的开发 +1. 通过编辑器设计页面 +2. 发布模板 +3. 店铺引用模板,并设置相应的店铺信息 +4. 店铺发布网站 + +#关于模板的修改 +为了模板的安全,当生成模板文件以后,对于page_layout的任何修改,只在下次发布时才起作用。 + + + +#模板的渲染过程 +1. 设计模板时,模板渲染过程 +根据 page_layout tree,查找每一个section, 提取default_section_piece,组装成section, 然后组装page_layout tree对应的模板原始源文件 + + + +2. 模板发布后,正常浏览的渲染过程 diff --git a/spree_theme/doc/theme_tags.txt b/spree_theme/doc/theme_tags.txt new file mode 100644 index 00000000..abad7b33 --- /dev/null +++ b/spree_theme/doc/theme_tags.txt @@ -0,0 +1,189 @@ +render :partial => 'spree/orders/form', :locals => { :order_form => order_form } +render :partial => 'spree/orders/form_bootstrap', :locals => { :order_form => order_form } +render :partial => 'spree/shared/address', :locals => { :address => @order.ship_address } +render :partial => 'spree/user_passwords/new' +render :partial => 'spree/user_registrations/new' +render :partial => 'spree/user_registrations/new_bootstrap' +render :partial => 'spree/user_sessions/new' +render :partial => 'summary', :locals => { :order => @order } +render :partial => 'themes/grouped_option_values_selector', :locals=>{:product=>product} +render :partial => 'themes/product_customizations', :locals=>{:product=>product} +render :partial => 'themes/product_options_for_mobile', :locals=>{:product=>product} +render :partial => 'themes/product_options_in_slide_style', :locals=>{:product=>product} +render :partial => 'themes/sites/quick_lunch' +render :partial => 'themes/variants_and_option_values', :locals=>{:product=>product} +render partial: 'order_items', locals: {order: @order} +render partial: 'spree/checkout/edit' +render partial: 'themes/orders/list' +@client_info.to_json +@current_page.agent_selector(request.user_agent) +@current_page.title +@order.payments.valid.each do |payment| +@template.css :a +@template.css :a_h +@template.css :block_hovered +@template.css :body +@template.css :button +@template.css :cell +@template.css :img +@template.css :inner +@template.css :page +@template.css :s_header0 +@template.css :s_header3 +@template.css :selected +@template.css :shell +@template.css :sidr +@template.css :sidr_close +@template.css :sidr_overlay +@template.css :td +@template.css :th +@template.css(:block) +@template.css(:content_layout) +@template.css(:dialog_close) +@template.css(:dialog_content) +@template.css(:dialog_overlay) +@template.css(:fa) +@template.css(:hover) +@template.css(:img) +@template.css(:inner) +@template.css(:option_type) +@template.css(:option_value) +@template.css(:pagination_current) +@template.css(:pagination_page) +@template.css(:s_input) +@template.css(:slides) +@template.current_piece.child_selector +@template.font_awesome +@template.image.url +@template.menu.children.each{|page| +@template.page_attribute( :icon_angle_left, {data: @template.previous_taxon, placeholder: '<'} ) +@template.page_attribute( :icon_angle_right, {data: @template.next_taxon, placeholder: '>'} ) +@template.page_attribute( :name ) +@template.page_attribute( :tooltips ) +@template.page_attribute() +@template.page_attribute(:description) +@template.page_attribute(:icon) +@template.page_attribute(:more) +@template.page_attribute(:root_name) +@template.page_attribute(:summary) +@template.post_attribute( :file, file: i ) +@template.post_attribute( :title ) +@template.post_attribute(:author) +@template.post_attribute(:body) +@template.post_attribute(:cover) +@template.post_attribute(:posted_at) +@template.post_attribute(:summary) +@template.post_attribute(:title) +@template.product_attribute( :description ) +@template.product_attribute( :icon_angle_left, {data: @template.previous_product, placeholder: '<'} ) +@template.product_attribute( :icon_angle_right, {data: @template.next_product, placeholder: '>'} ) +@template.product_attribute( :image ) +@template.product_attribute( :image ) +@template.product_attribute( :image, image: image ) +@template.product_attribute( :name ) +@template.product_attribute( :thumbnail, image: i ) +@template.product_attribute() +@template.relation_attribute(:name) +@template.section_selector +@template.site_attribute(:name) +@template.text +@user.email +@website.public_path('css') +"store/out-of-stock.png" +#place holder for action /cart +(@template.running_data_item.try(:whole_images)).each_with_index{|image,i| +(@template.running_data_item.try(:whole_images)).each{|image| +Spree.t('product_not_available_in_this_currency') +Spree.t(:add_to_cart) +Spree.t(:checkout) +Spree.t(:dialog_title) +Spree.t(:email) +Spree.t(:order) + " #" + @order.number +Spree.t(:payment_information) +Spree.t(:shipping_address) +Spree.t(:total) +Spree.t(:update) +Spree.t(:your_cart_is_empty) +breadcrumbs(@current_page) +button_tag :id => 'add-to-cart-button', :type => :submit do +button_tag :class => 'button checkout primary', :id => 'checkout-link', :name => 'checkout' do +button_tag :class => 'primary', :id => 'update-button' do +content_tag :div, class: ( i==0 ? 'item active' : 'item' ) do +csrf_meta_tags +css_class +css_class = cycle('even', 'odd', :name => "properties") +display_price(product.master) +else +elsif 'font_size' == 'font_size:12px' +elsif 'font_size' == 'font_size:14px' +end +favicon_link_tag 'favicon.ico' +flash_messages +form_for @order, :url => update_cart_path, :html => {:id => 'update-cart'} do |order_form| +get_menu_items(@template.current_piece).each_with_index{|page, page_index| +i.viewable.id +if !product.has_variants? +if 'font_size' == 'font_size:10px' +if (product.images + product.variant_images).uniq.size > 1 +if @current_page.is_preview +if @current_page.site_design? && !@current_page.is_preview +if @order.has_step?("address") +if @order.has_step?("delivery") +if @order.line_items.empty? +if @order.state != 'confirm' +if @template.css :layout_fixed +if @template.css(:content_layout).present? +if @template.css(:content_layout).to_i > 0 +if @template.css(:font_family)== 'serif' +if @template.current_piece.column_count >0 +if @template.current_piece.lightboxable? +if @template.current_piece.per_page >0 +if @template.image.present? +if @template.menu.present? +if defined? product +if menu.present? +if post.files.any? +if product.has_variants? +if product.price_in(current_currency) and !product.price.nil? +image_tag page.icon.url(:original), :u=>'image', :alt=>page.name +javascript_include_tag 'spree/frontend/all', "data-turbolinks-track" => true +javascript_include_tag 'spree/frontend/all.mobile', "data-turbolinks-track" => true +javascript_tag do +link_to Spree.t(:install_theme_with_site), new_site_path(:template_theme_id=> product.theme_id), {:remote=>true} +link_to Spree.t(:preview_theme), preview_template_theme_url( product.template_theme, :host=>product.template_theme.site.subdomain ), {:target=>'_blank'} +link_to image_tag( @template.image.url , alt: @template.image.alt ), spree.root_path +link_to_cart +link_to_cart_badge +link_to_if @template.current_piece.clickable?, image_tag( page.icon.url(:original), :u=>'image', :alt=>page.name), page.path +logo +menu = (spree_current_user ? @template.menu : @template.menu2) +menu.children.each_with_index{|page, page_index| +menu_item_atom( @template.current_piece, page, page_index ) +meta_data_tags +next if product.images.include?(i) +number_field_tag :quantity, 1, :class => 'title', :min => 1 +post.files.each do |i| +product.images.each do |i| +product.product_properties.each do |product_property| +product.variant_images.each do |i| +product_property.property.presentation +product_property.value +render "spree/shared/analytics" +render "spree/shared/sync_analytics" +render "spree/shared/theme_selection_for_nondesigner" +render "spree/shared/translations" +render "spree/shared/weixin_share" +render "themes/posts/next_post_title" +render "themes/posts/previous_post_title" +render "themes/product_search" +render "themes/sites/one_click_trial" +render 'layout_editor_panel' +render 'map' +render payment +reset_cycle('properties') +stylesheet_link_tag 'store/spree_theme' +stylesheet_link_tag 'store/spree_theme.desktop', "data-turbolinks-track" => true +stylesheet_link_tag 'store/spree_theme.mobile', "data-turbolinks-track" => true +tag :li, class: ( i==0 ? 'active' : '' ), data: { target: "#carousel-example-generic", slide_to: i } +unless product.product_properties.empty? +} diff --git a/spree_theme/lib/generators/spree_theme/install/install_generator.rb b/spree_theme/lib/generators/spree_theme/install/install_generator.rb index 1a719db8..63225362 100644 --- a/spree_theme/lib/generators/spree_theme/install/install_generator.rb +++ b/spree_theme/lib/generators/spree_theme/install/install_generator.rb @@ -3,13 +3,13 @@ module Generators class InstallGenerator < Rails::Generators::Base def add_javascripts - append_file "app/assets/javascripts/store/all.js", "//= require store/spree_theme\n" - append_file "app/assets/javascripts/admin/all.js", "//= require admin/spree_theme\n" + #append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/spree_multi_site\n" + #append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require admin/spree_theme\n" end def add_stylesheets - inject_into_file "app/assets/stylesheets/store/all.css", " *= require store/spree_theme\n", :before => /\*\//, :verbose => true - inject_into_file "app/assets/stylesheets/admin/all.css", " *= require admin/spree_theme\n", :before => /\*\//, :verbose => true + #inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/spree_multi_site\n", :before => /\*\//, :verbose => true + #inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/spree_multi_site\n", :before => /\*\//, :verbose => true end def add_migrations diff --git a/spree_theme/lib/spree/core/controller_helpers/common.rb b/spree_theme/lib/spree/core/controller_helpers/common.rb new file mode 100644 index 00000000..daa8ed08 --- /dev/null +++ b/spree_theme/lib/spree/core/controller_helpers/common.rb @@ -0,0 +1,89 @@ +#重写 spree源文件 +module Spree + module Core + module ControllerHelpers + module Common + extend ActiveSupport::Concern + included do + ################################################################################# + # 添加spree_theme支持 + ################################################################################# + #puts "use spree_theme common.rb" + include SpreeTheme::DatabaseTheme::Installer + include SpreeTheme::FileTheme::Installer + # template holds data for page render, we have to initialize it even for api + prepend_before_action :initialize_template + # receiver could be Spree::Api::BaseController or Spree::BaseController + #if receiver == Spree::BaseController + layout :get_layout_if_use # never allow it to api controller. + + ################################################################################# + + helper_method :title + helper_method :title= + helper_method :accurate_title + + #layout :get_layout + + before_action :set_user_language + + protected + + # can be used in views as well as controllers. + # e.g. <% self.title = 'This is a custom title for this view' %> + attr_writer :title + + def title + title_string = @title.present? ? @title : accurate_title + if title_string.present? + if Spree::Config[:always_put_site_name_in_title] + [title_string, default_title].join(" #{Spree::Config[:title_site_name_separator]} ") + else + title_string + end + else + default_title + end + end + + def default_title + current_store.name + end + + # this is a hook for subclasses to provide title + def accurate_title + current_store.seo_title + end + + def render_404(exception = nil) + respond_to do |type| + type.html { render status: :not_found, file: "#{::Rails.root}/public/404", formats: [:html], layout: nil} + type.all { head :not_found } + end + end + + private + + def set_user_language + locale = session[:locale] + locale = config_locale if respond_to?(:config_locale, true) && locale.blank? + locale = Rails.application.config.i18n.default_locale if locale.blank? + locale = I18n.default_locale unless I18n.available_locales.map(&:to_s).include?(locale.to_s) + I18n.locale = locale + end + + # Returns which layout to render. + # + # You can set the layout you want to render inside your Spree configuration with the +:layout+ option. + # + # Default layout is: +app/views/spree/layouts/spree_application+ + # + def get_layout + layout ||= Spree::Config[:layout] + end + + end + end + end + end +end diff --git a/spree_theme/lib/spree_multi_site.rb b/spree_theme/lib/spree_multi_site.rb new file mode 100644 index 00000000..cea3e294 --- /dev/null +++ b/spree_theme/lib/spree_multi_site.rb @@ -0,0 +1,18 @@ +require 'spree_core' + +require 'spree_multi_site/multi_site_system' +require 'spree_multi_site/paper_clip_interpolate_site' +require 'spree_multi_site/middleware' +require 'spree_multi_site/environment' +require 'spree_multi_site/permitted_attributes_for_site' +require 'spree_multi_site/paperclip_aliyun_oss_helper' + + +module SpreeMultiSite + # these keys are alipay oss folder names + AttachmentClassEnum = Struct.new( \ + :spree_taxon, :spree_post, :spree_image, :ckeditor_picture, :ckeditor_file,\ + :spree_template_file, :spree_post_files, :spree_store_logos, :spree_store_favicons )\ + ['Spree::TaxonIcon','Spree::Post','Spree::Image', 'Ckeditor::Picture','Ckeditor::AttachmentFile',\ + 'Spree::TemplateFile','Spree::PostFile', 'Spree::StoreLogo', 'Spree::StoreFavicon'] +end diff --git a/spree_theme/lib/spree_multi_site/attribute_validator_cleaner.rb b/spree_theme/lib/spree_multi_site/attribute_validator_cleaner.rb new file mode 100644 index 00000000..3ebbf34c --- /dev/null +++ b/spree_theme/lib/spree_multi_site/attribute_validator_cleaner.rb @@ -0,0 +1,14 @@ +#module AttributeValidatorCleaner +# def remove_attribute_validator( attribute_name) +# #refer to http://stackoverflow.com/questions/7545938/how-to-remove-validation-using-instance-eval-clause-in-rails +# #remove original defined validator first. +# _validators.reject!{ |key, _| key == attribute_name.to_sym } +# +# _validate_callbacks.reject! do |callback| +# if callback.raw_filter.respond_to? :attributes +# #callback.raw_filter maybe symbol, ex. :validate_associated_records_for_tax_rates:Symbol +# callback.raw_filter.attributes == [attribute_name.to_sym] +# end +# end +# end +#end \ No newline at end of file diff --git a/spree_theme/lib/spree_multi_site/custom_fixtures.rb b/spree_theme/lib/spree_multi_site/custom_fixtures.rb new file mode 100644 index 00000000..e69de29b diff --git a/spree_theme/lib/spree_multi_site/environment.rb b/spree_theme/lib/spree_multi_site/environment.rb new file mode 100644 index 00000000..bacea5fd --- /dev/null +++ b/spree_theme/lib/spree_multi_site/environment.rb @@ -0,0 +1,20 @@ +require 'spree/core/environment_extension' + module SpreeMultiSite + class Environment + include Spree::Core::EnvironmentExtension + + attr_accessor :site_scope_required_classes_from_other_gems, :site_scope_required_classes_with_image_from_other_gems, :preferences + # system_top_domain is required, in middleware, we compare it with request.host, + # it tell us to initialize site by short_name or domain. + attr_accessor :system_top_domain + + def initialize + #@preferences = Spree::MultiSiteConfiguration.new + #"Spree.user_class MUST be a String or Symbol object, not a Class object." + # it has to be in Environment, it vary in env + @system_top_domain = "example.com" + @site_scope_required_classes_from_other_gems = [] + @site_scope_required_classes_with_image_from_other_gems = [] + end + end + end diff --git a/spree_theme/lib/spree_multi_site/middleware.rb b/spree_theme/lib/spree_multi_site/middleware.rb new file mode 100644 index 00000000..671c058f --- /dev/null +++ b/spree_theme/lib/spree_multi_site/middleware.rb @@ -0,0 +1,48 @@ +module SpreeMultiSite + class Middleware + def initialize(app) + @app = app + end + + + def call(env) + #env['ORIGINAL_FULLPATH'] = /, + #env['REQUEST_URI'] = http://localhost:3000/ + request = Rack::Request.new(env) + resource_extension = request.path[/\.[\w]+/] + # ignore .css, .js, .img, except .json + if resource_extension.nil? || resource_extension=='.json' + Spree::Store.current = get_store_from_request(request) + end + status, headers, body = @app.call(env) + [status, headers, body] + end + + def get_store_from_request( request ) + + store = Spree::Store.by_domain( request.host ) + + # support domain, ex. www.david.com + # apache rewrite test.david.com => localhost:8080/?n=test.david.com, request.host is 'test.david.com' + # TODO should use public_suffix_service handle example.com.cn + + if store.blank? + # for development or test, enable get site from cookie + # string and symbol both OK. cookie.domain should be exactly same as host, www.domain.com != domain.com + # disable domain, some site have no domain, short_name always exists. + # edit /etc/hosts file, add domains as below for development + # local test domains: + # first.david.com, design.david.com, demo.david.com + short_name = request.host.split('.').first + if short_name.present? + store = Spree::Store.unscoped.find_by_code( short_name ) + end + #support request.host for development + store ||= Spree::Store.default + + end + store + end + + end +end diff --git a/spree_theme/lib/spree_multi_site/multi_site_system.rb b/spree_theme/lib/spree_multi_site/multi_site_system.rb new file mode 100644 index 00000000..5f9b7f40 --- /dev/null +++ b/spree_theme/lib/spree_multi_site/multi_site_system.rb @@ -0,0 +1,102 @@ +# Spree::BaseController.class_eval would not work +# Spree::UserSessionsController derive from Devise::SessionsController, it included Spree::Core::ControllerHelpers +#require 'spree/core/controller_helpers/common' +#class<< Spree::Core::ControllerHelpers::Common +# #Spree::Api::BaseController would include MultiSiteSystem, get_layout should not in it. +# #override original methods +# def get_layout +# Spree::Site.current.layout.present? ? Spree::Site.current.layout : Spree::Config[:layout] +# end +#end + +module Spree + module MultiSiteSystem + extend ActiveSupport::Concern + + MultiSiteContextEnum = Struct.new( :scoped, :admin_sites, :site1_themes, :free_taxon, :free )[0,1,2,3,4] + + included do + belongs_to :site + # rails 3.2.19 + # fix: Spree::Taxon.create!({ taxonomy_id: 0, name: 'name' }, without_protection: true) => + # + # before_create {|record| record.site_id||= Spree::Site.current.id } + + default_scope { + # design shop create theme product, assign it to global taxon( taxon in site 1) + # enable getting taxon from site 1 + # user import theme from design site, we support import theme with taxon. + # enable geting taxon from design site + if multi_site_context==MultiSiteSystem::MultiSiteContextEnum.scoped + where(:site_id => Spree::Site.current.id) + elsif ( self == Spree::Taxon || self == Spree::Taxonomy ) && multi_site_context==MultiSiteSystem::MultiSiteContextEnum.free_taxon + where(nil) + # first site list template themes + elsif ( self == Spree::Product || self == Spree::Property || Spree::Image ) && multi_site_context==MultiSiteSystem::MultiSiteContextEnum.site1_themes + where(nil) + # first site list product images + elsif multi_site_context=='site_product_images' + where(nil) + # admin sites, site.users site.stores .. + elsif multi_site_context==MultiSiteSystem::MultiSiteContextEnum.admin_sites + where(nil) + else + where(nil) + end + } + + end + + module ClassMethods + def multi_site_context + MultiSiteSystem.multi_site_context + end + end + + def self.multi_site_context + Thread.current[:multi_site_context] + end + + def self.multi_site_context=( new_multi_site_context ) + Thread.current[:multi_site_context] = new_multi_site_context + end + + def self.bind + Spree::MultiSiteSystem.multi_site_context = Spree::MultiSiteSystem::MultiSiteContextEnum.scoped + #Rails.logger.debug "set_multi_site_scope = #{Spree::MultiSiteSystem.multi_site_context}" + end + + def self.unbind + Spree::MultiSiteSystem.multi_site_context = Spree::MultiSiteSystem::MultiSiteContextEnum.free + end + + + # do block with given context + def self.with_context( new_context, &block ) + original_context = self.multi_site_context + begin + self.multi_site_context = new_context + yield + ensure + self.multi_site_context = original_context + end + end + + def self.with_context_free_taxon(&block) + with_context( MultiSiteContextEnum.free_taxon, &block ) + end + + def self.with_context_site1_themes(&block) + with_context( MultiSiteContextEnum.site1_themes, &block ) + end + + def self.with_context_site_product_images(&block) + with_context( 'site_product_images', &block ) + end + + def self.with_context_admin_sites(&block) + with_context( MultiSiteContextEnum.admin_sites, &block ) + end + + end +end diff --git a/spree_theme/lib/spree_multi_site/paper_clip_interpolate_site.rb b/spree_theme/lib/spree_multi_site/paper_clip_interpolate_site.rb new file mode 100644 index 00000000..ced24b18 --- /dev/null +++ b/spree_theme/lib/spree_multi_site/paper_clip_interpolate_site.rb @@ -0,0 +1,83 @@ +module SpreeMultiSite + + unless Paperclip::Interpolations.all.include? :site + + Paperclip.interpolates :site do |attachment, style_name| + #belongs to site: product + #belongs to store: logo, favicon + attachment.instance.try(:site_id) || attachment.instance.try(:store).try(:site_id) # site.current do not work anymore, since we assign theme product to taxon of shop1. + end + # Paperclip support :class, Spree::Taxon => spree/taxon, with simple_class, Spree::Taxon => taxon + Paperclip.interpolates :simple_class do |attachment, style_name| + + AttachmentClassEnum.to_h.key( attachment.instance.class.name ) || 'unkown' + #attachment.instance.class.name.demodulize.underscore + end + + Paperclip.interpolates :aliyun_host do |attachment, style_name| + #style_name is symbol + case style_name + when :original + Paperclip::Attachment.default_options[:aliyun][:oss_host] + else + Paperclip::Attachment.default_options[:aliyun][:img_host] + end + end + + # support aliyun image resize service + # product image { mini: '48x48>', small: '100x100>', product: '240x240>', medium: '350x350>', large: '600x600>' } + # post image { mini: '60x60>', small: '180x120>', medium: '280x190>', large: '670x370>'}, + # http://userdomain/object.jpg@100w_100h_90Q.jpg + Paperclip.interpolates :aliyun_style do |attachment, style_name| + extension = '.jpg' + style_name = style_name.to_s + style_symbol = style_name.to_sym + if attachment.instance.class.name == AttachmentClassEnum.spree_image + case style_name + when /mini/ + '@48w_48h_1x' + extension + when /small/ + '@100w_100h_1x' + extension + when /product/ + '@240w_240h_1x' + extension + when /medium/ + '@350w_350h_1x' + extension + when /large/ + '@600w_600h_1x' + extension + when /@/ #'@330w_330h_1x' + style_name + extension + end + elsif attachment.instance.class.name == AttachmentClassEnum.spree_post + case style_name + when /mini/ # post cover + '@60w_60h_1x' + extension + when /small/ + '@180w_120h_1x' + extension + when /medium/ + '@280w_190h_1x' + extension + when /large/ + '@670w_370h_1x' + extension + when /@/ #'@330w_330h_1x' + '@' + style_name + extension + end + elsif attachment.instance.class.name == AttachmentClassEnum.ckeditor_picture + case style_symbol + when :thumb # ckeditor image, '118x100#', as list item + #先把图按短边优先缩略,然后再用指定颜色填充剩余区域 + '@118w_100h_4e' + extension + when :content # ckeditor image, '800>' , as editor content + '@800w_l1' + extension + end + elsif attachment.instance.class.name == AttachmentClassEnum.spree_template_file + case style_symbol + when :mini + #将图按短边缩略到48x48, 然后按白色填充 + '@48w_48h_4e' + extension + end + + end + + end # :aliyun_style + end + +end # SpreeMultiSite diff --git a/spree_theme/lib/spree_multi_site/paperclip_aliyun_oss_helper.rb b/spree_theme/lib/spree_multi_site/paperclip_aliyun_oss_helper.rb new file mode 100644 index 00000000..d35655b8 --- /dev/null +++ b/spree_theme/lib/spree_multi_site/paperclip_aliyun_oss_helper.rb @@ -0,0 +1,34 @@ +module SpreeMultiSite + + # include into model + module PaperclipAliyunOssHelper + # original path and url + # :url => "/shops/:rails_env/:site/ckeditor_assets/pictures/:id/:style_:basename.:extension", + # :path => ":rails_root/public/shops/:rails_env/:site/ckeditor_assets/pictures/:id/:style_:basename.:extension", + + def self.extended( base ) + if base.storage_aliyun? + base.fix_path_for_aliyun_oss + end + end + + def fix_path_for_aliyun_oss + # ex. Spree::Taxon path = 1/taxon/1_test.jpg, :aliyun_style start with @ + # taxon/post/ + path = ":site/:simple_class/:id_:filename" + #make sure each + attachment_key = :attachment # spree_image/ spree_template_file + attachment_key = :cover if self.name == AttachmentClassEnum.spree_post + attachment_key = :data if self.name == AttachmentClassEnum.ckeditor_picture #Ckeditor::Picture, + attachment_key = :data if self.name == AttachmentClassEnum.ckeditor_file #Ckeditor::AttachmentFile + attachment_definitions[attachment_key][:path] = path + attachment_definitions[attachment_key][:url] = 'http://:aliyun_host/'+path+':aliyun_style' + attachment_definitions[attachment_key][:styles] = {} #no need styles anymore. it is supproted by oss style + end + + def storage_aliyun? + (attachment_definitions[:storage]||Paperclip::Attachment.default_options[:storage]) == :aliyun + end + end + +end diff --git a/spree_theme/lib/spree_multi_site/permitted_attributes_for_site.rb b/spree_theme/lib/spree_multi_site/permitted_attributes_for_site.rb new file mode 100644 index 00000000..5c1b76d4 --- /dev/null +++ b/spree_theme/lib/spree_multi_site/permitted_attributes_for_site.rb @@ -0,0 +1,12 @@ +require 'spree/permitted_attributes' +module Spree + module PermittedAttributes + ATTRIBUTES_FOR_SITE=[:site_attributes] + mattr_reader *ATTRIBUTES_FOR_SITE + + @@site_attributes = [:name, :domain, :short_name, :has_sample, :index_page,:theme_id,:foreign_theme_id, :email, :password,:password_confirmation, + # from app_configuration + :allow_ssl_in_production, :allow_ssl_in_development_and_test, :allow_ssl_in_staging, :check_for_spree_alerts, :display_currency, :hide_cents, :currency, :currency_symbol_position, :currency_decimal_mark, :currency_thousands_separator + ] + end +end diff --git a/spree_theme/lib/spree_multi_site/testing_support/factories.rb b/spree_theme/lib/spree_multi_site/testing_support/factories.rb new file mode 100644 index 00000000..a36a5d0b --- /dev/null +++ b/spree_theme/lib/spree_multi_site/testing_support/factories.rb @@ -0,0 +1,3 @@ +Dir["#{File.dirname(__FILE__)}/factories/**"].each do |f| + load File.expand_path(f) +end diff --git a/spree_theme/lib/spree_theme.rb b/spree_theme/lib/spree_theme.rb index e4f9ac3b..c9fa948a 100644 --- a/spree_theme/lib/spree_theme.rb +++ b/spree_theme/lib/spree_theme.rb @@ -1,25 +1,30 @@ -require 'spree_core' -require 'spree_theme/engine' -require 'spree_theme/paper_clip_interpolate_site' -require 'spree_theme/system' -require 'spree_theme/site_helper' -require 'spree_theme/section_piece_param_helper' -require 'spree_theme/permitted_attributes_for_theme' +#require 'active_support/concern' module SpreeTheme - + # these are for file_theme, copy from gem themes_on_rails + #autoload :ActionController, 'spree_theme/file_theme/action_controller' + #autoload :ControllerAdditions, 'spree_theme/file_theme/controller_additions' + + def self.all + Dir.glob("app/themes/*").select { |fn| !fn.start_with?('.') && File.directory?(fn) }.map { |fn| fn.split('/').last } + end + + TEMPLATE_THEME_TABS = [:native_themes, :theme_texts, :foreign_themes] + mattr_accessor :site_class, :taxon_class, :post_class def self.site_class + #default has to be Spree::FakeWebsite, then we could test without spree_multi_site @@site_class ||= "Spree::Site" + if @@site_class.is_a?(Class) raise "Spree.site_class MUST be a String object, not a Class object." elsif @@site_class.is_a?(String) @@site_class.constantize end end - - + + def self.taxon_class @@taxon_class ||= "Spree::Taxon" if @@taxon_class.is_a?(Class) @@ -38,3 +43,21 @@ def self.post_class end end end + +require 'spree_multi_site' + +require 'spree_core' +require 'spree_theme/sitemap_helper' +require 'spree_theme/engine' +require 'spree_theme/paper_clip_interpolate_site' +require 'spree_theme/database_theme/installer' +require 'spree_theme/file_theme/installer' +require 'spree_theme/file_theme/action_controller' +require 'spree_theme/system' +require 'spree_theme/site_helper' +require 'spree_theme/seed_helper' +require 'spree_theme/permitted_attributes' +require 'spree_theme/controller_helpers/strong_parameters' +require 'spree_theme/template_base_helper' +require 'spree_theme/client_info' +require 'spree_theme/blog_search' diff --git a/spree_theme/lib/spree_theme/blog_search.rb b/spree_theme/lib/spree_theme/blog_search.rb new file mode 100644 index 00000000..8ef48938 --- /dev/null +++ b/spree_theme/lib/spree_theme/blog_search.rb @@ -0,0 +1,66 @@ +module SpreeTheme + class BlogSearch + attr_accessor :properties + attr_accessor :current_user + attr_accessor :current_currency + + def initialize(params) + self.current_currency = Spree::Config[:currency] + @properties = {} + prepare(params) + end + + def retrieve_posts + @posts = get_base_scope + curr_page = page || 1 + @posts = @posts.page(curr_page).per(per_page) + end + + def method_missing(name) + if @properties.has_key? name + @properties[name] + else + super + end + end + + protected + def get_base_scope + base_scope = Spree::Post.live.ordered + base_scope = base_scope.in_taxon(taxon) unless taxon.blank? + base_scope = get_products_conditions_for(base_scope, keywords) + #base_scope = add_search_scopes(base_scope) + base_scope + end + + #def add_search_scopes(base_scope) + # search.each do |name, scope_attribute| + # scope_name = name.to_sym + # if base_scope.respond_to?(:search_scopes) && base_scope.search_scopes.include?(scope_name.to_sym) + # base_scope = base_scope.send(scope_name, *scope_attribute) + # else + # base_scope = base_scope.merge(Spree::Product.search({scope_name => scope_attribute}).result) + # end + # end if search + # base_scope + #end + + # method should return new scope based on base_scope + def get_products_conditions_for(base_scope, query) + unless query.blank? + base_scope = base_scope.like_any([:title, :body], query.split) + end + base_scope + end + + def prepare(params) + @properties[:taxon] = params[:taxon].blank? ? nil : Spree::Taxon.find(params[:taxon]) + @properties[:keywords] = params[:keywords] + @properties[:search] = params[:search] + + per_page = params[:per_page].to_i + @properties[:per_page] = per_page > 0 ? per_page : 12 + @properties[:page] = (params[:page].to_i <= 0) ? 1 : params[:page].to_i + end + end +end diff --git a/spree_theme/lib/spree_theme/client_info.rb b/spree_theme/lib/spree_theme/client_info.rb new file mode 100644 index 00000000..e83e22bf --- /dev/null +++ b/spree_theme/lib/spree_theme/client_info.rb @@ -0,0 +1,9 @@ +module SpreeTheme + class ClientInfo + attr_accessor :is_mobile, :is_preview + def initialize( attrs ) + self.is_mobile = !!attrs[:is_mobile] + self.is_preview = !!attrs[:is_preview] + end + end +end \ No newline at end of file diff --git a/spree_theme/lib/spree_theme/controller_helpers/strong_parameters.rb b/spree_theme/lib/spree_theme/controller_helpers/strong_parameters.rb new file mode 100644 index 00000000..7660f6f2 --- /dev/null +++ b/spree_theme/lib/spree_theme/controller_helpers/strong_parameters.rb @@ -0,0 +1,13 @@ +require 'spree/core/controller_helpers/strong_parameters' +module Spree + module Core + module ControllerHelpers + module StrongParameters + + delegate *Spree::PermittedAttributes::ATTRIBUTES_FOR_THEME, + to: :permitted_attributes, + prefix: :permitted + end + end + end +end diff --git a/spree_theme/lib/spree_theme/database_theme/installer.rb b/spree_theme/lib/spree_theme/database_theme/installer.rb new file mode 100644 index 00000000..1b03c56b --- /dev/null +++ b/spree_theme/lib/spree_theme/database_theme/installer.rb @@ -0,0 +1,263 @@ +module SpreeTheme + module DatabaseTheme + module Installer + extend ActiveSupport::Concern + + private + # override spree's + # only cart|account using layout while rendering, product list|detail page render without layout. + def get_layout_if_use + #Rails.logger.debug " request.xhr?=#{request.xhr?} infinitescroll_request?=#{infinitescroll_request?},@is_designer=#{@is_designer} " + #infinite_scroll_request is xhr, but want to get full html + if request.xhr? && !infinitescroll_request? + return false + end + # keep it before check "designer", page for admin login never need design + return @special_layout if @special_layout.present? + #disable mobile feature for now + #return 'sprangular/application' if mobile? + #for designer + return 'layout_for_design' if @is_designer + + #for customer, do not support it now. + #if @is_preview + # return 'layout_for_preview' + #end + + return 'layout_for_page' if @theme.renderer_page? + 'layout_for_compiled' # @theme.layout_path || Spree::Store.current.layout || Spree::Config[:layout] + end + + def initialize_template( request_fullpath = nil ) + request_fullpath ||= request.fullpath + + # in case tld/create_admin_session, should show system layout, theme may have no login section. + @special_layout = nil + # Rails.logger.debug "request_fullpath=#{request_fullpath}" + # fullpath may contain ?n=www.domain.com + case request_fullpath + when /^\/create_admin_session/,/^\/new_admin_session/ + @special_layout = 'layout_for_login' + return + when /^\/under_construction/, /^\/user\/spree_user\/logout/ ,/^\/logout/, /^\/admin/ + return + end + + store = Spree::Store.current + # get theme first, then look for page for selected theme. design shop require index page for each template + @is_designer = false + if store.designable? + # make sure user logged in and has ability + @is_designer = ( Spree::TemplateTheme.accessible_by( current_ability, :edit).where(:store_id=> store.id).count >0 ) + end + # allow edit mobile template on chrome + #@is_designer = false if mobile? + #login, forget_password page only available fore unlogged user. we need this flag to show editor even user have not log in. + @is_designer = ( cookies[:_getstore_designer]=='1') if cookies[:_getstore_designer].present? + + @client_info = current_terminal + @client_info.is_preview = @is_designer + @client_info.is_weixin = weixin? + # use file theme + if store.file_theme_name.present? + handle_file_theme( store.file_theme_name ) and return + end + #current_user.is_designer means he could design template_theme. + #current_site.designable means current user could preview published template_theme + # designer and shop owner could select theme to view both, + #FIXME coolies expires when the user's browser is closed. but user do not know it. + #get template from query string + if params[:action]=='preview' && params[:id].present? + @theme = store.template_themes.find( params[:id] ) + cookies[:_getstore_theme_id] = params[:id] + end + # there are more than one designable store, design1, design2 .... + # since cookies domain is same top level domain, ex. .dalianshops.com + # cookies[:theme_id] maybe not belong to current store, we should test that. + if cookies[:_getstore_theme_id].present? + if Spree::TemplateTheme.native.exists? cookies[:_getstore_theme_id] #theme could be deleted. + @theme = Spree::TemplateTheme.find( cookies[:_getstore_theme_id] ) + else + cookies[:_getstore_theme_id] = nil + end + end + + # public view pages + if @theme.blank? && Spree::Store.current.template_theme.present? + @theme = Spree::Store.current.template_theme + end + # public view pages vie cellphone + if mobile? && @theme && @theme.mobile + @theme = @theme.mobile + end + # theme could differ in home page + #Rails.logger.debug "@theme=#{@theme.inspect}, @is_designer=#{@is_designer},store=#{store.inspect} request.xhr?=#{request.xhr?}" + if params[:controller]=~/cart|checkout|order|products/ + @menu = get_default_taxon #products is for search + elsif params[:controller]=~/user/ + @menu = get_default_taxon + else + if params[:r] + @resource = Spree::Product.find_by_id(params[:r]) + if @resource.nil? && store.template_accessible? + @resource = Spree::Product.unscoped.for_template.find_by_id( params[:r] ) + end + end + if params[:p] + @resource = Spree::Post.find_by_id(params[:p]) + end + if params[:c] && params[:c].to_i>0 + @menu = SpreeTheme.taxon_class.find_by_id(params[:c]) + end + # get default_taxon from root, or it has no root, inherited_page_context cause error + # @theme could be nil at present. + # store.home should be before theme.home, + # theme could have several homes, store should have only one default. splash screen feature required + @menu ||= ( store.home_page || @theme.try(:home_page) || get_default_taxon) + #elsif SpreeTheme.taxon_class.home.present? + # #it is discarded, it is conflict with feature theme has own index page. it would show product assigned index page of other theme + # #now each theme has own index page. store has own index page. + # #just set home page in taxon is ok as well + # @menu = SpreeTheme.taxon_class.home + end + # support feature replaced_by + if @menu.replacer.present? + @menu = @menu.replacer + end + + #menu should be same instance pass to PageTag::PageGenerator, it require request_fullpath + @menu.request_fullpath = request_fullpath + + # @theme is required since we support create admin session by ajax. + case request_fullpath + + when /^\/comments/,/^\/new_site/,/^\/create_site/ # it need layout when development, in fact it is always ajax. + @special_layout = 'under_construction' + return + end + + # site has a released theme + if @theme.present? + #support feature is_public + unless store.is_public? + #if it is not public, only admin could preview template_theme. + unless try_spree_current_user + redirect_to :under_construction + end + end + + #if mobile? && @theme.mobile + # @theme = @theme.mobile + #end + + unless request.xhr? + if @is_designer + prepare_params_for_editors(@theme) + # layout_editor_panel has to be in views/application, + # or could not find for spree_auth_devise/controllers + # do not use render_to_string... it is time consuming. + #@editor_panel = render_to_string :partial=>'layout_editor_panel' + end + end + Rails.logger.info "SpreeTheme template_theme_id: #{@theme.id}, is_designer: #{ @is_designer}, menu_id: #{@menu.id}-#{@menu.name}" + # initialize page generator @lg all the time, even for xhr, we need to partial section. ex. minicart + # we have to initialize PageTag::PageGenerator here, page like login do not go to template_thems_controller/page + if @is_designer + @lg = PageTag::PageGenerator.previewer( @menu, @theme, { resource: @resource, controller: self, pagination_params: pagination_params, searcher_params: searcher_params}) + else + @lg = PageTag::PageGenerator.generator( @menu, @theme, { resource: @resource, controller: self, pagination_params: pagination_params, searcher_params: searcher_params}) + end + @lg.context.each_pair{|key,val| + # expose variable to view + instance_variable_set( "@#{key}", val) + } + + else + redirect_to :under_construction + end + end + + + def prepare_params_for_editors(theme,editor=nil,page_layout = nil, template_terminal = nil) + @editors = Spree::Editor.all + @param_values_for_editors = Array.new(@editors.size){|i| []} + editor_ids = @editors.collect{|e|e.id} + page_layout ||= theme.original_page_layout_root + param_values =theme.param_values().includes([:section_param=>[:section_piece_param=>:param_category]]).where(["spree_param_values.page_layout_id=? and spree_section_params.is_enabled",page_layout.id]).order("spree_param_categories.position, spree_section_params.section_id, spree_section_piece_params.position") + #get param_values for each editors + for pv in param_values + #only get pv blong to root section + #next if pv.section_id != layout.section_id or pv.section_instance != layout.section_instance + idx = (editor_ids.index pv.section_param.section_piece_param.editor_id) + if idx>=0 + @param_values_for_editors[idx]||=[] + @param_values_for_editors[idx] << pv + end + end + + @theme = theme + @editor = editor + @editor ||= @editors.first + #it is not done, comment it out for now. + #@template_terminal = template_terminal + #@template_terminal ||= theme.template_terminals.first + @page_layout = page_layout #current selected page_layout, the node of the layout tree. + @sections = Spree::Section.where(:is_enabled=>true).order("title").roots + #template selection, include mobile + @template_themes = Spree::TemplateTheme.native + end + + #https://ruby-china.org/topics/22165 + #https://github.com/ruby-china/ruby-china/blob/13662590b382c7bbc2438d79679df68efe2684a1/app/helpers/application_helper.rb + MOBILE_USER_AGENTS = 'palm|blackberry|nokia|phone|midp|mobi|symbian|chtml|ericsson|minimo|' + + 'audiovox|motorola|samsung|telit|upg1|windows ce|ucweb|astel|plucker|' + + 'x320|x240|j2me|sgh|portable|sprint|docomo|kddi|softbank|android|mmp|' + + 'pdxgw|netfront|xiino|vodafone|portalmmm|sagem|mot-|sie-|ipod|up\\.b|' + + 'webos|amoi|novarra|cdm|alcatel|pocket|iphone|mobileexplorer|mobile' + def mobile? + return true if cookies[:_dalianshops_terminal]=='2' + + agent_str = request.user_agent.to_s.downcase + return false if agent_str =~ /ipad/ + agent_str =~ Regexp.new(MOBILE_USER_AGENTS) + end + + def weixin? + user_agent = UserAgent.parse request.user_agent + #Rails.logger.debug "user_agent=#{user_agent}, user_agent.browser=#{user_agent.browser},request.user_agent#{request.user_agent}" + !!(user_agent.browser =~ /wechat/i) + end + + def current_terminal + unless @current_terminal + @current_terminal = ( mobile? ? Spree::UserTerminal.cellphone.first : Spree::UserTerminal.pc.first ) + end + @current_terminal + end + + def get_default_taxon( ) + DefaultTaxonRoot.instance(request.fullpath).children.first + end + + def infinitescroll_request? + params[:pagination_style] == Spree::PageLayout::PaginationStyle.infinitescroll + end + + def pagination_params + { + page: params[:page], + pagination_plid: params[:pagination_plid], + pagination_style: params[:pagination_style] + } + end + + def searcher_params + { + keywords: params[:keywords] + } + end + + + end + end +end diff --git a/spree_theme/lib/spree_theme/engine.rb b/spree_theme/lib/spree_theme/engine.rb index 87e17816..8c653805 100644 --- a/spree_theme/lib/spree_theme/engine.rb +++ b/spree_theme/lib/spree_theme/engine.rb @@ -1,32 +1,81 @@ -module SpreeTheme - class Engine < Rails::Engine - require 'spree/core' - isolate_namespace Spree - engine_name 'spree_theme' - - config.autoload_paths += %W(#{config.root}/lib) - # use rspec for tests - config.generators do |g| - g.test_framework :rspec - end - - config.after_initialize do |app| - #config.paths['app/views'] << path - #ActionController::Base.append_view_path( Rails.root.join( "public", "shops", Rails.env ) ) - end - - def self.activate - Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c| - Rails.configuration.cache_classes ? require(c) : load(c) - end - end - # sets the manifests / assets to be precompiled, even when initialize_on_precompile is false - initializer "spree.assets.precompile", :group => :all do |app| - app.config.assets.precompile += %w[ - store/spree_theme.* - ] - end - - config.to_prepare &method(:activate).to_proc - end -end +module SpreeTheme + class Engine < Rails::Engine + require 'spree/core' + isolate_namespace Spree + engine_name 'spree_theme' + + # copy from engine spree_multi_site + config.spree_multi_site = SpreeMultiSite::Environment.new + + initializer "spree.multisite.add_middleware" do |app| + app.middleware.use SpreeMultiSite::Middleware + end + + config.autoload_paths += %W(#{config.root}/lib #{config.root}/app/models/spree/calculator) + # use rspec for tests + config.generators do |g| + g.test_framework :rspec + end + + initializer 'spree.promo.register.promotion.calculators' do |app| + app.config.spree.calculators.promotion_actions_create_adjustments << Spree::Calculator::RelatedProductDiscount + end + + def self.activate + Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c| + Rails.configuration.cache_classes ? require(c) : load(c) + end + + #https://github.com/spree-contrib/spree_sitemap + SitemapGenerator::Interpreter.send :include, SpreeTheme::SitemapHelper + if defined? SitemapGenerator::LinkSet + SitemapGenerator::LinkSet.send :include, SpreeTheme::SitemapHelper + end + end + + # sets the manifests / assets to be precompiled, even when initialize_on_precompile is false + initializer "spree.assets.precompile", :group => :all do |app| + app.config.assets.precompile += %w[ + missing/*.png jssor/*.png jssor/*.gif + store/spree_theme.* + jquery.jstree/themes/spree2/style.css + ] + + + end + + ## copy from themes_on_rails + initializer 'themes_on_rails.load_locales' do |app| + app.config.i18n.load_path += Dir[Rails.root.join('app/themes/*', 'locales', '**', '*.yml').to_s] + end + + initializer 'themes_on_rails.assets_path' do |app| + Dir.glob("#{SpreeTheme::Engine.root}/app/themes/*/assets/*").each do |dir| + app.config.assets.paths << dir + end + + end + + initializer 'themes_on_rails.precompile' do |app| + # # for file theme assets + app.config.assets.precompile << Proc.new do |path, fn| + if fn =~ /app\/themes/ + basename = path.split('/').last + if !%w(.js .css).include?(File.extname(path)) + true + elsif path =~ /^[^\/]+\/all((_|-).+)?\.(js|css)$/ + # 1. don't allow nested: theme_a/responsive/all.js + # 2. allow start_with all_ or all- + # 3. allow all.js and all.css + true + else + false + end + end + end + end + + + config.to_prepare &method(:activate).to_proc + end +end diff --git a/spree_theme/lib/spree_theme/file_theme/action_controller.rb b/spree_theme/lib/spree_theme/file_theme/action_controller.rb new file mode 100644 index 00000000..ddfdb9c6 --- /dev/null +++ b/spree_theme/lib/spree_theme/file_theme/action_controller.rb @@ -0,0 +1,81 @@ +module SpreeTheme::FileTheme + class ActionController + attr_reader :theme_name + + class << self + def apply_theme(controller_class, theme, options={}) + filter_method = before_action_method(options) + options = options.slice(:only, :except) + + # set layout + controller_class.class_eval do + define_method :layout_from_theme do + theme_instance.theme_name + end + + define_method :theme_instance do + @theme_instance ||= SpreeTheme::FileTheme::ActionController.new(self, theme) + end + + define_method :current_theme do + theme_instance.theme_name + end + + private :layout_from_theme, :theme_instance + #layout :layout_from_theme, options + helper_method :current_theme + end + + controller_class.send(filter_method, options) do |controller| + + # prepend view path + controller.prepend_view_path theme_instance.theme_view_path + + # liquid file system + #Liquid::Template.file_system = Liquid::Rails::FileSystem.new(theme_instance.theme_view_path) if defined?(Liquid::Rails) + end + end + + private + + def before_action_method(options) + case Rails::VERSION::MAJOR + when 3 + options.delete(:prepend) ? :prepend_before_action : :before_action + when 4, 5 + options.delete(:prepend) ? :prepend_before_action : :before_action + end + end + end + + def initialize(controller, theme) + @controller = controller + @theme_name = _theme_name(theme) + end + + def index_page + "#{theme_name}_index" + end + + def theme_view_path + "#{prefix_path}/#{@theme_name}/views" + end + + def prefix_path + "#{SpreeTheme::Engine.root}/app/themes" + end + + private + + def _theme_name(theme) + case theme + when String then theme + when Proc then theme.call(@controller).to_s + when Symbol then @controller.respond_to?(theme, true) ? @controller.send(theme).to_s : theme.to_s + else + raise ArgumentError, + "String, Proc, or Symbol, expected for `theme'; you passed #{theme.inspect}" + end + end + end +end diff --git a/spree_theme/lib/spree_theme/file_theme/installer.rb b/spree_theme/lib/spree_theme/file_theme/installer.rb new file mode 100644 index 00000000..8dfb76c9 --- /dev/null +++ b/spree_theme/lib/spree_theme/file_theme/installer.rb @@ -0,0 +1,29 @@ +module SpreeTheme + module FileTheme + module Installer + extend ActiveSupport::Concern + + included do + helper_method :theme_name + end + + def handle_file_theme( theme ) + prepend_view_path file_theme_instance(theme).theme_view_path + @special_layout = "layout" + end + + + def file_theme_instance( theme=nil ) + if theme.present? + @file_theme_instance = SpreeTheme::FileTheme::ActionController.new(self, theme ) + end + @file_theme_instance + end + + def theme_name + file_theme_instance.theme_name + end + + end + end +end diff --git a/spree_theme/lib/spree_theme/paper_clip_interpolate_site.rb b/spree_theme/lib/spree_theme/paper_clip_interpolate_site.rb index 09139da1..63172c7e 100644 --- a/spree_theme/lib/spree_theme/paper_clip_interpolate_site.rb +++ b/spree_theme/lib/spree_theme/paper_clip_interpolate_site.rb @@ -1,5 +1,5 @@ unless Paperclip::Interpolations.all.include? :site Paperclip.interpolates :site do |attachment, style_name| - attachment.instance.site_id # site.current do not work anymore, since we assign theme product to taxon of shop1. + attachment.instance.try(:site_id) || attachment.instance.try(:store).try(:site_id) # site.current do not work anymore, since we assign theme product to taxon of shop1. end -end \ No newline at end of file +end diff --git a/spree_theme/lib/spree_theme/permitted_attributes.rb b/spree_theme/lib/spree_theme/permitted_attributes.rb new file mode 100644 index 00000000..9ba249a3 --- /dev/null +++ b/spree_theme/lib/spree_theme/permitted_attributes.rb @@ -0,0 +1,30 @@ +require 'spree/permitted_attributes' +module Spree + module PermittedAttributes + ATTRIBUTES_FOR_THEME=[:page_layout_attributes,:param_value_attributes,:section_piece_param_attributes, + :section_attributes, :template_file_attributes, :template_text_attributes, :template_theme_attributes, + :comment_type_attributes, :comment_attributes, :blog_attributes, :post_attributes, :post_file_attributes, :post_product_attributes] + mattr_reader *ATTRIBUTES_FOR_THEME + + @@page_layout_attributes = [ :section_id,:title, :content_param, :data_source, :data_filter, :data_source_order_by, :data_source_param, :image_param, :effect_param, :css_class, :css_class_for_js, :content_css_class, :stylish, :section_context ] + @@param_value_attributes = [ :page_layout_root_id, :page_layout_id, :section_id ] + @@section_piece_param_attributes = [ :editor,:param_category, :section_piece, :class_name, :pclass, :html_attribute_ids ] + @@section_attributes = [ :section_piece_id, :title, :global_events, :subscribed_global_events,:is_enabled, :for_terminal ] + @@template_file_attributes = [ :theme_id, :attachment, :page_layout_id, :alt ] + @@template_text_attributes = [ :name, :body ] + @@template_theme_attributes = [ :is_public, :site_id,:page_layout_root_id,:title, :section_root_id, :assigned_resource_ids, :for_terminal, :user_terminal_id ] + @@product_attributes += [ :theme_id, :summary] + @@taxon_attributes += [:page_context, :replaced_by, :is_clickable, :tooltips, :stylish] + + @@comment_type_attributes = [:name, :applies_to] + @@comment_attributes = [:commentable_id, :commentable_type, :user_id, :comment_type_id, :comment, :cellphone, :email] + + @@store_attributes += [ logo_attributes:[:attachment], favicon_attributes:[:attachment] ] + + @@blog_attributes = [:name, :permalink] + @@post_attributes = [ :title, :cover, :teaser, :body, :posted_at, :author, :live, :tag_list, :taxon_ids, :product_ids_string, :meta_keywords, :meta_description] + @@post_file_attributes = [:alt, :attachment] + @@post_product_attributes = [:post_id, :product_id, :position] + + end +end diff --git a/spree_theme/lib/spree_theme/permitted_attributes_for_theme.rb b/spree_theme/lib/spree_theme/permitted_attributes_for_theme.rb deleted file mode 100644 index 5d48aa77..00000000 --- a/spree_theme/lib/spree_theme/permitted_attributes_for_theme.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Spree - module PermittedAttributes - ATTRIBUTES_FOR_THEME=[:page_layout_attributes,:param_value_attributes,:section_piece_param_attributes, - :section_attributes, :template_file_attributes, :template_text_attributes, :template_theme_attributes ] - mattr_reader *ATTRIBUTES_FOR_THEME - - @@page_layout_attributes = [ :section_id,:title ] - @@param_value_attributes = [ :page_layout_root_id, :page_layout_id,:section_id ] - @@section_piece_param_attributes = [ :editor,:param_category, :section_piece, :class_name, :pclass, :html_attribute_ids ] - @@section_attributes = [ :section_piece_id, :title, :global_events, :subscribed_global_events,:is_enabled ] - @@template_file_attributes = [ :theme_id, :attachment, :page_layout_id ] - @@template_text_attributes = [ :name, :body ] - @@template_theme_attributes = [ :is_public, :site_id,:page_layout_root_id,:title, :section_root_id, :assigned_resource_ids ] - @@product_attributes += [:global_taxon_ids, :global_taxons, :theme_id] - @@taxon_attributes += [:page_context, :replaced_by, :is_clickable] - end -end \ No newline at end of file diff --git a/spree_theme/lib/spree_theme/section_piece_param_helper.rb b/spree_theme/lib/spree_theme/section_piece_param_helper.rb deleted file mode 100644 index b0a9931e..00000000 --- a/spree_theme/lib/spree_theme/section_piece_param_helper.rb +++ /dev/null @@ -1,10 +0,0 @@ -module SpreeTheme - module SectionPieceParamHelper - def create_section_piece_param( section_piece, section_piece_param_attrs) - section_piece.section_piece_params.create! do|spp| - spp.param_conditions={} - spp.assign_attributes( section_piece_param_attrs, :without_protection => true) - end - end - end -end \ No newline at end of file diff --git a/spree_theme/lib/spree_theme/seed_helper.rb b/spree_theme/lib/spree_theme/seed_helper.rb new file mode 100644 index 00000000..a634a7da --- /dev/null +++ b/spree_theme/lib/spree_theme/seed_helper.rb @@ -0,0 +1,33 @@ +module SpreeTheme + module SeedHelper + + def create_section_piece_param( section_piece, section_piece_param_attrs) + section_piece.section_piece_params.create! do|spp| + spp.param_conditions={} + spp.assign_attributes( section_piece_param_attrs ) + end + end + + + def find_section_piece( slug ) + section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} + section_piece_hash[slug] + end + + def find_html_attribute( slug ) + Spree::HtmlAttribute.friendly.find 'font-weight' + end + + def section_piece_hash + Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} + end + + def bool_false + Spree::HtmlAttribute::BOOL_FALSE + end + + def bool_true + Spree::HtmlAttribute::BOOL_TRUE + end + end +end \ No newline at end of file diff --git a/spree_theme/lib/spree_theme/simple_permalink.rb b/spree_theme/lib/spree_theme/simple_permalink.rb new file mode 100644 index 00000000..60b75e28 --- /dev/null +++ b/spree_theme/lib/spree_theme/simple_permalink.rb @@ -0,0 +1,26 @@ +module SpreeTheme + module SimplePermalink + extend ActiveSupport::Concern + + included do + class_attribute :simple_permalink_options + end + + module ClassMethods + def make_simple_permalink( options={}) + options[:slug_field] ||= :slug + options[:title_field ] ||= :title + self.simple_permalink_options = options + + before_validation(:on => :create) { save_permalink } + end + end + + def save_permalink + #in mysql 5.5, grouped index column length is 60byte, it is tested on aliyun server. + #in friendly_id_slugs table slug(30)+sluggable_type(15)+scope(15) + #keep slug <30 + self.slug = self.title.parameterize[0,30] + end + end +end diff --git a/spree_theme/lib/spree_theme/site_helper.rb b/spree_theme/lib/spree_theme/site_helper.rb index 4b4ec00a..cfe45947 100644 --- a/spree_theme/lib/spree_theme/site_helper.rb +++ b/spree_theme/lib/spree_theme/site_helper.rb @@ -2,82 +2,22 @@ module SpreeTheme module SiteHelper extend ActiveSupport::Concern included do - belongs_to :template_theme, :foreign_key=>"theme_id" has_many :template_texts, :foreign_key=>"site_id" #compatible with fack_websites - has_many :template_themes, :foreign_key=>"site_id", :dependent=>:destroy + # customer could select a theme when creating site. belongs_to :foreign_template_theme, :foreign_key=>'foreign_theme_id', :class_name=>'TemplateTheme' - + after_create :initialize_first_theme_if_selected # site_id is required for it end - - module ClassMethods - #supply global taxon to other site. - def globalsite - dalianshops - end - - def designsite - find_by_short_name('design') - end - - if Rails.env.test? - def current - if Thread.current[:spree_site].nil? - website = self.find_or_initialize_by_domain_and_name('design.dalianshops.com','DalianShops Design Site' ) - #or Rails.env.development? - if website.new_record? - website.id = 2 - website.theme_id = 1 - website.save! - end - Thread.current[:spree_site] = website - end - Thread.current[:spree_site] - end - - def current=(some_site) - ::Thread.current[:spree_site] = some_site - end - end - # shop's resource should be in this folder - def document_root - File.join(Rails.root,'public') - end - - end - def document_path - self.class.document_root + self.path - end - - def path - File.join( File::SEPARATOR + 'shops', Rails.env, self.id.to_s ) - end - - def layout - self.template_theme.present? ? self.template_theme.layout_path : nil - end - - def design? - self == self.class.designsite - end - - # apply theme to site - # params - theme_or_release, TemplateTheme or TemplateRelease - def apply_theme( theme) - self.theme_id= theme.id - save! - end - # customer could select a theme when creating site. def initialize_first_theme_if_selected if foreign_template_theme.present? self.class.with_site(self) { new_imported_theme = foreign_template_theme.import_with_resource - self.apply_theme( new_imported_theme ) - } + self.stores.first.apply_theme( new_imported_theme ) + } end end - + end -end \ No newline at end of file +end diff --git a/spree_theme/lib/spree_theme/sitemap_helper.rb b/spree_theme/lib/spree_theme/sitemap_helper.rb new file mode 100644 index 00000000..e718b7f3 --- /dev/null +++ b/spree_theme/lib/spree_theme/sitemap_helper.rb @@ -0,0 +1,21 @@ +module SpreeTheme + module SitemapHelper + # https://github.com/spree-contrib/spree_sitemap + + def add_product(product, taxon, options = {}) + opts = options.merge(lastmod: product.updated_at) + add( product.build_path( taxon ), opts) + end + + def add_post(post, taxon, options = {}) + opts = options.merge(lastmod: post.updated_at) + add( post.build_path( taxon ), opts) + end + + def add_taxon(taxon, options = {}) + add( taxon.build_path, options.merge(lastmod: taxon.products.last_updated)) if taxon.permalink.present? + end + + + end +end diff --git a/spree_theme/lib/spree_theme/system.rb b/spree_theme/lib/spree_theme/system.rb index bbc20b56..f206c35a 100644 --- a/spree_theme/lib/spree_theme/system.rb +++ b/spree_theme/lib/spree_theme/system.rb @@ -1,183 +1,30 @@ -require 'spree/core/controller_helpers/common' -class << Spree::Core::ControllerHelpers::Common - def included_with_theme_support(receiver) - included_without_theme_support(receiver) - receiver.send :include, SpreeTheme::System - receiver.send :layout, :get_layout_if_use - receiver.send :before_filter, :initialize_template - receiver.send :before_filter, :add_view_path #spree_devise_auth, and spree_core require it. - end - alias_method_chain :included, :theme_support -end +#require 'spree/core/controller_helpers/common' +# spree/api/base>action_base, spree/base>application +# both included controller_helper/store +#class << Spree::Core::ControllerHelpers::Common +# def included_with_theme_support(receiver) +# included_without_theme_support(receiver) +# receiver.send :include, SpreeTheme::DatabaseTheme::Installer +# receiver.send :include, SpreeTheme::FileTheme::Installer +# # template holds data for page render, we have to initialize it even for api +# receiver.send :prepend_before_action, :initialize_template +# # receiver could be Spree::Api::BaseController or Spree::BaseController +# #if receiver == Spree::BaseController +# receiver.send :layout, :get_layout_if_use # never allow it to api controller. +# end +# alias_method_chain :included, :theme_support +#end -module SpreeTheme::System - private - # override spree's - # only cart|account using layout while rendering, product list|detail page render without layout. - def get_layout_if_use - if request.xhr? - return false - end - # keep it before check "designer", page for admin login never need design - return @special_layout if @special_layout.present? - #for designer - return 'layout_for_design' if @is_designer - - #for customer, do not support it now. - #if @is_preview - # return 'layout_for_preview' - #end - @theme.layout_path || SpreeTheme.site_class.current.layout || Spree::Config[:layout] - end - - def initialize_template( request_fullpath = nil ) - request_fullpath ||= request.fullpath - # in case tld/create_admin_session, should show system layout, theme may have no login section. ex www.dalianshops.com - @special_layout = nil - #dalianshops use template now. - #return if SpreeTheme.site_class.current.dalianshops? - #Rails.logger.debug "request_fullpath=#{request_fullpath}" - # fullpath may contain ?n=www.domain.com - case request_fullpath - when /^\/under_construction/, /^\/user\/spree_user\/logout/ ,/^\/logout/, /^\/admin/ - return - end - - website = SpreeTheme.site_class.current - # get theme first, then look for page for selected theme. design shop require index page for each template - @is_designer = false - if website.design? - #add website condition, design can edit template_theme - @is_designer = ( Spree::TemplateTheme.accessible_by( current_ability, :edit).where(:site_id=>website.id).count >0 ) - end - - #login, forget_password page only available fore unlogged user. we need this flag to show editor even user have not log in. - if cookies[:_dalianshops_designer]=='1' - @is_designer = true - end - if cookies[:_dalianshops_designer]=='0' - @is_designer = false - end - # user could select theme to view in design shop. - if website.design? - #get template from query string - if params[:action]=='preview' && params[:id].present? - @theme = Spree::TemplateTheme.find( params[:id] ) - session[:theme_id] = params[:id] - end - if session[:theme_id].present? - if Spree::TemplateTheme.exists? session[:theme_id] #theme could be deleted. - @theme = Spree::TemplateTheme.find( session[:theme_id] ) - end - end - end - #browse template by public - if @theme.blank? and SpreeTheme.site_class.current.template_theme.present? - @theme = SpreeTheme.site_class.current.template_theme - end -#Rails.logger.debug "@theme=#{@theme.inspect}, @is_designer=#{@is_designer},website=#{website.inspect} request.xhr?=#{request.xhr?}" - if params[:controller]=~/cart|checkout|order/ - @menu = DefaultTaxon.instance - elsif params[:controller]=~/user/ - @menu = DefaultTaxon.instance - else - if params[:r] - @resource = Spree::Product.find_by_id(params[:r]) - end - if params[:p] - @resource = Spree::Post.find_by_id(params[:p]) - end - if params[:c] && params[:c].to_i>0 - @menu = SpreeTheme.taxon_class.find_by_id(params[:c]) - elsif(( index_page = @theme.try(:index_page)) && index_page > 0 ) - @menu = SpreeTheme.taxon_class.find_by_id(index_page) - elsif(( index_page = website.index_page) > 0 ) - @menu = SpreeTheme.taxon_class.find_by_id(index_page) - #elsif SpreeTheme.taxon_class.home.present? - # #it is discarded, it is conflict with feature theme has own index page. it would show product assigned index page of other theme - # #now each theme has own index page. website has own index page. - # #just set home page in taxon is ok as well - # @menu = SpreeTheme.taxon_class.home - else - # get default_taxon from root, or it has no root, inherited_page_context cause error - @menu = DefaultTaxonRoot.instance(request_fullpath).children.first - end - end - #menu should be same instance pass to PageTag::PageGenerator, it require request_fullpath - @menu.request_fullpath = request_fullpath - # support feature replaced_by - if @menu.replacer.present? - @menu = @menu.replacer - end - - # @theme is required since we support create admin session by ajax. - case request_fullpath - when /^\/create_admin_session/,/^\/new_admin_session/ - @special_layout = 'layout_for_login' - return - when /^\/comments/ # it need layout when development, in fact it is always ajax. - @special_layout = 'under_construction' - return - end - - # site has a released theme - if @theme.present? - unless request.xhr? - if @is_designer - prepare_params_for_editors(@theme) - # layout_editor_panel has to be in views/application, - # or could not find for spree_auth_devise/controllers - @editor_panel = render_to_string :partial=>'layout_editor_panel' - end - end - # we have initialize PageTag::PageGenerator here, page like login do not go to template_thems_controller/page - if @is_designer - @lg = PageTag::PageGenerator.previewer( @menu, @theme, {:resource=>@resource, :controller=>self, :page=>params[:page]}) - else - @lg = PageTag::PageGenerator.generator( @menu, @theme, {:resource=>@resource, :controller=>self, :page=>params[:page]}) - end - @lg.context.each_pair{|key,val| - # expose variable to view - instance_variable_set( "@#{key}", val) - } - else - redirect_to :under_construction - end - end - - def prepare_params_for_editors(theme,editor=nil,page_layout = nil) - @editors = Spree::Editor.all - @param_values_for_editors = Array.new(@editors.size){|i| []} - editor_ids = @editors.collect{|e|e.id} - page_layout ||= theme.page_layout - param_values =theme.param_values().includes([:section_param=>[:section_piece_param=>:param_category]]).where(["spree_param_values.page_layout_id=? and spree_section_params.is_enabled",page_layout.id]).order("spree_param_categories.position, spree_section_params.section_id, spree_section_piece_params.position") - #get param_values for each editors - for pv in param_values - #only get pv blong to root section - #next if pv.section_id != layout.section_id or pv.section_instance != layout.section_instance - idx = (editor_ids.index pv.section_param.section_piece_param.editor_id) - if idx>=0 - @param_values_for_editors[idx]||=[] - @param_values_for_editors[idx] << pv - end - end - - @theme = theme - @editor = editor - @editor ||= @editors.first - - @page_layout = page_layout #current selected page_layout, the node of the layout tree. - @page_layout||= theme.page_layout - @sections = Spree::Section.where(:is_enabled=>true).order("title").roots - #template selection - @template_themes = Spree::TemplateTheme.where(:site_id=>SpreeTheme.site_class.current.id) - end - - def add_view_path - #!!is it a place cause memory overflow? - append_view_path SpreeTheme.site_class.current.document_path - # layout of imported theme is in design site home folder - append_view_path SpreeTheme.site_class.designsite.document_path - end -end \ No newline at end of file +#module SpreeTheme::System +# def self.included( receiver ) +# super +# receiver.send :include, SpreeTheme::DatabaseTheme::Installer +# receiver.send :include, SpreeTheme::FileTheme::Installer +# # template holds data for page render, we have to initialize it even for api +# receiver.send :prepend_before_action, :initialize_template +# # receiver could be Spree::Api::BaseController or Spree::BaseController +# #if receiver == Spree::BaseController +# receiver.send :layout, :get_layout_if_use # never allow it to api controller. +# end +#end diff --git a/spree_theme/lib/spree_theme/template_base_helper.rb b/spree_theme/lib/spree_theme/template_base_helper.rb new file mode 100644 index 00000000..a4a48b5d --- /dev/null +++ b/spree_theme/lib/spree_theme/template_base_helper.rb @@ -0,0 +1,4 @@ +module SpreeTheme + module TemplateBaseHelper + end +end \ No newline at end of file diff --git a/spree_theme/lib/spree_theme/testing_support/controller_requests.rb b/spree_theme/lib/spree_theme/testing_support/controller_requests.rb new file mode 100644 index 00000000..d8777497 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/controller_requests.rb @@ -0,0 +1,24 @@ +module SpreeTheme + module TestingSupport + module ControllerRequests + + extend ActiveSupport::Concern + + included do + routes { Spree::Core::Engine.routes } + end + + def xhr_post(action, parameters = nil, session = nil, flash = nil) + parameters ||= {} + parameters.reverse_merge!(:format => :js) + xml_http_request(:post, action, parameters, session, flash) + end + + def xhr_get(action, parameters = nil, session = nil, flash = nil) + parameters ||= {} + parameters.reverse_merge!(:format => :js) + xml_http_request(:get, action, parameters, session, flash) + end + end + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories.rb b/spree_theme/lib/spree_theme/testing_support/factories.rb new file mode 100644 index 00000000..a36a5d0b --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories.rb @@ -0,0 +1,3 @@ +Dir["#{File.dirname(__FILE__)}/factories/**"].each do |f| + load File.expand_path(f) +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/fake_store_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/fake_store_factory.rb new file mode 100644 index 00000000..93bf6456 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/fake_store_factory.rb @@ -0,0 +1,13 @@ +FactoryGirl.define do + factory :fake_site, class: Spree::FakeWebsite do + name 'Fake site' + end + + factory :themed_store, class: Spree::Store do + sequence(:code) { |i| "spree_#{i}" } + name 'Spree Test Store' + url 'www.example.com' + mail_from_address 'spree@example.org' + theme_id 0 + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/html_attribute_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/html_attribute_factory.rb new file mode 100644 index 00000000..d8cbef83 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/html_attribute_factory.rb @@ -0,0 +1,22 @@ +FactoryGirl.define do + factory :html_attribute_width, class: Spree::HtmlAttribute do + css_name 'width' + pvalues "auto,l1" + punits "l,%" + slug 'width' + end + + factory :html_attribute_height, class: Spree::HtmlAttribute do + css_name 'height' + pvalues "auto,l1" + punits "l,%" + slug 'height' + end + + factory :background_image, class: Spree::HtmlAttribute do + css_name 'background-image' + pvalues "none,0i" + punits "" + slug 'background-image' + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/page_layout_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/page_layout_factory.rb new file mode 100644 index 00000000..77e4a0e5 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/page_layout_factory.rb @@ -0,0 +1,68 @@ +FactoryGirl.define do + factory :page_layout, class: Spree::PageLayout do + title 'page layout' + end + + # root + # node1 + # node2 - pv(1) + # node21 - pv(2) + # node22 - pv(2) + factory :page_layout_tree, class: Spree::PageLayout do + title 'page layout tree' + association :section, factory: :section_root + after(:create) do |pl, evaluator| + create( :page_layout_node, parent: pl) + create( :page_layout_node_with_children, parent: pl) + end + end + + + # root + # node1(stylish1) - + # node2(stylish2) - pv(1) + # node21 - pv(2) + # node22 - pv(2) + factory :page_layout_stylish_01, class: Spree::PageLayout do + title 'page layout stylish tree' + stylish 0 + after(:create) do |pl, evaluator| + create( :page_layout_node, parent: pl, template_theme: pl.template_theme, stylish: 1) + end + end + factory :page_layout_stylish_10, class: Spree::PageLayout do + title 'page layout stylish tree' + stylish 1 + after(:create) do |pl, evaluator| + create( :page_layout_node, parent: pl, template_theme: pl.template_theme, stylish: 0) + end + end + + + factory :page_layout_node, class: Spree::PageLayout do + association :section, factory: :section + title 'page layout node' + after(:create) do |pl, evaluator| + create_list( :param_value_simple, 2, page_layout: pl) + end + end + + factory :page_layout_node_with_children, class: Spree::PageLayout do + association :section, factory: :section + title 'page layout node with children' + after(:create) do |pl, evaluator| + create_list(:param_value_simple, 1, page_layout: pl) + create_list(:page_layout_node, 2, parent: pl) + end + end + + factory :page_layout_root, class: Spree::PageLayout do + association :section, factory: :section_root + title 'page layout root' + end + + factory :param_value_simple, class: Spree::ParamValue do + pvalue { {'21'=> 'width:200px', '21unset'=> false} } + end + +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/param_value_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/param_value_factory.rb new file mode 100644 index 00000000..4dbfb04f --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/param_value_factory.rb @@ -0,0 +1,21 @@ +FactoryGirl.define do + factory :param_value, class: Spree::ParamValue do + pvalue { {'21'=> 'width:200px', '21unset'=> false} } + + template_theme + association :section_param, factory: :section_param + + factory :updatable_param_value, class: Spree::ParamValue do + # param_vlaue -> section_param -> section_piece_param + after(:create) do|pv| + spp = create(:section_piece_param) + pv.section_param.update_attribute( :section_piece_param, spp ) + end + end + end + + + + + +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/relation_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/relation_factory.rb new file mode 100644 index 00000000..04b338cf --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/relation_factory.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do + factory :relation, class: Spree::Relation do + association :relatable, factory: :product + association :related_to, factory: :product + relation_type 'Spree::Product' + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/relation_type_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/relation_type_factory.rb new file mode 100644 index 00000000..a0036c43 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/relation_type_factory.rb @@ -0,0 +1,6 @@ +FactoryGirl.define do + factory :relation_type, class: Spree::RelationType do + name { generate(:random_string) } + applies_to 'Spree::Product' + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/section_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/section_factory.rb new file mode 100644 index 00000000..cb315d98 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/section_factory.rb @@ -0,0 +1,30 @@ +FactoryGirl.define do + factory :section, class: Spree::Section do + title 'a section' + association :section_piece, factory: :section_piece + + end + + factory :section_container, class: Spree::Section do + title 'a container section' + association :section_piece, factory: :section_piece_container + + # section_container - section-child + factory :section_with_children do + after(:create) do |section, evaluator| + create_list(:section, 1, parent: section, root_id: section.id) + section.root_id = section.id + section.save + end + end + end + + factory :section_root, class: Spree::Section do + title 'a root section' + association :section_piece, factory: :section_piece_root + after(:create) do |s, evaluator| + s.root_id = s.id + s.save + end + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/section_param_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/section_param_factory.rb new file mode 100644 index 00000000..ed5dd133 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/section_param_factory.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do + + factory :section_param, class: Spree::SectionParam do + association :section, factory: :section + end + +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/section_piece_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/section_piece_factory.rb new file mode 100644 index 00000000..9342ee06 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/section_piece_factory.rb @@ -0,0 +1,19 @@ +FactoryGirl.define do + factory :section_piece, class: Spree::SectionPiece do + title 'section piece' + html 'this is a section piece' + #association :section_piece_param, factory: :section_piece_param + end + + + factory :section_piece_container, class: Spree::SectionPiece do + title 'section piece container' + html '
                  ~~content~~
                  ' + end + + factory :section_piece_root, class: Spree::SectionPiece do + title 'section piece root' + html ' ~~content~~ ' + end + +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/section_piece_param_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/section_piece_param_factory.rb new file mode 100644 index 00000000..52213451 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/section_piece_param_factory.rb @@ -0,0 +1,13 @@ +FactoryGirl.define do + factory :section_piece_param, class: Spree::SectionPieceParam do + association :section_piece, factory: :section_piece + association :editor, factory: :editor + association :param_category, factory: :param_category + end + + factory :editor, class: Spree::Editor do + end + + factory :param_category, class: Spree::ParamCategory do + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/site_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/site_factory.rb new file mode 100644 index 00000000..d77a5aa9 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/site_factory.rb @@ -0,0 +1,34 @@ +FactoryGirl.define do + factory :site1, class: Spree::Site do + name 'first' + email 'first@example.com' + password 'password' + short_name 'www' # indicate tld + + before(:create) do + Spree::Role.find_by(name: 'admin') || create(:role, name: 'admin') + end + + after(:create) do| site | + store = create(:store, site: site, default: true ) + end + + end + + factory :site2, class: Spree::Site do + name 'design' + email 'design@example.com' + password 'password' + + before(:create) do + Spree::Role.find_by(name: 'admin') || create(:role, name: 'admin') + end + + after(:create) do| site | + store = create(:store, site: site ) + end + + end + + +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/specific_taxon_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/specific_taxon_factory.rb new file mode 100644 index 00000000..18122438 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/specific_taxon_factory.rb @@ -0,0 +1,5 @@ +FactoryGirl.define do + factory :specific_taxon, class: Spree::SpecificTaxon do + name 'specific taxon' + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/template_file_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/template_file_factory.rb new file mode 100644 index 00000000..c1f11960 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/template_file_factory.rb @@ -0,0 +1,6 @@ +FactoryGirl.define do + factory :template_file, class: Spree::TemplateFile do + template_theme + name 'template file' + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/template_text_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/template_text_factory.rb new file mode 100644 index 00000000..e58df205 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/template_text_factory.rb @@ -0,0 +1,5 @@ +FactoryGirl.define do + factory :template_text, class: Spree::TemplateText do + name 'template text' + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/template_theme_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/template_theme_factory.rb new file mode 100644 index 00000000..61525fac --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/template_theme_factory.rb @@ -0,0 +1,90 @@ +FactoryGirl.define do + factory :template_theme, class: Spree::TemplateTheme do + title 'template theme' + after(:create) do |theme, evaluator| + create( :page_layout, template_theme: theme) + end + + # template_theme + # page_layout + # template_release + factory :published_template_theme, class: Spree::TemplateTheme do + is_public true + after(:create) do |theme, evaluator| + create_list(:template_release, 1, template_theme: theme) + end + end + + end + + factory :template_release, class: Spree::TemplateRelease do + name 'tempalte release' + end + + factory :stylished_template_theme, class: Spree::TemplateTheme do + title 'template theme' + transient do + stylish 1 + end + after(:create) do |theme, evaluator| + create( :page_layout, template_theme: theme, stylish: evaluator.stylish ) + end + end + + factory :template_theme_stylish_tree, class: Spree::TemplateTheme do + title 'template theme' + transient do + stylish '01' + end + after(:create) do |theme, evaluator| + create( "page_layout_stylish_#{evaluator.stylish}", template_theme: theme) + end + end + + # template_theme + # page_layout_root + # section_root + # section_piece_root + factory :previewable_template_theme, class: Spree::TemplateTheme do + title 'template theme for preview' + store + after(:create) do |theme, evaluator| + create(:page_layout_root, template_theme: theme) + + end + end + + + # template_theme + # page_layout_root + # page_layout_nodes( size=2) + # param_values( size=5, theme_id, page_layout_id ) + + factory :duplicatabl_template_theme, class: Spree::TemplateTheme do + title 'full template theme' + after(:create) do |theme, evaluator| + create(:page_layout_tree_for_duplicator, template_theme: theme) + end + end + + factory :page_layout_for_duplicator, class: Spree::PageLayout do + title 'page layout node' + after(:create) do |pl, evaluator| + create_list( :param_value_for_duplicator, 5, template_theme: pl.template_theme, page_layout: pl) + end + + factory :page_layout_tree_for_duplicator, class: Spree::PageLayout do + title 'page layout tree' + after(:create) do |pl, evaluator| + create( :page_layout_for_duplicator, parent: pl, template_theme: pl.template_theme) + create( :page_layout_for_duplicator, parent: pl, template_theme: pl.template_theme) + end + end + + end + + factory :param_value_for_duplicator, class: Spree::ParamValue do + pvalue { {'21'=> 'width:200px', '21unset'=> false} } + end + +end diff --git a/spree_theme/lib/spree_theme/testing_support/factories/terminal_factory.rb b/spree_theme/lib/spree_theme/testing_support/factories/terminal_factory.rb new file mode 100644 index 00000000..5e3bf628 --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/factories/terminal_factory.rb @@ -0,0 +1,5 @@ +FactoryGirl.define do + factory :terminal, class: Spree::UserTerminal do + name 'pc' + end +end diff --git a/spree_theme/lib/spree_theme/testing_support/request_helpers.rb b/spree_theme/lib/spree_theme/testing_support/request_helpers.rb new file mode 100644 index 00000000..ff4269ea --- /dev/null +++ b/spree_theme/lib/spree_theme/testing_support/request_helpers.rb @@ -0,0 +1,30 @@ +# when test controller admin/*, initialize_template should be ignored +# in rspec, request_fullpath = /?action=apply +# request.fullpath not start with /admin +module SpreeTheme + module TestingSupport + module Helpers + + module Request + def stub_initialize_template! + before(:each) { + #refer to spree/core/store + #Spree::Store.current( create(:store).url ) + allow(controller).to receive(:initialize_template).and_return(true) + } + end + + def stub_spree_user! + before(:each) { + user = mock_model(Spree.user_class, :last_incomplete_spree_order => nil, :spree_api_key => 'fake') + allow(controller).to receive_messages :spree_current_user => user + } + end + + end + end + end +end +RSpec.configure do |config| + config.extend SpreeTheme::TestingSupport::Helpers::Request #, type: :controller +end diff --git a/spree_theme/lib/tasks/fix_oss_taxon_icon.rake b/spree_theme/lib/tasks/fix_oss_taxon_icon.rake new file mode 100644 index 00000000..2bf5473d --- /dev/null +++ b/spree_theme/lib/tasks/fix_oss_taxon_icon.rake @@ -0,0 +1,59 @@ +require 'aliyun/oss' + +def fix_oss_taxon_icon_sample + client = Aliyun::OSS::Client.new( + :endpoint => 'oss-cn-beijing.aliyuncs.com', + :access_key_id => ENV["ALIYUN_OSS_ACCESS_ID"], + :access_key_secret => ENV["ALIYUN_OSS_ACCESS_SECRET"]) + + bucket = client.get_bucket('aliimg') + object_key ='sample/980x260.jpg' + if bucket.object_exists?(object_key) + puts "key #{object_key} exists" + bucket.copy_object( object_key, 'sample/980x260.jpg.bak') + end +end + +def fix_oss_taxon_icon + client = Aliyun::OSS::Client.new( + :endpoint => 'oss-cn-beijing.aliyuncs.com', + :access_key_id => '1Ib17cOySykg7JeR', + :access_key_secret => 'mmvbXa8mC23blsUVcMllW9HMydlmy8') + + bucket = client.get_bucket('aliimg') + sites = [25, 2, 31, 1, 4, 3, 42, 43, 33, 336, 45, 337, 338, 341, 343, 342, 344, 345, 346, 348, 349, 350, 352, 353, 358, 357, 359, 360, 361, 366, 369, 371, 372, 374, 375, 376, 378] + sites.each{|site_id| + objs = bucket.list_objects(:prefix => "#{site_id}/spree_taxon/", :delimiter => '/') + objs.each do |i| + if i.is_a?(Aliyun::OSS::Object) # a object + dirname = File.dirname( i.key) + basename = File.basename( i.key) + id = basename[/^[0-9]+/].to_i + taxon = Spree::Taxon.where( id: id ).first + if taxon + if taxon.icon + new_basename = basename.sub(/^[0-9]+/, taxon.icon.id.to_s) + new_key = "#{dirname}/#{new_basename}" + puts "object: #{i.key}, #{new_key}" + bucket.copy_object( i.key, new_key) + else + puts "error: can not find taxon_icon #{i.key}" + end + else + puts "error: can not find taxon #{i.key}" + end + end + end + } + +end + + +namespace :spree_theme do + desc "fix aliyun oss taxon icon file name + in spree 3.4, taxon.icon become model taxon_icon" + task :fix_oss_taxon_icon => :environment do + fix_oss_taxon_icon + #fix_oss_taxon_icon_sample + end +end diff --git a/spree_theme/lib/tasks/fix_template_theme.rake b/spree_theme/lib/tasks/fix_template_theme.rake new file mode 100644 index 00000000..cc5bbce3 --- /dev/null +++ b/spree_theme/lib/tasks/fix_template_theme.rake @@ -0,0 +1,64 @@ +namespace :spree_theme do + desc "fix user_terminal, now it is required" + task :fix_user_terminal_id => :environment do + themes = Spree::TemplateTheme.all + themes.each{|theme| + next if theme.current_template_release.blank? + if theme.user_terminal.blank? + terminal_enum = 'unknown' + if theme.for_desktop? + terminal_enum = 'desktop' + theme.user_terminal = Spree::UserTerminal.pc.first + elsif theme.for_mobile? + terminal_enum = 'mobile' + theme.user_terminal = Spree::UserTerminal.cellphone.first + end + puts "template theme (#{theme.id})#{theme.title} require user_terminal #{terminal_enum}" + theme.save! + end + } + end + + desc "fix theme copy from id" + task :fix_copy_from_id => :environment do + themes = Spree::TemplateTheme.all + themes.each{|theme| + next if theme.current_template_release.blank? + original = theme.page_layout_root.template_theme + if theme != theme.page_layout_root.template_theme + puts "template theme (#{theme.id})#{theme.title} has original (#{original.id})#{original.title}" + theme.copy_from_id = original.id + theme.save! + end + } + end + + + desc "add page_layouts.image_param, fix content_param" + task :fix_image_param => :environment do + section_id = 17 + page_layouts = Spree::PageLayout.where section_id: section_id + + page_layouts.each{ |pl| + if pl.content_param>1 + # bit 2,3,4 + idx = (pl.get_content_param&14)>>1 + # default is medium + # 000x , 001x, 010x, 011x, 100x + size = [:medium, :large, :product, :small, :original ].fetch( idx, :medium ) + + # bit 9, 10, product-image + # 256 + 512 = 768 + position = (pl.get_content_param&768)>>8 + + puts "page_layout#{pl.id}-#{pl.title}=" +[size,position].inspect + pl.get_parsed_image_param.inspect + + pl.update_attribute :image_param, [size,position].join(',') + + end + } + + end + + +end diff --git a/spree_theme/lib/tasks/multi_site_extension_tasks.rake b/spree_theme/lib/tasks/multi_site_extension_tasks.rake new file mode 100644 index 00000000..9c7be8c7 --- /dev/null +++ b/spree_theme/lib/tasks/multi_site_extension_tasks.rake @@ -0,0 +1,87 @@ +def rename_multi_site_migrations + puts "calling spree_multi_site:install:migrations enhance" + # default migration sequence is spree's migration -> extension's migration + # we need to create site first, or User.find will cause error, so change name to reset order + # + # 1create_site -> + # -> spree_zero_nine_zero -> other_spree_multi_site_migrations + spree_zero_nine_zero_migration = nil + special_migration_regex = /create_sites/ + #add_site_orders| + #add_short_name_and_parent_id_to_site| + #add_has_sample| + #add_site_taxons/ + spree_multi_site_migrations = [] + Dir[File.join(Rails.root,'db','migrate','*.rb')].sort.each{|file| + spree_zero_nine_zero_migration = file if file =~/spree_one_two/ + spree_multi_site_migrations<< file if file=~/spree_multi_site.rb$/ && file =~special_migration_regex #z: load it at last. + #leave this file 'add_site_payment_methods' at the end + } + #puts "--spree_zero_nine_zero_migration=#{spree_zero_nine_zero_migration}" + #puts "--spree_multi_site_migrations=#{spree_multi_site_migrations}" + if spree_zero_nine_zero_migration.present? && spree_multi_site_migrations.present? + spree_zero_file_name = File.basename(spree_zero_nine_zero_migration,'.rb') # spree_zero_nine_zero_migration is full path + migration_start_number = spree_zero_file_name.to_i - spree_multi_site_migrations.size + create_site_migration = spree_multi_site_migrations.shift + create_site_file_name = File.basename(create_site_migration,'.rb') + #puts "spree_zero_file_name=#{spree_zero_file_name}, create_site_file_name=#{create_site_file_name}" + if spree_zero_file_name.to_i < create_site_file_name.to_i #reorder + File.rename(create_site_migration, create_site_migration.sub(/\d+/, migration_start_number.to_s)) + File.rename(spree_zero_nine_zero_migration, spree_zero_nine_zero_migration.sub(/\d+/,(migration_start_number+1).to_s)) + spree_multi_site_migrations.each_index{|i| + migration_file = spree_multi_site_migrations[i] + File.rename(migration_file, migration_file.sub(/\d+/,(migration_start_number+2+i).to_s)) + } + end + end + puts "complete renaming spree_multi_site's migration" + +end + +# task test_app call railties:install:migrations +Rake::Task['railties:install:migrations'].enhance do + #rename_multi_site_migrations +end + +#namespace :spree_multi_site do +# namespace :install do +# namespace :migrations do +# end +# end +#end + +namespace :spree do + namespace :extensions do + namespace :multi_site do + desc "Copies public assets of the Multi Site to the instance public/ directory." + task :update => :environment do + is_svn_git_or_dir = proc {|path| path =~ /\.svn/ || path =~ /\.git/ || File.directory?(path) } + Dir[MultiSiteExtension.root + "/public/**/*"].reject(&is_svn_git_or_dir).each do |file| + path = file.sub(MultiSiteExtension.root, '') + directory = File.dirname(path) + puts "Copying #{path}..." + mkdir_p RAILS_ROOT + directory + cp file, RAILS_ROOT + path + end + end + desc "remove multi_site's migrations first,then install again, useful for modifing some existing migration file!" + task :reinstall_migrations => :environment do + Dir[File.join(Rails.root,'db','migrate','*.rb')].sort.each{|file| + if file=~/spree_multi_site.rb$/ + File.delete(file) + end + } + Rake::Task['spree_multi_site:install:migrations'].invoke + end + #desc "Copies public assets of the Multi Site to the instance public/ directory." + #task :bootstrap_multi_site => :environment do + # Loading in all sample data into database. + #site = Spree::Site.create(:name => "local", :domain => "localhost", :layout => "localhost") + #site.products = Spree::Product.find(:all) + #site.taxonomies = Spree::Taxonomy.find(:all) + #site.orders = Spree::Order.find(:all) + #site.save + #end + end + end +end diff --git a/spree_theme/lib/tasks/spree_theme.rake b/spree_theme/lib/tasks/spree_theme.rake index 7c5deae7..3f12b8ed 100644 --- a/spree_theme/lib/tasks/spree_theme.rake +++ b/spree_theme/lib/tasks/spree_theme.rake @@ -1,113 +1,141 @@ require 'fileutils' namespace :spree_theme do + desc "reset db, load seed, load sample, load theme sample" + task :reload => :environment do + Rake::Task["db:remigrate"].invoke + Rake::Task["db:seed"].invoke + load File.join(SpreeTheme::Engine.root,'db/seeds.rb') + + # spree_sample:load cause strange error + # NoMethodError: undefined method `slug' for # + # Rake::Task["spree_sample:load"].invoke + # load File.join(SpreeTheme::Engine.root,'db/themes/seed.rb') + end + + desc "load sample, load theme sample" + task :load_sample => :environment do + # spree_sample:load cause strange error + # NoMethodError: undefined method `slug' for # + Rake::Task["spree_sample:load"].invoke + load File.join(SpreeTheme::Engine.root,'db/themes/seed.rb') + end + desc "load themes" task :load_themes => :environment do - Rake::Task["spree_sample:load"].invoke + Rake::Task["spree_sample:load"].invoke load File.join(SpreeTheme::Engine.root,'db/themes/seed.rb') end - + desc "reload section_piece.yml" - task :reload_section_piece => :environment do + task :reload_section_piece => :environment do load File.join(SpreeTheme::Engine.root,'db/seeds/00_section_pieces.rb') Spree::TemplateTheme.all.each{|theme| - Rake::Task['spree_theme:release_theme'].invoke(theme.id) - } + Rake::Task['spree_theme:release_theme'].invoke(theme.id) + } end - + desc "export theme. params: :site_id,:theme_id,:format, :seed_path ex. rake spree_theme:export_theme[2,1,json,1]" task :export_theme, [:site_id,:theme_id,:format, :seed_path] => :environment do |t, args| site_id, theme_id, format, seed_path = args.site_id, args.theme_id, args.format, args.seed_path - # current site is required to get template file path + # current site is required to get template file path SpreeTheme.site_class.current = SpreeTheme.site_class.find site_id - - theme = SpreeTheme.site_class.current.template_themes.find( theme_id ) + + theme = SpreeTheme.site_class.current.template_themes.find( theme_id ) serializable_data = theme.serializable_data #add site_id into name is required, later we want to import, just specify site_id is OK. theme_key = "#{theme.site_id}_#{theme.id}_#{Time.now.to_i}" - + if seed_path=='1' file_path = File.join(SpreeTheme::Engine.root,'db','themes','designs', "#{theme_key}.#{format}") else - file_path = File.join(theme.site.document_path, "#{theme_key}.#{format}") + file_path = File.join(theme.store.document_path, "#{theme_key}.#{format}") end - open(file_path,'w') do |file| + open(file_path,'w') do |file| if format == 'json' file.write(serializable_data.to_json) else - file.write(serializable_data.to_yaml) - end - theme_template_file_path = File.expand_path(theme_key, File.dirname(file_path)) + file.write(serializable_data.to_yaml) + end + theme_template_file_path = File.expand_path(theme_key, File.dirname(file_path)) Dir.mkdir theme_template_file_path - serializable_data['template_files'].each{|template_file| - FileUtils.cp template_file.attachment.path, File.expand_path(template_file.attachment_file_name, theme_template_file_path) - } + serializable_data['template_files'].each{|template_file| + FileUtils.cp template_file.attachment.path, File.expand_path(template_file.attachment_file_name, theme_template_file_path) + } end puts "exported file #{file_path}" end - - desc "import theme. params SPREE_REPLACE. - path = spree_theme/db/themes/designs/{site_id}_{theme_id}_{time}.json|yml - default path=shops/rails_env/shop_id/{site_id}_{theme_id}_{time}.json|yml" - task :import_theme , [:site_id,:theme_id,:format, :seed_path] => :environment do |t, args| - site_id, theme_id, format, seed_path = args.site_id, args.theme_id, args.format, args.seed_path - # rake task require class - Spree::ParamValue; Spree::PageLayout; Spree::TemplateFile;Spree::TemplateRelease; - - SpreeTheme.site_class.current = SpreeTheme.site_class.find site_id - - if seed_path=='1' - file_path = File.join(SpreeTheme::Engine.root,'db','themes','designs', "#{SpreeTheme.site_class.current.id}_#{theme_id}*.#{format}") - else - file_path = File.join(SpreeTheme.site_class.current.document_path, "#{SpreeTheme.site_class.current.id}_#{theme_id}*.#{format}") - end - puts "theme_path = #{file_path}" - - file_path = Dir[file_path].sort.last - - if file_path.end_with? 'json' - serialized_data = open( file_path ) do |file| - serialized_data = JSON.load(file) - end - theme_key = File.basename( file_path, ".json" ) - else - serialized_data = open( file_path ) do |file| - serialized_data = YAML::load(file) - end - theme_key = File.basename( file_path, ".yml" ) - end - - if serialized_data.present? - theme = Spree::TemplateTheme.import_into_db(serialized_data, ENV['SPREE_REPLACE'].present?) - theme_template_file_path = File.expand_path(theme_key, File.dirname(file_path)) - - theme.template_files - theme.template_files.each{|template_file| - File.open(File.join(theme_template_file_path, template_file.attachment_file_name) ) do|file| - template_file.attachment = file - template_file.save! - end - } - if theme.template_releases.present? - theme.current_template_release = theme.template_releases.last - theme.save! - end - puts "try to release it..." - #Rake::Task['spree_theme:release_theme'].execute(theme.id) - theme.release({},{:page_only=>true}) - end - puts "imported file #{file_path}, imported theme id is #{theme.id}" - end - +# desc "import theme. params SPREE_REPLACE. +# path = spree_theme/db/themes/designs/{site_id}_{theme_id}_{time}.json|yml +# default path=shops/rails_env/shop_id/{site_id}_{theme_id}_{time}.json|yml" +# task :import_theme , [:site_id,:theme_id,:format, :seed_path] => :environment do |t, args| +# site_id, theme_id, format, seed_path = args.site_id, args.theme_id, args.format, args.seed_path +# # rake task require class +# Spree::ParamValue; Spree::PageLayout; Spree::TemplateFile;Spree::TemplateRelease; +# SpreeTheme.site_class.current = SpreeTheme.site_class.find site_id +# if seed_path=='1' +# file_path = File.join(SpreeTheme::Engine.root,'db','themes','designs', "#{SpreeTheme.site_class.current.id}_#{theme_id}*.#{format}") +# else +# file_path = File.join(SpreeTheme.site_class.current.document_path, "#{SpreeTheme.site_class.current.id}_#{theme_id}*.#{format}") +# end +# puts "theme_path = #{file_path}" +# +# file_path = Dir[file_path].sort.last +# +# if file_path.end_with? 'json' +# serialized_data = open( file_path ) do |file| +# serialized_data = JSON.load(file) +# end +# theme_key = File.basename( file_path, ".json" ) +# else +# serialized_data = open( file_path ) do |file| +# serialized_data = YAML::load(file) +# end +# theme_key = File.basename( file_path, ".yml" ) +# end +# +# if serialized_data.present? +# theme = Spree::TemplateTheme.import_into_db(serialized_data, ENV['SPREE_REPLACE'].present?) +# theme_template_file_path = File.expand_path(theme_key, File.dirname(file_path)) +# theme.template_files +# theme.template_files.each{|template_file| +# File.open(File.join(theme_template_file_path, template_file.attachment_file_name) ) do|file| +# template_file.attachment = file +# template_file.save! +# end +# } +# if theme.template_releases.present? +# theme.current_template_release = theme.template_releases.last +# theme.save! +# end +# puts "try to release it..." +# #Rake::Task['spree_theme:release_theme'].execute(theme.id) +# theme.release({},{:page_only=>true}) +# end +# +# puts "imported file #{file_path}, imported theme id is #{theme.id}" +# end + desc "release theme without new template_release, rake spree_theme:release_theme[1]" task :release_theme, [:theme_id] =>[ :environment ] do |t, args| theme = Spree::TemplateTheme.find( args.theme_id) # current site is required for build css( image url ) - SpreeTheme.site_class.current = theme.site + Spree::Store.current = theme.store theme.release({},{:page_only=>true}) - puts "released #{theme.site.layout}" - end + puts "released theme #{theme.title} - at #{theme.layout_path}" + end + + desc "release theme without new template_release, rake spree_theme:release_theme[1]" + task :release_all_themes =>[ :environment ] do |t, args| + themes = Spree::TemplateTheme.where( copy_from_id: 0 ) + # current site is required for build css( image url ) + themes.each{|theme| + Spree::Store.current = theme.store + theme.release({},{:page_only=>true}) + puts "released theme #{theme.title} - at #{theme.layout_path}" + } + end desc "get css of theme one, rake spree_theme:get_css[1,2,'block']" task :get_css, [:theme_id, :page_layout_id,:section_id, :class_name] =>[ :environment ] do |t, args| @@ -118,61 +146,63 @@ namespace :spree_theme do template.select(args.page_layout_id.to_i, args.section_id.to_i) puts "template #{args.theme_id}, page_layout_id=#{args.page_layout_id}_#{args.section_id}, #{class_name}= #{template.css(class_name)}" end - + desc "test theme" task :test_theme, [:theme_id] =>[ :environment ] do |t, args| - #section_pieces = Spree::SectionPiece.all(:include=>:section_piece_params) + #section_pieces = Spree::SectionPiece.all(:include=>:section_piece_params) #sections = Spree::Section.all(:include=>{:section_params=>:section_piece_params}) - #page_layouts = Spree::PageLayout.all(:include=>{:section_params=>:section_piece_params}) + #page_layouts = Spree::PageLayout.all(:include=>{:section_params=>:section_piece_params}) theme = Spree::TemplateTheme.find args.theme_id incomplete_page_layouts = [] # section_param and param_value match each other. - for page_layout in theme.page_layout.self_and_descendants.includes(:section) + for page_layout in theme.page_layouts.includes(:section) if page_layout.section.present? section_nodes = page_layout.section.self_and_descendants.includes(:section_params) section_params = section_nodes.collect(&:section_params).flatten if page_layout.param_values.where(:theme_id=>theme.id).count!=section_params.count incomplete_page_layouts << page_layout - puts "error:page_layout=#{page_layout.title},#{page_layout.id} param_values and section_params are not match" + puts "error:page_layout=#{page_layout.title},#{page_layout.id} param_values and section_params are not match" puts " page_layout.param_values=#{page_layout.param_values.count}, section_params=#{section_params.count}" - end + end for sp in section_params if page_layout.param_values.select{|pv| pv.section_param_id==sp.id}.blank? incomplete_page_layouts << page_layout - puts " page_layout=#{page_layout.title},#{page_layout.id},section_id=#{sp.section_id}, missing section_param=#{sp.id}" + puts " page_layout=#{page_layout.title},#{page_layout.id},section_id=#{sp.section_id}, missing section_param=#{sp.id}" end - end + end else puts "error:page_layout=#{page_layout.id} has no section" end - end - - if ENV['FIX'].present? + end + + if ENV['SPREE_FIX'].present? incomplete_page_layouts.uniq.each{| pl | pl.replace_with( Spree::Section.find( pl.section_id )) } end - - pvs = theme.param_values.all(:include=>{:section_param=>{:section_piece_param=>:param_category}}) + + pvs = theme.param_values.includes(:section_param=>{:section_piece_param=>:param_category}) for pv in pvs if pv.section_param.blank? - puts "error:pv=#{pv.id} has no section_param" + puts "error:pv=#{pv.id} has no section_param" else if pv.section_param.section_piece_param.blank? - puts "error:pv=#{pv.id} has no section_piece_param" + puts "error:pv=#{pv.id} has no section_piece_param" else if pv.section_param.section_piece_param.param_category.blank? puts "error:pv=#{pv.id},spp=#{pv.section_param.section_piece_param.id} has no param_category" end end - end + end end end + desc "load file from spree_theme/seeds in transaction, ex. load_seed['file_name']" task :load_seed, [:seed_name] => :environment do |t, args| file_path = File.join(SpreeTheme::Engine.root,'db','seeds',args.seed_name) if File.exists? file_path Spree::TemplateTheme.connection.transaction do + include SpreeTheme::SeedHelper load file_path puts "loaded file #{file_path}" end @@ -180,9 +210,41 @@ namespace :spree_theme do puts "can not find file #{file_path}" end end - + + # since template_theme.duplicate has problem which cause ParamValue malfunctional + # we disable template_theme.duplicate, use task instead + desc "copy theme to new. ex. copy_theme[theme_id]" + task :copy_theme, [:theme_id, :store_id] => :environment do |t, args| + theme = Spree::TemplateTheme.find( args.theme_id) + store = Spree::Store.find( args.store_id || theme.store_id ) + Spree::TemplateTheme.connection.transaction do + # required site.current + Spree::Store.current = store + new_theme = theme.duplicate + puts "copied #{theme.id}-#{theme.title} to #{new_theme.id}-#{new_theme.title} " + end + end + def exported_theme_file_name( theme ) "#{theme.site_id}_#{template.id}_#{Time.now.to_i}.yml" - end -end + end + + #ActionView::Template::Error: undefined method `authenticate' for nil:NilClass + desc "generate a html site base on template_theme" + task :generate_html, [:theme_id] => :environment do |t, args| + theme = Spree::TemplateTheme.find( args.theme_id) + # required site.current + #Spree::Store.current = theme.store + #menu = DefaultTaxonRoot.instance('/').children.first + #controller = Spree::TemplateThemesController.new #include + #generator = PageTag::PageGenerator.generator( menu, theme, {resource: nil, controller: controller}) + #generator.context.each_pair{|key,val| + # controller.instance_variable_set( "@#{key}", val) + #} + #controller.instance_variable_set( "@client_info", Spree::UserTerminal.pc.first) + #controller.request = ActionDispatch::Request.new({}) + #controller.render_to_string file: theme.layout_path, layout:false + end + +end diff --git a/spree_theme/script/theme.rb b/spree_theme/script/theme.rb new file mode 100644 index 00000000..6373b5b7 --- /dev/null +++ b/spree_theme/script/theme.rb @@ -0,0 +1,27 @@ +# spree_theme + +# generate key word list by db/seeds/*.yml + +#require '' + +EMBEDDED_PATTERN = /<%(=+|\#)?(.*?)-?%>/m +arr = [] +Dir['./db/seeds/*.yml'].each{|file| + open(file).each_line{|line| + if line=~EMBEDDED_PATTERN + next if $1=='#' + arr << $2.strip + end + } +} + +arr.uniq! + +partial_tags = arr.select{|line| line =~/partial/} +variable_tags = arr.select{|line| line =~/^@/} +else_tags = arr - partial_tags -variable_tags +open('doc/theme_tags.txt','w') do|f| + f.puts( partial_tags.sort.join("\n") ) + f.puts( variable_tags.sort.join("\n") ) + f.puts( else_tags.sort.join("\n") ) +end diff --git a/spree_theme/spec/controllers/admin/template_themes_controller_spec.rb b/spree_theme/spec/controllers/admin/template_themes_controller_spec.rb deleted file mode 100644 index 8d605981..00000000 --- a/spree_theme/spec/controllers/admin/template_themes_controller_spec.rb +++ /dev/null @@ -1,29 +0,0 @@ -require "spec_helper" - -describe Spree::Admin::TemplateThemesController, :type => :controller do - stub_authorization! - - describe "GET #native" do - it "responds successfully with an HTTP 200 status code" do - spree_get :native - expect(response).to be_success - expect(response).to render_template("native") - end - end - - describe "post #apply" do - it "responds successfully with an HTTP 200 status code" do - spree_post :apply, :id=>Spree::TemplateTheme.first - expect(response).to be_success - expect(response).to render_template("native") - end - end - - describe "demo #import theme from design" do - it "responds successfully with an HTTP 200 status code" do - spree_post :import, :id=>Spree::TemplateTheme.first, :assigned_resource_ids=>{}, :template_files=>[] - expect(response).to be_success - expect(response).to render_template("foreign") - end - end -end \ No newline at end of file diff --git a/spree_theme/spec/controllers/spree/admin/products_controller_decorator_spec.rb b/spree_theme/spec/controllers/spree/admin/products_controller_decorator_spec.rb new file mode 100644 index 00000000..03150d5d --- /dev/null +++ b/spree_theme/spec/controllers/spree/admin/products_controller_decorator_spec.rb @@ -0,0 +1,21 @@ +require 'spec_helper' +RSpec.describe Spree::Admin::ProductsController, type: :controller do + stub_authorization! + + let(:user) { create(:user) } + let(:product) { create(:product) } + + before { allow(controller).to receive(:spree_current_user).and_return(user) } + after { Spree::Admin::ProductsController.clear_overrides! } + + context 'related' do + it 'is not routable' do + spree_get :related, id: product.id + expect(response.status).to be(200) + end + + it 'responds to model_class as Spree::Relation' do + expect(controller.send(:model_class)).to eq Spree::Product + end + end +end diff --git a/spree_theme/spec/controllers/spree/admin/relations_controller_spec.rb b/spree_theme/spec/controllers/spree/admin/relations_controller_spec.rb new file mode 100644 index 00000000..60f55abd --- /dev/null +++ b/spree_theme/spec/controllers/spree/admin/relations_controller_spec.rb @@ -0,0 +1,88 @@ +require 'spec_helper' +RSpec.describe Spree::Admin::RelationsController, type: :controller do + stub_authorization! + + let(:user) { create(:user) } + let!(:product) { create(:product) } + let!(:other1) { create(:product) } + + let!(:relation_type) { create(:relation_type) } + let!(:relation) { create(:relation, relatable: product, related_to: other1, relation_type: relation_type, position: 0) } + + before do + user.generate_spree_api_key! + allow(controller).to receive(:spree_current_user).and_return(user) + end + + after { Spree::Admin::ProductsController.clear_overrides! } + + context '.model_class' do + it 'responds to model_class as Spree::Relation' do + expect(controller.send(:model_class)).to eq Spree::Relation + end + end + + describe 'with JS' do + let(:valid_params) do + { + format: :js, + product_id: product.id, + relation: { + related_to_id: other1.id, + relation_type: { + name: relation_type.name, + applies_to: relation_type.applies_to + } + }, + token: user.spree_api_key + } + end + + context '#create' do + it 'is not routable' do + spree_post :create, valid_params + expect(response.status).to be(200) + end + + it 'returns success with valid params' do + skip 'nothing changed, maybe params not so valid?' + expect { + spree_post :create, valid_params + }.to change(Spree::Relation, :count).by(1) + end + + it 'raises error with invalid params' do + expect { + spree_post :create, format: :js + }.to raise_error + end + end + + context '#update' do + it 'redirects to product/related url' do + spree_put :update, product_id: product.id, id: 1, relation: { discount_amount: 2.0 } + expect(response).to redirect_to(spree.admin_product_path(relation.relatable) + '/related') + end + end + + context '#destroy' do + it 'records successfully' do + expect { + spree_delete :destroy, id: 1, product_id: product.id, format: :js + }.to change(Spree::Relation, :count).by(-1) + end + end + + context '#update_positions' do + it 'returns the correct position of the related products' do + other2 = create(:product) + relation2 = create(:relation, relatable: product, related_to: other2, relation_type: relation_type, position: 1) + + expect { + spree_post :update_positions, product_id: product.id, id: relation.id, positions: { relation.id => '1', relation2.id => '0' }, format: :js + relation.reload + }.to change(relation, :position).from(0).to(1) + end + end + end +end diff --git a/spree_theme/spec/controllers/spree/admin/sites_controller_spec.rb b/spree_theme/spec/controllers/spree/admin/sites_controller_spec.rb new file mode 100644 index 00000000..6b9968fc --- /dev/null +++ b/spree_theme/spec/controllers/spree/admin/sites_controller_spec.rb @@ -0,0 +1,11 @@ +require 'spec_helper' + +describe Spree::Admin::SitesController do + + #Delete this example and add some real ones + it "should use Spree::Admin::SitesController" do + + controller.should be_an_instance_of(Spree::Admin::SitesController) + end +#{"utf8"=>"✓", "authenticity_token"=>"Klllros8vRbKw1rGMzq33yHRXJ2ioTyaXV0Uy2YlsUw=", "site"=>{"name"=>"test", "short_name"=>"test", "has_sample"=>"1"}, "user"=>{"email"=>"test@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"创建"} +end diff --git a/spree_theme/spec/controllers/spree/admin/template_files_controller_spec.rb b/spree_theme/spec/controllers/spree/admin/template_files_controller_spec.rb new file mode 100644 index 00000000..81710105 --- /dev/null +++ b/spree_theme/spec/controllers/spree/admin/template_files_controller_spec.rb @@ -0,0 +1,15 @@ +require "spec_helper" + +describe Spree::Admin::TemplateFilesController, :type => :controller do + stub_authorization! + #stub_initialize_template! + + describe "GET #native" do + it "responds successfully with an HTTP 200 status code" do + spree_get :index + expect(response).to be_success + expect(response).to render_template("index") + end + end + +end diff --git a/spree_theme/spec/controllers/spree/admin/template_themes_controller_spec.rb b/spree_theme/spec/controllers/spree/admin/template_themes_controller_spec.rb new file mode 100644 index 00000000..fad8fe62 --- /dev/null +++ b/spree_theme/spec/controllers/spree/admin/template_themes_controller_spec.rb @@ -0,0 +1,38 @@ +require "spec_helper" + +describe Spree::Admin::TemplateThemesController, :type => :controller do + stub_authorization! + #stub_initialize_template! + + let(:template_theme) do + create(:template_theme) + end + + describe "GET #native" do + + context 'with none template themes' do + it "responds successfully with an HTTP 200 status code" do + spree_get :native + expect(response).to be_success + expect(response).to render_template("native") + end + end + end + + context 'apply theme to store' do + before(:each) do + # create(:store, default:true) + # ActiveModel::MissingAttributeError: + # can't write unknown attribute `theme_id` no theme_id create(:store) + create(:themed_store, default:true) + end + + #it "responds successfully with an HTTP 200 status code" do + # puts Spree::Store.current.inspect + # spree_xhr_post :apply, :id=>template_theme.id + # expect(response).to be_success + #end + end + + +end diff --git a/spree_theme/spec/controllers/spree/api/v1/relations_controller_spec.rb b/spree_theme/spec/controllers/spree/api/v1/relations_controller_spec.rb new file mode 100644 index 00000000..d954ff1c --- /dev/null +++ b/spree_theme/spec/controllers/spree/api/v1/relations_controller_spec.rb @@ -0,0 +1,79 @@ +RSpec.describe Spree::Api::V1::RelationsController, type: :controller do + stub_authorization! + render_views + + let(:user) { create(:user) } + let!(:product) { create(:product) } + let!(:other1) { create(:product) } + + let!(:relation_type) { create(:relation_type) } + let!(:relation) { create(:relation, relatable: product, related_to: other1, relation_type: relation_type, position: 0) } + + before do + user.generate_spree_api_key! + allow(controller).to receive(:spree_current_user).and_return(user) + end + + after { Spree::Admin::ProductsController.clear_overrides! } + + context 'model_class' do + it 'responds to model_class as Spree::Relation' do + expect(controller.send(:model_class)).to eq Spree::Relation + end + end + + describe 'with JSON' do + let(:valid_params) do + { + format: :json, + product_id: product.id, + relation: { + related_to_id: other1.id, + relation_type_id: relation_type.id + }, + token: user.spree_api_key + } + end + + context '#create' do + it 'creates the relation' do + spree_post :create, valid_params + expect(response.status).to eq(201) + end + + it 'responds 422 error with invalid params' do + spree_post :create, format: :json, product_id: product.id, token: user.spree_api_key + expect(response.status).to eq(422) + end + end + + context '#update' do + it 'succesfully updates the relation ' do + params = { format: :json, product_id: product.id, id: relation.id, relation: { discount_amount: 2.0 }, token: user.spree_api_key } + expect { + spree_put :update, params + }.to change { relation.reload.discount_amount.to_s }.from('0.0').to('2.0') + end + end + + context '#destroy with' do + it 'records successfully' do + expect { + spree_delete :destroy, id: 1, product_id: product.id, format: :json, token: user.spree_api_key + }.to change(Spree::Relation, :count).by(-1) + end + end + + context '#update_positions' do + it 'returns the correct position of the related products' do + other2 = create(:product) + relation2 = create(:relation, relatable: product, related_to: other2, relation_type: relation_type, position: 1) + + expect { + spree_post :update_positions, product_id: product.id, id: relation.id, positions: { relation.id => '1', relation2.id => '0' }, format: :json, token: user.spree_api_key + relation.reload + }.to change(relation, :position).from(0).to(1) + end + end + end +end diff --git a/spree_theme/spec/controllers/spree/comments_controller_spec.rb b/spree_theme/spec/controllers/spree/comments_controller_spec.rb new file mode 100644 index 00000000..a9e52ff5 --- /dev/null +++ b/spree_theme/spec/controllers/spree/comments_controller_spec.rb @@ -0,0 +1,14 @@ +require "spec_helper" + +describe Spree::CommentsController, :type => :controller do + describe "GET #index" do + stub_initialize_template! + it "create comment" do + comment_params ={ :comment=> {"commentable_id"=>"1", "commentable_type"=>"Spree::Store", "comment"=>"this is my advice", "cellphone"=>"", "email"=>""} } + xhr_post :create,comment_params + expect(response).to be_success + assigns(:comment).should be_persisted + end + + end +end diff --git a/spree_theme/spec/controllers/spree/orders_controller_decorator_spec.rb b/spree_theme/spec/controllers/spree/orders_controller_decorator_spec.rb new file mode 100644 index 00000000..d6f7a01d --- /dev/null +++ b/spree_theme/spec/controllers/spree/orders_controller_decorator_spec.rb @@ -0,0 +1,36 @@ +require 'spec_helper' + +describe Spree::OrdersController, :type => :controller do + let(:user) { create(:user) } + + context "Order model mock" do + let(:order) do + Spree::Order.create + end + + before do + allow(controller).to receive_messages(:try_spree_current_user => user) + end + + #context "#populate" do + # it "should create a new order when none specified upon ajax call" do + # spree_post :populate, :format => :js + # expect(cookies.signed[:guest_token]).not_to be_blank + # expect(Spree::Order.find_by_guest_token(cookies.signed[:guest_token])).to be_persisted + # end + + # context "with Variant" do + # let(:populator) { double('OrderPopulator') } + # before do + # expect(Spree::OrderPopulator).to receive(:new).and_return(populator) + # end + + # it "should handle ajax population" do + # expect(populator).to receive(:populate).with("2", "5", nil).and_return(true) + # spree_post :populate, { :order_id => 1, :variant_id => 2, :quantity => 5 }, { :format => :js } + # expect(response.code).to eq("302") + # end + # end + #end + end +end diff --git a/spree_theme/spec/controllers/spree/sites_controller_spec.rb b/spree_theme/spec/controllers/spree/sites_controller_spec.rb new file mode 100644 index 00000000..5a6a6c2e --- /dev/null +++ b/spree_theme/spec/controllers/spree/sites_controller_spec.rb @@ -0,0 +1,28 @@ +require 'spec_helper' + +describe Spree::SitesController do + #let!(:user) { mock_model(Spree::User, :spree_api_key => 'fake', :last_incomplete_spree_order => nil) } + let!(:role) { create(:admin_role) } + context "with site www.tld" do + before do + Spree::Site.current = create(:site1) + end + #Delete this example and add some real ones + it "should use Spree::SitesController" do + controller.should be_an_instance_of(Spree::SitesController) + end + #{"utf8"=>"✓", "authenticity_token"=>"Klllros8vRbKw1rGMzq33yHRXJ2ioTyaXV0Uy2YlsUw=", "site"=>{"name"=>"test", "short_name"=>"test", "has_sample"=>"1"}, "user"=>{"email"=>"test@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"创建"} + it "should create a site successfully" do + spree_post :create, { "site"=>{"name"=>"test", "short_name"=>"test", "email"=>"test@gmail.com", "password"=>"123456", "password_confirmation"=>"123456"} } + expect(assigns(:site)).to be_kind_of Spree::Site + expect(response).to redirect_to( assigns(:site).admin_url ) + end + + it "should quick lunch a site successfully" do + spree_post :quick_lunch, { "site"=>{"name"=>"test", "short_name"=>"test", "email"=>"test@gmail.com", "password"=>"123456"}} + expect(assigns(:site)).to be_kind_of Spree::Site + expect(response).to redirect_to( assigns(:site).admin_url ) + end + end + +end diff --git a/spree_theme/spec/controllers/spree/template_themes_controller_spec.rb b/spree_theme/spec/controllers/spree/template_themes_controller_spec.rb new file mode 100644 index 00000000..22040ec9 --- /dev/null +++ b/spree_theme/spec/controllers/spree/template_themes_controller_spec.rb @@ -0,0 +1,44 @@ +require "spec_helper" + +describe Spree::TemplateThemesController, :type => :controller do + stub_initialize_template! + context "template editor" do + let(:param_value) { create(:updatable_param_value) } + let(:background_image) { create(:background_image) } + before(:each) { + allow( param_value).to receive(:html_attribute_ids).and_return( [1,2] ) + } + #FIXME test it + it "get upload image dialog" do + + xhr_get :upload_file_dialog,{:id=> param_value.theme_id, :param_value_id=>param_value.id,:html_attribute_id=> background_image.id } + expect(response).to be_success + assigns(:param_value).should eq(param_value) + end + + it "post upload template image" do + file = fixture_file_upload("qinghe.jpg", 'image/jpg') + xhr_post :upload_file_dialog, {:id=> param_value.theme_id, :param_value_id=>param_value.id,:html_attribute_id=> background_image.id, + :template_file => {"attachment"=> file} + } + expect(response).to be_success + end + end + + context "designable store " do + before(:each) { + create(:store, default: true, designable: true) + allow( controller ).to receive(:get_layout_if_use).and_return( false ) + } + let(:template_theme) { create(:template_theme) } + + it "preview " do + spree_get :preview, id: template_theme + expect(response).to be_success + end + end + + it "should not previewable vie nondesignable store" do + end + +end diff --git a/spree_theme/spec/controllers/template_themes_controller_spec.rb b/spree_theme/spec/controllers/template_themes_controller_spec.rb deleted file mode 100644 index 2d8a2326..00000000 --- a/spree_theme/spec/controllers/template_themes_controller_spec.rb +++ /dev/null @@ -1,22 +0,0 @@ -require "spec_helper" - -describe Spree::TemplateThemesController, :type => :controller do - describe "GET #index" do - #FIXME test it - it "get upload image dialog" do - param_value = Spree::ParamValue.first - spree_xhr_get :upload_file_dialog,{:param_value_id=>param_value.id,:html_attribute_id=>param_value.html_attribute_ids.first} - expect(response).to be_success - assigns(:param_value).should eq(param_value) - end - - it "post upload template image" do - file = fixture_file_upload("/favicon.ico", 'image/ico') - xhr :post, :upload_file_dialog,{:param_value_id=>param_value.id,:html_attribute_id=>param_value.html_attribute_ids.first, - :template_file => {"attachment"=> file} - } - expect(response).to be_success - end - - end -end \ No newline at end of file diff --git a/spree_theme/spec/factories/relation_factory.rb b/spree_theme/spec/factories/relation_factory.rb new file mode 100644 index 00000000..04b338cf --- /dev/null +++ b/spree_theme/spec/factories/relation_factory.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do + factory :relation, class: Spree::Relation do + association :relatable, factory: :product + association :related_to, factory: :product + relation_type 'Spree::Product' + end +end diff --git a/spree_theme/spec/factories/relation_type_factory.rb b/spree_theme/spec/factories/relation_type_factory.rb new file mode 100644 index 00000000..a0036c43 --- /dev/null +++ b/spree_theme/spec/factories/relation_type_factory.rb @@ -0,0 +1,6 @@ +FactoryGirl.define do + factory :relation_type, class: Spree::RelationType do + name { generate(:random_string) } + applies_to 'Spree::Product' + end +end diff --git a/spree_theme/spec/features/spree/admin/product_relation_spec.rbx b/spree_theme/spec/features/spree/admin/product_relation_spec.rbx new file mode 100644 index 00000000..c85c21bd --- /dev/null +++ b/spree_theme/spec/features/spree/admin/product_relation_spec.rbx @@ -0,0 +1,80 @@ +RSpec.feature 'Admin Product Relation', :js do + stub_authorization! + + given!(:product) { create(:product) } + given!(:other) { create(:product) } + + given!(:relation_type) { create(:relation_type, name: 'Gears') } + + background do + visit spree.edit_admin_product_path(product) + click_link 'Related Products' + end + + scenario 'create relation' do + expect(page).to have_text 'Add Related Product' + expect(page).to have_text product.name + + within('#add-line-item') do + select2_search other.name, from: 'Name or SKU' + select2_search relation_type.name, from: 'Type' + fill_in 'add_discount', with: '0.8' + click_link 'Add' + end + + wait_for_ajax + + within_row(1) do + expect(page).to have_field('relation_discount_amount', with: '0.8') + expect(column_text(2)).to eq other.name + expect(column_text(3)).to eq relation_type.name + end + end + + context 'with relations' do + given!(:relation) do + create(:relation, relatable: product, related_to: other, relation_type: relation_type, discount_amount: 0.5) + end + + background do + visit spree.edit_admin_product_path(product) + click_link 'Related Products' + end + + scenario 'ensure content exist' do + expect(page).to have_text 'Add Related Product' + expect(page).to have_text product.name + expect(page).to have_text other.name + + within_row(1) do + expect(page).to have_field('relation_discount_amount', with: '0.5') + expect(column_text(2)).to eq other.name + expect(column_text(3)).to eq relation_type.name + end + end + + scenario 'update discount' do + within_row(1) do + fill_in 'relation_discount_amount', with: '0.9' + click_on 'Update' + end + wait_for_ajax + within_row(1) do + expect(page).to have_field('relation_discount_amount', with: '0.9') + end + end + + context 'delete' do + scenario 'can remove records' do + within_row(1) do + expect(column_text(2)).to eq other.name + click_icon :delete + end + page.driver.browser.switch_to.alert.accept unless Capybara.javascript_driver == :poltergeist + wait_for_ajax + expect(page).to have_text 'successfully removed!' + expect(page).not_to have_text other.name + end + end + end +end diff --git a/spree_theme/spec/features/spree/admin/relation_types_spec.rbx b/spree_theme/spec/features/spree/admin/relation_types_spec.rbx new file mode 100644 index 00000000..774c4d50 --- /dev/null +++ b/spree_theme/spec/features/spree/admin/relation_types_spec.rbx @@ -0,0 +1,97 @@ +RSpec.feature 'Admin Relation Types', :js do + stub_authorization! + + background do + visit spree.admin_relation_types_path + end + + scenario 'when no relation types exists' do + expect(page).to have_text 'No Relation Types found, Add One!' + end + + context 'create' do + scenario 'can create a new relation type' do + click_link 'New Relation Type' + expect(current_path).to eq spree.new_admin_relation_type_path + + fill_in 'Name', with: 'Gears' + fill_in 'Applies To', with: 'Spree:Products' + + click_button 'Create' + + expect(page).to have_text 'successfully created!' + expect(current_path).to eq spree.admin_relation_types_path + end + + scenario 'shows validation errors with blank :name' do + click_link 'New Relation Type' + expect(current_path).to eq spree.new_admin_relation_type_path + + fill_in 'Name', with: '' + click_button 'Create' + + expect(page).to have_text 'Name can\'t be blank' + end + + scenario 'shows validation errors with blank :applies_to' do + click_link 'New Relation Type' + expect(current_path).to eq spree.new_admin_relation_type_path + + fill_in 'Name', with: 'Gears' + fill_in 'Applies To', with: '' + click_button 'Create' + + expect(page).to have_text 'Applies to can\'t be blank' + end + end + + context 'with records' do + background do + %w(Gears Equipments).each do |name| + create(:relation_type, name: name) + end + visit spree.admin_relation_types_path + end + + context 'show' do + scenario 'displays existing relation types' do + within_row(1) do + expect(column_text(1)).to eq 'Gears' + expect(column_text(2)).to eq 'Spree::Product' + expect(column_text(3)).to eq '' + end + end + end + + context 'edit' do + background do + within_row(1) { click_icon :edit } + expect(current_path).to eq spree.edit_admin_relation_type_path(1) + end + + scenario 'can update an existing relation type' do + fill_in 'Name', with: 'Gadgets' + click_button 'Update' + expect(page).to have_text 'successfully updated!' + expect(page).to have_text 'Gadgets' + end + + scenario 'shows validation errors with blank :name' do + fill_in 'Name', with: '' + click_button 'Update' + expect(page).to have_text 'Name can\'t be blank' + end + end + + context 'delete' do + scenario 'can remove records' do + within_row(1) do + expect(column_text(1)).to eq 'Gears' + click_icon :delete + end + page.driver.browser.switch_to.alert.accept unless Capybara.javascript_driver == :poltergeist + expect(page).to have_text 'successfully removed!' + end + end + end +end diff --git a/spree_theme/spec/fixtures/qinghe.jpg b/spree_theme/spec/fixtures/qinghe.jpg new file mode 100644 index 00000000..6e647b70 Binary files /dev/null and b/spree_theme/spec/fixtures/qinghe.jpg differ diff --git a/spree_theme/spec/models/default_taxon_spec.rb b/spree_theme/spec/models/default_taxon_spec.rb index ba914d20..83147f9f 100644 --- a/spree_theme/spec/models/default_taxon_spec.rb +++ b/spree_theme/spec/models/default_taxon_spec.rb @@ -7,11 +7,11 @@ taxon_root.should be_a_kind_of DefaultTaxonRoot taxon_root.root.should == taxon_root taxon_root.children.size.should eq 1 - taxon_root.children.each{|node| node.should be_a_kind_of DefaultTaxon } + taxon_root.children.each{|node| node.should be_a_kind_of DefaultTaxon } taxon_root.self_and_descendants.size.should eq 2 taxon_root.taxonomy.should be_a_kind_of DefaultTaxonomy end - + it "has right context" do default_taxon.current_context.should == :list default_taxon.request_fullpath = '/0' @@ -19,17 +19,17 @@ default_taxon.request_fullpath = '/0/1' default_taxon.current_context.should == :detail default_taxon.request_fullpath = '/cart' - default_taxon.current_context.should == :cart - + default_taxon.current_context.should == :cart + taxon = Spree::Taxon.new taxon.request_fullpath.should be_blank taxon.current_context.should == :list end - - + + it "instantiate by context" do - DefaultTaxon::ContextEnum.each{|context| - next if [ DefaultTaxon::ContextEnum.list, DefaultTaxon::ContextEnum.detail, DefaultTaxon::ContextEnum.blog, DefaultTaxon::ContextEnum.post,DefaultTaxon::ContextEnum.thanks, DefaultTaxon::ContextEnum.password].include? context + DefaultTaxon::ContextEnum.each{|context| + next if [ DefaultTaxon::ContextEnum.search, DefaultTaxon::ContextEnum.list, DefaultTaxon::ContextEnum.detail, DefaultTaxon::ContextEnum.blog, DefaultTaxon::ContextEnum.post,DefaultTaxon::ContextEnum.thanks, DefaultTaxon::ContextEnum.password].include? context taxon = DefaultTaxon.instance_by_context( context ) taxon.should be_a_kind_of DefaultTaxon if context == DefaultTaxon::ContextEnum.either @@ -39,21 +39,21 @@ end } end - + it "should has path/context" do default_taxon.path.should be_present default_taxon.current_context.should be_present end - + it "support inherited page context" do taxon_root = default_taxon.root - taxon_root.page_context = 1 + taxon_root.page_context = 1 taxon_root.children.each{ |default_taxon| - default_taxon.root.should eq taxon_root + default_taxon.root.should eq taxon_root default_taxon.current_context.should eq DefaultTaxon::ContextEnum.home } end - + #TODO # test add_section_piece, section_param should be added end diff --git a/spree_theme/spec/models/html_attribute_value_spec.rb b/spree_theme/spec/models/html_attribute_value_spec.rb index 314a8139..35b4253a 100644 --- a/spree_theme/spec/models/html_attribute_value_spec.rb +++ b/spree_theme/spec/models/html_attribute_value_spec.rb @@ -1,27 +1,47 @@ require 'spec_helper' -describe Spree::SectionPiece do - let (:section_piece) { Spree::SectionPiece.first } - - - it "has wrapped contexts" do - section_piece = Spree::SectionPiece.find('logged-and-unlogged-menu') - logged_resource_context, unlogged_resource_context = section_piece.wrapped_resources - logged_resource_context.context.should eq DefaultTaxon::ContextEnum.account - unlogged_resource_context.context.should eq DefaultTaxon::ContextEnum.login +describe Spree::HtmlAttributeValue do + before(:each) do + @html_attribute_width = create(:html_attribute_width) + @param_value = create(:param_value ) end - + + it "should parse param_value" do + hav = Spree::HtmlAttributeValue.parse_from( @param_value, @html_attribute_width) + end + + #it "has wrapped contexts" do + # section_piece = Spree::SectionPiece.friendly.find('logged-and-unlogged-menu') + # logged_resource_context.context.should eq DefaultTaxon::ContextEnum.account + # unlogged_resource_context.context.should eq DefaultTaxon::ContextEnum.login + #end + it "generate right css selector" do - spp = Spree::SectionPieceParam.find_by_class_name 'page' - pv = spp.section_params.first.param_values.first - html_attribute_id, html_attribute_value = pv.html_attribute_values_hash.first - html_attribute_value.css_selector.should eq '#page' - end - it "generate right css selector2" do - spp = Spree::SectionPieceParam.find_by_class_name 'depth1' - pv = spp.section_params.first.param_values.first - css_selector_prefix = ".s_#{pv.page_layout_id}_#{pv.section_param.section_id}" - html_attribute_id, html_attribute_value = pv.html_attribute_values_hash.first - html_attribute_value.css_selector.should eq css_selector_prefix+" .depth1" - end + #generate 'page' => '#page' + #spp = Spree::SectionPieceParam.find_by_class_name 'page' + #pv = spp.section_params.first.param_values.first + #html_attribute_id, html_attribute_value = pv.html_attribute_values_hash.first + #html_attribute_value.css_selector.should eq '#page' + end + context 'test css selector' do + let(:html_attribute_value){ + hav = Spree::HtmlAttributeValue.new + hav.param_value =@param_value + hav.html_attribute = @html_attribute_width + hav + } + before(:each) do + @html_attribute_value = html_attribute_value + end + + it "generate right css selector2" do + allow( @html_attribute_value ).to receive( :attribute_class_name ).and_return('block') + #block + pv = @param_value + + css_selector_prefix = ".s_#{pv.page_layout_id}_#{pv.section_param.section_root_id}" + + @html_attribute_value.css_selector.should eq css_selector_prefix + end + end end diff --git a/spree_theme/spec/models/multi_site_context_spec.rb b/spree_theme/spec/models/multi_site_context_spec.rb new file mode 100644 index 00000000..970533fe --- /dev/null +++ b/spree_theme/spec/models/multi_site_context_spec.rb @@ -0,0 +1,70 @@ +#encoding: utf-8 +require 'spec_helper' +describe Spree::Site do + + let(:site1) { create(:site1) } + let(:site2) { create(:site2) } + + it "should has default site scope " do + Spree::Site.current = site1 + + Spree::MultiSiteSystem.bind + product = Spree::Product.new + expect( product.site ).to eq( Spree::Site.current ) + end + + + #缺省状态为没有 scope,这样便于创建test_app,载入migration + it "should has no default site scope by default " do + Spree::Site.current = site1 + Spree::MultiSiteSystem.unbind + product = Spree::Product.new + expect( product.site ).to be_nil + end + + context 'threads' do + it "should has default site scope " do + puts "\n============================" + puts "should has default site scope " + puts "main thread" + t = Thread.new do + puts "--new thread" + Spree::Site.current = site1 + Spree::MultiSiteSystem.bind + puts "--new thread before sleep" + sleep 0.1 + puts "--new thread after sleep" + product = Spree::Product.new + expect( product.site ).to eq( Spree::Site.current ) + end + sleep 0.1 + puts "main thread before unbind" + Spree::MultiSiteSystem.unbind + puts "main thread before join" + t.join + end + + + it "should has no default site scope " do + puts "\n============================" + puts "should has no default site scope " + puts "main thread" + t = Thread.new do + puts "--new thread" + Spree::Site.current = site2 + Spree::MultiSiteSystem.unbind + puts "--new thread before sleep" + sleep 0.1 + puts "--new thread after sleep" + product = Spree::Product.new + expect( product.site ).to be_nil + end + sleep 0.1 + puts "main thread before bind" + Spree::MultiSiteSystem.bind + puts "main thread before join" + t.join + end + end + +end diff --git a/spree_theme/spec/models/page_generator_spec.rb b/spree_theme/spec/models/page_generator_spec.rb index b8a53cc1..e8078ccc 100644 --- a/spree_theme/spec/models/page_generator_spec.rb +++ b/spree_theme/spec/models/page_generator_spec.rb @@ -1,28 +1,38 @@ require 'spec_helper' describe PageTag::PageGenerator do - let (:page_generator) { - PageTag::PageGenerator.previewer( DefaultTaxon.instance, SpreeTheme.site_class.current.template_theme, :controller=>Spree::TemplateThemesController.new) - } - + before (:each) { + SpreeTheme.site_class.current = create(:fake_site) + @template_theme = create(:previewable_template_theme) + #@page_generator = PageTag::PageGenerator.previewer( DefaultTaxon.instance, @template_theme, :controller=>Spree::TemplateThemesController.new) + } + + context "preview page" do + let(:page_generator) { PageTag::PageGenerator.previewer( DefaultTaxon.instance, @template_theme, :controller=>Spree::TemplateThemesController.new) } + it "release page" do + # FIXME undefined method `site_id' for #["spree_section_pieces.resources like ?",'m%'],:include=>[:sections=>:section_piece]) - menu_section = page_layout.sections.first - theme.unassign_resource( SpreeTheme.taxon_class, page_layout) - theme.assigned_resources( SpreeTheme.taxon_class, page_layout).compact.should be_blank - - page_generator.theme.reload - page_generator.current_page_tag.template_tag.select( page_layout.id, menu_section.id) - menu = page_generator.current_page_tag.template_tag.menu -Rails.logger.debug "theme=#{page_generator.theme.inspect},menu = #{menu.model.inspect}" - menu.should be_kind_of PageTag::Menus::WrappedMenu - menu.model.should be_kind_of DefaultTaxon + theme = @template_theme +# page_layout = theme.page_layouts.find(:first,:conditions=>["spree_section_pieces.resources like ?",'m%'],:include=>[:sections=>:section_piece]) +# menu_section = page_layout.sections.first +# theme.unassign_resource( SpreeTheme.taxon_class, page_layout) +# theme.assigned_resources( SpreeTheme.taxon_class, page_layout).compact.should be_blank + +# page_generator.theme.reload +# page_generator.current_page_tag.template_tag.select( page_layout.id, menu_section.id) +# menu = page_generator.current_page_tag.template_tag.menu +# menu.should be_kind_of PageTag::Menus::WrappedMenu +# menu.model.should be_kind_of DefaultTaxon end - + it "taxon should get resources" do - - - + + + end - -end \ No newline at end of file + +end diff --git a/spree_theme/spec/models/page_layout_context_spec.rb b/spree_theme/spec/models/page_layout_context_spec.rb new file mode 100644 index 00000000..c5d1f17b --- /dev/null +++ b/spree_theme/spec/models/page_layout_context_spec.rb @@ -0,0 +1,47 @@ +require 'spec_helper' +describe Spree::PageLayout do + let (:page_layout) { create(:page_layout) } + let (:context_detail) { Spree::PageLayout::ContextEnum.detail } + let (:context_list) { Spree::PageLayout::ContextEnum.list } + let (:context_cart) { Spree::PageLayout::ContextEnum.cart } + let (:context_either) { Spree::PageLayout::ContextEnum.either } + let (:context_thanks) { Spree::PageLayout::ContextEnum.thanks } + + context 'with context product list and detail' do + before(:each) do + @page_layout = create(:page_layout, section_context: "#{context_list},#{context_detail}" ) + end + + it 'should has list and detail context' do + @page_layout.current_contexts.should eq ([context_list,context_detail]) + end + + it "valid section context" do + @page_layout.valid_context?(context_detail).should be_truthy + @page_layout.context_detail?.should be_truthy + @page_layout.context_list?.should be_truthy + end + + context 'with one child' do + it "should inherit context" do + + end + end + end + + it "could update context" do + new_contexts = [context_cart] + page_layout.update_section_context new_contexts + page_layout.current_contexts.should eq(new_contexts) + end + + it "could verify contexts" do + Spree::PageLayout.verify_contexts( context_cart, [context_cart, context_thanks ] ).should be_truthy + + Spree::PageLayout.verify_contexts( [context_cart], [context_cart, context_thanks ] ).should be_truthy + + Spree::PageLayout.verify_contexts( context_either, [context_cart, context_thanks ] ).should be_truthy + end + + +end diff --git a/spree_theme/spec/models/page_layout_spec.rb b/spree_theme/spec/models/page_layout_spec.rb index 0b279cf6..c6c6c4e4 100644 --- a/spree_theme/spec/models/page_layout_spec.rb +++ b/spree_theme/spec/models/page_layout_spec.rb @@ -1,109 +1,71 @@ require 'spec_helper' describe Spree::PageLayout do - let (:page_layout) { Spree::PageLayout.first } - + let (:page_layout) { create(:page_layout) } + let (:page_layout_tree) { create(:page_layout_tree) } + # root + # node1 + # node2 - pv(1) + # node21 - pv(2) + # node22 - pv(2) + before(:each){ + @node_has_children = page_layout_tree.children.last + # @page_layout_tree = create(:page_layout_tree) + } + it "build html css js" do - html, css = page_layout.build_content - html.present?.should be_true - css.present?.should be_true + html, css = page_layout_tree.build_content + html.present?.should be_truthy end - it "has page script" do - html, css, js = page_layout.build_content - html.should match(/proc_page=/) + it "destory a node with children" do + @node_has_children.children.should be_present + expect{ @node_has_children.destroy }.to change{Spree::PageLayout.count}.by( -3 ) end - - it "has partial html" do - page_layout.partial_html.should be_kind_of Spree::HtmlPage::PartialHtml + + it "destory a node with children" do + expect{ @node_has_children.destroy }.to change{Spree::ParamValue.count}.by( -5 ) end - - it "create new page_layout tree" do + + #it "has partial html" do + # page_layout.partial_html.should be_kind_of Spree::HtmlPage::PartialHtml + #end + + #it "create new page_layout tree" do # objects = Spree::Section.roots # section_hash= objects.inject({}){|h,sp| h[sp.slug] = sp; h} - # center area + # center area # center_area = Spree::PageLayout.create_layout(section_hash['center_area'], "center_area") # center_area.add_section(section_hash['center_part'],:title=>"center_part") # center_area.add_section(section_hash['left_part'],:title=>"left_part") # center_area.add_section(section_hash['right_part'],:title=>"right_part") - # center_area.children.count.should eq(3) + # center_area.children.count.should eq(3) # center_area.param_values.count.should eq(0) - - end - - it "valid section context" do - - product_detail = Spree::PageLayout.find_by_section_context( Spree::PageLayout::ContextEnum.detail) - product_detail.context_detail?.should be_true - product_list = Spree::PageLayout.find_by_section_context( Spree::PageLayout::ContextEnum.list) - product_list.context_list?.should be_true - end + #end - it "could update context" do - list_section = Spree::PageLayout.find_by_section_context('list') - detail_section = Spree::PageLayout.find_by_section_context('detail') - #contexts = [Spree::PageLayout::ContextEnum.account, Spree::PageLayout::ContextEnum.thanks,Spree::PageLayout::ContextEnum.cart, Spree::PageLayout::ContextEnum.checkout] - contexts = [Spree::PageLayout::ContextEnum.list, Spree::PageLayout::ContextEnum.detail] - page_layout.update_section_context contexts - - for node in page_layout.self_and_descendants - if node.is_or_is_descendant_of? list_section - node.current_contexts.should eq(list_section.current_contexts) - elsif node.is_or_is_descendant_of? detail_section - node.current_contexts.should eq(detail_section.current_contexts) - else - node.current_contexts.should eq(contexts) - end - end - end + #it "could replace section" do + # original_page_layout = page_layout.dup + # root2 = Spree::Section.find('root2') + # page_layout.replace_with(root2) + # original_page_layout.param_values.empty?.should be_truthy + # page_layout.section.should eq root2 + # page_layout.param_values.present?.should be_truthy + #end - it "could verify contexts" do - Spree::PageLayout.verify_contexts( Spree::PageLayout::ContextEnum.cart, [:cart, :checkout, :thankyou ] ).should be_true - - Spree::PageLayout.verify_contexts( [Spree::PageLayout::ContextEnum.cart], [:cart, :checkout, :thankyou ] ).should be_true + #it "has many sections" do + # page_layout.respond_to?(:sections).should be_truthy + #end - Spree::PageLayout.verify_contexts( Spree::PageLayout::ContextEnum.either, [:cart, :checkout, :thankyou ] ).should be_false - end - - it "could replace section" do - original_page_layout = page_layout.dup - root2 = Spree::Section.find('root2') - page_layout.replace_with(root2) - original_page_layout.param_values.empty?.should be_true - page_layout.section.should eq root2 - page_layout.param_values.present?.should be_true - - end - - it "has many sections" do - sections = page_layout.sections - sections.should be_present - - for section in sections - section.root_id.should == page_layout.section_id - end - end - - it "should update datasource" do - data_source_gpvs = Spree::PageLayout::ContextDataSourceMap[Spree::PageLayout::ContextEnum.list].first - product_list = Spree::PageLayout.find_by_section_context( Spree::PageLayout::ContextEnum.list) - product_list.update_data_source( Spree::PageLayout::DataSourceEmpty) - product_list.data_source.should be_blank - product_list.update_data_source( data_source_gpvs ) - product_list.current_data_source.should eq data_source_gpvs - end - - it "should get available data sources" do - - end - - it "should copy page_layout to new" do - nodes = Spree::PageLayout.root.self_and_descendants - new_nodes = Spree::PageLayout.copy_to_new(nodes) - new_nodes.size.should eq nodes.size - (new_nodes&nodes).should be_blank - new_nodes.each_with_index{|new_node, index| - new_node.title.should eq nodes[index].title - } - end -end \ No newline at end of file + #it "should update datasource" do + #data_source_gpvs = Spree::PageLayout::ContextDataSourceMap[Spree::PageLayout::ContextEnum.list].first + #product_list = Spree::PageLayout.find_by_section_context( Spree::PageLayout::ContextEnum.list) + #product_list.update_data_source( Spree::PageLayout::DataSourceNone) + #product_list.data_source.should be_blank + #product_list.update_data_source( data_source_gpvs ) + #product_list.current_data_source.should eq data_source_gpvs + #end + + #it "should get available data sources" do + #end + +end diff --git a/spree_theme/spec/models/param_value_spec.rb b/spree_theme/spec/models/param_value_spec.rb index 79e5df67..ab41f484 100644 --- a/spree_theme/spec/models/param_value_spec.rb +++ b/spree_theme/spec/models/param_value_spec.rb @@ -1,59 +1,58 @@ require 'spec_helper' describe Spree::ParamValue do - it "partial_html" do - Spree::ParamValue.first.partial_html + let (:param_value) { create(:param_value) } + + it "should have partial_html" do + # Spree::ParamValue.first.partial_html end - - it "find within_section&within_editor" do - param_value = Spree::ParamValue.first - editor = Spree::Editor.first - param_values = Spree::ParamValue.within_section( param_value ).within_editor( editor ) - + + it "find within_section " do + param_values = Spree::ParamValue.within_section( param_value ) for pv in param_values - pv.theme_id.should eq( param_value.theme_id) + pv.theme_id.should eq( param_value.theme_id) pv.page_layout_id.should eq( param_value.page_layout_id) - pv.section_param.section_piece_param.editor_id.should eq(editor.id) end - end - - - it "should trigger pv_change" do - html_attribute_height = Spree::HtmlAttribute.find('height') - container = Spree::Section.find('container').page_layouts.first - param_value = container.partial_html.html_attribute_values('block_width').param_value - param_value.should be_present - html_attribute_value_params = {"psvalue0"=>"l1", "pvalue0"=>"800", "unit0"=>"px"} - is_updated, new_html_attribute_value, original_html_attribute_value = param_value.update_html_attribute_value(html_attribute_height, html_attribute_value_params, Spree::ParamValue::EventEnum[:pv_changed] ) - is_updated.should be_true - param_value.updated_html_attribute_values.should be_present + + context 'trigger param value event' do + + # it "should trigger pv_change" do + # html_attribute_height = Spree::HtmlAttribute.find(21) + # container = section.page_layouts.first + # param_value = container.partial_html.html_attribute_values('block_width').param_value + # param_value.should be_present + # html_attribute_value_params = {"psvalue0"=>"l1", "pvalue0"=>"800", "unit0"=>"px"} + # + # is_updated, new_html_attribute_value, original_html_attribute_value = param_value.update_html_attribute_value(html_attribute_height, html_attribute_value_params, Spree::ParamValue::EventEnum[:pv_changed] ) + # is_updated.should be_truthy + # param_value.updated_html_attribute_values.should be_present + # end + + # it "height should trigger pv_change" do + # html_attribute_height = Spree::HtmlAttribute.find(15) + # html_attribute_margin = Spree::HtmlAttribute.find(31) + # container = section.page_layouts.first + # # set margin + # param_value_margin = container.partial_html.html_attribute_values('inner_margin').param_value + # html_attribute_value_params = {"psvalue0"=>"l1", "pvalue0"=>"10", "unit0"=>"px", "psvalue1"=>"l1", "pvalue1"=>"0", "unit1"=>"px", "psvalue2"=>"l1", "pvalue2"=>"0", "unit2"=>"px", "psvalue3"=>"l1", "pvalue3"=>"0", "unit3"=>"px"} + # is_updated, new_html_attribute_value, original_html_attribute_value = param_value_margin.update_html_attribute_value(html_attribute_margin, html_attribute_value_params, Spree::ParamValue::EventEnum[:pv_changed] ) + # is_updated.should be_truthy + # new_html_attribute_value.pvalue.should eq 10 + # #set height, inner height should be set. + # html_attribute_value_params = {"psvalue0"=>"l1", "pvalue0"=>"800", "unit0"=>"px"} + # param_value = container.partial_html.html_attribute_values('block_height').param_value + # is_updated, new_html_attribute_value, original_html_attribute_value = param_value.update_html_attribute_value(html_attribute_height, html_attribute_value_params, Spree::ParamValue::EventEnum[:pv_changed] ) + # is_updated.should be_truthy + # param_value.updated_html_attribute_values.should be_present + # inner_height = param_value_margin.reload.html_attribute_value( html_attribute_height) + # inner_height.pvalue.should eq 790 + # #unset height, inner height should be 0 + # html_attribute_value_params = {"psvalue0"=>"l1", "pvalue0"=>"800", "unit0"=>"px", "unset"=>"1"} + # is_updated, new_html_attribute_value, original_html_attribute_value = param_value.update_html_attribute_value(html_attribute_height, html_attribute_value_params, Spree::ParamValue::EventEnum[:pv_changed] ) + # is_updated.should be_truthy + # inner_height = param_value_margin.reload.html_attribute_value( html_attribute_height) + # inner_height.pvalue.should eq 0 + # end + end - - it "height should trigger pv_change" do - html_attribute_height = Spree::HtmlAttribute.find('height') - html_attribute_margin = Spree::HtmlAttribute.find('margin') - container = Spree::Section.find('container').page_layouts.first - # set margin - param_value_margin = container.partial_html.html_attribute_values('inner_margin').param_value - html_attribute_value_params = {"psvalue0"=>"l1", "pvalue0"=>"10", "unit0"=>"px", "psvalue1"=>"l1", "pvalue1"=>"0", "unit1"=>"px", "psvalue2"=>"l1", "pvalue2"=>"0", "unit2"=>"px", "psvalue3"=>"l1", "pvalue3"=>"0", "unit3"=>"px"} - is_updated, new_html_attribute_value, original_html_attribute_value = param_value_margin.update_html_attribute_value(html_attribute_margin, html_attribute_value_params, Spree::ParamValue::EventEnum[:pv_changed] ) - is_updated.should be_true - new_html_attribute_value.pvalue.should eq 10 - #set height, inner height should be set. - html_attribute_value_params = {"psvalue0"=>"l1", "pvalue0"=>"800", "unit0"=>"px"} - param_value = container.partial_html.html_attribute_values('block_height').param_value - is_updated, new_html_attribute_value, original_html_attribute_value = param_value.update_html_attribute_value(html_attribute_height, html_attribute_value_params, Spree::ParamValue::EventEnum[:pv_changed] ) - is_updated.should be_true - param_value.updated_html_attribute_values.should be_present - inner_height = param_value_margin.reload.html_attribute_value( html_attribute_height) - inner_height.pvalue.should eq 790 - #unset height, inner height should be 0 - html_attribute_value_params = {"psvalue0"=>"l1", "pvalue0"=>"800", "unit0"=>"px", "unset"=>"1"} - is_updated, new_html_attribute_value, original_html_attribute_value = param_value.update_html_attribute_value(html_attribute_height, html_attribute_value_params, Spree::ParamValue::EventEnum[:pv_changed] ) - is_updated.should be_true - inner_height = param_value_margin.reload.html_attribute_value( html_attribute_height) - inner_height.pvalue.should eq 0 - - end - -end \ No newline at end of file +end diff --git a/spree_theme/spec/models/section_param_spec.rb b/spree_theme/spec/models/section_param_spec.rb index aa9893ea..a92fb90f 100644 --- a/spree_theme/spec/models/section_param_spec.rb +++ b/spree_theme/spec/models/section_param_spec.rb @@ -1,27 +1,31 @@ require 'spec_helper' describe Spree::SectionParam do - let (:section_param) { Spree::SectionParam.first } - + let (:param_value) { create( :param_value )} + before(:each) do + @section_param = param_value.section_param + end + it "has right association" do - section_param.param_values.should be_a_kind_of Array + @section_param.respond_to?(:param_values).should be_truthy end - + it "should add and remove defalut value" do - html_attribute = section_param.section_piece_param.html_attributes.first + section_param = @section_param + html_attribute_id = '20120930' #new id default_value = 'width:0px' - section_param.add_default_value(html_attribute.id, default_value) + section_param.add_default_value(html_attribute_id, default_value) section_param.reload for pv in section_param.param_values - pv.pvalue[html_attribute.id].should eq default_value + pv.pvalue[html_attribute_id].should eq default_value end - section_param.remove_default_value(html_attribute.id) + section_param.remove_default_value(html_attribute_id) section_param.reload for pv in section_param.param_values - pv.pvalue[html_attribute.id].should be_nil + pv.pvalue[html_attribute_id].should be_nil end - + end - + #TODO # test add_section_piece, section_param should be added end diff --git a/spree_theme/spec/models/section_piece_param_spec.rb b/spree_theme/spec/models/section_piece_param_spec.rb index ffc35846..7e9a094d 100644 --- a/spree_theme/spec/models/section_piece_param_spec.rb +++ b/spree_theme/spec/models/section_piece_param_spec.rb @@ -1,55 +1,46 @@ #page_layout.templates require 'spec_helper' describe Spree::SectionPieceParam do - let (:section_piece_param) { Spree::SectionPieceParam.first } - + + before( :each ) do + @section_piece_param = create( :section_piece_param ) + end + it "create section piece param" do - original_param_value_count = Spree::ParamValue.count() - editor = Spree::Editor.first - section_piece = Spree::SectionPiece.find_by_title('container') - param_category = Spree::ParamCategory.first + editor = @section_piece_param.editor + section_piece = @section_piece_param.section_piece + param_category = @section_piece_param.param_category attrs = { "editor"=>editor, "section_piece"=>section_piece, "param_category"=>param_category, "class_name"=>"new_name", "pclass"=>"css", "html_attribute_ids"=>"2,3,4,5"} spp = Spree::SectionPieceParam.new( attrs ) - spp.save.should be_true - sections = spp.section_piece.sections.includes(:section_params) - section_params = sections.collect{|section| section.section_params.select{|sp| sp.section_piece_param == spp} }.flatten - sections.size.should == section_params.size - - #each section_root has how much section_piece. - root_and_count_hash = sections.inject({}){|hash, section| hash[section.root_id]||=0; hash[section.root_id]+=1; hash} - #how much page_layout using section_root. - page_layouts = Spree::PageLayout.all(:conditions=>["section_id in (?)",root_and_count_hash.keys],:include=>:themes) - - count = page_layouts.inject(0){|sum, page_layout| - sum+= page_layout.themes.size*root_and_count_hash[page_layout.section_id] - } - new_param_value_count = Spree::ParamValue.count() -Rails.logger.debug "new_param_value_count=#{new_param_value_count},original_param_value_count=#{original_param_value_count}" - new_param_value_count.should ==(original_param_value_count+count) + spp.save.should be_truthy + #sections = spp.section_piece.sections.includes(:section_params) + #section_params = sections.collect{|section| section.section_params.select{|sp| sp.section_piece_param == spp} }.flatten + #sections.size.should == section_params.size end - + it 'has many section_params' do - section_piece_param.section_params.should be_kind_of Array + @section_piece_param.section_params end - + it 'destroy section_params and param_values together' do - section_params = section_piece_param.section_params - section_piece_param.destroy - Spree::SectionParam.where(:section_piece_param_id=>section_piece_param.id).should be_blank - for section_param in section_params + section_params = @section_piece_param.section_params + @section_piece_param.destroy + Spree::SectionParam.where(:section_piece_param_id=> @section_piece_param.id).should be_blank + for section_param in section_params Spree::ParamValue.where(:section_param_id=>section_param.id).should be_blank end - + + end + + context " new html attribute height" do + before(:each) do + @html_attribute_height = create( :html_attribute_height ) + end + it "insert html_attribute" do + spp = @section_piece_param + spp.insert_html_attribute( @html_attribute_height ) + #spp.insert_html_attribute( @html_attribute_height).should raise_error + + end end - - - it "insert html_attribute" do - padding = Spree::HtmlAttribute.find 32 - margin = Spree::HtmlAttribute.find 31 - spp = Spree::SectionPieceParam.where(:editor_id=>2, :class_name=>'content_layout').first - spp.insert_html_attribute( padding) - spp.insert_html_attribute( padding).should raise_error - spp.insert_html_attribute( padding, margin).should raise_error - - end -end \ No newline at end of file +end diff --git a/spree_theme/spec/models/section_piece_spec.rb b/spree_theme/spec/models/section_piece_spec.rb index 336fa839..5f1d7112 100644 --- a/spree_theme/spec/models/section_piece_spec.rb +++ b/spree_theme/spec/models/section_piece_spec.rb @@ -1,11 +1,35 @@ require 'spec_helper' -describe Spree::HtmlAttributeValue do - let (:html_attribute_value) { Spree::ParamValue.first.html_attribute_values_hash.values.first } - - it "generate correct css_selector" do - param_value = SectionPieceParam.find_by_class_name('s_table').section_params.first.param_values.first - param_value.html_attribute_values_hash.values.first.css_selector.should eq ".s_#{self.param_value.page_layout_id}_#{self.param_value.section_param.section_root_id} table" +describe Spree::SectionPiece do + let( :section_piece_param ) { create(:section_piece_param) } + let!( :section_piece ) { create(:section_piece, :section_piece_params =>[ section_piece_param ] ) } + + let( :attrs) { {"editor"=>section_piece_param.editor, "class_name"=>"s_a", "pclass"=>"css", "param_category"=>section_piece_param.param_category, "html_attribute_ids"=>"7,8,6"} } + let( :create_section_piece_param ){ section_piece.section_piece_params.create!( attrs ) } + + it 'add section piece param' do + expect{ create_section_piece_param }.to change{ Spree::SectionPieceParam.count}.by(1) + end + + describe "add section piece param into section_piece of section " do + before(:each) do + @section = create(:section, :section_piece => section_piece) + end + + it "add section param as well" do + expect{ create_section_piece_param }.to change{ Spree::SectionParam.count}.by(1) + end end - + + describe "add section piece param into section_piece of page_layout" do + before(:each) do + @section = create(:section, :section_piece => section_piece) + @page_layout = create(:page_layout, :section => @section) + end + + it "add section param as well" do + expect{ create_section_piece_param }.to change{ Spree::ParamValue.count}.by(1) + end + end + end diff --git a/spree_theme/spec/models/section_spec.rb b/spree_theme/spec/models/section_spec.rb index 4fa7f676..fb3262b0 100644 --- a/spree_theme/spec/models/section_spec.rb +++ b/spree_theme/spec/models/section_spec.rb @@ -1,55 +1,62 @@ require 'spec_helper' describe Spree::Section do - let (:section) { Spree::Section.first } - - it "has right section params" do - Spree::Section.roots.each{|hmenu| - section_piece_params = hmenu.self_and_descendants.collect{|section| section.section_piece.section_piece_params}.flatten - section_params = hmenu.self_and_descendants.collect{|section| section.section_params}.flatten - section_params.size.should ==section_piece_params.size - } - - section_params = Spree::SectionParam.includes(:section_piece_param).all - for sp in section_params - (sp.default_value.keys-sp.section_piece_param.param_keys).should be_blank - (sp.html_attributes(:disabled) - sp.section_piece_param.html_attributes).should be_blank - end - - end - + let (:section) { create(:section) } + + #it "has right section params" do + # Spree::Section.roots.each{|hmenu| + # section_piece_params = hmenu.self_and_descendants.collect{|section| section.section_piece.section_piece_params}.flatten + # section_params = hmenu.self_and_descendants.collect{|section| section.section_params}.flatten + # section_params.size.should ==section_piece_params.size + # } + # section_params = Spree::SectionParam.includes(:section_piece_param).all + # for sp in section_params + # (sp.default_value.keys-sp.section_piece_param.param_keys).should be_blank + # (sp.html_attributes(:disabled) - sp.section_piece_param.html_attributes).should be_blank + # end + #end + it "destroy a section" do - section.section_params.size.should be > 0 + section.section_params.create! + section_id = section.id section.destroy + Spree::SectionParam.exists?(section_id: section_id).should be_falsey end - it "a section has page_layouts" do - section.page_layouts.build.should be_present + it "has many page_layouts" do + section.respond_to?( :page_layouts).should be_truthy + end - - it "build cart section html" do - cart = Spree::Section.find_by_title('cart') - html = cart.build_html - html.should =~/yield/ + + context "build html,css,js" do + let (:section) { create(:section_with_children).reload } + + it "build html" do +Rails.logger.debug " .........start section = #{section.inspect} #{section.children.inspect} " + html = section.build_html + html.should eq "
                  this is a section piece
                  " + +Rails.logger.debug " .........end build html....." + end end - - # test add_section_piece, section_param should be added - it "build section with default param value" do - bool_false = Spree::HtmlAttribute::BOOL_FALSE - bool_true = Spree::HtmlAttribute::BOOL_TRUE - section_piece_hash= Spree::SectionPiece.all.inject({}){|h,sp| h[sp.slug] = sp; h} - - #container-title - Spree::Section.where(:title=>'container with title').each(&:destroy) - container = Spree::Section.create_section(section_piece_hash['container'].id, {:title=>"container with title"}, - {'block'=>{15=>"height:100px",'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) - container.add_section_piece(section_piece_hash['container-title'].id) - section_params = Spree::SectionParam.where(:section_root_id=>container.id).includes(:section_piece_param) - - for sp in section_params - (sp.default_value.keys-sp.section_piece_param.param_keys).should be_blank - - (sp.html_attributes(:disabled) - sp.section_piece_param.html_attributes).should be_blank + + context "create section" do + let( :bool_false) { Spree::HtmlAttribute::BOOL_FALSE } + let( :bool_true) { Spree::HtmlAttribute::BOOL_TRUE } + before(:each){ + @section_piece_container = create(:section_piece_container) + } + # test add_section_piece, section_param should be added + it "build section with default param value" do + + container = Spree::Section.create_section( @section_piece_container, {:title=>"container with title"}, + {'block'=>{15=>"height:100px",'disabled_ha_ids'=>'111'}, 'inner'=>{'15hidden'=>bool_true}}) + container.add_section_piece(@section_piece_container) + + #section_params = Spree::SectionParam.where(:section_root_id=>container.id).includes(:section_piece_param) + #for sp in section_params + # (sp.default_value.keys-sp.section_piece_param.param_keys).should be_blank + # (sp.html_attributes(:disabled) - sp.section_piece_param.html_attributes).should be_blank + #end end - end end diff --git a/spree_theme/spec/models/site_spec.rb b/spree_theme/spec/models/site_spec.rb new file mode 100644 index 00000000..7b915bc4 --- /dev/null +++ b/spree_theme/spec/models/site_spec.rb @@ -0,0 +1,77 @@ +#encoding: utf-8 +require 'spec_helper' +describe Spree::Site do + before(:each) do + create(:admin_role) + @site = Spree::Site.new(:name=>'ABCD',:domain=>'www.abc.net', :email=>'test@example.com', :password=>'123456') + end + + it "should be valid with blank domain" do + @site.domain = nil + @site.should be_valid + end + + it "named 'ABC' should not be valid" do + @site.name = 'ABC' + @site.short_name = nil + @site.valid?.should be_falsy + end + + it "generate 'da-lian-and-bai-jiu' from name '大连&白酒!'" do + @site.name = '大连&白酒!' + @site.short_name = nil + @site.valid?.should be_truthy + @site.short_name.should eq "da-lian-and-bai-jiu" + @site.save.should be_truthy + end + + it "should create site with store, user and shipping_category" do + #user_attributes = {"email"=>"test@abc.com", "password"=>"a12345z", "password_confirmation"=>"a12345z"} + #@site.users<< Spree::User.new(user_attributes) + @site.save! + @site.should be_persisted + Spree::Site.current = @site + @site.users.should be_present + @site.stores.should be_present + end + + # raise error ./app/models/spree/site.rb:56:in `current' + #it "should create site and admin user" do + # site_params = { "name"=>"test", "short_name"=>"test", + # "users_attributes"=>{"0"=>{"email"=>"test@example.com", "password"=>"123456", "password_confirmation"=>"123456"}} + # } + # site = Spree::Site.new(site_params) + # site.save + # site.should_not be_new_record + #end + + #it "shold load samples" do + # @site.save! + # @site.load_sample + # @site.shipping_categories.should be_present + # @site.users.first.should be_persisted + # @site.users.first.should be_admin + #end + + it "shold remove samples" do + @site.save! + @site.unload_sample + Spree::Site.current = @site + Spree::Product.count.should eq(0) + Spree::Zone.count.should eq(0) + Spree::StateChange.count.should eq(0) + #product variants + #taxonomy, taxon + #zone,zone_member + #state_changes + end + + it "shold create two site and load samples for them" do + #@site1 = Spree::Site.create!(:name=>'Site1',:domain=>'www.site1.net',:short_name=>'site1', :email=>'site1@example.com', :password=>'123456') + #@site2 = Spree::Site.create!(:name=>'Site1',:domain=>'www.site2.net',:short_name=>'site2', :email=>'site2@example.com', :password=>'123456') + #@site1.load_sample + #@site2.load_sample + #product image copied and in right folder. + end + +end diff --git a/spree_theme/spec/models/spree/calculator/related_product_discount_spec.rb b/spree_theme/spec/models/spree/calculator/related_product_discount_spec.rb new file mode 100644 index 00000000..72935e0f --- /dev/null +++ b/spree_theme/spec/models/spree/calculator/related_product_discount_spec.rb @@ -0,0 +1,48 @@ +RSpec.describe Spree::Calculator::RelatedProductDiscount, type: :model do + subject { described_class.new } + + context '.description' do + it 'outputs relation product discount' do + expect(subject.description).to eq Spree.t(:related_product_discount) + end + end + + describe '.compute(object)' do + it 'returns nil with empty Array' do + expect(subject.compute([])).to be_nil + end + + it 'returns nil unless order is eligible' do + empty_order = double('Spree::Order') + allow(empty_order).to receive(:line_items).and_return([]) + expect(subject.compute(empty_order)).to be_nil + end + + context 'with order' do + before do + @order = double('Spree::Order') + product = build(:product) + variant = double('Spree::Variant', product: product) + price = double('Spree::Price', variant: variant, amount: 5.00) + line_item = double('Spree::LineItem', variant: variant, order: @order, quantity: 1, price: 4.99) + + allow(variant).to receive(:default_price).and_return(price) + allow(@order).to receive(:line_items).and_return([line_item]) + + related_product = create(:product) + relation_type = create(:relation_type) + + create(:relation, relatable: product, related_to: related_product, relation_type: relation_type, discount_amount: 1.0) + end + + it 'returns total count of Array' do + objects = Array.new { @order } + expect(subject.compute(objects)).to be_nil + end + + it 'returns total count' do + expect(subject.compute(@order)).to be_zero + end + end + end +end diff --git a/spree_theme/spec/models/spree/product_spec.rb b/spree_theme/spec/models/spree/product_spec.rb new file mode 100644 index 00000000..6be10c41 --- /dev/null +++ b/spree_theme/spec/models/spree/product_spec.rb @@ -0,0 +1,129 @@ +RSpec.describe Spree::Product, type: :model do + context 'class' do + describe '.relation_types' do + it 'returns all the RelationTypes in use for this Product' do + relation_type = create(:relation_type) + expect(described_class.relation_types).to include(relation_type) + end + end + end + + context 'relations' do + it { is_expected.to have_many(:relations) } + end + + context 'instance' do + let(:other1) { create(:product) } + let(:other2) { create(:product) } + + before do + @product = create(:product) + @relation_type = create(:relation_type, name: 'Related Products') + end + + describe '.relations' do + it 'has many relations' do + relation1 = create(:relation, relatable: @product, related_to: other1, relation_type: @relation_type) + relation2 = create(:relation, relatable: @product, related_to: other2, relation_type: @relation_type) + + @product.reload + expect(@product.relations).to include(relation1) + expect(@product.relations).to include(relation2) + end + + it 'has many relations for different RelationTypes' do + other_relation_type = Spree::RelationType.new(name: 'Recommended Products') + + relation1 = create(:relation, relatable: @product, related_to: other1, relation_type: @relation_type) + relation2 = create(:relation, relatable: @product, related_to: other1, relation_type: other_relation_type) + + @product.reload + expect(@product.relations).to include(relation1) + expect(@product.relations).to include(relation2) + end + end + + describe 'RelationType finders' do + before do + @relation = create(:relation, relatable: @product, related_to: other1, relation_type: @relation_type) + @product.reload + end + + it 'returns the relevant relations' do + expect(@product.related_products).to include(other1) + end + + it 'recognizes the method with has_related_products?(method)' do + expect(@product.has_related_products?('related_products')).to be_truthy + end + + it 'does not recognize non-existent methods with has_related_products?(method)' do + expect(@product.has_related_products?('unrelated_products')).not_to be_truthy + end + + it 'is the pluralised form of the RelationType name' do + @relation_type.update_attributes(name: 'Related Product') + expect(@product.related_products).to include(other1) + end + + it 'does not return relations for another RelationType' do + other_relation_type = Spree::RelationType.new(name: 'Recommended Products') + + create(:relation, relatable: @product, related_to: other1, relation_type: @relation_type) + create(:relation, relatable: @product, related_to: other2, relation_type: other_relation_type) + + @product.reload + expect(@product.related_products).to include(other1) + expect(@product.related_products).not_to include(other2) + end + + it 'does not return Products that are deleted' do + other1.update_attributes(deleted_at: Time.now) + expect(@product.related_products).to be_blank + end + + it 'does not return Products that are not yet available' do + other1.update_attributes(available_on: Time.now + 1.hour) + expect(@product.related_products).to be_blank + end + + it 'does not return Products where available_on are blank' do + other1.update_attributes(available_on: nil) + expect(@product.related_products).to be_blank + end + + it 'returns all results when .relation_filter is nil' do + expect(described_class).to receive(:relation_filter).and_return(nil) + other1.update_attributes(available_on: Time.now + 1.hour) + expect(@product.related_products).to include(other1) + end + + context 'with an enhanced Product.relation_filter' do + it 'restricts the filter' do + relation_filter = described_class.relation_filter + expect(described_class).to receive(:relation_filter).at_least(:once).and_return(relation_filter.includes(:master).where('spree_variants.cost_price > 20')) + + other1.master.update_attributes(cost_price: 10) + other2.master.update_attributes(cost_price: 30) + + create(:relation, relatable: @product, related_to: other2, relation_type: @relation_type) + results = @product.related_products + expect(results).not_to include(other1) + expect(results).to include(other2) + end + end + end + end + + context 'instance when relation_types table is missing' do + it 'method missing should not throw ActiveRecord::StatementInvalid when the spree_relation_types table is missing' do + described_class.connection.rename_table('spree_relation_types', 'missing_relation_types') + begin + product = described_class.new + expect { product.foo }.to raise_error(NameError) + ensure + described_class.connection.rename_table('missing_relation_types', 'spree_relation_types') + end + end + end +end diff --git a/spree_theme/spec/models/spree/relation_spec.rb b/spree_theme/spec/models/spree/relation_spec.rb new file mode 100644 index 00000000..fc553a52 --- /dev/null +++ b/spree_theme/spec/models/spree/relation_spec.rb @@ -0,0 +1,13 @@ +RSpec.describe Spree::Relation, type: :model do + context 'relations' do + it { is_expected.to belong_to(:relation_type) } + it { is_expected.to belong_to(:relatable) } + it { is_expected.to belong_to(:related_to) } + end + + context 'validation' do + it { is_expected.to validate_presence_of(:relation_type) } + it { is_expected.to validate_presence_of(:relatable) } + it { is_expected.to validate_presence_of(:related_to) } + end +end diff --git a/spree_theme/spec/models/spree/relation_type_spec.rb b/spree_theme/spec/models/spree/relation_type_spec.rb new file mode 100644 index 00000000..a01816bf --- /dev/null +++ b/spree_theme/spec/models/spree/relation_type_spec.rb @@ -0,0 +1,18 @@ +RSpec.describe Spree::RelationType, type: :model do + context 'relations' do + it { is_expected.to have_many(:relations).dependent(:destroy) } + end + + context 'validation' do + it { is_expected.to validate_presence_of(:name) } + it { is_expected.to validate_presence_of(:applies_to) } + it { is_expected.to validate_uniqueness_of(:name).scoped_to(:site_id).case_insensitive } + + it 'does not create duplicate names' do + create(:relation_type, name: 'Gears') + expect { + create(:relation_type, name: 'gears') + }.to raise_error(ActiveRecord::RecordInvalid) + end + end +end diff --git a/spree_theme/spec/models/store_spec.rb b/spree_theme/spec/models/store_spec.rb new file mode 100644 index 00000000..0d5868c6 --- /dev/null +++ b/spree_theme/spec/models/store_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +describe Spree::Store do + let (:template) { create :template_theme } + before (:each){ + create(:store, default: true) + } + it "should be applied" do + # FIXME + #ActiveModel::MissingAttributeError: can't write unknown attribute `theme_id` + + #Spree::Store.current.apply_theme( template ) + #template.applied?.should be_truthy + end +end diff --git a/spree_theme/spec/models/taxon_spec.rb b/spree_theme/spec/models/taxon_spec.rb index 925b9f2a..87748e75 100644 --- a/spree_theme/spec/models/taxon_spec.rb +++ b/spree_theme/spec/models/taxon_spec.rb @@ -1,20 +1,11 @@ require 'spec_helper' -describe Spree::Taxon do - let (:taxon) { Spree::Taxon.roots.first } - - - it "should copy" do - #open( File.join Rails.root, 'public','favicon.ico' ) do|f| - # taxon.icon = f - # taxon.save - #end - #Spree::Site.current = Spree::Site.find 3 - #taxon = Spree::Taxon.unscoped.roots.where(:site_id=>2).first -Rails.logger.debug "..taxon = #{taxon.inspect}" - copied_taxon = taxon.copy -Rails.logger.debug "..copied taxon = #{copied_taxon.inspect}" +describe Spree::Taxon, :type => :model do + before do + @taxonomy = create(:taxonomy) + @root_taxon = @taxonomy.root + @child_taxon = create(:taxon, :taxonomy_id => @taxonomy.id, :parent => @root_taxon) end - + #TODO # test add_section_piece, section_param should be added end diff --git a/spree_theme/spec/models/template_theme_context_spec.rb b/spree_theme/spec/models/template_theme_context_spec.rb new file mode 100644 index 00000000..fe953b00 --- /dev/null +++ b/spree_theme/spec/models/template_theme_context_spec.rb @@ -0,0 +1,64 @@ +require 'spec_helper' +describe Spree::TemplateTheme do + + # page_layout tree + # root( stylish 0) + # + node0( stylish= 1 ) + # root( stylish 1) + # + node1( stylish=0 ) + # taxon0(stylish=0), taxon1( stylish=1) + # taxon0.valid_context?(product-list-grid ) => true + # taxon0.valid_context?(product-list-line ) => false + + + context 'a page layout' do + let (:taxon0) { create(:taxon, stylish: 0) } + let (:taxon1) { create(:taxon, stylish: 1) } + + it 'taxon stylish 0 should be valid for page_layout stylish 1' do + theme = create(:stylished_template_theme, stylish: 1) + style1 = theme.page_layout_root + + expect( theme.valid_context?(style1, taxon0)).to be_falsey + expect( theme.valid_context?(style1, taxon1)).to be_truthy + end + + it 'taxon stylish 0 should be valid for page_layout stylish 0' do + theme = create(:stylished_template_theme, stylish: 0) + style0 = theme.page_layout_root + + expect( theme.valid_context?(style0, taxon0)).to be_truthy + expect( theme.valid_context?(style0, taxon1)).to be_truthy + end + + end + + context 'page_layout tree' do + + let (:taxon0) { create(:taxon, stylish: 0) } + let (:taxon1) { create(:taxon, stylish: 1) } + # root - stylish0 + # - stylish1 + it 'node stylish 1 should be valid for taxon stylish 1' do + template_theme = create(:template_theme_stylish_tree, stylish:'01' ) + + style1 = template_theme.page_layout_root.children.first + + expect( template_theme.valid_context?(style1, taxon0)).to be_falsey + expect( template_theme.valid_context?(style1, taxon1)).to be_truthy + end + + # root - stylish1 + # - stylish0 + # 这个用例不会发生,先检查父节点,再检查子节点,父节点无效,子节点全部忽略。 + it 'node stylish 0 should be valid for taxon stylish 1' do + template_theme = create(:template_theme_stylish_tree, stylish:'10' ) + + style0 = template_theme.page_layout_root.children.first + #expect( template_theme.valid_context?(style0, taxon0)).to be_falsey + #expect( template_theme.valid_context?(style0, taxon1)).to be_truthy + end + + end + +end diff --git a/spree_theme/spec/models/template_theme_duplicator_spec.rb b/spree_theme/spec/models/template_theme_duplicator_spec.rb new file mode 100644 index 00000000..6cca4ced --- /dev/null +++ b/spree_theme/spec/models/template_theme_duplicator_spec.rb @@ -0,0 +1,85 @@ +require 'spec_helper' +require 'pp' +describe Spree::TemplateThemeDuplicator, :type => :model do + let( :template_theme ){ create(:duplicatabl_template_theme) } + let!(:duplicator) { Spree::TemplateThemeDuplicator.new(template_theme)} + + let(:image) { File.open(File.expand_path('../../fixtures/qinghe.jpg', __FILE__)) } + let(:params) { {:template_theme=> template_theme, :attachment => image} } + + before(:all) do + SpreeTheme.site_class.current = create(:fake_site) + end + + it "should has page_layouts and param_values" do + template_theme.page_layouts.should be_present + template_theme.param_values.should be_present + end + + context "duplicated" do + it 'has template_theme' do + expect{duplicator.duplicate}.to change{Spree::TemplateTheme.count}.by(1) + end + + it 'has page_layout_root' do + expect(duplicator.duplicate.page_layout_root).to be_present + end + + it 'has page_layouts' do + page_layout_count = template_theme.page_layouts.count + expect{duplicator.duplicate}.to change{Spree::PageLayout.count}.by( page_layout_count ) + end + + it 'has param_values' do + param_value_count = template_theme.param_values.count + expect{duplicator.duplicate}.to change{Spree::ParamValue.count}.by( param_value_count ) + end + + it 'has param_values for each page_layout' do + duplicated_template = duplicator.duplicate + duplicated_template.page_layouts.each_with_index{|pl,index| + pl.param_values.size.should eq Spree::PageLayout.find( pl.copy_from_id).param_values.count + } + end + + it 'has no release' do + expect( duplicator.duplicate.current_template_release).to be_nil + end + + it 'has_native_layout?' do + expect( duplicator.duplicate.has_native_layout?).to be_truthy + end + end + + context 'with template files' do + before(:each) do + @template_file = Spree::TemplateFile.create(params) + end + + it "will duplciate the template files" do + # will change the count by 3, since there will be a master variant as well + expect{duplicator.duplicate}.to change{Spree::TemplateFile.count}.by(1) + end + + it "has same template files with original" do |variable| + duplicated_template = duplicator.duplicate + duplicated_template.template_files.size.should eq template_theme.template_files.size + end + + context 'with assgined template file' do + before(:each) do + template_theme.assign_resource( @template_file, template_theme.page_layout_root ) + end + + it 'should replace obsolete page_layout id' do |variable| + duplicated_template = duplicator.duplicate + new_node_ids = duplicated_template.page_layouts.collect{|node| node.id.to_s } + #{'page_layout_id'=>{"spree/taxon"=>[227]}} + duplicated_template.assigned_resource_ids.keys{| node_id | + new_node_ids.should include node_id + } + end + end + end + +end diff --git a/spree_theme/spec/models/template_theme_releaser_spec.rb b/spree_theme/spec/models/template_theme_releaser_spec.rb new file mode 100644 index 00000000..f1548f09 --- /dev/null +++ b/spree_theme/spec/models/template_theme_releaser_spec.rb @@ -0,0 +1,33 @@ +require 'spec_helper' +describe Spree::TemplateTheme do + let (:template_theme) { create :previewable_template_theme } + let (:template_theme_renderer_page) { create :previewable_template_theme, renderer: :renderer_page } + + it "could relese" do + #serializable_data = template.serializable_data + #new_theme = Spree::TemplateTheme.import_into_db(serializable_data) + #page_layouts = new_theme.page_layouts + #page_layouts.size.should == serializable_data['page_layouts'].size + #template_file same + #template.assigned_resource_ids updated for new resource_id, like template_file + + template_theme.release + + + + end + + + it "could relese" do + #serializable_data = template.serializable_data + #new_theme = Spree::TemplateTheme.import_into_db(serializable_data) + #page_layouts = new_theme.page_layouts + #page_layouts.size.should == serializable_data['page_layouts'].size + #template_file same + #template.assigned_resource_ids updated for new resource_id, like template_file + + template_theme_renderer_page.release + + end + +end diff --git a/spree_theme/spec/models/template_theme_serialization_spec.rb b/spree_theme/spec/models/template_theme_serialization_spec.rb deleted file mode 100644 index 7cabea63..00000000 --- a/spree_theme/spec/models/template_theme_serialization_spec.rb +++ /dev/null @@ -1,18 +0,0 @@ -require 'spec_helper' -describe Spree::TemplateTheme do - let (:template) { Spree::TemplateTheme.first } - - it "could serialize&unserialize" do - serializable_data = template.serializable_data - - new_theme = Spree::TemplateTheme.import_into_db(serializable_data) - - - page_layouts = new_theme.page_layout.self_and_descendants - - page_layouts.size.should == serializable_data['page_layouts'].size - #template_file same - #template.assigned_resource_ids updated for new resource_id, like template_file - end - -end \ No newline at end of file diff --git a/spree_theme/spec/models/template_theme_spec.rb b/spree_theme/spec/models/template_theme_spec.rb index 00ec37d1..b5907b27 100644 --- a/spree_theme/spec/models/template_theme_spec.rb +++ b/spree_theme/spec/models/template_theme_spec.rb @@ -1,172 +1,119 @@ require 'spec_helper' describe Spree::TemplateTheme do - let (:template) { Spree::TemplateTheme.first } - + let (:template) { create :template_theme } + let (:page_layout_root) { template.page_layout_root} + let (:section_root) { create :section_root } + + before(:each) do + create(:store) + @taxon = create(:taxon) + end + + it "should has valid context" do + taxon = @taxon + template.valid_context?( page_layout_root, taxon ).should be_truthy + end + it "has document_path" do - template.document_path.should be_present + #template.original_template_theme.store.path + template.original_template_theme.should eq template end - - it "has right param_values" do - section_params = template.page_layout.self_and_descendants.map{|page_layout| - page_layout.section.self_and_descendants.map{|section| section.section_params }.flatten - }.flatten -Rails.logger.debug "section_params.size = #{section_params.size }" - template.param_values.size.should == section_params.size + + it "param_values" do + template.respond_to?(:param_values).should be_truthy end - - - it "could serialize&unserialize" do - serializable_data = template.serializable_data - expect(serializable_data).to be_an_instance_of(Hash) - temp_file = Tempfile.new ['theme', '.yml'], File.join( Rails.root, 'tmp') - temp_file.write( serializable_data.to_yaml ) - temp_file.size.should be > 0 #cause flush - File.exists?(temp_file.path).should be_true -Rails.logger.debug "temp_file=#{temp_file.size}" - Spree::TemplateTheme.import_into_db(serializable_data) - temp_file.close + + it "be destroy" do + #test destroy end it "create plain template" do - section = Spree::Section.find('root') - template = Spree::TemplateTheme.create_plain_template(section,'Template One') - + template = Spree::TemplateTheme.create_plain_template(section_root,'Template One') template.should be_an_instance_of(Spree::TemplateTheme) - template.page_layout.should be_an_instance_of(Spree::PageLayout) - template.page_layout.root?.should be_true - template.param_values.count.should be > 0 - - first_param_value = template.param_values.first - first_param_value.page_layout_id.should eq(template.page_layout.id) - first_param_value.page_layout_root_id.should eq(template.page_layout.root_id) - end - - it "should copy to new" do - copied_template = template.copy_to_new - - copied_template.page_layout_root_id.should_not eq template.page_layout_root_id - - new_node_ids = copied_template.page_layout.self_and_descendants.collect{|node| node.id } - template.assigned_resource_ids.keys{| node_id | - new_node_ids.should include node_id - } - original_page_layouts = template.page_layout.self_and_descendants - copied_template.page_layout.self_and_descendants.size.should eq original_page_layouts.size - copied_template.param_values.size.should eq template.param_values.size - - copied_template.page_layout.self_and_descendants.each_with_index{|pl,index| - pl.param_values.size.should eq original_page_layouts[index].param_values.size - pl.param_values.first.theme_id.should eq copied_template.id - } - copied_template.template_files.size.should eq template.template_files.size - copied_template.current_template_release.should be_blank - end - - it "destroy imported one" do - #template.template_releases.stub(:exists?) { true } - # release first - imported_template = template.import - imported_template.has_native_layout?.should be_false - imported_template.destroy - template.page_layout.present?.should be_true - end - - it "should get resource id" do - page_layout_tree = template.page_layout.self_and_descendants - logo = page_layout_tree.select{|pl| pl.title=='Logo'}.first - template.assigned_resource_id( Spree::TemplateFile, logo ).should be > 0 - template.assigned_resource_id( Spree::TemplateFile, logo, 1 ).should eq 0 - - end - - it "should assign resource" do - template_file = Spree::TemplateFile.first - template.assign_resource( template_file, template.page_layout ) - template.assign_resource( template_file, template.page_layout, 1 ) - template.assigned_resource_id( Spree::TemplateFile, template.page_layout ).should eq template_file.id - template.assigned_resource_id( Spree::TemplateFile, template.page_layout, 1 ).should eq template_file.id + page_layout_root.should be_an_instance_of(Spree::PageLayout) + page_layout_root.root?.should be_truthy + #TODO check param_values end - it "should unassign resource" do - template_file = Spree::TemplateFile.first - template.assign_resource( template_file, template.page_layout ) - template.unassign_resource( Spree::TemplateFile, template.page_layout ) - template.assigned_resource_id( Spree::TemplateFile, template.page_layout ).should eq 0 - - template.assigned_resources( Spree::TemplateFile, template.page_layout ).compact.should be_blank + context "assign template file" do + before(:each) do + @template_file = create(:template_file) + end + + it "should assign resource" do + template_file = @template_file + template.assign_resource( template_file, page_layout_root ) + template.assign_resource( template_file, page_layout_root, 1 ) + template.assigned_resource_id( Spree::TemplateFile, page_layout_root ).should eq template_file.id + template.assigned_resource_id( Spree::TemplateFile, page_layout_root, 1 ).should eq template_file.id + + template_resources = template.template_resources + template_resources.should be_present + end + + it "should unassign resource" do + template_file = @template_file + template.assign_resource( template_file, page_layout_root ) + template.unassign_resource( Spree::TemplateFile, page_layout_root ) + template.assigned_resource_id( Spree::TemplateFile, page_layout_root ).should eq 0 + + template.assigned_resources( Spree::TemplateFile, page_layout_root ).compact.should be_blank + end + end it "should update release id" do template_release = template.template_releases.build template_release.name = "just a test" template_release.save! - + template.reload - + template.release_id.should == template_release.id end - it "should be applied" do - - template.applied?.should be_true - end - - it "should be imported?" do - template.should be_imported - end - it "assign attributes" do original_title = "it is test" theme = Spree::TemplateTheme.new(:title=>original_title) theme.attributes = {:assigned_resource_ids=>{}, :template_files=>[]} theme.title.should == original_title - end - + end + it "should be imported" do #open(File.join( SpreeTheme::Engine.root,'db', 'themes', 'template_images', 'logo.gif')) do|f| - # template_file = Spree::TemplateFile.new(:attachment=>f, :page_layout_id=>template.page_layout_root_id) + # template_file = Spree::TemplateFile.new(:attachment=>f, :page_layout_id=>template.page_layout_root_id) # new_template = template.import(:template_files => [template_file] ) # new_template.current_template_release.should be_present # new_template.should be_a_kind_of Spree::TemplateTheme - # new_template.assigned_resources( Spree::TemplateFile,template.page_layout ).should be_present + # new_template.assigned_resources( Spree::TemplateFile,page_layout_root ).should be_present #end end - - it "should unassign resource from theme after taxon destroy" do - - taxon = SpreeTheme.taxon_class.first - template.assign_resource( taxon, template.page_layout ) - taxon.taxonomy.destroy - template.reload - template.assigned_resource_id( taxon.class, template.page_layout ).should eq 0 - - end - - it "should assign specific taxon to theme" do - SpreeTheme.site_class.current = template.website - taxon = Spree::SpecificTaxon.first - template.assign_resource( taxon, template.page_layout ) - template.assigned_resource_id( taxon.class, template.page_layout ).should eq taxon.id - end - - it "should has valid context" do - SpreeTheme.site_class.current = template.website - taxon = Spree::Taxon.first - template.valid_context?( template.page_layout, taxon ).should be true - - end - - it "should has invalid context" do - SpreeTheme.site_class.current = template.website - taxon = Spree::SpecificTaxon.first - template.assign_resource( taxon, template.page_layout ) - another_taxon = Spree::Taxon.last - (taxon.id == another_taxon.id).should be false - template.valid_context?( template.page_layout, another_taxon ).should be false + + + context 'assigned specific taxon' do + before(:each) do + @specific_taxon = create(:specific_taxon) + template.assign_resource( @specific_taxon, page_layout_root ) + end + + it "should get assigned specific taxon" do + taxon = @specific_taxon + template.assigned_resource_id( taxon.class, page_layout_root ).should eq taxon.id + end + + it "should has invalid context for other taxon" do + another_taxon = @taxon + template.valid_context?( page_layout_root, another_taxon ).should be false + end + + it "should unassign resource from theme after taxon destroy" do + taxon = @taxon + template.assign_resource( taxon, page_layout_root ) + taxon.destroy + template.reload + template.assigned_resource_id( taxon.class, page_layout_root ).should eq 0 + end end - - it "should has resources" do - template_resources = template.template_resources - template_resources.should be_present - end -end \ No newline at end of file + + +end diff --git a/spree_theme/spec/models/terminal_spec.rb b/spree_theme/spec/models/terminal_spec.rb new file mode 100644 index 00000000..f8eefc00 --- /dev/null +++ b/spree_theme/spec/models/terminal_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +describe Spree::UserTerminal do + let (:user_terminal) { create :user_terminal } + let (:template_theme) { create :template_theme } + #@#let (:payment_method) { create :payment_method } + + before(:each){ + SpreeTheme.site_class.current = create(:fake_site) + } + + it "should has valid association" do + template_theme.user_terminal + end +end diff --git a/spree_theme/spec/models/theme_configuration_spec.rb b/spree_theme/spec/models/theme_configuration_spec.rb deleted file mode 100644 index df867602..00000000 --- a/spree_theme/spec/models/theme_configuration_spec.rb +++ /dev/null @@ -1,9 +0,0 @@ -require 'spec_helper' -describe Spree::ThemeConfiguration, "#site_class" do - let (:config) { SpreeTheme } - it "has website class" do - - expect(config.site_class).to be_a_kind_of(Class) - expect(config.site_class.current).to be_an_instance_of(Spree::FakeWebsite) - end -end \ No newline at end of file diff --git a/spree_theme/spec/spec_helper.rb b/spree_theme/spec/spec_helper.rb index 34f6d807..c5ef4427 100644 --- a/spree_theme/spec/spec_helper.rb +++ b/spree_theme/spec/spec_helper.rb @@ -15,6 +15,8 @@ require File.expand_path('../dummy/config/environment.rb', __FILE__) require 'rspec/rails' +require 'shoulda/matchers' +require 'database_cleaner' require 'ffaker' # Requires supporting ruby files with custom matchers and macros, etc, @@ -22,26 +24,37 @@ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f } # Requires factories defined in spree_core -require 'spree/testing_support/factories' -require 'spree/testing_support/controller_requests' require 'spree/testing_support/authorization_helpers' +require 'spree/testing_support/controller_requests' +require 'spree/testing_support/capybara_ext' +require 'spree/testing_support/factories' require 'spree/testing_support/url_helpers' +require 'spree_theme/testing_support/factories' +require 'spree_theme/testing_support/request_helpers' +require 'spree_theme/testing_support/controller_requests' + RSpec.configure do |config| config.include FactoryGirl::Syntax::Methods + # Infer an example group's spec type from the file location. + config.infer_spec_type_from_file_location! + # == URL Helpers # # Allows access to Spree's routes in specs: # # visit spree.admin_path # current_path.should eql(spree.products_path) - config.include Spree::TestingSupport::Preferences config.include Spree::TestingSupport::UrlHelpers - config.include Spree::TestingSupport::ControllerRequests - config.include Spree::TestingSupport::Flash - config.include Devise::TestHelpers, :type => :controller - config.include Rack::Test::Methods, :type => :requests + + # == Requests support + # + # Adds convenient methods to request Spree's controllers + # spree_get :index + config.include Spree::TestingSupport::ControllerRequests, type: :controller + config.include SpreeTheme::TestingSupport::ControllerRequests, type: :controller + # == Mock Framework # # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: @@ -50,14 +63,45 @@ # config.mock_with :flexmock # config.mock_with :rr config.mock_with :rspec + config.color = true # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures - config.fixture_path = "#{::Rails.root}/spec/fixtures" + config.fixture_path = "#{SpreeTheme::Engine.root}/spec/fixtures" - # If you're not using ActiveRecord, or you'd prefer not to run each of your - # examples within a transaction, remove the following line or assign false - # instead of true. - config.use_transactional_fixtures = true + # Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner + # to cleanup after each test instead. Without transactional fixtures set to false the records created + # to setup a test will be unavailable to the browser, which runs under a separate server instance. + config.use_transactional_fixtures = false + + # Ensure Suite is set to use transactions for speed. + config.before :suite do + DatabaseCleaner.strategy = :transaction + DatabaseCleaner.clean_with :truncation + end + + # Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary. + config.before :each do + DatabaseCleaner.strategy = RSpec.current_example.metadata[:js] ? :truncation : :transaction + DatabaseCleaner.start + end + + # After each spec clean the database. + config.after :each do + DatabaseCleaner.clean + end config.fail_fast = ENV['FAIL_FAST'] || false + config.order = "random" +end + +RSpec.configure do |config| + config.include Devise::TestHelpers, type: :controller + config.include Rack::Test::Methods, type: :feature +end + +Shoulda::Matchers.configure do |config| + config.integrate do |with| + with.test_framework :rspec + with.library :rails + end end diff --git a/spree_theme/spec/support.unused/capybara.rb b/spree_theme/spec/support.unused/capybara.rb new file mode 100644 index 00000000..a170eba4 --- /dev/null +++ b/spree_theme/spec/support.unused/capybara.rb @@ -0,0 +1,20 @@ +require 'capybara/rspec' +require 'capybara/rails' +require 'capybara/poltergeist' +require 'capybara-screenshot/rspec' + +RSpec.configure do |config| + Capybara.javascript_driver = :poltergeist + + Capybara.save_and_open_page_path = ENV['CIRCLE_ARTIFACTS'] if ENV['CIRCLE_ARTIFACTS'] + + Capybara.register_driver(:poltergeist) do |app| + Capybara::Poltergeist::Driver.new app, js_errors: true, timeout: 30 + end + + config.before(:each, :js) do + if Capybara.javascript_driver == :selenium + page.driver.browser.manage.window.maximize + end + end +end diff --git a/spree_theme/spec/support.unused/database_cleaner.rb b/spree_theme/spec/support.unused/database_cleaner.rb new file mode 100644 index 00000000..a2ec2fc6 --- /dev/null +++ b/spree_theme/spec/support.unused/database_cleaner.rb @@ -0,0 +1,23 @@ +require 'database_cleaner' + +RSpec.configure do |config| + config.before(:suite) do + DatabaseCleaner.clean_with :truncation + end + + config.before do + DatabaseCleaner.strategy = :transaction + end + + config.before(:each, :js) do + DatabaseCleaner.strategy = :truncation + end + + config.before do + DatabaseCleaner.start + end + + config.after do + DatabaseCleaner.clean + end +end diff --git a/spree_theme/spec/support.unused/factory_girl.rb b/spree_theme/spec/support.unused/factory_girl.rb new file mode 100644 index 00000000..f2784a54 --- /dev/null +++ b/spree_theme/spec/support.unused/factory_girl.rb @@ -0,0 +1,7 @@ +require 'factory_girl' + +FactoryGirl.find_definitions + +RSpec.configure do |config| + config.include FactoryGirl::Syntax::Methods +end diff --git a/spree_theme/spec/support.unused/spree.rb b/spree_theme/spec/support.unused/spree.rb new file mode 100644 index 00000000..a3ba4296 --- /dev/null +++ b/spree_theme/spec/support.unused/spree.rb @@ -0,0 +1,10 @@ +require 'spree/testing_support/factories' +require 'spree/testing_support/controller_requests' +require 'spree/testing_support/authorization_helpers' +require 'spree/testing_support/url_helpers' +require 'spree/testing_support/capybara_ext' + +RSpec.configure do |config| + config.include Spree::TestingSupport::ControllerRequests, type: :controller + config.include Spree::TestingSupport::UrlHelpers +end diff --git a/spree_theme/spree_theme.gemspec b/spree_theme/spree_theme.gemspec index 4da94874..3691187a 100644 --- a/spree_theme/spree_theme.gemspec +++ b/spree_theme/spree_theme.gemspec @@ -2,25 +2,36 @@ Gem::Specification.new do |s| s.platform = Gem::Platform::RUBY s.name = 'spree_theme' - s.version = '2.4.0' + s.version = '3.1.0' s.summary = 'spree theme' s.description = 'spree theme' - s.required_ruby_version = '>= 1.9.3' + s.required_ruby_version = '>= 2.2.2' s.author = 'qinghe' - s.email = 'areq22@gmail.com' - s.homepage = 'http://www.dalianshops.com' + s.email = 'david@getstore.cn' + s.homepage = 'http://www.getstore.cn' #s.files = `git ls-files`.split("\n") #s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") s.require_path = 'lib' s.requirements << 'none' + spree_version = '>= 3.1.0', '< 4.0' - s.add_dependency 'spree_core', '~> 2.4.0' s.add_dependency 'friendly_id' - s.add_development_dependency 'capybara' - s.add_development_dependency 'factory_girl' + s.add_dependency 'erubis' + s.add_dependency 'useragent' + s.add_dependency 'acts_as_commentable' + s.add_dependency 'font-awesome-rails', '~> 4.7.0' + s.add_dependency 'sitemap_generator' + s.add_dependency 'acts-as-taggable-on' + s.add_development_dependency 'capybara', '~> 2.6' + s.add_development_dependency 'coffee-rails' + s.add_development_dependency 'database_cleaner' + s.add_development_dependency 'factory_girl', '~> 4.5' s.add_development_dependency 'ffaker' - s.add_development_dependency 'rspec-rails' + s.add_development_dependency 'rspec-rails', '~> 3.4' + s.add_development_dependency 'sass-rails', '~> 5.0.0' + s.add_development_dependency 'selenium-webdriver' + s.add_development_dependency 'simplecov' s.add_development_dependency 'sqlite3' end diff --git a/spree_theme/todo b/spree_theme/todo index 236867d8..2d78d8e2 100644 --- a/spree_theme/todo +++ b/spree_theme/todo @@ -1,34 +1,31 @@ #flaws -after theme release, if we modify page_layout tree, this would cause theme generating error. +after theme release, if we modify page_layout tree, this would cause theme generating error. #todos -0. go through whole process, create new template -> edit it-> release it-> other shop apply it - -*1. export template -*2. editor dock. -*2.1 promote section, demote section -*2.2 highlight counter part of preview page when hovering on section -2.3 _update_param_value.js.erb, update hover,selected param_value, client should be updated by ajax. +2.3 _update_param_value.js.erb, update hover,selected param_value, client should be updated by ajax. 3. ajax update section, no need refresh when add section into template. 4. add section cart and try add to cart. - - +5. �༭��z-index С��highlight cover, �����޷�ѡ��section +6. container ȱʡ width:100%, �ֻ�ģ����Ҫ +7. product ȱʡ width:100%, text-align:center; +8. product images in slide +9. minicart for mobile +10. �������� +11. mobile root, padding, border, margin, background #bugs -get_css 12,13,'block', it is not right in generated css. +get_css 12,13,'block', it is not right in generated css. set font-size:0, unset it does not work. set input font-color:red, unset it does not work. category 'brand' do not work. -https://github.com/spree/spree_fancy - +user logged in, click copy template until timeout, user is redirected to login form, after login again, redirect to get:template_theme/copy, this would cause error, there is only post:template_theme/copy # new features -link add margin -link add hover param, same as link -container add hover param disable taxon/post link + +click effect diff --git a/spree_theme/vendor/assets/javascripts/jquery.validate.min.js b/spree_theme/vendor/assets/javascripts/jquery.validate.min.js new file mode 100644 index 00000000..20402da5 --- /dev/null +++ b/spree_theme/vendor/assets/javascripts/jquery.validate.min.js @@ -0,0 +1,4 @@ +/*! jQuery Validation Plugin - v1.17.0 - 7/29/2017 + * https://jqueryvalidation.org/ + * Copyright (c) 2017 Jörn Zaefferer; Licensed MIT */ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."));var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.on("click.validate",":submit",function(b){c.submitButton=b.currentTarget,a(this).hasClass("cancel")&&(c.cancelSubmit=!0),void 0!==a(this).attr("formnovalidate")&&(c.cancelSubmit=!0)}),this.on("submit.validate",function(b){function d(){var d,e;return c.submitButton&&(c.settings.submitHandler||c.formSubmitted)&&(d=a("").attr("name",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),!c.settings.submitHandler||(e=c.settings.submitHandler.call(c,c.currentForm,b),d&&d.remove(),void 0!==e&&e)}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c,d;return a(this[0]).is("form")?b=this.validate().form():(d=[],b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b,b||(d=d.concat(c.errorList))}),c.errorList=d),b},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(null!=j&&(!j.form&&j.hasAttribute("contenteditable")&&(j.form=this.closest("form")[0],j.name=this.attr("name")),null!=j.form)){if(b)switch(d=a.data(j.form,"validator").settings,e=d.rules,f=a.validator.staticRules(j),b){case"add":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case"remove":return c?(i={},a.each(c.split(/\s/),function(a,b){i[b]=f[b],delete f[b]}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g)),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}}),a.extend(a.expr.pseudos||a.expr[":"],{blank:function(b){return!a.trim(""+a(b).val())},filled:function(b){var c=a(b).val();return null!==c&&!!a.trim(""+c)},unchecked:function(b){return!a(b).prop("checked")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:void 0===c?b:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(a)))},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(b,c){var d=[16,17,18,20,35,36,37,38,39,40,45,144,225];9===c.which&&""===this.elementValue(b)||a.inArray(c.keyCode,d)!==-1||(b.name in this.submitted||b.name in this.invalid)&&this.element(b)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){"radio"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}."),step:a.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){function b(b){!this.form&&this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=a(this).attr("name"));var c=a.data(this.form,"validator"),d="on"+b.type.replace(/^validate/,""),e=c.settings;e[d]&&!a(this).is(e.ignore)&&e[d].call(c,this,b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){"string"==typeof c&&(c=c.split(/\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",b).on("click.validate","select, option, [type='radio'], [type='checkbox']",b),this.settings.invalidHandler&&a(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c,d,e=this.clean(b),f=this.validationTargetFor(e),g=this,h=!0;return void 0===f?delete this.invalid[e.name]:(this.prepareElement(f),this.currentElements=a(f),d=this.groups[f.name],d&&a.each(this.groups,function(a,b){b===d&&a!==f.name&&(e=g.validationTargetFor(g.clean(g.findByName(a))),e&&e.name in g.invalid&&(g.currentElements.push(e),h=g.check(e)&&h))}),c=this.check(f)!==!1,h=h&&c,c?this.invalid[f.name]=!1:this.invalid[f.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),a(b).attr("aria-invalid",!c)),h},showErrors:function(b){if(b){var c=this;a.extend(this.errorMap,b),this.errorList=a.map(this.errorMap,function(a,b){return{message:a,element:c.findByName(b)[0]}}),this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var b=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(b)},resetElements:function(a){var b;if(this.settings.unhighlight)for(b=0;a[b];b++)this.settings.unhighlight.call(this,a[b],this.settings.errorClass,""),this.findByName(a[b].name).removeClass(this.settings.validClass);else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)void 0!==a[b]&&null!==a[b]&&a[b]!==!1&&c++;return c},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(a){a.not(this.containers).text(""),this.addWrapper(a).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var d=this.name||a(this).attr("name");return!d&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.hasAttribute("contenteditable")&&(this.form=a(this).closest("form")[0],this.name=d),!(d in c||!b.objectLength(a(this).rules()))&&(c[d]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(" ").join(".");return a(this.settings.errorElement+"."+b,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([])},reset:function(){this.resetInternals(),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d,e=a(b),f=b.type;return"radio"===f||"checkbox"===f?this.findByName(b.name).filter(":checked").val():"number"===f&&"undefined"!=typeof b.validity?b.validity.badInput?"NaN":e.val():(c=b.hasAttribute("contenteditable")?e.text():e.val(),"file"===f?"C:\\fakepath\\"===c.substr(0,12)?c.substr(12):(d=c.lastIndexOf("/"),d>=0?c.substr(d+1):(d=c.lastIndexOf("\\"),d>=0?c.substr(d+1):c)):"string"==typeof c?c.replace(/\r/g,""):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f,g=a(b).rules(),h=a.map(g,function(a,b){return b}).length,i=!1,j=this.elementValue(b);if("function"==typeof g.normalizer?f=g.normalizer:"function"==typeof this.settings.normalizer&&(f=this.settings.normalizer),f){if(j=f.call(b,j),"string"!=typeof j)throw new TypeError("The normalizer should return a string value.");delete g.normalizer}for(d in g){e={method:d,parameters:g[d]};try{if(c=a.validator.methods[d].call(this,j,b,e.parameters),"dependency-mismatch"===c&&1===h){i=!0;continue}if(i=!1,"pending"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(k){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+b.id+", check the '"+e.method+"' method.",k),k instanceof TypeError&&(k.message+=". Exception occurred when checking element "+b.id+", check the '"+e.method+"' method."),k}}if(!i)return this.objectLength(g)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data("msg"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase())||a(b).data("msg")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for "+b.name+""),e=/\$?\{(\d+)\}/g;return"function"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),d},formatAndAdd:function(a,b){var c=this.defaultMessage(a,b);this.errorList.push({message:c,element:a,method:b.method}),this.errorMap[a.name]=c,this.submitted[a.name]=c},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d,e,f,g,h=this.errorsFor(b),i=this.idOrName(b),j=a(b).attr("aria-describedby");h.length?(h.removeClass(this.settings.validClass).addClass(this.settings.errorClass),h.html(c)):(h=a("<"+this.settings.errorElement+">").attr("id",i+"-error").addClass(this.settings.errorClass).html(c||""),d=h,this.settings.wrapper&&(d=h.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(d):this.settings.errorPlacement?this.settings.errorPlacement.call(this,d,a(b)):d.insertAfter(b),h.is("label")?h.attr("for",i):0===h.parents("label[for='"+this.escapeCssMeta(i)+"']").length&&(f=h.attr("id"),j?j.match(new RegExp("\\b"+this.escapeCssMeta(f)+"\\b"))||(j+=" "+f):j=f,a(b).attr("aria-describedby",j),e=this.groups[b.name],e&&(g=this,a.each(g.groups,function(b,c){c===e&&a("[name='"+g.escapeCssMeta(b)+"']",g.currentForm).attr("aria-describedby",h.attr("id"))})))),!c&&this.settings.success&&(h.text(""),"string"==typeof this.settings.success?h.addClass(this.settings.success):this.settings.success(h,b)),this.toShow=this.toShow.add(h)},errorsFor:function(b){var c=this.escapeCssMeta(this.idOrName(b)),d=a(b).attr("aria-describedby"),e="label[for='"+c+"'], label[for='"+c+"'] *";return d&&(e=e+", #"+this.escapeCssMeta(d).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(a){return a.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(b){return this.checkable(b)&&(b=this.findByName(b.name)),a(b).not(this.settings.ignore)[0]},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find("[name='"+this.escapeCssMeta(b)+"']")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return!this.dependTypes[typeof a]||this.dependTypes[typeof a](a,b)},dependTypes:{"boolean":function(a){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(b){this.pending[b.name]||(this.pendingRequest++,a(b).addClass(this.settings.pendingClass),this.pending[b.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],a(b).removeClass(this.settings.pendingClass),c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.submitButton&&a("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b,c){return c="string"==typeof c&&c||"remote",a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,{method:c})})},destroy:function(){this.resetForm(),a(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},normalizeAttributeRule:function(a,b,c,d){/min|max|step/.test(c)&&(null===b||/number|range|text/.test(b))&&(d=Number(d),isNaN(d)&&(d=void 0)),d||0===d?a[c]=d:b===c&&"range"!==b&&(a[c]=!0)},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)"required"===c?(d=b.getAttribute(c),""===d&&(d=!0),d=!!d):d=f.attr(c),this.normalizeAttributeRule(e,g,c,d);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute("type");for(c in a.validator.methods)d=f.data("rule"+c.charAt(0).toUpperCase()+c.substring(1).toLowerCase()),this.normalizeAttributeRule(e,g,c,d);return e},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=void 0===e.param||e.param:(a.data(c.form,"validator").resetElements(a(c)),delete b[d])}}),a.each(b,function(d,e){b[d]=a.isFunction(e)&&"normalizer"!==d?e(c):e}),a.each(["minlength","maxlength"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:"string"==typeof b[this]&&(c=b[this].replace(/[\[\]]/g,"").split(/[\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(null!=b.min&&null!=b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),null!=b.minlength&&null!=b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if("string"==typeof b){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if("select"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:b.length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a)},number:function(a,b){return this.optional(b)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e<=d},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(b,c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},step:function(b,c,d){var e,f=a(c).attr("type"),g="Step attribute on input type "+f+" is not supported.",h=["text","number","range"],i=new RegExp("\\b"+f+"\\b"),j=f&&!i.test(h.join()),k=function(a){var b=(""+a).match(/(?:\.(\d+))?$/);return b&&b[1]?b[1].length:0},l=function(a){return Math.round(a*Math.pow(10,e))},m=!0;if(j)throw new Error(g);return e=k(d),(k(b)>e||l(b)%l(d)!==0)&&(m=!1),this.optional(c)||m},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.not(".validate-equalTo-blur").length&&e.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d,e){if(this.optional(c))return"dependency-mismatch";e="string"==typeof e&&e||"remote";var f,g,h,i=this.previousValue(c,e);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),i.originalMessage=i.originalMessage||this.settings.messages[c.name][e],this.settings.messages[c.name][e]=i.message,d="string"==typeof d&&{url:d}||d,h=a.param(a.extend({data:b},d.data)),i.old===h?i.valid:(i.old=h,f=this,this.startRequest(c),g={},g[c.name]=b,a.ajax(a.extend(!0,{mode:"abort",port:"validate"+c.name,dataType:"json",data:g,context:f.currentForm,success:function(a){var d,g,h,j=a===!0||"true"===a;f.settings.messages[c.name][e]=i.originalMessage,j?(h=f.formSubmitted,f.resetInternals(),f.toHide=f.errorsFor(c),f.formSubmitted=h,f.successList.push(c),f.invalid[c.name]=!1,f.showErrors()):(d={},g=a||f.defaultMessage(c,{method:e,parameters:b}),d[c.name]=i.message=g,f.invalid[c.name]=!0,f.showErrors(d)),i.valid=j,f.stopRequest(c,j)}},d)),"pending")}}});var b,c={};return a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;"abort"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return"abort"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)}),a}); \ No newline at end of file diff --git a/spree_theme/vendor/assets/javascripts/jquery.validate/localization/messages_zh-CN.js b/spree_theme/vendor/assets/javascripts/jquery.validate/localization/messages_zh-CN.js new file mode 100644 index 00000000..7242e0ba --- /dev/null +++ b/spree_theme/vendor/assets/javascripts/jquery.validate/localization/messages_zh-CN.js @@ -0,0 +1,25 @@ +/* + * Translated default messages for the jQuery validation plugin. + * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語) + */ +(function($) { + $.extend($.validator.messages, { + required: "必须填写", + remote: "请修正此栏位", + email: "请输入有效的电子邮件", + url: "请输入有效的网址", + date: "请输入有效的日期", + dateISO: "请输入有效的日期 (YYYY-MM-DD)", + number: "请输入正确的数字", + digits: "只可输入数字", + creditcard: "请输入有效的信用卡号码", + equalTo: "你的输入不相同", + extension: "请输入有效的后缀", + maxlength: $.validator.format("最多 {0} 个字"), + minlength: $.validator.format("最少 {0} 个字"), + rangelength: $.validator.format("请输入长度为 {0} 至 {1} 之間的字串"), + range: $.validator.format("请输入 {0} 至 {1} 之间的数值"), + max: $.validator.format("请输入不大于 {0} 的数值"), + min: $.validator.format("请输入不小于 {0} 的数值") + }); +}(jQuery)); diff --git a/spree_theme/vendor/assets/javascripts/jweixin-1.1.0.js b/spree_theme/vendor/assets/javascripts/jweixin-1.1.0.js new file mode 100644 index 00000000..85d5553a --- /dev/null +++ b/spree_theme/vendor/assets/javascripts/jweixin-1.1.0.js @@ -0,0 +1 @@ +!function(a,b){"function"==typeof define&&(define.amd||define.cmd)?define(function(){return b(a)}):b(a,!0)}(this,function(a,b){function c(b,c,d){a.WeixinJSBridge?WeixinJSBridge.invoke(b,e(c),function(a){h(b,a,d)}):k(b,d)}function d(b,c,d){a.WeixinJSBridge?WeixinJSBridge.on(b,function(a){d&&d.trigger&&d.trigger(a),h(b,a,c)}):d?k(b,d):k(b,c)}function e(a){return a=a||{},a.appId=D.appId,a.verifyAppId=D.appId,a.verifySignType="sha1",a.verifyTimestamp=D.timestamp+"",a.verifyNonceStr=D.nonceStr,a.verifySignature=D.signature,a}function f(a){return{timeStamp:a.timestamp+"",nonceStr:a.nonceStr,"package":a.package,paySign:a.paySign,signType:a.signType||"SHA1"}}function g(a){return a.postalCode=a.addressPostalCode,delete a.addressPostalCode,a.provinceName=a.proviceFirstStageName,delete a.proviceFirstStageName,a.cityName=a.addressCitySecondStageName,delete a.addressCitySecondStageName,a.countryName=a.addressCountiesThirdStageName,delete a.addressCountiesThirdStageName,a.detailInfo=a.addressDetailInfo,delete a.addressDetailInfo,a}function h(a,b,c){var d,e,f;switch("openEnterpriseChat"==a&&(b.errCode=b.err_code),delete b.err_code,delete b.err_desc,delete b.err_detail,d=b.errMsg,d||(d=b.err_msg,delete b.err_msg,d=i(a,d),b.errMsg=d),c=c||{},c._complete&&(c._complete(b),delete c._complete),d=b.errMsg||"",D.debug&&!c.isInnerInvoke&&alert(JSON.stringify(b)),e=d.indexOf(":"),f=d.substring(e+1)){case"ok":c.success&&c.success(b);break;case"cancel":c.cancel&&c.cancel(b);break;default:c.fail&&c.fail(b)}c.complete&&c.complete(b)}function i(a,b){var e,f,c=a,d=q[c];return d&&(c=d),e="ok",b&&(f=b.indexOf(":"),e=b.substring(f+1),"confirm"==e&&(e="ok"),"failed"==e&&(e="fail"),-1!=e.indexOf("failed_")&&(e=e.substring(7)),-1!=e.indexOf("fail_")&&(e=e.substring(5)),e=e.replace(/_/g," "),e=e.toLowerCase(),("access denied"==e||"no permission to execute"==e)&&(e="permission denied"),"config"==c&&"function not exist"==e&&(e="ok"),""==e&&(e="fail")),b=c+":"+e}function j(a){var b,c,d,e;if(a){for(b=0,c=a.length;c>b;++b)d=a[b],e=p[d],e&&(a[b]=e);return a}}function k(a,b){if(!(!D.debug||b&&b.isInnerInvoke)){var c=q[a];c&&(a=c),b&&b._complete&&delete b._complete,console.log('"'+a+'",',b||"")}}function l(){if(!(v||w||D.debug||"6.0.2">A||C.systemType<0)){var b=new Image;C.appId=D.appId,C.initTime=B.initEndTime-B.initStartTime,C.preVerifyTime=B.preVerifyEndTime-B.preVerifyStartTime,G.getNetworkType({isInnerInvoke:!0,success:function(a){C.networkType=a.networkType;var c="https://open.weixin.qq.com/sdk/report?v="+C.version+"&o="+C.isPreVerifyOk+"&s="+C.systemType+"&c="+C.clientVersion+"&a="+C.appId+"&n="+C.networkType+"&i="+C.initTime+"&p="+C.preVerifyTime+"&u="+C.url;b.src=c}})}}function m(){return(new Date).getTime()}function n(b){x&&(a.WeixinJSBridge?b():r.addEventListener&&r.addEventListener("WeixinJSBridgeReady",b,!1))}function o(){G.invoke||(G.invoke=function(b,c,d){a.WeixinJSBridge&&WeixinJSBridge.invoke(b,e(c),d)},G.on=function(b,c){a.WeixinJSBridge&&WeixinJSBridge.on(b,c)})}var p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G;if(!a.jWeixin)return p={config:"preVerifyJSAPI",onMenuShareTimeline:"menu:share:timeline",onMenuShareAppMessage:"menu:share:appmessage",onMenuShareQQ:"menu:share:qq",onMenuShareWeibo:"menu:share:weiboApp",onMenuShareQZone:"menu:share:QZone",previewImage:"imagePreview",getLocation:"geoLocation",openProductSpecificView:"openProductViewWithPid",addCard:"batchAddCard",openCard:"batchViewCard",chooseWXPay:"getBrandWCPayRequest",openEnterpriseRedPacket:"getRecevieBizHongBaoRequest",startSearchBeacons:"startMonitoringBeacons",stopSearchBeacons:"stopMonitoringBeacons",onSearchBeacons:"onBeaconsInRange",consumeAndShareCard:"consumedShareCard",openAddress:"editAddress"},q=function(){var b,a={};for(b in p)a[p[b]]=b;return a}(),r=a.document,s=r.title,t=navigator.userAgent.toLowerCase(),u=navigator.platform.toLowerCase(),v=!(!u.match("mac")&&!u.match("win")),w=-1!=t.indexOf("wxdebugger"),x=-1!=t.indexOf("micromessenger"),y=-1!=t.indexOf("android"),z=-1!=t.indexOf("iphone")||-1!=t.indexOf("ipad"),A=function(){var a=t.match(/micromessenger\/(\d+\.\d+\.\d+)/)||t.match(/micromessenger\/(\d+\.\d+)/);return a?a[1]:""}(),B={initStartTime:m(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},C={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:z?1:y?2:-1,clientVersion:A,url:encodeURIComponent(location.href)},D={},E={_completes:[]},F={state:0,data:{}},n(function(){B.initEndTime=m()}),G={config:function(a){D=a,k("config",a);var b=D.check===!1?!1:!0;n(function(){var a,d,e;if(b)c(p.config,{verifyJsApiList:j(D.jsApiList)},function(){E._complete=function(a){B.preVerifyEndTime=m(),F.state=1,F.data=a},E.success=function(){C.isPreVerifyOk=0},E.fail=function(a){E._fail?E._fail(a):F.state=-1};var a=E._completes;return a.push(function(){l()}),E.complete=function(){for(var c=0,d=a.length;d>c;++c)a[c]();E._completes=[]},E}()),B.preVerifyStartTime=m();else{for(F.state=1,a=E._completes,d=0,e=a.length;e>d;++d)a[d]();E._completes=[]}}),D.beta&&o()},ready:function(a){0!=F.state?a():(E._completes.push(a),!x&&D.debug&&a())},error:function(a){"6.0.2">A||(-1==F.state?a(F.data):E._fail=a)},checkJsApi:function(a){var b=function(a){var c,d,b=a.checkResult;for(c in b)d=q[c],d&&(b[d]=b[c],delete b[c]);return a};c("checkJsApi",{jsApiList:j(a.jsApiList)},function(){return a._complete=function(a){if(y){var c=a.checkResult;c&&(a.checkResult=JSON.parse(c))}a=b(a)},a}())},onMenuShareTimeline:function(a){d(p.onMenuShareTimeline,{complete:function(){c("shareTimeline",{title:a.title||s,desc:a.title||s,img_url:a.imgUrl||"",link:a.link||location.href,type:a.type||"link",data_url:a.dataUrl||""},a)}},a)},onMenuShareAppMessage:function(a){d(p.onMenuShareAppMessage,{complete:function(){c("sendAppMessage",{title:a.title||s,desc:a.desc||"",link:a.link||location.href,img_url:a.imgUrl||"",type:a.type||"link",data_url:a.dataUrl||""},a)}},a)},onMenuShareQQ:function(a){d(p.onMenuShareQQ,{complete:function(){c("shareQQ",{title:a.title||s,desc:a.desc||"",img_url:a.imgUrl||"",link:a.link||location.href},a)}},a)},onMenuShareWeibo:function(a){d(p.onMenuShareWeibo,{complete:function(){c("shareWeiboApp",{title:a.title||s,desc:a.desc||"",img_url:a.imgUrl||"",link:a.link||location.href},a)}},a)},onMenuShareQZone:function(a){d(p.onMenuShareQZone,{complete:function(){c("shareQZone",{title:a.title||s,desc:a.desc||"",img_url:a.imgUrl||"",link:a.link||location.href},a)}},a)},startRecord:function(a){c("startRecord",{},a)},stopRecord:function(a){c("stopRecord",{},a)},onVoiceRecordEnd:function(a){d("onVoiceRecordEnd",a)},playVoice:function(a){c("playVoice",{localId:a.localId},a)},pauseVoice:function(a){c("pauseVoice",{localId:a.localId},a)},stopVoice:function(a){c("stopVoice",{localId:a.localId},a)},onVoicePlayEnd:function(a){d("onVoicePlayEnd",a)},uploadVoice:function(a){c("uploadVoice",{localId:a.localId,isShowProgressTips:0==a.isShowProgressTips?0:1},a)},downloadVoice:function(a){c("downloadVoice",{serverId:a.serverId,isShowProgressTips:0==a.isShowProgressTips?0:1},a)},translateVoice:function(a){c("translateVoice",{localId:a.localId,isShowProgressTips:0==a.isShowProgressTips?0:1},a)},chooseImage:function(a){c("chooseImage",{scene:"1|2",count:a.count||9,sizeType:a.sizeType||["original","compressed"],sourceType:a.sourceType||["album","camera"]},function(){return a._complete=function(a){if(y){var b=a.localIds;b&&(a.localIds=JSON.parse(b))}},a}())},previewImage:function(a){c(p.previewImage,{current:a.current,urls:a.urls},a)},uploadImage:function(a){c("uploadImage",{localId:a.localId,isShowProgressTips:0==a.isShowProgressTips?0:1},a)},downloadImage:function(a){c("downloadImage",{serverId:a.serverId,isShowProgressTips:0==a.isShowProgressTips?0:1},a)},getNetworkType:function(a){var b=function(a){var c,d,e,b=a.errMsg;if(a.errMsg="getNetworkType:ok",c=a.subtype,delete a.subtype,c)a.networkType=c;else switch(d=b.indexOf(":"),e=b.substring(d+1)){case"wifi":case"edge":case"wwan":a.networkType=e;break;default:a.errMsg="getNetworkType:fail"}return a};c("getNetworkType",{},function(){return a._complete=function(a){a=b(a)},a}())},openLocation:function(a){c("openLocation",{latitude:a.latitude,longitude:a.longitude,name:a.name||"",address:a.address||"",scale:a.scale||28,infoUrl:a.infoUrl||""},a)},getLocation:function(a){a=a||{},c(p.getLocation,{type:a.type||"wgs84"},function(){return a._complete=function(a){delete a.type},a}())},hideOptionMenu:function(a){c("hideOptionMenu",{},a)},showOptionMenu:function(a){c("showOptionMenu",{},a)},closeWindow:function(a){a=a||{},c("closeWindow",{},a)},hideMenuItems:function(a){c("hideMenuItems",{menuList:a.menuList},a)},showMenuItems:function(a){c("showMenuItems",{menuList:a.menuList},a)},hideAllNonBaseMenuItem:function(a){c("hideAllNonBaseMenuItem",{},a)},showAllNonBaseMenuItem:function(a){c("showAllNonBaseMenuItem",{},a)},scanQRCode:function(a){a=a||{},c("scanQRCode",{needResult:a.needResult||0,scanType:a.scanType||["qrCode","barCode"]},function(){return a._complete=function(a){var b,c;z&&(b=a.resultStr,b&&(c=JSON.parse(b),a.resultStr=c&&c.scan_code&&c.scan_code.scan_result))},a}())},openAddress:function(a){c(p.openAddress,{},function(){return a._complete=function(a){a=g(a)},a}())},openProductSpecificView:function(a){c(p.openProductSpecificView,{pid:a.productId,view_type:a.viewType||0,ext_info:a.extInfo},a)},addCard:function(a){var e,f,g,h,b=a.cardList,d=[];for(e=0,f=b.length;f>e;++e)g=b[e],h={card_id:g.cardId,card_ext:g.cardExt},d.push(h);c(p.addCard,{card_list:d},function(){return a._complete=function(a){var c,d,e,b=a.card_list;if(b){for(b=JSON.parse(b),c=0,d=b.length;d>c;++c)e=b[c],e.cardId=e.card_id,e.cardExt=e.card_ext,e.isSuccess=e.is_succ?!0:!1,delete e.card_id,delete e.card_ext,delete e.is_succ;a.cardList=b,delete a.card_list}},a}())},chooseCard:function(a){c("chooseCard",{app_id:D.appId,location_id:a.shopId||"",sign_type:a.signType||"SHA1",card_id:a.cardId||"",card_type:a.cardType||"",card_sign:a.cardSign,time_stamp:a.timestamp+"",nonce_str:a.nonceStr},function(){return a._complete=function(a){a.cardList=a.choose_card_info,delete a.choose_card_info},a}())},openCard:function(a){var e,f,g,h,b=a.cardList,d=[];for(e=0,f=b.length;f>e;++e)g=b[e],h={card_id:g.cardId,code:g.code},d.push(h);c(p.openCard,{card_list:d},a)},consumeAndShareCard:function(a){c(p.consumeAndShareCard,{consumedCardId:a.cardId,consumedCode:a.code},a)},chooseWXPay:function(a){c(p.chooseWXPay,f(a),a)},openEnterpriseRedPacket:function(a){c(p.openEnterpriseRedPacket,f(a),a)},startSearchBeacons:function(a){c(p.startSearchBeacons,{ticket:a.ticket},a)},stopSearchBeacons:function(a){c(p.stopSearchBeacons,{},a)},onSearchBeacons:function(a){d(p.onSearchBeacons,a)},openEnterpriseChat:function(a){c("openEnterpriseChat",{useridlist:a.userIds,chatname:a.groupName},a)}},b&&(a.wx=a.jWeixin=G),G}); \ No newline at end of file diff --git a/spree_theme/vendor/assets/javascripts/underscore-min.js b/spree_theme/vendor/assets/javascripts/underscore-min.js new file mode 100644 index 00000000..f01025b7 --- /dev/null +++ b/spree_theme/vendor/assets/javascripts/underscore-min.js @@ -0,0 +1,6 @@ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. +(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this); +//# sourceMappingURL=underscore-min.map \ No newline at end of file diff --git a/spree_theme/vendor/assets/stylesheets/jquery.jstree/themes/spree2/style.scss b/spree_theme/vendor/assets/stylesheets/jquery.jstree/themes/spree2/style.scss new file mode 100644 index 00000000..2ff2e7a4 --- /dev/null +++ b/spree_theme/vendor/assets/stylesheets/jquery.jstree/themes/spree2/style.scss @@ -0,0 +1,217 @@ +/* + * jsTree Spree theme 1.0 + */ + +.jstree-spree2 { + + li, li ul { + border-color: #ededed; + border-style: solid; + } + + li { + margin-left: 26px; + border-width: 0 0 1px 0; + + &:last-of-type { + border-bottom-width: 0; + } + + ul { + border-width: 1px 0 0 0; + } + } + + ins { + position: relative; + cursor: pointer; + width: 24px; + line-height: 1; + height: 24px; + vertical-align: middle; + font-family: 'Glyphicons Halflings'; + color: #555; + + &:before { + position: absolute; + top: 6px; + padding-left: 4px; + font-size: 12px; + } + } + + .jstree-open > ins:before { content: '\e114' } + + .jstree-closed > ins:before { content: '\e080' } + + .jstree-leaf > ins { + background-position: -36px 0; + } + + .jstree-locked a { + color: silver; + cursor: default; + } + + a { + border: 1px solid transparent; + line-height: 24px; + height: 24px; + padding: 0; + color: #555; + cursor: context-menu; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + + &.jstree-search { + color: aqua; + } + + &.jstree-loading .jstree-icon { + background: image-url("jquery.jstree/themes/spree/throbber.gif") center center no-repeat !important; + + &:before { content: '' } + } + + .jstree-icon { + vertical-align: middle; + font-family: 'Glyphicons Halflings'; + line-height: 20px; + width: 20px; + height: 24px; + text-align: center; + margin-right: 8px; + pointer-events: none; + + &:before { + content: "\e118"; + top: 1px; + padding-left: 0; + } + } + } + + .jstree-rename-input { + height: 38px !important; + line-height: 38px !important; + left: 46px !important; + padding: 0 5px !important; + } + + .jstree-hovered { + background: #e7f4f9; + border: 1px solid #d8f0fa; + padding: 0 3px 0 1px; + text-shadow: 1px 1px 1px silver; + } + + .jstree-clicked { + background: #beebff; + border: 1px solid #99defd; + padding: 0 3px 0 1px; + } + + .jstree-no-dots li, + .jstree-no-dots .jstree-leaf > ins { + background: transparent; + } + + .jstree-no-dots .jstree-open > ins { + background-position: -18px 0; + } + + .jstree-no-dots .jstree-closed > ins { + background-position: 0 0; + } + + .jstree-no-icons a .jstree-icon { + display: none; + } + + .jstree-search { + font-style: italic; + } + + .jstree-no-icons .jstree-checkbox { + display: inline-block; + } + + .jstree-no-checkboxes .jstree-checkbox { + display: none !important; + } + + .jstree-checked > a > .jstree-checkbox { + background-position: -38px -19px; + } + + .jstree-unchecked > a > .jstree-checkbox { + background-position: -2px -19px; + } + + .jstree-undetermined > a > .jstree-checkbox { + background-position: -20px -19px; + } + + .jstree-checked > a > .checkbox:hover { + background-position: -38px -37px; + } + + .jstree-unchecked > a > .jstree-checkbox:hover { + background-position: -2px -37px; + } + + .jstree-undetermined > a > .jstree-checkbox:hover { + background-position: -20px -37px; + } +} + +#vakata-dragged.jstree-spree ins { + background: transparent !important; +} + +#vakata-contextmenu.jstree-spree-context { + background: #fbfbfb; + border: 1px solid #eee; + margin-top: 15px; + margin-left: -4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + -moz-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + + li { + + ins { display: none } + a { line-height: 38px } + } + + a { color: #555; } + + a:hover, + .vakata-hover > a { + color: inherit; + padding: 0 5px; + background: #ededed; + border: 1px solid #ededed; + -webkit-border-radius: 2px; + border-radius: 2px; + } + + li.jstree-contextmenu-disabled a , + li.jstree-contextmenu-disabled a:hover { + color: silver; + background: transparent; + border: 0; + padding: 1px 4px; + } + + li.vakata-separator { + background: white; + border-top: 1px solid #e0e0e0; + margin: 0; + } + + .icon { + margin: 0 10px 0 5px; + } +} diff --git a/spree_theme/vendor/assets/stylesheets/jquery.jstree/themes/spree2/throbber.gif b/spree_theme/vendor/assets/stylesheets/jquery.jstree/themes/spree2/throbber.gif new file mode 100644 index 00000000..08eb9a0b Binary files /dev/null and b/spree_theme/vendor/assets/stylesheets/jquery.jstree/themes/spree2/throbber.gif differ diff --git a/spree_theme/vendor/assets/stylesheets/normalize.css b/spree_theme/vendor/assets/stylesheets/normalize.css new file mode 100644 index 00000000..b26c1009 --- /dev/null +++ b/spree_theme/vendor/assets/stylesheets/normalize.css @@ -0,0 +1,427 @@ +/*! normalize.css v6.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ + +figcaption, +figure, +main { /* 1 */ + display: block; +} + +/** + * Add the correct margin in IE 8. + */ + +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ +} + +/** + * 1. Remove the bottom border in Chrome 57- and Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ + +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. + */ + +mark { + background-color: #ff0; + color: #000; +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +audio, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Remove the border on images inside links in IE 10-. + */ + +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ + +/** + * Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + margin: 0; +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ + +button, +html [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ + +details, /* 1 */ +menu { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +canvas { + display: inline-block; +} + +/** + * Add the correct display in IE. + */ + +template { + display: none; +} + +/* Hidden + ========================================================================== */ + +/** + * Add the correct display in IE 10-. + */ + +[hidden] { + display: none; +} diff --git a/test/lib/generators/shop_robots_generator_test.rb b/test/lib/generators/shop_robots_generator_test.rb new file mode 100644 index 00000000..1ee2c65a --- /dev/null +++ b/test/lib/generators/shop_robots_generator_test.rb @@ -0,0 +1,14 @@ +require 'test_helper' +require 'generators/shop_robots/shop_robots_generator' + +class ShopRobotsGeneratorTest < Rails::Generators::TestCase + tests ShopRobotsGenerator + destination Rails.root.join('tmp/generators') + setup :prepare_destination + + # test "generator runs without errors" do + # assert_nothing_raised do + # run_generator ["arguments"] + # end + # end +end diff --git a/test/unit/paper_clip_test.rb b/test/unit/paper_clip_test.rb new file mode 100644 index 00000000..29f9924c --- /dev/null +++ b/test/unit/paper_clip_test.rb @@ -0,0 +1,40 @@ +#encoding: utf-8 +require 'test_helper' +class PaperclipTest < ActiveSupport::TestCase + def setup + WebMock.disable! + #@site = Spree::Site.new(:name=>'ABCD',:domain=>'www.abc.net') + end + + test "upload image to alipay oss" do + noimage_path = File.join( Rails.root, 'app', 'assets', 'images','noimage','large.png') + file = Spree::Image.new + begin + File.open( noimage_path ) do |noimage| + file.attachment = noimage + #upload to aliyun + file.save! + end + rescue => e + puts e.inspect + end + end + + test "upload taxon icon to alipay oss" do + noimage_path = File.join( Rails.root, 'app', 'assets', 'images','noimage','large.png') + file = Spree::Image.new + begin + File.open( noimage_path ) do |noimage| + file.attachment = noimage + #upload to aliyun + file.save! + end + rescue => e + puts e.inspect + end + end + + def teardown + WebMock.enable! + end +end diff --git a/test/unit/site_test.rb b/test/unit/site_test.rb deleted file mode 100644 index fb6249d0..00000000 --- a/test/unit/site_test.rb +++ /dev/null @@ -1,48 +0,0 @@ -#encoding: utf-8 -require 'test_helper' -class SiteTest < ActiveSupport::TestCase - setup do - @site = Spree::Site.new(:name=>'ABCD',:domain=>'www.abc.net') - end - - - test "load samples" do - @site.save! - Spree::Site.current = @site - @site.load_sample - @site.reload - assert @site.shipping_categories.present? - product = @site.products.first -Rails.logger.debug "product=#{product.inspect}" - assert product.shipping_category.present?, 'product has shipping category' - assert product.tax_category.present?, 'product has tax category' - end - - - test "remove samples" do - @site.save! - @site.load_sample - @site.reload - @site.unload_sample - Spree::Site.current = @site - assert_equal Spree::Product.count,0 - assert_equal Spree::Variant.count,0 - assert_equal Spree::PaymentMethod.count,0 - assert_equal Spree::TaxCategories.count,0 - assert_equal Spree::Zone.count, 0 - assert_equal Spree::StateChange.count, 0 - #product variants - #taxonomy, taxon - #zone,zone_member - #state_changes - end - - test "create two site and load samples for them" do - @site1 = Spree::Site.create!(:name=>'Site1',:domain=>'www.site1.net',:short_name=>'site1') - @site2 = Spree::Site.create!(:name=>'Site1',:domain=>'www.site2.net',:short_name=>'site2') - @site1.load_sample - @site2.load_sample - #product image copied and in right folder. - end - -end diff --git a/todos b/todos index a3676153..a30783a2 100644 --- a/todos +++ b/todos @@ -1,158 +1,58 @@ -1. 中文示例数据 -2. 商店创建发布流程。 guided tour -3. 支持百度统计 -4. 查看注册网站信息 -5. 分析Rails日志, 查看错误请求。 -6. remove redundant option_values from server db. -7. css(:image_style), css(:slides), those situation is reading param_values in layout. try to remove it. -8. 在seeds 中设置产品的配送类型。否则导致产品无法更新。 -9. replace 'canonical' tag in original spree. -10. select variant in radio list. it is not working now. - - -https://github.com/spree/spree/issues/1906 -https://github.com/spree/spree/commit/a398bc289bb6008c177452fd1d86b652ded96dbd - -1. override spree_multi_site, should not allow user add site. -2. override spree_editor, should not allow user configure editor - -20140122 -*1. for design site, disable editor if logged in user is not admin -1. new shop no need to add taxon for each context during import theme. - a. taxon, section, page_layout has context - b. system has default taxon tree for each context, theme could use it if no taxon assigned. - - remove page_layout.current_context, fix related method - rename taxon.mtype to page_context. - move taxon routes into one place - - http://demo.david.com:3000/ account menu default taxon is not right. - http://demo.david.com:3000/ context home should be special one of list, or home have no product - section_pieces.resource length =20 - -1.1 improve spree_theme for first shop -2. prepare for import, how to handle logo image? remove upload image for now. -3. assign taxon to taxonomy name. -4. complete theme 1 -5. deploy spree_abc on vps. - -bugs -1. for unlogged customer, http://demo.david.com:3000/account would use layout 'abc_application' -*2. logged user could not design page http://design.david.com:3000/password/recover. -*3. unset container height, should remove inner height. - -4. .s_1_75 .error, should be label.error, input has class="error". - -5. fix rails r "load 'db/patch/20140329_fix_shipping_categories_site_id.rb'" -Connecting to database specified by database.yml - Spree::Preference Load (4.4ms) SELECT `spree_preferences`.* FROM `spree_preferences` WHERE `spree_preferences`.`key` = 'spree/app_configuration/show_raw_product_description/0' LIMIT 1 - (0.1ms) BEGIN - (0.3ms) UPDATE `spree_preferences` SET `value` = 1, `value_type` = 'boolean', `updated_at` = '2014-03-30 13:59:05' WHERE `spree_preferences`.`id` = 14 - (42.6ms) COMMIT - Spree::Preference Load (0.3ms) SELECT `spree_preferences`.* FROM `spree_preferences` WHERE `spree_preferences`.`key` = 'spree/multi_site_configuration/seed_dir' LIMIT 1 - (0.1ms) BEGIN - (0.3ms) UPDATE `spree_preferences` SET `value_type` = 'string', `updated_at` = '2014-03-30 13:59:05' WHERE `spree_preferences`.`id` = 15 - (45.0ms) COMMIT - Spree::Preference Load (0.3ms) SELECT `spree_preferences`.* FROM `spree_preferences` WHERE `spree_preferences`.`key` = 'spree/editor_configuration/ids' LIMIT 1 - (0.1ms) BEGIN - (0.2ms) UPDATE `spree_preferences` SET `value_type` = 'string', `updated_at` = '2014-03-30 13:59:05' WHERE `spree_preferences`.`id` = 16 -6. upload background image -ActionView::MissingTemplate (Missing template base/model_dialog with {:locale=>[:"zh-CN"], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee, :rabl], :versions=>[:v1]}. Searched in: - * "/var/www/workspace/spree_abc/app/views" - * "/home/david/.rvm/gems/ruby-1.9.3-p448@spree_abc/bundler/gems/spree_editor-4312b29cc270/app/views" - * "/home/david/.rvm/gems/ruby-1.9.3-p448@spree_abc/gems/ckeditor-4.0.6/app/views" - * "/var/www/workspace/spree_abc/spree_china_checkout/app/views" - * "/var/www/workspace/spree_alipay/app/views" - * "/var/www/workspace/spree_abc/spree_theme/app/views" - * "/var/www/workspace/spree_abc/spree_multi_site/app/views" - * "/home/david/.rvm/gems/ruby-1.9.3-p448@spree_abc/bundler/gems/spree_auth_devise-3224869cfda1/app/views" - * "/home/david/.rvm/gems/ruby-1.9.3-p448@spree_abc/gems/devise-2.2.8/app/views" - * "/home/david/.rvm/gems/ruby-1.9.3-p448@spree_abc/bundler/gems/spree-4d7ac0b2e06d/frontend/app/views" - * "/home/david/.rvm/gems/ruby-1.9.3-p448@spree_abc/bundler/gems/spree-4d7ac0b2e06d/backend/app/views" - * "/home/david/.rvm/gems/ruby-1.9.3-p448@spree_abc/bundler/gems/spree-4d7ac0b2e06d/api/app/views" - * "/home/david/.rvm/gems/ruby-1.9.3-p448@spree_abc/bundler/gems/spree-4d7ac0b2e06d/core/app/views" - * "/home/david/.rvm/gems/ruby-1.9.3-p448@spree_abc/gems/kaminari-0.15.1/app/views" - * "/var/www/workspace/spree_abc/public/shops/development/2" - * "/var/www/workspace/spree_abc/public/shops/development/2" - * "/var/www/workspace/spree_abc" - * "/" -): - -new todo -============================================================================================== -1. add feature spree_editor. - -2. https://app.shopify.com/services/signup/setup - https://shopabc-5.myshopify.com/admin/account_setup - -3. export/import theme 2. - -4. show error message in checkout page. ex. can not ship. - -5. select shop currency. use CNY - -6. add site_id into shipping_categories - -7. 生成page_tag API文档 - -1. 修正 thankyou 页面 账单地址 - -2. 上传一个原图,生成两个缩略图片 - -3. 登录后安全警告。 -http://spreecommerce.com/blog/exploits-found-within-core-and-api -http://spreecommerce.com/blog/spree-1-3-1-and-1-2-3-released - -designer todo -============================================================================================== -1. favicon 有锯齿 -2. noimages/product -3. 模板选择页面 -4. 帮助中心 -5. 定制模板过程 -6. 重新设计首页 - -developer todo -============================================================================================== -#1. 商店登录 -*1.1 user comments and advices. -1.2 demo 网站 -1.3 使用协议 -1.4 定价 -2. user.email unique for each site. -3. use current site mail server before send mail. -4. body:background -5. search, advance search - -sales todo -=============================================================================================== -1. 市场调查 -2.0 制定客户调查范围,流程 -2.1 执行客户电话调查 - - -When upgrading - -Re-run the migrations generator - - rake acts_as_taggable_on_engine:install:migrations - -It will create any new migrations and skip existing ones - - -##Breaking changes: - - - ActsAsTaggableOn::Tag is not extend with ActsAsTaggableOn::Utils anymore. - Please use ActsAsTaggableOn::Utils instead -Post-install message from capistrano-stats: - Capistrano will ask you the next time you run it if you would like to share - anonymous usage statistics with the maintainance team to help guide our - development efforts. We emplore you to opt-in, but we understand if your - privacy is important to you in this regard. -Post-install message from capistrano: -Capistrano 3.1 has some breaking changes. Please check the CHANGELOG: http://goo.gl/SxB0lr - -If you're upgrading Capistrano from 2.x, we recommend to read the upgrade guide: http://goo.gl/4536kB - -The `deploy:restart` hook for passenger applications is now in a separate gem called capistrano-passenger. Just add it to your Gemfile and require it in your Capfile. - + + +new todo +============================================================================================== + +1. store setup flow +2. docs +3. privacy_policy + + + +designer todo +============================================================================================== +1. favicon 有锯齿 +2. noimages/product +3. 模板选择页面 +4. 帮助中心 +5. 定制模板过程 +6. 重新设计首页 + +developer todo +============================================================================================== +#1. 商店登录 +*1.1 user comments and advices. +1.2 demo 网站 +1.3 使用协议 +1.4 定价 +2. user.email unique for each site. +3. use current site mail server before send mail. +4. body:background +5. search, advance search +6. fix add order from backend. error caused by spree_flexi_variants. + it overrides method OrderContent.add which is called by /api/orders/R413483534/line_items +7. page_layout scoped root_id, site_id. copy_to_new required. + +8. 支持手机注册/验证/通知 +https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address + +sales todo +=============================================================================================== +1. 市场调查 +2.0 制定客户调查范围,流程 +2.1 执行客户电话调查 + + + +2017 developer todo +============================================================================================== +1. 微信登录集成 +2. 国内快递续重计算 +3. PC,手机端付款流程改进 +4. 创建一个文件系统的模板 + +is it work? + +2018 todo +============================================================================================== +1. image_param 替换 main_image_style