imported all files from old cms
Hesham E
committed Aug 20, 2010
commit 63bf12b6023c3690324b7d8ff125fd7dacab04a8
Showing 149
changed files with
7504 additions
and 407 deletions
Gemfile
+1
-0
| @@ | @@ -7,6 +7,7 @@ gem 'rails', '3.0.0.rc' |
| gem 'sqlite3-ruby', :require => 'sqlite3' | |
| gem 'haml' | |
| + | gem 'active_link_to' |
| # Use unicorn as the web server | |
| # gem 'unicorn' | |
Gemfile.lock
+77
-0
| @@ | @@ -0,0 +1,77 @@ |
| + | GEM |
| + | remote: http://rubygems.org/ |
| + | specs: |
| + | abstract (1.0.0) |
| + | actionmailer (3.0.0.rc) |
| + | actionpack (= 3.0.0.rc) |
| + | mail (~> 2.2.5) |
| + | actionpack (3.0.0.rc) |
| + | activemodel (= 3.0.0.rc) |
| + | activesupport (= 3.0.0.rc) |
| + | builder (~> 2.1.2) |
| + | erubis (~> 2.6.6) |
| + | i18n (~> 0.4.1) |
| + | rack (~> 1.2.1) |
| + | rack-mount (~> 0.6.9) |
| + | rack-test (~> 0.5.4) |
| + | tzinfo (~> 0.3.22) |
| + | active_link_to (0.0.6) |
| + | activemodel (3.0.0.rc) |
| + | activesupport (= 3.0.0.rc) |
| + | builder (~> 2.1.2) |
| + | i18n (~> 0.4.1) |
| + | activerecord (3.0.0.rc) |
| + | activemodel (= 3.0.0.rc) |
| + | activesupport (= 3.0.0.rc) |
| + | arel (~> 0.4.0) |
| + | tzinfo (~> 0.3.22) |
| + | activeresource (3.0.0.rc) |
| + | activemodel (= 3.0.0.rc) |
| + | activesupport (= 3.0.0.rc) |
| + | activesupport (3.0.0.rc) |
| + | arel (0.4.0) |
| + | activesupport (>= 3.0.0.beta) |
| + | builder (2.1.2) |
| + | erubis (2.6.6) |
| + | abstract (>= 1.0.0) |
| + | haml (3.0.17) |
| + | i18n (0.4.1) |
| + | mail (2.2.5) |
| + | activesupport (>= 2.3.6) |
| + | mime-types |
| + | treetop (>= 1.4.5) |
| + | mime-types (1.16) |
| + | polyglot (0.3.1) |
| + | rack (1.2.1) |
| + | rack-mount (0.6.9) |
| + | rack (>= 1.0.0) |
| + | rack-test (0.5.4) |
| + | rack (>= 1.0) |
| + | rails (3.0.0.rc) |
| + | actionmailer (= 3.0.0.rc) |
| + | actionpack (= 3.0.0.rc) |
| + | activerecord (= 3.0.0.rc) |
| + | activeresource (= 3.0.0.rc) |
| + | activesupport (= 3.0.0.rc) |
| + | bundler (>= 1.0.0.rc.1) |
| + | railties (= 3.0.0.rc) |
| + | railties (3.0.0.rc) |
| + | actionpack (= 3.0.0.rc) |
| + | activesupport (= 3.0.0.rc) |
| + | rake (>= 0.8.3) |
| + | thor (~> 0.14.0) |
| + | rake (0.8.7) |
| + | sqlite3-ruby (1.3.1) |
| + | thor (0.14.0) |
| + | treetop (1.4.8) |
| + | polyglot (>= 0.3.1) |
| + | tzinfo (0.3.22) |
| + | |
| + | PLATFORMS |
| + | ruby |
| + | |
| + | DEPENDENCIES |
| + | active_link_to |
| + | haml |
| + | rails (= 3.0.0.rc) |
| + | sqlite3-ruby |
app/controllers/cms_admin/base_controller.rb
+33
-0
| @@ | @@ -1,4 +1,37 @@ |
| class CmsAdmin::BaseController < ApplicationController | |
| + | |
| + | before_filter :authenticate |
| + | |
| layout 'cms_admin' | |
| + | def index |
| + | # the jQuery in utilities.js uses the current path to define the scope (i.e: layouts vs. pages). |
| + | # So having /cms-admin as a path for pages will break the js. |
| + | redirect_to cms_admin_pages_path |
| + | end |
| + | |
| + | def save_tree_state(object) |
| + | name = object.class.name.underscore.to_sym |
| + | session[name] ||= [] |
| + | session[name] = if session[name].include?(object.id) |
| + | session[name] - [object.id] |
| + | else |
| + | session[name] + [object.id] |
| + | end |
| + | end |
| + | |
| + | def js_helper_installed?(name, library = nil) |
| + | File.exists?(File.expand_path("public/javascripts/#{name}/#{library||name}.js", Rails.root)) |
| + | end |
| + | helper_method :js_helper_installed? |
| + | |
| + | protected |
| + | |
| + | def authenticate |
| + | authenticate_or_request_with_http_basic do |username, password| |
| + | username == ComfortableMexicanSofa::Config.http_auth_username && |
| + | password == ComfortableMexicanSofa::Config.http_auth_password |
| + | end if ComfortableMexicanSofa::Config.http_auth_enabled |
| + | end |
| + | |
| end | |
app/controllers/cms_admin/categories_controller.rb
+78
-0
| @@ | @@ -0,0 +1,78 @@ |
| + | class CmsAdmin::CategoriesController < CmsAdmin::BaseController |
| + | before_filter :load_category, :except => [:create, :new, :index] |
| + | |
| + | def index |
| + | @cms_categories = CmsCategory.roots |
| + | end |
| + | |
| + | =begin |
| + | This was the old style of getting the children of the current note (old cms stuff) |
| + | def children |
| + | manage_session_array(:cms_category_tree, (params[:state] == 'open' ? :remove : :add), params[:id]) |
| + | end |
| + | =end |
| + | |
| + | def new |
| + | @cms_category = CmsCategory.new(params.slice(:parent_id)) |
| + | end |
| + | |
| + | def toggle |
| + | save_tree_state(@cms_category) |
| + | render :nothing => true |
| + | end |
| + | |
| + | def create |
| + | @cms_category = CmsCategory.new(params[:cms_category]) |
| + | @cms_category.save! |
| + | |
| + | flash[:notice] = 'Category created' |
| + | respond_to do |format| |
| + | format.html { redirect_to edit_cms_admin_category_path(@cms_category) } |
| + | format.js |
| + | end |
| + | |
| + | rescue ActiveRecord::RecordInvalid |
| + | respond_to do |format| |
| + | format.html { render :action => 'new' } |
| + | format.js |
| + | end |
| + | end |
| + | |
| + | def edit |
| + | # ... |
| + | end |
| + | |
| + | def update |
| + | @cms_category.update_attributes!(params[:cms_category]) |
| + | flash[:notice] = 'Category updated' |
| + | respond_to do |format| |
| + | format.html { redirect_to edit_cms_admin_category_path(@cms_category)} |
| + | format.js |
| + | end |
| + | |
| + | rescue ActiveRecord::RecordInvalid |
| + | respond_to do |format| |
| + | format.html { render :action => 'edit' } |
| + | format.js |
| + | end |
| + | end |
| + | |
| + | def show |
| + | |
| + | end |
| + | |
| + | def destroy |
| + | @cms_category.destroy |
| + | flash[:notice] = 'Category deleted' |
| + | redirect_to cms_admin_categories_path |
| + | end |
| + | |
| + | protected |
| + | |
| + | def load_category |
| + | @cms_category = CmsCategory.find(params[:id]) |
| + | rescue ActiveRecord::RecordNotFound |
| + | render :text => 'Item not found', :status => 404 |
| + | end |
| + | |
| + | end |
app/controllers/cms_admin/layouts_controller.rb
+66
-0
| @@ | @@ -1,2 +1,68 @@ |
| class CmsAdmin::LayoutsController < CmsAdmin::BaseController | |
| + | before_filter :load_layout, :only => [:toggle, :edit, :update, :destroy] |
| + | before_filter :build_layout, :only => [ :new, :create ] |
| + | |
| + | def index |
| + | @cms_layouts = CmsLayout.roots |
| + | end |
| + | |
| + | def toggle |
| + | save_tree_state(@cms_layout) |
| + | render :nothing => true |
| + | end |
| + | |
| + | def new |
| + | end |
| + | |
| + | def create |
| + | @cms_layout.save! |
| + | |
| + | flash[:notice] = 'Layout created' |
| + | redirect_to edit_cms_admin_layout_path(@cms_layout) |
| + | rescue ActiveRecord::RecordInvalid |
| + | render :action => :new |
| + | end |
| + | |
| + | def edit |
| + | # ... |
| + | end |
| + | |
| + | def update |
| + | @cms_layout.update_attributes!(params[:cms_layout]) |
| + | |
| + | flash[:notice] = 'Layout updated' |
| + | redirect_to edit_cms_admin_layout_path(@cms_layout) |
| + | |
| + | rescue ActiveRecord::RecordInvalid |
| + | render :action => :edit |
| + | end |
| + | |
| + | def destroy |
| + | @cms_layout.destroy |
| + | |
| + | flash[:notice] = 'Layout removed' |
| + | redirect_to cms_admin_layouts_path |
| + | end |
| + | |
| + | def reorder |
| + | params[:cms_layout].each_with_index do |id, index| |
| + | CmsLayout.update_all(['position = %d', index], ['id = %d', id]) |
| + | end |
| + | |
| + | render :nothing => true |
| + | end |
| + | |
| + | protected |
| + | def build_layout |
| + | params[:cms_layout] ||= { |
| + | :parent_id => params[:parent_id], |
| + | :content => '{{cms_page_block:default:text}}' |
| + | } |
| + | |
| + | @cms_layout = CmsLayout.new(params[:cms_layout]) |
| + | end |
| + | |
| + | def load_layout |
| + | @cms_layout = CmsLayout.find_by_id(params[:id]) |
| + | end |
| end | |
app/controllers/cms_admin/pages_controller.rb
+84
-0
| @@ | @@ -1,5 +1,89 @@ |
| class CmsAdmin::PagesController < CmsAdmin::BaseController | |
| + | include CmsCommon::RenderPage |
| + | |
| + | before_filter :load_page, :only => [:toggle, :edit, :update, :destroy, :reorder] |
| + | before_filter :build_page, :only => [ :new, :create ] |
| + | |
| def index | |
| + | if (ComfortableMexicanSofa::Config.multiple_sites) |
| + | @sites = CmsSite.all |
| + | @cms_pages = CmsPage.roots.group_by(&:cms_site_id) |
| + | else |
| + | params[:root] ? @cms_pages = CmsPage.find(params[:root]).children : @cms_pages = CmsPage.roots |
| + | end |
| + | end |
| + | |
| + | def toggle |
| + | save_tree_state(@cms_page) |
| + | render :nothing => true |
| + | end |
| + | |
| + | def new |
| + | @cms_page.cms_layout = @cms_page.parent.cms_layout if @cms_page.parent |
| + | end |
| + | |
| + | def edit |
| + | # ... |
| + | end |
| + | |
| + | def create |
| + | return render_page if !params[:preview].blank? && @cms_page.valid? |
| + | |
| + | @cms_page.save! |
| + | |
| + | flash[:notice] = 'Page created' |
| + | redirect_to edit_cms_admin_page_path(@cms_page) |
| + | |
| + | rescue ActiveRecord::RecordInvalid |
| + | render :action => :new |
| + | end |
| + | |
| + | def update |
| + | @cms_page.attributes = params[:cms_page] |
| + | |
| + | return render_page if !params[:preview].blank? && @cms_page.valid? |
| + | |
| + | @cms_page.save! |
| + | |
| + | flash[:notice] = 'Page updated' |
| + | redirect_to edit_cms_admin_page_path(@cms_page) |
| + | |
| + | rescue ActiveRecord::RecordInvalid |
| + | render :action => :edit |
| + | end |
| + | |
| + | def destroy |
| + | @cms_page.destroy |
| + | |
| + | flash[:notice] = 'Page removed' |
| + | redirect_to cms_admin_pages_path |
| + | end |
| + | |
| + | def form_blocks |
| + | @cms_page = CmsPage.find_by_id(params[:id]) |
| + | @layout = CmsLayout.find(params[:layout_id]) |
| + | end |
| + | |
| + | def reorder |
| + | params[:cms_page].each_with_index do |id, index| |
| + | CmsPage.update_all(['position = %d', index], ['id = %d', id]) |
| + | end |
| + | render :nothing => true |
| + | end |
| + | |
| + | protected |
| + | def load_page |
| + | @cms_page = CmsPage.find_by_id(params[:id]) |
| + | end |
| + | |
| + | def build_page |
| + | @parent_page = (params[:parent_id] and CmsPage.find_by_id(params[:parent_id])) |
| + | |
| + | @cms_page = CmsPage.new(params[:cms_page]) |
| + | |
| + | if (@cms_page.parent ||= @parent_page) |
| + | @cms_page.cms_site = @cms_page.parent.cms_site |
| + | end |
| end | |
| end | |
app/controllers/cms_admin/sites_controller.rb
+63
-0
| @@ | @@ -0,0 +1,63 @@ |
| + | class CmsAdmin::SitesController < CmsAdmin::BaseController |
| + | before_filter :load_site, :only => [ :edit, :update, :destroy ] |
| + | before_filter :build_site, :only => [ :new, :create ] |
| + | |
| + | def index |
| + | @sites = CmsSite.all |
| + | end |
| + | |
| + | def children |
| + | manage_session_array(:cms_site_tree, (params[:state] == 'open' ? :remove : :add), params[:id]) |
| + | end |
| + | |
| + | def new |
| + | if (CmsSite.count == 0) |
| + | @site.hostname = request.host |
| + | end |
| + | end |
| + | |
| + | def edit |
| + | # ... |
| + | end |
| + | |
| + | def create |
| + | @site.save! |
| + | |
| + | flash[:notice] = 'Site created' |
| + | |
| + | redirect_to edit_cms_admin_site_path(@site) |
| + | |
| + | rescue ActiveRecord::RecordInvalid |
| + | render(:action => :new) |
| + | end |
| + | |
| + | def update |
| + | @site.update_attributes!(params[:cms_site]) |
| + | |
| + | flash[:notice] = 'Site updated' |
| + | |
| + | redirect_to edit_cms_admin_site_path(@site) |
| + | |
| + | rescue ActiveRecord::RecordInvalid |
| + | render :action => :edit |
| + | end |
| + | |
| + | def destroy |
| + | @site.destroy |
| + | |
| + | flash[:notice] = 'Site removed' |
| + | redirect_to cms_admin_sites_path |
| + | end |
| + | |
| + | protected |
| + | def load_site |
| + | @site = CmsSite.find_by_id(params[:id]) |
| + | end |
| + | |
| + | def build_site |
| + | params[:cms_site] ||= { |
| + | } |
| + | |
| + | @site = CmsSite.new(params[:cms_site]) |
| + | end |
| + | end |
app/controllers/cms_common/render_page.rb
+20
-0
| @@ | @@ -0,0 +1,20 @@ |
| + | module CmsCommon::RenderPage |
| + | |
| + | def render_page(options = { }) |
| + | if @cms_page.blank? |
| + | if (@cms_page = CmsPage.published.find_by_full_path('404')) |
| + | render :inline => @cms_page.content, :layout => (@cms_page.cms_layout.app_layout || false), :status => 404 |
| + | else |
| + | render :text => '404 Page Not Found', :status => 404 |
| + | end |
| + | else |
| + | if @cms_page.redirect_to_page |
| + | redirect_to @cms_page.redirect_to_page.full_path |
| + | else |
| + | layout = (@cms_page.cms_layout.app_layout || false) |
| + | render :inline => @cms_page.content, :layout => layout |
| + | end |
| + | end |
| + | end |
| + | |
| + | end |
app/controllers/cms_content_controller.rb
+27
-3
| @@ | @@ -1,7 +1,31 @@ |
| class CmsContentController < ApplicationController | |
| - | |
| + | include CmsCommon::RenderPage |
| + | |
| + | unloadable |
| + | |
| + | before_filter :assign_cms_root |
| + | |
| def show | |
| - | render :inline => '<h1>Hello World!</h1>' |
| + | #path = params[:path] || "" |
| + | page_path = params[:path] || "" |
| + | @cms_page = (@cms_site ? @cms_site.cms_pages : CmsPage).published.find_by_full_path(page_path) |
| + | |
| + | render_page |
| end | |
| - | |
| + | |
| + | def sitemap |
| + | respond_to do |format| |
| + | format.xml do |
| + | @cms_pages = CmsPage.published |
| + | end |
| + | end |
| + | end |
| + | |
| + | protected |
| + | def assign_cms_root |
| + | if (ComfortableMexicanSofa::Config.multiple_sites) |
| + | @cms_site = CmsSite.find_by_hostname(request.host.downcase) |
| + | end |
| + | end |
| + | |
| end | |
app/helpers/application_helper.rb
+0
-2
| @@ | @@ -1,2 +0,0 @@ |
| - | module ApplicationHelper |
| - | end |
app/helpers/cms_helper.rb
+27
-0
| @@ | @@ -0,0 +1,27 @@ |
| + | module CmsHelper |
| + | |
| + | def application_name |
| + | ComfortableMexicanSofa::Config.cms_title || 'CMS' |
| + | end |
| + | |
| + | def tree_state(object) |
| + | name = object.class.name.underscore.to_sym |
| + | if session[name].present? |
| + | session[name].include?(object.id) ? '' : 'closed' |
| + | else |
| + | 'closed' |
| + | end |
| + | end |
| + | |
| + | def link_to_toggle(object, children_count) |
| + | link_to_function(children_count, '', :class => ['tree_toggle', tree_state(object)].join(' '), :title => 'Expand/Collapse', :onclick => "object_id = '#{object.id}'") |
| + | end |
| + | |
| + | def cms_form_for(record_or_name_or_array, *args, &proc) |
| + | options = args.extract_options! |
| + | options.merge!(:builder => CmsFormBuilder) |
| + | (options[:html] ||= {}).merge!(:class => (options[:html][:class].to_s + ' formatted')) |
| + | form_for(record_or_name_or_array, *(args << options), &proc) |
| + | end |
| + | |
| + | end |
app/models/cms_asset.rb
+0
-2
| @@ | @@ -1,2 +0,0 @@ |
| - | class CmsAsset < ActiveRecord::Base |
| - | end |
app/models/cms_block.rb
+13
-0
| @@ | @@ -1,2 +1,15 @@ |
| class CmsBlock < ActiveRecord::Base | |
| + | |
| + | # -- Relationships -------------------------------------------------------- |
| + | belongs_to :cms_page |
| + | |
| + | # -- Validations ---------------------------------------------------------- |
| + | validates_presence_of :label |
| + | validates_uniqueness_of :label, :scope => :cms_page_id |
| + | |
| + | # -- Scopes --------------------------------------------------------------- |
| + | scope :with_label, lambda{ |name|{ |
| + | :conditions => {:label => name} |
| + | }} |
| + | |
| end | |
app/models/cms_category.rb
+69
-0
| @@ | @@ -0,0 +1,69 @@ |
| + | class CmsCategory < ActiveRecord::Base |
| + | |
| + | # -- Relationships -------------------------------------------------------- |
| + | acts_as_tree :counter_cache => :children_count |
| + | |
| + | has_many :cms_page_categorizations, :dependent => :destroy |
| + | |
| + | has_many :cms_pages, :through => :cms_page_categorizations |
| + | |
| + | # -- Validations ---------------------------------------------------------- |
| + | validates_presence_of :slug, :label |
| + | validates_uniqueness_of :slug, :scope => :parent_id |
| + | |
| + | # -- Named Scopes --------------------------------------------------------- |
| + | default_scope :order => 'label' |
| + | |
| + | # -- Callbacks ------------------------------------------------------------ |
| + | before_validation :set_slug_if_blank |
| + | |
| + | # -- Class Methods -------------------------------------------------------- |
| + | def set_slug_if_blank |
| + | self.slug = self.label.slugify if self.slug.blank? |
| + | end |
| + | |
| + | def self.categories_for_select(collection = CmsCategory.roots, level = 0) |
| + | out = [] |
| + | collection.each do |category| |
| + | out += [["#{". . " * level} #{category.label}", category.id]] |
| + | out += self.categories_for_select(category.children, level+1) if category.children.count > 0 |
| + | end |
| + | out |
| + | end |
| + | |
| + | def self.categorized_model_names |
| + | model_names = [] |
| + | CmsCategory.reflect_on_all_associations(:has_many).each do |model| |
| + | model_names << model.klass.to_s if model.through_reflection.present? |
| + | end |
| + | model_names |
| + | end |
| + | |
| + | def self.categorized_model_types |
| + | models_types = [] |
| + | CmsCategory.categorized_model_names.each do |model_name| |
| + | models_types << model_name.constantize |
| + | end |
| + | models_types |
| + | end |
| + | |
| + | # -- Instance Methods ----------------------------------------------------- |
| + | def number_of_records |
| + | # returns the number of records (of all types) under a certain category |
| + | count = 0 |
| + | CmsCategory.categorized_model_names.each do |model_name| |
| + | count += self.send(model_name.underscore.pluralize.to_sym).length |
| + | end |
| + | count |
| + | end |
| + | |
| + | def records |
| + | things = {} |
| + | CmsCategory.categorized_model_names.each do |model_name| |
| + | model_sym = model_name.underscore.pluralize.to_sym |
| + | things[model_sym] = self.send(model_sym) |
| + | end |
| + | things |
| + | end |
| + | end |
| + | |
app/models/cms_layout.rb
+120
-0
| @@ | @@ -1,2 +1,122 @@ |
| class CmsLayout < ActiveRecord::Base | |
| + | |
| + | # -- Relationships -------------------------------------------------------- |
| + | |
| + | acts_as_tree :counter_cache => :children_count |
| + | has_many :cms_pages, :dependent => :nullify |
| + | |
| + | # -- Validations ---------------------------------------------------------- |
| + | |
| + | validates_presence_of :label |
| + | validates_uniqueness_of :label |
| + | validate :validate_block_presence, |
| + | :validate_proper_relationship |
| + | |
| + | # -- AR Callbacks --------------------------------------------------------- |
| + | |
| + | before_save :flag_as_extendable, |
| + | :update_page_blocks |
| + | |
| + | # -- Scopes --------------------------------------------------------------- |
| + | |
| + | default_scope :order => 'position ASC' |
| + | |
| + | scope :extendable, |
| + | :conditions => { :is_extendable => true } |
| + | |
| + | # -- Class Methods -------------------------------------------------------- |
| + | |
| + | def self.create_default_layout!(options = { }) |
| + | create({ |
| + | :label => "Default Layout", |
| + | :app_layout => "application", |
| + | :content => "{{cms_page_block:default:code}}", |
| + | :is_extendable => true |
| + | }.merge(options)) |
| + | end |
| + | |
| + | def self.options_for_select |
| + | CmsLayout.all(:select => 'id, label').collect { |l| [ l.label, l.id ] } |
| + | end |
| + | |
| + | def self.app_layouts_for_select |
| + | path = "#{Rails.root}/app/views/layouts" |
| + | regex = /^([a-z0-9]\w+)\.html/i |
| + | |
| + | app_layouts = |
| + | begin |
| + | Dir.entries(path).collect do |l| |
| + | l.match(regex).try(:captures) |
| + | end.compact.flatten |
| + | rescue |
| + | # No application layouts are present |
| + | end |
| + | |
| + | [ [ '---', nil ] ] + (app_layouts.blank? ? [ ] : app_layouts) |
| + | end |
| + | |
| + | # -- Instance Methods ----------------------------------------------------- |
| + | |
| + | def content |
| + | if parent |
| + | parent.content.gsub(/\{\{\s*cms_page_block:default:.*?\}\}/, self.read_attribute(:content)) |
| + | else |
| + | read_attribute(:content) |
| + | end |
| + | end |
| + | |
| + | def app_layout |
| + | this_layout = read_attribute(:app_layout) |
| + | if this_layout.blank? |
| + | parent && parent.app_layout |
| + | else |
| + | this_layout |
| + | end |
| + | end |
| + | |
| + | def extendable_for_select |
| + | [['---', nil]] + CmsLayout.extendable.all.reject{|l| ([self]+self.descendants).member?(l)}.collect{ |l| [l.label, l.id] } |
| + | end |
| + | |
| + | def tags(options = {}) |
| + | CmsTag::parse_tags(self.content, options) |
| + | end |
| + | |
| + | protected |
| + | |
| + | def validate_block_presence |
| + | self.errors.add(:content, 'does not have any cms_blocks defined') if self.tags.empty? |
| + | end |
| + | |
| + | def validate_proper_relationship |
| + | if self.descendants.member?(parent) || self.parent == self |
| + | self.errors.add(:parent_id, 'layout is invalid') |
| + | end |
| + | end |
| + | |
| + | def validate_children_against_extendable |
| + | # todo |
| + | end |
| + | |
| + | def flag_as_extendable |
| + | self.is_extendable = !self.tags.select{|t| t.tag_type == 'cms_page_block' && t.label == 'default'}.blank? |
| + | true |
| + | end |
| + | |
| + | def update_page_blocks |
| + | return if new_record? || !content_changed? |
| + | |
| + | old_tags = CmsTag::parse_tags(content_was).select{|t| ['cms_block', 'cms_page_block'].member?(t.tag_type)}.collect{|t| t.label} |
| + | new_tags = CmsTag::parse_tags(content).select{|t| ['cms_block', 'cms_page_block'].member?(t.tag_type)}.collect{|t| t.label} |
| + | |
| + | # creating new cms_blocks for all pages using this layout |
| + | labels_for_blocks = new_tags - old_tags |
| + | if !labels_for_blocks.blank? |
| + | cms_pages.each do |cms_page| |
| + | labels_for_blocks.each do |label| |
| + | cms_page.cms_blocks.create(:label => label) |
| + | end |
| + | end |
| + | end |
| + | end |
| end | |
app/models/cms_page.rb
+195
-0
| @@ | @@ -1,2 +1,197 @@ |
| class CmsPage < ActiveRecord::Base | |
| + | |
| + | def initialize(options = {}) |
| + | super(options) |
| + | # Set default page layout |
| + | if self.cms_layout.blank? |
| + | self.cms_layout = self.parent ? self.parent.cms_layout : CmsLayout.first |
| + | end |
| + | end |
| + | |
| + | # -- Properties ----------------------------------------------------------- |
| + | |
| + | attr_accessor :rendered_content |
| + | |
| + | # -- Relationships -------------------------------------------------------- |
| + | |
| + | acts_as_tree :counter_cache => :children_count |
| + | acts_as_categorized |
| + | |
| + | belongs_to :cms_site |
| + | belongs_to :cms_layout |
| + | has_many :cms_blocks, |
| + | :dependent => :destroy |
| + | belongs_to :redirect_to_page, |
| + | :class_name => 'CmsPage', |
| + | :foreign_key => :redirect_to_page_id |
| + | has_one :redirected_from_page, |
| + | :class_name => 'CmsPage', |
| + | :foreign_key => :redirect_to_page_id |
| + | |
| + | #-- Validations ----------------------------------------------------------- |
| + | |
| + | validates_presence_of :cms_layout_id, |
| + | :unless => lambda{|p| p.redirect_to_page} |
| + | validates_presence_of :label |
| + | |
| + | validates_presence_of :slug, |
| + | :if => :slug_required? |
| + | validates_format_of :slug, |
| + | :if => :slug_required?, |
| + | :with => /^\w[a-z0-9_-]*$/i |
| + | |
| + | validates_uniqueness_of :full_path, |
| + | :scope => :cms_site_id |
| + | |
| + | validate :validate_redirect_to |
| + | |
| + | # -- AR Callbacks --------------------------------------------------------- |
| + | |
| + | before_validation :assign_full_path |
| + | |
| + | before_save :assign_site |
| + | |
| + | before_update :update_counter_cache |
| + | |
| + | after_save :save_blocks, :sync_child_slugs |
| + | |
| + | # -- Scopes --------------------------------------------------------------- |
| + | |
| + | default_scope :order => 'position ASC' |
| + | scope :published, |
| + | :conditions => { :published => true } |
| + | scope :nav_visible, |
| + | :conditions => { :excluded_from_nav => false } |
| + | |
| + | # -- Class Methods -------------------------------------------------------- |
| + | |
| + | def self.[](slug) |
| + | CmsPage.find_by_slug!(slug) |
| + | end |
| + | |
| + | def self.repair_children_count |
| + | self.all.each do |pg| |
| + | self.connection.update( |
| + | " |
| + | UPDATE #{self.quoted_table_name} |
| + | SET children_count = #{pg.children.count} |
| + | WHERE id = #{pg.id} |
| + | " |
| + | ) |
| + | end |
| + | end |
| + | |
| + | # -- Instance Methods ----------------------------------------------------- |
| + | |
| + | def content |
| + | # TODO: Add column to cache the render output. pointless to run it all the time |
| + | render_content.html_safe |
| + | end |
| + | |
| + | # FIX: Recursive Tag/Content Replacement |
| + | # Works, but potentionally dangerous and not particularly efficient |
| + | def render_content(content = nil) |
| + | content = cms_layout.content.dup if !content |
| + | while (!(tags = CmsTag::parse_tags(content, :page => self).sort_by{|t| t.class.render_priority}).blank?) |
| + | tags.each do |tag| |
| + | content.gsub!(tag.regex) { tag.render } |
| + | end |
| + | end |
| + | content |
| + | end |
| + | |
| + | def blocks=(blocks) |
| + | blocks.each do |label, params| |
| + | if !self.new_record? && !(block = self.cms_blocks.select{|b| b.label == label}.first).blank? |
| + | block.attributes = params |
| + | else |
| + | self.cms_blocks.build({:label => label}.merge(params)) |
| + | end |
| + | end |
| + | end |
| + | |
| + | def pages_for_select(page = nil, level = 0, exclude_self = false) |
| + | page ||= self.cms_site ? self.cms_site.cms_pages.root : CmsPage.root |
| + | |
| + | return [] if !page || (page == self && exclude_self) |
| + | out = [["#{". . " * level} #{page.label}", page.id]] |
| + | page.children.each do |child| |
| + | if child.children.count > 0 |
| + | out += pages_for_select(child, level + 1, exclude_self) |
| + | else |
| + | unless (child == self && exclude_self) |
| + | out += [["#{". . " * (level + 1)} #{child.label}", child.id]] |
| + | end |
| + | end |
| + | end |
| + | out |
| + | end |
| + | |
| + | def full_path |
| + | "/#{read_attribute(:full_path)}" |
| + | end |
| + | |
| + | def full_path_with_site |
| + | (self.cms_site ? "http://#{self.cms_site.hostname}" : '') + full_path |
| + | end |
| + | |
| + | def cms_block_content(label, content) |
| + | self.cms_blocks.select{|b| b.label.to_s == label.to_s}.first.try(content) |
| + | end |
| + | |
| + | def slug_required? |
| + | if (self.cms_site_id?) |
| + | return !self.site_root? |
| + | else |
| + | return (self != CmsPage.root or CmsPage.count == 0) |
| + | end |
| + | end |
| + | |
| + | def published_status |
| + | self.published? ? 'published' : 'draft' |
| + | end |
| + | |
| + | protected |
| + | def assign_full_path |
| + | self.full_path = (self.ancestors.reverse.collect{ |p| p.slug }.reject { |p| p.blank? } + [ self.slug ]).join('/') |
| + | end |
| + | |
| + | def assign_site |
| + | return if (self.cms_site_id.present?) |
| + | |
| + | self.cms_site_id = (self.parent and self.parent.cms_site_id) |
| + | end |
| + | |
| + | def validate_redirect_to |
| + | if self.redirect_to_page && (self == self.redirect_to_page || self.redirect_to_page.redirect_to_page) |
| + | self.errors.add(:redirect_to_page_id) |
| + | end |
| + | end |
| + | |
| + | def save_blocks |
| + | self.cms_blocks.each do |b| |
| + | b.save! if b.changed? |
| + | end |
| + | end |
| + | |
| + | def sync_child_slugs |
| + | if full_path_changed? |
| + | children.each do |child| |
| + | child.save! |
| + | end |
| + | end |
| + | end |
| + | |
| + | def update_counter_cache |
| + | if self.changed? && self.parent_id_changed? |
| + | |
| + | if self.parent_id_was.present? |
| + | CmsPage.decrement_counter(:children_count, self.parent_id_was) |
| + | end |
| + | |
| + | if self.parent_id.present? |
| + | CmsPage.increment_counter(:children_count, self.parent_id) |
| + | end |
| + | end |
| + | end |
| end | |
app/models/cms_page_categorization.rb
+7
-0
| @@ | @@ -0,0 +1,7 @@ |
| + | class CmsPageCategorization < ActiveRecord::Base |
| + | |
| + | acts_as_categorization |
| + | |
| + | end |
| + | |
| + | |
app/models/cms_site.rb
+49
-0
| @@ | @@ -0,0 +1,49 @@ |
| + | class CmsSite < ActiveRecord::Base |
| + | # -- Relationships -------------------------------------------------------- |
| + | |
| + | has_many :cms_pages, |
| + | :dependent => :destroy |
| + | |
| + | has_many :hostnames, |
| + | :class_name => 'CmsSiteHostname', |
| + | :dependent => :destroy |
| + | |
| + | accepts_nested_attributes_for :hostnames, |
| + | :allow_destroy => true, |
| + | :reject_if => proc { |attributes| attributes['hostname'].blank? } |
| + | |
| + | # -- Validations ---------------------------------------------------------- |
| + | |
| + | validates_presence_of :label |
| + | validates_uniqueness_of :label |
| + | |
| + | validates_presence_of :hostname |
| + | validates_uniqueness_of :hostname |
| + | |
| + | # -- Scopes --------------------------------------------------------------- |
| + | |
| + | default_scope :order => 'label ASC' |
| + | |
| + | # -- Callbacks ------------------------------------------------------------ |
| + | |
| + | after_create :create_page |
| + | |
| + | # -- Class Methods -------------------------------------------------------- |
| + | |
| + | def self.options_for_select |
| + | [ [ '---', nil ] ] + CmsSite.all.collect { |l| [ l.label, l.id ] } |
| + | end |
| + | |
| + | # -- Instance Methods ----------------------------------------------------- |
| + | |
| + | protected |
| + | def create_page |
| + | self.cms_pages.create!( |
| + | :label => self.label, |
| + | :cms_layout => CmsLayout.first, |
| + | :site_root => true |
| + | ) |
| + | |
| + | self.save(false) if (self.changed?) |
| + | end |
| + | end |
app/views/cms_admin/_flash_message.html.haml
+3
-0
| @@ | @@ -0,0 +1,3 @@ |
| + | - flash.each do |type, value| |
| + | .flash{ :class => type.to_s } |
| + | = value |
| \ No newline at end of file | |
app/views/cms_admin/categories/_category.html.haml
+19
-0
| @@ | @@ -0,0 +1,19 @@ |
| + | - item ||= nil |
| + | - if item.blank? |
| + | - is_checked = false |
| + | - else |
| + | - is_checked = item.cms_categories.collect(&:id).include?(category.id) |
| + | - item_type = item.class.to_s.underscore |
| + | |
| + | %li |
| + | - field_name = "#{item_type}[attr_category_ids][#{category.id}]" |
| + | = hidden_field_tag field_name, 0, :id => nil |
| + | .form_element.check_box_element |
| + | .value |
| + | = check_box_tag field_name, 1, is_checked, :onchange => "$.CMS.toggle_category_selections(this)", :id => "cms_category_id_#{category.id}" |
| + | = label_tag "cms_category_id_#{category.id}", category.label |
| + | |
| + | %ul{:id => dom_id(category)} |
| + | - unless category.children.empty? |
| + | - category.children.each do |sub_category| |
| + | = render :partial => 'cms_admin/categories/category', :locals => {:category => sub_category, :item => item } |
app/views/cms_admin/categories/_category_subform.html.haml
+12
-0
| @@ | @@ -0,0 +1,12 @@ |
| + | .form_element_group.categories |
| + | %h2 Categories |
| + | .form_element |
| + | .label Categories |
| + | .field |
| + | %ul#root_categories |
| + | = render :partial => 'cms_admin/categories/category', :locals => { :item => item }, :collection => CmsCategory.roots |
| + | |
| + | .form_element |
| + | .label Add Category |
| + | .field |
| + | = render :partial => 'cms_admin/categories/new', :locals => { :item_type => item.class.name.underscore } |
app/views/cms_admin/categories/_form.html.haml
+14
-0
| @@ | @@ -0,0 +1,14 @@ |
| + | %h2= @cms_category.new_record? ? "New Category" : "Editing \"#{@cms_category.label}\"" |
| + | = render :partial => 'cms_admin/flash_message' |
| + | = f.error_messages |
| + | |
| + | .form_element_group.horizontal |
| + | = f.text_field :label |
| + | = f.text_field :slug, :label => 'slug' |
| + | = f.select :parent_id, [['---', nil]] + CmsCategory.categories_for_select |
| + | = f.text_area :description |
| + | |
| + | .submit |
| + | = f.submit 'Save All Changes' |
| + | or |
| + | = link_to 'Return to List', cms_admin_categories_path |
app/views/cms_admin/categories/_new.html.haml
+10
-0
| @@ | @@ -0,0 +1,10 @@ |
| + | #new_category |
| + | - if defined? @cms_category and @cms_category.errors.present? |
| + | = "Label #{@cms_category.errors[:label]}" |
| + | = text_field :cms_category, :label |
| + | = select :cms_category, :parent_id, [['---', nil]] + CmsCategory.categories_for_select |
| + | = hidden_field_tag 'item_type', item_type |
| + | /= submit_tag "Add Category" |
| + | = tag "input", :type => "button", :value => "Add Category" |
| + | or |
| + | = link_to 'Manage Categories', cms_admin_categories_path |
app/views/cms_admin/categories/_toggle_link.html.haml
+9
-0
| @@ | @@ -0,0 +1,9 @@ |
| + | - category ||= toggle_link |
| + | |
| + | - if category.children.count > 0 |
| + | |
| + | - if session[:cms_category_tree] && session[:cms_category_tree].member?(category.id.to_s) |
| + | = link_to_remote category.children.count, :url => {:action => 'children', :id => category.id, :state => 'open'}, :loading => "$('category_#{category.id}_children').show()", :html => {:id => "category_#{category.id}_link", :class => 'tree_toggle open'} |
| + | |
| + | - else |
| + | = link_to_remote category.children.count, :url => {:action => 'children', :id => category.id, :state => 'closed'}, :loading => "$('category_#{category.id}_children').show()", :html => {:id => "category_#{category.id}_link", :class => 'tree_toggle closed'} |
| \ No newline at end of file | |
app/views/cms_admin/categories/_tree_branch.html.haml
+30
-0
| @@ | @@ -0,0 +1,30 @@ |
| + | - category = tree_branch |
| + | - children = category.children |
| + | |
| + | %li[category] |
| + | - if children.size > 0 |
| + | = link_to_toggle(category, children.size) |
| + | .item |
| + | .icon |
| + | - if category.siblings.size > 0 |
| + | .dragger |
| + | = link_to category.label, edit_cms_admin_category_path(category), :class => 'label' |
| + | |
| + | %span.action_links |
| + | [ |
| + | = link_to 'Add Child Category', new_cms_admin_category_path(:parent_id => category.id) |
| + | | |
| + | = link_to 'Edit', edit_cms_admin_category_path(category) |
| + | | |
| + | = link_to 'Remove', cms_admin_category_path(category), :method => 'delete', :confirm => 'Are you sure you want to remove this category?' |
| + | ] |
| + | |
| + | %br/ |
| + | - if category.number_of_records == 0 |
| + | Nothing in this category |
| + | - else |
| + | = link_to "#{pluralize(category.number_of_records,'thing')} in this category", cms_admin_category_path(category), :class => 'slug' |
| + | |
| + | - if children.size > 0 |
| + | %ul{:id => dom_id(category, :children), :class => "sortable #{tree_state(category)}"} |
| + | = render :partial => 'tree_branch', :collection => children |
app/views/cms_admin/categories/children.js.rjs
+10
-0
| @@ | @@ -0,0 +1,10 @@ |
| + | case params[:state] |
| + | when 'closed' |
| + | page.replace "category_#{@cms_category.id}_link", :partial => 'toggle_link', :object => @cms_category, :locals => { :state => 'open' } |
| + | page.replace_html "category_#{@cms_category.id}_children", :partial => 'tree_branch', :object => @cms_category.children |
| + | when 'open' |
| + | page.replace "category_#{@cms_category.id}_link", :partial => 'toggle_link', :object => @cms_category, :locals => { :state => 'closed' } |
| + | page.hide "category_#{@cms_category.id}_children" |
| + | page.replace_html "category_#{@cms_category.id}_children", '' |
| + | end |
| + | |
app/views/cms_admin/categories/create.js.haml
+7
-0
| @@ | @@ -0,0 +1,7 @@ |
| + | - if @cms_category.valid? |
| + | - if @cms_category.parent.blank? |
| + | =raw '$("#root_categories").append("' + (render :partial => 'category', :locals => { :category => @cms_category, :item_type => params[:item_type] }).gsub(/\n/,'').gsub(/"/,'\\"') + '");' |
| + | - else |
| + | =raw '$("#' + dom_id(@cms_category.parent) + '").append("' + (render :partial => 'category', :locals => { :category => @cms_category, :item_type => params[:item_type] }).gsub(/\n/,'').gsub(/"/,'\\"') + '");' |
| + | |
| + | =raw '$("#new_category").replaceWith("' + (render :partial => 'cms_admin/categories/new', :locals => {:item_type => params[:item_type]}).gsub(/\n/,'').gsub(/"/,'\\"') + '");' |
app/views/cms_admin/categories/edit.html.haml
+3
-0
| @@ | @@ -0,0 +1,3 @@ |
| + | = cms_form_for @cms_category, :url => {:action => :update}, :html => {:method => :put } do |form| |
| + | = render :partial => "form", :locals => {:f => form} |
| + | |
app/views/cms_admin/categories/index.html.haml
+9
-0
| @@ | @@ -0,0 +1,9 @@ |
| + | = link_to 'Add New Category', new_cms_admin_category_path, :class => 'top_button' |
| + | |
| + | %h2 Categories |
| + | = render :partial => 'cms_admin/flash_message' |
| + | - if @cms_categories.empty? |
| + | No Categories have been created yet |
| + | - else |
| + | %ul.tree_structure.sortable |
| + | = render :partial => 'tree_branch', :collection => @cms_categories |
app/views/cms_admin/categories/new.html.haml
+2
-0
| @@ | @@ -0,0 +1,2 @@ |
| + | = cms_form_for @cms_category, :url => {:action => :create } do |form| |
| + | = render :partial => 'form', :locals => {:f => form} |
app/views/cms_admin/categories/show.html.haml
+14
-0
| @@ | @@ -0,0 +1,14 @@ |
| + | %h2= "Category: #{@cms_category.label}" |
| + | - @cms_category.records.each_pair do |model_sym,records| |
| + | - model_type = model_sym.to_s |
| + | - content_for :head do |
| + | = stylesheet_link_tag model_type unless model_type == "cms_pages" |
| + | -# This requires that plugins have standardized names, like "cms_attachments.sass" |
| + | |
| + | %h3 |
| + | = "#{model_type[4..-1].humanize} (#{records.length})" |
| + | |
| + | - records.each do |record| |
| + | = link_to record.label, {:controller => model_type[4..-1], :action => :edit, :id => record.to_param}, :class => model_type[4..-1].singularize |
| + | - if records.empty? |
| + | %p No #{model_type[4..-1]} in this category |
app/views/cms_admin/layouts/_details.html.haml
+10
-0
| @@ | @@ -0,0 +1,10 @@ |
| + | - layout ||= details |
| + | |
| + | %table{:class => 'details', :id => dom_id(layout, :details), :style => 'display: none'} |
| + | %tr |
| + | %th Last Updated: |
| + | %td |
| + | - if (layout.updated_at?) |
| + | #{time_ago_in_words(layout.updated_at)} ago |
| + | - else |
| + | Never |
app/views/cms_admin/layouts/_form.html.haml
+13
-0
| @@ | @@ -0,0 +1,13 @@ |
| + | %h2= @cms_layout.new_record? ? "New Layout" : "Editing \"#{@cms_layout.label}\"" |
| + | = render :partial => 'cms_admin/flash_message' |
| + | = f.error_messages |
| + | .form_left_column |
| + | .form_element_group.horizontal |
| + | = f.text_field :label, :label => 'Layout Name' |
| + | = f.select :parent_id, @cms_layout.extendable_for_select, :label => 'Parent Layout' |
| + | = f.select :app_layout, CmsLayout.app_layouts_for_select, :label => 'Application Layout' |
| + | = f.text_area :content |
| + | .submit |
| + | = f.submit 'Save All Changes' |
| + | or |
| + | = link_to 'Return to List', cms_admin_layouts_path |
app/views/cms_admin/layouts/_tree_branch.html.haml
+30
-0
| @@ | @@ -0,0 +1,30 @@ |
| + | - layout = tree_branch |
| + | - children = layout.children |
| + | |
| + | %li[layout] |
| + | - if children.size > 0 |
| + | = link_to_toggle(layout, children.size) |
| + | |
| + | .item |
| + | .icon |
| + | - if layout.siblings.size > 0 |
| + | .dragger |
| + | |
| + | = link_to layout.label, edit_cms_admin_layout_path(layout), :class => 'label' |
| + | |
| + | %span.action_links |
| + | [ |
| + | = link_to_function 'Toggle Details', "", :class => 'details_toggle' |
| + | | |
| + | - if layout.is_extendable? |
| + | = link_to 'Add Child Layout', new_cms_admin_layout_path(:parent_id => layout.id) |
| + | | |
| + | = link_to 'Edit', edit_cms_admin_layout_path(layout) |
| + | | |
| + | = link_to 'Remove', cms_admin_layout_path(layout), :method => 'delete', :confirm => 'Are you sure you want to remove this layout?' |
| + | ] |
| + | = render :partial => 'details', :object => layout |
| + | |
| + | - if children.size > 0 |
| + | %ul{:id => dom_id(layout, :children), :class => "sortable #{tree_state(layout)}"} |
| + | = render :partial => 'tree_branch', :collection => children |
| \ No newline at end of file | |
app/views/cms_admin/layouts/edit.html.haml
+2
-0
| @@ | @@ -0,0 +1,2 @@ |
| + | = cms_form_for @cms_layout, :url => cms_admin_layout_path(@cms_layout) do |form| |
| + | = render :partial => 'form', :locals => {:f => form} |
app/views/cms_admin/layouts/index.html.haml
+5
-0
| @@ | @@ -0,0 +1,5 @@ |
| + | = link_to 'Add New Layout', new_cms_admin_layout_path, :class => 'top_button' |
| + | %h2 Layouts |
| + | = render :partial => 'cms_admin/flash_message' |
| + | %ul.tree_structure.sortable |
| + | = render(:partial => 'tree_branch', :collection => @cms_layouts) |
app/views/cms_admin/layouts/new.html.haml
+2
-0
| @@ | @@ -0,0 +1,2 @@ |
| + | = cms_form_for @cms_layout, :url => cms_admin_layouts_path do |form| |
| + | = render :partial => 'form', :locals => {:f => form} |
app/views/cms_admin/pages/_details.html.haml
+25
-0
| @@ | @@ -0,0 +1,25 @@ |
| + | - page ||= details |
| + | |
| + | %table{:class => 'details', :id => "page_details_#{page.id}", :style => 'display: none'} |
| + | |
| + | - if page.redirect_to_page |
| + | %tr |
| + | %th Redirecting To: |
| + | %td |
| + | = link_to page.redirect_to_page.label, cms_admin_page_path(page.redirect_to_page) |
| + | = "(#{link_to page.redirect_to_page.full_path, page.redirect_to_page.full_path})" |
| + | |
| + | - if page.redirected_from_page |
| + | %tr |
| + | %th Redirected From: |
| + | %td |
| + | = link_to page.redirected_from_page.label, cms_admin_page_path(page.redirected_from_page) |
| + | = "(#{link_to page.redirected_from_page.full_path, page.redirected_from_page.full_path})" |
| + | |
| + | - if page.cms_layout |
| + | %tr |
| + | %th Layout: |
| + | %td= link_to page.cms_layout.label, edit_cms_admin_layout_path(page.cms_layout) |
| + | %tr |
| + | %th Blocks: |
| + | %td= page.cms_blocks.collect(&:label).join(', ') |
app/views/cms_admin/pages/_form.html.haml
+37
-0
| @@ | @@ -0,0 +1,37 @@ |
| + | - content_for :right_column do |
| + | .form_element_group.publishing |
| + | %h2 Publishing Options |
| + | = f.check_box :published, :label => 'Is Published?' |
| + | = f.check_box :excluded_from_nav, :label => 'Exclude from Navigation?' |
| + | |
| + | .form_element_group |
| + | %h2 W3C Validation |
| + | - if (ComfortableMexicanSofa::Config.multiple_sites) |
| + | = link_to 'Check Validation', 'http://validator.w3.org/check?uri='+@cms_page.full_path_with_site, :target => "_new" |
| + | - else |
| + | = link_to 'Check Validation', 'http://validator.w3.org/check?uri=http://'+request.host+@cms_page.full_path, :target => "_new" |
| + | |
| + | = render :partial => 'cms_admin/categories/category_subform', :locals => { :item => @cms_page } |
| + | |
| + | %h2= @cms_page.new_record? ? "New Page" : "Editing \"#{@cms_page.label}\"" |
| + | = render :partial => 'cms_admin/flash_message' |
| + | = f.error_messages |
| + | .form_element_group.vertical |
| + | = f.text_field :label, :id => (@cms_page.new_record? ? "slugify" : nil) |
| + | - unless CmsPage.count == 0 || @cms_page == CmsPage.root |
| + | = f.text_field :slug, :id => 'slug' |
| + | = f.custom_element(' ', link_to_function('Show more', '', :id => 'more_options')) |
| + | .form_element_group.vertical.advanced |
| + | - unless CmsPage.count == 0 || @cms_page == CmsPage.root |
| + | = f.select :parent_id, @cms_page.pages_for_select(nil, 0, true) |
| + | = f.select :redirect_to_page_id, [['---', nil]] + @cms_page.pages_for_select |
| + | = f.select :cms_layout_id, CmsLayout.options_for_select, {} |
| + | :javascript |
| + | page_id = #{@cms_page.new_record? ? 0 : @cms_page.id} |
| + | #form_blocks |
| + | = render :partial => 'form_blocks', :locals => {:f => f} |
| + | .submit |
| + | = f.submit 'Save All Changes', :id => 'save' |
| + | -# f.submit 'Preview Page', :id => 'preview', :name => 'preview' |
| + | or |
| + | = link_to 'Return to List', cms_admin_pages_path |
app/views/cms_admin/pages/_form_blocks.html.haml
+25
-0
| @@ | @@ -0,0 +1,25 @@ |
| + | - @layout ||= @cms_page.cms_layout |
| + | - @layout && tags = @layout.tags(:view => self, :page => @cms_page).reject{|t| !t.class.has_form?}.group_by(&:tag_type) |
| + | |
| + | - unless tags.blank? |
| + | - unless (cms_block_tags = tags.delete('cms_block')).blank? |
| + | .form_element_group.block |
| + | - cms_block_tags.each do |tag| |
| + | .form_element{:class => tag.format} |
| + | .label= tag.form_label |
| + | .value= tag.form_input |
| + | |
| + | - unless (cms_page_block_tags = tags.delete('cms_page_block')).blank? |
| + | .form_element_group.page_block |
| + | - cms_page_block_tags.each do |tag| |
| + | .form_element{:class => tag.format} |
| + | .label= tag.form_label |
| + | .value= tag.form_input |
| + | |
| + | - # outputting any other tag that has a form element |
| + | - tags.each do |type, tags| |
| + | .form_element_group{:class => type.to_s} |
| + | - tags.each do |tag| |
| + | .form_element |
| + | .label= tag.form_label |
| + | .value= tag.form_input |
| \ No newline at end of file | |
app/views/cms_admin/pages/_tree_branch.html.haml
+37
-0
| @@ | @@ -0,0 +1,37 @@ |
| + | - page = tree_branch |
| + | - children = page.children |
| + | |
| + | %li[page] |
| + | |
| + | - if children.size > 0 |
| + | = link_to_toggle(page, children.size) |
| + | |
| + | .item |
| + | .icon{:class => page.published_status} |
| + | - if page.siblings.size > 0 |
| + | .dragger |
| + | |
| + | = link_to page.label, edit_cms_admin_page_path(page), :class => 'label' |
| + | |
| + | %span.action_links |
| + | [ |
| + | = link_to_function 'Toggle Details', "", :class => 'details_toggle' |
| + | | |
| + | = link_to 'Add Child Page', new_cms_admin_page_path(:parent_id => page.id) |
| + | | |
| + | = link_to 'Edit', edit_cms_admin_page_path(page) |
| + | | |
| + | = link_to 'Remove', cms_admin_page_path(page), :method => 'delete', :confirm => 'Are you sure you want to remove this page?' |
| + | ] |
| + | |
| + | %br/ |
| + | %div.url |
| + | = link_to(page.full_path_with_site, page.full_path_with_site) |
| + | - unless (page.published?) |
| + | (Unpublished) |
| + | |
| + | = render :partial => 'details', :object => page |
| + | |
| + | - if children.size > 0 |
| + | %ul{:id => dom_id(page, :children), :class => "sortable #{tree_state(page)}"} |
| + | = render :partial => 'tree_branch', :collection => children |
| \ No newline at end of file | |
app/views/cms_admin/pages/edit.html.haml
+2
-0
| @@ | @@ -0,0 +1,2 @@ |
| + | = cms_form_for @cms_page, :url => cms_admin_page_path(@cms_page) do |form| |
| + | = render :partial => 'form', :locals => {:f => form } |
app/views/cms_admin/pages/form_blocks.js.erb
+1
-0
| @@ | @@ -0,0 +1 @@ |
| + | $('#form_blocks').html('<%= escape_javascript(render(:partial => "form_blocks")) %>') |
| \ No newline at end of file | |
app/views/cms_admin/pages/index.html.haml
+21
-0
| @@ | @@ -0,0 +1,21 @@ |
| + | = link_to 'Add New Page', new_cms_admin_page_path, :class => 'top_button' |
| + | |
| + | %h2 Pages |
| + | = render :partial => 'cms_admin/flash_message' |
| + | - if (@sites) |
| + | - @sites.each do |site| |
| + | %h3= h(site.label) |
| + | %ul.tree_structure.sortable |
| + | - if (@cms_pages[site.id]) |
| + | = render(:partial => 'tree_branch', :collection => @cms_pages[site.id]) |
| + | - else |
| + | %li.empty_state |
| + | No pages defined. |
| + | |
| + | - if (@cms_pages[nil]) |
| + | %h3 Default Site |
| + | %ul.tree_structure.sortable |
| + | = render(:partial => 'tree_branch', :collection => @cms_pages[nil]) |
| + | - else |
| + | %ul.tree_structure.sortable |
| + | = render(:partial => 'tree_branch', :collection => @cms_pages) |
app/views/cms_admin/pages/new.html.haml
+2
-0
| @@ | @@ -0,0 +1,2 @@ |
| + | = cms_form_for @cms_page, :url => {:action => 'create'} do |form| |
| + | = render :partial => 'form', :locals => {:f => form } |
app/views/cms_admin/sites/_form.html.haml
+10
-0
| @@ | @@ -0,0 +1,10 @@ |
| + | %h2= @site.new_record? ? "New Site" : "Editing \"#{@site.label}\"" |
| + | = render :partial => 'cms_admin/flash_message' |
| + | = f.error_messages |
| + | .form_element_group.horizontal |
| + | = f.text_field :label, :label => "Site Name" |
| + | = f.text_field :hostname, :label => "Hostname" |
| + | .submit |
| + | = f.submit 'Save All Changes', :onclick => 'this.f.target = ""' |
| + | or |
| + | = link_to 'Return to List', cms_admin_sites_path |
app/views/cms_admin/sites/_site.html.haml
+14
-0
| @@ | @@ -0,0 +1,14 @@ |
| + | %li[site] |
| + | .item |
| + | .icon |
| + | = link_to site.label, edit_cms_admin_site_path(site), :class => 'label' |
| + | |
| + | %span.action_links |
| + | [ |
| + | = link_to 'Edit', edit_cms_admin_site_path(site) |
| + | | |
| + | = link_to 'Remove', cms_admin_site_path(site), :method => 'delete', :confirm => 'Are you sure you want to remove this site?' |
| + | ] |
| + | .details |
| + | - url = "http://#{site.hostname}/" |
| + | = link_to(h(url), url) |
| \ No newline at end of file | |
app/views/cms_admin/sites/edit.html.haml
+2
-0
| @@ | @@ -0,0 +1,2 @@ |
| + | = cms_form_for(@site, :url => { :action => :update }) do |form| |
| + | = render :partial => 'form', :locals => {:f => form} |
app/views/cms_admin/sites/index.html.haml
+10
-0
| @@ | @@ -0,0 +1,10 @@ |
| + | = link_to('Add New Site', new_cms_admin_site_path, :class => 'top_button') |
| + | |
| + | %h2 Sites |
| + | = render :partial => 'cms_admin/flash_message' |
| + | %ul.tree_structure |
| + | - if @sites.blank? |
| + | %li No Sites Defined |
| + | - else |
| + | = render(:partial => 'site', :collection => @sites) |
| + | |
app/views/cms_admin/sites/new.html.haml
+2
-0
| @@ | @@ -0,0 +1,2 @@ |
| + | = cms_form_for(@site, :url => {:action => :create }) do |form| |
| + | = render :partial => 'form', :locals => {:f => form} |
app/views/cms_admin/snippets/_form.html.haml
+10
-0
| @@ | @@ -0,0 +1,10 @@ |
| + | %h2= @cms_snippet.new_record? ? "New Snippet" : "Editing \"#{@cms_snippet.label}\"" |
| + | = render :partial => 'cms_admin/flash_message' |
| + | = f.error_messages |
| + | .form_element_group.horizontal |
| + | = f.text_field :label, :label => "Snippet Name" |
| + | = f.text_area :content |
| + | .submit |
| + | = f.submit 'Save All Changes', :onclick => 'this.f.target = ""' |
| + | or |
| + | = link_to 'Return to List', cms_admin_snippets_path |
app/views/cms_admin/snippets/edit.html.haml
+2
-0
| @@ | @@ -0,0 +1,2 @@ |
| + | = cms_form_for @cms_snippet, :url => {:action => :update}, :html => {:method => :put} do |form| |
| + | = render :partial => 'form', :locals => {:f => form} |
app/views/cms_admin/snippets/index.html.haml
+19
-0
| @@ | @@ -0,0 +1,19 @@ |
| + | = link_to 'Add New Snippet', new_cms_admin_snippet_path, :class => 'top_button' |
| + | |
| + | %h2 Snippets |
| + | = render :partial => 'cms_admin/flash_message' |
| + | %table.formatted |
| + | - if @cms_snippets.blank? |
| + | %tr |
| + | %td No Snippets Defined |
| + | - @cms_snippets.each do |snippet| |
| + | %tr |
| + | %td |
| + | .icon |
| + | %td.main |
| + | = link_to snippet.label.titleize, edit_cms_admin_snippet_path(snippet), :class => 'label' |
| + | %br/ |
| + | = link_to snippet.label, edit_cms_admin_snippet_path(snippet), :class => 'slug' |
| + | %td.action_links |
| + | = link_to 'Edit', edit_cms_admin_snippet_path(snippet), :class => 'button' |
| + | = link_to 'Remove', cms_admin_snippet_path(snippet), :class => 'button', :method => 'delete', :confirm => 'Are you sure you want to remove this snippet?' |
app/views/cms_admin/snippets/new.html.haml
+2
-0
| @@ | @@ -0,0 +1,2 @@ |
| + | = cms_form_for @cms_snippet, :url => {:action => :create } do |form| |
| + | = render :partial => 'form', :locals => {:f => form} |
app/views/cms_content/sitemap.xml.rxml
+16
-0
| @@ | @@ -0,0 +1,16 @@ |
| + | xml.instruct! |
| + | |
| + | xml.urlset( |
| + | "xmlns" => "http://www.google.com/schemas/sitemap/0.84", |
| + | "xmlns:xsi" => "http://www.w3.org/3004/XMLSchema-instance", |
| + | "xsi:schemaLocation" => "http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd" |
| + | ) do |
| + | |
| + | @cms_pages.each do |page| |
| + | xml.url do |
| + | xml.loc "http://#{request.host_with_port}" + page.full_path |
| + | xml.lastmod page.updated_at.utc.strftime("%Y-%m-%dT%H:%M:%S+00:00") |
| + | xml.changefreq 'daily' |
| + | end |
| + | end |
| + | end |
| \ No newline at end of file | |
app/views/complex_page/_example.html.haml
+0
-0
app/views/layouts/cms_admin.html.haml
+51
-9
| @@ | @@ -1,10 +1,52 @@ |
| - | !!! 5 |
| - | %head |
| - | %title ComfortableMexicanSofa |
| - | %meta{ 'http-equiv'=>"Content-Type", :content=>"text/html;charset=utf-8"} |
| - | = stylesheet_link_tag :all |
| - | = javascript_include_tag :defaults |
| - | = csrf_meta_tag |
| + | !!! |
| + | %html |
| + | %head |
| + | %title= application_name |
| + | = stylesheet_link_tag 'cms_master' |
| + | = stylesheet_link_tag 'jquery_ui' |
| + | = javascript_include_tag 'cms/jquery', 'cms/jquery-ui', 'cms/cms' |
| + | = javascript_include_tag 'cms/rails' |
| - | %body |
| - | = yield |
| \ No newline at end of file | |
| + | - if js_helper_installed?('ckeditor') |
| + | = javascript_include_tag 'ckeditor/ckeditor', 'ckeditor/adapters/jquery', 'cms/rteditor' |
| + | - if js_helper_installed?('codemirror') |
| + | = javascript_include_tag 'codemirror/codemirror', 'cms/codemirror' |
| + | |
| + | = yield :head |
| + | |
| + | %body{ :id => "#{params[:controller]}_#{params[:action]}".idify } |
| + | .content_wrapper |
| + | .left_column |
| + | .header |
| + | %h1 |
| + | = h(application_name) |
| + | = link_to(image_tag(ComfortableMexicanSofa::Config.logo_path), cms_admin_pages_path) |
| + | |
| + | %ul.primary |
| + | - if (ComfortableMexicanSofa::Config.multiple_sites) |
| + | %li= active_link_to 'Sites', cms_admin_sites_path |
| + | %li= active_link_to 'Layouts', cms_admin_layouts_path |
| + | %li= active_link_to 'Pages', cms_admin_pages_path, :active => {:when => [['cms_admin/pages'], %w(index new edit create update)]} |
| + | %li= active_link_to 'Snippets', cms_admin_snippets_path |
| + | %li= active_link_to 'Categories', cms_admin_categories_path |
| + | |
| + | - if (tabs = ComfortableMexicanSofa::Config.extension_tabs) |
| + | %ul.secondary |
| + | - tabs.each do |label, url| |
| + | %li= active_link_to label, url |
| + | |
| + | - unless ComfortableMexicanSofa::Config.additional_cms_tabs.blank? |
| + | %ul.secondary |
| + | - ComfortableMexicanSofa::Config.additional_cms_tabs.each do |label, url| |
| + | %li= active_link_to label, url |
| + | |
| + | .content_column |
| + | .right_column |
| + | = yield :right_column |
| + | .center_column |
| + | = yield |
| + | |
| + | .footer |
| + | = link_to('The Working Group', 'http://twg.ca/', :target => '_twg') |
| + | © |
| + | = [ 2009, Date.today.year ].uniq.join(' - ') |
app/views/stylesheets/cms_master.sass
+0
-30
| @@ | @@ -1,30 +0,0 @@ |
| - | // -------------------------------------------------------------------- Reset |
| - | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td |
| - | margin: 0 |
| - | padding: 0 |
| - | border: 0 |
| - | outline: 0 |
| - | font-size: 100% |
| - | vertical-align: baseline |
| - | background: transparent |
| - | font-weight: normal |
| - | body |
| - | line-height: 1 |
| - | ol, ul |
| - | list-style: none |
| - | blockquote, q |
| - | quotes: none |
| - | blockquote:before, blockquote:after, q:before, q:after |
| - | content: '' |
| - | content: none |
| - | *:focus |
| - | outline: 0 |
| - | ins |
| - | text-decoration: none |
| - | del |
| - | text-decoration: line-through |
| - | table |
| - | border-collapse: collapse |
| - | border-spacing: 0 |
| - | caption, th |
| - | text-align: left |
| \ No newline at end of file | |
config/initializers/cms.rb
+15
-0
| @@ | @@ -0,0 +1,15 @@ |
| + | require 'comfortable_mexican_sofa' |
| + | ### CMS Configuration |
| + | # Available configuration options: |
| + | |
| + | # http_auth_enabled: enable authentication or not. Default: true |
| + | # http_auth_username: the username for /cms-admin. Default: username |
| + | # http_auth_password: the password for /cms-admin Default: password |
| + | # cms_title: If set, this overrides the randomly changing CMS title. Only set this if you're boring. Default: not set |
| + | # |
| + | ComfortableMexicanSofa.config do |config| |
| + | # #config.http_auth_enabled = true |
| + | # #config.http_auth_username = 'some_other_username' |
| + | # #config.http_auth_password = 'some_other_password' |
| + | # #config.cms_title = 'some_other_boring_title' |
| + | end |
| \ No newline at end of file | |
config/routes.rb
+44
-7
| @@ | @@ -1,10 +1,47 @@ |
| - | ComfortableMexicanSofa::Application.routes.draw do |
| - | |
| - | namespace :cms_admin, :path => 'cms-admin' do |
| - | match '/', :to => redirect('/cms-admin/pages') |
| - | resources :layouts, :pages, :snippets, :assets |
| + | Rails.application.routes.draw do |
| + | scope '/cms-admin', :module => 'cms_admin', :as => 'cms_admin' do |
| + | match '/', :to => "base#index" |
| + | resources :layouts do |
| + | collection do |
| + | put :reorder |
| + | end |
| + | |
| + | member do |
| + | match :toggle |
| + | match :children |
| + | end |
| + | end |
| + | |
| + | resources :pages do |
| + | collection do |
| + | put :reorder |
| + | end |
| + | |
| + | member do |
| + | match :toggle |
| + | match :form_blocks |
| + | end |
| + | end |
| + | |
| + | resources :snippets do |
| + | collection do |
| + | put :reorder |
| + | end |
| + | end |
| + | |
| + | resources :sites |
| + | |
| + | resources :categories do |
| + | member do |
| + | match :toggle |
| + | match :children |
| + | end |
| + | end |
| end | |
| - | # Catch-all route |
| - | match '*path' => 'cms_content#show', :via => :get |
| + | controller :cms_content do |
| + | match '/sitemap.xml', :to => :sitemap |
| + | match '*path', :to => :show |
| + | root :to => :show |
| + | end |
| end | |
development_structure.sql b/db/development_structure.sql
+2
-0
| @@ | @@ -0,0 +1,2 @@ |
| + | CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL); |
| + | CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version"); |
migrate/01_create_cms.rb b/db/migrate/01_create_cms.rb
+77
-15
| @@ | @@ -1,43 +1,105 @@ |
| class CreateCms < ActiveRecord::Migration | |
| def self.up | |
| - | # -- Layouts ------------------------------------------------------------ |
| + | create_table :cms_sites do |t| |
| + | t.string :label |
| + | t.string :hostname |
| + | end |
| + | |
| + | add_index :cms_sites, :label |
| + | add_index :cms_sites, :hostname, :unique => true |
| + | |
| create_table :cms_layouts do |t| | |
| + | t.integer :cms_site_id |
| + | t.integer :parent_id |
| + | t.string :label |
| + | t.text :content |
| + | t.string :app_layout |
| + | t.integer :children_count, :null => false, :default => 0 |
| + | t.boolean :is_extendable, :null => false, :default => false |
| + | t.integer :position, :null => false, :default => 0 |
| t.timestamps | |
| end | |
| + | add_index :cms_layouts, :parent_id |
| + | add_index :cms_layouts, :label |
| - | # -- Pages -------------------------------------------------------------- |
| + | execute "INSERT INTO cms_layouts (id, label, app_layout, content) VALUES (1, 'Default Layout', 'application', '{{cms_page_block:default:text}}')" |
| create_table :cms_pages do |t| | |
| + | t.integer :cms_site_id |
| + | t.integer :cms_layout_id |
| + | t.integer :parent_id |
| + | t.integer :redirect_to_page_id |
| + | t.string :label |
| + | t.string :slug |
| + | t.string :full_path |
| + | t.integer :children_count, :null => false, :default => 0 |
| + | t.integer :position, :null => false, :default => 0 |
| + | t.boolean :published, :null => false, :default => true |
| + | t.boolean :excluded_from_nav, :null => false, :default => false |
| + | t.boolean :site_root, :null => false, :default => false |
| t.timestamps | |
| end | |
| - | |
| - | # -- Blocks ------------------------------------------------------------- |
| + | add_index :cms_pages, [:parent_id, :slug] |
| + | add_index :cms_pages, [ :cms_site_id, :full_path ], :unique => true |
| + | add_index :cms_pages, [:published, :full_path] |
| + | add_index :cms_pages, [:excluded_from_nav, :parent_id] |
| + | |
| + | execute "INSERT INTO cms_pages (id, cms_layout_id, label, slug, full_path) VALUES (1, 1, 'Default Page', NULL, '')" |
| create_table :cms_blocks do |t| | |
| + | t.integer :cms_page_id |
| + | t.string :label |
| + | t.text :content_text |
| + | t.string :content_string |
| + | t.integer :content_integer |
| + | t.boolean :content_boolean |
| + | t.datetime :content_datetime |
| t.timestamps | |
| end | |
| + | add_index :cms_blocks, [:cms_page_id, :label], :unique => true |
| + | add_index :cms_blocks, [:label, :content_string] |
| + | add_index :cms_blocks, [:label, :content_integer] |
| + | add_index :cms_blocks, [:label, :content_boolean] |
| + | add_index :cms_blocks, [:label, :content_datetime] |
| + | |
| + | execute "INSERT INTO cms_blocks (id, cms_page_id, label, content_text) VALUES (1, 1, 'default', 'Default home page')" |
| + | |
| + | create_table :cms_categories do |t| |
| + | t.integer :parent_id |
| + | t.string :slug |
| + | t.string :label |
| + | t.text :description |
| + | t.integer :children_count, :null => false, :default => 0 |
| + | t.timestamps |
| + | end |
| + | add_index :cms_categories, :slug |
| + | add_index :cms_categories, [:parent_id, :slug] |
| - | # -- Snippets ----------------------------------------------------------- |
| + | create_table :cms_page_categorizations do |t| |
| + | t.integer :cms_category_id |
| + | t.integer :cms_page_id |
| + | t.timestamps |
| + | end |
| + | add_index :cms_page_categorizations, [:cms_category_id, :cms_page_id], :unique => true, |
| + | :name => 'index_page_categorizations_on_category_id_and_page_id' #auto-generated name was too long. |
| + | |
| + | |
| create_table :cms_snippets do |t| | |
| t.string :label | |
| t.text :content | |
| t.timestamps | |
| end | |
| add_index :cms_snippets, :label, :unique => true | |
| - | |
| - | # -- Assets ------------------------------------------------------------- |
| - | |
| - | create_table :cms_assets do |t| |
| - | t.timestamps |
| - | end |
| end | |
| - | |
| + | |
| def self.down | |
| - | drop_table :cms_assets |
| + | drop_table :cms_layouts |
| + | drop_table :cms_pages |
| drop_table :cms_snippets | |
| drop_table :cms_blocks | |
| - | drop_table :cms_pages |
| - | drop_table :cms_layouts |
| + | drop_table :cms_sites |
| + | drop_table :cms_categories |
| + | drop_table :cms_page_categorizations |
| end | |
| end | |
comfortable_mexican_sofa.rb b/lib/comfortable_mexican_sofa.rb
+41
-0
| @@ | @@ -0,0 +1,41 @@ |
| + | %w( |
| + | cms_rails_extensions |
| + | cms_acts_as_tree |
| + | acts_as_categorized |
| + | cms_tag |
| + | cms_tags/block |
| + | cms_tags/page_block |
| + | cms_tags/snippet |
| + | cms_tags/partial |
| + | cms_tags/helper |
| + | cms_form_builder |
| + | engine |
| + | ).each do |req| |
| + | require File.join(File.dirname(__FILE__), 'comfortable_mexican_sofa', req) |
| + | end |
| + | |
| + | ActiveSupport.on_load(:action_controller) do |
| + | ActionController::Base.helper CmsHelper |
| + | end |
| + | |
| + | module ComfortableMexicanSofa |
| + | class Config |
| + | def self.cattr_accessor_with_default(name, value = nil) |
| + | cattr_accessor name |
| + | self.send("#{name}=", value) unless value === nil |
| + | end |
| + | |
| + | cattr_accessor_with_default :http_auth_enabled, true |
| + | cattr_accessor_with_default :http_auth_username, 'username' |
| + | cattr_accessor_with_default :http_auth_password, 'password' |
| + | cattr_accessor_with_default :cms_title |
| + | cattr_accessor_with_default :additional_cms_tabs, { } |
| + | cattr_accessor_with_default :extension_tabs, { } |
| + | cattr_accessor_with_default :multiple_sites, false |
| + | cattr_accessor_with_default :logo_path, '/images/cms/default-logo.png' |
| + | end |
| + | |
| + | def self.config(&block) |
| + | yield ComfortableMexicanSofa::Config |
| + | end |
| + | end |
comfortable_mexican_sofa/acts_as_categorized.rb b/lib/comfortable_mexican_sofa/acts_as_categorized.rb
+88
-0
| @@ | @@ -0,0 +1,88 @@ |
| + | module ActsAsCategorized |
| + | module StubMethods |
| + | |
| + | def acts_as_categorized |
| + | |
| + | __categorized = self.to_s.underscore.to_sym |
| + | __categorizations = "#{__categorized}_categorizations".to_sym |
| + | |
| + | # -- Attributes ------------------------------------------------------- |
| + | attr_accessor :attr_category_ids # hash that comes from the form |
| + | |
| + | # -- Relationships ---------------------------------------------------- |
| + | has_many __categorizations, |
| + | :dependent => :destroy |
| + | has_many :cms_categories, |
| + | :through => __categorizations |
| + | |
| + | # -- Callbacks -------------------------------------------------------- |
| + | after_save :save_categorizations |
| + | |
| + | # -- Named Scopes ----------------------------------------------------- |
| + | |
| + | scope :in_category, lambda { |category| { |
| + | :joins => __categorizations, |
| + | :conditions => { __categorizations => {:cms_category_id => (category.is_a?(CmsCategory) ? category.id : category) } } |
| + | }} |
| + | |
| + | # -- Instance Methods ------------------------------------------------- |
| + | define_method :save_categorizations do |
| + | return if attr_category_ids.blank? |
| + | |
| + | category_ids_to_remove = attr_category_ids.select{ |k, v| v.to_i == 0}.collect{|k, v| k } |
| + | category_ids_to_create = attr_category_ids.select{ |k, v| v.to_i == 1}.collect{|k, v| k } |
| + | |
| + | # removing unchecked categories |
| + | send(__categorizations).all(:conditions => { :cms_category_id => category_ids_to_remove}).collect(&:destroy) |
| + | |
| + | # creating categorizations |
| + | category_ids_to_create.each do |category_id| |
| + | send(__categorizations).create(:cms_category_id => category_id) |
| + | end |
| + | end |
| + | end |
| + | |
| + | def acts_as_categorization |
| + | |
| + | __categorized = self.to_s.underscore.gsub('_categorization', '').to_sym |
| + | __categorized_id = "#{__categorized}_id".to_sym |
| + | __categorizations = "#{__categorized}_categorizations".to_sym |
| + | |
| + | # -- Relationships -------------------------------------------------------- |
| + | belongs_to __categorized.to_sym |
| + | belongs_to :cms_category |
| + | |
| + | # -- Validations ---------------------------------------------------------- |
| + | validates_presence_of __categorized_id, |
| + | :cms_category_id |
| + | |
| + | validates_uniqueness_of __categorized_id, :scope => :cms_category_id |
| + | |
| + | # -- AR Callbacks --------------------------------------------------------- |
| + | after_save :create_parent_categorization |
| + | after_destroy :destroy_children_categorizations |
| + | |
| + | # -- Instance Methods ----------------------------------------------------- |
| + | define_method :create_parent_categorization do |
| + | return unless cms_category.parent |
| + | |
| + | params = { |
| + | :cms_category_id => cms_category.parent_id, |
| + | __categorized_id => send(__categorized).id |
| + | } |
| + | self.class.create!(params) unless self.class.exists?(params) |
| + | end |
| + | |
| + | define_method :destroy_children_categorizations do |
| + | return if cms_category.children.blank? |
| + | |
| + | cms_category.children.each do |c| |
| + | send(__categorized).send(__categorizations).first(:conditions => {"cms_category_id" => c.id }).try(:destroy) |
| + | end |
| + | end |
| + | end |
| + | end |
| + | end |
| + | |
| + | ActiveRecord::Base.extend(ActsAsCategorized::StubMethods) |
| + | |
comfortable_mexican_sofa/cms_acts_as_tree.rb b/lib/comfortable_mexican_sofa/cms_acts_as_tree.rb
+108
-0
| @@ | @@ -0,0 +1,108 @@ |
| + | module ActiveRecord |
| + | module Acts |
| + | module Tree |
| + | def self.included(base) |
| + | base.extend(ClassMethods) |
| + | end |
| + | |
| + | # Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children |
| + | # association. This requires that you have a foreign key column, which by default is called +parent_id+. |
| + | # |
| + | # class Category < ActiveRecord::Base |
| + | # acts_as_tree :order => "name" |
| + | # end |
| + | # |
| + | # Example: |
| + | # root |
| + | # \_ child1 |
| + | # \_ subchild1 |
| + | # \_ subchild2 |
| + | # |
| + | # root = Category.create("name" => "root") |
| + | # child1 = root.children.create("name" => "child1") |
| + | # subchild1 = child1.children.create("name" => "subchild1") |
| + | # |
| + | # root.parent # => nil |
| + | # child1.parent # => root |
| + | # root.children # => [child1] |
| + | # root.children.first.children.first # => subchild1 |
| + | # |
| + | # In addition to the parent and children associations, the following instance methods are added to the class |
| + | # after calling <tt>acts_as_tree</tt>: |
| + | # * <tt>siblings</tt> - Returns all the children of the parent, excluding the current node (<tt>[subchild2]</tt> when called on <tt>subchild1</tt>) |
| + | # * <tt>self_and_siblings</tt> - Returns all the children of the parent, including the current node (<tt>[subchild1, subchild2]</tt> when called on <tt>subchild1</tt>) |
| + | # * <tt>ancestors</tt> - Returns all the ancestors of the current node (<tt>[child1, root]</tt> when called on <tt>subchild2</tt>) |
| + | # * <tt>root</tt> - Returns the root of the current node (<tt>root</tt> when called on <tt>subchild2</tt>) |
| + | module ClassMethods |
| + | # Configuration options are: |
| + | # |
| + | # * <tt>foreign_key</tt> - specifies the column name to use for tracking of the tree (default: +parent_id+) |
| + | # * <tt>order</tt> - makes it possible to sort the children according to this SQL snippet. |
| + | # * <tt>counter_cache</tt> - keeps a count in a +children_count+ column if set to +true+ (default: +false+). |
| + | def acts_as_tree(options = {}) |
| + | configuration = { :foreign_key => "parent_id", :order => nil, :counter_cache => nil } |
| + | configuration.update(options) if options.is_a?(Hash) |
| + | |
| + | belongs_to :parent, :class_name => name, :foreign_key => configuration[:foreign_key], :counter_cache => configuration[:counter_cache] |
| + | has_many :children, :class_name => name, :foreign_key => configuration[:foreign_key], :order => configuration[:order], :dependent => :destroy |
| + | |
| + | class_eval <<-EOV |
| + | include ActiveRecord::Acts::Tree::InstanceMethods |
| + | |
| + | def self.roots |
| + | find(:all, :conditions => "#{configuration[:foreign_key]} IS NULL", :order => #{configuration[:order].nil? ? "nil" : %Q{"#{configuration[:order]}"}}) |
| + | end |
| + | |
| + | def self.root |
| + | find(:first, :conditions => "#{configuration[:foreign_key]} IS NULL", :order => #{configuration[:order].nil? ? "nil" : %Q{"#{configuration[:order]}"}}) |
| + | end |
| + | EOV |
| + | end |
| + | end |
| + | |
| + | module InstanceMethods |
| + | # Returns list of ancestors, starting from parent until root. |
| + | # |
| + | # subchild1.ancestors # => [child1, root] |
| + | def ancestors |
| + | node, nodes = self, [] |
| + | nodes << node = node.parent while node.parent |
| + | nodes |
| + | end |
| + | |
| + | # Returns all children and children of children |
| + | def descendants |
| + | nodes = [] |
| + | self.children.each do |c| |
| + | nodes << c |
| + | nodes << c.descendants |
| + | end |
| + | nodes.flatten |
| + | end |
| + | |
| + | # Returns the root node of the tree. |
| + | def root |
| + | node = self |
| + | node = node.parent while node.parent |
| + | node |
| + | end |
| + | |
| + | # Returns all siblings of the current node. |
| + | # |
| + | # subchild1.siblings # => [subchild2] |
| + | def siblings |
| + | self_and_siblings - [self] |
| + | end |
| + | |
| + | # Returns all siblings and a reference to the current node. |
| + | # |
| + | # subchild1.self_and_siblings # => [subchild1, subchild2] |
| + | def self_and_siblings |
| + | parent ? parent.children : self.class.roots |
| + | end |
| + | end |
| + | end |
| + | end |
| + | end |
| + | |
| + | ActiveRecord::Base.send :include, ActiveRecord::Acts::Tree |
| \ No newline at end of file | |
comfortable_mexican_sofa/cms_form_builder.rb b/lib/comfortable_mexican_sofa/cms_form_builder.rb
+165
-0
| @@ | @@ -0,0 +1,165 @@ |
| + | class CmsFormBuilder < ActionView::Helpers::FormBuilder |
| + | |
| + | %w{ date_select text_field password_field text_area file_field}.each do |selector| |
| + | src = <<-end_src |
| + | def #{selector}(method, options = {}) |
| + | options.merge!(:size=> '') if #{%w{text_field password_field}.include?(selector)} |
| + | standard_field('#{selector}', method, options) { super(method, options) } |
| + | end |
| + | end_src |
| + | class_eval src, __FILE__, __LINE__ |
| + | end |
| + | |
| + | def standard_field(type, method, options={}, &block) |
| + | description = options.delete(:desc) |
| + | content = options.delete(:content) |
| + | label = options[:label] || label_for(method, options) |
| + | required = options.delete(:required) |
| + | |
| + | output = "<div class='form_element #{type}_element'>" |
| + | if type != 'check_box' |
| + | output << "<div class='label'>#{label}" |
| + | output << "#{@template.content_tag(:span, '*', :class => 'required_ind') if required }" |
| + | output << "</div>" |
| + | end |
| + | output << "<div class='value'>" |
| + | output << "#{yield}#{content}" |
| + | output << "#{error_messages_for(method)}" |
| + | output << "#{description(description)}" if type != 'check_box' |
| + | output << "</div>" |
| + | output << "</div>" |
| + | |
| + | output.html_safe |
| + | end |
| + | |
| + | def custom_element(label, content, options={}) |
| + | css_class = options[:css_class].blank? ? "text_field_element" : options[:css_class] |
| + | errors = if options[:method_name] |
| + | error_for(options.delete(:method_name)) |
| + | elsif options[:method_names] |
| + | method_names = options.delete(:method_names) |
| + | method_names.collect{|method_name| error_for(method_name)}.uniq.join(' ') |
| + | end |
| + | %{ |
| + | <div class='form_element #{css_class}'> |
| + | <div class='label'> |
| + | #{label} |
| + | </div> |
| + | <div class='value'> |
| + | #{content} |
| + | #{errors} |
| + | #{description(options.delete(:desc))} |
| + | </div> |
| + | </div> |
| + | }.html_safe |
| + | end |
| + | |
| + | def check_box(method, options = {}, checked_value = "1", unchecked_value = "0") |
| + | options[:content] = label_for(method, options) |
| + | options[:label] = ' ' |
| + | standard_field('check_box', method, options) { super(method, options, checked_value, unchecked_value) } |
| + | end |
| + | |
| + | # Example Usage |
| + | # form.radio_button :field_name, :foo_value |
| + | # form.radio_button :gender, %w(Male Female) |
| + | # form.radio_button :gender, [['Male','m'],['Female','f']] |
| + | # form.radio_button :gender, {'Male' => 'm', 'Female' => 'f'}, :checked => 'f' |
| + | def radio_button(method, tag_value, options = {}) |
| + | if tag_value.is_a? Hash |
| + | tag_value_hash = tag_value |
| + | tag_value = [] |
| + | tag_value_hash.each_pair do |label, value| |
| + | tag_value << [label,value] |
| + | end |
| + | end |
| + | |
| + | if tag_value.is_a? Array |
| + | checked_value = options.delete(:checked) |
| + | radios = tag_value.collect do |choice| |
| + | if choice.is_a? Array |
| + | label, value = choice[0], choice[1] |
| + | else |
| + | label = value = choice |
| + | end |
| + | |
| + | %( |
| + | #{super(method,value,options.merge({:checked => (value == checked_value)}))} |
| + | <label for='#{object_name}_#{method}_#{value.downcase}'>#{label}</label> |
| + | ).html_safe |
| + | end.join |
| + | |
| + | standard_field('radio_button', method, {:label => method.to_s.humanize}.merge(options)) { radios } |
| + | else |
| + | standard_field('radio_button', method, options) { super(method, tag_value, options = {}) } |
| + | end |
| + | end |
| + | |
| + | # Renders a jQuery UI datepicker on a text field |
| + | def datepicker(method, options = {}) |
| + | text_field(method, ({'data-datepicker' => true}).merge(options)) |
| + | end |
| + | |
| + | def select(method, choices, options = {}, html_options = {}) |
| + | standard_field('select', method, options) { super(method, choices, options, html_options) } |
| + | end |
| + | |
| + | def hidden_field(method, options = {}, html_options = {}) |
| + | super(method, options) |
| + | end |
| + | |
| + | def submit(value, options={}, &block) |
| + | cancel_link = @template.capture(&block) if block_given? |
| + | cancel_link ||= options[:cancel_url] ? ' or ' + options.delete(:cancel_url) : '' |
| + | if options[:show_ajax_loader] |
| + | options[:onclick] = "$(this).parent().next().css('display', 'block');$(this).parent().hide();" |
| + | end |
| + | out = @template.content_tag(:div, super(value, options) + cancel_link, :class => 'form_element submit_element') |
| + | if options[:show_ajax_loader] === true |
| + | options[:show_ajax_loader] = %{ |
| + | Sending.. <img src='/images/cms/spinner.gif' /> |
| + | } |
| + | end |
| + | |
| + | if options[:show_ajax_loader] |
| + | out << %{ |
| + | <div class="form_element submit_element" style="display:none"> |
| + | <div class="submit_ajax_loader">#{options[:show_ajax_loader]}</div> |
| + | </div> |
| + | }.html_safe |
| + | end |
| + | out.html_safe |
| + | end |
| + | |
| + | |
| + | def label_for(method, options) |
| + | label = options.delete(:label) || method.to_s.titleize.capitalize |
| + | "<label for=\"#{object_name}_#{method}\">#{label}</label>".html_safe |
| + | end |
| + | |
| + | def description(description) |
| + | "<div class='description'>#{description}</div>".html_safe unless description.nil? |
| + | end |
| + | |
| + | def error_messages |
| + | if @object && @object.errors.count > 0 |
| + | if @object.errors[:base].present? |
| + | message = @object.errors[:base] |
| + | else |
| + | message = %( |
| + | There were some problems submitting this form. <br/> |
| + | Please correct all the highlighted fields and try again. |
| + | ).html_safe |
| + | end |
| + | @template.content_tag(:div, message, :class => 'errorExplanation') |
| + | end |
| + | end |
| + | |
| + | def error_messages_for(method) |
| + | if (!@object.nil? and @object.respond_to?(:errors) and errors = @object.errors[method] and errors.present?) |
| + | "<div class='errors'>#{method.to_s.humanize} #{errors.is_a?(Array) ? errors.first : errors}</div>".html_safe |
| + | else |
| + | '' |
| + | end |
| + | end |
| + | end |
comfortable_mexican_sofa/cms_rails_extensions.rb b/lib/comfortable_mexican_sofa/cms_rails_extensions.rb
+12
-0
| @@ | @@ -0,0 +1,12 @@ |
| + | class String |
| + | |
| + | # Converts string to something suitable to be used as an element id |
| + | def idify |
| + | self.strip.gsub(/\W/, '_').gsub(/\s|^_*|_*$/, '').squeeze('_') |
| + | end |
| + | |
| + | # Converts a string to something usable as a url slug |
| + | def slugify |
| + | self.downcase.gsub(/\W|_/, ' ').strip.squeeze(' ').gsub(/\s/, '-') |
| + | end |
| + | end |
| \ No newline at end of file | |
comfortable_mexican_sofa/cms_tag.rb b/lib/comfortable_mexican_sofa/cms_tag.rb
+108
-0
| @@ | @@ -0,0 +1,108 @@ |
| + | module CmsTag |
| + | |
| + | class TagError < StandardError; end |
| + | |
| + | # Initializes all tags found in the provided content |
| + | # Will ignore duplicate tags. Will use format definition of the first one. |
| + | def self.parse_tags(*args) |
| + | options = args.extract_options! |
| + | content = args.first |
| + | |
| + | # bailing out if nothing was sent for parsing |
| + | return [] if content.blank? |
| + | |
| + | tags = [] |
| + | CmsTag::Tag.subclasses.each do |tag| |
| + | tags << tag.parse_tags(content).group_by{|s| s.split(':')[0...2].join(':')}.collect{|g, tag_signature| tag.new(tag_signature.first, options)} |
| + | end |
| + | tags.flatten |
| + | end |
| + | |
| + | class Tag |
| + | attr_accessor :tag_signature, :label, :view, :page |
| + | |
| + | # Returns tag type based on it's classname |
| + | # CmsTag::MyAwesomeTag.tag_type => 'cms_my_awesome_tag' |
| + | def self.tag_type |
| + | 'cms_' + to_s.split('::').last.underscore |
| + | end |
| + | |
| + | def tag_type |
| + | self.class.tag_type |
| + | end |
| + | |
| + | # regular expression that finds tag signature |
| + | def self.regex |
| + | 'tag regex not defined' |
| + | end |
| + | |
| + | # regex needed for content substitution |
| + | def regex |
| + | 'tag regex not defined' |
| + | end |
| + | |
| + | # Returns tag identifiers from passed content based on regex defined |
| + | # for the particular tag |
| + | def self.parse_tags(content) |
| + | content.scan(regex).flatten |
| + | end |
| + | |
| + | # order at which tags get replaced with their content during page rendering |
| + | def self.render_priority |
| + | 0 |
| + | end |
| + | |
| + | def self.has_form? |
| + | false |
| + | end |
| + | |
| + | def initialize(*args) |
| + | options = args.extract_options! |
| + | self.tag_signature = args.first |
| + | |
| + | # provides access to action view methods for rendering form elements |
| + | if options[:view] |
| + | unless options[:view].is_a?(ActionView::Base) |
| + | raise TagError, "Expected ActionView::Base but got #{options[:view].class}" |
| + | end |
| + | self.view = options[:view] |
| + | end |
| + | |
| + | # owner of the the tag |
| + | if options[:page] |
| + | unless options[:page].is_a?(CmsPage) |
| + | raise TagError, "Expected CmsPage but got #{options[:page].class}" |
| + | end |
| + | self.page = options[:page] |
| + | end |
| + | |
| + | tokens = self.tag_signature.split(':') |
| + | self.label = tokens[1] |
| + | |
| + | assign_accessors |
| + | end |
| + | |
| + | def assign_accessors |
| + | # ... FIX: looks retarded |
| + | end |
| + | |
| + | def form_label |
| + | "Label Undefined!" |
| + | end |
| + | |
| + | def form_input |
| + | "Form Field Undefined!" |
| + | end |
| + | |
| + | def content |
| + | 'Undefined Tag' |
| + | end |
| + | |
| + | # when cms_page renders its content this is what tag outputs on the page |
| + | def render |
| + | content |
| + | end |
| + | |
| + | end |
| + | |
| + | end |
comfortable_mexican_sofa/cms_tags/.partial.rb.swp b/lib/comfortable_mexican_sofa/cms_tags/.partial.rb.swp
+0
-0
comfortable_mexican_sofa/cms_tags/block.rb b/lib/comfortable_mexican_sofa/cms_tags/block.rb
+117
-0
| @@ | @@ -0,0 +1,117 @@ |
| + | class CmsTag::Block < CmsTag::Tag |
| + | |
| + | FORMAT = { |
| + | :text => { |
| + | :db_column => :content_text, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.text_area_tag "cms_page[blocks][#{tag.label}][content_text]", tag.content, |
| + | :rows => 20 |
| + | } |
| + | }, |
| + | :string => { |
| + | :db_column => :content_string, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.text_field_tag "cms_page[blocks][#{tag.label}][content_string]", tag.content |
| + | } |
| + | }, |
| + | :rich_text => { |
| + | :db_column => :content_text, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.text_area_tag "cms_page[blocks][#{tag.label}][content_text]", tag.content, |
| + | :rows => 20, |
| + | :class => 'richText' |
| + | } |
| + | }, |
| + | :code => { |
| + | :db_column => :content_text, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.content_tag :div, :class => 'codemirror' do |
| + | tag.view.text_area_tag "cms_page[blocks][#{tag.label}][content_text]", tag.content, |
| + | :rows => 20, |
| + | :class => 'codeTextArea' |
| + | end |
| + | } |
| + | }, |
| + | :integer => { |
| + | :db_column => :content_integer, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.text_field_tag "cms_page[blocks][#{tag.label}][content_integer]", tag.content |
| + | } |
| + | }, |
| + | :boolean => { |
| + | :db_column => :content_boolean, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.check_box_tag "cms_page[blocks][#{tag.label}][content_boolean]", tag.content |
| + | } |
| + | }, |
| + | :date => { |
| + | :db_column => :content_datetime, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.fields_for "cms_page[blocks][#{tag.label}]" do |field| |
| + | field.date_select :content_datetime, :default => tag.content |
| + | end |
| + | } |
| + | }, |
| + | :time => { |
| + | :db_column => :content_datetime, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.fields_for "cms_page[blocks][#{tag.label}]" do |field| |
| + | field.datetime_select :content_datetime, :default => tag.content |
| + | end |
| + | } |
| + | } |
| + | } |
| + | |
| + | attr_accessor :format |
| + | |
| + | def self.regex |
| + | /\{\{\s*?(cms_block:.*?)\s*?\}\}/ |
| + | end |
| + | |
| + | def regex |
| + | /\{\{\s*?cms_block:#{Regexp.escape(label)}.*?\s*?\}\}/ |
| + | end |
| + | |
| + | def self.render_priority |
| + | 1 |
| + | end |
| + | |
| + | def self.has_form? |
| + | true |
| + | end |
| + | |
| + | def assign_accessors |
| + | tokens = self.tag_signature.split(':') |
| + | self.label = tokens[1] |
| + | self.format = tokens[2] |
| + | end |
| + | |
| + | def form_label |
| + | view.label_tag label.titleize |
| + | end |
| + | |
| + | def form_input |
| + | if FORMAT.has_key? self.format.to_sym |
| + | FORMAT[self.format.to_sym][:form_output].call(self) |
| + | else |
| + | 'Unknown tag format' |
| + | end |
| + | end |
| + | |
| + | def content |
| + | page && page.cms_block_content(self.label, FORMAT[self.format.to_sym][:db_column]) |
| + | end |
| + | |
| + | def render |
| + | '' |
| + | end |
| + | |
| + | end |
| \ No newline at end of file | |
comfortable_mexican_sofa/cms_tags/helper.rb b/lib/comfortable_mexican_sofa/cms_tags/helper.rb
+3
-0
| @@ | @@ -0,0 +1,3 @@ |
| + | class CmsTag::Helper < CmsTag::Tag |
| + | |
| + | end |
| \ No newline at end of file | |
comfortable_mexican_sofa/cms_tags/page_block.rb b/lib/comfortable_mexican_sofa/cms_tags/page_block.rb
+119
-0
| @@ | @@ -0,0 +1,119 @@ |
| + | class CmsTag::PageBlock < CmsTag::Tag |
| + | |
| + | FORMAT = { |
| + | :text => { |
| + | :db_column => :content_text, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.text_area_tag "cms_page[blocks][#{tag.label}][content_text]", tag.content, |
| + | :rows => 20 |
| + | } |
| + | }, |
| + | :rich_text => { |
| + | :db_column => :content_text, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.text_area_tag "cms_page[blocks][#{tag.label}][content_text]", tag.content, |
| + | :rows => 20, |
| + | :class => 'richText' |
| + | } |
| + | }, |
| + | :code => { |
| + | :db_column => :content_text, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.content_tag :div, :class => 'codemirror' do |
| + | tag.view.text_area_tag "cms_page[blocks][#{tag.label}][content_text]", tag.content, |
| + | :rows => 20, |
| + | :class => 'codeTextArea' |
| + | end |
| + | } |
| + | }, |
| + | :string => { |
| + | :db_column => :content_string, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.text_field_tag "cms_page[blocks][#{tag.label}][content_string]", tag.content |
| + | } |
| + | }, |
| + | :integer => { |
| + | :db_column => :content_integer, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.text_field_tag "cms_page[blocks][#{tag.label}][content_integer]", tag.content |
| + | } |
| + | }, |
| + | :boolean => { |
| + | :db_column => :content_boolean, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.check_box_tag "cms_page[blocks][#{tag.label}][content_boolean]", tag.content |
| + | } |
| + | }, |
| + | :date => { |
| + | :db_column => :content_datetime, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.fields_for "cms_page[blocks][#{tag.label}]" do |field| |
| + | field.date_select :content_datetime, :default => tag.content |
| + | end |
| + | } |
| + | }, |
| + | :time => { |
| + | :db_column => :content_datetime, |
| + | :description => '', |
| + | :form_output => lambda { |tag| |
| + | tag.view.fields_for "cms_page[blocks][#{tag.label}]" do |field| |
| + | field.datetime_select :content_datetime, :default => tag.content |
| + | end |
| + | } |
| + | } |
| + | } |
| + | |
| + | attr_accessor :format |
| + | |
| + | def self.regex |
| + | /\{\{\s*?(cms_page_block:.*?)\s*?\}\}/ |
| + | end |
| + | |
| + | def regex |
| + | /\{\{\s*?cms_page_block:#{Regexp.escape(label)}.*?\s*?\}\}/ |
| + | end |
| + | |
| + | # this shold be the most important tag to render, but let's leave space |
| + | # for some unforseen cases |
| + | def self.render_priority |
| + | 1 |
| + | end |
| + | |
| + | def self.has_form? |
| + | true |
| + | end |
| + | |
| + | def assign_accessors |
| + | tokens = self.tag_signature.split(':') |
| + | self.label = tokens[1] |
| + | self.format = tokens[2] |
| + | end |
| + | |
| + | def form_label |
| + | view.label_tag label.titleize |
| + | end |
| + | |
| + | def form_input |
| + | if FORMAT.has_key? self.format.to_sym |
| + | FORMAT[self.format.to_sym][:form_output].call(self) |
| + | else |
| + | 'Unknown tag format' |
| + | end |
| + | end |
| + | |
| + | def content |
| + | page && page.cms_block_content(self.label, FORMAT[self.format.to_sym][:db_column]) |
| + | end |
| + | |
| + | def render |
| + | content.to_s |
| + | end |
| + | |
| + | end |
| \ No newline at end of file | |
comfortable_mexican_sofa/cms_tags/partial.rb b/lib/comfortable_mexican_sofa/cms_tags/partial.rb
+19
-0
| @@ | @@ -0,0 +1,19 @@ |
| + | class CmsTag::Partial < CmsTag::Tag |
| + | |
| + | def self.regex |
| + | /\{\{\s*?(cms_partial:.*?)\s*?\}\}/ |
| + | end |
| + | |
| + | def self.render_priority |
| + | 3 |
| + | end |
| + | |
| + | def regex |
| + | /\{\{\s*?cms_partial:#{Regexp.escape(label)}\s*?\}\}/ |
| + | end |
| + | |
| + | def content |
| + | "<%= render :partial => '#{self.label}' %>" |
| + | end |
| + | |
| + | end |
comfortable_mexican_sofa/cms_tags/snippet.rb b/lib/comfortable_mexican_sofa/cms_tags/snippet.rb
+19
-0
| @@ | @@ -0,0 +1,19 @@ |
| + | class CmsTag::Snippet < CmsTag::Tag |
| + | |
| + | def self.regex |
| + | /\{\{\s*?(cms_snippet:.*?)\s*?\}\}/ |
| + | end |
| + | |
| + | def self.render_priority |
| + | 2 |
| + | end |
| + | |
| + | def regex |
| + | /\{\{\s*?cms_snippet:#{Regexp.escape(label)}\s*?\}\}/ |
| + | end |
| + | |
| + | def render |
| + | CmsSnippet.content_for(label) |
| + | end |
| + | |
| + | end |
comfortable_mexican_sofa/engine.rb b/lib/comfortable_mexican_sofa/engine.rb
+7
-0
| @@ | @@ -0,0 +1,7 @@ |
| + | require 'comfortable_mexican_sofa' |
| + | require 'rails' |
| + | |
| + | module ComfortableMexicanSofa |
| + | class Engine < Rails::Engine |
| + | end |
| + | end |
generators/cms_generator.rb b/lib/generators/cms_generator.rb
+65
-0
| @@ | @@ -0,0 +1,65 @@ |
| + | require 'rails/generators' |
| + | require 'rails/generators/migration' |
| + | |
| + | class CmsGenerator < Rails::Generators::Base |
| + | include Rails::Generators::Migration |
| + | include Thor::Actions |
| + | source_root File.expand_path('../templates', __FILE__) |
| + | |
| + | def generate_migration |
| + | empty_directory 'db/migrate' |
| + | @cms_migration_number = 1 |
| + | %w(create_cms fix_children_count).each do |fix_migration| |
| + | @cms_migration_number += 1 |
| + | begin |
| + | migration_template "migrations/#{fix_migration}.rb", "db/migrate/#{fix_migration}.rb" |
| + | rescue Rails::Generators::Error => e |
| + | say_status :warning, "migration '#{fix_migration}' already exists - skipping", :red |
| + | end |
| + | end |
| + | end |
| + | |
| + | def generate_stylesheets |
| + | if defined?(Sass) |
| + | sass_dir = Sass::Plugin.options[:template_location].gsub(Rails.root, '') |
| + | directory "stylesheets", sass_dir.gsub(/^\//,'') |
| + | else |
| + | say_status :warning, "HAML/SASS not installed", :red |
| + | end |
| + | end |
| + | |
| + | def generate_javascript |
| + | directory 'javascripts', 'public/javascripts/cms' |
| + | end |
| + | |
| + | def generate_initializers |
| + | directory 'initializers', 'config/initializers' |
| + | end |
| + | |
| + | def generate_images |
| + | directory 'images', 'public/images/cms' |
| + | end |
| + | |
| + | def show_readme |
| + | readme 'README' |
| + | end |
| + | |
| + | # Implement the required interface for Rails::Generators::Migration. |
| + | # taken from http://github.com/rails/rails/blob/master/activerecord/lib/generators/active_record.rb |
| + | def self.next_migration_number(dirname) |
| + | ret = nil |
| + | if ActiveRecord::Base.timestamped_migrations |
| + | ret = Time.now.utc.strftime("%Y%m%d%H%M%S") |
| + | else |
| + | ret = "%.3d" % (current_migration_number(dirname) + 1) |
| + | end |
| + | |
| + | while (Dir.entries(dirname).detect {|f| f.match /^#{ret}_/}) |
| + | ret = (ret.to_i + 1).to_s |
| + | end |
| + | |
| + | return ret |
| + | end |
| + | |
| + | end |
| + | |
public/images/cms/arrow_bottom.gif
+0
-0
public/images/cms/arrow_right.gif
+0
-0
public/images/cms/background.png
+0
-0
public/images/cms/bg-button-green-34.gif
+0
-0
public/images/cms/default-logo.png
+0
-0
public/images/cms/icon_category.gif
+0
-0
public/images/cms/icon_draft.gif
+0
-0
public/images/cms/icon_layout.gif
+0
-0
public/images/cms/icon_move.gif
+0
-0
public/images/cms/icon_regular.gif
+0
-0
public/images/cms/icon_snippet.gif
+0
-0
public/images/cms/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png
+0
-0
public/images/cms/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png
+0
-0
public/images/cms/jquery_ui/ui-bg_flat_10_000000_40x100.png
+0
-0
public/images/cms/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png
+0
-0
public/images/cms/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png
+0
-0
public/images/cms/jquery_ui/ui-bg_glass_65_ffffff_1x400.png
+0
-0
public/images/cms/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png
+0
-0
public/images/cms/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png
+0
-0
public/images/cms/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png
+0
-0
public/images/cms/jquery_ui/ui-icons_222222_256x240.png
+0
-0
public/images/cms/jquery_ui/ui-icons_228ef1_256x240.png
+0
-0
public/images/cms/jquery_ui/ui-icons_ef8c08_256x240.png
+0
-0
public/images/cms/jquery_ui/ui-icons_ffd27a_256x240.png
+0
-0
public/images/cms/jquery_ui/ui-icons_ffffff_256x240.png
+0
-0
public/images/cms/spinner.gif
+0
-0
public/images/rails.png
+0
-0
public/javascripts/cms/cms.js
+103
-0
| @@ | @@ -0,0 +1,103 @@ |
| + | $.CMS = function(){ |
| + | var current_path = window.location.pathname; |
| + | |
| + | $(document).ready(function(){ |
| + | // Slugify |
| + | $('input#slugify').bind('keyup.cms', function() { |
| + | $('input#slug').val( $.CMS.slugify( $(this).val() ) ); |
| + | }); |
| + | |
| + | // Expand/Collapse tree function |
| + | $('a.tree_toggle').bind('click.cms', function() { |
| + | $(this).siblings('ul').toggle(); |
| + | $(this).toggleClass('closed'); |
| + | // object_id are set in the helper (check cms_helper.rb) |
| + | $.ajax({url: [current_path, object_id, 'toggle'].join('/')}); |
| + | }); |
| + | |
| + | // Show/hide details |
| + | $('a.details_toggle').bind('click.cms', function() { |
| + | $(this).parent().siblings('table.details').toggle(); |
| + | }); |
| + | |
| + | // Sortable trees |
| + | $('ul.sortable').each(function(){ |
| + | $(this).sortable({ handle: 'div.dragger', |
| + | update: function() { |
| + | $.post(current_path + '/reorder', '_method=put&'+$(this).sortable('serialize')); |
| + | } |
| + | }) |
| + | }); |
| + | |
| + | // Show/Hide Advanced |
| + | $('a#more_options').bind('click.cms', function() { |
| + | $(this).text(($(this).text() == 'Show more') ? 'Show less' : 'Show more'); |
| + | $('.advanced').toggle(); |
| + | }) |
| + | |
| + | // Load Page Blocks on layout change |
| + | $('select#cms_page_cms_layout_id').bind('change.cms', function() { |
| + | $.ajax({url: ['/cms-admin/pages', page_id, 'form_blocks'].join('/'), data: ({ layout_id: $(this).val()})}) |
| + | }) |
| + | |
| + | // Datepicker |
| + | $('input[data-datepicker]').datepicker({dateFormat : 'yy-mm-dd'}); |
| + | |
| + | // Add Category Subform |
| + | $.CMS.category_subform_submit(); |
| + | }); // End $(document).ready() |
| + | |
| + | |
| + | |
| + | return { |
| + | slugify: function(str){ |
| + | str = str.replace(/^\s+|\s+$/g, ''); |
| + | var from = "ÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛàáäâèéëêìíïîòóöôùúüûÑñÇç·/_,:;"; |
| + | var to = "aaaaeeeeiiiioooouuuuaaaaeeeeiiiioooouuuunncc------"; |
| + | for (var i=0, l=from.length ; i<l ; i++) { |
| + | str = str.replace(new RegExp(from[i], "g"), to[i]); |
| + | } |
| + | str = str.replace(/[^a-zA-Z0-9 -]/g, '').replace(/\s+/g, '-').toLowerCase(); |
| + | return str; |
| + | }, |
| + | toggle_category_selections: function(obj) { |
| + | if (obj.checked == true){ |
| + | $(obj).parents("ul#root_categories li") |
| + | .children("div.form_element") |
| + | .find("input[type=checkbox]") |
| + | .each(function() { |
| + | this.checked = true; |
| + | }); |
| + | } else { |
| + | // NOT WORKING |
| + | $(obj).parent().parent().parent().find("input[type=checkbox]").each(function() { |
| + | this.checked = false; |
| + | }); |
| + | } |
| + | }, |
| + | category_subform_submit: function(){ |
| + | $('#new_category input[type=button]').bind('click.cms', function() { |
| + | var currently_selected = []; |
| + | $.post( |
| + | '/cms-admin/categories.js', |
| + | $("#new_category [name^=cms_category]") |
| + | .add("input[name=item_type]") |
| + | .add("input[name='authenticity_token']") |
| + | .serialize(), |
| + | function(data) { |
| + | $("#cms_category_label").val("").focus(); |
| + | $.CMS.category_subform_submit(); |
| + | } |
| + | ); |
| + | return false; |
| + | }) |
| + | |
| + | $('#new_category input[name^=cms_category]').bind('keypress.cms', function(event) { |
| + | if (event.keyCode == '13') { |
| + | event.preventDefault(); |
| + | $('#new_category input[type=button]').trigger('click.cms'); |
| + | } |
| + | }) |
| + | } |
| + | } |
| + | }(); |
public/javascripts/cms/codemirror.js
+21
-0
| @@ | @@ -0,0 +1,21 @@ |
| + | $.CMS.CodeMirror = function(){ |
| + | |
| + | $(document).ready(function(){ |
| + | $.CMS.CodeMirror.init(); |
| + | }).ajaxSuccess(function(){ |
| + | $.CMS.CodeMirror.init(); |
| + | }); |
| + | |
| + | return { |
| + | init: function(){ |
| + | $('.codeTextArea').each(function(i, el){ |
| + | CodeMirror.fromTextArea(el, { |
| + | parserfile: ["parsexml.js", "parsecss.js", "tokenizejavascript.js", "parsejavascript.js", "parsehtmlmixed.js"], |
| + | stylesheet: ["/stylesheets/codemirror/xmlcolors.css", "/stylesheets/codemirror/jscolors.css", "/stylesheets/codemirror/csscolors.css"], |
| + | path: "/javascripts/codemirror/", |
| + | iframeClass: 'codeMirrorIframe' |
| + | }); |
| + | }); |
| + | } |
| + | } |
| + | }(); |
public/javascripts/cms/jquery-ui.js
+354
-0
| @@ | @@ -0,0 +1,354 @@ |
| + | /*! |
| + | * jQuery UI 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI |
| + | */ /* |
| + | * jQuery UI 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI |
| + | */ |
| + | jQuery.ui||(function(a){a.ui={version:"1.8",plugin:{add:function(c,d,f){var e=a.ui[c].prototype;for(var b in f){e.plugins[b]=e.plugins[b]||[];e.plugins[b].push([d,f[b]])}},call:function(b,d,c){var f=b.plugins[d];if(!f||!b.element[0].parentNode){return}for(var e=0;e<f.length;e++){if(b.options[f[e][0]]){f[e][1].apply(b.element,c)}}}},contains:function(d,c){return document.compareDocumentPosition?d.compareDocumentPosition(c)&16:d!==c&&d.contains(c)},hasScroll:function(e,c){if(a(e).css("overflow")=="hidden"){return false}var b=(c&&c=="left")?"scrollLeft":"scrollTop",d=false;if(e[b]>0){return true}e[b]=1;d=(e[b]>0);e[b]=0;return d},isOverAxis:function(c,b,d){return(c>b)&&(c<(b+d))},isOver:function(g,c,f,e,b,d){return a.ui.isOverAxis(g,f,b)&&a.ui.isOverAxis(c,e,d)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,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,SHIFT:16,SPACE:32,TAB:9,UP:38}};a.fn.extend({_focus:a.fn.focus,focus:function(b,c){return typeof b==="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus();(c&&c.call(d))},b)}):this._focus.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var b;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){b=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{b=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!b.length?a(document):b},zIndex:function(e){if(e!==undefined){return this.css("zIndex",e)}if(this.length){var c=a(this[0]),b,d;while(c.length&&c[0]!==document){b=c.css("position");if(b=="absolute"||b=="relative"||b=="fixed"){d=parseInt(c.css("zIndex"));if(!isNaN(d)&&d!=0){return d}}c=c.parent()}}return 0}});a.extend(a.expr[":"],{data:function(d,c,b){return !!a.data(d,b[3])},focusable:function(c){var d=c.nodeName.toLowerCase(),b=a.attr(c,"tabindex");return(/input|select|textarea|button|object/.test(d)?!c.disabled:"a"==d||"area"==d?c.href||!isNaN(b):!isNaN(b))&&!a(c)["area"==d?"parents":"closest"](":hidden").length},tabbable:function(c){var b=a.attr(c,"tabindex");return(isNaN(b)||b>=0)&&a(c).is(":focusable")}})})(jQuery);;/*! |
| + | * jQuery UI Widget 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Widget |
| + | */ /* |
| + | * jQuery UI Widget 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Widget |
| + | */ |
| + | (function(b){var a=b.fn.remove;b.fn.remove=function(c,d){return this.each(function(){if(!d){if(!c||b.filter(c,[this]).length){b("*",this).add(this).each(function(){b(this).triggerHandler("remove")})}}return a.call(b(this),c,d)})};b.widget=function(d,f,c){var e=d.split(".")[0],h;d=d.split(".")[1];h=e+"-"+d;if(!c){c=f;f=b.Widget}b.expr[":"][h]=function(i){return !!b.data(i,d)};b[e]=b[e]||{};b[e][d]=function(i,j){if(arguments.length){this._createWidget(i,j)}};var g=new f();g.options=b.extend({},g.options);b[e][d].prototype=b.extend(true,g,{namespace:e,widgetName:d,widgetEventPrefix:b[e][d].prototype.widgetEventPrefix||d,widgetBaseClass:h},c);b.widget.bridge(d,b[e][d])};b.widget.bridge=function(d,c){b.fn[d]=function(g){var e=typeof g==="string",f=Array.prototype.slice.call(arguments,1),h=this;g=!e&&f.length?b.extend.apply(null,[true,g].concat(f)):g;if(e&&g.substring(0,1)==="_"){return h}if(e){this.each(function(){var i=b.data(this,d),j=i&&b.isFunction(i[g])?i[g].apply(i,f):i;if(j!==i&&j!==undefined){h=j;return false}})}else{this.each(function(){var i=b.data(this,d);if(i){if(g){i.option(g)}i._init()}else{b.data(this,d,new c(g,this))}})}return h}};b.Widget=function(c,d){if(arguments.length){this._createWidget(c,d)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(d,e){this.element=b(e).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(e)[this.widgetName],d);var c=this;this.element.bind("remove."+this.widgetName,function(){c.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled")},widget:function(){return this.element},option:function(e,f){var d=e,c=this;if(arguments.length===0){return b.extend({},c.options)}if(typeof e==="string"){if(f===undefined){return this.options[e]}d={};d[e]=f}b.each(d,function(g,h){c._setOption(g,h)});return c},_setOption:function(c,d){this.options[c]=d;if(c==="disabled"){this.widget()[d?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",d)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(d,e,f){var h=this.options[d];e=b.Event(e);e.type=(d===this.widgetEventPrefix?d:this.widgetEventPrefix+d).toLowerCase();f=f||{};if(e.originalEvent){for(var c=b.event.props.length,g;c;){g=b.event.props[--c];e[g]=e.originalEvent[g]}}this.element.trigger(e,f);return !(b.isFunction(h)&&h.call(this.element[0],e,f)===false||e.isDefaultPrevented())}}})(jQuery);;/*! |
| + | * jQuery UI Mouse 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Mouse |
| + | * |
| + | * Depends: |
| + | * jquery.ui.widget.js |
| + | */ /* |
| + | * jQuery UI Mouse 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Mouse |
| + | * |
| + | * Depends: |
| + | * jquery.ui.widget.js |
| + | */ |
| + | (function(a){a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(c){return b._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(b._preventClickEvent){b._preventClickEvent=false;c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(d){d.originalEvent=d.originalEvent||{};if(d.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(d));this._mouseDownEvent=d;var c=this,e=(d.which==1),b=(typeof this.options.cancel=="string"?a(d.target).parents().add(d.target).filter(this.options.cancel).length:false);if(!e||b||!this._mouseCapture(d)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(d)!==false);if(!this._mouseStarted){d.preventDefault();return true}}this._mouseMoveDelegate=function(f){return c._mouseMove(f)};this._mouseUpDelegate=function(f){return c._mouseUp(f)};a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(a.browser.safari||d.preventDefault());d.originalEvent.mouseHandled=true;return true},_mouseMove:function(b){if(a.browser.msie&&!b.button){return this._mouseUp(b)}if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,b)!==false);(this._mouseStarted?this._mouseDrag(b):this._mouseUp(b))}return !this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(b.target==this._mouseDownEvent.target);this._mouseStop(b)}return false},_mouseDistanceMet:function(b){return(Math.max(Math.abs(this._mouseDownEvent.pageX-b.pageX),Math.abs(this._mouseDownEvent.pageY-b.pageY))>=this.options.distance)},_mouseDelayMet:function(b){return this.mouseDelayMet},_mouseStart:function(b){},_mouseDrag:function(b){},_mouseStop:function(b){},_mouseCapture:function(b){return true}})})(jQuery);;/* |
| + | * jQuery UI Position 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Position |
| + | */ (function(f){f.ui=f.ui||{};var c=/left|center|right/,e="center",d=/top|center|bottom/,g="center",a=f.fn.position,b=f.fn.offset;f.fn.position=function(i){if(!i||!i.of){return a.apply(this,arguments)}i=f.extend({},i);var l=f(i.of),n=(i.collision||"flip").split(" "),m=i.offset?i.offset.split(" "):[0,0],k,h,j;if(i.of.nodeType===9){k=l.width();h=l.height();j={top:0,left:0}}else{if(i.of.scrollTo&&i.of.document){k=l.width();h=l.height();j={top:l.scrollTop(),left:l.scrollLeft()}}else{if(i.of.preventDefault){i.at="left top";k=h=0;j={top:i.of.pageY,left:i.of.pageX}}else{k=l.outerWidth();h=l.outerHeight();j=l.offset()}}}f.each(["my","at"],function(){var o=(i[this]||"").split(" ");if(o.length===1){o=c.test(o[0])?o.concat([g]):d.test(o[0])?[e].concat(o):[e,g]}o[0]=c.test(o[0])?o[0]:e;o[1]=d.test(o[1])?o[1]:g;i[this]=o});if(n.length===1){n[1]=n[0]}m[0]=parseInt(m[0],10)||0;if(m.length===1){m[1]=m[0]}m[1]=parseInt(m[1],10)||0;if(i.at[0]==="right"){j.left+=k}else{if(i.at[0]===e){j.left+=k/2}}if(i.at[1]==="bottom"){j.top+=h}else{if(i.at[1]===g){j.top+=h/2}}j.left+=m[0];j.top+=m[1];return this.each(function(){var r=f(this),q=r.outerWidth(),p=r.outerHeight(),o=f.extend({},j);if(i.my[0]==="right"){o.left-=q}else{if(i.my[0]===e){o.left-=q/2}}if(i.my[1]==="bottom"){o.top-=p}else{if(i.my[1]===g){o.top-=p/2}}f.each(["left","top"],function(t,s){if(f.ui.position[n[t]]){f.ui.position[n[t]][s](o,{targetWidth:k,targetHeight:h,elemWidth:q,elemHeight:p,offset:m,my:i.my,at:i.at})}});if(f.fn.bgiframe){r.bgiframe()}r.offset(f.extend(o,{using:i.using}))})};f.ui.position={fit:{left:function(h,i){var k=f(window),j=h.left+i.elemWidth-k.width()-k.scrollLeft();h.left=j>0?h.left-j:Math.max(0,h.left)},top:function(h,i){var k=f(window),j=h.top+i.elemHeight-k.height()-k.scrollTop();h.top=j>0?h.top-j:Math.max(0,h.top)}},flip:{left:function(i,j){if(j.at[0]==="center"){return}var l=f(window),k=i.left+j.elemWidth-l.width()-l.scrollLeft(),h=j.my[0]==="left"?-j.elemWidth:j.my[0]==="right"?j.elemWidth:0,m=-2*j.offset[0];i.left+=i.left<0?h+j.targetWidth+m:k>0?h-j.targetWidth+m:0},top:function(i,k){if(k.at[1]==="center"){return}var m=f(window),l=i.top+k.elemHeight-m.height()-m.scrollTop(),h=k.my[1]==="top"?-k.elemHeight:k.my[1]==="bottom"?k.elemHeight:0,j=k.at[1]==="top"?k.targetHeight:-k.targetHeight,n=-2*k.offset[1];i.top+=i.top<0?h+k.targetHeight+n:l>0?h+j+n:0}}};if(!f.offset.setOffset){f.offset.setOffset=function(l,i){if(/static/.test(f.curCSS(l,"position"))){l.style.position="relative"}var k=f(l),n=k.offset(),h=parseInt(f.curCSS(l,"top",true),10)||0,m=parseInt(f.curCSS(l,"left",true),10)||0,j={top:(i.top-n.top)+h,left:(i.left-n.left)+m};if("using" in i){i.using.call(l,j)}else{k.css(j)}};f.fn.offset=function(h){var i=this[0];if(!i||!i.ownerDocument){return null}if(h){return this.each(function(){f.offset.setOffset(this,h)})}return b.call(this)}}}(jQuery));;/* |
| + | * jQuery UI Draggable 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Draggables |
| + | * |
| + | * Depends: |
| + | * jquery.ui.core.js |
| + | * jquery.ui.mouse.js |
| + | * jquery.ui.widget.js |
| + | */ (function(a){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;(c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt));if(c.containment){this._setContainment()}if(this._trigger("start",b)===false){this._clear();return false}this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();if(this._trigger("drag",b,c)===false){this._mouseUp({});return false}this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if(!this.element[0]||!this.element[0].parentNode){return false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){if(b._trigger("stop",c)!==false){b._clear()}})}else{if(this._trigger("stop",c)!==false){this._clear()}}return false},cancel:function(){if(this.helper.is(".ui-draggable-dragging")){this._mouseUp({})}else{this._clear()}return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(typeof b=="string"){b=b.split(" ")}if(a.isArray(b)){b={left:+b[0],top:+b[1]||0}}if("left" in b){this.offset.click.left=b.left+this.margins.left}if("right" in b){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if("top" in b){this.offset.click.top=b.top+this.margins.top}if("bottom" in b){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.Widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}});a.extend(a.ui.draggable,{version:"1.8"});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(c,d){var f=a(this).data("draggable").options;var e=a.makeArray(a(f.stack)).sort(function(h,g){return(parseInt(a(h).css("zIndex"),10)||0)-(parseInt(a(g).css("zIndex"),10)||0)});if(!e.length){return}var b=parseInt(e[0].style.zIndex)||0;a(e).each(function(g){this.style.zIndex=b+g});this[0].style.zIndex=b+e.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(jQuery);;/* |
| + | * jQuery UI Droppable 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Droppables |
| + | * |
| + | * Depends: |
| + | * jquery.ui.core.js |
| + | * jquery.ui.widget.js |
| + | * jquery.ui.mouse.js |
| + | * jquery.ui.draggable.js |
| + | */ (function(a){a.widget("ui.droppable",{widgetEventPrefix:"drop",options:{accept:"*",activeClass:false,addClasses:true,greedy:false,hoverClass:false,scope:"default",tolerance:"intersect"},_create:function(){var c=this.options,b=c.accept;this.isover=0;this.isout=1;this.accept=a.isFunction(b)?b:function(e){return e.is(b)};this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};a.ui.ddmanager.droppables[c.scope]=a.ui.ddmanager.droppables[c.scope]||[];a.ui.ddmanager.droppables[c.scope].push(this);(c.addClasses&&this.element.addClass("ui-droppable"))},destroy:function(){var b=a.ui.ddmanager.droppables[this.options.scope];for(var c=0;c<b.length;c++){if(b[c]==this){b.splice(c,1)}}this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");return this},_setOption:function(b,c){if(b=="accept"){this.accept=a.isFunction(c)?c:function(e){return e.is(c)}}a.Widget.prototype._setOption.apply(this,arguments)},_activate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.addClass(this.options.activeClass)}(b&&this._trigger("activate",c,this.ui(b)))},_deactivate:function(c){var b=a.ui.ddmanager.current;if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}(b&&this._trigger("deactivate",c,this.ui(b)))},_over:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.addClass(this.options.hoverClass)}this._trigger("over",c,this.ui(b))}},_out:function(c){var b=a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return}if(this.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("out",c,this.ui(b))}},_drop:function(c,d){var b=d||a.ui.ddmanager.current;if(!b||(b.currentItem||b.element)[0]==this.element[0]){return false}var e=false;this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function(){var f=a.data(this,"droppable");if(f.options.greedy&&!f.options.disabled&&f.options.scope==b.options.scope&&f.accept.call(f.element[0],(b.currentItem||b.element))&&a.ui.intersect(b,a.extend(f,{offset:f.element.offset()}),f.options.tolerance)){e=true;return false}});if(e){return false}if(this.accept.call(this.element[0],(b.currentItem||b.element))){if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}this._trigger("drop",c,this.ui(b));return this.element}return false},ui:function(b){return{draggable:(b.currentItem||b.element),helper:b.helper,position:b.position,offset:b.positionAbs}}});a.extend(a.ui.droppable,{version:"1.8"});a.ui.intersect=function(q,j,o){if(!j.offset){return false}var e=(q.positionAbs||q.position.absolute).left,d=e+q.helperProportions.width,n=(q.positionAbs||q.position.absolute).top,m=n+q.helperProportions.height;var g=j.offset.left,c=g+j.proportions.width,p=j.offset.top,k=p+j.proportions.height;switch(o){case"fit":return(g<e&&d<c&&p<n&&m<k);break;case"intersect":return(g<e+(q.helperProportions.width/2)&&d-(q.helperProportions.width/2)<c&&p<n+(q.helperProportions.height/2)&&m-(q.helperProportions.height/2)<k);break;case"pointer":var h=((q.positionAbs||q.position.absolute).left+(q.clickOffset||q.offset.click).left),i=((q.positionAbs||q.position.absolute).top+(q.clickOffset||q.offset.click).top),f=a.ui.isOver(i,h,p,g,j.proportions.height,j.proportions.width);return f;break;case"touch":return((n>=p&&n<=k)||(m>=p&&m<=k)||(n<p&&m>k))&&((e>=g&&e<=c)||(d>=g&&d<=c)||(e<g&&d>c));break;default:return false;break}};a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,g){var b=a.ui.ddmanager.droppables[e.options.scope]||[];var f=g?g.type:null;var h=(e.currentItem||e.element).find(":data(droppable)").andSelf();droppablesLoop:for(var d=0;d<b.length;d++){if(b[d].options.disabled||(e&&!b[d].accept.call(b[d].element[0],(e.currentItem||e.element)))){continue}for(var c=0;c<h.length;c++){if(h[c]==b[d].element[0]){b[d].proportions.height=0;continue droppablesLoop}}b[d].visible=b[d].element.css("display")!="none";if(!b[d].visible){continue}b[d].offset=b[d].element.offset();b[d].proportions={width:b[d].element[0].offsetWidth,height:b[d].element[0].offsetHeight};if(f=="mousedown"){b[d]._activate.call(b[d],g)}}},drop:function(b,c){var d=false;a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(!this.options){return}if(!this.options.disabled&&this.visible&&a.ui.intersect(b,this,this.options.tolerance)){d=d||this._drop.call(this,c)}if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],(b.currentItem||b.element))){this.isout=1;this.isover=0;this._deactivate.call(this,c)}});return d},drag:function(b,c){if(b.options.refreshPositions){a.ui.ddmanager.prepareOffsets(b,c)}a.each(a.ui.ddmanager.droppables[b.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible){return}var e=a.ui.intersect(b,this,this.options.tolerance);var g=!e&&this.isover==1?"isout":(e&&this.isover==0?"isover":null);if(!g){return}var f;if(this.options.greedy){var d=this.element.parents(":data(droppable):eq(0)");if(d.length){f=a.data(d[0],"droppable");f.greedyChild=(g=="isover"?1:0)}}if(f&&g=="isover"){f.isover=0;f.isout=1;f._out.call(f,c)}this[g]=1;this[g=="isout"?"isover":"isout"]=0;this[g=="isover"?"_over":"_out"].call(this,c);if(f&&g=="isout"){f.isout=0;f.isover=1;f._over.call(f,c)}})}}})(jQuery);;/* |
| + | * jQuery UI Resizable 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Resizables |
| + | * |
| + | * Depends: |
| + | * jquery.ui.core.js |
| + | * jquery.ui.mouse.js |
| + | * jquery.ui.widget.js |
| + | */ (function(c){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var e=this,j=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(j.aspectRatio),aspectRatio:j.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:j.helper||j.ghost||j.animate?j.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){if(/relative/.test(this.element.css("position"))&&c.browser.opera){this.element.css({position:"relative",top:"auto",left:"auto"})}this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=j.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var k=this.handles.split(",");this.handles={};for(var f=0;f<k.length;f++){var h=c.trim(k[f]),d="ui-resizable-"+h;var g=c('<div class="ui-resizable-handle '+d+'"></div>');if(/sw|se|ne|nw/.test(h)){g.css({zIndex:++j.zIndex})}if("se"==h){g.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[h]=".ui-resizable-"+h;this.element.append(g)}}this._renderAxis=function(p){p=p||this.element;for(var m in this.handles){if(this.handles[m].constructor==String){this.handles[m]=c(this.handles[m],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var n=c(this.handles[m],this.element),o=0;o=/sw|ne|nw|se|n|s/.test(m)?n.outerHeight():n.outerWidth();var l=["padding",/ne|nw|n/.test(m)?"Top":/se|sw|s/.test(m)?"Bottom":/^e$/.test(m)?"Right":"Left"].join("");p.css(l,o);this._proportionallyResize()}if(!c(this.handles[m]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!e.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}e.axis=i&&i[1]?i[1]:"se"}});if(j.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){c(this).removeClass("ui-resizable-autohide");e._handles.show()},function(){if(!e.resizing){c(this).addClass("ui-resizable-autohide");e._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var d=function(f){c(f).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){d(this.element);var e=this.element;e.after(this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);d(this.originalElement);return this},_mouseCapture:function(e){var f=false;for(var d in this.handles){if(c(this.handles[d])[0]==e.target){f=true}}return !this.options.disabled&&f},_mouseStart:function(f){var i=this.options,e=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(d.is(".ui-draggable")||(/absolute/).test(d.css("position"))){d.css({position:"absolute",top:e.top,left:e.left})}if(c.browser.opera&&(/relative/).test(d.css("position"))){d.css({position:"relative",top:"auto",left:"auto"})}this._renderProxy();var j=b(this.helper.css("left")),g=b(this.helper.css("top"));if(i.containment){j+=c(i.containment).scrollLeft()||0;g+=c(i.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:j,top:g};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:j,top:g};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:f.pageX,top:f.pageY};this.aspectRatio=(typeof i.aspectRatio=="number")?i.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var h=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",h=="auto"?this.axis+"-resize":h);d.addClass("ui-resizable-resizing");this._propagate("start",f);return true},_mouseDrag:function(d){var g=this.helper,f=this.options,l={},p=this,i=this.originalMousePosition,m=this.axis;var q=(d.pageX-i.left)||0,n=(d.pageY-i.top)||0;var h=this._change[m];if(!h){return false}var k=h.apply(this,[d,q,n]),j=c.browser.msie&&c.browser.version<7,e=this.sizeDiff;if(this._aspectRatio||d.shiftKey){k=this._updateRatio(k,d)}k=this._respectSize(k,d);this._propagate("resize",d);g.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(k);this._trigger("resize",d,this.ui());return false},_mouseStop:function(g){this.resizing=false;var h=this.options,l=this;if(this._helper){var f=this._proportionallyResizeElements,d=f.length&&(/textarea/i).test(f[0].nodeName),e=d&&c.ui.hasScroll(f[0],"left")?0:l.sizeDiff.height,j=d?0:l.sizeDiff.width;var m={width:(l.size.width-j),height:(l.size.height-e)},i=(parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left))||null,k=(parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top))||null;if(!h.animate){this.element.css(c.extend(m,{top:k,left:i}))}l.helper.height(l.size.height);l.helper.width(l.size.width);if(this._helper&&!h.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",g);if(this._helper){this.helper.remove()}return false},_updateCache:function(d){var e=this.options;this.offset=this.helper.offset();if(a(d.left)){this.position.left=d.left}if(a(d.top)){this.position.top=d.top}if(a(d.height)){this.size.height=d.height}if(a(d.width)){this.size.width=d.width}},_updateRatio:function(g,f){var h=this.options,i=this.position,e=this.size,d=this.axis;if(g.height){g.width=(e.height*this.aspectRatio)}else{if(g.width){g.height=(e.width/this.aspectRatio)}}if(d=="sw"){g.left=i.left+(e.width-g.width);g.top=null}if(d=="nw"){g.top=i.top+(e.height-g.height);g.left=i.left+(e.width-g.width)}return g},_respectSize:function(k,f){var i=this.helper,h=this.options,q=this._aspectRatio||f.shiftKey,p=this.axis,s=a(k.width)&&h.maxWidth&&(h.maxWidth<k.width),l=a(k.height)&&h.maxHeight&&(h.maxHeight<k.height),g=a(k.width)&&h.minWidth&&(h.minWidth>k.width),r=a(k.height)&&h.minHeight&&(h.minHeight>k.height);if(g){k.width=h.minWidth}if(r){k.height=h.minHeight}if(s){k.width=h.maxWidth}if(l){k.height=h.maxHeight}var e=this.originalPosition.left+this.originalSize.width,n=this.position.top+this.size.height;var j=/sw|nw|w/.test(p),d=/nw|ne|n/.test(p);if(g&&j){k.left=e-h.minWidth}if(s&&j){k.left=e-h.maxWidth}if(r&&d){k.top=n-h.minHeight}if(l&&d){k.top=n-h.maxHeight}var m=!k.width&&!k.height;if(m&&!k.left&&k.top){k.top=null}else{if(m&&!k.top&&k.left){k.left=null}}return k},_proportionallyResize:function(){var j=this.options;if(!this._proportionallyResizeElements.length){return}var f=this.helper||this.element;for(var e=0;e<this._proportionallyResizeElements.length;e++){var g=this._proportionallyResizeElements[e];if(!this.borderDif){var d=[g.css("borderTopWidth"),g.css("borderRightWidth"),g.css("borderBottomWidth"),g.css("borderLeftWidth")],h=[g.css("paddingTop"),g.css("paddingRight"),g.css("paddingBottom"),g.css("paddingLeft")];this.borderDif=c.map(d,function(k,m){var l=parseInt(k,10)||0,n=parseInt(h[m],10)||0;return l+n})}if(c.browser.msie&&!(!(c(f).is(":hidden")||c(f).parents(":hidden").length))){continue}g.css({height:(f.height()-this.borderDif[0]-this.borderDif[2])||0,width:(f.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var e=this.element,h=this.options;this.elementOffset=e.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var d=c.browser.msie&&c.browser.version<7,f=(d?1:0),g=(d?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+g,height:this.element.outerHeight()+g,position:"absolute",left:this.elementOffset.left-f+"px",top:this.elementOffset.top-f+"px",zIndex:++h.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(f,e,d){return{width:this.originalSize.width+e}},w:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{left:h.left+e,width:f.width-e}},n:function(g,e,d){var i=this.options,f=this.originalSize,h=this.originalPosition;return{top:h.top+d,height:f.height-d}},s:function(f,e,d){return{height:this.originalSize.height+d}},se:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},sw:function(f,e,d){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[f,e,d]))},ne:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[f,e,d]))},nw:function(f,e,d){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[f,e,d]))}},_propagate:function(e,d){c.ui.plugin.call(this,e,[d,this.ui()]);(e!="resize"&&this._trigger(e,d,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8"});c.ui.plugin.add("resizable","alsoResize",{start:function(e,f){var d=c(this).data("resizable"),h=d.options;var g=function(i){c(i).each(function(){c(this).data("resizable-alsoresize",{width:parseInt(c(this).width(),10),height:parseInt(c(this).height(),10),left:parseInt(c(this).css("left"),10),top:parseInt(c(this).css("top"),10)})})};if(typeof(h.alsoResize)=="object"&&!h.alsoResize.parentNode){if(h.alsoResize.length){h.alsoResize=h.alsoResize[0];g(h.alsoResize)}else{c.each(h.alsoResize,function(i,j){g(i)})}}else{g(h.alsoResize)}},resize:function(f,h){var e=c(this).data("resizable"),i=e.options,g=e.originalSize,k=e.originalPosition;var j={height:(e.size.height-g.height)||0,width:(e.size.width-g.width)||0,top:(e.position.top-k.top)||0,left:(e.position.left-k.left)||0},d=function(l,m){c(l).each(function(){var p=c(this),q=c(this).data("resizable-alsoresize"),o={},n=m&&m.length?m:["width","height","top","left"];c.each(n||["width","height","top","left"],function(r,t){var s=(q[t]||0)+(j[t]||0);if(s&&s>=0){o[t]=s||null}});if(/relative/.test(p.css("position"))&&c.browser.opera){e._revertToRelativePosition=true;p.css({position:"absolute",top:"auto",left:"auto"})}p.css(o)})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.nodeType){c.each(i.alsoResize,function(l,m){d(l,m)})}else{d(i.alsoResize)}},stop:function(e,f){var d=c(this).data("resizable");if(d._revertToRelativePosition&&c.browser.opera){d._revertToRelativePosition=false;el.css({position:"relative"})}c(this).removeData("resizable-alsoresize-start")}});c.ui.plugin.add("resizable","animate",{stop:function(h,m){var n=c(this).data("resizable"),i=n.options;var g=n._proportionallyResizeElements,d=g.length&&(/textarea/i).test(g[0].nodeName),e=d&&c.ui.hasScroll(g[0],"left")?0:n.sizeDiff.height,k=d?0:n.sizeDiff.width;var f={width:(n.size.width-k),height:(n.size.height-e)},j=(parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left))||null,l=(parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top))||null;n.element.animate(c.extend(f,l&&j?{top:l,left:j}:{}),{duration:i.animateDuration,easing:i.animateEasing,step:function(){var o={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};if(g&&g.length){c(g[0]).css({width:o.width,height:o.height})}n._updateCache(o);n._propagate("resize",h)}})}});c.ui.plugin.add("resizable","containment",{start:function(e,q){var s=c(this).data("resizable"),i=s.options,k=s.element;var f=i.containment,j=(f instanceof c)?f.get(0):(/parent/.test(f))?k.parent().get(0):f;if(!j){return}s.containerElement=c(j);if(/document/.test(f)||f==document){s.containerOffset={left:0,top:0};s.containerPosition={left:0,top:0};s.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var m=c(j),h=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){h[p]=b(m.css("padding"+o))});s.containerOffset=m.offset();s.containerPosition=m.position();s.containerSize={height:(m.innerHeight()-h[3]),width:(m.innerWidth()-h[1])};var n=s.containerOffset,d=s.containerSize.height,l=s.containerSize.width,g=(c.ui.hasScroll(j,"left")?j.scrollWidth:l),r=(c.ui.hasScroll(j)?j.scrollHeight:d);s.parentData={element:j,left:n.left,top:n.top,width:g,height:r}}},resize:function(f,p){var s=c(this).data("resizable"),h=s.options,e=s.containerSize,n=s.containerOffset,l=s.size,m=s.position,q=s._aspectRatio||f.shiftKey,d={top:0,left:0},g=s.containerElement;if(g[0]!=document&&(/static/).test(g.css("position"))){d=n}if(m.left<(s._helper?n.left:0)){s.size.width=s.size.width+(s._helper?(s.position.left-n.left):(s.position.left-d.left));if(q){s.size.height=s.size.width/h.aspectRatio}s.position.left=h.helper?n.left:0}if(m.top<(s._helper?n.top:0)){s.size.height=s.size.height+(s._helper?(s.position.top-n.top):s.position.top);if(q){s.size.width=s.size.height*h.aspectRatio}s.position.top=s._helper?n.top:0}s.offset.left=s.parentData.left+s.position.left;s.offset.top=s.parentData.top+s.position.top;var k=Math.abs((s._helper?s.offset.left-d.left:(s.offset.left-d.left))+s.sizeDiff.width),r=Math.abs((s._helper?s.offset.top-d.top:(s.offset.top-n.top))+s.sizeDiff.height);var j=s.containerElement.get(0)==s.element.parent().get(0),i=/relative|absolute/.test(s.containerElement.css("position"));if(j&&i){k-=s.parentData.left}if(k+s.size.width>=s.parentData.width){s.size.width=s.parentData.width-k;if(q){s.size.height=s.size.width/s.aspectRatio}}if(r+s.size.height>=s.parentData.height){s.size.height=s.parentData.height-r;if(q){s.size.width=s.size.height*s.aspectRatio}}},stop:function(e,m){var p=c(this).data("resizable"),f=p.options,k=p.position,l=p.containerOffset,d=p.containerPosition,g=p.containerElement;var i=c(p.helper),q=i.offset(),n=i.outerWidth()-p.sizeDiff.width,j=i.outerHeight()-p.sizeDiff.height;if(p._helper&&!f.animate&&(/relative/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}if(p._helper&&!f.animate&&(/static/).test(g.css("position"))){c(this).css({left:q.left-d.left-l.left,width:n,height:j})}}});c.ui.plugin.add("resizable","ghost",{start:function(f,g){var d=c(this).data("resizable"),h=d.options,e=d.size;d.ghost=d.originalElement.clone();d.ghost.css({opacity:0.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof h.ghost=="string"?h.ghost:"");d.ghost.appendTo(d.helper)},resize:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost){d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})}},stop:function(e,f){var d=c(this).data("resizable"),g=d.options;if(d.ghost&&d.helper){d.helper.get(0).removeChild(d.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(d,l){var n=c(this).data("resizable"),g=n.options,j=n.size,h=n.originalSize,i=n.originalPosition,m=n.axis,k=g._aspectRatio||d.shiftKey;g.grid=typeof g.grid=="number"?[g.grid,g.grid]:g.grid;var f=Math.round((j.width-h.width)/(g.grid[0]||1))*(g.grid[0]||1),e=Math.round((j.height-h.height)/(g.grid[1]||1))*(g.grid[1]||1);if(/^(se|s|e)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e}else{if(/^(ne)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e}else{if(/^(sw)$/.test(m)){n.size.width=h.width+f;n.size.height=h.height+e;n.position.left=i.left-f}else{n.size.width=h.width+f;n.size.height=h.height+e;n.position.top=i.top-e;n.position.left=i.left-f}}}}});var b=function(d){return parseInt(d,10)||0};var a=function(d){return !isNaN(parseInt(d,10))}})(jQuery);;/* |
| + | * jQuery UI Selectable 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Selectables |
| + | * |
| + | * Depends: |
| + | * jquery.ui.core.js |
| + | * jquery.ui.mouse.js |
| + | * jquery.ui.widget.js |
| + | */ (function(a){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable");this.dragged=false;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]);c.each(function(){var d=a(this);var e=d.offset();a.data(this,"selectable-item",{element:this,$element:d,left:e.left,top:e.top,right:e.left+d.outerWidth(),bottom:e.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"),selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=c.addClass("ui-selectee");this._mouseInit();this.helper=a(document.createElement("div")).css({border:"1px dotted black"}).addClass("ui-selectable-helper")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(d){var b=this;this.opos=[d.pageX,d.pageY];if(this.options.disabled){return}var c=this.options;this.selectees=a(c.filter,this.element[0]);this._trigger("start",d);a(c.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:d.clientX,top:d.clientY,width:0,height:0});if(c.autoRefresh){this.refresh()}this.selectees.filter(".ui-selected").each(function(){var e=a.data(this,"selectable-item");e.startselected=true;if(!d.metaKey){e.$element.removeClass("ui-selected");e.selected=false;e.$element.addClass("ui-unselecting");e.unselecting=true;b._trigger("unselecting",d,{unselecting:e.element})}});a(d.target).parents().andSelf().each(function(){var e=a.data(this,"selectable-item");if(e){e.$element.removeClass("ui-unselecting").addClass("ui-selecting");e.unselecting=false;e.selecting=true;e.selected=true;b._trigger("selecting",d,{selecting:e.element});return false}})},_mouseDrag:function(i){var c=this;this.dragged=true;if(this.options.disabled){return}var e=this.options;var d=this.opos[0],h=this.opos[1],b=i.pageX,g=i.pageY;if(d>b){var f=b;b=d;d=f}if(h>g){var f=g;g=h;h=f}this.helper.css({left:d,top:h,width:b-d,height:g-h});this.selectees.each(function(){var j=a.data(this,"selectable-item");if(!j||j.element==c.element[0]){return}var k=false;if(e.tolerance=="touch"){k=(!(j.left>b||j.right<d||j.top>g||j.bottom<h))}else{if(e.tolerance=="fit"){k=(j.left>d&&j.right<b&&j.top>h&&j.bottom<g)}}if(k){if(j.selected){j.$element.removeClass("ui-selected");j.selected=false}if(j.unselecting){j.$element.removeClass("ui-unselecting");j.unselecting=false}if(!j.selecting){j.$element.addClass("ui-selecting");j.selecting=true;c._trigger("selecting",i,{selecting:j.element})}}else{if(j.selecting){if(i.metaKey&&j.startselected){j.$element.removeClass("ui-selecting");j.selecting=false;j.$element.addClass("ui-selected");j.selected=true}else{j.$element.removeClass("ui-selecting");j.selecting=false;if(j.startselected){j.$element.addClass("ui-unselecting");j.unselecting=true}c._trigger("unselecting",i,{unselecting:j.element})}}if(j.selected){if(!i.metaKey&&!j.startselected){j.$element.removeClass("ui-selected");j.selected=false;j.$element.addClass("ui-unselecting");j.unselecting=true;c._trigger("unselecting",i,{unselecting:j.element})}}}});return false},_mouseStop:function(d){var b=this;this.dragged=false;var c=this.options;a(".ui-unselecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-unselecting");e.unselecting=false;e.startselected=false;b._trigger("unselected",d,{unselected:e.element})});a(".ui-selecting",this.element[0]).each(function(){var e=a.data(this,"selectable-item");e.$element.removeClass("ui-selecting").addClass("ui-selected");e.selecting=false;e.selected=true;e.startselected=true;b._trigger("selected",d,{selected:e.element})});this._trigger("stop",d);this.helper.remove();return false}});a.extend(a.ui.selectable,{version:"1.8"})})(jQuery);;/* |
| + | * jQuery UI Sortable 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Sortables |
| + | * |
| + | * Depends: |
| + | * jquery.ui.core.js |
| + | * jquery.ui.mouse.js |
| + | * jquery.ui.widget.js |
| + | */ (function(a){a.widget("ui.sortable",a.ui.mouse,{widgetEventPrefix:"sort",options:{appendTo:"parent",axis:false,connectWith:false,containment:false,cursor:"auto",cursorAt:false,dropOnEmpty:true,forcePlaceholderSize:false,forceHelperSize:false,grid:false,handle:false,helper:"original",items:"> *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1000},_create:function(){var b=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh();this.floating=this.items.length?(/left|right/).test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--){this.items[b].item.removeData("sortable-item")}return this},_mouseCapture:function(e,f){if(this.reverting){return false}if(this.options.disabled||this.options.type=="static"){return false}this._refreshItems(e);var d=null,c=this,b=a(e.target).parents().each(function(){if(a.data(this,"sortable-item")==c){d=a(this);return false}});if(a.data(e.target,"sortable-item")==c){d=a(e.target)}if(!d){return false}if(this.options.handle&&!f){var g=false;a(this.options.handle,d).find("*").andSelf().each(function(){if(this==e.target){g=true}});if(!g){return false}}this.currentItem=d;this._removeCurrentsFromItems();return true},_mouseStart:function(e,f,b){var g=this.options,c=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(e);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");a.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(e);this.originalPageX=e.pageX;this.originalPageY=e.pageY;(g.cursorAt&&this._adjustOffsetFromHelper(g.cursorAt));this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};if(this.helper[0]!=this.currentItem[0]){this.currentItem.hide()}this._createPlaceholder();if(g.containment){this._setContainment()}if(g.cursor){if(a("body").css("cursor")){this._storedCursor=a("body").css("cursor")}a("body").css("cursor",g.cursor)}if(g.opacity){if(this.helper.css("opacity")){this._storedOpacity=this.helper.css("opacity")}this.helper.css("opacity",g.opacity)}if(g.zIndex){if(this.helper.css("zIndex")){this._storedZIndex=this.helper.css("zIndex")}this.helper.css("zIndex",g.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){this.overflowOffset=this.scrollParent.offset()}this._trigger("start",e,this._uiHash());if(!this._preserveHelperProportions){this._cacheHelperProportions()}if(!b){for(var d=this.containers.length-1;d>=0;d--){this.containers[d]._trigger("activate",e,c._uiHash(this))}}if(a.ui.ddmanager){a.ui.ddmanager.current=this}if(a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,e)}this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(e);return true},_mouseDrag:function(f){this.position=this._generatePosition(f);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs){this.lastPositionAbs=this.positionAbs}if(this.options.scroll){var g=this.options,b=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if((this.overflowOffset.top+this.scrollParent[0].offsetHeight)-f.pageY<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop+g.scrollSpeed}else{if(f.pageY-this.overflowOffset.top<g.scrollSensitivity){this.scrollParent[0].scrollTop=b=this.scrollParent[0].scrollTop-g.scrollSpeed}}if((this.overflowOffset.left+this.scrollParent[0].offsetWidth)-f.pageX<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft+g.scrollSpeed}else{if(f.pageX-this.overflowOffset.left<g.scrollSensitivity){this.scrollParent[0].scrollLeft=b=this.scrollParent[0].scrollLeft-g.scrollSpeed}}}else{if(f.pageY-a(document).scrollTop()<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-g.scrollSpeed)}else{if(a(window).height()-(f.pageY-a(document).scrollTop())<g.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+g.scrollSpeed)}}if(f.pageX-a(document).scrollLeft()<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-g.scrollSpeed)}else{if(a(window).width()-(f.pageX-a(document).scrollLeft())<g.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+g.scrollSpeed)}}}if(b!==false&&a.ui.ddmanager&&!g.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,f)}}this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d],c=e.item[0],h=this._intersectsWithPointer(e);if(!h){continue}if(c!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=c&&!a.ui.contains(this.placeholder[0],c)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],c):true)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(e)){this._rearrange(f,e)}else{break}this._trigger("change",f,this._uiHash());break}}this._contactContainers(f);if(a.ui.ddmanager){a.ui.ddmanager.drag(this,f)}this._trigger("sort",f,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(c,d){if(!c){return}if(a.ui.ddmanager&&!this.options.dropBehaviour){a.ui.ddmanager.drop(this,c)}if(this.options.revert){var b=this;var e=b.placeholder.offset();b.reverting=true;a(this.helper).animate({left:e.left-this.offset.parent.left-b.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-b.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){b._clear(c)})}else{this._clear(c,d)}return false},cancel:function(){var b=this;if(this.dragging){this._mouseUp();if(this.options.helper=="original"){this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}for(var c=this.containers.length-1;c>=0;c--){this.containers[c]._trigger("deactivate",null,b._uiHash(this));if(this.containers[c].containerCache.over){this.containers[c]._trigger("out",null,b._uiHash(this));this.containers[c].containerCache.over=0}}}if(this.placeholder[0].parentNode){this.placeholder[0].parentNode.removeChild(this.placeholder[0])}if(this.options.helper!="original"&&this.helper&&this.helper[0].parentNode){this.helper.remove()}a.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null});if(this.domPosition.prev){a(this.domPosition.prev).after(this.currentItem)}else{a(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};a(b).each(function(){var e=(a(d.item||this).attr(d.attribute||"id")||"").match(d.expression||(/(.+)[-=_](.+)/));if(e){c.push((d.key||e[1]+"[]")+"="+(d.key&&d.expression?e[1]:e[2]))}});return c.join("&")},toArray:function(d){var b=this._getItemsAsjQuery(d&&d.connected);var c=[];d=d||{};b.each(function(){c.push(a(d.item||this).attr(d.attribute||"id")||"")});return c},_intersectsWith:function(m){var e=this.positionAbs.left,d=e+this.helperProportions.width,k=this.positionAbs.top,j=k+this.helperProportions.height;var f=m.left,c=f+m.width,n=m.top,i=n+m.height;var o=this.offset.click.top,h=this.offset.click.left;var g=(k+o)>n&&(k+o)<i&&(e+h)>f&&(e+h)<c;if(this.options.tolerance=="pointer"||this.options.forcePointerForContainers||(this.options.tolerance!="pointer"&&this.helperProportions[this.floating?"width":"height"]>m[this.floating?"width":"height"])){return g}else{return(f<e+(this.helperProportions.width/2)&&d-(this.helperProportions.width/2)<c&&n<k+(this.helperProportions.height/2)&&j-(this.helperProportions.height/2)<i)}},_intersectsWithPointer:function(d){var e=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,d.top,d.height),c=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,d.left,d.width),g=e&&c,b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(!g){return false}return this.floating?(((f&&f=="right")||b=="down")?2:1):(b&&(b=="down"?2:1))},_intersectsWithSides:function(e){var c=a.ui.isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+(e.height/2),e.height),d=a.ui.isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+(e.width/2),e.width),b=this._getDragVerticalDirection(),f=this._getDragHorizontalDirection();if(this.floating&&f){return((f=="right"&&d)||(f=="left"&&!d))}else{return b&&((b=="down"&&c)||(b=="up"&&!c))}},_getDragVerticalDirection:function(){var b=this.positionAbs.top-this.lastPositionAbs.top;return b!=0&&(b>0?"down":"up")},_getDragHorizontalDirection:function(){var b=this.positionAbs.left-this.lastPositionAbs.left;return b!=0&&(b>0?"right":"left")},refresh:function(b){this._refreshItems(b);this.refreshPositions();return this},_connectWith:function(){var b=this.options;return b.connectWith.constructor==String?[b.connectWith]:b.connectWith},_getItemsAsjQuery:function(b){var l=this;var g=[];var e=[];var h=this._connectWith();if(h&&b){for(var d=h.length-1;d>=0;d--){var k=a(h[d]);for(var c=k.length-1;c>=0;c--){var f=a.data(k[c],"sortable");if(f&&f!=this&&!f.options.disabled){e.push([a.isFunction(f.options.items)?f.options.items.call(f.element):a(f.options.items,f.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),f])}}}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var d=e.length-1;d>=0;d--){e[d][0].each(function(){g.push(this)})}return a(g)},_removeCurrentsFromItems:function(){var d=this.currentItem.find(":data(sortable-item)");for(var c=0;c<this.items.length;c++){for(var b=0;b<d.length;b++){if(d[b]==this.items[c].item[0]){this.items.splice(c,1)}}}},_refreshItems:function(b){this.items=[];this.containers=[this];var h=this.items;var p=this;var f=[[a.isFunction(this.options.items)?this.options.items.call(this.element[0],b,{item:this.currentItem}):a(this.options.items,this.element),this]];var l=this._connectWith();if(l){for(var e=l.length-1;e>=0;e--){var m=a(l[e]);for(var d=m.length-1;d>=0;d--){var g=a.data(m[d],"sortable");if(g&&g!=this&&!g.options.disabled){f.push([a.isFunction(g.options.items)?g.options.items.call(g.element[0],b,{item:this.currentItem}):a(g.options.items,g.element),g]);this.containers.push(g)}}}}for(var e=f.length-1;e>=0;e--){var k=f[e][1];var c=f[e][0];for(var d=0,n=c.length;d<n;d++){var o=a(c[d]);o.data("sortable-item",k);h.push({item:o,instance:k,width:0,height:0,left:0,top:0})}}},refreshPositions:function(b){if(this.offsetParent&&this.helper){this.offset.parent=this._getParentOffset()}for(var d=this.items.length-1;d>=0;d--){var e=this.items[d];var c=this.options.toleranceElement?a(this.options.toleranceElement,e.item):e.item;if(!b){e.width=c.outerWidth();e.height=c.outerHeight()}var f=c.offset();e.left=f.left;e.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers){this.options.custom.refreshContainers.call(this)}else{for(var d=this.containers.length-1;d>=0;d--){var f=this.containers[d].element.offset();this.containers[d].containerCache.left=f.left;this.containers[d].containerCache.top=f.top;this.containers[d].containerCache.width=this.containers[d].element.outerWidth();this.containers[d].containerCache.height=this.containers[d].element.outerHeight()}}return this},_createPlaceholder:function(d){var b=d||this,e=b.options;if(!e.placeholder||e.placeholder.constructor==String){var c=e.placeholder;e.placeholder={element:function(){var f=a(document.createElement(b.currentItem[0].nodeName)).addClass(c||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!c){f.style.visibility="hidden"}return f},update:function(f,g){if(c&&!e.forcePlaceholderSize){return}if(!g.height()){g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10))}if(!g.width()){g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=a(e.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);e.placeholder.update(b,b.placeholder)},_contactContainers:function(b){var d=null,k=null;for(var f=this.containers.length-1;f>=0;f--){if(a.ui.contains(this.currentItem[0],this.containers[f].element[0])){continue}if(this._intersectsWith(this.containers[f].containerCache)){if(d&&a.ui.contains(this.containers[f].element[0],d.element[0])){continue}d=this.containers[f];k=f}else{if(this.containers[f].containerCache.over){this.containers[f]._trigger("out",b,this._uiHash(this));this.containers[f].containerCache.over=0}}}if(!d){return}if(this.containers.length===1){this.containers[k]._trigger("over",b,this._uiHash(this));this.containers[k].containerCache.over=1}else{if(this.currentContainer!=this.containers[k]){var h=10000;var g=null;var c=this.positionAbs[this.containers[k].floating?"left":"top"];for(var e=this.items.length-1;e>=0;e--){if(!a.ui.contains(this.containers[k].element[0],this.items[e].item[0])){continue}var l=this.items[e][this.containers[k].floating?"left":"top"];if(Math.abs(l-c)<h){h=Math.abs(l-c);g=this.items[e]}}if(!g&&!this.options.dropOnEmpty){return}this.currentContainer=this.containers[k];g?this._rearrange(b,g,null,true):this._rearrange(b,null,this.containers[k].element,true);this._trigger("change",b,this._uiHash());this.containers[k]._trigger("change",b,this._uiHash(this));this.options.placeholder.update(this.currentContainer,this.placeholder);this.containers[k]._trigger("over",b,this._uiHash(this));this.containers[k].containerCache.over=1}}},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c,this.currentItem])):(d.helper=="clone"?this.currentItem.clone():this.currentItem);if(!b.parents("body").length){a(d.appendTo!="parent"?d.appendTo:this.currentItem[0].parentNode)[0].appendChild(b[0])}if(b[0]==this.currentItem[0]){this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}}if(b[0].style.width==""||d.forceHelperSize){b.width(this.currentItem.width())}if(b[0].style.height==""||d.forceHelperSize){b.height(this.currentItem.height())}return b},_adjustOffsetFromHelper:function(b){if(typeof b=="string"){b=b.split(" ")}if(a.isArray(b)){b={left:+b[0],top:+b[1]||0}}if("left" in b){this.offset.click.left=b.left+this.margins.left}if("right" in b){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if("top" in b){this.offset.click.top=b.top+this.margins.top}if("bottom" in b){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.currentItem.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.currentItem.css("marginLeft"),10)||0),top:(parseInt(this.currentItem.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)){var c=a(e.containment)[0];var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_rearrange:function(g,f,c,e){c?c[0].appendChild(this.placeholder[0]):f.item[0].parentNode.insertBefore(this.placeholder[0],(this.direction=="down"?f.item[0]:f.item[0].nextSibling));this.counter=this.counter?++this.counter:1;var d=this,b=this.counter;window.setTimeout(function(){if(b==d.counter){d.refreshPositions(!e)}},0)},_clear:function(d,e){this.reverting=false;var f=[],b=this;if(!this._noFinalSort&&this.currentItem[0].parentNode){this.placeholder.before(this.currentItem)}this._noFinalSort=null;if(this.helper[0]==this.currentItem[0]){for(var c in this._storedCSS){if(this._storedCSS[c]=="auto"||this._storedCSS[c]=="static"){this._storedCSS[c]=""}}this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}if(this.fromOutside&&!e){f.push(function(g){this._trigger("receive",g,this._uiHash(this.fromOutside))})}if((this.fromOutside||this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0])&&!e){f.push(function(g){this._trigger("update",g,this._uiHash())})}if(!a.ui.contains(this.element[0],this.currentItem[0])){if(!e){f.push(function(g){this._trigger("remove",g,this._uiHash())})}for(var c=this.containers.length-1;c>=0;c--){if(a.ui.contains(this.containers[c].element[0],this.currentItem[0])&&!e){f.push((function(g){return function(h){g._trigger("receive",h,this._uiHash(this))}}).call(this,this.containers[c]));f.push((function(g){return function(h){g._trigger("update",h,this._uiHash(this))}}).call(this,this.containers[c]))}}}for(var c=this.containers.length-1;c>=0;c--){if(!e){f.push((function(g){return function(h){g._trigger("deactivate",h,this._uiHash(this))}}).call(this,this.containers[c]))}if(this.containers[c].containerCache.over){f.push((function(g){return function(h){g._trigger("out",h,this._uiHash(this))}}).call(this,this.containers[c]));this.containers[c].containerCache.over=0}}if(this._storedCursor){a("body").css("cursor",this._storedCursor)}if(this._storedOpacity){this.helper.css("opacity",this._storedOpacity)}if(this._storedZIndex){this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex)}this.dragging=false;if(this.cancelHelperRemoval){if(!e){this._trigger("beforeStop",d,this._uiHash());for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}return false}if(!e){this._trigger("beforeStop",d,this._uiHash())}this.placeholder[0].parentNode.removeChild(this.placeholder[0]);if(this.helper[0]!=this.currentItem[0]){this.helper.remove()}this.helper=null;if(!e){for(var c=0;c<f.length;c++){f[c].call(this,d)}this._trigger("stop",d,this._uiHash())}this.fromOutside=false;return true},_trigger:function(){if(a.Widget.prototype._trigger.apply(this,arguments)===false){this.cancel()}},_uiHash:function(c){var b=c||this;return{helper:b.helper,placeholder:b.placeholder||a([]),position:b.position,originalPosition:b.originalPosition,offset:b.positionAbs,item:b.currentItem,sender:c?c.element:null}}});a.extend(a.ui.sortable,{version:"1.8"})})(jQuery);;/* |
| + | * jQuery UI Effects 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/ |
| + | */ jQuery.effects||(function(g){g.effects={};g.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(l,k){g.fx.step[k]=function(m){if(!m.colorInit){m.start=j(m.elem,k);m.end=i(m.end);m.colorInit=true}m.elem.style[k]="rgb("+Math.max(Math.min(parseInt((m.pos*(m.end[0]-m.start[0]))+m.start[0],10),255),0)+","+Math.max(Math.min(parseInt((m.pos*(m.end[1]-m.start[1]))+m.start[1],10),255),0)+","+Math.max(Math.min(parseInt((m.pos*(m.end[2]-m.start[2]))+m.start[2],10),255),0)+")"}});function i(l){var k;if(l&&l.constructor==Array&&l.length==3){return l}if(k=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(l)){return[parseInt(k[1],10),parseInt(k[2],10),parseInt(k[3],10)]}if(k=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(l)){return[parseFloat(k[1])*2.55,parseFloat(k[2])*2.55,parseFloat(k[3])*2.55]}if(k=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(l)){return[parseInt(k[1],16),parseInt(k[2],16),parseInt(k[3],16)]}if(k=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(l)){return[parseInt(k[1]+k[1],16),parseInt(k[2]+k[2],16),parseInt(k[3]+k[3],16)]}if(k=/rgba\(0, 0, 0, 0\)/.exec(l)){return a.transparent}return a[g.trim(l).toLowerCase()]}function j(m,k){var l;do{l=g.curCSS(m,k);if(l!=""&&l!="transparent"||g.nodeName(m,"body")){break}k="backgroundColor"}while(m=m.parentNode);return i(l)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]};var e=["add","remove","toggle"],c={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};function f(){var n=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,o={},l,m;if(n&&n.length&&n[0]&&n[n[0]]){var k=n.length;while(k--){l=n[k];if(typeof n[l]=="string"){m=l.replace(/\-(\w)/g,function(p,q){return q.toUpperCase()});o[m]=n[l]}}}else{for(l in n){if(typeof n[l]==="string"){o[l]=n[l]}}}return o}function b(l){var k,m;for(k in l){m=l[k];if(m==null||g.isFunction(m)||k in c||(/scrollbar/).test(k)||(!(/color/i).test(k)&&isNaN(parseFloat(m)))){delete l[k]}}return l}function h(k,m){var n={_:0},l;for(l in m){if(k[l]!=m[l]){n[l]=m[l]}}return n}g.effects.animateClass=function(k,l,n,m){if(g.isFunction(n)){m=n;n=null}return this.each(function(){var r=g(this),o=r.attr("style")||" ",s=b(f.call(this)),q,p=r.attr("className");g.each(e,function(t,u){if(k[u]){r[u+"Class"](k[u])}});q=b(f.call(this));r.attr("className",p);r.animate(h(s,q),l,n,function(){g.each(e,function(t,u){if(k[u]){r[u+"Class"](k[u])}});if(typeof r.attr("style")=="object"){r.attr("style").cssText="";r.attr("style").cssText=o}else{r.attr("style",o)}if(m){m.apply(this,arguments)}})})};g.fn.extend({_addClass:g.fn.addClass,addClass:function(l,k,n,m){return k?g.effects.animateClass.apply(this,[{add:l},k,n,m]):this._addClass(l)},_removeClass:g.fn.removeClass,removeClass:function(l,k,n,m){return k?g.effects.animateClass.apply(this,[{remove:l},k,n,m]):this._removeClass(l)},_toggleClass:g.fn.toggleClass,toggleClass:function(m,l,k,o,n){if(typeof l=="boolean"||l===undefined){if(!k){return this._toggleClass(m,l)}else{return g.effects.animateClass.apply(this,[(l?{add:m}:{remove:m}),k,o,n])}}else{return g.effects.animateClass.apply(this,[{toggle:m},l,k,o])}},switchClass:function(k,m,l,o,n){return g.effects.animateClass.apply(this,[{add:m,remove:k},l,o,n])}});g.extend(g.effects,{version:"1.8",save:function(l,m){for(var k=0;k<m.length;k++){if(m[k]!==null){l.data("ec.storage."+m[k],l[0].style[m[k]])}}},restore:function(l,m){for(var k=0;k<m.length;k++){if(m[k]!==null){l.css(m[k],l.data("ec.storage."+m[k]))}}},setMode:function(k,l){if(l=="toggle"){l=k.is(":hidden")?"show":"hide"}return l},getBaseline:function(l,m){var n,k;switch(l[0]){case"top":n=0;break;case"middle":n=0.5;break;case"bottom":n=1;break;default:n=l[0]/m.height}switch(l[1]){case"left":k=0;break;case"center":k=0.5;break;case"right":k=1;break;default:k=l[1]/m.width}return{x:k,y:n}},createWrapper:function(k){if(k.parent().is(".ui-effects-wrapper")){return k.parent()}var l={width:k.outerWidth(true),height:k.outerHeight(true),"float":k.css("float")},m=g("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});k.wrap(m);m=k.parent();if(k.css("position")=="static"){m.css({position:"relative"});k.css({position:"relative"})}else{g.extend(l,{position:k.css("position"),zIndex:k.css("z-index")});g.each(["top","left","bottom","right"],function(n,o){l[o]=k.css(o);if(isNaN(parseInt(l[o],10))){l[o]="auto"}});k.css({position:"relative",top:0,left:0})}return m.css(l).show()},removeWrapper:function(k){if(k.parent().is(".ui-effects-wrapper")){return k.parent().replaceWith(k)}return k},setTransition:function(l,n,k,m){m=m||{};g.each(n,function(p,o){unit=l.cssUnit(o);if(unit[0]>0){m[o]=unit[0]*k+unit[1]}});return m}});function d(l,k,m,n){if(typeof l=="object"){n=k;m=null;k=l;l=k.effect}if(g.isFunction(k)){n=k;m=null;k={}}if(g.isFunction(m)){n=m;m=null}if(typeof k=="number"||g.fx.speeds[k]){n=m;m=k;k={}}k=k||{};m=m||k.duration;m=g.fx.off?0:typeof m=="number"?m:g.fx.speeds[m]||g.fx.speeds._default;n=n||k.complete;return[l,k,m,n]}g.fn.extend({effect:function(n,m,p,q){var l=d.apply(this,arguments),o={options:l[1],duration:l[2],callback:l[3]},k=g.effects[n];return k&&!g.fx.off?k.call(this,o):this},_show:g.fn.show,show:function(l){if(!l||typeof l=="number"||g.fx.speeds[l]){return this._show.apply(this,arguments)}else{var k=d.apply(this,arguments);k[1].mode="show";return this.effect.apply(this,k)}},_hide:g.fn.hide,hide:function(l){if(!l||typeof l=="number"||g.fx.speeds[l]){return this._hide.apply(this,arguments)}else{var k=d.apply(this,arguments);k[1].mode="hide";return this.effect.apply(this,k)}},__toggle:g.fn.toggle,toggle:function(l){if(!l||typeof l=="number"||g.fx.speeds[l]||typeof l=="boolean"||g.isFunction(l)){return this.__toggle.apply(this,arguments)}else{var k=d.apply(this,arguments);k[1].mode="toggle";return this.effect.apply(this,k)}},cssUnit:function(k){var l=this.css(k),m=[];g.each(["em","px","%","pt"],function(n,o){if(l.indexOf(o)>0){m=[parseFloat(l),o]}});return m}});g.easing.jswing=g.easing.swing;g.extend(g.easing,{def:"easeOutQuad",swing:function(l,m,k,o,n){return g.easing[g.easing.def](l,m,k,o,n)},easeInQuad:function(l,m,k,o,n){return o*(m/=n)*m+k},easeOutQuad:function(l,m,k,o,n){return -o*(m/=n)*(m-2)+k},easeInOutQuad:function(l,m,k,o,n){if((m/=n/2)<1){return o/2*m*m+k}return -o/2*((--m)*(m-2)-1)+k},easeInCubic:function(l,m,k,o,n){return o*(m/=n)*m*m+k},easeOutCubic:function(l,m,k,o,n){return o*((m=m/n-1)*m*m+1)+k},easeInOutCubic:function(l,m,k,o,n){if((m/=n/2)<1){return o/2*m*m*m+k}return o/2*((m-=2)*m*m+2)+k},easeInQuart:function(l,m,k,o,n){return o*(m/=n)*m*m*m+k},easeOutQuart:function(l,m,k,o,n){return -o*((m=m/n-1)*m*m*m-1)+k},easeInOutQuart:function(l,m,k,o,n){if((m/=n/2)<1){return o/2*m*m*m*m+k}return -o/2*((m-=2)*m*m*m-2)+k},easeInQuint:function(l,m,k,o,n){return o*(m/=n)*m*m*m*m+k},easeOutQuint:function(l,m,k,o,n){return o*((m=m/n-1)*m*m*m*m+1)+k},easeInOutQuint:function(l,m,k,o,n){if((m/=n/2)<1){return o/2*m*m*m*m*m+k}return o/2*((m-=2)*m*m*m*m+2)+k},easeInSine:function(l,m,k,o,n){return -o*Math.cos(m/n*(Math.PI/2))+o+k},easeOutSine:function(l,m,k,o,n){return o*Math.sin(m/n*(Math.PI/2))+k},easeInOutSine:function(l,m,k,o,n){return -o/2*(Math.cos(Math.PI*m/n)-1)+k},easeInExpo:function(l,m,k,o,n){return(m==0)?k:o*Math.pow(2,10*(m/n-1))+k},easeOutExpo:function(l,m,k,o,n){return(m==n)?k+o:o*(-Math.pow(2,-10*m/n)+1)+k},easeInOutExpo:function(l,m,k,o,n){if(m==0){return k}if(m==n){return k+o}if((m/=n/2)<1){return o/2*Math.pow(2,10*(m-1))+k}return o/2*(-Math.pow(2,-10*--m)+2)+k},easeInCirc:function(l,m,k,o,n){return -o*(Math.sqrt(1-(m/=n)*m)-1)+k},easeOutCirc:function(l,m,k,o,n){return o*Math.sqrt(1-(m=m/n-1)*m)+k},easeInOutCirc:function(l,m,k,o,n){if((m/=n/2)<1){return -o/2*(Math.sqrt(1-m*m)-1)+k}return o/2*(Math.sqrt(1-(m-=2)*m)+1)+k},easeInElastic:function(l,n,k,u,r){var o=1.70158;var q=0;var m=u;if(n==0){return k}if((n/=r)==1){return k+u}if(!q){q=r*0.3}if(m<Math.abs(u)){m=u;var o=q/4}else{var o=q/(2*Math.PI)*Math.asin(u/m)}return -(m*Math.pow(2,10*(n-=1))*Math.sin((n*r-o)*(2*Math.PI)/q))+k},easeOutElastic:function(l,n,k,u,r){var o=1.70158;var q=0;var m=u;if(n==0){return k}if((n/=r)==1){return k+u}if(!q){q=r*0.3}if(m<Math.abs(u)){m=u;var o=q/4}else{var o=q/(2*Math.PI)*Math.asin(u/m)}return m*Math.pow(2,-10*n)*Math.sin((n*r-o)*(2*Math.PI)/q)+u+k},easeInOutElastic:function(l,n,k,u,r){var o=1.70158;var q=0;var m=u;if(n==0){return k}if((n/=r/2)==2){return k+u}if(!q){q=r*(0.3*1.5)}if(m<Math.abs(u)){m=u;var o=q/4}else{var o=q/(2*Math.PI)*Math.asin(u/m)}if(n<1){return -0.5*(m*Math.pow(2,10*(n-=1))*Math.sin((n*r-o)*(2*Math.PI)/q))+k}return m*Math.pow(2,-10*(n-=1))*Math.sin((n*r-o)*(2*Math.PI)/q)*0.5+u+k},easeInBack:function(l,m,k,p,o,n){if(n==undefined){n=1.70158}return p*(m/=o)*m*((n+1)*m-n)+k},easeOutBack:function(l,m,k,p,o,n){if(n==undefined){n=1.70158}return p*((m=m/o-1)*m*((n+1)*m+n)+1)+k},easeInOutBack:function(l,m,k,p,o,n){if(n==undefined){n=1.70158}if((m/=o/2)<1){return p/2*(m*m*(((n*=(1.525))+1)*m-n))+k}return p/2*((m-=2)*m*(((n*=(1.525))+1)*m+n)+2)+k},easeInBounce:function(l,m,k,o,n){return o-g.easing.easeOutBounce(l,n-m,0,o,n)+k},easeOutBounce:function(l,m,k,o,n){if((m/=n)<(1/2.75)){return o*(7.5625*m*m)+k}else{if(m<(2/2.75)){return o*(7.5625*(m-=(1.5/2.75))*m+0.75)+k}else{if(m<(2.5/2.75)){return o*(7.5625*(m-=(2.25/2.75))*m+0.9375)+k}else{return o*(7.5625*(m-=(2.625/2.75))*m+0.984375)+k}}}},easeInOutBounce:function(l,m,k,o,n){if(m<n/2){return g.easing.easeInBounce(l,m*2,0,o,n)*0.5+k}return g.easing.easeOutBounce(l,m*2-n,0,o,n)*0.5+o*0.5+k}})})(jQuery);;/* |
| + | * jQuery UI Effects Blind 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Blind |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.blind=function(b){return this.queue(function(){var d=a(this),c=["position","top","left"];var h=a.effects.setMode(d,b.options.mode||"hide");var g=b.options.direction||"vertical";a.effects.save(d,c);d.show();var j=a.effects.createWrapper(d).css({overflow:"hidden"});var e=(g=="vertical")?"height":"width";var i=(g=="vertical")?j.height():j.width();if(h=="show"){j.css(e,0)}var f={};f[e]=h=="show"?i:0;j.animate(f,b.duration,b.options.easing,function(){if(h=="hide"){d.hide()}a.effects.restore(d,c);a.effects.removeWrapper(d);if(b.callback){b.callback.apply(d[0],arguments)}d.dequeue()})})}})(jQuery);;/* |
| + | * jQuery UI Effects Bounce 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Bounce |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.bounce=function(b){return this.queue(function(){var e=a(this),l=["position","top","left"];var k=a.effects.setMode(e,b.options.mode||"effect");var n=b.options.direction||"up";var c=b.options.distance||20;var d=b.options.times||5;var g=b.duration||250;if(/show|hide/.test(k)){l.push("opacity")}a.effects.save(e,l);e.show();a.effects.createWrapper(e);var f=(n=="up"||n=="down")?"top":"left";var p=(n=="up"||n=="left")?"pos":"neg";var c=b.options.distance||(f=="top"?e.outerHeight({margin:true})/3:e.outerWidth({margin:true})/3);if(k=="show"){e.css("opacity",0).css(f,p=="pos"?-c:c)}if(k=="hide"){c=c/(d*2)}if(k!="hide"){d--}if(k=="show"){var h={opacity:1};h[f]=(p=="pos"?"+=":"-=")+c;e.animate(h,g/2,b.options.easing);c=c/2;d--}for(var j=0;j<d;j++){var o={},m={};o[f]=(p=="pos"?"-=":"+=")+c;m[f]=(p=="pos"?"+=":"-=")+c;e.animate(o,g/2,b.options.easing).animate(m,g/2,b.options.easing);c=(k=="hide")?c*2:c/2}if(k=="hide"){var h={opacity:0};h[f]=(p=="pos"?"-=":"+=")+c;e.animate(h,g/2,b.options.easing,function(){e.hide();a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}})}else{var o={},m={};o[f]=(p=="pos"?"-=":"+=")+c;m[f]=(p=="pos"?"+=":"-=")+c;e.animate(o,g/2,b.options.easing).animate(m,g/2,b.options.easing,function(){a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}})}e.queue("fx",function(){e.dequeue()});e.dequeue()})}})(jQuery);;/* |
| + | * jQuery UI Effects Clip 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Clip |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.clip=function(b){return this.queue(function(){var f=a(this),j=["position","top","left","height","width"];var i=a.effects.setMode(f,b.options.mode||"hide");var k=b.options.direction||"vertical";a.effects.save(f,j);f.show();var c=a.effects.createWrapper(f).css({overflow:"hidden"});var e=f[0].tagName=="IMG"?c:f;var g={size:(k=="vertical")?"height":"width",position:(k=="vertical")?"top":"left"};var d=(k=="vertical")?e.height():e.width();if(i=="show"){e.css(g.size,0);e.css(g.position,d/2)}var h={};h[g.size]=i=="show"?d:0;h[g.position]=i=="show"?0:d/2;e.animate(h,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(i=="hide"){f.hide()}a.effects.restore(f,j);a.effects.removeWrapper(f);if(b.callback){b.callback.apply(f[0],arguments)}f.dequeue()}})})}})(jQuery);;/* |
| + | * jQuery UI Effects Drop 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Drop |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.drop=function(b){return this.queue(function(){var e=a(this),d=["position","top","left","opacity"];var i=a.effects.setMode(e,b.options.mode||"hide");var h=b.options.direction||"left";a.effects.save(e,d);e.show();a.effects.createWrapper(e);var f=(h=="up"||h=="down")?"top":"left";var c=(h=="up"||h=="left")?"pos":"neg";var j=b.options.distance||(f=="top"?e.outerHeight({margin:true})/2:e.outerWidth({margin:true})/2);if(i=="show"){e.css("opacity",0).css(f,c=="pos"?-j:j)}var g={opacity:i=="show"?1:0};g[f]=(i=="show"?(c=="pos"?"+=":"-="):(c=="pos"?"-=":"+="))+j;e.animate(g,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(i=="hide"){e.hide()}a.effects.restore(e,d);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);;/* |
| + | * jQuery UI Effects Explode 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Explode |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.explode=function(b){return this.queue(function(){var k=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;var e=b.options.pieces?Math.round(Math.sqrt(b.options.pieces)):3;b.options.mode=b.options.mode=="toggle"?(a(this).is(":visible")?"hide":"show"):b.options.mode;var h=a(this).show().css("visibility","hidden");var l=h.offset();l.top-=parseInt(h.css("marginTop"),10)||0;l.left-=parseInt(h.css("marginLeft"),10)||0;var g=h.outerWidth(true);var c=h.outerHeight(true);for(var f=0;f<k;f++){for(var d=0;d<e;d++){h.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-d*(g/e),top:-f*(c/k)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/e,height:c/k,left:l.left+d*(g/e)+(b.options.mode=="show"?(d-Math.floor(e/2))*(g/e):0),top:l.top+f*(c/k)+(b.options.mode=="show"?(f-Math.floor(k/2))*(c/k):0),opacity:b.options.mode=="show"?0:1}).animate({left:l.left+d*(g/e)+(b.options.mode=="show"?0:(d-Math.floor(e/2))*(g/e)),top:l.top+f*(c/k)+(b.options.mode=="show"?0:(f-Math.floor(k/2))*(c/k)),opacity:b.options.mode=="show"?1:0},b.duration||500)}}setTimeout(function(){b.options.mode=="show"?h.css({visibility:"visible"}):h.css({visibility:"visible"}).hide();if(b.callback){b.callback.apply(h[0])}h.dequeue();a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);;/* |
| + | * jQuery UI Effects Fold 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Fold |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.fold=function(b){return this.queue(function(){var e=a(this),k=["position","top","left"];var h=a.effects.setMode(e,b.options.mode||"hide");var o=b.options.size||15;var n=!(!b.options.horizFirst);var g=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(e,k);e.show();var d=a.effects.createWrapper(e).css({overflow:"hidden"});var i=((h=="show")!=n);var f=i?["width","height"]:["height","width"];var c=i?[d.width(),d.height()]:[d.height(),d.width()];var j=/([0-9]+)%/.exec(o);if(j){o=parseInt(j[1],10)/100*c[h=="hide"?0:1]}if(h=="show"){d.css(n?{height:0,width:o}:{height:o,width:0})}var m={},l={};m[f[0]]=h=="show"?c[0]:o;l[f[1]]=h=="show"?c[1]:0;d.animate(m,g,b.options.easing).animate(l,g,b.options.easing,function(){if(h=="hide"){e.hide()}a.effects.restore(e,k);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(e[0],arguments)}e.dequeue()})})}})(jQuery);;/* |
| + | * jQuery UI Effects Highlight 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Highlight |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.highlight=function(b){return this.queue(function(){var d=a(this),c=["backgroundImage","backgroundColor","opacity"],f=a.effects.setMode(d,b.options.mode||"show"),e={backgroundColor:d.css("backgroundColor")};if(f=="hide"){e.opacity=0}a.effects.save(d,c);d.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(e,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){(f=="hide"&&d.hide());a.effects.restore(d,c);(f=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"));(b.callback&&b.callback.apply(this,arguments));d.dequeue()}})})}})(jQuery);;/* |
| + | * jQuery UI Effects Pulsate 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Pulsate |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.pulsate=function(b){return this.queue(function(){var d=a(this),e=a.effects.setMode(d,b.options.mode||"show");times=((b.options.times||5)*2)-1;duration=b.duration?b.duration/2:a.fx.speeds._default/2,isVisible=d.is(":visible"),animateTo=0;if(!isVisible){d.css("opacity",0).show();animateTo=1}if((e=="hide"&&isVisible)||(e=="show"&&!isVisible)){times--}for(var c=0;c<times;c++){d.animate({opacity:animateTo},duration,b.options.easing);animateTo=(animateTo+1)%2}d.animate({opacity:animateTo},duration,b.options.easing,function(){if(animateTo==0){d.hide()}(b.callback&&b.callback.apply(this,arguments))});d.queue("fx",function(){d.dequeue()}).dequeue()})}})(jQuery);;/* |
| + | * jQuery UI Effects Scale 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Scale |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.puff=function(b){return this.queue(function(){var f=a(this),g=a.effects.setMode(f,b.options.mode||"hide"),e=parseInt(b.options.percent,10)||150,d=e/100,c={height:f.height(),width:f.width()};a.extend(b.options,{fade:true,mode:g,percent:g=="hide"?e:100,from:g=="hide"?c:{height:c.height*d,width:c.width*d}});f.effect("scale",b.options,b.duration,b.callback);f.dequeue()})};a.effects.scale=function(b){return this.queue(function(){var g=a(this);var d=a.extend(true,{},b.options);var j=a.effects.setMode(g,b.options.mode||"effect");var h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:(j=="hide"?0:100));var i=b.options.direction||"both";var c=b.options.origin;if(j!="effect"){d.origin=c||["middle","center"];d.restore=true}var f={height:g.height(),width:g.width()};g.from=b.options.from||(j=="show"?{height:0,width:0}:f);var e={y:i!="horizontal"?(h/100):1,x:i!="vertical"?(h/100):1};g.to={height:f.height*e.y,width:f.width*e.x};if(b.options.fade){if(j=="show"){g.from.opacity=0;g.to.opacity=1}if(j=="hide"){g.from.opacity=1;g.to.opacity=0}}d.from=g.from;d.to=g.to;d.mode=j;g.effect("size",d,b.duration,b.callback);g.dequeue()})};a.effects.size=function(b){return this.queue(function(){var c=a(this),n=["position","top","left","width","height","overflow","opacity"];var m=["position","top","left","overflow","opacity"];var j=["width","height","overflow"];var p=["fontSize"];var k=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"];var f=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"];var g=a.effects.setMode(c,b.options.mode||"effect");var i=b.options.restore||false;var e=b.options.scale||"both";var o=b.options.origin;var d={height:c.height(),width:c.width()};c.from=b.options.from||d;c.to=b.options.to||d;if(o){var h=a.effects.getBaseline(o,d);c.from.top=(d.height-c.from.height)*h.y;c.from.left=(d.width-c.from.width)*h.x;c.to.top=(d.height-c.to.height)*h.y;c.to.left=(d.width-c.to.width)*h.x}var l={from:{y:c.from.height/d.height,x:c.from.width/d.width},to:{y:c.to.height/d.height,x:c.to.width/d.width}};if(e=="box"||e=="both"){if(l.from.y!=l.to.y){n=n.concat(k);c.from=a.effects.setTransition(c,k,l.from.y,c.from);c.to=a.effects.setTransition(c,k,l.to.y,c.to)}if(l.from.x!=l.to.x){n=n.concat(f);c.from=a.effects.setTransition(c,f,l.from.x,c.from);c.to=a.effects.setTransition(c,f,l.to.x,c.to)}}if(e=="content"||e=="both"){if(l.from.y!=l.to.y){n=n.concat(p);c.from=a.effects.setTransition(c,p,l.from.y,c.from);c.to=a.effects.setTransition(c,p,l.to.y,c.to)}}a.effects.save(c,i?n:m);c.show();a.effects.createWrapper(c);c.css("overflow","hidden").css(c.from);if(e=="content"||e=="both"){k=k.concat(["marginTop","marginBottom"]).concat(p);f=f.concat(["marginLeft","marginRight"]);j=n.concat(k).concat(f);c.find("*[width]").each(function(){child=a(this);if(i){a.effects.save(child,j)}var q={height:child.height(),width:child.width()};child.from={height:q.height*l.from.y,width:q.width*l.from.x};child.to={height:q.height*l.to.y,width:q.width*l.to.x};if(l.from.y!=l.to.y){child.from=a.effects.setTransition(child,k,l.from.y,child.from);child.to=a.effects.setTransition(child,k,l.to.y,child.to)}if(l.from.x!=l.to.x){child.from=a.effects.setTransition(child,f,l.from.x,child.from);child.to=a.effects.setTransition(child,f,l.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){if(i){a.effects.restore(child,j)}})})}c.animate(c.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(c.to.opacity===0){c.css("opacity",c.from.opacity)}if(g=="hide"){c.hide()}a.effects.restore(c,i?n:m);a.effects.removeWrapper(c);if(b.callback){b.callback.apply(this,arguments)}c.dequeue()}})})}})(jQuery);;/* |
| + | * jQuery UI Effects Shake 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Shake |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.shake=function(b){return this.queue(function(){var e=a(this),l=["position","top","left"];var k=a.effects.setMode(e,b.options.mode||"effect");var n=b.options.direction||"left";var c=b.options.distance||20;var d=b.options.times||3;var g=b.duration||b.options.duration||140;a.effects.save(e,l);e.show();a.effects.createWrapper(e);var f=(n=="up"||n=="down")?"top":"left";var p=(n=="up"||n=="left")?"pos":"neg";var h={},o={},m={};h[f]=(p=="pos"?"-=":"+=")+c;o[f]=(p=="pos"?"+=":"-=")+c*2;m[f]=(p=="pos"?"-=":"+=")+c*2;e.animate(h,g,b.options.easing);for(var j=1;j<d;j++){e.animate(o,g,b.options.easing).animate(m,g,b.options.easing)}e.animate(o,g,b.options.easing).animate(h,g/2,b.options.easing,function(){a.effects.restore(e,l);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}});e.queue("fx",function(){e.dequeue()});e.dequeue()})}})(jQuery);;/* |
| + | * jQuery UI Effects Slide 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Slide |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.slide=function(b){return this.queue(function(){var e=a(this),d=["position","top","left"];var i=a.effects.setMode(e,b.options.mode||"show");var h=b.options.direction||"left";a.effects.save(e,d);e.show();a.effects.createWrapper(e).css({overflow:"hidden"});var f=(h=="up"||h=="down")?"top":"left";var c=(h=="up"||h=="left")?"pos":"neg";var j=b.options.distance||(f=="top"?e.outerHeight({margin:true}):e.outerWidth({margin:true}));if(i=="show"){e.css(f,c=="pos"?-j:j)}var g={};g[f]=(i=="show"?(c=="pos"?"+=":"-="):(c=="pos"?"-=":"+="))+j;e.animate(g,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){if(i=="hide"){e.hide()}a.effects.restore(e,d);a.effects.removeWrapper(e);if(b.callback){b.callback.apply(this,arguments)}e.dequeue()}})})}})(jQuery);;/* |
| + | * jQuery UI Effects Transfer 1.8 |
| + | * |
| + | * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT (MIT-LICENSE.txt) |
| + | * and GPL (GPL-LICENSE.txt) licenses. |
| + | * |
| + | * http://docs.jquery.com/UI/Effects/Transfer |
| + | * |
| + | * Depends: |
| + | * jquery.effects.core.js |
| + | */ (function(a){a.effects.transfer=function(b){return this.queue(function(){var f=a(this),h=a(b.options.to),e=h.offset(),g={top:e.top,left:e.left,height:h.innerHeight(),width:h.innerWidth()},d=f.offset(),c=a('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(b.options.className).css({top:d.top,left:d.left,height:f.innerHeight(),width:f.innerWidth(),position:"absolute"}).animate(g,b.duration,b.options.easing,function(){c.remove();(b.callback&&b.callback.apply(f[0],arguments));f.dequeue()})})}})(jQuery);; |
| + | /* |
| + | * jQuery UI Datepicker 1.8.4 |
| + | * |
| + | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT or GPL Version 2 licenses. |
| + | * http://jquery.org/license |
| + | * |
| + | * http://docs.jquery.com/UI/Datepicker |
| + | * |
| + | * Depends: |
| + | * jquery.ui.core.js |
| + | */ |
| + | (function(d,G){function L(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass= |
| + | "ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su", |
| + | "Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:false,showMonthAfterYear:false,yearSuffix:""};this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,yearRange:"c-10:c+10",showOtherMonths:false,selectOtherMonths:false,showWeek:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10", |
| + | minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false,autoSize:false};d.extend(this._defaults,this.regional[""]);this.dpDiv=d('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')}function E(a,b){d.extend(a, |
| + | b);for(var c in b)if(b[c]==null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.4"}});var y=(new Date).getTime();d.extend(L.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]= |
| + | f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>')}}, |
| + | _connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& |
| + | b.append.remove();if(c){b.append=d('<span class="'+this._appendClass+'">'+c+"</span>");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("<img/>").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('<button type="button"></button>').addClass(this._triggerClass).html(f== |
| + | ""?c:d("<img/>").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;g<f.length;g++)if(f[g].length>h){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, |
| + | c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), |
| + | true);this._updateDatepicker(b);this._updateAlternate(b)}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('<input type="text" id="'+("dp"+this.uuid)+'" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{});b=b&&b.constructor== |
| + | Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]); |
| + | d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}}, |
| + | _enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b= |
| + | d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false; |
| + | for(var b=0;b<this._disabledInputs.length;b++)if(this._disabledInputs[b]==a)return true;return false},_getInst:function(a){try{return d.data(a,"datepicker")}catch(b){throw"Missing instance data for this datepicker";}},_optionDatepicker:function(a,b,c){var e=this._getInst(a);if(arguments.length==2&&typeof b=="string")return b=="defaults"?d.extend({},d.datepicker._defaults):e?b=="all"?d.extend({},e.settings):this._get(e,b):null;var f=b||{};if(typeof b=="string"){f={};f[b]=c}if(e){this._curInst==e&& |
| + | this._hideDatepicker();var h=this._getDateDatepicker(a,true);E(e.settings,f);this._attachments(d(a),e);this._autoSize(e);this._setDateDatepicker(a,h);this._updateDatepicker(e)}},_changeDatepicker:function(a,b,c){this._optionDatepicker(a,b,c)},_refreshDatepicker:function(a){(a=this._getInst(a))&&this._updateDatepicker(a)},_setDateDatepicker:function(a,b){if(a=this._getInst(a)){this._setDate(a,b);this._updateDatepicker(a);this._updateAlternate(a)}},_getDateDatepicker:function(a,b){(a=this._getInst(a))&& |
| + | !a.inline&&this._setDateFromField(a,b);return a?this._getDate(a):null},_doKeyDown:function(a){var b=d.datepicker._getInst(a.target),c=true,e=b.dpDiv.is(".ui-datepicker-rtl");b._keyEvent=true;if(d.datepicker._datepickerShowing)switch(a.keyCode){case 9:d.datepicker._hideDatepicker();c=false;break;case 13:c=d("td."+d.datepicker._dayOverClass,b.dpDiv).add(d("td."+d.datepicker._currentClass,b.dpDiv));c[0]?d.datepicker._selectDay(a.target,b.selectedMonth,b.selectedYear,c[0]):d.datepicker._hideDatepicker(); |
| + | return false;case 27:d.datepicker._hideDatepicker();break;case 33:d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 34:d.datepicker._adjustDate(a.target,a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 35:if(a.ctrlKey||a.metaKey)d.datepicker._clearDate(a.target);c=a.ctrlKey||a.metaKey;break;case 36:if(a.ctrlKey||a.metaKey)d.datepicker._gotoToday(a.target);c=a.ctrlKey|| |
| + | a.metaKey;break;case 37:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?+1:-1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target,a.ctrlKey?-d.datepicker._get(b,"stepBigMonths"):-d.datepicker._get(b,"stepMonths"),"M");break;case 38:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,-7,"D");c=a.ctrlKey||a.metaKey;break;case 39:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,e?-1:+1,"D");c=a.ctrlKey||a.metaKey;if(a.originalEvent.altKey)d.datepicker._adjustDate(a.target, |
| + | a.ctrlKey?+d.datepicker._get(b,"stepBigMonths"):+d.datepicker._get(b,"stepMonths"),"M");break;case 40:if(a.ctrlKey||a.metaKey)d.datepicker._adjustDate(a.target,+7,"D");c=a.ctrlKey||a.metaKey;break;default:c=false}else if(a.keyCode==36&&a.ctrlKey)d.datepicker._showDatepicker(this);else c=false;if(c){a.preventDefault();a.stopPropagation()}},_doKeyPress:function(a){var b=d.datepicker._getInst(a.target);if(d.datepicker._get(b,"constrainInput")){b=d.datepicker._possibleChars(d.datepicker._get(b,"dateFormat")); |
| + | var c=String.fromCharCode(a.charCode==G?a.keyCode:a.charCode);return a.ctrlKey||c<" "||!b||b.indexOf(c)>-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target|| |
| + | a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a); |
| + | d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&& |
| + | d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=d.datepicker._getBorders(b.dpDiv);b.dpDiv.find("iframe.ui-datepicker-cover").css({left:-i[0],top:-i[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f, |
| + | h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a)).find("iframe.ui-datepicker-cover").css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){d(this).removeClass("ui-state-hover"); |
| + | this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).addClass("ui-datepicker-prev-hover"); |
| + | this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);var e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"); |
| + | a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input.focus()},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(), |
| + | k=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>k&&k>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1);)a=a[b?"previousSibling":"nextSibling"]; |
| + | a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b);this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val(): |
| + | "",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&& |
| + | !a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth; |
| + | b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear=false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b= |
| + | this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a= |
| + | d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a, |
| + | "altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b== |
| + | "object"?b.toString():b+"";if(b=="")return null;for(var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,k=c=-1,l=-1,u=-1,j=false,o=function(p){(p=z+1<a.length&&a.charAt(z+1)==p)&&z++;return p},m=function(p){o(p);p=new RegExp("^\\d{1,"+(p=="@"?14:p=="!"?20:p=="y"?4:p=="o"? |
| + | 3:2)+"}");p=b.substring(s).match(p);if(!p)throw"Missing number at position "+s;s+=p[0].length;return parseInt(p[0],10)},n=function(p,w,H){p=o(p)?H:w;for(w=0;w<p.length;w++)if(b.substr(s,p[w].length)==p[w]){s+=p[w].length;return w+1}throw"Unknown name at position "+s;},r=function(){if(b.charAt(s)!=a.charAt(z))throw"Unexpected literal at position "+s;s++},s=0,z=0;z<a.length;z++)if(j)if(a.charAt(z)=="'"&&!o("'"))j=false;else r();else switch(a.charAt(z)){case "d":l=m("d");break;case "D":n("D",f,h);break; |
| + | case "o":u=m("o");break;case "m":k=m("m");break;case "M":k=n("M",i,g);break;case "y":c=m("y");break;case "@":var v=new Date(m("@"));c=v.getFullYear();k=v.getMonth()+1;l=v.getDate();break;case "!":v=new Date((m("!")-this._ticksTo1970)/1E4);c=v.getFullYear();k=v.getMonth()+1;l=v.getDate();break;case "'":if(o("'"))r();else j=true;break;default:r()}if(c==-1)c=(new Date).getFullYear();else if(c<100)c+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c<=e?0:-100);if(u>-1){k=1;l=u;do{e=this._getDaysInMonth(c, |
| + | k-1);if(l<=e)break;k++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,k-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=k||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return""; |
| + | var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=j+1<a.length&&a.charAt(j+1)==o)&&j++;return o},g=function(o,m,n){m=""+m;if(i(o))for(;m.length<n;)m="0"+m;return m},k=function(o,m,n,r){return i(o)?r[m]:n[m]},l="",u=false;if(b)for(var j=0;j<a.length;j++)if(u)if(a.charAt(j)=="'"&&!i("'"))u=false;else l+=a.charAt(j); |
| + | else switch(a.charAt(j)){case "d":l+=g("d",b.getDate(),2);break;case "D":l+=k("D",b.getDay(),e,f);break;case "o":l+=g("o",(b.getTime()-(new Date(b.getFullYear(),0,0)).getTime())/864E5,3);break;case "m":l+=g("m",b.getMonth()+1,2);break;case "M":l+=k("M",b.getMonth(),h,c);break;case "y":l+=i("y")?b.getFullYear():(b.getYear()%100<10?"0":"")+b.getYear()%100;break;case "@":l+=b.getTime();break;case "!":l+=b.getTime()*1E4+this._ticksTo1970;break;case "'":if(i("'"))l+="'";else u=true;break;default:l+=a.charAt(j)}return l}, |
| + | _possibleChars:function(a){for(var b="",c=false,e=function(h){(h=f+1<a.length&&a.charAt(f+1)==h)&&f++;return h},f=0;f<a.length;f++)if(c)if(a.charAt(f)=="'"&&!e("'"))c=false;else b+=a.charAt(f);else switch(a.charAt(f)){case "d":case "m":case "y":case "@":b+="0123456789";break;case "D":case "M":return null;case "'":if(e("'"))b+="'";else c=true;break;default:b+=a.charAt(f)}return b},_get:function(a,b){return a.settings[b]!==G?a.settings[b]:this._defaults[b]},_setDateFromField:function(a,b){if(a.input.val()!= |
| + | a.lastVal){var c=this._get(a,"dateFormat"),e=a.lastVal=a.input?a.input.val():null,f,h;f=h=this._getDefaultDate(a);var i=this._getFormatConfig(a);try{f=this.parseDate(c,e,i)||h}catch(g){this.log(g);e=b?"":e}a.selectedDay=f.getDate();a.drawMonth=a.selectedMonth=f.getMonth();a.drawYear=a.selectedYear=f.getFullYear();a.currentDay=e?f.getDate():0;a.currentMonth=e?f.getMonth():0;a.currentYear=e?f.getFullYear():0;this._adjustInstDate(a)}},_getDefaultDate:function(a){return this._restrictMinMax(a,this._determineDate(a, |
| + | this._get(a,"defaultDate"),new Date))},_determineDate:function(a,b,c){var e=function(h){var i=new Date;i.setDate(i.getDate()+h);return i},f=function(h){try{return d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),h,d.datepicker._getFormatConfig(a))}catch(i){}var g=(h.toLowerCase().match(/^c/)?d.datepicker._getDate(a):null)||new Date,k=g.getFullYear(),l=g.getMonth();g=g.getDate();for(var u=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,j=u.exec(h);j;){switch(j[2]||"d"){case "d":case "D":g+=parseInt(j[1], |
| + | 10);break;case "w":case "W":g+=parseInt(j[1],10)*7;break;case "m":case "M":l+=parseInt(j[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(k,l));break;case "y":case "Y":k+=parseInt(j[1],10);g=Math.min(g,d.datepicker._getDaysInMonth(k,l));break}j=u.exec(h)}return new Date(k,l,g)};if(b=(b=b==null?c:typeof b=="string"?f(b):typeof b=="number"?isNaN(b)?c:e(b):b)&&b.toString()=="Invalid Date"?c:b){b.setHours(0);b.setMinutes(0);b.setSeconds(0);b.setMilliseconds(0)}return this._daylightSavingAdjust(b)},_daylightSavingAdjust:function(a){if(!a)return null; |
| + | a.setHours(a.getHours()>12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear|| |
| + | a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),k=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay? |
| + | new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),j=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=j&&n<j?j:n;this._daylightSavingAdjust(new Date(m,g,1))>n;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-k,1)),this._getFormatConfig(a)); |
| + | n=this._canAdjustMonth(a,-1,m,g)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', -"+k+", 'M');\" title=\""+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>":f?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+n+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"e":"w")+'">'+n+"</span></a>";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m, |
| + | g+k,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_'+y+".datepicker._adjustDate('#"+a.id+"', +"+k+", 'M');\" title=\""+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>":f?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+r+'"><span class="ui-icon ui-icon-circle-triangle-'+(c?"w":"e")+'">'+r+"</span></a>";k=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&& |
| + | a.currentDay?u:b;k=!h?k:this.formatDate(k,r,this._getFormatConfig(a));h=!a.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_'+y+'.datepicker._hideDatepicker();">'+this._get(a,"closeText")+"</button>":"";e=e?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(c?h:"")+(this._isInRange(a,r)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_'+ |
| + | y+".datepicker._gotoToday('#"+a.id+"');\">"+k+"</button>":"")+(c?"":h)+"</div>":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;k=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),w=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var M=this._getDefaultDate(a),I="",C=0;C<i[0];C++){for(var N= |
| + | "",D=0;D<i[1];D++){var J=this._daylightSavingAdjust(new Date(m,g,a.selectedDay)),t=" ui-corner-all",x="";if(l){x+='<div class="ui-datepicker-group';if(i[1]>1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+t+'">'+(/all|left/.test(t)&&C==0?c? |
| + | f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,j,o,C>0||D>0,z,v)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var A=k?'<th class="ui-datepicker-week-col">'+this._get(a,"weekHeader")+"</th>":"";for(t=0;t<7;t++){var q=(t+h)%7;A+="<th"+((t+h+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+r[q]+'">'+s[q]+"</span></th>"}x+=A+"</tr></thead><tbody>";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay, |
| + | A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O<A;O++){x+="<tr>";var P=!k?"":'<td class="ui-datepicker-week-col">'+this._get(a,"calculateWeek")(q)+"</td>";for(t=0;t<7;t++){var F=p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,K=B&&!H||!F[0]||j&&q<j||o&&q>o;P+='<td class="'+((t+h+6)%7>=5?" ui-datepicker-week-end":"")+(B?" ui-datepicker-other-month":"")+(q.getTime()==J.getTime()&&g==a.selectedMonth&& |
| + | a._keyEvent||M.getTime()==q.getTime()&&M.getTime()==J.getTime()?" "+this._dayOverClass:"")+(K?" "+this._unselectableClass+" ui-state-disabled":"")+(B&&!w?"":" "+F[1]+(q.getTime()==u.getTime()?" "+this._currentClass:"")+(q.getTime()==b.getTime()?" ui-datepicker-today":""))+'"'+((!B||w)&&F[2]?' title="'+F[2]+'"':"")+(K?"":' onclick="DP_jQuery_'+y+".datepicker._selectDay('#"+a.id+"',"+q.getMonth()+","+q.getFullYear()+', this);return false;"')+">"+(B&&!w?" ":K?'<span class="ui-state-default">'+q.getDate()+ |
| + | "</span>":'<a class="ui-state-default'+(q.getTime()==b.getTime()?" ui-state-highlight":"")+(q.getTime()==J.getTime()?" ui-state-active":"")+(B?" ui-priority-secondary":"")+'" href="#">'+q.getDate()+"</a>")+"</td>";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+=P+"</tr>"}g++;if(g>11){g=0;m++}x+="</tbody></table>"+(l?"</div>"+(i[0]>0&&D==i[1]-1?'<div class="ui-datepicker-row-break"></div>':""):"");N+=x}I+=N}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>': |
| + | "");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var k=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),j='<div class="ui-datepicker-title">',o="";if(h||!k)o+='<span class="ui-datepicker-month">'+i[b]+"</span>";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='<select class="ui-datepicker-month" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'M');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+ |
| + | a.id+"');\">";for(var n=0;n<12;n++)if((!i||n>=e.getMonth())&&(!m||n<=f.getMonth()))o+='<option value="'+n+'"'+(n==b?' selected="selected"':"")+">"+g[n]+"</option>";o+="</select>"}u||(j+=o+(h||!(k&&l)?" ":""));if(h||!l)j+='<span class="ui-datepicker-year">'+c+"</span>";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b, |
| + | i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(j+='<select class="ui-datepicker-year" onchange="DP_jQuery_'+y+".datepicker._selectMonthYear('#"+a.id+"', this, 'Y');\" onclick=\"DP_jQuery_"+y+".datepicker._clickMonthYear('#"+a.id+"');\">";b<=g;b++)j+='<option value="'+b+'"'+(b==c?' selected="selected"':"")+">"+b+"</option>";j+="</select>"}j+=this._get(a,"yearSuffix");if(u)j+=(h||!(k&&l)?" ":"")+o;j+="</div>";return j},_adjustInstDate:function(a,b,c){var e= |
| + | a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&b<c?c:b;return b=a&&b>a?a:b},_notifyChange:function(a){var b=this._get(a, |
| + | "onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); |
| + | c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, |
| + | "dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= |
| + | function(a){if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b)); |
| + | return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new L;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.4";window["DP_jQuery_"+y]=d})(jQuery); |
| + | ; |
| + | |
public/javascripts/cms/jquery.js
+154
-0
| @@ | @@ -0,0 +1,154 @@ |
| + | /*! |
| + | * jQuery JavaScript Library v1.4.2 |
| + | * http://jquery.com/ |
| + | * |
| + | * Copyright 2010, John Resig |
| + | * Dual licensed under the MIT or GPL Version 2 licenses. |
| + | * http://jquery.org/license |
| + | * |
| + | * Includes Sizzle.js |
| + | * http://sizzlejs.com/ |
| + | * Copyright 2010, The Dojo Foundation |
| + | * Released under the MIT, BSD, and GPL Licenses. |
| + | * |
| + | * Date: Sat Feb 13 22:33:48 2010 -0500 |
| + | */ |
| + | (function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? |
| + | e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r= |
| + | j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g, |
| + | "&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e= |
| + | true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, |
| + | Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& |
| + | (d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, |
| + | a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== |
| + | "find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return 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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, |
| + | function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)|| |
| + | c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded", |
| + | L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype, |
| + | "isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+ |
| + | a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f], |
| + | d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]=== |
| + | a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&& |
| + | !c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari= |
| + | true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; |
| + | var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, |
| + | parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= |
| + | false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= |
| + | s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, |
| + | applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; |
| + | else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, |
| + | a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== |
| + | w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, |
| + | cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ", |
| + | i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ", |
| + | " ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className= |
| + | this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i= |
| + | e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= |
| + | c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); |
| + | a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, |
| + | function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); |
| + | k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), |
| + | C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!= |
| + | null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type= |
| + | e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& |
| + | f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; |
| + | if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), |
| + | fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| |
| + | d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this, |
| + | "events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent= |
| + | a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y, |
| + | isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit= |
| + | {setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}}; |
| + | if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", |
| + | e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, |
| + | "_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, |
| + | d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&& |
| + | !a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}}, |
| + | toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector, |
| + | u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), |
| + | function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q]; |
| + | if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, |
| + | e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); |
| + | t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| |
| + | g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[]; |
| + | for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length- |
| + | 1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, |
| + | CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}}, |
| + | relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]= |
| + | l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[]; |
| + | h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, |
| + | CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, |
| + | g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, |
| + | text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, |
| + | setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= |
| + | h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m= |
| + | m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== |
| + | "="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, |
| + | h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition|| |
| + | !h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m= |
| + | h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& |
| + | q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>"; |
| + | if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); |
| + | (function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: |
| + | function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/, |
| + | gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length; |
| + | c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= |
| + | {},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== |
| + | "string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", |
| + | d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? |
| + | a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== |
| + | 1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)? |
| + | a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= |
| + | c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, |
| + | wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, |
| + | prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, |
| + | this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); |
| + | return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, |
| + | ""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&& |
| + | this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]|| |
| + | u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length=== |
| + | 1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); |
| + | return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", |
| + | ""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= |
| + | c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? |
| + | c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= |
| + | function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= |
| + | Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, |
| + | "border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= |
| + | a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= |
| + | a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== |
| + | "string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, |
| + | serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), |
| + | function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, |
| + | global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& |
| + | e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? |
| + | "&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== |
| + | false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= |
| + | false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", |
| + | c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| |
| + | d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); |
| + | g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== |
| + | 1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== |
| + | "json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; |
| + | if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay"); |
| + | this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a], |
| + | "olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)}, |
| + | animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing= |
| + | j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]); |
| + | this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== |
| + | "number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| |
| + | c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; |
| + | this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= |
| + | this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, |
| + | e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length|| |
| + | c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement? |
| + | function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b= |
| + | this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle; |
| + | k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&& |
| + | f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; |
| + | a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); |
| + | c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, |
| + | d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- |
| + | f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": |
| + | "pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in |
| + | e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); |
public/javascripts/cms/rails.js
+132
-0
| @@ | @@ -0,0 +1,132 @@ |
| + | jQuery(function ($) { |
| + | var csrf_token = $('meta[name=csrf-token]').attr('content'), |
| + | csrf_param = $('meta[name=csrf-param]').attr('content'); |
| + | |
| + | $.fn.extend({ |
| + | /** |
| + | * Triggers a custom event on an element and returns the event result |
| + | * this is used to get around not being able to ensure callbacks are placed |
| + | * at the end of the chain. |
| + | * |
| + | * TODO: deprecate with jQuery 1.4.2 release, in favor of subscribing to our |
| + | * own events and placing ourselves at the end of the chain. |
| + | */ |
| + | triggerAndReturn: function (name, data) { |
| + | var event = new $.Event(name); |
| + | this.trigger(event, data); |
| + | |
| + | return event.result !== false; |
| + | }, |
| + | |
| + | /** |
| + | * Handles execution of remote calls firing overridable events along the way |
| + | */ |
| + | callRemote: function () { |
| + | var el = this, |
| + | method = el.attr('method') || el.attr('data-method') || 'GET', |
| + | url = el.attr('action') || el.attr('href'), |
| + | dataType = el.attr('data-type') || 'script'; |
| + | |
| + | if (url === undefined) { |
| + | throw "No URL specified for remote call (action or href must be present)."; |
| + | } else { |
| + | if (el.triggerAndReturn('ajax:before')) { |
| + | var data = el.is('form') ? el.serializeArray() : []; |
| + | $.ajax({ |
| + | url: url, |
| + | data: data, |
| + | dataType: dataType, |
| + | type: method.toUpperCase(), |
| + | beforeSend: function (xhr) { |
| + | el.trigger('ajax:loading', xhr); |
| + | }, |
| + | success: function (data, status, xhr) { |
| + | el.trigger('ajax:success', [data, status, xhr]); |
| + | }, |
| + | complete: function (xhr) { |
| + | el.trigger('ajax:complete', xhr); |
| + | }, |
| + | error: function (xhr, status, error) { |
| + | el.trigger('ajax:failure', [xhr, status, error]); |
| + | } |
| + | }); |
| + | } |
| + | |
| + | el.trigger('ajax:after'); |
| + | } |
| + | } |
| + | }); |
| + | |
| + | /** |
| + | * confirmation handler |
| + | */ |
| + | $('a[data-confirm],input[data-confirm]').live('click', function () { |
| + | var el = $(this); |
| + | if (el.triggerAndReturn('confirm')) { |
| + | if (!confirm(el.attr('data-confirm'))) { |
| + | return false; |
| + | } |
| + | } |
| + | }); |
| + | |
| + | |
| + | /** |
| + | * remote handlers |
| + | */ |
| + | $('form[data-remote]').live('submit', function (e) { |
| + | $(this).callRemote(); |
| + | e.preventDefault(); |
| + | }); |
| + | |
| + | $('a[data-remote],input[data-remote]').live('click', function (e) { |
| + | $(this).callRemote(); |
| + | e.preventDefault(); |
| + | }); |
| + | |
| + | $('a[data-method]:not([data-remote])').live('click', function (e){ |
| + | var link = $(this), |
| + | href = link.attr('href'), |
| + | method = link.attr('data-method'), |
| + | form = $('<form method="post" action="'+href+'"></form>'), |
| + | metadata_input = '<input name="_method" value="'+method+'" type="hidden" />'; |
| + | |
| + | if (csrf_param != null && csrf_token != null) { |
| + | metadata_input += '<input name="'+csrf_param+'" value="'+csrf_token+'" type="hidden" />'; |
| + | } |
| + | |
| + | form.hide() |
| + | .append(metadata_input) |
| + | .appendTo('body'); |
| + | |
| + | e.preventDefault(); |
| + | form.submit(); |
| + | }); |
| + | |
| + | /** |
| + | * disable-with handlers |
| + | */ |
| + | var disable_with_input_selector = 'input[data-disable-with]'; |
| + | var disable_with_form_remote_selector = 'form[data-remote]:has(' + disable_with_input_selector + ')'; |
| + | var disable_with_form_not_remote_selector = 'form:not([data-remote]):has(' + disable_with_input_selector + ')'; |
| + | |
| + | var disable_with_input_function = function () { |
| + | $(this).find(disable_with_input_selector).each(function () { |
| + | var input = $(this); |
| + | input.data('enable-with', input.val()) |
| + | .attr('value', input.attr('data-disable-with')) |
| + | .attr('disabled', 'disabled'); |
| + | }); |
| + | }; |
| + | |
| + | $(disable_with_form_remote_selector).live('ajax:before', disable_with_input_function); |
| + | $(disable_with_form_not_remote_selector).live('submit', disable_with_input_function); |
| + | |
| + | $(disable_with_form_remote_selector).live('ajax:complete', function () { |
| + | $(this).find(disable_with_input_selector).each(function () { |
| + | var input = $(this); |
| + | input.removeAttr('disabled') |
| + | .val(input.data('enable-with')); |
| + | }); |
| + | }); |
| + | |
| + | }); |
public/javascripts/cms/rteditor.js
+47
-0
| @@ | @@ -0,0 +1,47 @@ |
| + | $.CMS.RTEditor = function(){ |
| + | |
| + | $(document).ready(function() { |
| + | $.CMS.RTEditor.init(); |
| + | }).ajaxSend(function(){ |
| + | $.CMS.RTEditor.reset(); |
| + | }).ajaxSuccess(function(){ |
| + | $.CMS.RTEditor.init(); |
| + | }); |
| + | |
| + | return { |
| + | init: function(){ |
| + | if($('textarea.richText').length > 0){ |
| + | $.CMS.RTEditor.toolbars(); |
| + | $('textarea.richText').each(function(i){ |
| + | CKEDITOR.replace(this.id, { |
| + | resize_maxWidth: 668, |
| + | resize_minWidth: 668, |
| + | toolbar: 'CmsFull', |
| + | toolbar_CmsFull: $.CMS.RTEditor.full_toolbars, |
| + | on: { instanceReady : function( ev ) { |
| + | this.dataProcessor.writer.indentationChars = ' '; |
| + | this.dataProcessor.writer.setRules( '#', { breakBeforeClose: true }); |
| + | } |
| + | } |
| + | }); |
| + | }); |
| + | } |
| + | }, |
| + | |
| + | toolbars: function() { |
| + | $.CMS.RTEditor.basic_toolbars = [ |
| + | [ 'Copy','Cut','Paste','PasteText','PasteFromWord', '-', 'Bold','Italic','Underline','Strike','-', 'NumberedList','BulletedList', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'Undo','Redo', '-', 'Link','Unlink','Anchor', '-', 'Table' ] |
| + | ]; |
| + | |
| + | $.CMS.RTEditor.full_toolbars = $.CMS.RTEditor.basic_toolbars.concat([ '/', |
| + | ['Subscript','Superscript', '-', 'Source'] |
| + | ]); |
| + | }, |
| + | |
| + | reset: function(){ |
| + | $.each(CKEDITOR.instances, function(i, v){ |
| + | v.destroy(); |
| + | }); |
| + | } |
| + | }; |
| + | }(); |
public/javascripts/jquery.js
+0
-154
| @@ | @@ -1,154 +0,0 @@ |
| - | /*! |
| - | * jQuery JavaScript Library v1.4.2 |
| - | * http://jquery.com/ |
| - | * |
| - | * Copyright 2010, John Resig |
| - | * Dual licensed under the MIT or GPL Version 2 licenses. |
| - | * http://jquery.org/license |
| - | * |
| - | * Includes Sizzle.js |
| - | * http://sizzlejs.com/ |
| - | * Copyright 2010, The Dojo Foundation |
| - | * Released under the MIT, BSD, and GPL Licenses. |
| - | * |
| - | * Date: Sat Feb 13 22:33:48 2010 -0500 |
| - | */ |
| - | (function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? |
| - | e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r= |
| - | j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g, |
| - | "&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e= |
| - | true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, |
| - | Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& |
| - | (d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, |
| - | a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== |
| - | "find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return 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(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, |
| - | function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)|| |
| - | c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded", |
| - | L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype, |
| - | "isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+ |
| - | a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f], |
| - | d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]=== |
| - | a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&& |
| - | !c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari= |
| - | true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; |
| - | var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, |
| - | parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= |
| - | false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= |
| - | s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, |
| - | applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; |
| - | else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, |
| - | a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== |
| - | w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, |
| - | cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ", |
| - | i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ", |
| - | " ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className= |
| - | this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i= |
| - | e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= |
| - | c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); |
| - | a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, |
| - | function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); |
| - | k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), |
| - | C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!= |
| - | null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type= |
| - | e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& |
| - | f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; |
| - | if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), |
| - | fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| |
| - | d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this, |
| - | "events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent= |
| - | a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y, |
| - | isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit= |
| - | {setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}}; |
| - | if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", |
| - | e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, |
| - | "_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, |
| - | d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&& |
| - | !a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}}, |
| - | toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector, |
| - | u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), |
| - | function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q]; |
| - | if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, |
| - | e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); |
| - | t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| |
| - | g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[]; |
| - | for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length- |
| - | 1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, |
| - | CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}}, |
| - | relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]= |
| - | l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[]; |
| - | h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, |
| - | CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, |
| - | g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, |
| - | text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, |
| - | setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= |
| - | h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m= |
| - | m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== |
| - | "="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, |
| - | h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition|| |
| - | !h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m= |
| - | h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& |
| - | q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>"; |
| - | if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); |
| - | (function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: |
| - | function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/, |
| - | gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length; |
| - | c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= |
| - | {},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== |
| - | "string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", |
| - | d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? |
| - | a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== |
| - | 1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)? |
| - | a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= |
| - | c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, |
| - | wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, |
| - | prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, |
| - | this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); |
| - | return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, |
| - | ""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&& |
| - | this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]|| |
| - | u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length=== |
| - | 1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); |
| - | return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", |
| - | ""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= |
| - | c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? |
| - | c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= |
| - | function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= |
| - | Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, |
| - | "border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= |
| - | a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= |
| - | a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== |
| - | "string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, |
| - | serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), |
| - | function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, |
| - | global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& |
| - | e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? |
| - | "&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== |
| - | false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= |
| - | false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", |
| - | c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| |
| - | d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); |
| - | g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== |
| - | 1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== |
| - | "json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; |
| - | if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay"); |
| - | this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a], |
| - | "olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)}, |
| - | animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing= |
| - | j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]); |
| - | this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== |
| - | "number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| |
| - | c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; |
| - | this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= |
| - | this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, |
| - | e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length|| |
| - | c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement? |
| - | function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b= |
| - | this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle; |
| - | k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&& |
| - | f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; |
| - | a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); |
| - | c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, |
| - | d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- |
| - | f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": |
| - | "pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in |
| - | e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); |
public/javascripts/rails.js
+0
-132
| @@ | @@ -1,132 +0,0 @@ |
| - | jQuery(function ($) { |
| - | var csrf_token = $('meta[name=csrf-token]').attr('content'), |
| - | csrf_param = $('meta[name=csrf-param]').attr('content'); |
| - | |
| - | $.fn.extend({ |
| - | /** |
| - | * Triggers a custom event on an element and returns the event result |
| - | * this is used to get around not being able to ensure callbacks are placed |
| - | * at the end of the chain. |
| - | * |
| - | * TODO: deprecate with jQuery 1.4.2 release, in favor of subscribing to our |
| - | * own events and placing ourselves at the end of the chain. |
| - | */ |
| - | triggerAndReturn: function (name, data) { |
| - | var event = new $.Event(name); |
| - | this.trigger(event, data); |
| - | |
| - | return event.result !== false; |
| - | }, |
| - | |
| - | /** |
| - | * Handles execution of remote calls firing overridable events along the way |
| - | */ |
| - | callRemote: function () { |
| - | var el = this, |
| - | method = el.attr('method') || el.attr('data-method') || 'GET', |
| - | url = el.attr('action') || el.attr('href'), |
| - | dataType = el.attr('data-type') || 'script'; |
| - | |
| - | if (url === undefined) { |
| - | throw "No URL specified for remote call (action or href must be present)."; |
| - | } else { |
| - | if (el.triggerAndReturn('ajax:before')) { |
| - | var data = el.is('form') ? el.serializeArray() : []; |
| - | $.ajax({ |
| - | url: url, |
| - | data: data, |
| - | dataType: dataType, |
| - | type: method.toUpperCase(), |
| - | beforeSend: function (xhr) { |
| - | el.trigger('ajax:loading', xhr); |
| - | }, |
| - | success: function (data, status, xhr) { |
| - | el.trigger('ajax:success', [data, status, xhr]); |
| - | }, |
| - | complete: function (xhr) { |
| - | el.trigger('ajax:complete', xhr); |
| - | }, |
| - | error: function (xhr, status, error) { |
| - | el.trigger('ajax:failure', [xhr, status, error]); |
| - | } |
| - | }); |
| - | } |
| - | |
| - | el.trigger('ajax:after'); |
| - | } |
| - | } |
| - | }); |
| - | |
| - | /** |
| - | * confirmation handler |
| - | */ |
| - | $('a[data-confirm],input[data-confirm]').live('click', function () { |
| - | var el = $(this); |
| - | if (el.triggerAndReturn('confirm')) { |
| - | if (!confirm(el.attr('data-confirm'))) { |
| - | return false; |
| - | } |
| - | } |
| - | }); |
| - | |
| - | |
| - | /** |
| - | * remote handlers |
| - | */ |
| - | $('form[data-remote]').live('submit', function (e) { |
| - | $(this).callRemote(); |
| - | e.preventDefault(); |
| - | }); |
| - | |
| - | $('a[data-remote],input[data-remote]').live('click', function (e) { |
| - | $(this).callRemote(); |
| - | e.preventDefault(); |
| - | }); |
| - | |
| - | $('a[data-method]:not([data-remote])').live('click', function (e){ |
| - | var link = $(this), |
| - | href = link.attr('href'), |
| - | method = link.attr('data-method'), |
| - | form = $('<form method="post" action="'+href+'"></form>'), |
| - | metadata_input = '<input name="_method" value="'+method+'" type="hidden" />'; |
| - | |
| - | if (csrf_param != null && csrf_token != null) { |
| - | metadata_input += '<input name="'+csrf_param+'" value="'+csrf_token+'" type="hidden" />'; |
| - | } |
| - | |
| - | form.hide() |
| - | .append(metadata_input) |
| - | .appendTo('body'); |
| - | |
| - | e.preventDefault(); |
| - | form.submit(); |
| - | }); |
| - | |
| - | /** |
| - | * disable-with handlers |
| - | */ |
| - | var disable_with_input_selector = 'input[data-disable-with]'; |
| - | var disable_with_form_remote_selector = 'form[data-remote]:has(' + disable_with_input_selector + ')'; |
| - | var disable_with_form_not_remote_selector = 'form:not([data-remote]):has(' + disable_with_input_selector + ')'; |
| - | |
| - | var disable_with_input_function = function () { |
| - | $(this).find(disable_with_input_selector).each(function () { |
| - | var input = $(this); |
| - | input.data('enable-with', input.val()) |
| - | .attr('value', input.attr('data-disable-with')) |
| - | .attr('disabled', 'disabled'); |
| - | }); |
| - | }; |
| - | |
| - | $(disable_with_form_remote_selector).live('ajax:before', disable_with_input_function); |
| - | $(disable_with_form_not_remote_selector).live('submit', disable_with_input_function); |
| - | |
| - | $(disable_with_form_remote_selector).live('ajax:complete', function () { |
| - | $(this).find(disable_with_input_selector).each(function () { |
| - | var input = $(this); |
| - | input.removeAttr('disabled') |
| - | .val(input.data('enable-with')); |
| - | }); |
| - | }); |
| - | |
| - | }); |
public/stylesheets/cms_master.css
+477
-0
| @@ | @@ -0,0 +1,477 @@ |
| + | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { |
| + | margin: 0; |
| + | padding: 0; |
| + | border: 0; |
| + | outline: 0; |
| + | font-size: 100%; |
| + | vertical-align: baseline; |
| + | background: transparent; |
| + | font-weight: normal; } |
| + | |
| + | body { |
| + | line-height: 1; } |
| + | |
| + | ol, ul { |
| + | list-style: none; } |
| + | |
| + | blockquote, q { |
| + | quotes: none; } |
| + | |
| + | blockquote:before, blockquote:after, q:before, q:after { |
| + | content: ""; |
| + | content: none; } |
| + | |
| + | *:focus { |
| + | outline: 0; } |
| + | |
| + | ins { |
| + | text-decoration: none; } |
| + | |
| + | del { |
| + | text-decoration: line-through; } |
| + | |
| + | table { |
| + | border-collapse: collapse; |
| + | border-spacing: 0; } |
| + | |
| + | caption, th { |
| + | text-align: left; } |
| + | |
| + | body { |
| + | font: 13px Arial, Verdana, clean, sans-serif; |
| + | _font-size: small; |
| + | _font: x-small; } |
| + | |
| + | table { |
| + | font-size: inherit; } |
| + | table th { |
| + | font-weight: bold; } |
| + | |
| + | pre, code { |
| + | font: 115% monospace; |
| + | _font-size: 100%; } |
| + | |
| + | p { |
| + | font: 12px/15px Arial, sans-serif; |
| + | color: black; } |
| + | |
| + | h1, h2, h3 { |
| + | margin: 0.8em 0em; } |
| + | |
| + | h2 { |
| + | font: bold 25px/30px Arial, sans-serif; |
| + | color: black; } |
| + | |
| + | h3 { |
| + | font: bold 18px/24px Arial, sans-serif; |
| + | color: black; } |
| + | |
| + | a { |
| + | color: #26a9e0; |
| + | text-decoration: none; } |
| + | |
| + | a:hover { |
| + | text-decoration: none; |
| + | border-bottom: 1px dotted #26a9e0; } |
| + | |
| + | a.button { |
| + | -moz-border-radius: 5px; |
| + | -webkit-border-radius: 5px; |
| + | background-color: #7cae00; |
| + | padding: 5px 8px; |
| + | font: 10px/20px Arial, sans-serif; |
| + | color: white; |
| + | text-transform: uppercase; |
| + | letter-spacing: 1px; } |
| + | |
| + | a.button:hover { |
| + | background-color: #629700; |
| + | border: 0px; } |
| + | |
| + | a.big_button { |
| + | float: left; |
| + | padding: 0px 15px; |
| + | font: bold 14px/33px Arial, sans-serif; |
| + | color: white; |
| + | -moz-border-radius: 7px; |
| + | -webkit-border-radius: 7px; |
| + | background: url("/images/cms/bg-button-green-34.gif") top; |
| + | display: block; |
| + | text-decoration: none; |
| + | height: 34px; } |
| + | |
| + | a.big_button:hover { |
| + | background-position: 0 -34px; |
| + | border: 0px; } |
| + | |
| + | a.top_button { |
| + | float: right; |
| + | padding: 0px 15px; |
| + | margin-top: -35px; |
| + | font: bold 14px/33px Arial, sans-serif; |
| + | color: white; |
| + | -moz-border-radius: 0px 0px 7px 7px; |
| + | -webkit-border-bottom-left-radius: 7px; |
| + | -webkit-border-bottom-right-radius: 7px; |
| + | background: url("/images/cms/bg-button-green-34.gif") top; |
| + | display: block; |
| + | text-decoration: none; |
| + | height: 34px; } |
| + | |
| + | a.top_button:hover { |
| + | background-position: 0 -34px; |
| + | border: 0px; } |
| + | |
| + | .filter_form { |
| + | float: right; |
| + | margin-bottom: 15px; } |
| + | |
| + | body { |
| + | background: white url("/images/cms/background.png") top left repeat-y; } |
| + | body .content_wrapper { |
| + | width: 1195px; } |
| + | body .content_wrapper .left_column { |
| + | width: 205px; |
| + | float: left; } |
| + | body .content_wrapper .left_column .header { |
| + | text-align: center; |
| + | width: 150px; |
| + | margin: 15px auto; } |
| + | body .content_wrapper .left_column .header h1 { |
| + | padding: 0px; |
| + | margin: 0px; |
| + | display: none; } |
| + | body .content_wrapper .left_column .header a { |
| + | font-size: 0px; |
| + | line-height: 0px; |
| + | color: white; |
| + | text-decoration: none; } |
| + | body .content_wrapper .left_column .header a:hover { |
| + | border: 0px; } |
| + | body .content_wrapper .content_column { |
| + | width: 990px; |
| + | float: left; } |
| + | body .content_wrapper .content_column .flash.notice { |
| + | padding: 6px; |
| + | background-color: #c7e03d; |
| + | color: black; |
| + | margin: 15px 0px; |
| + | font-size: 14px; } |
| + | body .content_wrapper .content_column .center_column { |
| + | padding: 30px; |
| + | float: left; |
| + | width: 680px; } |
| + | body .content_wrapper .content_column .center_column #form_blocks { |
| + | float: left; |
| + | width: 100%; } |
| + | body .content_wrapper .content_column .center_column #form_blocks label { |
| + | font: bold 16px/24px Arial, sans-serif; |
| + | color: black; |
| + | text-transform: none; |
| + | letter-spacing: 0px; } |
| + | body .content_wrapper .content_column .right_column { |
| + | float: right; |
| + | width: 250px; } |
| + | body .content_wrapper .content_column .right_column .form_element_group { |
| + | padding: 30px 20px 20px 20px; } |
| + | body .content_wrapper .content_column .right_column .form_element_group + .form_element_group { |
| + | border-top: 3px solid #e6e7e8; |
| + | padding-top: 13px; } |
| + | body .content_wrapper .content_column .right_column h2 { |
| + | font: bold 18px/24px Arial, sans-serif; |
| + | color: black; |
| + | margin-bottom: 10px; } |
| + | body .footer { |
| + | display: none; |
| + | padding: 15px; |
| + | color: white; } |
| + | body .footer a { |
| + | color: white; } |
| + | |
| + | .left_column ul { |
| + | margin-bottom: 5px; |
| + | padding: 5px 0px; } |
| + | .left_column ul li { |
| + | margin: 6px 0px; } |
| + | .left_column ul li a { |
| + | display: block; |
| + | font: bold 14px/34px Arial, sans-serif; |
| + | color: #58595b; |
| + | margin-left: 5px; |
| + | padding-left: 35px; |
| + | text-decoration: none; } |
| + | .left_column ul li a.active, .left_column ul li a:hover { |
| + | color: white; |
| + | height: 34px; |
| + | background-color: #231f20; |
| + | -moz-border-radius: 7px 0px 0px 7px; |
| + | -webkit-border-top-left-radius: 7px; |
| + | -webkit-border-bottom-left-radius: 7px; |
| + | border: 0px; } |
| + | |
| + | ul.closed { |
| + | display: none; } |
| + | |
| + | ul.tree_structure { |
| + | background-color: white; |
| + | padding: 25px; |
| + | margin-top: 15px; |
| + | box-shadow: 0px 2px 8px #dddddd; |
| + | -moz-box-shadow: 0px 2px 8px #dddddd; |
| + | -webkit-box-shadow: 0px 2px 8px #dddddd; } |
| + | ul.tree_structure li { |
| + | margin-left: 25px; } |
| + | ul.tree_structure li + li, ul.tree_structure li > ul { |
| + | border-top: 1px solid #eeeeee; } |
| + | ul.tree_structure a.tree_toggle { |
| + | margin-top: 5px; |
| + | width: 20px; |
| + | height: 28px; |
| + | float: left; |
| + | margin-left: -35px; |
| + | font: bold 14px/25px Arial, sans-serif; |
| + | background: url(/images/cms/arrow_bottom.gif) right center no-repeat; |
| + | padding-right: 15px; |
| + | color: #cccccc; |
| + | text-align: right; |
| + | text-decoration: none; } |
| + | ul.tree_structure a.tree_toggle.closed { |
| + | background-image: url(/images/cms/arrow_right.gif); } |
| + | ul.tree_structure a.tree_toggle:hover { |
| + | border: 0px; |
| + | color: black; } |
| + | ul.tree_structure .item { |
| + | padding: 7px 0px 7px 35px; |
| + | overflow: hidden; } |
| + | ul.tree_structure .item .icon { |
| + | margin-left: -30px; |
| + | float: left; |
| + | width: 28px; |
| + | height: 28px; |
| + | background: url(/images/cms/icon_draft.gif); } |
| + | ul.tree_structure .item .icon .dragger { |
| + | width: 28px; |
| + | height: 28px; |
| + | cursor: move; } |
| + | ul.tree_structure .item .icon .dragger:hover { |
| + | background: url(/images/cms/icon_move.gif); } |
| + | ul.tree_structure .item a.label { |
| + | font-size: 14px; |
| + | color: black; } |
| + | ul.tree_structure .item a.label:hover { |
| + | border-bottom: 1px dotted black; } |
| + | ul.tree_structure .item .url { |
| + | font-size: 10px; } |
| + | ul.tree_structure .item .action_links { |
| + | visibility: hidden; |
| + | font-size: 10px; } |
| + | ul.tree_structure .item table.details { |
| + | font-size: 10px; |
| + | margin: 5px 15px; |
| + | border-left: 3px solid #cccccc; } |
| + | ul.tree_structure .item table.details th { |
| + | padding: 0px 5px 0px 10px; |
| + | font-weight: normal; } |
| + | ul.tree_structure .item:hover { |
| + | background-color: #ebf5fc; } |
| + | ul.tree_structure .item:hover .action_links { |
| + | visibility: visible; } |
| + | |
| + | table.formatted { |
| + | margin-bottom: 15px; |
| + | background-color: white; |
| + | border: 10px solid white; |
| + | box-shadow: 0px 2px 8px #dddddd; |
| + | -moz-box-shadow: 0px 2px 8px #dddddd; |
| + | -webkit-box-shadow: 0px 2px 8px #dddddd; } |
| + | table.formatted th, table.formatted td { |
| + | padding: 10px; |
| + | vertical-align: top; |
| + | white-space: nowrap; } |
| + | table.formatted th a.label, table.formatted td a.label { |
| + | color: black; |
| + | font-size: 14px; } |
| + | table.formatted th a.slug, table.formatted td a.slug { |
| + | font-size: 10px; } |
| + | table.formatted th { |
| + | background-color: #eeeeee; |
| + | font-size: 10px; |
| + | text-transform: uppercase; |
| + | border-bottom: 1px solid #444444; } |
| + | table.formatted td.main, table.formatted th.main { |
| + | width: 100%; |
| + | white-space: normal; } |
| + | table.formatted tr { |
| + | border-bottom: 1px solid #eeeeee; } |
| + | |
| + | .form_element_group { |
| + | margin-top: 10px; } |
| + | |
| + | .form_element { |
| + | margin-bottom: 10px; |
| + | overflow: hidden; } |
| + | .form_element .label { |
| + | height: 22px; |
| + | font: 10px/22px Arial, sans-serif; |
| + | color: black; |
| + | text-transform: uppercase; |
| + | letter-spacing: 1px; } |
| + | .form_element .value .field_with_errors { |
| + | display: inline; } |
| + | .form_element .value input, .form_element .value select, .form_element .value textarea { |
| + | width: 97%; |
| + | border: 1px solid #cccccc; |
| + | padding: 3px; } |
| + | .form_element .value input[type=checkbox] { |
| + | width: auto; |
| + | border: 0; |
| + | float: left; |
| + | margin: 1px 4px 0px 0px; } |
| + | .form_element .value .codemirror { |
| + | background-color: white; |
| + | border: 1px inset #e5e5e5; } |
| + | .form_element .value.narrow input, .form_element .value.narrow select, .form_element .value.narrow textarea { |
| + | width: 80%; } |
| + | .form_element .fieldWithErrors label { |
| + | color: #9e0b0f; } |
| + | .form_element .errors { |
| + | color: #9e0b0f; |
| + | margin: 3px 0px; } |
| + | .form_element .select .label label { |
| + | line-height: 20px; } |
| + | |
| + | .form_element.large label { |
| + | font-size: 16px; |
| + | line-height: 26px; } |
| + | .form_element.large .value input { |
| + | font-size: 16px; } |
| + | |
| + | .form_element.time_select_element select, .form_element.time_select_element input, .form_element.date_select_element select, .form_element.date_select_element input, .form_element.check_box_element select, .form_element.check_box_element input, .form_element.radio_button_element select, .form_element.radio_button_element input { |
| + | width: auto; } |
| + | |
| + | .form_element.submit_element input { |
| + | -moz-border-radius: 5px; |
| + | -webkit-border-radius: 5px; |
| + | background-color: #7cae00; |
| + | padding: 5px 8px; |
| + | font: 10px/20px Arial, sans-serif; |
| + | color: white; |
| + | text-transform: uppercase; |
| + | letter-spacing: 1px; |
| + | border: none; } |
| + | |
| + | .form_element_group.vertical { |
| + | float: left; |
| + | width: 50%; } |
| + | .form_element_group.vertical .form_element .label { |
| + | text-align: right; |
| + | width: 40px; |
| + | float: left; } |
| + | .form_element_group.vertical .form_element .value { |
| + | float: left; |
| + | width: 80%; |
| + | margin-left: 10px; } |
| + | .form_element_group.vertical .form_element .value select { |
| + | width: 100%; } |
| + | .form_element_group.vertical .form_element .value input[type=text] { |
| + | width: 100%; } |
| + | |
| + | .vertical + .vertical .form_element .label { |
| + | width: 100px; } |
| + | .vertical + .vertical .form_element .value { |
| + | width: 60%; } |
| + | |
| + | .form_element_group.publishing .form_element .field input { |
| + | width: 200px; } |
| + | |
| + | .form_element_group.categories .label { |
| + | border-bottom: 2px solid white; |
| + | padding-bottom: 5px; |
| + | margin-bottom: 5px; } |
| + | .form_element_group.categories ul#root_categories { |
| + | margin-bottom: 10px; } |
| + | .form_element_group.categories ul#root_categories li li { |
| + | padding-left: 15px; } |
| + | .form_element_group.categories ul#root_categories input { |
| + | width: auto; } |
| + | .form_element_group.categories #new_category input, .form_element_group.categories #new_category select { |
| + | margin-bottom: 5px; } |
| + | .form_element_group.categories #new_category input.submit_button { |
| + | width: auto; } |
| + | |
| + | .submit { |
| + | float: left; |
| + | line-height: 30px; } |
| + | .submit .submit_element { |
| + | margin: 5px 5px 5px 0px; |
| + | float: left; } |
| + | |
| + | form .errorExplanation { |
| + | background-color: #9e0b0f; |
| + | padding: 10px; |
| + | color: white; |
| + | font-size: 12px; } |
| + | form .errorExplanation h2 { |
| + | margin: 0.1em 0em; |
| + | font-size: 16px; } |
| + | form .errorExplanation h2, form .errorExplanation p { |
| + | color: white; } |
| + | form .errorExplanation ul { |
| + | margin: 10px 10px 0px 10px; } |
| + | |
| + | .form_element_group.advanced { |
| + | display: none; } |
| + | |
| + | .pagination { |
| + | margin-bottom: 15px; |
| + | float: right; } |
| + | .pagination a, .pagination span { |
| + | background: #404040; |
| + | color: white; |
| + | padding: 2px 5px; |
| + | font-size: 11px; |
| + | -moz-border-radius: 2px; } |
| + | .pagination a:hover { |
| + | text-decoration: none; } |
| + | .pagination span.disabled { |
| + | display: none; } |
| + | .pagination span.current { |
| + | background-color: #999999; } |
| + | |
| + | #cms_admin_layouts_index .icon { |
| + | background-image: url(/images/cms/icon_layout.gif); } |
| + | |
| + | #cms_admin_pages_index .icon.published { |
| + | background-image: url(/images/cms/icon_regular.gif); } |
| + | |
| + | #cms_admin_snippets_index .icon { |
| + | width: 28px; |
| + | height: 28px; |
| + | background: url(/images/cms/icon_snippet.gif); } |
| + | |
| + | #cms_admin_categories_index .icon { |
| + | background-image: url(/images/cms/icon_category.gif); } |
| + | #cms_admin_categories_index .categorizations { |
| + | font-size: 10px; } |
| + | |
| + | #cms_admin_categories_show h3 { |
| + | font-size: 12px; |
| + | text-transform: uppercase; |
| + | border-bottom: 1px solid #cccccc; |
| + | color: #cccccc; |
| + | margin-bottom: 15px; |
| + | clear: both; } |
| + | #cms_admin_categories_show .pages { |
| + | margin-bottom: 15px; |
| + | overflow: hidden; } |
| + | #cms_admin_categories_show a.page { |
| + | width: 150px; |
| + | float: left; |
| + | height: 30px; |
| + | padding-left: 35px; |
| + | font: 14px/30px Georgia, serif; |
| + | color: black; |
| + | margin: 0px 5px 5px 0px; |
| + | background: url(/images/cms/icon_regular.gif) left center no-repeat; } |
| + | #cms_admin_categories_show a:hover { |
| + | border-bottom: 0px; } |
public/stylesheets/jquery_ui.css
+961
-0
| @@ | @@ -0,0 +1,961 @@ |
| + | /* jQuery UI CSS Framework @VERSION |
| + | * |
| + | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT or GPL Version 2 licenses. |
| + | * http://jquery.org/license |
| + | * |
| + | * http://docs.jquery.com/UI/Theming/API */ |
| + | /* Layout helpers |
| + | *---------------------------------- */ |
| + | .ui-helper-hidden { |
| + | display: none; } |
| + | |
| + | .ui-helper-hidden-accessible { |
| + | position: absolute; |
| + | left: -99999999px; } |
| + | |
| + | .ui-helper-reset { |
| + | margin: 0; |
| + | padding: 0; |
| + | border: 0; |
| + | outline: 0; |
| + | line-height: 1.3; |
| + | text-decoration: none; |
| + | font-size: 100%; |
| + | list-style: none; } |
| + | |
| + | .ui-helper-clearfix { |
| + | display: inline-block; } |
| + | .ui-helper-clearfix:after { |
| + | content: "."; |
| + | display: block; |
| + | height: 0; |
| + | clear: both; |
| + | visibility: hidden; } |
| + | |
| + | /* required comment for clearfix to work in Opera \ */ |
| + | * html .ui-helper-clearfix { |
| + | height: 1%; } |
| + | |
| + | .ui-helper-clearfix { |
| + | display: block; } |
| + | |
| + | /* end clearfix */ |
| + | .ui-helper-zfix { |
| + | width: 100%; |
| + | height: 100%; |
| + | top: 0; |
| + | left: 0; |
| + | position: absolute; |
| + | opacity: 0; |
| + | filter: Alpha(Opacity=0); } |
| + | |
| + | /* Interaction Cues |
| + | *---------------------------------- */ |
| + | .ui-state-disabled { |
| + | cursor: default !important; } |
| + | |
| + | /* Icons |
| + | *---------------------------------- */ |
| + | /* states and images */ |
| + | .ui-icon { |
| + | display: block; |
| + | text-indent: -99999px; |
| + | overflow: hidden; |
| + | background-repeat: no-repeat; } |
| + | |
| + | /* Misc visuals |
| + | *---------------------------------- */ |
| + | /* Overlays */ |
| + | .ui-widget-overlay { |
| + | position: absolute; |
| + | top: 0; |
| + | left: 0; |
| + | width: 100%; |
| + | height: 100%; } |
| + | |
| + | /* jQuery UI CSS Framework @VERSION |
| + | * |
| + | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT or GPL Version 2 licenses. |
| + | * http://jquery.org/license |
| + | * |
| + | * http://docs.jquery.com/UI/Theming/API |
| + | * |
| + | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px */ |
| + | /* Component containers |
| + | *---------------------------------- */ |
| + | .ui-widget { |
| + | font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; |
| + | font-size: 1.1em; } |
| + | .ui-widget .ui-widget { |
| + | font-size: 1em; } |
| + | .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { |
| + | font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; |
| + | font-size: 1em; } |
| + | |
| + | .ui-widget-content { |
| + | border: 1px solid #dddddd; |
| + | background: #eeeeee url(/images/cms/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; |
| + | color: #333333; } |
| + | .ui-widget-content a { |
| + | color: #333333; } |
| + | |
| + | .ui-widget-header { |
| + | border: 1px solid #e78f08; |
| + | background: #f6a828 url(/images/cms/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; |
| + | color: white; |
| + | font-weight: bold; } |
| + | .ui-widget-header a { |
| + | color: white; } |
| + | |
| + | /* Interaction states |
| + | *---------------------------------- */ |
| + | .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { |
| + | border: 1px solid #cccccc; |
| + | background: #f6f6f6 url(/images/cms/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; |
| + | font-weight: bold; |
| + | color: #1c94c4; } |
| + | |
| + | .ui-state-default a { |
| + | color: #1c94c4; |
| + | text-decoration: none; } |
| + | .ui-state-default a:link, .ui-state-default a:visited { |
| + | color: #1c94c4; |
| + | text-decoration: none; } |
| + | |
| + | .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { |
| + | border: 1px solid #fbcb09; |
| + | background: #fdf5ce url(/images/cms/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; |
| + | font-weight: bold; |
| + | color: #c77405; } |
| + | |
| + | .ui-state-hover a { |
| + | color: #c77405; |
| + | text-decoration: none; } |
| + | .ui-state-hover a:hover { |
| + | color: #c77405; |
| + | text-decoration: none; } |
| + | |
| + | .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { |
| + | border: 1px solid #fbd850; |
| + | background: white url(/images/cms/jquery_ui/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; |
| + | font-weight: bold; |
| + | color: #eb8f00; } |
| + | |
| + | .ui-state-active a { |
| + | color: #eb8f00; |
| + | text-decoration: none; } |
| + | .ui-state-active a:link, .ui-state-active a:visited { |
| + | color: #eb8f00; |
| + | text-decoration: none; } |
| + | |
| + | .ui-widget :active { |
| + | outline: none; } |
| + | |
| + | /* Interaction Cues |
| + | *---------------------------------- */ |
| + | .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { |
| + | border: 1px solid #fed22f; |
| + | background: #ffe45c url(/images/cms/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; |
| + | color: #363636; } |
| + | |
| + | .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { |
| + | color: #363636; } |
| + | |
| + | .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { |
| + | border: 1px solid #cd0a0a; |
| + | background: #b81900 url(/images/cms/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; |
| + | color: white; } |
| + | |
| + | .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a, .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { |
| + | color: white; } |
| + | |
| + | .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { |
| + | font-weight: bold; } |
| + | |
| + | .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { |
| + | opacity: 0.7; |
| + | filter: Alpha(Opacity=70); |
| + | font-weight: normal; } |
| + | |
| + | .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { |
| + | opacity: 0.35; |
| + | filter: Alpha(Opacity=35); |
| + | background-image: none; } |
| + | |
| + | /* Icons |
| + | *---------------------------------- */ |
| + | /* states and images */ |
| + | .ui-icon { |
| + | width: 16px; |
| + | height: 16px; |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_222222_256x240.png); } |
| + | |
| + | .ui-widget-content .ui-icon { |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_222222_256x240.png); } |
| + | |
| + | .ui-widget-header .ui-icon { |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_ffffff_256x240.png); } |
| + | |
| + | .ui-state-default .ui-icon, .ui-state-hover .ui-icon, .ui-state-focus .ui-icon, .ui-state-active .ui-icon { |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_ef8c08_256x240.png); } |
| + | |
| + | .ui-state-highlight .ui-icon { |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_228ef1_256x240.png); } |
| + | |
| + | .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_ffd27a_256x240.png); } |
| + | |
| + | /* positioning */ |
| + | .ui-icon-carat-1-n { |
| + | background-position: 0 0; } |
| + | |
| + | .ui-icon-carat-1-ne { |
| + | background-position: -16px 0; } |
| + | |
| + | .ui-icon-carat-1-e { |
| + | background-position: -32px 0; } |
| + | |
| + | .ui-icon-carat-1-se { |
| + | background-position: -48px 0; } |
| + | |
| + | .ui-icon-carat-1-s { |
| + | background-position: -64px 0; } |
| + | |
| + | .ui-icon-carat-1-sw { |
| + | background-position: -80px 0; } |
| + | |
| + | .ui-icon-carat-1-w { |
| + | background-position: -96px 0; } |
| + | |
| + | .ui-icon-carat-1-nw { |
| + | background-position: -112px 0; } |
| + | |
| + | .ui-icon-carat-2-n-s { |
| + | background-position: -128px 0; } |
| + | |
| + | .ui-icon-carat-2-e-w { |
| + | background-position: -144px 0; } |
| + | |
| + | .ui-icon-triangle-1-n { |
| + | background-position: 0 -16px; } |
| + | |
| + | .ui-icon-triangle-1-ne { |
| + | background-position: -16px -16px; } |
| + | |
| + | .ui-icon-triangle-1-e { |
| + | background-position: -32px -16px; } |
| + | |
| + | .ui-icon-triangle-1-se { |
| + | background-position: -48px -16px; } |
| + | |
| + | .ui-icon-triangle-1-s { |
| + | background-position: -64px -16px; } |
| + | |
| + | .ui-icon-triangle-1-sw { |
| + | background-position: -80px -16px; } |
| + | |
| + | .ui-icon-triangle-1-w { |
| + | background-position: -96px -16px; } |
| + | |
| + | .ui-icon-triangle-1-nw { |
| + | background-position: -112px -16px; } |
| + | |
| + | .ui-icon-triangle-2-n-s { |
| + | background-position: -128px -16px; } |
| + | |
| + | .ui-icon-triangle-2-e-w { |
| + | background-position: -144px -16px; } |
| + | |
| + | .ui-icon-arrow-1-n { |
| + | background-position: 0 -32px; } |
| + | |
| + | .ui-icon-arrow-1-ne { |
| + | background-position: -16px -32px; } |
| + | |
| + | .ui-icon-arrow-1-e { |
| + | background-position: -32px -32px; } |
| + | |
| + | .ui-icon-arrow-1-se { |
| + | background-position: -48px -32px; } |
| + | |
| + | .ui-icon-arrow-1-s { |
| + | background-position: -64px -32px; } |
| + | |
| + | .ui-icon-arrow-1-sw { |
| + | background-position: -80px -32px; } |
| + | |
| + | .ui-icon-arrow-1-w { |
| + | background-position: -96px -32px; } |
| + | |
| + | .ui-icon-arrow-1-nw { |
| + | background-position: -112px -32px; } |
| + | |
| + | .ui-icon-arrow-2-n-s { |
| + | background-position: -128px -32px; } |
| + | |
| + | .ui-icon-arrow-2-ne-sw { |
| + | background-position: -144px -32px; } |
| + | |
| + | .ui-icon-arrow-2-e-w { |
| + | background-position: -160px -32px; } |
| + | |
| + | .ui-icon-arrow-2-se-nw { |
| + | background-position: -176px -32px; } |
| + | |
| + | .ui-icon-arrowstop-1-n { |
| + | background-position: -192px -32px; } |
| + | |
| + | .ui-icon-arrowstop-1-e { |
| + | background-position: -208px -32px; } |
| + | |
| + | .ui-icon-arrowstop-1-s { |
| + | background-position: -224px -32px; } |
| + | |
| + | .ui-icon-arrowstop-1-w { |
| + | background-position: -240px -32px; } |
| + | |
| + | .ui-icon-arrowthick-1-n { |
| + | background-position: 0 -48px; } |
| + | |
| + | .ui-icon-arrowthick-1-ne { |
| + | background-position: -16px -48px; } |
| + | |
| + | .ui-icon-arrowthick-1-e { |
| + | background-position: -32px -48px; } |
| + | |
| + | .ui-icon-arrowthick-1-se { |
| + | background-position: -48px -48px; } |
| + | |
| + | .ui-icon-arrowthick-1-s { |
| + | background-position: -64px -48px; } |
| + | |
| + | .ui-icon-arrowthick-1-sw { |
| + | background-position: -80px -48px; } |
| + | |
| + | .ui-icon-arrowthick-1-w { |
| + | background-position: -96px -48px; } |
| + | |
| + | .ui-icon-arrowthick-1-nw { |
| + | background-position: -112px -48px; } |
| + | |
| + | .ui-icon-arrowthick-2-n-s { |
| + | background-position: -128px -48px; } |
| + | |
| + | .ui-icon-arrowthick-2-ne-sw { |
| + | background-position: -144px -48px; } |
| + | |
| + | .ui-icon-arrowthick-2-e-w { |
| + | background-position: -160px -48px; } |
| + | |
| + | .ui-icon-arrowthick-2-se-nw { |
| + | background-position: -176px -48px; } |
| + | |
| + | .ui-icon-arrowthickstop-1-n { |
| + | background-position: -192px -48px; } |
| + | |
| + | .ui-icon-arrowthickstop-1-e { |
| + | background-position: -208px -48px; } |
| + | |
| + | .ui-icon-arrowthickstop-1-s { |
| + | background-position: -224px -48px; } |
| + | |
| + | .ui-icon-arrowthickstop-1-w { |
| + | background-position: -240px -48px; } |
| + | |
| + | .ui-icon-arrowreturnthick-1-w { |
| + | background-position: 0 -64px; } |
| + | |
| + | .ui-icon-arrowreturnthick-1-n { |
| + | background-position: -16px -64px; } |
| + | |
| + | .ui-icon-arrowreturnthick-1-e { |
| + | background-position: -32px -64px; } |
| + | |
| + | .ui-icon-arrowreturnthick-1-s { |
| + | background-position: -48px -64px; } |
| + | |
| + | .ui-icon-arrowreturn-1-w { |
| + | background-position: -64px -64px; } |
| + | |
| + | .ui-icon-arrowreturn-1-n { |
| + | background-position: -80px -64px; } |
| + | |
| + | .ui-icon-arrowreturn-1-e { |
| + | background-position: -96px -64px; } |
| + | |
| + | .ui-icon-arrowreturn-1-s { |
| + | background-position: -112px -64px; } |
| + | |
| + | .ui-icon-arrowrefresh-1-w { |
| + | background-position: -128px -64px; } |
| + | |
| + | .ui-icon-arrowrefresh-1-n { |
| + | background-position: -144px -64px; } |
| + | |
| + | .ui-icon-arrowrefresh-1-e { |
| + | background-position: -160px -64px; } |
| + | |
| + | .ui-icon-arrowrefresh-1-s { |
| + | background-position: -176px -64px; } |
| + | |
| + | .ui-icon-arrow-4 { |
| + | background-position: 0 -80px; } |
| + | |
| + | .ui-icon-arrow-4-diag { |
| + | background-position: -16px -80px; } |
| + | |
| + | .ui-icon-extlink { |
| + | background-position: -32px -80px; } |
| + | |
| + | .ui-icon-newwin { |
| + | background-position: -48px -80px; } |
| + | |
| + | .ui-icon-refresh { |
| + | background-position: -64px -80px; } |
| + | |
| + | .ui-icon-shuffle { |
| + | background-position: -80px -80px; } |
| + | |
| + | .ui-icon-transfer-e-w { |
| + | background-position: -96px -80px; } |
| + | |
| + | .ui-icon-transferthick-e-w { |
| + | background-position: -112px -80px; } |
| + | |
| + | .ui-icon-folder-collapsed { |
| + | background-position: 0 -96px; } |
| + | |
| + | .ui-icon-folder-open { |
| + | background-position: -16px -96px; } |
| + | |
| + | .ui-icon-document { |
| + | background-position: -32px -96px; } |
| + | |
| + | .ui-icon-document-b { |
| + | background-position: -48px -96px; } |
| + | |
| + | .ui-icon-note { |
| + | background-position: -64px -96px; } |
| + | |
| + | .ui-icon-mail-closed { |
| + | background-position: -80px -96px; } |
| + | |
| + | .ui-icon-mail-open { |
| + | background-position: -96px -96px; } |
| + | |
| + | .ui-icon-suitcase { |
| + | background-position: -112px -96px; } |
| + | |
| + | .ui-icon-comment { |
| + | background-position: -128px -96px; } |
| + | |
| + | .ui-icon-person { |
| + | background-position: -144px -96px; } |
| + | |
| + | .ui-icon-print { |
| + | background-position: -160px -96px; } |
| + | |
| + | .ui-icon-trash { |
| + | background-position: -176px -96px; } |
| + | |
| + | .ui-icon-locked { |
| + | background-position: -192px -96px; } |
| + | |
| + | .ui-icon-unlocked { |
| + | background-position: -208px -96px; } |
| + | |
| + | .ui-icon-bookmark { |
| + | background-position: -224px -96px; } |
| + | |
| + | .ui-icon-tag { |
| + | background-position: -240px -96px; } |
| + | |
| + | .ui-icon-home { |
| + | background-position: 0 -112px; } |
| + | |
| + | .ui-icon-flag { |
| + | background-position: -16px -112px; } |
| + | |
| + | .ui-icon-calendar { |
| + | background-position: -32px -112px; } |
| + | |
| + | .ui-icon-cart { |
| + | background-position: -48px -112px; } |
| + | |
| + | .ui-icon-pencil { |
| + | background-position: -64px -112px; } |
| + | |
| + | .ui-icon-clock { |
| + | background-position: -80px -112px; } |
| + | |
| + | .ui-icon-disk { |
| + | background-position: -96px -112px; } |
| + | |
| + | .ui-icon-calculator { |
| + | background-position: -112px -112px; } |
| + | |
| + | .ui-icon-zoomin { |
| + | background-position: -128px -112px; } |
| + | |
| + | .ui-icon-zoomout { |
| + | background-position: -144px -112px; } |
| + | |
| + | .ui-icon-search { |
| + | background-position: -160px -112px; } |
| + | |
| + | .ui-icon-wrench { |
| + | background-position: -176px -112px; } |
| + | |
| + | .ui-icon-gear { |
| + | background-position: -192px -112px; } |
| + | |
| + | .ui-icon-heart { |
| + | background-position: -208px -112px; } |
| + | |
| + | .ui-icon-star { |
| + | background-position: -224px -112px; } |
| + | |
| + | .ui-icon-link { |
| + | background-position: -240px -112px; } |
| + | |
| + | .ui-icon-cancel { |
| + | background-position: 0 -128px; } |
| + | |
| + | .ui-icon-plus { |
| + | background-position: -16px -128px; } |
| + | |
| + | .ui-icon-plusthick { |
| + | background-position: -32px -128px; } |
| + | |
| + | .ui-icon-minus { |
| + | background-position: -48px -128px; } |
| + | |
| + | .ui-icon-minusthick { |
| + | background-position: -64px -128px; } |
| + | |
| + | .ui-icon-close { |
| + | background-position: -80px -128px; } |
| + | |
| + | .ui-icon-closethick { |
| + | background-position: -96px -128px; } |
| + | |
| + | .ui-icon-key { |
| + | background-position: -112px -128px; } |
| + | |
| + | .ui-icon-lightbulb { |
| + | background-position: -128px -128px; } |
| + | |
| + | .ui-icon-scissors { |
| + | background-position: -144px -128px; } |
| + | |
| + | .ui-icon-clipboard { |
| + | background-position: -160px -128px; } |
| + | |
| + | .ui-icon-copy { |
| + | background-position: -176px -128px; } |
| + | |
| + | .ui-icon-contact { |
| + | background-position: -192px -128px; } |
| + | |
| + | .ui-icon-image { |
| + | background-position: -208px -128px; } |
| + | |
| + | .ui-icon-video { |
| + | background-position: -224px -128px; } |
| + | |
| + | .ui-icon-script { |
| + | background-position: -240px -128px; } |
| + | |
| + | .ui-icon-alert { |
| + | background-position: 0 -144px; } |
| + | |
| + | .ui-icon-info { |
| + | background-position: -16px -144px; } |
| + | |
| + | .ui-icon-notice { |
| + | background-position: -32px -144px; } |
| + | |
| + | .ui-icon-help { |
| + | background-position: -48px -144px; } |
| + | |
| + | .ui-icon-check { |
| + | background-position: -64px -144px; } |
| + | |
| + | .ui-icon-bullet { |
| + | background-position: -80px -144px; } |
| + | |
| + | .ui-icon-radio-off { |
| + | background-position: -96px -144px; } |
| + | |
| + | .ui-icon-radio-on { |
| + | background-position: -112px -144px; } |
| + | |
| + | .ui-icon-pin-w { |
| + | background-position: -128px -144px; } |
| + | |
| + | .ui-icon-pin-s { |
| + | background-position: -144px -144px; } |
| + | |
| + | .ui-icon-play { |
| + | background-position: 0 -160px; } |
| + | |
| + | .ui-icon-pause { |
| + | background-position: -16px -160px; } |
| + | |
| + | .ui-icon-seek-next { |
| + | background-position: -32px -160px; } |
| + | |
| + | .ui-icon-seek-prev { |
| + | background-position: -48px -160px; } |
| + | |
| + | .ui-icon-seek-end { |
| + | background-position: -64px -160px; } |
| + | |
| + | .ui-icon-seek-start, .ui-icon-seek-first { |
| + | background-position: -80px -160px; } |
| + | |
| + | /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ |
| + | .ui-icon-stop { |
| + | background-position: -96px -160px; } |
| + | |
| + | .ui-icon-eject { |
| + | background-position: -112px -160px; } |
| + | |
| + | .ui-icon-volume-off { |
| + | background-position: -128px -160px; } |
| + | |
| + | .ui-icon-volume-on { |
| + | background-position: -144px -160px; } |
| + | |
| + | .ui-icon-power { |
| + | background-position: 0 -176px; } |
| + | |
| + | .ui-icon-signal-diag { |
| + | background-position: -16px -176px; } |
| + | |
| + | .ui-icon-signal { |
| + | background-position: -32px -176px; } |
| + | |
| + | .ui-icon-battery-0 { |
| + | background-position: -48px -176px; } |
| + | |
| + | .ui-icon-battery-1 { |
| + | background-position: -64px -176px; } |
| + | |
| + | .ui-icon-battery-2 { |
| + | background-position: -80px -176px; } |
| + | |
| + | .ui-icon-battery-3 { |
| + | background-position: -96px -176px; } |
| + | |
| + | .ui-icon-circle-plus { |
| + | background-position: 0 -192px; } |
| + | |
| + | .ui-icon-circle-minus { |
| + | background-position: -16px -192px; } |
| + | |
| + | .ui-icon-circle-close { |
| + | background-position: -32px -192px; } |
| + | |
| + | .ui-icon-circle-triangle-e { |
| + | background-position: -48px -192px; } |
| + | |
| + | .ui-icon-circle-triangle-s { |
| + | background-position: -64px -192px; } |
| + | |
| + | .ui-icon-circle-triangle-w { |
| + | background-position: -80px -192px; } |
| + | |
| + | .ui-icon-circle-triangle-n { |
| + | background-position: -96px -192px; } |
| + | |
| + | .ui-icon-circle-arrow-e { |
| + | background-position: -112px -192px; } |
| + | |
| + | .ui-icon-circle-arrow-s { |
| + | background-position: -128px -192px; } |
| + | |
| + | .ui-icon-circle-arrow-w { |
| + | background-position: -144px -192px; } |
| + | |
| + | .ui-icon-circle-arrow-n { |
| + | background-position: -160px -192px; } |
| + | |
| + | .ui-icon-circle-zoomin { |
| + | background-position: -176px -192px; } |
| + | |
| + | .ui-icon-circle-zoomout { |
| + | background-position: -192px -192px; } |
| + | |
| + | .ui-icon-circle-check { |
| + | background-position: -208px -192px; } |
| + | |
| + | .ui-icon-circlesmall-plus { |
| + | background-position: 0 -208px; } |
| + | |
| + | .ui-icon-circlesmall-minus { |
| + | background-position: -16px -208px; } |
| + | |
| + | .ui-icon-circlesmall-close { |
| + | background-position: -32px -208px; } |
| + | |
| + | .ui-icon-squaresmall-plus { |
| + | background-position: -48px -208px; } |
| + | |
| + | .ui-icon-squaresmall-minus { |
| + | background-position: -64px -208px; } |
| + | |
| + | .ui-icon-squaresmall-close { |
| + | background-position: -80px -208px; } |
| + | |
| + | .ui-icon-grip-dotted-vertical { |
| + | background-position: 0 -224px; } |
| + | |
| + | .ui-icon-grip-dotted-horizontal { |
| + | background-position: -16px -224px; } |
| + | |
| + | .ui-icon-grip-solid-vertical { |
| + | background-position: -32px -224px; } |
| + | |
| + | .ui-icon-grip-solid-horizontal { |
| + | background-position: -48px -224px; } |
| + | |
| + | .ui-icon-gripsmall-diagonal-se { |
| + | background-position: -64px -224px; } |
| + | |
| + | .ui-icon-grip-diagonal-se { |
| + | background-position: -80px -224px; } |
| + | |
| + | /* Misc visuals |
| + | *---------------------------------- */ |
| + | /* Corner radius */ |
| + | .ui-corner-tl { |
| + | -moz-border-radius-topleft: 4px; |
| + | -webkit-border-top-left-radius: 4px; |
| + | border-top-left-radius: 4px; } |
| + | |
| + | .ui-corner-tr { |
| + | -moz-border-radius-topright: 4px; |
| + | -webkit-border-top-right-radius: 4px; |
| + | border-top-right-radius: 4px; } |
| + | |
| + | .ui-corner-bl { |
| + | -moz-border-radius-bottomleft: 4px; |
| + | -webkit-border-bottom-left-radius: 4px; |
| + | border-bottom-left-radius: 4px; } |
| + | |
| + | .ui-corner-br { |
| + | -moz-border-radius-bottomright: 4px; |
| + | -webkit-border-bottom-right-radius: 4px; |
| + | border-bottom-right-radius: 4px; } |
| + | |
| + | .ui-corner-top { |
| + | -moz-border-radius-topleft: 4px; |
| + | -webkit-border-top-left-radius: 4px; |
| + | border-top-left-radius: 4px; |
| + | -moz-border-radius-topright: 4px; |
| + | -webkit-border-top-right-radius: 4px; |
| + | border-top-right-radius: 4px; } |
| + | |
| + | .ui-corner-bottom { |
| + | -moz-border-radius-bottomleft: 4px; |
| + | -webkit-border-bottom-left-radius: 4px; |
| + | border-bottom-left-radius: 4px; |
| + | -moz-border-radius-bottomright: 4px; |
| + | -webkit-border-bottom-right-radius: 4px; |
| + | border-bottom-right-radius: 4px; } |
| + | |
| + | .ui-corner-right { |
| + | -moz-border-radius-topright: 4px; |
| + | -webkit-border-top-right-radius: 4px; |
| + | border-top-right-radius: 4px; |
| + | -moz-border-radius-bottomright: 4px; |
| + | -webkit-border-bottom-right-radius: 4px; |
| + | border-bottom-right-radius: 4px; } |
| + | |
| + | .ui-corner-left { |
| + | -moz-border-radius-topleft: 4px; |
| + | -webkit-border-top-left-radius: 4px; |
| + | border-top-left-radius: 4px; |
| + | -moz-border-radius-bottomleft: 4px; |
| + | -webkit-border-bottom-left-radius: 4px; |
| + | border-bottom-left-radius: 4px; } |
| + | |
| + | .ui-corner-all { |
| + | -moz-border-radius: 4px; |
| + | -webkit-border-radius: 4px; |
| + | border-radius: 4px; } |
| + | |
| + | /* Overlays */ |
| + | .ui-widget-overlay { |
| + | background: #666666 url(/images/cms/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; |
| + | opacity: 0.5; |
| + | filter: Alpha(Opacity=50); } |
| + | |
| + | .ui-widget-shadow { |
| + | margin: -5px 0 0 -5px; |
| + | padding: 5px; |
| + | background: black url(/images/cms/jquery_ui/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; |
| + | opacity: 0.2; |
| + | filter: Alpha(Opacity=20); |
| + | -moz-border-radius: 5px; |
| + | -webkit-border-radius: 5px; |
| + | border-radius: 5px; } |
| + | |
| + | /* * jQuery UI Datepicker @VERSION |
| + | * * |
| + | * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) |
| + | * * Dual licensed under the MIT or GPL Version 2 licenses. |
| + | * * http://jquery.org/license |
| + | * * |
| + | * * http://docs.jquery.com/UI/Datepicker#theming */ |
| + | .ui-datepicker { |
| + | width: 17em; |
| + | padding: 0.2em 0.2em 0; } |
| + | .ui-datepicker .ui-datepicker-header { |
| + | position: relative; |
| + | padding: 0.2em 0; } |
| + | .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { |
| + | position: absolute; |
| + | top: 2px; |
| + | width: 1.8em; |
| + | height: 1.8em; } |
| + | .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { |
| + | top: 1px; } |
| + | .ui-datepicker .ui-datepicker-prev { |
| + | left: 2px; } |
| + | .ui-datepicker .ui-datepicker-next { |
| + | right: 2px; } |
| + | .ui-datepicker .ui-datepicker-prev-hover { |
| + | left: 1px; } |
| + | .ui-datepicker .ui-datepicker-next-hover { |
| + | right: 1px; } |
| + | .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { |
| + | display: block; |
| + | position: absolute; |
| + | left: 50%; |
| + | margin-left: -8px; |
| + | top: 50%; |
| + | margin-top: -8px; } |
| + | .ui-datepicker .ui-datepicker-title { |
| + | margin: 0 2.3em; |
| + | line-height: 1.8em; |
| + | text-align: center; } |
| + | .ui-datepicker .ui-datepicker-title select { |
| + | font-size: 1em; |
| + | margin: 1px 0; } |
| + | .ui-datepicker select.ui-datepicker-month-year { |
| + | width: 100%; } |
| + | .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { |
| + | width: 49%; } |
| + | .ui-datepicker table { |
| + | width: 100%; |
| + | font-size: 0.9em; |
| + | border-collapse: collapse; |
| + | margin: 0 0 0.4em; } |
| + | .ui-datepicker th { |
| + | padding: 0.7em 0.3em; |
| + | text-align: center; |
| + | font-weight: bold; |
| + | border: 0; } |
| + | .ui-datepicker td { |
| + | border: 0; |
| + | padding: 1px; } |
| + | .ui-datepicker td span, .ui-datepicker td a { |
| + | display: block; |
| + | padding: 0.2em; |
| + | text-align: right; |
| + | text-decoration: none; } |
| + | .ui-datepicker .ui-datepicker-buttonpane { |
| + | background-image: none; |
| + | margin: 0.7em 0 0 0; |
| + | padding: 0 0.2em; |
| + | border-left: 0; |
| + | border-right: 0; |
| + | border-bottom: 0; } |
| + | .ui-datepicker .ui-datepicker-buttonpane button { |
| + | float: right; |
| + | margin: 0.5em 0.2em 0.4em; |
| + | cursor: pointer; |
| + | padding: 0.2em 0.6em 0.3em 0.6em; |
| + | width: auto; |
| + | overflow: visible; } |
| + | .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { |
| + | float: left; } |
| + | .ui-datepicker.ui-datepicker-multi { |
| + | width: auto; } |
| + | |
| + | /* with multiple calendars */ |
| + | .ui-datepicker-multi .ui-datepicker-group { |
| + | float: left; } |
| + | .ui-datepicker-multi .ui-datepicker-group table { |
| + | width: 95%; |
| + | margin: 0 auto 0.4em; } |
| + | |
| + | .ui-datepicker-multi-2 .ui-datepicker-group { |
| + | width: 50%; } |
| + | |
| + | .ui-datepicker-multi-3 .ui-datepicker-group { |
| + | width: 33.3%; } |
| + | |
| + | .ui-datepicker-multi-4 .ui-datepicker-group { |
| + | width: 25%; } |
| + | |
| + | .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { |
| + | border-left-width: 0; } |
| + | .ui-datepicker-multi .ui-datepicker-buttonpane { |
| + | clear: left; } |
| + | |
| + | .ui-datepicker-row-break { |
| + | clear: both; |
| + | width: 100%; } |
| + | |
| + | /* RTL support */ |
| + | .ui-datepicker-rtl { |
| + | direction: rtl; } |
| + | .ui-datepicker-rtl .ui-datepicker-prev { |
| + | right: 2px; |
| + | left: auto; } |
| + | .ui-datepicker-rtl .ui-datepicker-next { |
| + | left: 2px; |
| + | right: auto; } |
| + | .ui-datepicker-rtl .ui-datepicker-prev:hover { |
| + | right: 1px; |
| + | left: auto; } |
| + | .ui-datepicker-rtl .ui-datepicker-next:hover { |
| + | left: 1px; |
| + | right: auto; } |
| + | .ui-datepicker-rtl .ui-datepicker-buttonpane { |
| + | clear: right; } |
| + | .ui-datepicker-rtl .ui-datepicker-buttonpane button { |
| + | float: left; } |
| + | .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { |
| + | float: right; } |
| + | .ui-datepicker-rtl .ui-datepicker-group { |
| + | float: right; } |
| + | .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { |
| + | border-right-width: 0; |
| + | border-left-width: 1px; } |
| + | |
| + | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ |
| + | .ui-datepicker-cover { |
| + | display: none; |
| + | /*sorry for IE5 */ |
| + | display/**/: block; |
| + | /*sorry for IE5 */ |
| + | position: absolute; |
| + | /*must have */ |
| + | z-index: -1; |
| + | /*must have */ |
| + | filter: mask(); |
| + | /*must have */ |
| + | top: -4px; |
| + | /*must have */ |
| + | left: -4px; |
| + | /*must have */ |
| + | width: 200px; |
| + | /*must have */ |
| + | height: 200px; |
| + | /*must have */ } |
public/stylesheets/sass/cms_master.sass
+514
-0
| @@ | @@ -0,0 +1,514 @@ |
| + | // -------------------------------------------------------------------- Reset |
| + | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td |
| + | margin: 0 |
| + | padding: 0 |
| + | border: 0 |
| + | outline: 0 |
| + | font-size: 100% |
| + | vertical-align: baseline |
| + | background: transparent |
| + | font-weight: normal |
| + | body |
| + | line-height: 1 |
| + | ol, ul |
| + | list-style: none |
| + | blockquote, q |
| + | quotes: none |
| + | blockquote:before, blockquote:after, q:before, q:after |
| + | content: '' |
| + | content: none |
| + | *:focus |
| + | outline: 0 |
| + | ins |
| + | text-decoration: none |
| + | del |
| + | text-decoration: line-through |
| + | table |
| + | border-collapse: collapse |
| + | border-spacing: 0 |
| + | caption, th |
| + | text-align: left |
| + | |
| + | // --------------------------------------------------------------- Typography |
| + | body |
| + | font: 13px Arial, Verdana, clean, sans-serif |
| + | _font-size: small |
| + | _font: x-small |
| + | table |
| + | font-size: inherit |
| + | th |
| + | font-weight: bold |
| + | pre, code |
| + | font: 115% monospace |
| + | _font-size: 100% |
| + | |
| + | p |
| + | font: 12px/15px Arial, sans-serif |
| + | color: #000 |
| + | |
| + | h1, h2, h3 |
| + | margin: 0.8em 0em |
| + | |
| + | h2 |
| + | font: bold 25px/30px Arial, sans-serif |
| + | color: #000 |
| + | |
| + | h3 |
| + | font: bold 18px/24px Arial, sans-serif |
| + | color: #000 |
| + | |
| + | // ------------------------------------------------------------------- Common |
| + | |
| + | a |
| + | color: #26A9E0 |
| + | text-decoration: none |
| + | |
| + | a:hover |
| + | text-decoration: none |
| + | border-bottom: 1px dotted #26A9E0 |
| + | |
| + | a.button |
| + | -moz-border-radius: 5px |
| + | -webkit-border-radius: 5px |
| + | background-color: #7CAE00 |
| + | padding: 5px 8px |
| + | font: 10px/20px Arial, sans-serif |
| + | color: #fff |
| + | text-transform: uppercase |
| + | letter-spacing: 1px |
| + | |
| + | a.button:hover |
| + | background-color: #629700 |
| + | border: 0px |
| + | |
| + | a.big_button |
| + | float: left |
| + | padding: 0px 15px |
| + | font: bold 14px/33px Arial, sans-serif |
| + | color: #fff |
| + | -moz-border-radius: 7px |
| + | -webkit-border-radius: 7px |
| + | background: url("/images/cms/bg-button-green-34.gif") top |
| + | display: block |
| + | text-decoration: none |
| + | height: 34px |
| + | |
| + | a.big_button:hover |
| + | background-position: 0 -34px |
| + | border: 0px |
| + | |
| + | a.top_button |
| + | float: right |
| + | padding: 0px 15px |
| + | margin-top: -35px |
| + | font: bold 14px/33px Arial, sans-serif |
| + | color: #fff |
| + | -moz-border-radius: 0px 0px 7px 7px |
| + | -webkit-border-bottom-left-radius: 7px |
| + | -webkit-border-bottom-right-radius: 7px |
| + | background: url("/images/cms/bg-button-green-34.gif") top |
| + | display: block |
| + | text-decoration: none |
| + | height: 34px |
| + | |
| + | a.top_button:hover |
| + | background-position: 0 -34px |
| + | border: 0px |
| + | |
| + | .filter_form |
| + | float: right |
| + | margin-bottom: 15px |
| + | |
| + | // ---------------------------------------------------------------- Structure |
| + | |
| + | body |
| + | background: #fff url('/images/cms/background.png') top left repeat-y |
| + | .content_wrapper |
| + | width: 1195px |
| + | .left_column |
| + | width: 205px |
| + | float: left |
| + | .header |
| + | text-align: center |
| + | width: 150px |
| + | margin: 15px auto |
| + | h1 |
| + | padding: 0px |
| + | margin: 0px |
| + | display: none |
| + | a |
| + | font-size: 0px |
| + | line-height: 0px |
| + | color: #fff |
| + | text-decoration: none |
| + | a:hover |
| + | border: 0px |
| + | |
| + | .content_column |
| + | width: 990px |
| + | float: left |
| + | .flash.notice |
| + | padding: 6px |
| + | background-color: #c7e03d |
| + | color: #000 |
| + | margin: 15px 0px |
| + | font-size: 14px |
| + | .center_column |
| + | padding: 30px |
| + | float: left |
| + | width: 680px |
| + | #form_blocks |
| + | float: left |
| + | width: 100% |
| + | label |
| + | font: bold 16px/24px Arial, sans-serif |
| + | color: #000 |
| + | text-transform: none |
| + | letter-spacing: 0px |
| + | .right_column |
| + | float: right |
| + | width: 250px |
| + | .form_element_group |
| + | padding: 30px 20px 20px 20px |
| + | .form_element_group + .form_element_group |
| + | border-top: 3px solid #E6E7E8 |
| + | padding-top: 13px |
| + | h2 |
| + | font: bold 18px/24px Arial, sans-serif |
| + | color: #000 |
| + | margin-bottom: 10px |
| + | |
| + | .footer |
| + | display: none |
| + | padding: 15px |
| + | color: #fff |
| + | a |
| + | color: #fff |
| + | |
| + | // -------------------------------------------------------------- Left Column |
| + | .left_column |
| + | ul |
| + | margin-bottom: 5px |
| + | padding: 5px 0px |
| + | li |
| + | margin: 6px 0px |
| + | a |
| + | display: block |
| + | font: bold 14px/34px Arial, sans-serif |
| + | color: #58595B |
| + | margin-left: 5px |
| + | padding-left: 35px |
| + | text-decoration: none |
| + | |
| + | a.active, a:hover |
| + | color: #fff |
| + | height: 34px |
| + | background-color: #231F20 |
| + | -moz-border-radius: 7px 0px 0px 7px |
| + | -webkit-border-top-left-radius: 7px |
| + | -webkit-border-bottom-left-radius: 7px |
| + | border: 0px |
| + | |
| + | |
| + | // ----------------------------------------------------------- Tree Structure |
| + | ul.closed |
| + | display: none |
| + | |
| + | ul.tree_structure |
| + | background-color: #fff |
| + | padding: 25px |
| + | margin-top: 15px |
| + | box-shadow: 0px 2px 8px #ddd |
| + | -moz-box-shadow: 0px 2px 8px #ddd |
| + | -webkit-box-shadow: 0px 2px 8px #ddd |
| + | |
| + | li |
| + | margin-left: 25px |
| + | li + li, li > ul |
| + | border-top: 1px solid #eee |
| + | |
| + | a.tree_toggle |
| + | margin-top: 5px |
| + | width: 20px |
| + | height: 28px |
| + | float: left |
| + | margin-left: -35px |
| + | font: bold 14px/25px Arial, sans-serif |
| + | background: url(/images/cms/arrow_bottom.gif) right center no-repeat |
| + | padding-right: 15px |
| + | color: #ccc |
| + | text-align: right |
| + | text-decoration: none |
| + | a.tree_toggle.closed |
| + | background-image: url(/images/cms/arrow_right.gif) |
| + | a.tree_toggle:hover |
| + | border: 0px |
| + | color: #000 |
| + | |
| + | .item |
| + | padding: 7px 0px 7px 35px |
| + | overflow: hidden |
| + | |
| + | .icon |
| + | margin-left: -30px |
| + | float: left |
| + | width: 28px |
| + | height: 28px |
| + | background: url(/images/cms/icon_draft.gif) |
| + | .dragger |
| + | width: 28px |
| + | height: 28px |
| + | cursor: move |
| + | .dragger:hover |
| + | background: url(/images/cms/icon_move.gif) |
| + | |
| + | a.label |
| + | font-size: 14px |
| + | color: #000 |
| + | a.label:hover |
| + | border-bottom: 1px dotted #000 |
| + | .url |
| + | font-size: 10px |
| + | |
| + | .action_links |
| + | visibility: hidden |
| + | font-size: 10px |
| + | |
| + | table.details |
| + | font-size: 10px |
| + | margin: 5px 15px |
| + | border-left: 3px solid #ccc |
| + | th |
| + | padding: 0px 5px 0px 10px |
| + | font-weight: normal |
| + | |
| + | .item:hover |
| + | background-color: #ebf5fc |
| + | .action_links |
| + | visibility: visible |
| + | |
| + | // ---------------------------------------------------------- Formatted Table |
| + | table.formatted |
| + | margin-bottom: 15px |
| + | background-color: #fff |
| + | border: 10px solid #fff |
| + | box-shadow: 0px 2px 8px #ddd |
| + | -moz-box-shadow: 0px 2px 8px #ddd |
| + | -webkit-box-shadow: 0px 2px 8px #ddd |
| + | |
| + | th, td |
| + | padding: 10px |
| + | vertical-align: top |
| + | white-space: nowrap |
| + | a.label |
| + | color: black |
| + | font-size: 14px |
| + | a.slug |
| + | font-size: 10px |
| + | |
| + | th |
| + | background-color: #eee |
| + | font-size: 10px |
| + | text-transform: uppercase |
| + | border-bottom: 1px solid #444 |
| + | td.main, th.main |
| + | width: 100% |
| + | white-space: normal |
| + | tr |
| + | border-bottom: 1px solid #eee |
| + | |
| + | // -------------------------------------------------------------------- Forms |
| + | .form_element_group |
| + | margin-top: 10px |
| + | |
| + | |
| + | .form_element |
| + | margin-bottom: 10px |
| + | overflow: hidden |
| + | .label |
| + | height: 22px |
| + | font: 10px/22px Arial, sans-serif |
| + | color: #000 |
| + | text-transform: uppercase |
| + | letter-spacing: 1px |
| + | .value |
| + | .field_with_errors |
| + | display: inline |
| + | input, select, textarea |
| + | width: 97% |
| + | border: 1px solid #ccc |
| + | padding: 3px |
| + | input[type=checkbox] |
| + | width: auto |
| + | border: 0 |
| + | float: left |
| + | margin: 1px 4px 0px 0px |
| + | |
| + | .codemirror |
| + | background-color: #fff |
| + | border: 1px inset #e5e5e5 |
| + | .value.narrow |
| + | input, select, textarea |
| + | width: 80% |
| + | .fieldWithErrors label |
| + | color: #9E0B0F |
| + | .errors |
| + | color: #9E0B0F |
| + | margin: 3px 0px |
| + | .select |
| + | .label |
| + | label |
| + | line-height: 20px |
| + | .form_element.large |
| + | label |
| + | font-size: 16px |
| + | line-height: 26px |
| + | .value |
| + | input |
| + | font-size: 16px |
| + | .form_element.time_select_element, .form_element.date_select_element, .form_element.check_box_element, .form_element.radio_button_element |
| + | select, input |
| + | width: auto |
| + | |
| + | .form_element.submit_element |
| + | input |
| + | -moz-border-radius: 5px |
| + | -webkit-border-radius: 5px |
| + | background-color: #7CAE00 |
| + | padding: 5px 8px |
| + | font: 10px/20px Arial, sans-serif |
| + | color: #fff |
| + | text-transform: uppercase |
| + | letter-spacing: 1px |
| + | border: none |
| + | |
| + | .form_element_group.vertical |
| + | float: left |
| + | width: 50% |
| + | .form_element |
| + | .label |
| + | text-align: right |
| + | width: 40px |
| + | float: left |
| + | .value |
| + | float: left |
| + | width: 80% |
| + | margin-left: 10px |
| + | select |
| + | width: 100% |
| + | input[type=text] |
| + | width: 100% |
| + | .vertical + .vertical |
| + | .form_element |
| + | .label |
| + | width: 100px |
| + | .value |
| + | width: 60% |
| + | |
| + | .form_element_group.publishing |
| + | .form_element .field |
| + | input |
| + | width: 200px |
| + | |
| + | .form_element_group.categories |
| + | .label |
| + | border-bottom: 2px solid #fff |
| + | padding-bottom: 5px |
| + | margin-bottom: 5px |
| + | ul#root_categories |
| + | margin-bottom: 10px |
| + | li li |
| + | padding-left: 15px |
| + | input |
| + | width: auto |
| + | #new_category |
| + | input, select |
| + | margin-bottom: 5px |
| + | input.submit_button |
| + | width: auto |
| + | |
| + | |
| + | .submit |
| + | float: left |
| + | line-height: 30px |
| + | .submit_element |
| + | margin: 5px 5px 5px 0px |
| + | float: left |
| + | form |
| + | .errorExplanation |
| + | background-color: #9E0B0F |
| + | padding: 10px |
| + | color: #fff |
| + | font-size: 12px |
| + | h2 |
| + | margin: 0.1em 0em |
| + | font-size: 16px |
| + | h2, p |
| + | color: #fff |
| + | ul |
| + | margin: 10px 10px 0px 10px |
| + | |
| + | .form_element_group.advanced |
| + | display: none |
| + | // --------------------------------------------------------------- Pagination |
| + | .pagination |
| + | margin-bottom: 15px |
| + | float: right |
| + | a, span |
| + | background: #404040 |
| + | color: #fff |
| + | padding: 2px 5px |
| + | font-size: 11px |
| + | -moz-border-radius: 2px |
| + | a:hover |
| + | text-decoration: none |
| + | span.disabled |
| + | display: none |
| + | span.current |
| + | background-color: #999 |
| + | |
| + | // ------------------------------------------------------------------ Layouts |
| + | #cms_admin_layouts_index |
| + | .icon |
| + | background-image: url(/images/cms/icon_layout.gif) |
| + | |
| + | // -------------------------------------------------------------------- Pages |
| + | #cms_admin_pages_index |
| + | .icon.published |
| + | background-image: url(/images/cms/icon_regular.gif) |
| + | |
| + | // ----------------------------------------------------------------- Snippets |
| + | #cms_admin_snippets_index |
| + | .icon |
| + | width: 28px |
| + | height: 28px |
| + | background: url(/images/cms/icon_snippet.gif) |
| + | // --------------------------------------------------------------- Categories |
| + | #cms_admin_categories_index |
| + | .icon |
| + | background-image: url(/images/cms/icon_category.gif) |
| + | .categorizations |
| + | font-size: 10px |
| + | #cms_admin_categories_show |
| + | h3 |
| + | font-size: 12px |
| + | text-transform: uppercase |
| + | border-bottom: 1px solid #ccc |
| + | color: #ccc |
| + | margin-bottom: 15px |
| + | clear: both |
| + | .pages |
| + | margin-bottom: 15px |
| + | overflow: hidden |
| + | a.page |
| + | width: 150px |
| + | float: left |
| + | height: 30px |
| + | padding-left: 35px |
| + | font: 14px/30px Georgia, serif |
| + | color: #000 |
| + | margin: 0px 5px 5px 0px |
| + | background: url(/images/cms/icon_regular.gif) left center no-repeat |
| + | a:hover |
| + | border-bottom: 0px |
| + | |
public/stylesheets/sass/jquery_ui.sass
+990
-0
| @@ | @@ -0,0 +1,990 @@ |
| + | /* |
| + | * jQuery UI CSS Framework @VERSION |
| + | * |
| + | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT or GPL Version 2 licenses. |
| + | * http://jquery.org/license |
| + | * |
| + | * http://docs.jquery.com/UI/Theming/API |
| + | |
| + | /* Layout helpers |
| + | *---------------------------------- |
| + | |
| + | .ui-helper-hidden |
| + | display: none |
| + | |
| + | .ui-helper-hidden-accessible |
| + | position: absolute |
| + | left: -99999999px |
| + | |
| + | .ui-helper-reset |
| + | margin: 0 |
| + | padding: 0 |
| + | border: 0 |
| + | outline: 0 |
| + | line-height: 1.3 |
| + | text-decoration: none |
| + | font-size: 100% |
| + | list-style: none |
| + | |
| + | .ui-helper-clearfix |
| + | &:after |
| + | content: "." |
| + | display: block |
| + | height: 0 |
| + | clear: both |
| + | visibility: hidden |
| + | display: inline-block |
| + | |
| + | /* required comment for clearfix to work in Opera \ |
| + | |
| + | * html .ui-helper-clearfix |
| + | height: 1% |
| + | |
| + | .ui-helper-clearfix |
| + | display: block |
| + | |
| + | /* end clearfix |
| + | |
| + | .ui-helper-zfix |
| + | width: 100% |
| + | height: 100% |
| + | top: 0 |
| + | left: 0 |
| + | position: absolute |
| + | opacity: 0 |
| + | filter: Alpha(Opacity = 0) |
| + | |
| + | /* Interaction Cues |
| + | *---------------------------------- |
| + | |
| + | .ui-state-disabled |
| + | cursor: default !important |
| + | |
| + | /* Icons |
| + | *---------------------------------- |
| + | |
| + | /* states and images |
| + | |
| + | .ui-icon |
| + | display: block |
| + | text-indent: -99999px |
| + | overflow: hidden |
| + | background-repeat: no-repeat |
| + | |
| + | /* Misc visuals |
| + | *---------------------------------- |
| + | |
| + | /* Overlays |
| + | |
| + | .ui-widget-overlay |
| + | position: absolute |
| + | top: 0 |
| + | left: 0 |
| + | width: 100% |
| + | height: 100% |
| + | |
| + | /* |
| + | * jQuery UI CSS Framework @VERSION |
| + | * |
| + | * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) |
| + | * Dual licensed under the MIT or GPL Version 2 licenses. |
| + | * http://jquery.org/license |
| + | * |
| + | * http://docs.jquery.com/UI/Theming/API |
| + | * |
| + | * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px |
| + | |
| + | /* Component containers |
| + | *---------------------------------- |
| + | |
| + | .ui-widget |
| + | font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif |
| + | font-size: 1.1em |
| + | .ui-widget |
| + | font-size: 1em |
| + | input, select, textarea, button |
| + | font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif |
| + | font-size: 1em |
| + | |
| + | .ui-widget-content |
| + | border: 1px solid #dddddd |
| + | background: #eeeeee url(/images/cms/jquery_ui/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x |
| + | color: #333333 |
| + | a |
| + | color: #333333 |
| + | |
| + | .ui-widget-header |
| + | border: 1px solid #e78f08 |
| + | background: #f6a828 url(/images/cms/jquery_ui/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x |
| + | color: #ffffff |
| + | font-weight: bold |
| + | a |
| + | color: #ffffff |
| + | |
| + | /* Interaction states |
| + | *---------------------------------- |
| + | |
| + | .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default |
| + | border: 1px solid #cccccc |
| + | background: #f6f6f6 url(/images/cms/jquery_ui/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x |
| + | font-weight: bold |
| + | color: #1c94c4 |
| + | |
| + | .ui-state-default a |
| + | color: #1c94c4 |
| + | text-decoration: none |
| + | &:link, &:visited |
| + | color: #1c94c4 |
| + | text-decoration: none |
| + | |
| + | .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus |
| + | border: 1px solid #fbcb09 |
| + | background: #fdf5ce url(/images/cms/jquery_ui/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x |
| + | font-weight: bold |
| + | color: #c77405 |
| + | |
| + | .ui-state-hover a |
| + | color: #c77405 |
| + | text-decoration: none |
| + | &:hover |
| + | color: #c77405 |
| + | text-decoration: none |
| + | |
| + | .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active |
| + | border: 1px solid #fbd850 |
| + | background: white url(/images/cms/jquery_ui/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x |
| + | font-weight: bold |
| + | color: #eb8f00 |
| + | |
| + | .ui-state-active a |
| + | color: #eb8f00 |
| + | text-decoration: none |
| + | &:link, &:visited |
| + | color: #eb8f00 |
| + | text-decoration: none |
| + | |
| + | .ui-widget :active |
| + | outline: none |
| + | |
| + | /* Interaction Cues |
| + | *---------------------------------- |
| + | |
| + | .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight |
| + | border: 1px solid #fed22f |
| + | background: #ffe45c url(/images/cms/jquery_ui/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x |
| + | color: #363636 |
| + | |
| + | .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a |
| + | color: #363636 |
| + | |
| + | .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error |
| + | border: 1px solid #cd0a0a |
| + | background: #b81900 url(/images/cms/jquery_ui/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat |
| + | color: #ffffff |
| + | |
| + | .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a, .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text |
| + | color: #ffffff |
| + | |
| + | .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary |
| + | font-weight: bold |
| + | |
| + | .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary |
| + | opacity: .7 |
| + | filter: Alpha(Opacity = 70) |
| + | font-weight: normal |
| + | |
| + | .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled |
| + | opacity: .35 |
| + | filter: Alpha(Opacity = 35) |
| + | background-image: none |
| + | |
| + | /* Icons |
| + | *---------------------------------- |
| + | |
| + | /* states and images |
| + | |
| + | .ui-icon |
| + | width: 16px |
| + | height: 16px |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_222222_256x240.png) |
| + | |
| + | .ui-widget-content .ui-icon |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_222222_256x240.png) |
| + | |
| + | .ui-widget-header .ui-icon |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_ffffff_256x240.png) |
| + | |
| + | .ui-state-default .ui-icon, .ui-state-hover .ui-icon, .ui-state-focus .ui-icon, .ui-state-active .ui-icon |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_ef8c08_256x240.png) |
| + | |
| + | .ui-state-highlight .ui-icon |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_228ef1_256x240.png) |
| + | |
| + | .ui-state-error .ui-icon, .ui-state-error-text .ui-icon |
| + | background-image: url(/images/cms/jquery_ui/ui-icons_ffd27a_256x240.png) |
| + | |
| + | /* positioning |
| + | |
| + | .ui-icon-carat-1-n |
| + | background-position: 0 0 |
| + | |
| + | .ui-icon-carat-1-ne |
| + | background-position: -16px 0 |
| + | |
| + | .ui-icon-carat-1-e |
| + | background-position: -32px 0 |
| + | |
| + | .ui-icon-carat-1-se |
| + | background-position: -48px 0 |
| + | |
| + | .ui-icon-carat-1-s |
| + | background-position: -64px 0 |
| + | |
| + | .ui-icon-carat-1-sw |
| + | background-position: -80px 0 |
| + | |
| + | .ui-icon-carat-1-w |
| + | background-position: -96px 0 |
| + | |
| + | .ui-icon-carat-1-nw |
| + | background-position: -112px 0 |
| + | |
| + | .ui-icon-carat-2-n-s |
| + | background-position: -128px 0 |
| + | |
| + | .ui-icon-carat-2-e-w |
| + | background-position: -144px 0 |
| + | |
| + | .ui-icon-triangle-1-n |
| + | background-position: 0 -16px |
| + | |
| + | .ui-icon-triangle-1-ne |
| + | background-position: -16px -16px |
| + | |
| + | .ui-icon-triangle-1-e |
| + | background-position: -32px -16px |
| + | |
| + | .ui-icon-triangle-1-se |
| + | background-position: -48px -16px |
| + | |
| + | .ui-icon-triangle-1-s |
| + | background-position: -64px -16px |
| + | |
| + | .ui-icon-triangle-1-sw |
| + | background-position: -80px -16px |
| + | |
| + | .ui-icon-triangle-1-w |
| + | background-position: -96px -16px |
| + | |
| + | .ui-icon-triangle-1-nw |
| + | background-position: -112px -16px |
| + | |
| + | .ui-icon-triangle-2-n-s |
| + | background-position: -128px -16px |
| + | |
| + | .ui-icon-triangle-2-e-w |
| + | background-position: -144px -16px |
| + | |
| + | .ui-icon-arrow-1-n |
| + | background-position: 0 -32px |
| + | |
| + | .ui-icon-arrow-1-ne |
| + | background-position: -16px -32px |
| + | |
| + | .ui-icon-arrow-1-e |
| + | background-position: -32px -32px |
| + | |
| + | .ui-icon-arrow-1-se |
| + | background-position: -48px -32px |
| + | |
| + | .ui-icon-arrow-1-s |
| + | background-position: -64px -32px |
| + | |
| + | .ui-icon-arrow-1-sw |
| + | background-position: -80px -32px |
| + | |
| + | .ui-icon-arrow-1-w |
| + | background-position: -96px -32px |
| + | |
| + | .ui-icon-arrow-1-nw |
| + | background-position: -112px -32px |
| + | |
| + | .ui-icon-arrow-2-n-s |
| + | background-position: -128px -32px |
| + | |
| + | .ui-icon-arrow-2-ne-sw |
| + | background-position: -144px -32px |
| + | |
| + | .ui-icon-arrow-2-e-w |
| + | background-position: -160px -32px |
| + | |
| + | .ui-icon-arrow-2-se-nw |
| + | background-position: -176px -32px |
| + | |
| + | .ui-icon-arrowstop-1-n |
| + | background-position: -192px -32px |
| + | |
| + | .ui-icon-arrowstop-1-e |
| + | background-position: -208px -32px |
| + | |
| + | .ui-icon-arrowstop-1-s |
| + | background-position: -224px -32px |
| + | |
| + | .ui-icon-arrowstop-1-w |
| + | background-position: -240px -32px |
| + | |
| + | .ui-icon-arrowthick-1-n |
| + | background-position: 0 -48px |
| + | |
| + | .ui-icon-arrowthick-1-ne |
| + | background-position: -16px -48px |
| + | |
| + | .ui-icon-arrowthick-1-e |
| + | background-position: -32px -48px |
| + | |
| + | .ui-icon-arrowthick-1-se |
| + | background-position: -48px -48px |
| + | |
| + | .ui-icon-arrowthick-1-s |
| + | background-position: -64px -48px |
| + | |
| + | .ui-icon-arrowthick-1-sw |
| + | background-position: -80px -48px |
| + | |
| + | .ui-icon-arrowthick-1-w |
| + | background-position: -96px -48px |
| + | |
| + | .ui-icon-arrowthick-1-nw |
| + | background-position: -112px -48px |
| + | |
| + | .ui-icon-arrowthick-2-n-s |
| + | background-position: -128px -48px |
| + | |
| + | .ui-icon-arrowthick-2-ne-sw |
| + | background-position: -144px -48px |
| + | |
| + | .ui-icon-arrowthick-2-e-w |
| + | background-position: -160px -48px |
| + | |
| + | .ui-icon-arrowthick-2-se-nw |
| + | background-position: -176px -48px |
| + | |
| + | .ui-icon-arrowthickstop-1-n |
| + | background-position: -192px -48px |
| + | |
| + | .ui-icon-arrowthickstop-1-e |
| + | background-position: -208px -48px |
| + | |
| + | .ui-icon-arrowthickstop-1-s |
| + | background-position: -224px -48px |
| + | |
| + | .ui-icon-arrowthickstop-1-w |
| + | background-position: -240px -48px |
| + | |
| + | .ui-icon-arrowreturnthick-1-w |
| + | background-position: 0 -64px |
| + | |
| + | .ui-icon-arrowreturnthick-1-n |
| + | background-position: -16px -64px |
| + | |
| + | .ui-icon-arrowreturnthick-1-e |
| + | background-position: -32px -64px |
| + | |
| + | .ui-icon-arrowreturnthick-1-s |
| + | background-position: -48px -64px |
| + | |
| + | .ui-icon-arrowreturn-1-w |
| + | background-position: -64px -64px |
| + | |
| + | .ui-icon-arrowreturn-1-n |
| + | background-position: -80px -64px |
| + | |
| + | .ui-icon-arrowreturn-1-e |
| + | background-position: -96px -64px |
| + | |
| + | .ui-icon-arrowreturn-1-s |
| + | background-position: -112px -64px |
| + | |
| + | .ui-icon-arrowrefresh-1-w |
| + | background-position: -128px -64px |
| + | |
| + | .ui-icon-arrowrefresh-1-n |
| + | background-position: -144px -64px |
| + | |
| + | .ui-icon-arrowrefresh-1-e |
| + | background-position: -160px -64px |
| + | |
| + | .ui-icon-arrowrefresh-1-s |
| + | background-position: -176px -64px |
| + | |
| + | .ui-icon-arrow-4 |
| + | background-position: 0 -80px |
| + | |
| + | .ui-icon-arrow-4-diag |
| + | background-position: -16px -80px |
| + | |
| + | .ui-icon-extlink |
| + | background-position: -32px -80px |
| + | |
| + | .ui-icon-newwin |
| + | background-position: -48px -80px |
| + | |
| + | .ui-icon-refresh |
| + | background-position: -64px -80px |
| + | |
| + | .ui-icon-shuffle |
| + | background-position: -80px -80px |
| + | |
| + | .ui-icon-transfer-e-w |
| + | background-position: -96px -80px |
| + | |
| + | .ui-icon-transferthick-e-w |
| + | background-position: -112px -80px |
| + | |
| + | .ui-icon-folder-collapsed |
| + | background-position: 0 -96px |
| + | |
| + | .ui-icon-folder-open |
| + | background-position: -16px -96px |
| + | |
| + | .ui-icon-document |
| + | background-position: -32px -96px |
| + | |
| + | .ui-icon-document-b |
| + | background-position: -48px -96px |
| + | |
| + | .ui-icon-note |
| + | background-position: -64px -96px |
| + | |
| + | .ui-icon-mail-closed |
| + | background-position: -80px -96px |
| + | |
| + | .ui-icon-mail-open |
| + | background-position: -96px -96px |
| + | |
| + | .ui-icon-suitcase |
| + | background-position: -112px -96px |
| + | |
| + | .ui-icon-comment |
| + | background-position: -128px -96px |
| + | |
| + | .ui-icon-person |
| + | background-position: -144px -96px |
| + | |
| + | .ui-icon-print |
| + | background-position: -160px -96px |
| + | |
| + | .ui-icon-trash |
| + | background-position: -176px -96px |
| + | |
| + | .ui-icon-locked |
| + | background-position: -192px -96px |
| + | |
| + | .ui-icon-unlocked |
| + | background-position: -208px -96px |
| + | |
| + | .ui-icon-bookmark |
| + | background-position: -224px -96px |
| + | |
| + | .ui-icon-tag |
| + | background-position: -240px -96px |
| + | |
| + | .ui-icon-home |
| + | background-position: 0 -112px |
| + | |
| + | .ui-icon-flag |
| + | background-position: -16px -112px |
| + | |
| + | .ui-icon-calendar |
| + | background-position: -32px -112px |
| + | |
| + | .ui-icon-cart |
| + | background-position: -48px -112px |
| + | |
| + | .ui-icon-pencil |
| + | background-position: -64px -112px |
| + | |
| + | .ui-icon-clock |
| + | background-position: -80px -112px |
| + | |
| + | .ui-icon-disk |
| + | background-position: -96px -112px |
| + | |
| + | .ui-icon-calculator |
| + | background-position: -112px -112px |
| + | |
| + | .ui-icon-zoomin |
| + | background-position: -128px -112px |
| + | |
| + | .ui-icon-zoomout |
| + | background-position: -144px -112px |
| + | |
| + | .ui-icon-search |
| + | background-position: -160px -112px |
| + | |
| + | .ui-icon-wrench |
| + | background-position: -176px -112px |
| + | |
| + | .ui-icon-gear |
| + | background-position: -192px -112px |
| + | |
| + | .ui-icon-heart |
| + | background-position: -208px -112px |
| + | |
| + | .ui-icon-star |
| + | background-position: -224px -112px |
| + | |
| + | .ui-icon-link |
| + | background-position: -240px -112px |
| + | |
| + | .ui-icon-cancel |
| + | background-position: 0 -128px |
| + | |
| + | .ui-icon-plus |
| + | background-position: -16px -128px |
| + | |
| + | .ui-icon-plusthick |
| + | background-position: -32px -128px |
| + | |
| + | .ui-icon-minus |
| + | background-position: -48px -128px |
| + | |
| + | .ui-icon-minusthick |
| + | background-position: -64px -128px |
| + | |
| + | .ui-icon-close |
| + | background-position: -80px -128px |
| + | |
| + | .ui-icon-closethick |
| + | background-position: -96px -128px |
| + | |
| + | .ui-icon-key |
| + | background-position: -112px -128px |
| + | |
| + | .ui-icon-lightbulb |
| + | background-position: -128px -128px |
| + | |
| + | .ui-icon-scissors |
| + | background-position: -144px -128px |
| + | |
| + | .ui-icon-clipboard |
| + | background-position: -160px -128px |
| + | |
| + | .ui-icon-copy |
| + | background-position: -176px -128px |
| + | |
| + | .ui-icon-contact |
| + | background-position: -192px -128px |
| + | |
| + | .ui-icon-image |
| + | background-position: -208px -128px |
| + | |
| + | .ui-icon-video |
| + | background-position: -224px -128px |
| + | |
| + | .ui-icon-script |
| + | background-position: -240px -128px |
| + | |
| + | .ui-icon-alert |
| + | background-position: 0 -144px |
| + | |
| + | .ui-icon-info |
| + | background-position: -16px -144px |
| + | |
| + | .ui-icon-notice |
| + | background-position: -32px -144px |
| + | |
| + | .ui-icon-help |
| + | background-position: -48px -144px |
| + | |
| + | .ui-icon-check |
| + | background-position: -64px -144px |
| + | |
| + | .ui-icon-bullet |
| + | background-position: -80px -144px |
| + | |
| + | .ui-icon-radio-off |
| + | background-position: -96px -144px |
| + | |
| + | .ui-icon-radio-on |
| + | background-position: -112px -144px |
| + | |
| + | .ui-icon-pin-w |
| + | background-position: -128px -144px |
| + | |
| + | .ui-icon-pin-s |
| + | background-position: -144px -144px |
| + | |
| + | .ui-icon-play |
| + | background-position: 0 -160px |
| + | |
| + | .ui-icon-pause |
| + | background-position: -16px -160px |
| + | |
| + | .ui-icon-seek-next |
| + | background-position: -32px -160px |
| + | |
| + | .ui-icon-seek-prev |
| + | background-position: -48px -160px |
| + | |
| + | .ui-icon-seek-end |
| + | background-position: -64px -160px |
| + | |
| + | .ui-icon-seek-start, .ui-icon-seek-first |
| + | background-position: -80px -160px |
| + | |
| + | /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead |
| + | |
| + | .ui-icon-stop |
| + | background-position: -96px -160px |
| + | |
| + | .ui-icon-eject |
| + | background-position: -112px -160px |
| + | |
| + | .ui-icon-volume-off |
| + | background-position: -128px -160px |
| + | |
| + | .ui-icon-volume-on |
| + | background-position: -144px -160px |
| + | |
| + | .ui-icon-power |
| + | background-position: 0 -176px |
| + | |
| + | .ui-icon-signal-diag |
| + | background-position: -16px -176px |
| + | |
| + | .ui-icon-signal |
| + | background-position: -32px -176px |
| + | |
| + | .ui-icon-battery-0 |
| + | background-position: -48px -176px |
| + | |
| + | .ui-icon-battery-1 |
| + | background-position: -64px -176px |
| + | |
| + | .ui-icon-battery-2 |
| + | background-position: -80px -176px |
| + | |
| + | .ui-icon-battery-3 |
| + | background-position: -96px -176px |
| + | |
| + | .ui-icon-circle-plus |
| + | background-position: 0 -192px |
| + | |
| + | .ui-icon-circle-minus |
| + | background-position: -16px -192px |
| + | |
| + | .ui-icon-circle-close |
| + | background-position: -32px -192px |
| + | |
| + | .ui-icon-circle-triangle-e |
| + | background-position: -48px -192px |
| + | |
| + | .ui-icon-circle-triangle-s |
| + | background-position: -64px -192px |
| + | |
| + | .ui-icon-circle-triangle-w |
| + | background-position: -80px -192px |
| + | |
| + | .ui-icon-circle-triangle-n |
| + | background-position: -96px -192px |
| + | |
| + | .ui-icon-circle-arrow-e |
| + | background-position: -112px -192px |
| + | |
| + | .ui-icon-circle-arrow-s |
| + | background-position: -128px -192px |
| + | |
| + | .ui-icon-circle-arrow-w |
| + | background-position: -144px -192px |
| + | |
| + | .ui-icon-circle-arrow-n |
| + | background-position: -160px -192px |
| + | |
| + | .ui-icon-circle-zoomin |
| + | background-position: -176px -192px |
| + | |
| + | .ui-icon-circle-zoomout |
| + | background-position: -192px -192px |
| + | |
| + | .ui-icon-circle-check |
| + | background-position: -208px -192px |
| + | |
| + | .ui-icon-circlesmall-plus |
| + | background-position: 0 -208px |
| + | |
| + | .ui-icon-circlesmall-minus |
| + | background-position: -16px -208px |
| + | |
| + | .ui-icon-circlesmall-close |
| + | background-position: -32px -208px |
| + | |
| + | .ui-icon-squaresmall-plus |
| + | background-position: -48px -208px |
| + | |
| + | .ui-icon-squaresmall-minus |
| + | background-position: -64px -208px |
| + | |
| + | .ui-icon-squaresmall-close |
| + | background-position: -80px -208px |
| + | |
| + | .ui-icon-grip-dotted-vertical |
| + | background-position: 0 -224px |
| + | |
| + | .ui-icon-grip-dotted-horizontal |
| + | background-position: -16px -224px |
| + | |
| + | .ui-icon-grip-solid-vertical |
| + | background-position: -32px -224px |
| + | |
| + | .ui-icon-grip-solid-horizontal |
| + | background-position: -48px -224px |
| + | |
| + | .ui-icon-gripsmall-diagonal-se |
| + | background-position: -64px -224px |
| + | |
| + | .ui-icon-grip-diagonal-se |
| + | background-position: -80px -224px |
| + | |
| + | /* Misc visuals |
| + | *---------------------------------- |
| + | |
| + | /* Corner radius |
| + | |
| + | .ui-corner-tl |
| + | -moz-border-radius-topleft: 4px |
| + | -webkit-border-top-left-radius: 4px |
| + | border-top-left-radius: 4px |
| + | |
| + | .ui-corner-tr |
| + | -moz-border-radius-topright: 4px |
| + | -webkit-border-top-right-radius: 4px |
| + | border-top-right-radius: 4px |
| + | |
| + | .ui-corner-bl |
| + | -moz-border-radius-bottomleft: 4px |
| + | -webkit-border-bottom-left-radius: 4px |
| + | border-bottom-left-radius: 4px |
| + | |
| + | .ui-corner-br |
| + | -moz-border-radius-bottomright: 4px |
| + | -webkit-border-bottom-right-radius: 4px |
| + | border-bottom-right-radius: 4px |
| + | |
| + | .ui-corner-top |
| + | -moz-border-radius-topleft: 4px |
| + | -webkit-border-top-left-radius: 4px |
| + | border-top-left-radius: 4px |
| + | -moz-border-radius-topright: 4px |
| + | -webkit-border-top-right-radius: 4px |
| + | border-top-right-radius: 4px |
| + | |
| + | .ui-corner-bottom |
| + | -moz-border-radius-bottomleft: 4px |
| + | -webkit-border-bottom-left-radius: 4px |
| + | border-bottom-left-radius: 4px |
| + | -moz-border-radius-bottomright: 4px |
| + | -webkit-border-bottom-right-radius: 4px |
| + | border-bottom-right-radius: 4px |
| + | |
| + | .ui-corner-right |
| + | -moz-border-radius-topright: 4px |
| + | -webkit-border-top-right-radius: 4px |
| + | border-top-right-radius: 4px |
| + | -moz-border-radius-bottomright: 4px |
| + | -webkit-border-bottom-right-radius: 4px |
| + | border-bottom-right-radius: 4px |
| + | |
| + | .ui-corner-left |
| + | -moz-border-radius-topleft: 4px |
| + | -webkit-border-top-left-radius: 4px |
| + | border-top-left-radius: 4px |
| + | -moz-border-radius-bottomleft: 4px |
| + | -webkit-border-bottom-left-radius: 4px |
| + | border-bottom-left-radius: 4px |
| + | |
| + | .ui-corner-all |
| + | -moz-border-radius: 4px |
| + | -webkit-border-radius: 4px |
| + | border-radius: 4px |
| + | |
| + | /* Overlays |
| + | |
| + | .ui-widget-overlay |
| + | background: #666666 url(/images/cms/jquery_ui/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat |
| + | opacity: .50 |
| + | filter: Alpha(Opacity = 50) |
| + | |
| + | .ui-widget-shadow |
| + | margin: -5px 0 0 -5px |
| + | padding: 5px |
| + | background: black url(/images/cms/jquery_ui/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x |
| + | opacity: .20 |
| + | filter: Alpha(Opacity = 20) |
| + | -moz-border-radius: 5px |
| + | -webkit-border-radius: 5px |
| + | border-radius: 5px |
| + | |
| + | /* |
| + | * * jQuery UI Datepicker @VERSION |
| + | * * |
| + | * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) |
| + | * * Dual licensed under the MIT or GPL Version 2 licenses. |
| + | * * http://jquery.org/license |
| + | * * |
| + | * * http://docs.jquery.com/UI/Datepicker#theming |
| + | |
| + | .ui-datepicker |
| + | width: 17em |
| + | padding: .2em .2em 0 |
| + | .ui-datepicker-header |
| + | position: relative |
| + | padding: .2em 0 |
| + | .ui-datepicker-prev, .ui-datepicker-next |
| + | position: absolute |
| + | top: 2px |
| + | width: 1.8em |
| + | height: 1.8em |
| + | .ui-datepicker-prev-hover, .ui-datepicker-next-hover |
| + | top: 1px |
| + | .ui-datepicker-prev |
| + | left: 2px |
| + | .ui-datepicker-next |
| + | right: 2px |
| + | .ui-datepicker-prev-hover |
| + | left: 1px |
| + | .ui-datepicker-next-hover |
| + | right: 1px |
| + | .ui-datepicker-prev span, .ui-datepicker-next span |
| + | display: block |
| + | position: absolute |
| + | left: 50% |
| + | margin-left: -8px |
| + | top: 50% |
| + | margin-top: -8px |
| + | .ui-datepicker-title |
| + | margin: 0 2.3em |
| + | line-height: 1.8em |
| + | text-align: center |
| + | select |
| + | font-size: 1em |
| + | margin: 1px 0 |
| + | select |
| + | &.ui-datepicker-month-year |
| + | width: 100% |
| + | &.ui-datepicker-month, &.ui-datepicker-year |
| + | width: 49% |
| + | table |
| + | width: 100% |
| + | font-size: .9em |
| + | border-collapse: collapse |
| + | margin: 0 0 .4em |
| + | th |
| + | padding: .7em .3em |
| + | text-align: center |
| + | font-weight: bold |
| + | border: 0 |
| + | td |
| + | border: 0 |
| + | padding: 1px |
| + | span, a |
| + | display: block |
| + | padding: .2em |
| + | text-align: right |
| + | text-decoration: none |
| + | .ui-datepicker-buttonpane |
| + | background-image: none |
| + | margin: .7em 0 0 0 |
| + | padding: 0 .2em |
| + | border-left: 0 |
| + | border-right: 0 |
| + | border-bottom: 0 |
| + | button |
| + | float: right |
| + | margin: .5em .2em .4em |
| + | cursor: pointer |
| + | padding: .2em .6em .3em .6em |
| + | width: auto |
| + | overflow: visible |
| + | &.ui-datepicker-current |
| + | float: left |
| + | &.ui-datepicker-multi |
| + | width: auto |
| + | |
| + | /* with multiple calendars |
| + | |
| + | .ui-datepicker-multi .ui-datepicker-group |
| + | float: left |
| + | table |
| + | width: 95% |
| + | margin: 0 auto .4em |
| + | |
| + | .ui-datepicker-multi-2 .ui-datepicker-group |
| + | width: 50% |
| + | |
| + | .ui-datepicker-multi-3 .ui-datepicker-group |
| + | width: 33.3% |
| + | |
| + | .ui-datepicker-multi-4 .ui-datepicker-group |
| + | width: 25% |
| + | |
| + | .ui-datepicker-multi |
| + | .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-group-middle .ui-datepicker-header |
| + | border-left-width: 0 |
| + | .ui-datepicker-buttonpane |
| + | clear: left |
| + | |
| + | .ui-datepicker-row-break |
| + | clear: both |
| + | width: 100% |
| + | |
| + | /* RTL support |
| + | |
| + | .ui-datepicker-rtl |
| + | direction: rtl |
| + | .ui-datepicker-prev |
| + | right: 2px |
| + | left: auto |
| + | .ui-datepicker-next |
| + | left: 2px |
| + | right: auto |
| + | .ui-datepicker-prev:hover |
| + | right: 1px |
| + | left: auto |
| + | .ui-datepicker-next:hover |
| + | left: 1px |
| + | right: auto |
| + | .ui-datepicker-buttonpane |
| + | clear: right |
| + | button |
| + | float: left |
| + | &.ui-datepicker-current |
| + | float: right |
| + | .ui-datepicker-group |
| + | float: right |
| + | .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-group-middle .ui-datepicker-header |
| + | border-right-width: 0 |
| + | border-left-width: 1px |
| + | |
| + | /* IE6 IFRAME FIX (taken from datepicker 1.5.3 |
| + | |
| + | .ui-datepicker-cover |
| + | display: none |
| + | /*sorry for IE5 |
| + | display/**/: block |
| + | /*sorry for IE5 |
| + | position: absolute |
| + | /*must have |
| + | z-index: -1 |
| + | /*must have |
| + | filter: mask() |
| + | /*must have |
| + | top: -4px |
| + | /*must have |
| + | left: -4px |
| + | /*must have |
| + | width: 200px |
| + | /*must have |
| + | height: 200px |
| + | /*must have |
test/fixtures/cms_assets.yml
+0
-0
test/fixtures/cms_blocks.yml
+37
-0
| @@ | @@ -0,0 +1,37 @@ |
| + | default_block_header: |
| + | cms_page: default |
| + | label: header |
| + | content_string: /block:header/ |
| + | |
| + | default_page_block_default: |
| + | cms_page: default |
| + | label: default |
| + | content_text: /page_block:default/ |
| + | |
| + | default_page_block_footer: |
| + | cms_page: default |
| + | label: footer |
| + | content_text: /page_block:footer/ |
| + | |
| + | complex_page_block_header: |
| + | cms_page: complex |
| + | label: header |
| + | content_string: /block:header/ |
| + | |
| + | complex_page_block_left_column: |
| + | cms_page: complex |
| + | label: left_column |
| + | content_text: |- |
| + | /page_block:left_column/ {{ cms_snippet:complex_snippet }} |
| + | |
| + | complex_page_block_right_column: |
| + | cms_page: complex |
| + | label: right_column |
| + | content_text: |- |
| + | /page_block:right_column/ {{ cms_partial:complex_page/example }} |
| + | |
| + | complex_page_block_footer: |
| + | cms_page: complex |
| + | label: footer |
| + | content_text: /page_block:footer/ |
| + | |
test/fixtures/cms_categories.yml
+20
-0
| @@ | @@ -0,0 +1,20 @@ |
| + | category_1: &category |
| + | label: Category 1 |
| + | slug: category_1 |
| + | parent_id: |
| + | description: Some Category Description |
| + | |
| + | category_2: |
| + | label: Category 2 |
| + | slug: category_2 |
| + | |
| + | category_2_1: |
| + | label: Category 2.1 |
| + | slug: category_2_1 |
| + | parent: category_2 |
| + | |
| + | category_2_2: |
| + | label: Category 2.2 |
| + | slug: category_2_2 |
| + | parent: category_2 |
| + | |
test/fixtures/cms_layouts.yml
+41
-0
| @@ | @@ -0,0 +1,41 @@ |
| + | default: |
| + | label: Default Layout |
| + | parent: |
| + | children_count: 1 |
| + | position: 0 |
| + | is_extendable: 1 |
| + | content: |- |
| + | {{ cms_block:header:string }}{{ cms_page_block:default:text }}{{ cms_page_block:footer:text }} |
| + | |
| + | nested: |
| + | label: Nested Layout |
| + | parent: default |
| + | content: |- |
| + | {{ cms_page_block:left_column:text }}{{ cms_page_block:right_column:text }}{{ cms_snippet:complex_snippet }} |
| + | |
| + | identical_tags: |
| + | label: Layout with identical tags |
| + | position: 1 |
| + | content: |- |
| + | This is a layout that has tags that share same signature |
| + | Techincally we need to report that there's only one tag |
| + | We don't really care how many times it's mentioned |
| + | {{ cms_block:my_block_1:text }} |
| + | {{ cms_block:my_block_1:string }} |
| + | and another set |
| + | {{ cms_block:my_block_2:integer }} |
| + | {{ cms_block:my_block_2:string }} |
| + | and a proper, singular one |
| + | {{ cms_block:my_block_3:boolean}} |
| + | |
| + | all_included_tags: |
| + | label: Layout with all tags |
| + | position: 2 |
| + | content: |- |
| + | Block: {{ cms_block:test_block:string }} |
| + | PageBlock: {{ cms_page_block:test_page_block:string }} |
| + | Snippet: {{ cms_snippet:test_snippet }} |
| + | Partial: {{ cms_partial:content/test_partial }} |
| + | Helper: {{ cms_helper:test_helper }} |
| + | Fake: {{ cms_fake:not_real:whatever }} |
| + | |
test/fixtures/cms_page_categorizations.yml
+16
-0
| @@ | @@ -0,0 +1,16 @@ |
| + | page_category_1: |
| + | cms_page: default |
| + | cms_category: category_2 |
| + | |
| + | page_category_2: |
| + | cms_page: default |
| + | cms_category: category_2_1 |
| + | |
| + | page_category_3: |
| + | cms_page: default |
| + | cms_category: category_2_2 |
| + | |
| + | page_category_4: |
| + | cms_page: complex |
| + | cms_category: category_2 |
| + | |
test/fixtures/cms_pages.yml
+58
-0
| @@ | @@ -0,0 +1,58 @@ |
| + | default: &page |
| + | label: Home Page |
| + | cms_layout: default |
| + | parent: |
| + | slug: |
| + | full_path: "" |
| + | children_count: 1 |
| + | position: 0 |
| + | published: true |
| + | excluded_from_nav: false |
| + | |
| + | complex: |
| + | <<: *page |
| + | parent: default |
| + | label: Complex Page |
| + | cms_layout: nested |
| + | slug: complex-page |
| + | full_path: 'complex-page' |
| + | |
| + | complex2: |
| + | <<: *page |
| + | parent: default |
| + | label: Complex 2nd Page |
| + | cms_layout: nested |
| + | slug: complex-page-2 |
| + | full_path: 'complex-page-2' |
| + | |
| + | unpublished: |
| + | <<: *page |
| + | parent: default |
| + | label: Unpublished Page |
| + | cms_layout: default |
| + | slug: unpublished |
| + | full_path: 'unpublished' |
| + | published: 0 |
| + | |
| + | under_development: |
| + | <<: *page |
| + | parent: default |
| + | label: Page under development |
| + | slug: 'under-development' |
| + | full_path: 'under-development' |
| + | |
| + | descendant1: |
| + | <<: *page |
| + | parent: complex |
| + | label: First Descendant Page |
| + | cms_layout: default |
| + | slug: first-descendant |
| + | full_path: 'complex-page/first-descendant' |
| + | |
| + | descendant2: |
| + | <<: *page |
| + | parent: descendant1 |
| + | label: Second Descendant Page |
| + | cms_layout: default |
| + | slug: second-descendant |
| + | full_path: 'complex-page/first-descendant/second-descendant' |
test/fixtures/cms_sites.yml
+11
-0
| @@ | @@ -0,0 +1,11 @@ |
| + | # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html |
| + | |
| + | # This model initially had no columns defined. If you add columns to the |
| + | # model remove the '{}' from the fixture names and add the columns immediately |
| + | # below each fixture, per the syntax in the comments below |
| + | # |
| + | one: {} |
| + | # column: value |
| + | # |
| + | two: {} |
| + | # column: value |
test/fixtures/cms_snippets.yml
+6
-1
| @@ | @@ -1,3 +1,8 @@ |
| default: | |
| label: default_snippet | |
| - | content: snippet content |
| \ No newline at end of file | |
| + | content: snippet content |
| + | |
| + | |
| + | complex: |
| + | label: complex_snippet |
| + | content: /complex snippet/ |
| \ No newline at end of file | |
test/functional/cms_admin/base_controller_test.rb
+11
-4
| @@ | @@ -1,8 +1,15 @@ |
| - | require 'test_helper' |
| + | require File.dirname(__FILE__) + '/../../test_helper' |
| class CmsAdmin::BaseControllerTest < ActionController::TestCase | |
| - | # Replace this with your real tests. |
| - | test "the truth" do |
| - | assert true |
| + | |
| + | def setup |
| + | http_auth |
| end | |
| + | |
| + | def test_index |
| + | get :index |
| + | assert_redirected_to cms_admin_pages_path |
| + | end |
| + | |
| + | |
| end | |
test/functional/cms_admin/categories_controller_test.rb
+87
-0
| @@ | @@ -0,0 +1,87 @@ |
| + | require File.dirname(__FILE__) + '/../../test_helper' |
| + | |
| + | class CmsAdmin::CategoriesControllerTest < ActionController::TestCase |
| + | |
| + | def setup |
| + | http_auth |
| + | end |
| + | |
| + | def test_get_index |
| + | get :index |
| + | assert_response :success |
| + | assert assigns(:cms_categories) |
| + | end |
| + | |
| + | def test_get_new |
| + | get :new |
| + | assert_response :success |
| + | end |
| + | |
| + | def test_get_show |
| + | get :show, :id => cms_categories(:category_2) |
| + | assert_response :success |
| + | assert assigns(:cms_category) |
| + | end |
| + | |
| + | def test_get_edit |
| + | get :edit, :id => cms_categories(:category_1) |
| + | assert_response :success |
| + | assert assigns(:cms_category) |
| + | end |
| + | |
| + | def test_create |
| + | assert_difference 'CmsCategory.count', 1 do |
| + | post :create, :cms_category => { |
| + | :label => 'Category 1', |
| + | :description => 'This is a category', |
| + | } |
| + | end |
| + | assert_redirected_to edit_cms_admin_category_path(assigns(:cms_category)) |
| + | assert_equal 'Category created', flash[:notice] |
| + | end |
| + | |
| + | def test_create_fail |
| + | #assert_no_difference 'CmsCategory.count' do |
| + | post :create, :cms_category => { |
| + | :label => '', |
| + | :description => 'This is a category', |
| + | } |
| + | #end |
| + | #assert_response :success |
| + | #assert_template 'new' |
| + | #assert assigns(:cms_category).errors[:label] |
| + | end |
| + | |
| + | def test_update |
| + | category = cms_categories(:category_1) |
| + | put :update, :id => category, :cms_category => { |
| + | :label => 'Category 2', |
| + | :description => 'New Description' |
| + | } |
| + | assert_redirected_to edit_cms_admin_category_path(category) |
| + | category.reload |
| + | assert_equal 'Category 2', category.label |
| + | assert_equal 'New Description', category.description |
| + | assert_equal 'Category updated', flash[:notice] |
| + | end |
| + | |
| + | def test_update_fail |
| + | category = cms_categories(:category_1) |
| + | put :update, :id => category, :cms_category => { |
| + | :label => '', |
| + | :description => 'New Description' |
| + | } |
| + | assert_response :success |
| + | assert_template 'edit' |
| + | assert assigns(:cms_category).errors[:label] |
| + | end |
| + | |
| + | def test_destroy |
| + | assert_difference 'CmsCategory.count', -1 do |
| + | delete :destroy, :id => cms_categories(:category_1) |
| + | assert_redirected_to cms_admin_categories_path |
| + | assert_equal 'Category deleted', flash[:notice] |
| + | end |
| + | end |
| + | end |
| + | |
test/functional/cms_admin/layouts_controller_test.rb
+83
-4
| @@ | @@ -1,8 +1,87 @@ |
| - | require 'test_helper' |
| + | require File.dirname(__FILE__) + '/../../test_helper' |
| class CmsAdmin::LayoutsControllerTest < ActionController::TestCase | |
| - | # Replace this with your real tests. |
| - | test "the truth" do |
| - | assert true |
| + | |
| + | def setup |
| + | http_auth |
| + | end |
| + | |
| + | def test_get_index |
| + | get :index |
| + | assert_response :success |
| + | assert assigns(:cms_layouts) |
| + | end |
| + | |
| + | def test_get_new |
| + | get :new |
| + | assert_response :success |
| + | end |
| + | |
| + | def test_get_edit |
| + | get :edit, :id => cms_layouts(:default) |
| + | assert_response :success |
| + | assert assigns(:cms_layout) |
| + | end |
| + | |
| + | def test_create |
| + | assert_difference 'CmsLayout.count' do |
| + | post :create, :cms_layout => { |
| + | :label => 'Test Layout', |
| + | :parent_id => '', |
| + | :app_layout => '', |
| + | :content => 'Test content {{ cms_block:test_block:text }}' |
| + | } |
| + | assert_response :redirect |
| + | assert_redirected_to edit_cms_admin_layout_path(assigns(:cms_layout)) |
| + | assert_equal 'Layout created', flash[:notice] |
| + | end |
| + | end |
| + | |
| + | def test_update |
| + | layout = cms_layouts(:default) |
| + | |
| + | assert_difference 'CmsBlock.count', layout.cms_pages.count do |
| + | put :update, :id => layout, :cms_layout => { |
| + | :label => 'New Test Label', |
| + | :content => '{{ cms_block:completely_new_block:string }}' |
| + | } |
| + | assert_response :redirect |
| + | assert_redirected_to edit_cms_admin_layout_path(assigns(:cms_layout)) |
| + | assert_equal 'Layout updated', flash[:notice] |
| + | |
| + | layout.reload |
| + | assert_equal 'New Test Label', layout.label |
| + | assert_equal '{{ cms_block:completely_new_block:string }}', layout.content |
| + | end |
| + | end |
| + | |
| + | def test_destroy |
| + | layout = cms_layouts(:default) |
| + | assert !(layout_pages = layout.cms_pages).blank? |
| + | |
| + | assert_equal 1, layout.descendants.size |
| + | |
| + | assert_difference 'CmsLayout.count', -2 do |
| + | assert_no_difference ['CmsPage.count', 'CmsBlock.count'] do |
| + | delete :destroy, :id => layout |
| + | assert_response :redirect |
| + | assert_redirected_to cms_admin_layouts_path |
| + | assert_equal 'Layout removed', flash[:notice] |
| + | |
| + | layout_pages.each do |page| |
| + | assert !page.cms_layout |
| + | end |
| + | end |
| + | end |
| + | end |
| + | |
| + | def test_toggle |
| + | assert !session[:cms_layout] |
| + | # Expand |
| + | post :toggle, :id => cms_layouts(:default) |
| + | assert session[:cms_layout].include?(cms_layouts(:default).id) |
| + | # Collapse |
| + | post :toggle, :id => cms_layouts(:default) |
| + | assert !session[:cms_layout].include?(cms_layouts(:default).id) |
| end | |
| end | |
test/functional/cms_admin/pages_controller_test.rb
+134
-4
| @@ | @@ -1,8 +1,138 @@ |
| - | require 'test_helper' |
| + | require File.dirname(__FILE__) + '/../../test_helper' |
| class CmsAdmin::PagesControllerTest < ActionController::TestCase | |
| - | # Replace this with your real tests. |
| - | test "the truth" do |
| - | assert true |
| + | |
| + | def setup |
| + | http_auth |
| + | end |
| + | |
| + | def test_get_index |
| + | get :index |
| + | assert_response :success |
| + | assert assigns(:cms_pages) |
| + | end |
| + | |
| + | def test_get_new |
| + | get :new |
| + | assert_response :success |
| + | end |
| + | |
| + | def test_get_edit |
| + | get :edit, :id => cms_pages(:default) |
| + | assert_response :success |
| + | assert assigns(:cms_page) |
| + | end |
| + | |
| + | def test_create |
| + | assert_difference 'CmsPage.count' do |
| + | assert_difference 'CmsBlock.count', 3 do |
| + | post :create, :cms_page => { |
| + | :label => 'Test Page', |
| + | :slug => 'test_page', |
| + | :cms_layout => cms_layouts(:default), |
| + | :blocks => { |
| + | :header => { :content_string => 'Test Header' }, |
| + | :default => { :content_text => 'Test Content' }, |
| + | :footer => { :content_text => 'Test Footer' } |
| + | } |
| + | } |
| + | assert_response :redirect |
| + | assert_redirected_to edit_cms_admin_page_path(assigns(:cms_page)) |
| + | assert_equal 'Page created', flash[:notice] |
| + | |
| + | assert page = CmsPage.find_by_slug('test_page') |
| + | assert_equal 'Test Header', page.cms_block_content(:header, :content_string) |
| + | assert_equal 'Test Content', page.cms_block_content(:default, :content_text) |
| + | assert_equal 'Test Footer', page.cms_block_content(:footer, :content_text) |
| + | end |
| + | end |
| + | end |
| + | |
| + | def test_update |
| + | page = cms_pages(:complex) |
| + | |
| + | assert_difference 'CmsBlock.count' do |
| + | put :update, :id => page, :cms_page => { |
| + | :label => 'New Test Page', |
| + | :slug => 'new_test_page', |
| + | :cms_layout => cms_layouts(:default), |
| + | :blocks => { |
| + | :header => { :content_string => 'New Test Header' }, |
| + | :default => { :content_text => 'New Test Content' }, |
| + | :footer => { :content_text => 'New Test Footer' } |
| + | } |
| + | } |
| + | assert_response :redirect |
| + | assert_redirected_to edit_cms_admin_page_path(assigns(:cms_page)) |
| + | assert_equal 'Page updated', flash[:notice] |
| + | |
| + | assert page = CmsPage.find_by_slug('new_test_page') |
| + | assert_equal 'New Test Header', page.cms_block_content(:header, :content_string) |
| + | assert_equal 'New Test Content', page.cms_block_content(:default, :content_text) |
| + | assert_equal 'New Test Footer', page.cms_block_content(:footer, :content_text) |
| + | |
| + | # old blocks are still there: |
| + | assert !page.cms_block_content(:left_column, :content_text).blank? |
| + | assert !page.cms_block_content(:right_column, :content_text).blank? |
| + | end |
| + | end |
| + | |
| + | def test_destroy |
| + | page = cms_pages(:default) |
| + | |
| + | assert_difference 'CmsPage.count', -7 do |
| + | assert_difference 'CmsBlock.count', -7 do |
| + | delete :destroy, :id => page |
| + | assert_response :redirect |
| + | assert_redirected_to cms_admin_pages_path |
| + | assert_equal 'Page removed', flash[:notice] |
| + | end |
| + | end |
| + | end |
| + | |
| + | def test_preview_for_create |
| + | assert_no_difference 'CmsPage.count' do |
| + | assert_no_difference 'CmsBlock.count' do |
| + | post :create, :preview => 'Preview Button', :cms_page => { |
| + | :label => 'Test Page', |
| + | :slug => 'test_page', |
| + | :cms_layout => cms_layouts(:default), |
| + | :blocks => { |
| + | :header => { :content_string => 'Test Header' }, |
| + | :default => { :content_text => 'Test Content' }, |
| + | :footer => { :content_text => 'Test Footer' } |
| + | } |
| + | } |
| + | assert_response :success |
| + | end |
| + | end |
| + | end |
| + | |
| + | def test_preview_for_update |
| + | page = cms_pages(:complex) |
| + | |
| + | assert_no_difference 'CmsBlock.count' do |
| + | put :update, :preview => 'Preview Button', :id => page, :cms_page => { |
| + | :label => 'New Test Page', |
| + | :slug => 'new_test_page', |
| + | :cms_layout => cms_layouts(:default), |
| + | :blocks => { |
| + | :header => { :content_string => 'New Test Header' }, |
| + | :default => { :content_text => 'New Test Content' }, |
| + | :footer => { :content_text => 'New Test Footer' } |
| + | } |
| + | } |
| + | assert_response :success |
| + | end |
| + | end |
| + | |
| + | def test_toggle |
| + | assert !session[:cms_page] |
| + | # Expand |
| + | post :toggle, :id => cms_pages(:default) |
| + | assert session[:cms_page].include?(cms_pages(:default).id) |
| + | # Collapse |
| + | post :toggle, :id => cms_pages(:default) |
| + | assert !session[:cms_page].include?(cms_pages(:default).id) |
| end | |
| end | |
test/functional/cms_admin/sites_controller_test.rb
+8
-0
| @@ | @@ -0,0 +1,8 @@ |
| + | require 'test_helper' |
| + | |
| + | class CmsAdmin::SitesControllerTest < ActionController::TestCase |
| + | # Replace this with your real tests. |
| + | test "the truth" do |
| + | assert true |
| + | end |
| + | end |
test/functional/cms_admin/snippets_controller_test.rb
+19
-20
| @@ | @@ -1,11 +1,11 @@ |
| - | require 'test_helper' |
| + | require File.dirname(__FILE__) + '/../../test_helper' |
| class CmsAdmin::SnippetsControllerTest < ActionController::TestCase | |
| - | |
| + | |
| def setup | |
| - | #http_auth |
| + | http_auth |
| end | |
| - | |
| + | |
| def test_get_index | |
| get :index | |
| assert_response :success | |
| @@ | @@ -17,20 +17,24 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| assert_response :success | |
| end | |
| + | def test_get_edit |
| + | get :edit, :id => cms_snippets(:default) |
| + | assert_response :success |
| + | assert assigns(:cms_snippet) |
| + | end |
| + | |
| def test_create | |
| assert_difference 'CmsSnippet.count' do | |
| - | post :create, :cms_snippet => cms_snippet_params |
| + | post :create, :cms_snippet => { |
| + | :label => 'test_snippet', |
| + | :content => 'test content' |
| + | } |
| + | assert_response :redirect |
| assert_redirected_to edit_cms_admin_snippet_path(assigns(:cms_snippet)) | |
| assert_equal 'Snippet created', flash[:notice] | |
| end | |
| end | |
| - | def test_get_edit |
| - | get :edit, :id => cms_snippets(:default) |
| - | assert_response :success |
| - | assert assigns(:cms_snippet) |
| - | end |
| - | |
| def test_update | |
| snippet = cms_snippets(:default) | |
| @@ | @@ -38,7 +42,8 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| :label => 'new_test_label', | |
| :content => 'new test content' | |
| } | |
| - | assert_redirected_to edit_cms_admin_snippet_path(snippet) |
| + | assert_response :redirect |
| + | assert_redirected_to edit_cms_admin_snippet_path(assigns(:cms_snippet)) |
| assert_equal 'Snippet updated', flash[:notice] | |
| snippet.reload | |
| @@ | @@ -49,16 +54,10 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| def test_destroy | |
| assert_difference 'CmsSnippet.count', -1 do | |
| delete :destroy, :id => cms_snippets(:default) | |
| + | assert_response :redirect |
| assert_redirected_to cms_admin_snippets_path | |
| assert_equal 'Snippet removed', flash[:notice] | |
| end | |
| end | |
| - | |
| - | private |
| - | def cms_snippet_params(options = {}) |
| - | { |
| - | :label => 'test_snippet', |
| - | :content => 'test content' |
| - | }.merge(options) |
| - | end |
| + | |
| end | |
test/functional/cms_content_controller_test.rb
+40
-2
| @@ | @@ -1,8 +1,46 @@ |
| require 'test_helper' | |
| class CmsContentControllerTest < ActionController::TestCase | |
| - | test "GET show" do |
| - | get :show, :path => 'some-page' |
| + | |
| + | def test_get_a_page |
| + | assert cms_pages(:complex).published? |
| + | get :show, :path => %w(complex-page) |
| + | assert_response :success |
| + | assert assigns(:cms_page) |
| + | end |
| + | |
| + | def test_get_a_unpublished_page |
| + | assert !cms_pages(:unpublished).published? |
| + | get :show, :path => %w(unpublished) |
| + | assert_response 404 |
| + | end |
| + | |
| + | def test_get_sitemap |
| + | get :sitemap, :format => 'xml' |
| assert_response :success | |
| + | assert assigns(:cms_pages) |
| + | end |
| + | |
| + | def test_default_404_page |
| + | get :show, :path => %w(some non existing page) |
| + | assert_response 404 |
| + | assert !assigns(:cms_page) |
| + | end |
| + | |
| + | def test_custom_404_page |
| + | cms_page = CmsPage.create!( |
| + | :cms_layout => cms_layouts(:default), |
| + | :label => '404 Page', |
| + | :slug => '404', |
| + | :published => true |
| + | ) |
| + | get :show, :path => %w(some non existing page) |
| + | assert_response 404 |
| + | assert assigns(:cms_page) |
| + | end |
| + | |
| + | def test_get_page_with_extension |
| + | get :show, :path => %w(path to somepage.php?show=1) |
| + | assert_response 404 |
| end | |
| end | |
test/test_helper.rb
+3
-0
| @@ | @@ -10,4 +10,7 @@ class ActiveSupport::TestCase |
| fixtures :all | |
| # Add more helper methods to be used by all tests here... | |
| + | def http_auth |
| + | @request.env['HTTP_AUTHORIZATION'] = "Basic #{Base64.encode64('username:password')}" |
| + | end |
| end | |
test/unit/cms_asset_test.rb
+0
-8
| @@ | @@ -1,8 +0,0 @@ |
| - | require 'test_helper' |
| - | |
| - | class CmsAssetTest < ActiveSupport::TestCase |
| - | # Replace this with your real tests. |
| - | test "the truth" do |
| - | assert true |
| - | end |
| - | end |
test/unit/cms_block_test.rb
+6
-3
| @@ | @@ -1,8 +1,11 @@ |
| require 'test_helper' | |
| class CmsBlockTest < ActiveSupport::TestCase | |
| - | # Replace this with your real tests. |
| - | test "the truth" do |
| - | assert true |
| + | |
| + | def test_fixtures_validity |
| + | CmsBlock.all.each do |block| |
| + | assert block.valid? |
| + | end |
| end | |
| + | |
| end | |
test/unit/cms_category_test.rb
+96
-0
| @@ | @@ -0,0 +1,96 @@ |
| + | require File.dirname(__FILE__) + '/../test_helper' |
| + | |
| + | class CmsCategoryTest < ActiveSupport::TestCase |
| + | |
| + | def test_fixtures_validity |
| + | CmsCategory.all.each do |category| |
| + | assert category.valid?, category.errors.full_messages |
| + | end |
| + | end |
| + | |
| + | def test_should_create_category |
| + | assert_difference 'CmsCategory.count', 1 do |
| + | CmsCategory.create( |
| + | :label => 'Test Category', |
| + | :slug => 'test_category', |
| + | :description => 'Test Description' |
| + | ) |
| + | end |
| + | end |
| + | |
| + | def test_validation_on_blank |
| + | assert_no_difference 'CmsCategory.count' do |
| + | c = CmsCategory.create( |
| + | :label =>'', |
| + | :slug =>'' |
| + | ) |
| + | assert c.errors[:label] |
| + | assert c.errors[:slug] |
| + | end |
| + | end |
| + | |
| + | def test_validation_on_existing_slug |
| + | assert_no_difference 'CmsCategory.count' do |
| + | c = CmsCategory.create( |
| + | :label => 'Test Category', |
| + | :slug => cms_categories(:category_1).slug |
| + | ) |
| + | assert c.errors[:slug] |
| + | end |
| + | end |
| + | |
| + | def test_removing_category_blows_away_children_and_categorizations |
| + | category = cms_categories(:category_2) |
| + | |
| + | assert_equal 2, category.children.count |
| + | |
| + | assert_equal 2, category.cms_page_categorizations.count |
| + | assert_equal 2, category.cms_pages.count |
| + | |
| + | assert_no_difference ['CmsPage.count'] do |
| + | assert_difference ['CmsCategory.count'], -3 do |
| + | assert_difference ['CmsPageCategorization.count'], -4 do # -2 from child categories |
| + | category.destroy |
| + | end |
| + | end |
| + | end |
| + | end |
| + | |
| + | def test_categorized_model_names |
| + | model_names = CmsCategory.categorized_model_names |
| + | assert model_names.include?("CmsPage"), "CmsPage was not listed as categorized" |
| + | assert !model_names.include?("CmsPageCategorization"), "CmsPageCategorizations was listed as categorized" |
| + | assert !model_names.include?("CmsCategory"), "CmsCategory was listed as categorized" |
| + | end |
| + | |
| + | def test_categorized_model_types |
| + | model_types = CmsCategory.categorized_model_types |
| + | assert model_types.include?(CmsPage), "CmsPage was not listed as categorized" |
| + | assert !model_types.include?(CmsPageCategorization), "CmsPageCategorizations was listed as categorized" |
| + | assert !model_types.include?(CmsCategory), "CmsCategory was listed as categorized" |
| + | end |
| + | |
| + | def test_number_of_records |
| + | assert_equal 2, cms_categories(:category_2).number_of_records |
| + | assert_equal 1, cms_categories(:category_2_1).number_of_records |
| + | assert_equal 1, cms_categories(:category_2_2).number_of_records |
| + | assert_equal 0, cms_categories(:category_1).number_of_records |
| + | end |
| + | |
| + | def test_records |
| + | assert cms_categories(:category_2).records[:cms_pages].include?(cms_pages(:default)) |
| + | assert cms_categories(:category_2).records[:cms_pages].include?(cms_pages(:complex)) |
| + | assert cms_categories(:category_2_1).records[:cms_pages].include?(cms_pages(:default)) |
| + | assert cms_categories(:category_2_2).records[:cms_pages].include?(cms_pages(:default)) |
| + | assert cms_categories(:category_1).records[:cms_pages].empty? |
| + | end |
| + | |
| + | |
| + | def test_should_set_slug_if_blank |
| + | c = CmsCategory.new( |
| + | :label => 'Test Category' |
| + | ) |
| + | assert c.valid? |
| + | assert_equal 'test-category', c.slug |
| + | end |
| + | end |
test/unit/cms_layout_test.rb
+39
-3
| @@ | @@ -1,8 +1,44 @@ |
| require 'test_helper' | |
| class CmsLayoutTest < ActiveSupport::TestCase | |
| - | # Replace this with your real tests. |
| - | test "the truth" do |
| - | assert true |
| + | |
| + | def test_fixtures_validity |
| + | CmsLayout.all.each do |layout| |
| + | assert layout.valid?, layout.errors.full_messages |
| + | end |
| end | |
| + | |
| + | def test_nested_layouts |
| + | parent_layout = cms_layouts(:default) |
| + | child_layout = cms_layouts(:nested) |
| + | assert_equal parent_layout, child_layout.parent |
| + | assert parent_layout.is_extendable? |
| + | |
| + | assert_not_equal child_layout.content, child_layout.read_attribute(:content) |
| + | parent_layout_content = '{{ cms_block:header:string }}{{ cms_page_block:default:text }}{{ cms_page_block:footer:text }}' |
| + | child_layout_content = '{{ cms_block:header:string }}{{ cms_page_block:left_column:text }}{{ cms_page_block:right_column:text }}{{ cms_snippet:complex_snippet }}{{ cms_page_block:footer:text }}' |
| + | |
| + | assert_equal parent_layout_content, parent_layout.content |
| + | assert_equal child_layout_content, child_layout.content |
| + | end |
| + | |
| + | def test_adding_new_block_tag_updates_associated_pages |
| + | layout = cms_layouts(:default) |
| + | page = cms_pages(:default) |
| + | assert_equal layout, page.cms_layout |
| + | assert_equal 3, layout.tags.size |
| + | assert_equal 3, layout.tags.select{|t| ['cms_block', 'cms_page_block'].member?(t.tag_type)}.size |
| + | assert_equal 3, page.cms_blocks.count |
| + | |
| + | assert_difference ['layout.tags.size', 'page.cms_blocks.count'] do |
| + | layout.content += "{{cms_block:new_block:string}}" |
| + | layout.save! |
| + | layout.reload |
| + | page.reload |
| + | |
| + | assert layout.tags.collect{|t| t.tag_signature}.member?('cms_block:new_block:string') |
| + | assert page.cms_blocks.with_label('new_block') |
| + | end |
| + | end |
| + | |
| end | |
test/unit/cms_page_categorization_test.rb
+37
-0
| @@ | @@ -0,0 +1,37 @@ |
| + | require 'test_helper' |
| + | |
| + | class CmsPageCategorizationTest < ActiveSupport::TestCase |
| + | |
| + | def test_fixtures_validity |
| + | CmsPageCategorization.all.each do |categorization| |
| + | assert categorization.valid?, categorization.errors.full_messages |
| + | end |
| + | end |
| + | |
| + | def test_creation |
| + | assert_difference 'CmsPageCategorization.count' do |
| + | CmsPageCategorization.create( |
| + | :cms_page => cms_pages(:complex), |
| + | :cms_category => cms_categories(:category_1) |
| + | ) |
| + | end |
| + | end |
| + | |
| + | def test_cascading_creation |
| + | assert_difference 'CmsPageCategorization.count', 2 do |
| + | CmsPageCategorization.create( |
| + | :cms_page => cms_pages(:unpublished), |
| + | :cms_category => cms_categories(:category_2_1) |
| + | ) |
| + | end |
| + | end |
| + | |
| + | def test_cascading_removal |
| + | categorization = cms_page_categorizations(:page_category_1) |
| + | assert_difference 'CmsPageCategorization.count', -3 do |
| + | categorization.destroy |
| + | end |
| + | end |
| + | |
| + | end |
| + | |
test/unit/cms_page_test.rb
+127
-4
| @@ | @@ -1,8 +1,131 @@ |
| - | require 'test_helper' |
| + | require File.dirname(__FILE__) + '/../test_helper' |
| class CmsPageTest < ActiveSupport::TestCase | |
| - | # Replace this with your real tests. |
| - | test "the truth" do |
| - | assert true |
| + | |
| + | def test_initialization |
| + | page = CmsPage.new |
| + | assert page.cms_layout |
| + | assert_equal cms_layouts(:default), CmsLayout.first |
| + | assert_equal cms_layouts(:default), page.cms_layout |
| + | end |
| + | |
| + | def test_initialization_with_parent_page |
| + | assert cms_layouts(:nested), cms_pages(:complex).cms_layout |
| + | |
| + | assert_difference 'CmsPage.find_by_slug("complex-page").children_count', 1 do |
| + | page = CmsPage.new( |
| + | :label => "test child", |
| + | :slug => "test-child", |
| + | :parent => cms_pages(:complex) |
| + | ) |
| + | page.save! |
| + | assert page.cms_layout |
| + | assert_equal cms_pages(:complex).cms_layout, page.cms_layout |
| + | |
| + | end |
| + | end |
| + | |
| + | def test_fixtures_validity |
| + | CmsPage.all.each do |page| |
| + | assert page.valid?, page.errors.full_messages |
| + | end |
| + | end |
| + | |
| + | def test_page_finder_helper |
| + | page = cms_pages(:default) |
| + | assert_equal page, CmsPage[page.slug] |
| + | end |
| + | |
| + | def test_page_rendering |
| + | page = cms_pages(:default) |
| + | assert_equal 3, page.cms_blocks.count |
| + | assert_equal '/page_block:default//page_block:footer/', page.render_content |
| + | end |
| + | |
| + | def test_complex_nested_rendering |
| + | page = cms_pages(:complex) |
| + | assert_equal 4, page.cms_blocks.count |
| + | assert_equal "/page_block:left_column/ /complex snippet//page_block:right_column/ <%= render :partial => 'complex_page/example' %>/complex snippet//page_block:footer/", page.render_content |
| + | end |
| + | |
| + | def test_page_content |
| + | page = cms_pages(:default) |
| + | assert_equal page.content, page.render_content |
| + | end |
| + | |
| + | def test_cms_block_content_method |
| + | page = cms_pages(:default) |
| + | assert !page.cms_block_content(:header, :content_string).blank? |
| + | assert page.cms_block_content(:bogus_label, :content_string).blank? |
| + | end |
| + | |
| + | def test_publishing |
| + | page = cms_pages(:default) |
| + | assert page.published? |
| + | page.update_attribute(:published, false) |
| + | assert !page.published? |
| + | end |
| + | |
| + | def test_excluding_from_nav |
| + | page = cms_pages(:default) |
| + | assert !page.excluded_from_nav? |
| + | page.update_attribute(:excluded_from_nav, true) |
| + | assert page.excluded_from_nav? |
| + | end |
| + | |
| + | def test_slug_changes_on_all_descendants |
| + | page = cms_pages(:complex) |
| + | assert_equal '/complex-page', page.full_path |
| + | |
| + | first_descendant = cms_pages(:descendant1) |
| + | assert_equal '/complex-page/first-descendant', first_descendant.full_path |
| + | |
| + | second_descendant = cms_pages(:descendant2) |
| + | assert_equal '/complex-page/first-descendant/second-descendant', second_descendant.full_path |
| + | |
| + | page.slug = 'complex' |
| + | page.save! |
| + | |
| + | page.reload |
| + | first_descendant.reload |
| + | second_descendant.reload |
| + | |
| + | assert_equal '/complex', page.full_path |
| + | assert_equal '/complex/first-descendant', first_descendant.full_path |
| + | assert_equal '/complex/first-descendant/second-descendant', second_descendant.full_path |
| + | |
| + | end |
| + | |
| + | def test_child_count_updates_on_create |
| + | assert_difference 'CmsPage.find_by_slug("complex-page").children_count', 1 do |
| + | CmsPage.create!( |
| + | :label => "test child", |
| + | :slug => "test-child", |
| + | :parent => cms_pages(:complex) |
| + | ) |
| + | end |
| + | end |
| + | |
| + | def test_child_count_updates_on_destroy |
| + | assert_difference 'CmsPage.find_by_slug("complex-page").children_count', -1 do |
| + | cms_pages(:descendant1).destroy |
| + | end |
| + | end |
| + | |
| + | def test_child_count_updates_on_parent_change |
| + | CmsPage.repair_children_count |
| + | |
| + | assert_equal cms_pages(:complex2).children.count, cms_pages(:complex2).children_count |
| + | assert_equal cms_pages(:complex).children.count, cms_pages(:complex).children_count |
| + | |
| + | assert_difference 'CmsPage.find_by_slug("complex-page").children_count', -1 do |
| + | assert_difference 'CmsPage.find_by_slug("complex-page-2").children_count', 1 do |
| + | pg = CmsPage.find_by_slug('first-descendant') |
| + | pg.parent_id_will_change! |
| + | pg.parent_id = cms_pages(:complex2).id |
| + | pg.save! |
| + | end |
| + | end |
| + | |
| end | |
| end | |
test/unit/cms_site_test.rb
+8
-0
| @@ | @@ -0,0 +1,8 @@ |
| + | require 'test_helper' |
| + | |
| + | class CmsSiteTest < ActiveSupport::TestCase |
| + | # Replace this with your real tests. |
| + | test "the truth" do |
| + | assert true |
| + | end |
| + | end |
test/unit/cms_tag_test.rb
+70
-0
| @@ | @@ -0,0 +1,70 @@ |
| + | require File.dirname(__FILE__) + '/../test_helper' |
| + | |
| + | class CmsTagTest < ActiveSupport::TestCase |
| + | |
| + | def test_tag_parsing |
| + | layout = cms_layouts(:all_included_tags) |
| + | tags = CmsTag::parse_tags(layout.content) |
| + | assert_equal 4, tags.size |
| + | end |
| + | |
| + | def test_block_tag |
| + | layout = cms_layouts(:all_included_tags) |
| + | tag = layout.tags.select{|t| t.tag_signature == 'cms_block:test_block:string'}.first |
| + | assert tag |
| + | assert_equal 'cms_block', tag.tag_type |
| + | assert_equal 'test_block', tag.label |
| + | assert_equal 'string', tag.format |
| + | |
| + | assert_equal 1, tag.class.render_priority |
| + | |
| + | # TODO: content pulling |
| + | end |
| + | |
| + | def test_page_block_tag |
| + | layout = cms_layouts(:all_included_tags) |
| + | tag = layout.tags.select{|t| t.tag_signature == 'cms_page_block:test_page_block:string'}.first |
| + | assert tag |
| + | assert_equal 'cms_page_block', tag.tag_type |
| + | assert_equal 'test_page_block', tag.label |
| + | assert_equal 'string', tag.format |
| + | |
| + | assert_equal 1, tag.class.render_priority |
| + | |
| + | # TODO: content pulling |
| + | end |
| + | |
| + | def test_snippet_tag |
| + | layout = cms_layouts(:all_included_tags) |
| + | tag = layout.tags.select{|t| t.tag_signature == 'cms_snippet:test_snippet'}.first |
| + | assert tag |
| + | assert_equal 'cms_snippet', tag.tag_type |
| + | assert_equal 'test_snippet', tag.label |
| + | |
| + | assert_equal 2, tag.class.render_priority |
| + | |
| + | # TODO: content pulling |
| + | end |
| + | |
| + | def test_partial_tag |
| + | layout = cms_layouts(:all_included_tags) |
| + | tag = layout.tags.select{|t| t.tag_signature == 'cms_partial:content/test_partial'}.first |
| + | assert tag |
| + | assert_equal 'cms_partial', tag.tag_type |
| + | assert_equal 'content/test_partial', tag.label |
| + | |
| + | assert_equal 3, tag.class.render_priority |
| + | assert_equal "<%= render :partial => 'content/test_partial' %>", tag.content |
| + | end |
| + | |
| + | def test_tag_uniqueness |
| + | layout = cms_layouts(:identical_tags) |
| + | assert_equal 3, layout.tags.size |
| + | tag_signatures = %w(cms_block:my_block_1:text cms_block:my_block_2:integer cms_block:my_block_3:boolean) |
| + | layout.tags.each do |tag| |
| + | assert tag_signatures.member?(tag.tag_signature) |
| + | assert_equal tag.class, CmsTag::Block |
| + | end |
| + | end |
| + | |
| + | end |
vendor/plugins/acts_as_tree/README
+26
-0
| @@ | @@ -0,0 +1,26 @@ |
| + | acts_as_tree |
| + | ============ |
| + | |
| + | Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children |
| + | association. This requires that you have a foreign key column, which by default is called +parent_id+. |
| + | |
| + | class Category < ActiveRecord::Base |
| + | acts_as_tree :order => "name" |
| + | end |
| + | |
| + | Example: |
| + | root |
| + | \_ child1 |
| + | \_ subchild1 |
| + | \_ subchild2 |
| + | |
| + | root = Category.create("name" => "root") |
| + | child1 = root.children.create("name" => "child1") |
| + | subchild1 = child1.children.create("name" => "subchild1") |
| + | |
| + | root.parent # => nil |
| + | child1.parent # => root |
| + | root.children # => [child1] |
| + | root.children.first.children.first # => subchild1 |
| + | |
| + | Copyright (c) 2007 David Heinemeier Hansson, released under the MIT license |
| \ No newline at end of file | |
vendor/plugins/acts_as_tree/Rakefile
+22
-0
| @@ | @@ -0,0 +1,22 @@ |
| + | require 'rake' |
| + | require 'rake/testtask' |
| + | require 'rake/rdoctask' |
| + | |
| + | desc 'Default: run unit tests.' |
| + | task :default => :test |
| + | |
| + | desc 'Test acts_as_tree plugin.' |
| + | Rake::TestTask.new(:test) do |t| |
| + | t.libs << 'lib' |
| + | t.pattern = 'test/**/*_test.rb' |
| + | t.verbose = true |
| + | end |
| + | |
| + | desc 'Generate documentation for acts_as_tree plugin.' |
| + | Rake::RDocTask.new(:rdoc) do |rdoc| |
| + | rdoc.rdoc_dir = 'rdoc' |
| + | rdoc.title = 'acts_as_tree' |
| + | rdoc.options << '--line-numbers' << '--inline-source' |
| + | rdoc.rdoc_files.include('README') |
| + | rdoc.rdoc_files.include('lib/**/*.rb') |
| + | end |
vendor/plugins/acts_as_tree/init.rb
+1
-0
| @@ | @@ -0,0 +1 @@ |
| + | ActiveRecord::Base.send :include, ActiveRecord::Acts::Tree |
active_record/acts/tree.rb b/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb
+96
-0
| @@ | @@ -0,0 +1,96 @@ |
| + | module ActiveRecord |
| + | module Acts |
| + | module Tree |
| + | def self.included(base) |
| + | base.extend(ClassMethods) |
| + | end |
| + | |
| + | # Specify this +acts_as+ extension if you want to model a tree structure by providing a parent association and a children |
| + | # association. This requires that you have a foreign key column, which by default is called +parent_id+. |
| + | # |
| + | # class Category < ActiveRecord::Base |
| + | # acts_as_tree :order => "name" |
| + | # end |
| + | # |
| + | # Example: |
| + | # root |
| + | # \_ child1 |
| + | # \_ subchild1 |
| + | # \_ subchild2 |
| + | # |
| + | # root = Category.create("name" => "root") |
| + | # child1 = root.children.create("name" => "child1") |
| + | # subchild1 = child1.children.create("name" => "subchild1") |
| + | # |
| + | # root.parent # => nil |
| + | # child1.parent # => root |
| + | # root.children # => [child1] |
| + | # root.children.first.children.first # => subchild1 |
| + | # |
| + | # In addition to the parent and children associations, the following instance methods are added to the class |
| + | # after calling <tt>acts_as_tree</tt>: |
| + | # * <tt>siblings</tt> - Returns all the children of the parent, excluding the current node (<tt>[subchild2]</tt> when called on <tt>subchild1</tt>) |
| + | # * <tt>self_and_siblings</tt> - Returns all the children of the parent, including the current node (<tt>[subchild1, subchild2]</tt> when called on <tt>subchild1</tt>) |
| + | # * <tt>ancestors</tt> - Returns all the ancestors of the current node (<tt>[child1, root]</tt> when called on <tt>subchild2</tt>) |
| + | # * <tt>root</tt> - Returns the root of the current node (<tt>root</tt> when called on <tt>subchild2</tt>) |
| + | module ClassMethods |
| + | # Configuration options are: |
| + | # |
| + | # * <tt>foreign_key</tt> - specifies the column name to use for tracking of the tree (default: +parent_id+) |
| + | # * <tt>order</tt> - makes it possible to sort the children according to this SQL snippet. |
| + | # * <tt>counter_cache</tt> - keeps a count in a +children_count+ column if set to +true+ (default: +false+). |
| + | def acts_as_tree(options = {}) |
| + | configuration = { :foreign_key => "parent_id", :order => nil, :counter_cache => nil } |
| + | configuration.update(options) if options.is_a?(Hash) |
| + | |
| + | belongs_to :parent, :class_name => name, :foreign_key => configuration[:foreign_key], :counter_cache => configuration[:counter_cache] |
| + | has_many :children, :class_name => name, :foreign_key => configuration[:foreign_key], :order => configuration[:order], :dependent => :destroy |
| + | |
| + | class_eval <<-EOV |
| + | include ActiveRecord::Acts::Tree::InstanceMethods |
| + | |
| + | def self.roots |
| + | find(:all, :conditions => "#{configuration[:foreign_key]} IS NULL", :order => #{configuration[:order].nil? ? "nil" : %Q{"#{configuration[:order]}"}}) |
| + | end |
| + | |
| + | def self.root |
| + | find(:first, :conditions => "#{configuration[:foreign_key]} IS NULL", :order => #{configuration[:order].nil? ? "nil" : %Q{"#{configuration[:order]}"}}) |
| + | end |
| + | EOV |
| + | end |
| + | end |
| + | |
| + | module InstanceMethods |
| + | # Returns list of ancestors, starting from parent until root. |
| + | # |
| + | # subchild1.ancestors # => [child1, root] |
| + | def ancestors |
| + | node, nodes = self, [] |
| + | nodes << node = node.parent while node.parent |
| + | nodes |
| + | end |
| + | |
| + | # Returns the root node of the tree. |
| + | def root |
| + | node = self |
| + | node = node.parent while node.parent |
| + | node |
| + | end |
| + | |
| + | # Returns all siblings of the current node. |
| + | # |
| + | # subchild1.siblings # => [subchild2] |
| + | def siblings |
| + | self_and_siblings - [self] |
| + | end |
| + | |
| + | # Returns all siblings and a reference to the current node. |
| + | # |
| + | # subchild1.self_and_siblings # => [subchild1, subchild2] |
| + | def self_and_siblings |
| + | parent ? parent.children : self.class.roots |
| + | end |
| + | end |
| + | end |
| + | end |
| + | end |
vendor/plugins/acts_as_tree/test/abstract_unit.rb
+0
-0
vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb
+219
-0
| @@ | @@ -0,0 +1,219 @@ |
| + | require 'test/unit' |
| + | |
| + | require 'rubygems' |
| + | require 'active_record' |
| + | |
| + | $:.unshift File.dirname(__FILE__) + '/../lib' |
| + | require File.dirname(__FILE__) + '/../init' |
| + | |
| + | class Test::Unit::TestCase |
| + | def assert_queries(num = 1) |
| + | $query_count = 0 |
| + | yield |
| + | ensure |
| + | assert_equal num, $query_count, "#{$query_count} instead of #{num} queries were executed." |
| + | end |
| + | |
| + | def assert_no_queries(&block) |
| + | assert_queries(0, &block) |
| + | end |
| + | end |
| + | |
| + | ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :dbfile => ":memory:") |
| + | |
| + | # AR keeps printing annoying schema statements |
| + | $stdout = StringIO.new |
| + | |
| + | def setup_db |
| + | ActiveRecord::Base.logger |
| + | ActiveRecord::Schema.define(:version => 1) do |
| + | create_table :mixins do |t| |
| + | t.column :type, :string |
| + | t.column :parent_id, :integer |
| + | end |
| + | end |
| + | end |
| + | |
| + | def teardown_db |
| + | ActiveRecord::Base.connection.tables.each do |table| |
| + | ActiveRecord::Base.connection.drop_table(table) |
| + | end |
| + | end |
| + | |
| + | class Mixin < ActiveRecord::Base |
| + | end |
| + | |
| + | class TreeMixin < Mixin |
| + | acts_as_tree :foreign_key => "parent_id", :order => "id" |
| + | end |
| + | |
| + | class TreeMixinWithoutOrder < Mixin |
| + | acts_as_tree :foreign_key => "parent_id" |
| + | end |
| + | |
| + | class RecursivelyCascadedTreeMixin < Mixin |
| + | acts_as_tree :foreign_key => "parent_id" |
| + | has_one :first_child, :class_name => 'RecursivelyCascadedTreeMixin', :foreign_key => :parent_id |
| + | end |
| + | |
| + | class TreeTest < Test::Unit::TestCase |
| + | |
| + | def setup |
| + | setup_db |
| + | @root1 = TreeMixin.create! |
| + | @root_child1 = TreeMixin.create! :parent_id => @root1.id |
| + | @child1_child = TreeMixin.create! :parent_id => @root_child1.id |
| + | @root_child2 = TreeMixin.create! :parent_id => @root1.id |
| + | @root2 = TreeMixin.create! |
| + | @root3 = TreeMixin.create! |
| + | end |
| + | |
| + | def teardown |
| + | teardown_db |
| + | end |
| + | |
| + | def test_children |
| + | assert_equal @root1.children, [@root_child1, @root_child2] |
| + | assert_equal @root_child1.children, [@child1_child] |
| + | assert_equal @child1_child.children, [] |
| + | assert_equal @root_child2.children, [] |
| + | end |
| + | |
| + | def test_parent |
| + | assert_equal @root_child1.parent, @root1 |
| + | assert_equal @root_child1.parent, @root_child2.parent |
| + | assert_nil @root1.parent |
| + | end |
| + | |
| + | def test_delete |
| + | assert_equal 6, TreeMixin.count |
| + | @root1.destroy |
| + | assert_equal 2, TreeMixin.count |
| + | @root2.destroy |
| + | @root3.destroy |
| + | assert_equal 0, TreeMixin.count |
| + | end |
| + | |
| + | def test_insert |
| + | @extra = @root1.children.create |
| + | |
| + | assert @extra |
| + | |
| + | assert_equal @extra.parent, @root1 |
| + | |
| + | assert_equal 3, @root1.children.size |
| + | assert @root1.children.include?(@extra) |
| + | assert @root1.children.include?(@root_child1) |
| + | assert @root1.children.include?(@root_child2) |
| + | end |
| + | |
| + | def test_ancestors |
| + | assert_equal [], @root1.ancestors |
| + | assert_equal [@root1], @root_child1.ancestors |
| + | assert_equal [@root_child1, @root1], @child1_child.ancestors |
| + | assert_equal [@root1], @root_child2.ancestors |
| + | assert_equal [], @root2.ancestors |
| + | assert_equal [], @root3.ancestors |
| + | end |
| + | |
| + | def test_root |
| + | assert_equal @root1, TreeMixin.root |
| + | assert_equal @root1, @root1.root |
| + | assert_equal @root1, @root_child1.root |
| + | assert_equal @root1, @child1_child.root |
| + | assert_equal @root1, @root_child2.root |
| + | assert_equal @root2, @root2.root |
| + | assert_equal @root3, @root3.root |
| + | end |
| + | |
| + | def test_roots |
| + | assert_equal [@root1, @root2, @root3], TreeMixin.roots |
| + | end |
| + | |
| + | def test_siblings |
| + | assert_equal [@root2, @root3], @root1.siblings |
| + | assert_equal [@root_child2], @root_child1.siblings |
| + | assert_equal [], @child1_child.siblings |
| + | assert_equal [@root_child1], @root_child2.siblings |
| + | assert_equal [@root1, @root3], @root2.siblings |
| + | assert_equal [@root1, @root2], @root3.siblings |
| + | end |
| + | |
| + | def test_self_and_siblings |
| + | assert_equal [@root1, @root2, @root3], @root1.self_and_siblings |
| + | assert_equal [@root_child1, @root_child2], @root_child1.self_and_siblings |
| + | assert_equal [@child1_child], @child1_child.self_and_siblings |
| + | assert_equal [@root_child1, @root_child2], @root_child2.self_and_siblings |
| + | assert_equal [@root1, @root2, @root3], @root2.self_and_siblings |
| + | assert_equal [@root1, @root2, @root3], @root3.self_and_siblings |
| + | end |
| + | end |
| + | |
| + | class TreeTestWithEagerLoading < Test::Unit::TestCase |
| + | |
| + | def setup |
| + | teardown_db |
| + | setup_db |
| + | @root1 = TreeMixin.create! |
| + | @root_child1 = TreeMixin.create! :parent_id => @root1.id |
| + | @child1_child = TreeMixin.create! :parent_id => @root_child1.id |
| + | @root_child2 = TreeMixin.create! :parent_id => @root1.id |
| + | @root2 = TreeMixin.create! |
| + | @root3 = TreeMixin.create! |
| + | |
| + | @rc1 = RecursivelyCascadedTreeMixin.create! |
| + | @rc2 = RecursivelyCascadedTreeMixin.create! :parent_id => @rc1.id |
| + | @rc3 = RecursivelyCascadedTreeMixin.create! :parent_id => @rc2.id |
| + | @rc4 = RecursivelyCascadedTreeMixin.create! :parent_id => @rc3.id |
| + | end |
| + | |
| + | def teardown |
| + | teardown_db |
| + | end |
| + | |
| + | def test_eager_association_loading |
| + | roots = TreeMixin.find(:all, :include => :children, :conditions => "mixins.parent_id IS NULL", :order => "mixins.id") |
| + | assert_equal [@root1, @root2, @root3], roots |
| + | assert_no_queries do |
| + | assert_equal 2, roots[0].children.size |
| + | assert_equal 0, roots[1].children.size |
| + | assert_equal 0, roots[2].children.size |
| + | end |
| + | end |
| + | |
| + | def test_eager_association_loading_with_recursive_cascading_three_levels_has_many |
| + | root_node = RecursivelyCascadedTreeMixin.find(:first, :include => { :children => { :children => :children } }, :order => 'mixins.id') |
| + | assert_equal @rc4, assert_no_queries { root_node.children.first.children.first.children.first } |
| + | end |
| + | |
| + | def test_eager_association_loading_with_recursive_cascading_three_levels_has_one |
| + | root_node = RecursivelyCascadedTreeMixin.find(:first, :include => { :first_child => { :first_child => :first_child } }, :order => 'mixins.id') |
| + | assert_equal @rc4, assert_no_queries { root_node.first_child.first_child.first_child } |
| + | end |
| + | |
| + | def test_eager_association_loading_with_recursive_cascading_three_levels_belongs_to |
| + | leaf_node = RecursivelyCascadedTreeMixin.find(:first, :include => { :parent => { :parent => :parent } }, :order => 'mixins.id DESC') |
| + | assert_equal @rc1, assert_no_queries { leaf_node.parent.parent.parent } |
| + | end |
| + | end |
| + | |
| + | class TreeTestWithoutOrder < Test::Unit::TestCase |
| + | |
| + | def setup |
| + | setup_db |
| + | @root1 = TreeMixinWithoutOrder.create! |
| + | @root2 = TreeMixinWithoutOrder.create! |
| + | end |
| + | |
| + | def teardown |
| + | teardown_db |
| + | end |
| + | |
| + | def test_root |
| + | assert [@root1, @root2].include?(TreeMixinWithoutOrder.root) |
| + | end |
| + | |
| + | def test_roots |
| + | assert_equal [], [@root1, @root2] - TreeMixinWithoutOrder.roots |
| + | end |
| + | end |
vendor/plugins/acts_as_tree/test/database.yml
+0
-0
vendor/plugins/acts_as_tree/test/fixtures/mixin.rb
+0
-0
vendor/plugins/acts_as_tree/test/fixtures/mixins.yml
+0
-0
vendor/plugins/acts_as_tree/test/schema.rb
+0
-0