ratings, home slider etc.

This commit is contained in:
Alexander Negoda 2012-07-27 00:26:23 +04:00
parent e59d11e1c9
commit b1ad108123
55 changed files with 6286 additions and 54 deletions

3
.gitignore vendored
View file

@ -14,4 +14,5 @@ Capfile
public/thumbs public/thumbs
public/uploads public/uploads
vendor/cache vendor/cache
.idea .idea
.sass-cache

View file

@ -9,6 +9,7 @@ gem 'princely'
gem 'jquery-rails' gem 'jquery-rails'
gem 'jquery-ui-rails' gem 'jquery-ui-rails'
gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git' gem 'twitter-bootstrap-rails', :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git'
gem 'ajaxful_rating_jquery', :git => 'git://github.com/baxang/ajaxful_rating_jquery.git'#, :branch => 'rails3'
gem 'configatron', :git => 'git://github.com/markbates/configatron.git' gem 'configatron', :git => 'git://github.com/markbates/configatron.git'
gem 'plupload-rails', :git => 'git://github.com/bryanmig/plupload-rails.git' gem 'plupload-rails', :git => 'git://github.com/bryanmig/plupload-rails.git'
gem 'sequel', :git => 'git://github.com/jeremyevans/sequel.git' gem 'sequel', :git => 'git://github.com/jeremyevans/sequel.git'

View file

@ -1,3 +1,9 @@
GIT
remote: git://github.com/baxang/ajaxful_rating_jquery.git
revision: b4a2c760cdbad9cd865fb18667d14045018287ed
specs:
ajaxful_rating_jquery (3.0.0.beta3)
GIT GIT
remote: git://github.com/bryanmig/plupload-rails.git remote: git://github.com/bryanmig/plupload-rails.git
revision: 6d07d0f7e05d0b3fdc9b03b49d3a7c3aa1cd703b revision: 6d07d0f7e05d0b3fdc9b03b49d3a7c3aa1cd703b
@ -251,6 +257,7 @@ PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
ajaxful_rating_jquery!
cancan cancan
carrierwave (= 0.6.2) carrierwave (= 0.6.2)
coffee-rails coffee-rails

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

View file

@ -6,6 +6,7 @@
// //
//= require jquery //= require jquery
//= require jquery_ujs //= require jquery_ujs
//= require jquery.easing.1.3
//= require twitter/bootstrap //= require twitter/bootstrap
//= require plupload //= require plupload
//= require jquery.plupload.queue //= require jquery.plupload.queue

View file

@ -0,0 +1,91 @@
/*
* Style by Rogie http://www.komodomedia.com/blog/2007/01/css-star-rating-redux/
*/
.ajaxful-rating,
.ajaxful-rating a:hover,
.ajaxful-rating a:active,
.ajaxful-rating a:focus,
.ajaxful-rating .show-value {
background: url("/assets/ajaxful_rating/star.png") left -1000px repeat-x;
}
.ajaxful-rating {
position: relative;
/*width: 125px; this is setted dynamically */
height: 25px;
overflow: hidden;
list-style: none;
margin: 0;
padding: 0;
background-position: left top;
}
.ajaxful-rating li {
display: inline;
}
.ajaxful-rating a,
.ajaxful-rating span,
.ajaxful-rating .show-value {
position: absolute;
top: 0;
left: 0;
text-indent: -1000em;
height: 25px;
line-height: 25px;
outline: none;
overflow: hidden;
border: none;
}
.ajaxful-rating a:hover,
.ajaxful-rating a:active,
.ajaxful-rating a:focus {
background-position: left bottom;
}
/* This section is generated dynamically.
Just add a call to the helper method 'ajaxful_rating_style' within
the head tags in your main layout
.ajaxful-rating .stars-1{
width: 20%;
z-index: 6;
}
.ajaxful-rating .stars-2{
width: 40%;
z-index: 5;
}
.ajaxful-rating .stars-3{
width: 60%;
z-index: 4;
}
.ajaxful-rating .stars-4{
width: 80%;
z-index: 3;
}
.ajaxful-rating .stars-5{
width: 100%;
z-index: 2;
}
*/
.ajaxful-rating .show-value {
z-index: 1;
background-position: left center;
}
/* smaller star */
.ajaxful-rating.small {
/*width: 50px; this is setted dynamically */
height: 10px;
}
.ajaxful-rating.small,
.ajaxful-rating.small a:hover,
.ajaxful-rating.small a:active,
.ajaxful-rating.small a:focus,
.ajaxful-rating.small .show-value {
background-image: url("/assets/ajaxful_rating/star_small.png");
line-height: 10px;
height: 10px;
}

View file

@ -3,4 +3,12 @@
*= require_tree . *= require_tree .
*= require jquery.plupload.queue *= require jquery.plupload.queue
*= require bootstrap_and_overrides *= require bootstrap_and_overrides
*/ */
.ajaxful-rating-wrapper{
float: right;
}
.view-btn{
display: inline;
}

View file

@ -4,7 +4,9 @@ class CollectionsController < ApplicationController
def index def index
@collections = Collection.joins(:albums => :photos).group_for.order('collections.title') @collections = Collection.includes(:albums => :photos).where("photos.id NOT NULL").group_for.order('collections.title')
@popular_photos = Photo.visible.order('rating_average asc').limit(10)
respond_to do |format| respond_to do |format|
format.html format.html
format.json { render :json => @collections } format.json { render :json => @collections }
@ -59,5 +61,11 @@ class CollectionsController < ApplicationController
redirect_to @collection redirect_to @collection
end end
end end
def rate
@collection = Collection.find(params[:id])
@collection.rate(params[:stars], current_user, params[:dimension])
render :json => {:id => @collection.wrapper_dom_id(params), :width => 125}
end
end end

View file

@ -1,6 +1,8 @@
class Album < ActiveRecord::Base class Album < ActiveRecord::Base
extend Ext::GroupFor extend Ext::GroupFor
ajaxful_rateable :stars => 5, :cache_column => :rating_average
has_many :photos, :dependent => :destroy has_many :photos, :dependent => :destroy
has_many :collection_albums has_many :collection_albums
has_many :collections, :through => :collection_albums has_many :collections, :through => :collection_albums

View file

@ -1,6 +1,8 @@
class Collection < ActiveRecord::Base class Collection < ActiveRecord::Base
extend Ext::GroupFor extend Ext::GroupFor
ajaxful_rateable :stars => 5, :cache_column => :rating_average
has_many :collection_albums has_many :collection_albums
has_many :albums, :through => :collection_albums has_many :albums, :through => :collection_albums
attr_accessor :album_list attr_accessor :album_list

View file

@ -1,19 +1,21 @@
class Photo < ActiveRecord::Base class Photo < ActiveRecord::Base
extend Ext::GroupFor extend Ext::GroupFor
ajaxful_rateable :stars => 5, :cache_column => :rating_average
belongs_to :album belongs_to :album
has_many :photo_tags, :dependent => :destroy has_many :photo_tags, :dependent => :destroy
has_many :tags, :through => :photo_tags has_many :tags, :through => :photo_tags
mount_uploader :attachment, FileUploader mount_uploader :attachment, FileUploader
before_create :exif_read before_create :exif_read
before_update :exif_write before_update :exif_write
after_create :set_title after_create :set_title
attr_accessor :tag_list attr_accessor :tag_list
scope :visible, where(:public => true)
scope :untouched, :conditions => "photos.description IS NULL AND photos.id NOT IN ( SELECT photo_id FROM photo_tags)", :include => :album scope :untouched, :conditions => "photos.description IS NULL AND photos.id NOT IN ( SELECT photo_id FROM photo_tags)", :include => :album
scope :previous, lambda { |p,a| { :conditions => ["id < :id AND album_Id = :album ", { :id => p, :album => a } ], :limit => 1, :order => "id DESC"} } scope :previous, lambda { |p,a| { :conditions => ["id < :id AND album_Id = :album ", { :id => p, :album => a } ], :limit => 1, :order => "id DESC"} }
scope :next, lambda { |p,a| { :conditions => ["id > :id AND album_Id = :album ", { :id => p, :album => a } ], :limit => 1, :order => "id ASC"} } scope :next, lambda { |p,a| { :conditions => ["id > :id AND album_Id = :album ", { :id => p, :album => a } ], :limit => 1, :order => "id ASC"} }

7
app/models/rate.rb Normal file
View file

@ -0,0 +1,7 @@
class Rate < ActiveRecord::Base
belongs_to :rater, :class_name => "User"
belongs_to :rateable, :polymorphic => true
validates_numericality_of :stars, :minimum => 1
attr_accessible :rate, :dimension
end

View file

@ -0,0 +1,7 @@
class SecretLinkObserver < ActiveRecord::Observer
observe :collection, :album, :photo
def before_create(record)
record.url = ::SecureRandom.hex(16)
end
end

View file

@ -4,6 +4,8 @@ class User < ActiveRecord::Base
attr_accessible :id, :name, :second_name, :surname, :email, :password, :password_confirmation, :remember_me, :userpic attr_accessible :id, :name, :second_name, :surname, :email, :password, :password_confirmation, :remember_me, :userpic
ajaxful_rater
mount_uploader :userpic, UserpicUploader mount_uploader :userpic, UserpicUploader
has_and_belongs_to_many :roles has_and_belongs_to_many :roles

View file

@ -64,22 +64,38 @@ class FileUploader < CarrierWave::Uploader::Base
end end
end end
version :preview do ######################################################################################################################
process :resize_to_fit => [210, 210] # Note
# The default grid system provided in Bootstrap utilizes 12 columns that
# render out at widths of 724px, 940px (default without responsive CSS included), and 1170px.
# Below 767px viewports, the columns become fluid and stack vertically.
version :middle do
process :resize_to_fit => [724, 500]
def store_dir def store_dir
ENV['STORAGE_PATH'] + "/thumbs/#{model.album.path}/#{model.id}" ENV['STORAGE_PATH'] + "/thumbs/#{model.album.path}/#{model.id}"
end end
end end
version :single do version :large do
process :resize_to_limit => [950, 950] process :resize_to_fit => [940, 500]
def store_dir def store_dir
ENV['STORAGE_PATH'] + "/thumbs/#{model.album.path}/#{model.id}" ENV['STORAGE_PATH'] + "/thumbs/#{model.album.path}/#{model.id}"
end end
end end
version :largest do
process :resize_to_fit => [1170, 500]
def store_dir
ENV['STORAGE_PATH'] + "/thumbs/#{model.album.path}/#{model.id}"
end
end
######################################################################################################################
# Add a white list of extensions which are allowed to be uploaded, # Add a white list of extensions which are allowed to be uploaded,
# for images you might use something like this: # for images you might use something like this:
def extension_white_list def extension_white_list

View file

@ -9,6 +9,13 @@ class UserpicUploader < CarrierWave::Uploader::Base
"#{::SecureRandom.hex(8)}#{File.extname(original_filename).downcase}" if original_filename "#{::SecureRandom.hex(8)}#{File.extname(original_filename).downcase}" if original_filename
end end
version :mini do
process :resize_to_fit => [50, 50]
def store_dir
"#{ENV['STORAGE_PATH']}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}/mini"
end
end
version :small do version :small do
process :resize_to_fit => [100, 100] process :resize_to_fit => [100, 100]

View file

@ -1,25 +1,31 @@
<% @collections.in_groups_of(4).compact.each do |group| %> <div class="row">
<% unless group.compact.empty? %> <%= render 'shared/home_slider' %>
<ul class="thumbnails"> </div>
<% group.compact.each do |collection| %> <div class="clearfix"></div>
<% unless collection.albums.empty? %> <div class="row">
<% unless collection.albums.first.photos.empty? %> <div class="span12">
<li class="span3"> <% @collections.in_groups_of(4).each do |group| %>
<div class="thumbnail"> <% unless group.empty? %>
<%= image_tag collection.albums.first.photos.first.attachment.collection.url %> <ul class="thumbnails">
<div class="caption"> <% group.compact.each_with_index do |collection, index| %>
<h5><%= collection.title %></h5> <li class="span3">
<p><%= collection.description %></p> <div class="thumbnail">
<p><%= link_to 'View', (collection_path(collection) unless collection.albums.empty? || collection.albums.first.photos.empty?), {:class => 'btn btn-primary'} %></p> <%= image_tag collection.albums.first.photos.first.attachment.collection.url %>
</div> <div class="caption">
</div> <h5><%= collection.title %></h5>
</li> <p><%= collection.description %></p>
<% end %> <p class="view-btn"><%= link_to 'View', (collection_path(collection) unless collection.albums.empty? || collection.albums.first.photos.empty?), {:class => 'btn btn-primary'} %></p>
<% end %> <%= ratings_for collection %>
<% end %> </div>
</ul> </div>
<% end %> </li>
<% end %> <% end %>
</ul>
<% end %>
<% end %>
</div>
</div>
<%= content_for :action_links do %> <%= content_for :action_links do %>

View file

@ -6,24 +6,16 @@
<body> <body>
<%= render :partial => 'shared/nav_bar' %> <%= render :partial => 'shared/nav_bar' %>
<div class="container"> <div class="container">
<!-- Main hero unit for a primary marketing message or call to action -->
<div class="hero-unit">
<h1>Hello, world!</h1>
<p>This is a template for a simple marketing or informational website. It includes a large callout called the hero
unit and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
<p><a class="btn btn-primary btn-large">Learn more &raquo;</a></p>
</div>
<!-- Example row of columns -->
<div class="row"> <div class="row">
<div class="span12 notice"><%= flash[:notice] %></div>
<div class="span12"> <div class="span12">
<%= yield %> <%= yield %>
</div> </div>
</div> </div>
<hr> <hr>
<footer> <footer>
<p>&copy; Company 2012</p> <p>&copy; Photomix 2012</p>
</footer> </footer>
</div> </div>
<!-- /container -->
</body> </body>
</html> </html>

View file

@ -33,4 +33,6 @@
<%= favicon_link_tag 'images/favicon.ico', :rel => 'shortcut icon' %> <%= favicon_link_tag 'images/favicon.ico', :rel => 'shortcut icon' %>
<%= yield :head %> <%= yield :head %>
<%= yield :javascript %> <%= yield :javascript %>
<%= raw ajaxful_rating_style %>
<%= raw ajaxful_rating_script %>

View file

@ -0,0 +1,38 @@
<%= content_for :head do %>
<%= stylesheet_link_tag "anythingslider/anythingslider" %>
<%= javascript_include_tag "anythingslider/jquery.anythingslider.min" %>
<script>
$(function () {
$('#home-slider').anythingSlider({
// theme:'metallic',
expand:true,
//resizeContents: false,
autoPlay:true
});
});
</script>
<style type="text/css">
#home-slider {
height: 1000px;
}
.slider-wrapper {
width: 100%;
height: 1000px;
margin: 0 auto;
margin-bottom: 20px;
}
</style>
<% end %>
<div class="span12 slider-wrapper">
<ul id="home-slider">
<% @popular_photos.each do |photo| %>
<li><%= image_tag photo.attachment.large.url %></li>
<% end %>
</ul>
</div>

View file

@ -0,0 +1,8 @@
<a href="javascript:alert('Your screen resolution is '+screen.width+'x'+screen.height);">Click for your screen resolution</a>
<input type="hidden" id="resolution_screen" name="resolution_screen">
<%= content_for :action_links do %>
<% if current_user and current_user.has_role?("admin") %>
<%= link_to "New collection", new_collection_path %>
<% end %>
<% end %>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

View file

@ -0,0 +1,84 @@
/*
* Style by Rogie http://www.komodomedia.com/blog/2007/01/css-star-rating-redux/
*/
.ajaxful-rating,
.ajaxful-rating a:hover,
.ajaxful-rating a:active,
.ajaxful-rating a:focus,
.ajaxful-rating .show-value{
background: image-url("ajaxful_rating/star.png") left -1000px repeat-x;
}
.ajaxful-rating{
position: relative;
/*width: 125px; this is setted dynamically */
height: 25px;
overflow: hidden;
list-style: none;
margin: 0;
padding: 0;
background-position: left top;
}
.ajaxful-rating li{ display: inline; }
.ajaxful-rating a,
.ajaxful-rating span,
.ajaxful-rating .show-value{
position: absolute;
top: 0;
left: 0;
text-indent: -1000em;
height: 25px;
line-height: 25px;
outline: none;
overflow: hidden;
border: none;
}
.ajaxful-rating a:hover,
.ajaxful-rating a:active,
.ajaxful-rating a:focus{
background-position: left bottom;
}
/* This section is generated dynamically.
Just add a call to the helper method 'ajaxful_rating_style' within
the head tags in your main layout
.ajaxful-rating .stars-1{
width: 20%;
z-index: 6;
}
.ajaxful-rating .stars-2{
width: 40%;
z-index: 5;
}
.ajaxful-rating .stars-3{
width: 60%;
z-index: 4;
}
.ajaxful-rating .stars-4{
width: 80%;
z-index: 3;
}
.ajaxful-rating .stars-5{
width: 100%;
z-index: 2;
}
*/
.ajaxful-rating .show-value{
z-index: 1;
background-position: left center;
}
/* smaller star */
.ajaxful-rating.small{
/*width: 50px; this is setted dynamically */
height: 10px;
}
.ajaxful-rating.small,
.ajaxful-rating.small a:hover,
.ajaxful-rating.small a:active,
.ajaxful-rating.small a:focus,
.ajaxful-rating.small .show-value{
background-image: image-url("ajaxful_rating/star_small.png");
line-height: 10px;
height: 10px;
}

View file

@ -12,7 +12,7 @@ module Photomix
# Custom directories with classes and modules you want to be autoloadable. # Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/ # config.autoload_paths += %W(#{config.root}/
config.autoload_paths += %W(#{config.root}/lib #{config.root}/app/middleware/) config.autoload_paths += %W(#{config.root}/lib #{config.root}/app/middleware/)
config.active_record.observers = :secret_link_observer
config.encoding = "utf-8" config.encoding = "utf-8"
config.i18n.default_locale = :ru config.i18n.default_locale = :ru
config.time_zone = 'Moscow' config.time_zone = 'Moscow'

View file

@ -14,6 +14,10 @@ Photomix::Application.routes.draw do
resource :account, :controller => :users resource :account, :controller => :users
resources :photos do resources :photos do
member do
post :rate
end
collection do collection do
get :untouched get :untouched
post :edit_multiple post :edit_multiple
@ -22,10 +26,16 @@ Photomix::Application.routes.draw do
get :scan get :scan
end end
end end
resources :albums do resources :albums do
member do
post :rate
end
collection do collection do
get :untouched get :untouched
end end
resources :tags do resources :tags do
resources :photos do resources :photos do
collection do collection do
@ -35,6 +45,7 @@ Photomix::Application.routes.draw do
end end
end end
end end
resources :photos do resources :photos do
collection do collection do
get :untouched get :untouched
@ -43,7 +54,12 @@ Photomix::Application.routes.draw do
end end
end end
end end
resources :collections do resources :collections do
member do
post :rate
end
resources :albums do resources :albums do
resources :photos do resources :photos do
collection do collection do

View file

@ -3,6 +3,10 @@ class CreateAlbum < ActiveRecord::Migration
create_table :albums do |t| create_table :albums do |t|
t.string :title, :length => 250, :null => false t.string :title, :length => 250, :null => false
t.text :description t.text :description
t.decimal :rating_average, :default => 0, :precision => 6, :scale => 2
t.string :url
t.boolean :public
t.timestamps t.timestamps
end end
end end

View file

@ -4,6 +4,10 @@ class CreatePhotos < ActiveRecord::Migration
t.string :title, :length => 250 t.string :title, :length => 250
t.text :description t.text :description
t.references :album t.references :album
t.decimal :rating_average, :default => 0, :precision => 6, :scale => 2
t.string :url
t.boolean :public
t.timestamps t.timestamps
end end
end end

View file

@ -3,6 +3,9 @@ class CreateCollections < ActiveRecord::Migration
create_table :collections do |t| create_table :collections do |t|
t.string :title, :null => false t.string :title, :null => false
t.string :description t.string :description
t.decimal :rating_average, :default => 0, :precision => 6, :scale => 2
t.string :url
t.boolean :public, :default => false
t.timestamps t.timestamps
end end

View file

@ -0,0 +1,18 @@
class CreateRates < ActiveRecord::Migration
def self.up
create_table :rates do |t|
t.belongs_to :rater
t.belongs_to :rateable, :polymorphic => true
t.integer :stars, :null => false
t.string :dimension
t.timestamps
end
add_index :rates, :rater_id
add_index :rates, [:rateable_id, :rateable_type]
end
def self.down
drop_table :rates
end
end

View file

@ -11,13 +11,16 @@
# #
# It's strongly recommended to check this file into your version control system. # It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20100412220801) do ActiveRecord::Schema.define(:version => 20120724213209) do
create_table "albums", :force => true do |t| create_table "albums", :force => true do |t|
t.string "title", :null => false t.string "title", :null => false
t.text "description" t.text "description"
t.datetime "created_at", :null => false t.decimal "rating_average", :precision => 6, :scale => 2, :default => 0.0
t.datetime "updated_at", :null => false t.string "url"
t.boolean "public"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.text "path" t.text "path"
t.string "address" t.string "address"
t.float "longitude" t.float "longitude"
@ -38,10 +41,13 @@ ActiveRecord::Schema.define(:version => 20100412220801) do
add_index "collection_albums", ["collection_id"], :name => "index_collection_albums_on_collection_id" add_index "collection_albums", ["collection_id"], :name => "index_collection_albums_on_collection_id"
create_table "collections", :force => true do |t| create_table "collections", :force => true do |t|
t.string "title", :null => false t.string "title", :null => false
t.string "description" t.string "description"
t.datetime "created_at", :null => false t.decimal "rating_average", :precision => 6, :scale => 2, :default => 0.0
t.datetime "updated_at", :null => false t.string "url"
t.boolean "public", :default => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end end
add_index "collections", ["id"], :name => "index_collections_on_id", :unique => true add_index "collections", ["id"], :name => "index_collections_on_id", :unique => true
@ -60,8 +66,11 @@ ActiveRecord::Schema.define(:version => 20100412220801) do
t.string "title" t.string "title"
t.text "description" t.text "description"
t.integer "album_id" t.integer "album_id"
t.datetime "created_at", :null => false t.decimal "rating_average", :precision => 6, :scale => 2, :default => 0.0
t.datetime "updated_at", :null => false t.string "url"
t.boolean "public"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.text "path" t.text "path"
t.float "longitude" t.float "longitude"
t.float "latitude" t.float "latitude"
@ -71,6 +80,19 @@ ActiveRecord::Schema.define(:version => 20100412220801) do
add_index "photos", ["album_id"], :name => "index_photos_on_album_id" add_index "photos", ["album_id"], :name => "index_photos_on_album_id"
add_index "photos", ["id"], :name => "index_photos_on_id", :unique => true add_index "photos", ["id"], :name => "index_photos_on_id", :unique => true
create_table "rates", :force => true do |t|
t.integer "rater_id"
t.integer "rateable_id"
t.string "rateable_type"
t.integer "stars", :null => false
t.string "dimension"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "rates", ["rateable_id", "rateable_type"], :name => "index_rates_on_rateable_id_and_rateable_type"
add_index "rates", ["rater_id"], :name => "index_rates_on_rater_id"
create_table "roles", :force => true do |t| create_table "roles", :force => true do |t|
t.string "name" t.string "name"
t.datetime "created_at", :null => false t.datetime "created_at", :null => false

View file

@ -19,4 +19,8 @@ user.roles << Role.make!(name: 'admin')
20.times.map { Photo.make! } 20.times.map { Photo.make! }
10.times.map { CollectionAlbum.make! } 10.times.map { CollectionAlbum.make! }
20.times.map{ Rate.make!(:collections) }
20.times.map{ Rate.make!(:albums) }
20.times.map{ Rate.make!(:photos) }
FileUtils.rm_rf "#{Rails.root}/tmp/attachments" FileUtils.rm_rf "#{Rails.root}/tmp/attachments"

View file

@ -20,7 +20,6 @@ User.blueprint {
surname { Faker::NameRU.last_name(sex) } surname { Faker::NameRU.last_name(sex) }
confirmed_at { Time.now + rand(1..4) } confirmed_at { Time.now + rand(1..4) }
confirmation_sent_at { Time.now + rand(5..9) } confirmation_sent_at { Time.now + rand(5..9) }
# TODO migrate from paperclip to carrier_wave
userpic { userpic {
file_name = ::SecureRandom.hex(8) file_name = ::SecureRandom.hex(8)
file = open("http://lorempixel.com/800/500/abstract/") file = open("http://lorempixel.com/800/500/abstract/")
@ -39,11 +38,15 @@ Album.blueprint {
title { Faker::Lorem.sentence(rand(3)) } title { Faker::Lorem.sentence(rand(3)) }
description { Faker::Lorem.sentence } description { Faker::Lorem.sentence }
path { "my_album_#{sn}" } path { "my_album_#{sn}" }
rating_average { rand(1..5) }
public { true }
} }
Collection.blueprint { Collection.blueprint {
title { Faker::Lorem.sentence(rand(3)) } title { Faker::Lorem.sentence(rand(3)) }
description { Faker::Lorem.sentence } description { Faker::Lorem.sentence }
rating_average { rand(1..5) }
public { true }
} }
CollectionAlbum.blueprint { CollectionAlbum.blueprint {
@ -55,9 +58,11 @@ Photo.blueprint {
title { Faker::Lorem.sentence(rand(3)) } title { Faker::Lorem.sentence(rand(3)) }
description { Faker::Lorem.sentence } description { Faker::Lorem.sentence }
album { Album.find(rand(1..20)) } album { Album.find(rand(1..20)) }
rating_average { rand(1..5) }
public { true }
attachment { attachment {
file_name = ::SecureRandom.hex(8) file_name = ::SecureRandom.hex(8)
file = open("http://lorempixel.com/800/500/abstract/") file = open("http://lorempixel.com/1300/1000/people/")
if file.kind_of? Tempfile if file.kind_of? Tempfile
name = File.basename(file.path) name = File.basename(file.path)
FileUtils.move(file.path, "#{Rails.root}/tmp/attachments/#{name}.jpeg") FileUtils.move(file.path, "#{Rails.root}/tmp/attachments/#{name}.jpeg")
@ -69,3 +74,22 @@ Photo.blueprint {
} }
} }
Rate.blueprint(:collections) {
rateable { Collection.find(rand(1..20)) }
rater { User.find(rand(1..20)) }
stars { rand(1..5) }
}
Rate.blueprint(:albums) {
rateable { Album.find(rand(1..20)) }
rater { User.find(rand(1..20)) }
stars { rand(1..5) }
}
Rate.blueprint(:photos) {
rateable { Photo.find(rand(1..20)) }
rater { User.find(rand(1..20)) }
stars { rand(1..5) }
}

View file

@ -0,0 +1,7 @@
require 'test_helper'
class SecretLinkObserverTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,291 @@
/*
AnythingSlider v1.8+ Default theme
By Chris Coyier: http://css-tricks.com
with major improvements by Doug Neiner: http://pixelgraphics.us/
based on work by Remy Sharp: http://jqueryfordesigners.com/
*/
/*****************************
SET DEFAULT DIMENSIONS HERE
*****************************/
/* change the ID & dimensions to match your slider */
#slider {
width: 700px;
height: 390px;
list-style: none;
/* Prevent FOUC (see FAQ page) and keep things readable if javascript is disabled */
overflow-y: auto;
overflow-x: hidden;
}
/******************
SET STYLING HERE
******************
=================================
Default state (no keyboard focus)
==================================*/
/* Overall Wrapper */
.anythingSlider-default {
margin: 0 auto;
/* 45px right & left padding for the arrows, 28px @ bottom for navigation */
padding: 0 45px 28px 45px;
}
/* slider window - top & bottom borders, default state */
.anythingSlider-default .anythingWindow {
border-top: 3px solid #777;
border-bottom: 3px solid #777;
}
/* Navigation buttons + start/stop button, default state */
.anythingSlider-default .anythingControls a {
/* top shadow */
background: #777 url(../images/default.png) center -288px repeat-x;
color: #000;
border-radius: 0 0 5px 5px;
-moz-border-radius: 0 0 5px 5px;
-webkit-border-radius: 0 0 5px 5px;
}
/* Make sure navigation text is visible */
.anythingSlider-default .anythingControls a span {
visibility: visible;
}
/* Navigation current button, default state */
.anythingSlider-default .anythingControls a.cur {
background: #888;
color: #000;
}
/* start-stop button, stopped, default state */
.anythingSlider-default .anythingControls a.start-stop {
background-color: #040;
color: #ddd;
}
/* start-stop button, playing, default state */
.anythingSlider-default .anythingControls a.start-stop.playing {
background-color: #800;
}
/* start-stop button, default hovered text color (when visible) */
/* hide nav/start-stop background image shadow on hover - makes the button appear to come forward */
.anythingSlider-default .anythingControls a.start-stop:hover,
.anythingSlider-default .anythingControls a.start-stop.hover,
.anythingSlider-default .anythingControls a.start-stop .anythingControls ul a:hover {
background-image: none;
color: #ddd;
}
/*
=================================
Active State (has keyboard focus)
=================================
*/
/* slider window - top & bottom borders, active state */
.anythingSlider-default.activeSlider .anythingWindow {
border-color: #7C9127;
}
/* Navigation buttons, active state */
.anythingSlider-default.activeSlider .anythingControls a {
/* background image = top shadow */
background-color: #7C9127;
}
/* Navigation current & hovered button, active state */
.anythingSlider-default.activeSlider .anythingControls a.cur,
.anythingSlider-default.activeSlider .anythingControls a:hover {
/* background image removed */
background: #7C9127;
}
/* start-stop button, stopped, active state */
.anythingSlider-default.activeSlider .anythingControls a.start-stop {
background-color: #080;
color: #fff;
}
/* start-stop button, playing, active state */
.anythingSlider-default.activeSlider .anythingControls a.start-stop.playing {
background-color: #d00;
color: #fff;
}
/* start-stop button, active slider hovered text color (when visible) */
.anythingSlider-default.activeSlider .start-stop:hover,
.anythingSlider-default.activeSlider .start-stop.hover {
color: #fff;
}
/************************
NAVIGATION POSITIONING
************************/
/* Navigation Arrows */
.anythingSlider-default .arrow {
top: 50%;
position: absolute;
display: block;
}
.anythingSlider-default .arrow a {
display: block;
width: 45px;
height: 140px;
margin: -70px 0 0 0; /* half height of image */
text-align: center;
outline: 0;
background: url(../images/default.png) no-repeat;
}
/* back arrow */
.anythingSlider-default .back { left: 0; }
.anythingSlider-default .back a { background-position: left top; }
.anythingSlider-default .back a:hover,
.anythingSlider-default .back a.hover { background-position: left -140px; }
/* forward arrow */
.anythingSlider-default .forward { right: 0; }
.anythingSlider-default .forward a { background-position: right top; }
.anythingSlider-default .forward a:hover,
.anythingSlider-default .forward a.hover { background-position: right -140px; }
/* Navigation Links */
.anythingSlider-default .anythingControls { outline: 0; display: none; }
.anythingSlider-default .anythingControls ul { margin: 0; padding: 0; float: left; }
.anythingSlider-default .anythingControls ul li { display: inline; }
.anythingSlider-default .anythingControls ul a {
font: 11px/18px Georgia, Serif;
display: inline-block;
text-decoration: none;
padding: 2px 8px;
height: 18px;
margin: 0 5px 0 0;
text-align: center;
outline: 0;
}
/* navigationSize window */
.anythingSlider-default .anythingControls .anythingNavWindow {
overflow: hidden;
float: left;
}
/* Autoplay Start/Stop button */
.anythingSlider-default .anythingControls .start-stop {
padding: 2px 5px;
width: 40px;
text-align: center;
text-decoration: none;
float: right;
z-index: 100;
outline: 0;
}
/***********************
IE8 AND OLDER STYLING
***********************/
/* Navigation Arrows */
.as-oldie .anythingSlider-default .arrow {
top: 30%;
}
.as-oldie .anythingSlider-default .arrow a {
margin: 0;
}
/* margin between nav buttons just looks better */
.as-oldie .anythingSlider-default .anythingControls li {
margin-left: 3px;
}
/* When using the navigationSize option, the side margins need to be zero
None of the navigation panels look good in IE7 now =( */
.as-oldie .anythingSlider-default .anythingControls a {
margin: 0;
}
.as-oldie .anythingSlider-default .anythingNavWindow {
margin: 0 2px;
}
.as-oldie .anythingSlider-default .anythingNavWindow li {
padding: 3px 0 0 0;
}
/***********************
COMMON SLIDER STYLING
***********************/
/* Overall Wrapper */
.anythingSlider {
display: block;
overflow: visible !important;
position: relative;
}
/* anythingSlider viewport window */
.anythingSlider .anythingWindow {
overflow: hidden;
position: relative;
width: 100%;
height: 100%;
}
/* anythingSlider base (original element) */
.anythingSlider .anythingBase {
background: transparent;
list-style: none;
position: absolute;
overflow: visible !important;
top: 0;
left: 0;
margin: 0;
padding: 0;
}
/* Navigation arrow text; indent moved to span inside "a", for IE7;
apparently, a negative text-indent on an "a" link moves the link as well as the text */
.anythingSlider .arrow span {
display: block;
visibility: hidden;
}
/* disabled arrows, hide or reduce opacity: opacity: .5; filter: alpha(opacity=50); */
.anythingSlider .arrow.disabled {
display: none;
}
/* all panels inside the slider; horizontal mode */
.anythingSlider .panel {
background: transparent;
display: block;
overflow: hidden;
float: left;
padding: 0;
margin: 0;
}
/* vertical mode */
.anythingSlider .vertical .panel {
float: none;
}
/* fade mode */
.anythingSlider .fade .panel {
float: none;
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
/* fade mode active page - visible & on top */
.anythingSlider .fade .activePage {
z-index: 0;
}
/***********************
RTL STYLING
***********************/
/* slider autoplay right-to-left, reverse order of nav links to look better */
.anythingSlider.rtl .anythingWindow {
direction: ltr;
unicode-bidi: bidi-override;
}
.anythingSlider.rtl .anythingControls ul { float: left; } /* move nav link group to left */
.anythingSlider.rtl .anythingControls ul a { float: right; } /* reverse order of nav links */
.anythingSlider.rtl .start-stop { /* float: right; */ } /* move start/stop button - in case you want to switch sides */
/* probably not necessary, but added just in case */
.anythingSlider,
.anythingSlider .anythingWindow,
.anythingSlider .anythingControls ul a,
.anythingSlider .arrow a,
.anythingSlider .start-stop {
transition-duration: 0;
-o-transition-duration: 0;
-moz-transition-duration: 0;
-webkit-transition-duration: 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,6 @@
/*
* AnythingSlider Slide FX 1.6 minified for AnythingSlider v1.7.11+
* By Rob Garrison (aka Mottie & Fudgey)
* Dual licensed under the MIT and GPL licenses.
*/
(function(h){h.fn.anythingSliderFx=function(q,r){var n=h(this).closest(".anythingSlider"),i=n.width(),o=n.height(),p=function(a){var b=a,l;a&&"string"===typeof a&&0<a.indexOf(",")&&(a=a.split(","),b=h.trim(a[0]),l=h.trim(a[1]));return{top:[{inFx:{top:0},outFx:{top:"-"+(b||o)}}],bottom:[{inFx:{top:0},outFx:{top:b||o}}],left:[{inFx:{left:0},outFx:{left:"-"+(b||i)}}],right:[{inFx:{left:0},outFx:{left:b||i}}],fade:[{inFx:{opacity:b||1},outFx:{opacity:0}}],expand:[{inFx:{width:l||"100%",height:l||"100%", top:"0%",left:"0%"},outFx:{width:b||"10%",height:b||"10%",top:"50%",left:"50%"}}],grow:[{inFx:{top:0,fontSize:b||"16px",opacity:1},outFx:{top:"-200px",fontSize:l||"80px",opacity:0}}],listLR:[{inFx:{left:0,opacity:1},outFx:[{left:b||i,opacity:0},{left:"-"+(b||i),opacity:0}],selector:[":odd",":even"]}],listRL:[{inFx:{left:0,opacity:1},outFx:[{left:b||i,opacity:0},{left:"-"+(b||i),opacity:0}],selector:[":even",":odd"]}],"caption-Top":[{inFx:{top:0,opacity:0.8},outFx:{top:"-"+b||-50,opacity:0}}],"caption-Right":[{inFx:{right:0, opacity:0.8},outFx:{right:"-"+b||-150,opacity:0}}],"caption-Bottom":[{inFx:{bottom:0,opacity:0.8},outFx:{bottom:"-"+b||-50,opacity:0}}],"caption-Left":[{inFx:{left:0,opacity:0.8},outFx:{left:"-"+b||-150,opacity:0}}]}};return this.each(function(){h(this).data("AnythingSlider").fx=q;var a=h.extend({easing:"swing",timeIn:400,timeOut:350,stopRepeat:!1,outFxBind:"slide_init",inFxBind:"slide_complete",dataAnimate:"data-animate"},r),b=p(),l=function(a,c,d,b){if(!(0===a.length||"undefined"===typeof c)){var f= c[0]||c,e=f[1]||"",b=b||parseInt(""===e?f.duration:f[0].duration,10);if(d&&("absolute"!==a.css("position")&&a.css({position:"relative"}),a.stop(),""!==e)){a.filter(c[1][0]).animate(f[0],{queue:!1,duration:b,easing:f[0].easing});a.filter(c[1][1]).animate(e,{queue:!0,duration:b,easing:f[0].easing});return}a.animate(f,{queue:!0,duration:b,easing:f.easing})}},i=function(k,c){var d,j=c?"outFx":"inFx",f={},e=c?a.timeOut:a.timeIn,g=h.trim(k[0].replace(/\s+/g," ")).split(" ");if(c&&1===g.length&&b.hasOwnProperty(g)&& "undefined"!==typeof b[g][0].selector)return d=b[g][0].outFx,d[0].duration=k[2]||a.timeOut,d[0].easing=k[3]||a.easing,[d,b[g][0].selector||[]];h.each(g,function(d,g){if(b.hasOwnProperty(g)){var i="undefined"===typeof k[1]||""===k[1],i=i?b:p(k[1]);h.extend(!0,f,i[g][0][j]);i=k[2]||f.duration||e;f.duration=c?i/2:i;f.easing=isNaN(k[3])?k[3]||a.easing:k[4]||a.easing}});return[f]},m=h(this).bind(a.outFxBind,function(b,c){if(!(a.stopRepeat&&c.$lastPage[0]===c.$targetPage[0])){var d,j,f,e=c.$lastPage.add(c.$items.eq(c.exactPage)).add(c.$targetPage), g=c.fx;0===c.exactPage&&(e=e.add(c.$items.eq(c.pages)));c.options.animationTime<a.timeOut&&(f=c.options.animationTime||a.timeOut);e=e.find("*").andSelf();for(d in g)if("outFx"===d)for(j in g.outFx)e.filter(j).length&&l(e.filter(j),g.outFx[j],!0);else"inFx"!==d&&h.isArray(g[d])&&e.filter(d).length&&l(e.filter(d),i(g[d],!0),!0,f);d=e.filter("["+a.dataAnimate+"]");d.length&&d.each(function(){g=h(this).attr(a.dataAnimate).split(",");""!==g[0]&&h(this).removeClass(g[0]).addClass(g[1]||g[0])})}}).bind(a.inFxBind, function(b,c){if(!(a.stopRepeat&&c.$lastPage[0]===c.$targetPage[0])){var d,j,f=c.$currentPage.add(c.$items.eq(c.exactPage)),e=c.fx,f=f.find("*").andSelf();for(d in e)if("inFx"===d)for(j in e.inFx)f.filter(j).length&&l(f.filter(j),e.inFx[j],!1);else"outFx"!==d&&h.isArray(e[d])&&f.filter(d).length&&l(f.filter(d),i(e[d],!1),!1);d=f.filter("["+a.dataAnimate+"]");d.length&&d.each(function(){e=h(this).attr(a.dataAnimate).split(",");""!==e[0]&&h(this).removeClass(e[1]||e[0]).addClass(e[0])})}}).data("AnythingSlider"); h(window).load(function(){m.gotoPage(m.currentPage,m.playing)})})}})(jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,299 @@
/*
AnythingSlider v1.8+ Construction theme
By Rob Garrison
*/
/*****************************
SET DEFAULT DIMENSIONS HERE
*****************************/
/* change the ID & dimensions to match your slider */
#slider {
width: 700px;
height: 390px;
list-style: none;
/* Prevent FOUC (see FAQ page) and keep things readable if javascript is disabled */
overflow-y: auto;
overflow-x: hidden;
}
/******************
SET STYLING HERE
******************
=================================
Default state (no keyboard focus)
=================================*/
/* Overall Wrapper */
.anythingSlider-construction {
margin: 0 auto;
/* 45px right & left padding for the navigation arrows */
padding: 0 45px;
}
/* slider window - top & bottom borders, default state */
.anythingSlider-construction .anythingWindow {
border-top: 3px solid #333;
border-bottom: 3px solid #333;
}
/* Navigation buttons + start/stop button, default state */
.anythingSlider-construction .anythingControls a {
background: transparent url(../images/construction.gif) -52px top no-repeat;
color: #fff;
}
/* Navigation current button, default state */
.anythingSlider-construction .anythingControls a.cur,
.anythingSlider-construction .anythingControls a:hover {
background-position: -52px -18px;
color: #000;
}
/* start-stop button, stopped, default state */
.anythingSlider-construction .anythingControls a.start-stop {
background-position: -52px -35px;
}
/* start-stop button, playing, default state */
.anythingSlider-construction .anythingControls a.start-stop.playing {
background-position: -52px -52px;
}
/* start-stop button, default hovered text color (when visible) */
/* hide nav/start-stop background image shadow on hover - makes the button appear to come forward */
.anythingSlider-construction .anythingControls a.start-stop:hover,
.anythingSlider-construction .anythingControls a.start-stop.hover,
.anythingSlider-construction .anythingControls a.start-stop .anythingControls ul a:hover {
background-position: -52px -18px;
}
/*
=================================
Active State (has keyboard focus)
=================================
*/
/* slider window - top & bottom borders, active state */
.anythingSlider-construction.activeSlider .anythingWindow {
border-color: #d0aa0d;
}
/************************
NAVIGATION POSITIONING
************************/
/* Navigation Arrows */
.anythingSlider-construction .arrow {
top: 50%;
position: absolute;
display: block;
}
.anythingSlider-construction .arrow a {
display: block;
width: 45px;
height: 200px;
margin: -100px 0 0 0; /* half height of image */
text-align: center;
outline: 0;
background: url(../images/construction.gif) no-repeat;
}
/* back arrow */
.anythingSlider-construction .back { left: 0; }
.anythingSlider-construction .back a {
background-position: left center;
border-radius: 5px 0 0 5px;
-moz-border-radius: 5px 0 0 5px;
-webkit-border-radius: 5px 0 0 5px;
}
.anythingSlider-construction .back a:hover,
.anythingSlider-construction .back a.hover {
background-position: -5px center;
}
/* forward arrow */
.anythingSlider-construction .forward { right: 0; }
.anythingSlider-construction .forward a {
background-position: right center;
border-radius: 0 5px 5px 0;
-moz-border-radius: 0 5px 5px 0;
-webkit-border-radius: 0 5px 5px 0;
}
.anythingSlider-construction .forward a:hover,
.anythingSlider-construction .forward a.hover {
background-position: -67px center;
}
/* Navigation Links */
.anythingSlider-construction .anythingControls {
height: 22px; /* limit height, needed for IE9 of all things */
outline: 0;
display: none;
float: right;
position: absolute;
bottom: 5px;
right: 20px;
margin: 0 45px; /* needed for IE */
z-index: 100;
opacity: 0.90;
filter: alpha(opacity=90);
}
.anythingSlider-construction .anythingControls ul {
margin: 0;
padding: 0;
float: left;
}
.anythingSlider-construction .anythingControls ul li {
list-style: none;
float: left;
margin: 0;
padding: 0;
}
.anythingSlider-construction .anythingControls ul a {
display: inline-block;
width: 15px;
height: 15px;
margin: 3px;
padding: 0;
text-decoration: none;
text-align: center;
outline: 0;
}
.anythingSlider-construction .anythingControls span {
display: block;
visibility: hidden; /* needed for IE8, instead of text-indent: -9999px */
}
/* navigationSize window */
.anythingSlider-construction .anythingControls .anythingNavWindow {
overflow: hidden;
float: left;
}
/* navigationSize arrows */
.anythingSlider-construction .anythingControls li.next a,
.anythingSlider-construction .anythingControls li.prev a {
width: 14px;
height: 14px;
margin: 4px;
}
/* navigationSize nav arrow positioning */
.anythingSlider-construction .anythingControls li.next a {
background-position: -92px -143px;
}
.anythingSlider-construction .anythingControls li.next a:hover {
background-position: -90px -143px;
}
.anythingSlider-construction .anythingControls li.prev a {
background-position: -11px -143px;
}
.anythingSlider-construction .anythingControls li.prev a:hover {
background-position: -13px -143px;
}
/* Autoplay Start/Stop button */
.anythingSlider-construction .anythingControls .start-stop {
display: inline-block;
width: 15px;
height: 15px;
margin: 3px;
padding: 0;
text-decoration: none;
z-index: 100;
outline: 0;
}
/***********************
IE8 AND OLDER STYLING
***********************/
/* Navigation Arrows */
.as-oldie .anythingSlider-construction .arrow {
top: 14%;
}
.as-oldie .anythingSlider-construction .arrow a {
margin: 0;
}
/***********************
COMMON SLIDER STYLING
***********************/
/* Overall Wrapper */
.anythingSlider {
display: block;
overflow: visible !important;
position: relative;
}
/* anythingSlider viewport window */
.anythingSlider .anythingWindow {
overflow: hidden;
position: relative;
width: 100%;
height: 100%;
}
/* anythingSlider base (original element) */
.anythingSlider .anythingBase {
background: transparent;
list-style: none;
position: absolute;
overflow: visible !important;
top: 0;
left: 0;
margin: 0;
padding: 0;
}
/* Navigation arrow text; indent moved to span inside "a", for IE7;
apparently, a negative text-indent on an "a" link moves the link as well as the text */
.anythingSlider .arrow span {
display: block;
visibility: hidden;
}
/* disabled arrows, hide or reduce opacity: opacity: .5; filter: alpha(opacity=50); */
.anythingSlider .arrow.disabled {
display: none;
}
/* all panels inside the slider; horizontal mode */
.anythingSlider .panel {
background: transparent;
display: block;
overflow: hidden;
float: left;
padding: 0;
margin: 0;
}
/* vertical mode */
.anythingSlider .vertical .panel {
float: none;
}
/* fade mode */
.anythingSlider .fade .panel {
float: none;
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
/* fade mode active page - visible & on top */
.anythingSlider .fade .activePage {
z-index: 0;
}
/***********************
RTL STYLING
***********************/
/* slider autoplay right-to-left, reverse order of nav links to look better */
.anythingSlider.rtl .anythingWindow {
direction: ltr;
unicode-bidi: bidi-override;
}
.anythingSlider.rtl .anythingControls ul { float: left; } /* move nav link group to left */
.anythingSlider.rtl .anythingControls ul a { float: right; } /* reverse order of nav links */
.anythingSlider.rtl .start-stop { /* float: right; */ } /* move start/stop button - in case you want to switch sides */
/* probably not necessary, but added just in case */
.anythingSlider .anythingWindow,
.anythingSlider .anythingControls ul a,
.anythingSlider .arrow a,
.anythingSlider .start-stop {
transition-duration: 0;
-o-transition-duration: 0;
-moz-transition-duration: 0;
-webkit-transition-duration: 0;
}

View file

@ -0,0 +1,277 @@
/*
AnythingSlider v1.8+ cs-portfolio theme
By Curtis Scott (http://www.curtisscott.com/portfolio.html)
***
Note: the nav-cs-portfolio.png used for navigation and slideshow buttons uses a semi-transparent png,
through which the background color is seen... so colors set will turn out darker than normal
***/
/*****************************
SET DEFAULT DIMENSIONS HERE
*****************************/
/* change the ID & dimensions to match your slider */
#slider {
width: 700px;
height: 390px;
list-style: none;
/* Prevent FOUC (see FAQ page) and keep things readable if javascript is disabled */
overflow-y: auto;
overflow-x: hidden;
}
/******************
SET STYLING HERE
******************
=================================
Default state (no keyboard focus)
==================================*/
/* Overall Wrapper */
.anythingSlider-cs-portfolio {
margin: 0 auto;
padding: 0;
}
/* slider window - top & bottom borders, default state */
.anythingSlider-cs-portfolio .anythingWindow {
border: 0;
}
/* Navigation buttons + start/stop button, default state */
.anythingSlider-cs-portfolio .anythingControls a {
background: #fff url(../images/cs-portfolio.png) right -20px no-repeat;
color: #000;
}
/* Navigation current button, default state */
.anythingSlider-cs-portfolio .anythingControls a.cur,
.anythingSlider-cs-portfolio .anythingControls a:hover {
background-color: #0d5c9f;
color: #000;
}
/* start-stop button, stopped, default state */
.anythingSlider-cs-portfolio .anythingControls a.start-stop {
background-color: #080;
background-position: right top;
color: #ddd;
}
/* start-stop button, default hovered text color (when visible) */
.anythingSlider-cs-portfolio .anythingControls a.start-stop:hover,
.anythingSlider-cs-portfolio .anythingControls a.start-stop.hover {
background-color: #0f0;
color: #fff;
}
/* start-stop button, playing, default state */
.anythingSlider-cs-portfolio .anythingControls a.start-stop.playing {
background-color: #800;
}
.anythingSlider-cs-portfolio .anythingControls a.start-stop.playing:hover {
background-color: #f00;
}
/************************
NAVIGATION POSITIONING
************************/
/* Navigation Arrows */
.anythingSlider-cs-portfolio .arrow {
display: block;
position: absolute;
bottom: -38px;
z-index: 100;
}
.anythingSlider-cs-portfolio .arrow a {
display: block;
width: 26px;
height: 27px;
text-align: center;
outline: 0;
background: url(../images/cs-portfolio.png) no-repeat;
}
/* back arrow */
.anythingSlider-cs-portfolio .back { left: 20px; }
.anythingSlider-cs-portfolio .back a { background-position: left top; }
.anythingSlider-cs-portfolio .back a:hover,
.anythingSlider-cs-portfolio .back a.hover { background-position: left -27px; }
/* forward arrow */
.anythingSlider-cs-portfolio .forward { right: 20px; }
.anythingSlider-cs-portfolio .forward a { background-position: -24px top; }
.anythingSlider-cs-portfolio .forward a:hover,
.anythingSlider-cs-portfolio .forward a.hover { background-position: -24px -27px; }
/* Navigation Links */
.anythingSlider-cs-portfolio .anythingControls {
position: relative;
background: url(../images/cs-portfolio.png) repeat-x bottom center;
height: 49px;
margin: 0 auto;
padding-left: 75px;
text-align: center;
}
.anythingSlider-cs-portfolio .anythingControls ul {
margin: 0;
padding: 0;
z-index: 100;
}
.anythingSlider-cs-portfolio .anythingControls ul.thumbNav {
padding-top: 18px;
}
.anythingSlider-cs-portfolio .anythingControls ul li {
margin: 0;
padding: 0;
display: inline;
}
.anythingSlider-cs-portfolio .anythingControls ul a {
font: 11px/18px Georgia, Serif;
width: 17px;
height: 17px;
margin: 0 5px 0 0;
padding: 0;
float: left;
text-decoration: none;
text-align: center;
outline: 0;
border: 0;
}
/* navigationSize window */
.anythingSlider-cs-portfolio .anythingControls .anythingNavWindow {
margin: 0 5px 0 0;
overflow: hidden;
float: left;
}
.anythingSlider-cs-portfolio .anythingControls li.next a,
.anythingSlider-cs-portfolio .anythingControls li.prev a {
margin: 19px 5px 0 5px;
width: 16px;
height: 15px;
background: url(../images/cs-portfolio.png) -25px -54px no-repeat;
}
.anythingSlider-cs-portfolio .anythingControls li.prev a {
background-position: -9px -54px;
}
.anythingSlider-cs-portfolio .anythingControls li.next a:hover {
background-position: -56px -54px;
}
.anythingSlider-cs-portfolio .anythingControls li.prev a:hover {
background-position: -41px -54px;
}
/* Autoplay Start/Stop button */
.anythingSlider-cs-portfolio .anythingControls .start-stop {
right: 60px;
top: 15px;
margin: 0;
padding: 0;
position: absolute;
text-align: center;
width: 20px;
height: 20px;
z-index: 100;
border: 0;
}
/***********************
IE8 AND OLDER STYLING
***********************/
/* Navigation Arrows */
.as-oldie .anythingSlider-cs-portfolio .anythingControls a span {
line-height: 1px; /* needed for IE7 */
}
/* IE7 png fix*/
.as-oldie .anythingSlider-cs-portfolio .arrow a,
.as-oldie .anythingSlider-cs-portfolio .anythingControls,
.as-oldie .anythingSlider-cs-portfolio .anythingControls a {
_background:none;
_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../images/cs-portfolio.png',sizingMethod='crop');
}
/***********************
COMMON SLIDER STYLING
***********************/
/* Overall Wrapper */
.anythingSlider {
display: block;
overflow: visible !important;
position: relative;
}
/* anythingSlider viewport window */
.anythingSlider .anythingWindow {
overflow: hidden;
position: relative;
width: 100%;
height: 100%;
}
/* anythingSlider base (original element) */
.anythingSlider .anythingBase {
background: transparent;
list-style: none;
position: absolute;
overflow: visible !important;
top: 0;
left: 0;
margin: 0;
padding: 0;
}
/* Navigation arrow text; indent moved to span inside "a", for IE7;
apparently, a negative text-indent on an "a" link moves the link as well as the text */
.anythingSlider .arrow span,
.anythingSlider .anythingControls span {
display: block;
visibility: hidden;
}
/* disabled arrows, hide or reduce opacity: opacity: .5; filter: alpha(opacity=50); */
.anythingSlider .arrow.disabled {
display: none;
}
/* all panels inside the slider; horizontal mode */
.anythingSlider .panel {
background: transparent;
display: block;
overflow: hidden;
float: left;
padding: 0;
margin: 0;
}
/* vertical mode */
.anythingSlider .vertical .panel {
float: none;
}
/* fade mode */
.anythingSlider .fade .panel {
float: none;
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
/* fade mode active page - visible & on top */
.anythingSlider .fade .activePage {
z-index: 0;
}
/***********************
RTL STYLING
***********************/
/* slider autoplay right-to-left, reverse order of nav links to look better */
.anythingSlider.rtl .anythingWindow {
direction: ltr;
unicode-bidi: bidi-override;
}
.anythingSlider.rtl .anythingControls ul { float: left; } /* move nav link group to left */
.anythingSlider.rtl .anythingControls ul a { float: right; } /* reverse order of nav links */
.anythingSlider.rtl .start-stop { /* float: right; */ } /* move start/stop button - in case you want to switch sides */
/* probably not necessary, but added just in case */
.anythingSlider,
.anythingSlider .anythingWindow,
.anythingSlider .anythingControls ul a,
.anythingSlider .arrow a,
.anythingSlider .start-stop {
transition-duration: 0;
-o-transition-duration: 0;
-moz-transition-duration: 0;
-webkit-transition-duration: 0;
}

View file

@ -0,0 +1,313 @@
/*
AnythingSlider v1.8+ Metallic theme
By Rob Garrison
*/
/*****************************
SET DEFAULT DIMENSIONS HERE
*****************************/
/* change the ID & dimensions to match your slider */
#slider {
width: 700px;
height: 390px;
list-style: none;
/* Prevent FOUC (see FAQ page) and keep things readable if javascript is disabled */
overflow-y: auto;
overflow-x: hidden;
}
/******************
SET STYLING HERE
******************
=================================
Default state (no keyboard focus)
==================================*/
/* Overall Wrapper */
.anythingSlider-metallic {
margin: 0 auto;
/* 23px right & left padding for the navigation arrows */
padding: 0 23px;
}
/* slider window - top & bottom borders, default state */
.anythingSlider-metallic .anythingWindow {
border-top: 3px solid #333;
border-bottom: 3px solid #333;
}
/* Navigation buttons + start/stop button, default state */
.anythingSlider-metallic .anythingControls a {
background: transparent url(../images/arrows-metallic.png) -68px -40px repeat-x;
color: #000;
border: #000 1px solid;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
/* Navigation current button, default state */
.anythingSlider-metallic .anythingControls a.cur,
.anythingSlider-metallic .anythingControls a:hover {
background-position: -70px -137px;
background-color: #888;
color: #000;
}
/* start-stop button, stopped, default state */
.anythingSlider-metallic .anythingControls a.start-stop {
background: #040;
color: #ddd;
/* top shadow */
-moz-box-shadow: inset 1px 2px 5px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: inset 1px 2px 5px rgba(0, 0, 0, 0.5);
box-shadow: inset 1px 2px 5px rgba(0, 0, 0, 0.5);
}
/* start-stop button, playing, default state */
.anythingSlider-metallic .anythingControls a.start-stop.playing {
background-color: #800;
}
/* start-stop button, default hovered text color (when visible) */
/* hide nav/start-stop background image shadow on hover - makes the button appear to come forward */
.anythingSlider-metallic .anythingControls a.start-stop:hover,
.anythingSlider-metallic .anythingControls a.start-stop.hover,
.anythingSlider-metallic .anythingControls a.start-stop .anythingControls ul a:hover {
color: #fff;
/* clear top shadow */
-moz-box-shadow: inset 0 0 0 #000000;
-webkit-box-shadow: inset 0 0 0 #000000;
box-shadow: inset 0 0 0 #000000;
}
/*
=================================
Active State (has keyboard focus)
=================================
*/
/* slider window - top & bottom borders, active state */
.anythingSlider-metallic.activeSlider .anythingWindow {
border-color: #0355a3;
}
/* Navigation buttons, active state */
.anythingSlider-metallic.activeSlider .anythingControls a {
background-color: transparent;
}
/* Navigation current button, active state */
.anythingSlider-metallic.activeSlider .anythingControls a.cur,
.anythingSlider-metallic.activeSlider .anythingControls a:hover {
background-position: -76px -57px;
background-color: #ccc;
}
/* start-stop button, stopped, active state */
.anythingSlider-metallic.activeSlider .anythingControls a.start-stop {
background: #080;
color: #fff;
}
/* start-stop button, playing, active state */
.anythingSlider-metallic.activeSlider .anythingControls a.start-stop.playing {
color: #fff;
background: #d00;
}
/* start-stop button, active slider hovered text color (when visible) */
.anythingSlider-metallic.activeSlider .start-stop:hover,
.anythingSlider-metallic.activeSlider .start-stop.hover {
color: #fff;
}
/************************
NAVIGATION POSITIONING
************************/
/* Navigation Arrows */
.anythingSlider-metallic .arrow {
top: 50%;
position: absolute;
display: block;
z-index: 100;
}
.anythingSlider-metallic .arrow a {
display: block;
width: 45px;
height: 95px;
margin: -47.5px 0 0 0; /* half height of image */
text-align: center;
outline: 0;
background: url(../images/arrows-metallic.png) no-repeat;
}
/* back arrow */
.anythingSlider-metallic .back { left: 0; }
.anythingSlider-metallic .back a { background-position: left bottom; }
.anythingSlider-metallic .back a:hover,
.anythingSlider-metallic .back a.hover { background-position: left top; }
/* forward arrow */
.anythingSlider-metallic .forward { right: 0; }
.anythingSlider-metallic .forward a { background-position: right bottom; }
.anythingSlider-metallic .forward a:hover,
.anythingSlider-metallic .forward a.hover { background-position: right top; }
/* Navigation Links */
.anythingSlider-metallic .anythingControls {
height: 15px; /* limit height, needed for IE9 of all things */
outline: 0;
display: none;
float: right;
position: absolute;
bottom: 5px;
right: 20px;
margin: 0 45px;
z-index: 100;
opacity: 0.90;
filter: alpha(opacity=90);
}
.anythingSlider-metallic .anythingControls ul {
margin: 0;
padding: 0;
float: left;
}
.anythingSlider-metallic .anythingControls ul li {
list-style: none;
float: left;
margin: 0;
padding: 0;
}
.anythingSlider-metallic .anythingControls ul a {
display: inline-block;
width: 10px;
height: 10px;
margin: 3px;
padding: 0;
text-decoration: none;
text-align: center;
outline: 0;
}
.anythingSlider-metallic .anythingControls span {
display: block;
visibility: hidden;
}
/* navigationSize window */
.anythingSlider-metallic .anythingControls .anythingNavWindow {
overflow: hidden;
float: left;
}
/* navigationSize nav arrow positioning */
.anythingSlider-metallic .anythingControls li.prev a span,
.anythingSlider-metallic .anythingControls li.next a span {
visibility: visible;
position: relative;
top: -6px; /* bring navigationSize text arrows into view */
color: #fff;
}
/* Autoplay Start/Stop button */
.anythingSlider-metallic .anythingControls .start-stop {
display: inline-block;
width: 10px;
height: 10px;
margin: 3px;
padding: 0;
text-align: center;
text-decoration: none;
z-index: 100;
outline: 0;
}
/***********************
IE8 AND OLDER STYLING
***********************/
/* Navigation Arrows */
.as-oldie .anythingSlider-metallic .arrow {
top: 40%;
}
.as-oldie .anythingSlider-metallic .arrow a {
margin: 0;
}
/***********************
COMMON SLIDER STYLING
***********************/
/* Overall Wrapper */
.anythingSlider {
display: block;
overflow: visible !important;
position: relative;
}
/* anythingSlider viewport window */
.anythingSlider .anythingWindow {
overflow: hidden;
position: relative;
width: 100%;
height: 100%;
}
/* anythingSlider base (original element) */
.anythingSlider .anythingBase {
background: transparent;
list-style: none;
position: absolute;
overflow: visible !important;
top: 0;
left: 0;
margin: 0;
padding: 0;
}
/* Navigation arrow text; indent moved to span inside "a", for IE7;
apparently, a negative text-indent on an "a" link moves the link as well as the text */
.anythingSlider .arrow span {
display: block;
visibility: hidden;
}
/* disabled arrows, hide or reduce opacity: opacity: .5; filter: alpha(opacity=50); */
.anythingSlider .arrow.disabled {
display: none;
}
/* all panels inside the slider; horizontal mode */
.anythingSlider .panel {
background: transparent;
display: block;
overflow: hidden;
float: left;
padding: 0;
margin: 0;
}
/* vertical mode */
.anythingSlider .vertical .panel {
float: none;
}
/* fade mode */
.anythingSlider .fade .panel {
float: none;
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
/* fade mode active page - visible & on top */
.anythingSlider .fade .activePage {
z-index: 0;
}
/***********************
RTL STYLING
***********************/
/* slider autoplay right-to-left, reverse order of nav links to look better */
.anythingSlider.rtl .anythingWindow {
direction: ltr;
unicode-bidi: bidi-override;
}
.anythingSlider.rtl .anythingControls ul { float: left; } /* move nav link group to left */
.anythingSlider.rtl .anythingControls ul a { float: right; } /* reverse order of nav links */
.anythingSlider.rtl .start-stop { /* float: right; */ } /* move start/stop button - in case you want to switch sides */
/* probably not necessary, but added just in case */
.anythingSlider .anythingWindow,
.anythingSlider .anythingControls ul a,
.anythingSlider .arrow a,
.anythingSlider .start-stop {
transition-duration: 0;
-o-transition-duration: 0;
-moz-transition-duration: 0;
-webkit-transition-duration: 0;
}

View file

@ -0,0 +1,311 @@
/*
AnythingSlider v1.8+ Minimalist Round theme
By Rob Garrison
*/
/*****************************
SET DEFAULT DIMENSIONS HERE
*****************************/
/* change the ID & dimensions to match your slider */
#slider {
width: 700px;
height: 390px;
list-style: none;
/* Prevent FOUC (see FAQ page) and keep things readable if javascript is disabled */
overflow-y: auto;
overflow-x: hidden;
}
/******************
SET STYLING HERE
******************
=================================
Default state (no keyboard focus)
==================================*/
/* Overall Wrapper */
.anythingSlider-minimalist-round {
margin: 0 auto;
/* 30px right & left padding for the navigation arrows */
padding: 0 30px;
}
/* slider window - top & bottom borders, default state */
.anythingSlider-minimalist-round .anythingWindow {
border-top: 3px solid #333;
border-bottom: 3px solid #333;
}
/* Navigation buttons + start/stop button, default state */
.anythingSlider-minimalist-round .anythingControls a {
background-color: #333;
color: #fff;
border: #000 1px solid;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}
/* Navigation current button, default state */
.anythingSlider-minimalist-round .anythingControls a.cur,
.anythingSlider-minimalist-round .anythingControls a:hover {
background-color: #777;
color: #000;
}
/* start-stop button, stopped, default state */
.anythingSlider-minimalist-round .anythingControls a.start-stop {
background: #040;
color: #ddd;
/* top shadow */
-moz-box-shadow: inset 1px 2px 5px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: inset 1px 2px 5px rgba(0, 0, 0, 0.5);
box-shadow: inset 1px 2px 5px rgba(0, 0, 0, 0.5);
}
/* start-stop button, playing, default state */
.anythingSlider-minimalist-round .anythingControls a.start-stop.playing {
background-color: #800;
}
/* start-stop button, default hovered text color (when visible) */
/* hide nav/start-stop background image shadow on hover - makes the button appear to come forward */
.anythingSlider-minimalist-round .anythingControls a.start-stop:hover,
.anythingSlider-minimalist-round .anythingControls a.start-stop.hover,
.anythingSlider-minimalist-round .anythingControls a.start-stop .anythingControls ul a:hover {
color: #fff;
/* clear top shadow */
-moz-box-shadow: inset 0 0 0 #000000;
-webkit-box-shadow: inset 0 0 0 #000000;
box-shadow: inset 0 0 0 #000000;
}
/*
=================================
Active State (has keyboard focus)
=================================
*/
/* slider window - top & bottom borders, active state */
.anythingSlider-minimalist-round.activeSlider .anythingWindow {
border-color: #164054;
}
/* Navigation buttons, active state */
.anythingSlider-minimalist-round.activeSlider .anythingControls a {
background-color: #164054;
color: #fff;
}
/* Navigation current button, active state */
.anythingSlider-minimalist-round.activeSlider .anythingControls a.cur,
.anythingSlider-minimalist-round.activeSlider .anythingControls a:hover {
background-color: #fff;
color: #000;
}
/* start-stop button, stopped, active state */
.anythingSlider-minimalist-round.activeSlider .anythingControls a.start-stop {
background: #080;
color: #fff;
}
/* start-stop button, playing, active state */
.anythingSlider-minimalist-round.activeSlider .anythingControls a.start-stop.playing {
color: #fff;
background: #f00;
}
/* start-stop button, active slider hovered text color (when visible) */
.anythingSlider-minimalist-round.activeSlider .start-stop:hover,
.anythingSlider-minimalist-round.activeSlider .start-stop.hover {
color: #fff;
}
/************************
NAVIGATION POSITIONING
************************/
/* Navigation Arrows */
.anythingSlider-minimalist-round .arrow {
top: 50%;
position: absolute;
display: block;
}
.anythingSlider-minimalist-round .arrow a {
display: block;
width: 30px;
height: 40px;
margin: -20px 0 0 0; /* half height of image */
text-align: center;
outline: 0;
background: url(../images/arrows-minimalist.png) no-repeat;
}
/* back arrow */
.anythingSlider-minimalist-round .back { left: 0; }
.anythingSlider-minimalist-round .back a { background-position: left bottom; }
.anythingSlider-minimalist-round .back a:hover,
.anythingSlider-minimalist-round .back a.hover { background-position: left top; }
/* forward arrow */
.anythingSlider-minimalist-round .forward { right: 0; }
.anythingSlider-minimalist-round .forward a { background-position: right bottom; }
.anythingSlider-minimalist-round .forward a:hover,
.anythingSlider-minimalist-round .forward a.hover { background-position: right top; }
/* Navigation Links */
.anythingSlider-minimalist-round .anythingControls {
height: 15px; /* limit height, needed for IE9 of all things */
outline: 0;
display: none;
float: right;
position: absolute;
bottom: 5px;
right: 20px;
margin: 0 45px;
z-index: 100;
opacity: 0.90;
filter: alpha(opacity=90);
}
.anythingSlider-minimalist-round .anythingControls ul {
margin: 0;
padding: 0;
float: left;
}
.anythingSlider-minimalist-round .anythingControls ul li {
list-style: none;
float: left;
margin: 0;
padding: 0;
}
.anythingSlider-minimalist-round .anythingControls ul a {
display: inline-block;
width: 10px;
height: 10px;
margin: 3px;
padding: 0;
text-decoration: none;
text-align: center;
outline: 0;
}
.anythingSlider-minimalist-round .anythingControls span {
display: block;
visibility: hidden;
}
/* navigationSize window */
.anythingSlider-minimalist-round .anythingControls .anythingNavWindow {
overflow: hidden;
float: left;
}
/* navigationSize nav arrow positioning */
.anythingSlider-minimalist-round .anythingControls li.prev span,
.anythingSlider-minimalist-round .anythingControls li.next span {
visibility: visible;
position: relative;
top: -6px; /* bring navigationSize text arrows into view */
}
/* Autoplay Start/Stop button */
.anythingSlider-minimalist-round .anythingControls .start-stop {
display: inline-block;
width: 10px;
height: 10px;
margin: 3px;
padding: 0;
text-align: center;
text-decoration: none;
z-index: 100;
outline: 0;
}
/***********************
IE8 AND OLDER STYLING
***********************/
/* Navigation Arrows */
.as-oldie .anythingSlider-minimalist-round .arrow {
top: 45%;
}
.as-oldie .anythingSlider-minimalist-round .arrow a {
margin: 0;
}
/***********************
COMMON SLIDER STYLING
***********************/
/* Overall Wrapper */
.anythingSlider {
display: block;
overflow: visible !important;
position: relative;
}
/* anythingSlider viewport window */
.anythingSlider .anythingWindow {
overflow: hidden;
position: relative;
width: 100%;
height: 100%;
}
/* anythingSlider base (original element) */
.anythingSlider .anythingBase {
background: transparent;
list-style: none;
position: absolute;
overflow: visible !important;
top: 0;
left: 0;
margin: 0;
padding: 0;
}
/* Navigation arrow text; indent moved to span inside "a", for IE7;
apparently, a negative text-indent on an "a" link moves the link as well as the text */
.anythingSlider .arrow span {
display: block;
visibility: hidden;
}
/* disabled arrows, hide or reduce opacity: opacity: .5; filter: alpha(opacity=50); */
.anythingSlider .arrow.disabled {
display: none;
}
/* all panels inside the slider; horizontal mode */
.anythingSlider .panel {
background: transparent;
display: block;
overflow: hidden;
float: left;
padding: 0;
margin: 0;
}
/* vertical mode */
.anythingSlider .vertical .panel {
float: none;
}
/* fade mode */
.anythingSlider .fade .panel {
float: none;
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
/* fade mode active page - visible & on top */
.anythingSlider .fade .activePage {
z-index: 0;
}
/***********************
RTL STYLING
***********************/
/* slider autoplay right-to-left, reverse order of nav links to look better */
.anythingSlider.rtl .anythingWindow {
direction: ltr;
unicode-bidi: bidi-override;
}
.anythingSlider.rtl .anythingControls ul { float: left; } /* move nav link group to left */
.anythingSlider.rtl .anythingControls ul a { float: right; } /* reverse order of nav links */
.anythingSlider.rtl .start-stop { /* float: right; */ } /* move start/stop button - in case you want to switch sides */
/* probably not necessary, but added just in case */
.anythingSlider .anythingWindow,
.anythingSlider .anythingControls ul a,
.anythingSlider .arrow a,
.anythingSlider .start-stop {
transition-duration: 0;
-o-transition-duration: 0;
-moz-transition-duration: 0;
-webkit-transition-duration: 0;
}

View file

@ -0,0 +1,309 @@
/*
AnythingSlider v1.8+ Minimalist Square theme
By Rob Garrison
*/
/*****************************
SET DEFAULT DIMENSIONS HERE
*****************************/
/* change the ID & dimensions to match your slider */
#slider {
width: 700px;
height: 390px;
list-style: none;
/* Prevent FOUC (see FAQ page) and keep things readable if javascript is disabled */
overflow-y: auto;
overflow-x: hidden;
}
/******************
SET STYLING HERE
******************
=================================
Default state (no keyboard focus)
==================================*/
/* Overall Wrapper */
.anythingSlider-minimalist-square {
margin: 0 auto;
/* 30px right & left padding for the navigation arrows */
padding: 0 30px;
}
/* slider window - top & bottom borders, default state */
.anythingSlider-minimalist-square .anythingWindow {
border-top: 3px solid #333;
border-bottom: 3px solid #333;
}
/* Navigation buttons + start/stop button, default state */
.anythingSlider-minimalist-square .anythingControls a {
background-color: #333;
color: #fff;
border: #000 1px solid;
}
/* Navigation current button, default state */
.anythingSlider-minimalist-square .anythingControls a.cur,
.anythingSlider-minimalist-square .anythingControls a:hover {
background-color: #777;
color: #000;
}
/* start-stop button, stopped, default state */
.anythingSlider-minimalist-square .anythingControls a.start-stop {
background: #040;
color: #ddd;
/* top shadow */
-moz-box-shadow: inset 1px 2px 5px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: inset 1px 2px 5px rgba(0, 0, 0, 0.5);
box-shadow: inset 1px 2px 5px rgba(0, 0, 0, 0.5);
}
/* start-stop button, playing, default state */
.anythingSlider-minimalist-square .anythingControls a.start-stop.playing {
background-color: #800;
}
/* start-stop button, default hovered text color (when visible) */
/* hide nav/start-stop background image shadow on hover - makes the button appear to come forward */
.anythingSlider-minimalist-square .anythingControls a.start-stop:hover,
.anythingSlider-minimalist-square .anythingControls a.start-stop.hover,
.anythingSlider-minimalist-square .anythingControls a.start-stop .anythingControls ul a:hover {
color: #fff;
/* clear top shadow */
-moz-box-shadow: inset 0 0 0 #000000;
-webkit-box-shadow: inset 0 0 0 #000000;
box-shadow: inset 0 0 0 #000000;
}
/*
=================================
Active State (has keyboard focus)
=================================
*/
/* slider window - top & bottom borders, active state */
.anythingSlider-minimalist-square.activeSlider .anythingWindow {
border-color: #164054;
}
/* Navigation buttons, active state */
.anythingSlider-minimalist-square.activeSlider .anythingControls a {
background-color: #164054;
color: #fff;
}
/* Navigation current button, active state */
.anythingSlider-minimalist-square.activeSlider .anythingControls a.cur,
.anythingSlider-minimalist-square.activeSlider .anythingControls a:hover {
background-color: #fff;
color: #000;
}
/* start-stop button, stopped, active state */
.anythingSlider-minimalist-square.activeSlider .anythingControls a.start-stop {
background: #080;
color: #fff;
}
/* start-stop button, playing, active state */
.anythingSlider-minimalist-square.activeSlider .anythingControls a.start-stop.playing {
color: #fff;
background: #f00;
}
/* start-stop button, active slider hovered text color (when visible) */
.anythingSlider-minimalist-square.activeSlider .start-stop:hover,
.anythingSlider-minimalist-square.activeSlider .start-stop.hover {
color: #fff;
}
/************************
NAVIGATION POSITIONING
************************/
/* Navigation Arrows */
.anythingSlider-minimalist-square .arrow {
top: 50%;
position: absolute;
display: block;
}
.anythingSlider-minimalist-square .arrow a {
display: block;
width: 30px;
height: 40px;
margin: -20px 0 0 0; /* half height of image */
text-align: center;
outline: 0;
background: url(../images/arrows-minimalist.png) no-repeat;
}
/* back arrow */
.anythingSlider-minimalist-square .back { left: 0; }
.anythingSlider-minimalist-square .back a { background-position: left bottom; }
.anythingSlider-minimalist-square .back a:hover,
.anythingSlider-minimalist-square .back a.hover { background-position: left top; }
/* forward arrow */
.anythingSlider-minimalist-square .forward { right: 0; }
.anythingSlider-minimalist-square .forward a { background-position: right bottom; }
.anythingSlider-minimalist-square .forward a:hover,
.anythingSlider-minimalist-square .forward a.hover { background-position: right top; }
/* Navigation Links */
.anythingSlider-minimalist-square .anythingControls {
height: 15px; /* limit height, needed for IE9 of all things */
outline: 0;
display: none;
float: right;
position: absolute;
bottom: 5px;
right: 20px;
margin: 0 45px;
z-index: 100;
opacity: 0.90;
filter: alpha(opacity=90);
}
.anythingSlider-minimalist-square .anythingControls ul {
margin: 0;
padding: 0;
float: left;
}
.anythingSlider-minimalist-square .anythingControls ul li {
list-style: none;
float: left;
margin: 0;
padding: 0;
}
.anythingSlider-minimalist-square .anythingControls ul a {
display: inline-block;
width: 10px;
height: 10px;
margin: 3px;
padding: 0;
text-decoration: none;
text-align: center;
outline: 0;
}
.anythingSlider-minimalist-square .anythingControls span {
display: block;
visibility: hidden;
}
/* navigationSize window */
.anythingSlider-minimalist-square .anythingControls .anythingNavWindow {
overflow: hidden;
float: left;
}
/* navigationSize nav arrow positioning */
.anythingSlider-minimalist-square .anythingControls li.prev span,
.anythingSlider-minimalist-square .anythingControls li.next span {
visibility: visible;
position: relative;
top: -6px; /* bring navigationSize text arrows into view */
}
/* Autoplay Start/Stop button */
.anythingSlider-minimalist-square .anythingControls .start-stop {
margin: 3px;
padding: 0;
display: inline-block;
width: 10px;
height: 10px;
text-align: center;
text-decoration: none;
z-index: 100;
outline: 0;
}
/***********************
IE8 AND OLDER STYLING
***********************/
/* Navigation Arrows */
.as-oldie .anythingSlider-minimalist-square .arrow {
top: 45%;
}
.as-oldie .anythingSlider-minimalist-square .arrow a {
margin: 0;
}
/***********************
COMMON SLIDER STYLING
***********************/
/* Overall Wrapper */
.anythingSlider {
display: block;
overflow: visible !important;
position: relative;
}
/* anythingSlider viewport window */
.anythingSlider .anythingWindow {
overflow: hidden;
position: relative;
width: 100%;
height: 100%;
}
/* anythingSlider base (original element) */
.anythingSlider .anythingBase {
background: transparent;
list-style: none;
position: absolute;
overflow: visible !important;
top: 0;
left: 0;
margin: 0;
padding: 0;
}
/* Navigation arrow text; indent moved to span inside "a", for IE7;
apparently, a negative text-indent on an "a" link moves the link as well as the text */
.anythingSlider .arrow span {
display: block;
visibility: hidden;
}
/* disabled arrows, hide or reduce opacity: opacity: .5; filter: alpha(opacity=50); */
.anythingSlider .arrow.disabled {
display: none;
}
/* all panels inside the slider; horizontal mode */
.anythingSlider .panel {
background: transparent;
display: block;
overflow: hidden;
float: left;
padding: 0;
margin: 0;
}
/* vertical mode */
.anythingSlider .vertical .panel {
float: none;
}
/* fade mode */
.anythingSlider .fade .panel {
float: none;
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
/* fade mode active page - visible & on top */
.anythingSlider .fade .activePage {
z-index: 0;
}
/***********************
RTL STYLING
***********************/
/* slider autoplay right-to-left, reverse order of nav links to look better */
.anythingSlider.rtl .anythingWindow {
direction: ltr;
unicode-bidi: bidi-override;
}
.anythingSlider.rtl .anythingControls ul { float: left; } /* move nav link group to left */
.anythingSlider.rtl .anythingControls ul a { float: right; } /* reverse order of nav links */
.anythingSlider.rtl .start-stop { /* float: right; */ } /* move start/stop button - in case you want to switch sides */
/* probably not necessary, but added just in case */
.anythingSlider .anythingWindow,
.anythingSlider .anythingControls ul a,
.anythingSlider .arrow a,
.anythingSlider .start-stop {
transition-duration: 0;
-o-transition-duration: 0;
-moz-transition-duration: 0;
-webkit-transition-duration: 0;
}

View file

@ -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.
*
*/