diff --git a/.gitignore b/.gitignore
index 7166a15b4..d27ac7275 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,8 @@ public/assets
config/application.rb
.rvmrc
+
+app/assets/javascripts/.DS_Store
+
+solr
+Gemfile.lock
diff --git a/Gemfile b/Gemfile
index 0fb3acd03..40270a735 100644
--- a/Gemfile
+++ b/Gemfile
@@ -12,14 +12,13 @@ gem 'exception_notification' # Send error trace
gem 'execjs'
gem 'jquery-rails'
gem 'jquery-ui-rails'
-
gem 'kaminari', :git => 'git://github.com/amatsuda/kaminari.git'
# gem "memcached", "~> 1.4.3"
# gem "memcache-client"
gem 'mini_magick'
-gem 'mongoid'
+gem 'mongoid', '> 2.1', '< 3.0.0'
gem 'mongoid-tree', :require => 'mongoid/tree'
gem "mongo_session_store-rails3"
gem 'mysql2'
@@ -32,7 +31,7 @@ gem 'resque', :require => 'resque/server' # background jobs
gem 'resque-scheduler' # job scheduling
gem 'resque-restriction'
#gem 'rb-readline'
-gem 'ruby-debug19'
+# gem 'ruby-debug19'
gem 'rubyzip'
gem 'sunspot_mongo'
@@ -40,26 +39,26 @@ gem 'sunspot_solr'
gem 'progress_bar'
gem 'sinatra'
+#gem 'sinatra-contrib'
gem 'sprockets'
gem 'social-share-button'
gem 'tinymce-rails'
gem 'therubyracer' if RUBY_PLATFORM.downcase.include?("linux")
+gem 'mongoid-encryptor', :require => 'mongoid/encryptor'
gem 'rb-readline' if RUBY_PLATFORM.downcase.include?("linux")
-#gem "impressionist", :require => "impressionist", :path => "vendor/impressionist"
gem "impressionist", :git => 'git://github.com/charlotte-ruby/impressionist.git'
-
-
-
+#gem 'contacts'
+#gem 'event-calendar', :require => 'event_calendar'#, :git => 'git://github.com/elevation/event_calendar.git'
gem 'redis','>= 2.1.1'
gem 'chinese_pinyin', '0.4.1'
# add rmmseg if you need search by segment words
gem 'rmmseg-cpp-huacnlee', '0.2.9'
-gem 'redis-namespace','~> 1.0.2'
-gem 'redis-search', '0.7.1'
+gem 'redis-namespace'
+gem 'redis-search'
# Gems used only for assets and not required
# in production environments by default.
@@ -71,6 +70,11 @@ end
group :test, :development do
+ gem 'pry'
+ gem 'pry-remote'
+ gem 'pry-stack_explorer'
+ gem 'pry-debugger'
+
gem "sunspot-rails-tester"
gem 'spork'
gem 'database_cleaner' #Strategies for cleaning databases. Can be used to ensure a clean state for testing.
diff --git a/Gemfile.lock b/Gemfile.lock
deleted file mode 100644
index a28df6b10..000000000
--- a/Gemfile.lock
+++ /dev/null
@@ -1,342 +0,0 @@
-GIT
- remote: git://github.com/amatsuda/kaminari.git
- revision: b4b1e578ad81b803522d9bc28713bf1b20e7ded9
- specs:
- kaminari (0.14.1)
- actionpack (>= 3.0.0)
- activesupport (>= 3.0.0)
-
-GIT
- remote: git://github.com/charlotte-ruby/impressionist.git
- revision: 7a93fff25568cd3edcc63c1a3c4b60dc6b81d2b7
- specs:
- impressionist (1.1.1)
- httpclient (~> 2.2)
- nokogiri (~> 1.5)
-
-GEM
- remote: http://rubygems.org/
- specs:
- actionmailer (3.1.8)
- actionpack (= 3.1.8)
- mail (~> 2.3.3)
- actionpack (3.1.8)
- activemodel (= 3.1.8)
- activesupport (= 3.1.8)
- builder (~> 3.0.0)
- erubis (~> 2.7.0)
- i18n (~> 0.6)
- rack (~> 1.3.6)
- rack-cache (~> 1.2)
- rack-mount (~> 0.8.2)
- rack-test (~> 0.6.1)
- sprockets (~> 2.0.4)
- activemodel (3.1.8)
- activesupport (= 3.1.8)
- builder (~> 3.0.0)
- i18n (~> 0.6)
- activerecord (3.1.8)
- activemodel (= 3.1.8)
- activesupport (= 3.1.8)
- arel (~> 2.2.3)
- tzinfo (~> 0.3.29)
- activeresource (3.1.8)
- activemodel (= 3.1.8)
- activesupport (= 3.1.8)
- activesupport (3.1.8)
- multi_json (>= 1.0, < 1.3)
- archive-tar-minitar (0.5.2)
- arel (2.2.3)
- bcrypt-ruby (3.0.1)
- brakeman (1.8.0)
- activesupport
- erubis (~> 2.6)
- fastercsv (~> 1.5)
- haml (~> 3.0)
- highline (~> 1.6)
- i18n
- json_pure
- ruby2ruby (~> 1.2)
- ruby_parser (= 2.3.1)
- sass (~> 3.0)
- terminal-table (~> 1.4)
- bson (1.7.0)
- bson_ext (1.7.0)
- bson (~> 1.7.0)
- builder (3.0.3)
- carrierwave (0.5.8)
- activesupport (~> 3.0)
- carrierwave-mongoid (0.1.6)
- carrierwave (~> 0.5.6)
- mongoid (~> 2.1)
- chinese_pinyin (0.4.1)
- chronic (0.8.0)
- coffee-rails (3.1.1)
- coffee-script (>= 2.2.0)
- railties (~> 3.1.0)
- coffee-script (2.2.0)
- coffee-script-source
- execjs
- coffee-script-source (1.3.3)
- columnize (0.3.6)
- database_cleaner (0.8.0)
- delorean (2.0.0)
- chronic
- devise (1.5.3)
- bcrypt-ruby (~> 3.0)
- orm_adapter (~> 0.0.3)
- warden (~> 1.1)
- diff-lcs (1.1.3)
- erubis (2.7.0)
- exception_notification (2.6.1)
- actionmailer (>= 3.0.4)
- execjs (1.4.0)
- multi_json (~> 1.0)
- factory_girl (4.1.0)
- activesupport (>= 3.0.0)
- factory_girl_rails (4.1.0)
- factory_girl (~> 4.1.0)
- railties (>= 3.0.0)
- fastercsv (1.5.5)
- fattr (2.2.1)
- haml (3.1.7)
- highline (1.6.15)
- hike (1.2.1)
- httpclient (2.2.7)
- i18n (0.6.1)
- jquery-rails (2.1.2)
- railties (>= 3.1.0, < 5.0)
- thor (~> 0.14)
- jquery-ui-rails (2.0.0)
- jquery-rails
- railties (>= 3.1.0)
- json (1.7.5)
- json_pure (1.7.5)
- libv8 (3.3.10.4)
- linecache19 (0.5.12)
- ruby_core_source (>= 0.1.4)
- mail (2.3.3)
- i18n (>= 0.4.0)
- mime-types (~> 1.16)
- treetop (~> 1.4.8)
- mime-types (1.19)
- mini_magick (3.4)
- subexec (~> 0.2.1)
- mongo (1.7.0)
- bson (~> 1.7.0)
- mongo_session_store-rails3 (3.0.6)
- actionpack (>= 3.0)
- mongo
- mongoid (2.5.0)
- activemodel (~> 3.1)
- mongo (~> 1.7)
- tzinfo (~> 0.3.22)
- mongoid-tree (0.7.0)
- mongoid (~> 2.0)
- multi_json (1.2.0)
- mysql2 (0.3.11)
- net-ldap (0.3.1)
- nokogiri (1.5.5)
- options (2.3.0)
- fattr
- orm_adapter (0.0.7)
- polyglot (0.3.3)
- pr_geohash (1.0.0)
- progress_bar (0.4.0)
- highline (~> 1.6.1)
- options (~> 2.3.0)
- rack (1.3.6)
- rack-cache (1.2)
- rack (>= 0.4)
- rack-mount (0.8.3)
- rack (>= 1.0.0)
- rack-protection (1.2.0)
- rack
- rack-ssl (1.3.2)
- rack
- rack-test (0.6.1)
- rack (>= 1.0)
- radius (0.7.3)
- rails (3.1.8)
- actionmailer (= 3.1.8)
- actionpack (= 3.1.8)
- activerecord (= 3.1.8)
- activeresource (= 3.1.8)
- activesupport (= 3.1.8)
- bundler (~> 1.0)
- railties (= 3.1.8)
- railties (3.1.8)
- actionpack (= 3.1.8)
- activesupport (= 3.1.8)
- rack-ssl (~> 1.3.2)
- rake (>= 0.8.7)
- rdoc (~> 3.4)
- thor (~> 0.14.6)
- rake (0.9.2.2)
- rb-readline (0.4.2)
- rdoc (3.12)
- json (~> 1.4)
- redis (2.2.2)
- redis-namespace (1.0.3)
- redis (< 3.0.0)
- redis-search (0.7.1)
- chinese_pinyin (>= 0.3.0)
- redis (>= 2.1.1)
- redis-namespace (~> 1.0.2)
- resque (1.22.0)
- multi_json (~> 1.0)
- redis-namespace (~> 1.0)
- sinatra (>= 0.9.2)
- vegas (~> 0.1.2)
- resque-restriction (0.3.0)
- resque (>= 1.7.0)
- resque-scheduler (2.0.0)
- redis (>= 2.0.1)
- resque (>= 1.20.0)
- rufus-scheduler
- rmmseg-cpp-huacnlee (0.2.9)
- rsolr (1.0.8)
- builder (>= 2.1.2)
- rspec (2.11.0)
- rspec-core (~> 2.11.0)
- rspec-expectations (~> 2.11.0)
- rspec-mocks (~> 2.11.0)
- rspec-core (2.11.1)
- rspec-expectations (2.11.3)
- diff-lcs (~> 1.1.3)
- rspec-mocks (2.11.2)
- rspec-rails (2.11.0)
- actionpack (>= 3.0)
- activesupport (>= 3.0)
- railties (>= 3.0)
- rspec (~> 2.11.0)
- ruby-debug-base19 (0.11.25)
- columnize (>= 0.3.1)
- linecache19 (>= 0.5.11)
- ruby_core_source (>= 0.1.4)
- ruby-debug19 (0.11.5)
- columnize (>= 0.3.1)
- linecache19 (>= 0.5.11)
- ruby-debug-base19 (>= 0.11.15)
- ruby2ruby (1.3.1)
- ruby_parser (~> 2.0)
- sexp_processor (~> 3.0)
- ruby_core_source (0.1.5)
- archive-tar-minitar (>= 0.5.2)
- ruby_parser (2.3.1)
- sexp_processor (~> 3.0)
- rubyzip (0.9.9)
- rufus-scheduler (2.0.17)
- tzinfo (>= 0.3.23)
- sass (3.2.1)
- sass-rails (3.1.6)
- actionpack (~> 3.1.0)
- railties (~> 3.1.0)
- sass (>= 3.1.10)
- tilt (~> 1.3.2)
- sexp_processor (3.2.0)
- shoulda-matchers (1.3.0)
- activesupport (>= 3.0.0)
- simplecov (0.6.4)
- multi_json (~> 1.0)
- simplecov-html (~> 0.5.3)
- simplecov-html (0.5.3)
- sinatra (1.3.3)
- rack (~> 1.3, >= 1.3.6)
- rack-protection (~> 1.2)
- tilt (~> 1.3, >= 1.3.3)
- social-share-button (0.0.8)
- spork (0.9.2)
- sprockets (2.0.4)
- hike (~> 1.2)
- rack (~> 1.0)
- tilt (~> 1.1, != 1.3.0)
- subexec (0.2.2)
- sunspot (1.3.3)
- pr_geohash (~> 1.0)
- rsolr (~> 1.0.7)
- sunspot-rails-tester (0.0.4)
- sunspot_rails (~> 1.2)
- sunspot_mongo (1.0.1)
- sunspot_rails
- sunspot_rails (1.3.3)
- nokogiri
- sunspot (= 1.3.3)
- sunspot_solr (1.3.3)
- terminal-table (1.4.5)
- therubyracer (0.10.2)
- libv8 (~> 3.3.10)
- thor (0.14.6)
- tilt (1.3.3)
- tinymce-rails (3.4.8)
- railties (>= 3.1)
- treetop (1.4.10)
- polyglot
- polyglot (>= 0.3.1)
- tzinfo (0.3.33)
- uglifier (1.3.0)
- execjs (>= 0.3.0)
- multi_json (~> 1.0, >= 1.0.2)
- vegas (0.1.11)
- rack (>= 1.0.0)
- warden (1.2.1)
- rack (>= 1.0)
- watchr (0.7)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- brakeman
- bson_ext
- carrierwave
- carrierwave-mongoid
- chinese_pinyin (= 0.4.1)
- coffee-rails
- database_cleaner
- delorean
- devise (= 1.5.3)
- exception_notification
- execjs
- factory_girl_rails
- impressionist!
- jquery-rails
- jquery-ui-rails
- kaminari!
- mini_magick
- mongo_session_store-rails3
- mongoid
- mongoid-tree
- mysql2
- net-ldap (~> 0.3.1)
- nokogiri
- progress_bar
- radius
- rails (>= 3.1.0, < 3.2.0)
- rake
- rb-readline
- redis (>= 2.1.1)
- redis-namespace (~> 1.0.2)
- redis-search (= 0.7.1)
- resque
- resque-restriction
- resque-scheduler
- rmmseg-cpp-huacnlee (= 0.2.9)
- rspec (~> 2.0)
- rspec-rails (~> 2.0)
- ruby-debug19
- rubyzip
- sass-rails
- shoulda-matchers
- simplecov
- sinatra
- social-share-button
- spork
- sprockets
- sunspot-rails-tester
- sunspot_mongo
- sunspot_solr
- therubyracer
- tinymce-rails
- uglifier
- watchr
diff --git a/app/assets/fonts/desktop/fontawesome-webfont.eot b/app/assets/fonts/desktop/fontawesome-webfont.eot
new file mode 100755
index 000000000..89070c1e6
Binary files /dev/null and b/app/assets/fonts/desktop/fontawesome-webfont.eot differ
diff --git a/app/assets/fonts/desktop/fontawesome-webfont.svg b/app/assets/fonts/desktop/fontawesome-webfont.svg
new file mode 100755
index 000000000..1245f92c2
--- /dev/null
+++ b/app/assets/fonts/desktop/fontawesome-webfont.svg
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/assets/fonts/desktop/fontawesome-webfont.ttf b/app/assets/fonts/desktop/fontawesome-webfont.ttf
new file mode 100755
index 000000000..c17e9f8d1
Binary files /dev/null and b/app/assets/fonts/desktop/fontawesome-webfont.ttf differ
diff --git a/app/assets/fonts/desktop/fontawesome-webfont.woff b/app/assets/fonts/desktop/fontawesome-webfont.woff
new file mode 100755
index 000000000..09f2469a1
Binary files /dev/null and b/app/assets/fonts/desktop/fontawesome-webfont.woff differ
diff --git a/app/assets/images/-sign-in-logo.png b/app/assets/images/-sign-in-logo.png
deleted file mode 100644
index 53756c7c3..000000000
Binary files a/app/assets/images/-sign-in-logo.png and /dev/null differ
diff --git a/app/assets/images/connection/Thumbs.db b/app/assets/images/connection/Thumbs.db
new file mode 100755
index 000000000..47897e3f3
Binary files /dev/null and b/app/assets/images/connection/Thumbs.db differ
diff --git a/app/assets/images/connection/facebook.png b/app/assets/images/connection/facebook.png
new file mode 100755
index 000000000..f8c4f2190
Binary files /dev/null and b/app/assets/images/connection/facebook.png differ
diff --git a/app/assets/images/connection/gmail.png b/app/assets/images/connection/gmail.png
new file mode 100755
index 000000000..ec897f23f
Binary files /dev/null and b/app/assets/images/connection/gmail.png differ
diff --git a/app/assets/images/connection/twitter.png b/app/assets/images/connection/twitter.png
new file mode 100755
index 000000000..a8071eea1
Binary files /dev/null and b/app/assets/images/connection/twitter.png differ
diff --git a/app/assets/images/facebook.png b/app/assets/images/facebook.png
new file mode 100644
index 000000000..3bfe4bac2
Binary files /dev/null and b/app/assets/images/facebook.png differ
diff --git a/app/assets/images/gmail.png b/app/assets/images/gmail.png
new file mode 100644
index 000000000..dd2d70a82
Binary files /dev/null and b/app/assets/images/gmail.png differ
diff --git a/app/assets/images/icons/bookkeeper.png b/app/assets/images/icons/bookkeeper.png
new file mode 100755
index 000000000..41b3bf260
Binary files /dev/null and b/app/assets/images/icons/bookkeeper.png differ
diff --git a/app/assets/images/icons/calendar.png b/app/assets/images/icons/calendar.png
new file mode 100755
index 000000000..a2f6ae714
Binary files /dev/null and b/app/assets/images/icons/calendar.png differ
diff --git a/app/assets/images/icons/dailyenglish.png b/app/assets/images/icons/dailyenglish.png
new file mode 100644
index 000000000..c820bd610
Binary files /dev/null and b/app/assets/images/icons/dailyenglish.png differ
diff --git a/app/assets/images/icons/diary.png b/app/assets/images/icons/diary.png
new file mode 100755
index 000000000..38bfa20ca
Binary files /dev/null and b/app/assets/images/icons/diary.png differ
diff --git a/app/assets/images/icons/doc.png b/app/assets/images/icons/doc.png
new file mode 100755
index 000000000..36cb273b8
Binary files /dev/null and b/app/assets/images/icons/doc.png differ
diff --git a/app/assets/images/icons/facebook.png b/app/assets/images/icons/facebook.png
new file mode 100755
index 000000000..03c3ddd51
Binary files /dev/null and b/app/assets/images/icons/facebook.png differ
diff --git a/app/assets/images/icons/gmail.png b/app/assets/images/icons/gmail.png
new file mode 100755
index 000000000..44ff25b73
Binary files /dev/null and b/app/assets/images/icons/gmail.png differ
diff --git a/app/assets/images/icons/iclock.png b/app/assets/images/icons/iclock.png
new file mode 100755
index 000000000..4200755e5
Binary files /dev/null and b/app/assets/images/icons/iclock.png differ
diff --git a/app/assets/images/icons/movies.png b/app/assets/images/icons/movies.png
new file mode 100755
index 000000000..6e75b450e
Binary files /dev/null and b/app/assets/images/icons/movies.png differ
diff --git a/app/assets/images/icons/musicbox.png b/app/assets/images/icons/musicbox.png
new file mode 100755
index 000000000..6071215f4
Binary files /dev/null and b/app/assets/images/icons/musicbox.png differ
diff --git a/app/assets/images/icons/newsfeed.png b/app/assets/images/icons/newsfeed.png
new file mode 100755
index 000000000..cb20cd921
Binary files /dev/null and b/app/assets/images/icons/newsfeed.png differ
diff --git a/app/assets/images/icons/quotes.png b/app/assets/images/icons/quotes.png
new file mode 100644
index 000000000..d22866fd4
Binary files /dev/null and b/app/assets/images/icons/quotes.png differ
diff --git a/app/assets/images/icons/talk.png b/app/assets/images/icons/talk.png
new file mode 100755
index 000000000..6f498870c
Binary files /dev/null and b/app/assets/images/icons/talk.png differ
diff --git a/app/assets/images/icons/ted.png b/app/assets/images/icons/ted.png
new file mode 100755
index 000000000..d9063ce07
Binary files /dev/null and b/app/assets/images/icons/ted.png differ
diff --git a/app/assets/images/icons/weather.png b/app/assets/images/icons/weather.png
new file mode 100755
index 000000000..d70334399
Binary files /dev/null and b/app/assets/images/icons/weather.png differ
diff --git a/app/assets/images/icons/youtube.png b/app/assets/images/icons/youtube.png
new file mode 100755
index 000000000..400ce4c1e
Binary files /dev/null and b/app/assets/images/icons/youtube.png differ
diff --git a/app/assets/images/linkedin.png b/app/assets/images/linkedin.png
new file mode 100644
index 000000000..3c9898027
Binary files /dev/null and b/app/assets/images/linkedin.png differ
diff --git a/app/assets/images/miniColors/circle.gif b/app/assets/images/miniColors/circle.gif
new file mode 100755
index 000000000..599f7f13a
Binary files /dev/null and b/app/assets/images/miniColors/circle.gif differ
diff --git a/app/assets/images/miniColors/gradient.png b/app/assets/images/miniColors/gradient.png
new file mode 100755
index 000000000..561cdd9c5
Binary files /dev/null and b/app/assets/images/miniColors/gradient.png differ
diff --git a/app/assets/images/miniColors/line.gif b/app/assets/images/miniColors/line.gif
new file mode 100755
index 000000000..9eb198378
Binary files /dev/null and b/app/assets/images/miniColors/line.gif differ
diff --git a/app/assets/images/miniColors/rainbow.png b/app/assets/images/miniColors/rainbow.png
new file mode 100755
index 000000000..8d6c71bf9
Binary files /dev/null and b/app/assets/images/miniColors/rainbow.png differ
diff --git a/app/assets/images/miniColors/trigger.png b/app/assets/images/miniColors/trigger.png
new file mode 100755
index 000000000..8c169fd60
Binary files /dev/null and b/app/assets/images/miniColors/trigger.png differ
diff --git a/app/assets/images/ncculogo.ico b/app/assets/images/ncculogo.ico
index 3aa5e1c67..0550cd4b0 100644
Binary files a/app/assets/images/ncculogo.ico and b/app/assets/images/ncculogo.ico differ
diff --git a/app/assets/images/ncculogo_bk.ico b/app/assets/images/ncculogo_bk.ico
new file mode 100644
index 000000000..3aa5e1c67
Binary files /dev/null and b/app/assets/images/ncculogo_bk.ico differ
diff --git a/app/assets/images/note_alert.png b/app/assets/images/note_alert.png
new file mode 100644
index 000000000..6ebda48e6
Binary files /dev/null and b/app/assets/images/note_alert.png differ
diff --git a/app/assets/images/note_imp.png b/app/assets/images/note_imp.png
new file mode 100644
index 000000000..eb1306a98
Binary files /dev/null and b/app/assets/images/note_imp.png differ
diff --git a/app/assets/images/note_success.png b/app/assets/images/note_success.png
new file mode 100644
index 000000000..5d5ae2ad1
Binary files /dev/null and b/app/assets/images/note_success.png differ
diff --git a/app/assets/images/sample_theme.jpg b/app/assets/images/sample_theme.jpg
new file mode 100755
index 000000000..03945979e
Binary files /dev/null and b/app/assets/images/sample_theme.jpg differ
diff --git a/app/assets/images/sign-in-logo-nccu.png b/app/assets/images/sign-in-logo-nccu.png
new file mode 100644
index 000000000..a3148babd
Binary files /dev/null and b/app/assets/images/sign-in-logo-nccu.png differ
diff --git a/app/assets/images/sign-in-logo.png b/app/assets/images/sign-in-logo.png
index a3148babd..53756c7c3 100644
Binary files a/app/assets/images/sign-in-logo.png and b/app/assets/images/sign-in-logo.png differ
diff --git a/app/assets/images/stockBackground/1.jpg b/app/assets/images/stockBackground/1.jpg
new file mode 100755
index 000000000..5981dcf28
Binary files /dev/null and b/app/assets/images/stockBackground/1.jpg differ
diff --git a/app/assets/images/stockBackground/10.jpg b/app/assets/images/stockBackground/10.jpg
new file mode 100755
index 000000000..3b1faa7f3
Binary files /dev/null and b/app/assets/images/stockBackground/10.jpg differ
diff --git a/app/assets/images/stockBackground/11.jpg b/app/assets/images/stockBackground/11.jpg
new file mode 100755
index 000000000..88ab7bdfb
Binary files /dev/null and b/app/assets/images/stockBackground/11.jpg differ
diff --git a/app/assets/images/stockBackground/12.jpg b/app/assets/images/stockBackground/12.jpg
new file mode 100755
index 000000000..e93851317
Binary files /dev/null and b/app/assets/images/stockBackground/12.jpg differ
diff --git a/app/assets/images/stockBackground/2.jpg b/app/assets/images/stockBackground/2.jpg
new file mode 100755
index 000000000..9fed12fc8
Binary files /dev/null and b/app/assets/images/stockBackground/2.jpg differ
diff --git a/app/assets/images/stockBackground/3.jpg b/app/assets/images/stockBackground/3.jpg
new file mode 100755
index 000000000..7a2cf18aa
Binary files /dev/null and b/app/assets/images/stockBackground/3.jpg differ
diff --git a/app/assets/images/stockBackground/4.jpg b/app/assets/images/stockBackground/4.jpg
new file mode 100755
index 000000000..c2bfc14e7
Binary files /dev/null and b/app/assets/images/stockBackground/4.jpg differ
diff --git a/app/assets/images/stockBackground/5.jpg b/app/assets/images/stockBackground/5.jpg
new file mode 100755
index 000000000..0db9de938
Binary files /dev/null and b/app/assets/images/stockBackground/5.jpg differ
diff --git a/app/assets/images/stockBackground/6.jpg b/app/assets/images/stockBackground/6.jpg
new file mode 100755
index 000000000..867ad0f94
Binary files /dev/null and b/app/assets/images/stockBackground/6.jpg differ
diff --git a/app/assets/images/stockBackground/7.jpg b/app/assets/images/stockBackground/7.jpg
new file mode 100755
index 000000000..370313a28
Binary files /dev/null and b/app/assets/images/stockBackground/7.jpg differ
diff --git a/app/assets/images/stockBackground/8.jpg b/app/assets/images/stockBackground/8.jpg
new file mode 100755
index 000000000..919fabf47
Binary files /dev/null and b/app/assets/images/stockBackground/8.jpg differ
diff --git a/app/assets/images/stockBackground/9.jpg b/app/assets/images/stockBackground/9.jpg
new file mode 100755
index 000000000..3bba544eb
Binary files /dev/null and b/app/assets/images/stockBackground/9.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/1.jpg b/app/assets/images/stockBackground/thumb/1.jpg
new file mode 100755
index 000000000..38b235866
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/1.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/10.jpg b/app/assets/images/stockBackground/thumb/10.jpg
new file mode 100755
index 000000000..481bc866c
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/10.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/11.jpg b/app/assets/images/stockBackground/thumb/11.jpg
new file mode 100755
index 000000000..ca304dede
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/11.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/12.jpg b/app/assets/images/stockBackground/thumb/12.jpg
new file mode 100755
index 000000000..83cd444ab
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/12.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/2.jpg b/app/assets/images/stockBackground/thumb/2.jpg
new file mode 100755
index 000000000..14254a1e9
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/2.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/3.jpg b/app/assets/images/stockBackground/thumb/3.jpg
new file mode 100755
index 000000000..cc2047e68
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/3.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/4.jpg b/app/assets/images/stockBackground/thumb/4.jpg
new file mode 100755
index 000000000..2fbe5929e
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/4.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/5.jpg b/app/assets/images/stockBackground/thumb/5.jpg
new file mode 100755
index 000000000..d93957379
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/5.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/6.jpg b/app/assets/images/stockBackground/thumb/6.jpg
new file mode 100755
index 000000000..9661a8c7e
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/6.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/7.jpg b/app/assets/images/stockBackground/thumb/7.jpg
new file mode 100755
index 000000000..697ae27a1
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/7.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/8.jpg b/app/assets/images/stockBackground/thumb/8.jpg
new file mode 100755
index 000000000..25a479799
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/8.jpg differ
diff --git a/app/assets/images/stockBackground/thumb/9.jpg b/app/assets/images/stockBackground/thumb/9.jpg
new file mode 100755
index 000000000..e7dd60e0d
Binary files /dev/null and b/app/assets/images/stockBackground/thumb/9.jpg differ
diff --git a/app/assets/images/timeline/date_connector.png b/app/assets/images/timeline/date_connector.png
new file mode 100644
index 000000000..66ee903b6
Binary files /dev/null and b/app/assets/images/timeline/date_connector.png differ
diff --git a/app/assets/images/timeline/pp.png b/app/assets/images/timeline/pp.png
new file mode 100644
index 000000000..029c483b4
Binary files /dev/null and b/app/assets/images/timeline/pp.png differ
diff --git a/app/assets/images/timeline/ruler.png b/app/assets/images/timeline/ruler.png
new file mode 100644
index 000000000..35f38afa6
Binary files /dev/null and b/app/assets/images/timeline/ruler.png differ
diff --git a/app/assets/images/twitter.png b/app/assets/images/twitter.png
new file mode 100644
index 000000000..8b8fac07a
Binary files /dev/null and b/app/assets/images/twitter.png differ
diff --git a/app/assets/javascripts/.DS_Store b/app/assets/javascripts/.DS_Store
deleted file mode 100644
index 9134f2a58..000000000
Binary files a/app/assets/javascripts/.DS_Store and /dev/null differ
diff --git a/app/assets/javascripts/ajax_form.js.erb b/app/assets/javascripts/ajax_form.js.erb
index d56024b3d..9f993cd1a 100644
--- a/app/assets/javascripts/ajax_form.js.erb
+++ b/app/assets/javascripts/ajax_form.js.erb
@@ -1,121 +1,7 @@
-<%#= encoding: utf-8 %>
-// $(document).on('click', '#ajax_form_submit', function(){
- // $('#ajaxForm').ajaxSubmit({
- // beforeSubmit: function(a,f,o) {
- // o.dataType = 'script';
- // if (o.dataType == 'script') {
- // o.url = o.url.split('?'); // split on GET params
- // if (o.url[0].substr(-3) != '.js') o.url[0] += '.js'; // force rails to respond to respond to the request with :format = js
- // o.url = o.url.join('?'); // join on GET params
- // }
- // },
- // success: function(response,status,xhr){
- // alert(response);
- // alert(status);
- // alert(xhr);
- // },
- // error:function(){
- // alert("error");
- // }
- // });
-
-
-// var o = {
-// // dataType: 'script',
-// dataType: 'html',
-// url:$("#ajaxForm").attr("action"),
-// beforeSubmit: function(){
-// var sub = true;
-// $("span.error").remove();
-// $("#dyn_error").empty();
-// $("#ajaxForm input").each(function(){
-// if($(this).val() == ""){
-// $(" * ").insertAfter($(this));
-// sub = false;
-// }
-// })
-// if(!sub){
-// $("#dyn_error").text("Cannot be empty.");
-// $("#dyn_error").text("<%= I18n.t('cant_empty_star') %>");
-// return false;
-// }
-// },
-// success: function(response,status,xhr){
-// if(typeof tinyMCEPopup != "undefined"){
-// var x = response.split("#");
-// var returnurl = x[0],
-// returntitle = x[1],
-// returndescription = x[2];
-// var win = tinyMCEPopup.getWindowArg("window");
-// win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = returnurl;
-// win.document.getElementById(tinyMCEPopup.getWindowArg("alt")).value = returndescription;
-// win.document.getElementById(tinyMCEPopup.getWindowArg("title")).value = returntitle;
-// if (typeof(win.ImageDialog) != "undefined") {
-// // we are, so update image dimensions...
-// if (win.ImageDialog.getImageData)
-// win.ImageDialog.getImageData();
-
-// // ... and preview if necessary
-// if (win.ImageDialog.showPreviewImage)
-// win.ImageDialog.showPreviewImage(returnurl);
-// }
-// tinyMCEPopup.close();
-// }else{
-// //incase if we want to do something for quick edit file upload
-// // var modalvalues = "";
-// // var r = "";
-// // if(rcom.getInternetExplorerVersion() > -1){
-// // r = "
" + response + " ";
-// // r = r.replace("**","");
-// // r = r.replace("**"," ");
-// // r = $(r);
-// // modalvalues = r.find("span").attr("data-content").split("#");
-// // r.attr("id",r.find("span").attr("for"));
-// // var table=document.getElementById(modalvalues[0]);
-// // //var tbody = table.getElementsByTagName("tbody");
-// // var row = table.insertRow(table.rows.length-1);
-// // var c1 = row.insertCell(0),
-// // c2 = row.insertCell(1),
-// // c3 = row.insertCell(2);
-// // c1.innerHTML = r.find("td").eq(0).html();
-// // c2.innerHTML = r.find("td").eq(1).html();
-// // c3.innerHTML = r.find("td").eq(2).html();
-// // var trow = $("#bulletin_files tfoot").find("tr").eq(0);
-// // $("#bulletin_files tbody").append(trow);
-// // }else{
-
-// // response = response.replace("**","");
-// // response = response.replace("**","");
-// // r = $(response);
-// // modalvalues = r.find("span").attr("data-content").split("#");
-// // $('#' + modalvalues[0]+ ' tbody').append(r);
-// // }
-// // console.log(modalvalues[1]);
-// // $("#"+modalvalues[1]).modal('hide');
-// //$('#bulletin_files tbody').append(r);
-// //$(response).fadeIn();
-// }
-// },
-// error:function(){
-// alert("error");
-// }
-// }
-
-// if (o.dataType == 'script') {
-// o.url = o.url.split('?'); // split on GET params
-// if (o.url[0].substr(-3) != '.js') o.url[0] += '.js'; // force rails to respond to respond to the request with :format = js
-// o.url = o.url.join('?'); // join on GET params
-// }
-// $('#ajaxForm').ajaxSubmit(o);
-
-// });
-
$('#ajaxForm').ajaxForm({
- beforeSubmit: function(a,f,o) {
- o.dataType = 'script';
-
- },
- success: function(data) {
-
- }
- });
\ No newline at end of file
+ beforeSubmit: function(a,f,o) {
+ o.dataType = 'script';
+ },
+ success: function(data) {
+ }
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/archive_form.js.erb b/app/assets/javascripts/archive_form.js.erb
new file mode 100644
index 000000000..8386842e3
--- /dev/null
+++ b/app/assets/javascripts/archive_form.js.erb
@@ -0,0 +1,9 @@
+$('.archive_file_multiples_block a.delete').live('click', function(){
+ $(this).parents('.list_item').remove();
+});
+
+$(document).on('click', '.action a.remove_existing_record', function(){
+ $(this).next('.should_destroy').attr('value', 1);
+ $("tr#archive_file_multiple_" + $(this).prev().attr('value')).hide();
+});
+
diff --git a/app/assets/javascripts/archive_plugin_form.js.erb b/app/assets/javascripts/archive_plugin_form.js.erb
new file mode 100644
index 000000000..873f42bf6
--- /dev/null
+++ b/app/assets/javascripts/archive_plugin_form.js.erb
@@ -0,0 +1,9 @@
+$('.plugin_files_block a.delete').live('click', function(){
+ $(this).parents('.list_item').remove();
+});
+
+$(document).on('click', '.action a.remove_existing_record', function(){
+ $(this).next('.should_destroy').attr('value', 1);
+ $("tr#plugin_file_" + $(this).prev().attr('value')).hide();
+});
+
diff --git a/app/assets/javascripts/bootstrap.js b/app/assets/javascripts/bootstrap.js
index 5c158c64b..4facdf353 100644
--- a/app/assets/javascripts/bootstrap.js
+++ b/app/assets/javascripts/bootstrap.js
@@ -1,1740 +1,2031 @@
-/* ===================================================
- * bootstrap-transition.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#transitions
- * ===================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-!function( $ ) {
-
- $(function () {
-
- "use strict"
-
- /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
- * ======================================================= */
-
- $.support.transition = (function () {
- var thisBody = document.body || document.documentElement
- , thisStyle = thisBody.style
- , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
-
- return support && {
- end: (function () {
- var transitionEnd = "TransitionEnd"
- if ( $.browser.webkit ) {
- transitionEnd = "webkitTransitionEnd"
- } else if ( $.browser.mozilla ) {
- transitionEnd = "transitionend"
- } else if ( $.browser.opera ) {
- transitionEnd = "oTransitionEnd"
- }
- return transitionEnd
- }())
- }
- })()
-
- })
-
-}( window.jQuery )
-
-/* =========================================================
- * bootstrap-modal.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#modals
- * =========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================= */
-
-!function( $ ){
-
- "use strict"
-
- /* MODAL CLASS DEFINITION
- * ====================== */
-
- var Modal = function ( content, options ) {
- this.options = options
- this.$element = $(content)
- .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
- }
-
- Modal.prototype = {
-
- constructor: Modal
-
- , toggle: function () {
- return this[!this.isShown ? 'show' : 'hide']()
- }
-
- , show: function () {
- var that = this
-
- if (this.isShown) return
-
- $('body').addClass('modal-open')
-
- this.isShown = true
- this.$element.trigger('show')
-
- escape.call(this)
- backdrop.call(this, function () {
- var transition = $.support.transition && that.$element.hasClass('fade')
-
- !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position
-
- that.$element
- .show()
-
- if (transition) {
- that.$element[0].offsetWidth // force reflow
- }
-
- that.$element.addClass('in')
-
- transition ?
- that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
- that.$element.trigger('shown')
-
- })
- }
-
- , hide: function ( e ) {
- e && e.preventDefault()
-
- if (!this.isShown) return
-
- var that = this
- this.isShown = false
-
- $('body').removeClass('modal-open')
-
- escape.call(this)
-
- this.$element
- .trigger('hide')
- .removeClass('in')
-
- $.support.transition && this.$element.hasClass('fade') ?
- hideWithTransition.call(this) :
- hideModal.call(this)
- }
-
- }
-
- /* MODAL PRIVATE METHODS
- * ===================== */
-
- function hideWithTransition() {
- var that = this
- , timeout = setTimeout(function () {
- that.$element.off($.support.transition.end)
- hideModal.call(that)
- }, 500)
-
- this.$element.one($.support.transition.end, function () {
- clearTimeout(timeout)
- hideModal.call(that)
- })
- }
-
- function hideModal( that ) {
- this.$element
- .hide()
- .trigger('hidden')
-
- backdrop.call(this)
- }
-
- function backdrop( callback ) {
- var that = this
- , animate = this.$element.hasClass('fade') ? 'fade' : ''
-
- if (this.isShown && this.options.backdrop) {
- var doAnimate = $.support.transition && animate
-
- this.$backdrop = $('
')
- .appendTo(document.body)
-
- if (this.options.backdrop != 'static') {
- this.$backdrop.click($.proxy(this.hide, this))
- }
-
- if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
- this.$backdrop.addClass('in')
-
- doAnimate ?
- this.$backdrop.one($.support.transition.end, callback) :
- callback()
-
- } else if (!this.isShown && this.$backdrop) {
- this.$backdrop.removeClass('in')
-
- $.support.transition && this.$element.hasClass('fade')?
- this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
- removeBackdrop.call(this)
-
- } else if (callback) {
- callback()
- }
- }
-
- function removeBackdrop() {
- this.$backdrop.remove()
- this.$backdrop = null
- }
-
- function escape() {
- var that = this
- if (this.isShown && this.options.keyboard) {
- $(document).on('keyup.dismiss.modal', function ( e ) {
- e.which == 27 && that.hide()
- })
- } else if (!this.isShown) {
- $(document).off('keyup.dismiss.modal')
- }
- }
-
-
- /* MODAL PLUGIN DEFINITION
- * ======================= */
-
- $.fn.modal = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('modal')
- , options = $.extend({}, $.fn.modal.defaults, typeof option == 'object' && option)
- if (!data) $this.data('modal', (data = new Modal(this, options)))
- if (typeof option == 'string') data[option]()
- else if (options.show) data.show()
- })
- }
-
- $.fn.modal.defaults = {
- backdrop: true
- , keyboard: true
- , show: true
- }
-
- $.fn.modal.Constructor = Modal
-
-
- /* MODAL DATA-API
- * ============== */
-
- $(function () {
- $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
- var $this = $(this), href
- , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
- , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
-
- e.preventDefault()
- $target.modal(option)
- })
- })
-
-}( window.jQuery )
-
-/* ============================================================
- * bootstrap-dropdown.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#dropdowns
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-!function( $ ){
-
- "use strict"
-
- /* DROPDOWN CLASS DEFINITION
- * ========================= */
-
- var toggle = '[data-toggle="dropdown"]'
- , Dropdown = function ( element ) {
- var $el = $(element).on('click.dropdown.data-api', this.toggle)
- $('html').on('click.dropdown.data-api', function () {
- $el.parent().removeClass('open')
- })
- }
-
- Dropdown.prototype = {
-
- constructor: Dropdown
-
- , toggle: function ( e ) {
- var $this = $(this)
- , selector = $this.attr('data-target')
- , $parent
- , isActive
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- $parent = $(selector)
- $parent.length || ($parent = $this.parent())
-
- isActive = $parent.hasClass('open')
-
- clearMenus()
- !isActive && $parent.toggleClass('open')
-
- return false
- }
-
- }
-
- function clearMenus() {
- $(toggle).parent().removeClass('open')
- }
-
-
- /* DROPDOWN PLUGIN DEFINITION
- * ========================== */
-
- $.fn.dropdown = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('dropdown')
- if (!data) $this.data('dropdown', (data = new Dropdown(this)))
- if (typeof option == 'string') data[option].call($this)
- })
- }
-
- $.fn.dropdown.Constructor = Dropdown
-
-
- /* APPLY TO STANDARD DROPDOWN ELEMENTS
- * =================================== */
-
- $(function () {
- $('html').on('click.dropdown.data-api', clearMenus)
- $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
- })
-
-}( window.jQuery )
-
-/* =============================================================
- * bootstrap-scrollspy.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#scrollspy
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================== */
-
-!function ( $ ) {
-
- "use strict"
-
- /* SCROLLSPY CLASS DEFINITION
- * ========================== */
-
- function ScrollSpy( element, options) {
- var process = $.proxy(this.process, this)
- , $element = $(element).is('body') ? $(window) : $(element)
- , href
- this.options = $.extend({}, $.fn.scrollspy.defaults, options)
- this.$scrollElement = $element.on('scroll.scroll.data-api', process)
- this.selector = (this.options.target
- || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
- || '') + ' .nav li > a'
- this.$body = $('body').on('click.scroll.data-api', this.selector, process)
- this.refresh()
- this.process()
- }
-
- ScrollSpy.prototype = {
-
- constructor: ScrollSpy
-
- , refresh: function () {
- this.targets = this.$body
- .find(this.selector)
- .map(function () {
- var href = $(this).attr('href')
- return /^#\w/.test(href) && $(href).length ? href : null
- })
-
- this.offsets = $.map(this.targets, function (id) {
- return $(id).position().top
- })
- }
-
- , process: function () {
- var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
- , offsets = this.offsets
- , targets = this.targets
- , activeTarget = this.activeTarget
- , i
-
- for (i = offsets.length; i--;) {
- activeTarget != targets[i]
- && scrollTop >= offsets[i]
- && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
- && this.activate( targets[i] )
- }
- }
-
- , activate: function (target) {
- var active
-
- this.activeTarget = target
-
- this.$body
- .find(this.selector).parent('.active')
- .removeClass('active')
-
- active = this.$body
- .find(this.selector + '[href="' + target + '"]')
- .parent('li')
- .addClass('active')
-
- if ( active.parent('.dropdown-menu') ) {
- active.closest('li.dropdown').addClass('active')
- }
- }
-
- }
-
-
- /* SCROLLSPY PLUGIN DEFINITION
- * =========================== */
-
- $.fn.scrollspy = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('scrollspy')
- , options = typeof option == 'object' && option
- if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.scrollspy.Constructor = ScrollSpy
-
- $.fn.scrollspy.defaults = {
- offset: 10
- }
-
-
- /* SCROLLSPY DATA-API
- * ================== */
-
- $(function () {
- $('[data-spy="scroll"]').each(function () {
- var $spy = $(this)
- $spy.scrollspy($spy.data())
- })
- })
-
-}( window.jQuery )
-
-/* ========================================================
- * bootstrap-tab.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#tabs
- * ========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ======================================================== */
-
-
-!function( $ ){
-
- "use strict"
-
- /* TAB CLASS DEFINITION
- * ==================== */
-
- var Tab = function ( element ) {
- this.element = $(element)
- }
-
- Tab.prototype = {
-
- constructor: Tab
-
- , show: function () {
- var $this = this.element
- , $ul = $this.closest('ul:not(.dropdown-menu)')
- , selector = $this.attr('data-target')
- , previous
- , $target
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- if ( $this.parent('li').hasClass('active') ) return
-
- previous = $ul.find('.active a').last()[0]
-
- $this.trigger({
- type: 'show'
- , relatedTarget: previous
- })
-
- $target = $(selector)
-
- this.activate($this.parent('li'), $ul)
- this.activate($target, $target.parent(), function () {
- $this.trigger({
- type: 'shown'
- , relatedTarget: previous
- })
- })
- }
-
- , activate: function ( element, container, callback) {
- var $active = container.find('> .active')
- , transition = callback
- && $.support.transition
- && $active.hasClass('fade')
-
- function next() {
- $active
- .removeClass('active')
- .find('> .dropdown-menu > .active')
- .removeClass('active')
-
- element.addClass('active')
-
- if (transition) {
- element[0].offsetWidth // reflow for transition
- element.addClass('in')
- } else {
- element.removeClass('fade')
- }
-
- if ( element.parent('.dropdown-menu') ) {
- element.closest('li.dropdown').addClass('active')
- }
-
- callback && callback()
- }
-
- transition ?
- $active.one($.support.transition.end, next) :
- next()
-
- $active.removeClass('in')
- }
- }
-
-
- /* TAB PLUGIN DEFINITION
- * ===================== */
-
- $.fn.tab = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('tab')
- if (!data) $this.data('tab', (data = new Tab(this)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.tab.Constructor = Tab
-
-
- /* TAB DATA-API
- * ============ */
-
- $(function () {
- $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
- e.preventDefault()
- $(this).tab('show')
- })
- })
-
-}( window.jQuery )
-
-/* ===========================================================
- * bootstrap-tooltip.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#tooltips
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ===========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-!function( $ ) {
-
- "use strict"
-
- /* TOOLTIP PUBLIC CLASS DEFINITION
- * =============================== */
-
- var Tooltip = function ( element, options ) {
- this.init('tooltip', element, options)
- }
-
- Tooltip.prototype = {
-
- constructor: Tooltip
-
- , init: function ( type, element, options ) {
- var eventIn
- , eventOut
-
- this.type = type
- this.$element = $(element)
- this.options = this.getOptions(options)
- this.enabled = true
-
- if (this.options.trigger != 'manual') {
- eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
- eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
- this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
- this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
- }
-
- this.options.selector ?
- (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
- this.fixTitle()
- }
-
- , getOptions: function ( options ) {
- options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
-
- if (options.delay && typeof options.delay == 'number') {
- options.delay = {
- show: options.delay
- , hide: options.delay
- }
- }
-
- return options
- }
-
- , enter: function ( e ) {
- var self = $(e.currentTarget)[this.type](this._options).data(this.type)
-
- if (!self.options.delay || !self.options.delay.show) {
- self.show()
- } else {
- self.hoverState = 'in'
- setTimeout(function() {
- if (self.hoverState == 'in') {
- self.show()
- }
- }, self.options.delay.show)
- }
- }
-
- , leave: function ( e ) {
- var self = $(e.currentTarget)[this.type](this._options).data(this.type)
-
- if (!self.options.delay || !self.options.delay.hide) {
- self.hide()
- } else {
- self.hoverState = 'out'
- setTimeout(function() {
- if (self.hoverState == 'out') {
- self.hide()
- }
- }, self.options.delay.hide)
- }
- }
-
- , show: function () {
- var $tip
- , inside
- , pos
- , actualWidth
- , actualHeight
- , placement
- , tp
-
- if (this.hasContent() && this.enabled) {
- $tip = this.tip()
- this.setContent()
-
- if (this.options.animation) {
- $tip.addClass('fade')
- }
-
- placement = typeof this.options.placement == 'function' ?
- this.options.placement.call(this, $tip[0], this.$element[0]) :
- this.options.placement
-
- inside = /in/.test(placement)
-
- $tip
- .remove()
- .css({ top: 0, left: 0, display: 'block' })
- .appendTo(inside ? this.$element : document.body)
-
- pos = this.getPosition(inside)
-
- actualWidth = $tip[0].offsetWidth
- actualHeight = $tip[0].offsetHeight
-
- switch (inside ? placement.split(' ')[1] : placement) {
- case 'bottom':
- tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
- break
- case 'top':
- tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
- break
- case 'left':
- tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
- break
- case 'right':
- tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
- break
- }
-
- $tip
- .css(tp)
- .addClass(placement)
- .addClass('in')
- }
- }
-
- , setContent: function () {
- var $tip = this.tip()
- $tip.find('.tooltip-inner').html(this.getTitle())
- $tip.removeClass('fade in top bottom left right')
- }
-
- , hide: function () {
- var that = this
- , $tip = this.tip()
-
- $tip.removeClass('in')
-
- function removeWithAnimation() {
- var timeout = setTimeout(function () {
- $tip.off($.support.transition.end).remove()
- }, 500)
-
- $tip.one($.support.transition.end, function () {
- clearTimeout(timeout)
- $tip.remove()
- })
- }
-
- $.support.transition && this.$tip.hasClass('fade') ?
- removeWithAnimation() :
- $tip.remove()
- }
-
- , fixTitle: function () {
- var $e = this.$element
- if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
- $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
- }
- }
-
- , hasContent: function () {
- return this.getTitle()
- }
-
- , getPosition: function (inside) {
- return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
- width: this.$element[0].offsetWidth
- , height: this.$element[0].offsetHeight
- })
- }
-
- , getTitle: function () {
- var title
- , $e = this.$element
- , o = this.options
-
- title = $e.attr('data-original-title')
- || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
-
- title = title.toString().replace(/(^\s*|\s*$)/, "")
-
- return title
- }
-
- , tip: function () {
- return this.$tip = this.$tip || $(this.options.template)
- }
-
- , validate: function () {
- if (!this.$element[0].parentNode) {
- this.hide()
- this.$element = null
- this.options = null
- }
- }
-
- , enable: function () {
- this.enabled = true
- }
-
- , disable: function () {
- this.enabled = false
- }
-
- , toggleEnabled: function () {
- this.enabled = !this.enabled
- }
-
- , toggle: function () {
- this[this.tip().hasClass('in') ? 'hide' : 'show']()
- }
-
- }
-
-
- /* TOOLTIP PLUGIN DEFINITION
- * ========================= */
-
- $.fn.tooltip = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('tooltip')
- , options = typeof option == 'object' && option
- if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.tooltip.Constructor = Tooltip
-
- $.fn.tooltip.defaults = {
- animation: true
- , delay: 0
- , selector: false
- , placement: 'top'
- , trigger: 'hover'
- , title: ''
- , template: ''
- }
-
-}( window.jQuery )
-
-/* ===========================================================
- * bootstrap-popover.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#popovers
- * ===========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * =========================================================== */
-
-
-!function( $ ) {
-
- "use strict"
-
- var Popover = function ( element, options ) {
- this.init('popover', element, options)
- }
-
- /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
- ========================================== */
-
- Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
-
- constructor: Popover
-
- , setContent: function () {
- var $tip = this.tip()
- , title = this.getTitle()
- , content = this.getContent()
-
- $tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title)
- $tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content)
-
- $tip.removeClass('fade top bottom left right in')
- }
-
- , hasContent: function () {
- return this.getTitle() || this.getContent()
- }
-
- , getContent: function () {
- var content
- , $e = this.$element
- , o = this.options
-
- content = $e.attr('data-content')
- || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
-
- content = content.toString().replace(/(^\s*|\s*$)/, "")
-
- return content
- }
-
- , tip: function() {
- if (!this.$tip) {
- this.$tip = $(this.options.template)
- }
- return this.$tip
- }
-
- })
-
-
- /* POPOVER PLUGIN DEFINITION
- * ======================= */
-
- $.fn.popover = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('popover')
- , options = typeof option == 'object' && option
- if (!data) $this.data('popover', (data = new Popover(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.popover.Constructor = Popover
-
- $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
- placement: 'right'
- , content: ''
- , template: ''
- })
-
-}( window.jQuery )
-
-/* ==========================================================
- * bootstrap-alert.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#alerts
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function( $ ){
-
- "use strict"
-
- /* ALERT CLASS DEFINITION
- * ====================== */
-
- var dismiss = '[data-dismiss="alert"]'
- , Alert = function ( el ) {
- $(el).on('click', dismiss, this.close)
- }
-
- Alert.prototype = {
-
- constructor: Alert
-
- , close: function ( e ) {
- var $this = $(this)
- , selector = $this.attr('data-target')
- , $parent
-
- if (!selector) {
- selector = $this.attr('href')
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
- }
-
- $parent = $(selector)
- $parent.trigger('close')
-
- e && e.preventDefault()
-
- $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
-
- $parent.removeClass('in')
-
- function removeElement() {
- $parent.remove()
- $parent.trigger('closed')
- }
-
- $.support.transition && $parent.hasClass('fade') ?
- $parent.on($.support.transition.end, removeElement) :
- removeElement()
- }
-
- }
-
-
- /* ALERT PLUGIN DEFINITION
- * ======================= */
-
- $.fn.alert = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('alert')
- if (!data) $this.data('alert', (data = new Alert(this)))
- if (typeof option == 'string') data[option].call($this)
- })
- }
-
- $.fn.alert.Constructor = Alert
-
-
- /* ALERT DATA-API
- * ============== */
-
- $(function () {
- $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
- })
-
-}( window.jQuery )
-
-/* ============================================================
- * bootstrap-button.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#buttons
- * ============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-!function( $ ){
-
- "use strict"
-
- /* BUTTON PUBLIC CLASS DEFINITION
- * ============================== */
-
- var Button = function ( element, options ) {
- this.$element = $(element)
- this.options = $.extend({}, $.fn.button.defaults, options)
- }
-
- Button.prototype = {
-
- constructor: Button
-
- , setState: function ( state ) {
- var d = 'disabled'
- , $el = this.$element
- , data = $el.data()
- , val = $el.is('input') ? 'val' : 'html'
-
- state = state + 'Text'
- data.resetText || $el.data('resetText', $el[val]())
-
- $el[val](data[state] || this.options[state])
-
- // push to event loop to allow forms to submit
- setTimeout(function () {
- state == 'loadingText' ?
- $el.addClass(d).attr(d, d) :
- $el.removeClass(d).removeAttr(d)
- }, 0)
- }
-
- , toggle: function () {
- var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
-
- $parent && $parent
- .find('.active')
- .removeClass('active')
-
- this.$element.toggleClass('active')
- }
-
- }
-
-
- /* BUTTON PLUGIN DEFINITION
- * ======================== */
-
- $.fn.button = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('button')
- , options = typeof option == 'object' && option
- if (!data) $this.data('button', (data = new Button(this, options)))
- if (option == 'toggle') data.toggle()
- else if (option) data.setState(option)
- })
- }
-
- $.fn.button.defaults = {
- loadingText: 'loading...'
- }
-
- $.fn.button.Constructor = Button
-
-
- /* BUTTON DATA-API
- * =============== */
-
- $(function () {
- $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
- $(e.target).button('toggle')
- })
- })
-
-}( window.jQuery )
-
-/* =============================================================
- * bootstrap-collapse.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#collapse
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-!function( $ ){
-
- "use strict"
-
- var Collapse = function ( element, options ) {
- this.$element = $(element)
- this.options = $.extend({}, $.fn.collapse.defaults, options)
-
- if (this.options["parent"]) {
- this.$parent = $(this.options["parent"])
- }
-
- this.options.toggle && this.toggle()
- }
-
- Collapse.prototype = {
-
- constructor: Collapse
-
- , dimension: function () {
- var hasWidth = this.$element.hasClass('width')
- return hasWidth ? 'width' : 'height'
- }
-
- , show: function () {
- var dimension = this.dimension()
- , scroll = $.camelCase(['scroll', dimension].join('-'))
- , actives = this.$parent && this.$parent.find('.in')
- , hasData
-
- if (actives && actives.length) {
- hasData = actives.data('collapse')
- actives.collapse('hide')
- hasData || actives.data('collapse', null)
- }
- this.$element[dimension](0)
- this.transition('addClass', 'show', 'shown')
- this.$element[dimension](this.$element[0][scroll])
-
- }
-
- , hide: function () {
- var dimension = this.dimension()
- this.reset(this.$element[dimension]())
- this.transition('removeClass', 'hide', 'hidden')
- this.$element[dimension](0)
- }
-
- , reset: function ( size ) {
- var dimension = this.dimension()
-
- this.$element
- .removeClass('collapse')
- [dimension](size || 'auto')
- [0].offsetWidth
-
- this.$element.addClass('collapse')
- }
-
- , transition: function ( method, startEvent, completeEvent ) {
- var that = this
- , complete = function () {
- if (startEvent == 'show') that.reset()
- that.$element.trigger(completeEvent)
- setTimeout(mainTablePosition,150);
- }
-
- this.$element
- .trigger(startEvent)
- [method]('in')
-
- $.support.transition && this.$element.hasClass('collapse') ?
- this.$element.one($.support.transition.end, complete) :
- complete()
- }
-
- , toggle: function () {
- this[this.$element.hasClass('in') ? 'hide' : 'show']()
- }
-
- }
-
- /* COLLAPSIBLE PLUGIN DEFINITION
- * ============================== */
-
- $.fn.collapse = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('collapse')
- , options = typeof option == 'object' && option
- if (!data) $this.data('collapse', (data = new Collapse(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.collapse.defaults = {
- toggle: true
- }
-
- $.fn.collapse.Constructor = Collapse
-
-
- /* COLLAPSIBLE DATA-API
- * ==================== */
-
- $(function () {
- $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
- var $this = $(this), href
- , target = $this.attr('data-target')
- || e.preventDefault()
- || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
- , option = $(target).data('collapse') ? 'toggle' : $this.data()
- $this.parents('li').siblings().removeClass('active');
- $this.parents('li').toggleClass('active');
- $(target).collapse(option)
- })
- })
-
-
-
-
-
-
-
-}( window.jQuery )
-
-/* ==========================================================
- * bootstrap-carousel.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#carousel
- * ==========================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ========================================================== */
-
-
-!function( $ ){
-
- "use strict"
-
- /* CAROUSEL CLASS DEFINITION
- * ========================= */
-
- var Carousel = function (element, options) {
- this.$element = $(element)
- this.options = $.extend({}, $.fn.carousel.defaults, options)
- this.options.slide && this.slide(this.options.slide)
- }
-
- Carousel.prototype = {
-
- cycle: function () {
- this.interval = setInterval($.proxy(this.next, this), this.options.interval)
- return this
- }
-
- , to: function (pos) {
- var $active = this.$element.find('.active')
- , children = $active.parent().children()
- , activePos = children.index($active)
- , that = this
-
- if (pos > (children.length - 1) || pos < 0) return
-
- if (this.sliding) {
- return this.$element.one('slid', function () {
- that.to(pos)
- })
- }
-
- if (activePos == pos) {
- return this.pause().cycle()
- }
-
- return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
- }
-
- , pause: function () {
- clearInterval(this.interval)
- return this
- }
-
- , next: function () {
- if (this.sliding) return
- return this.slide('next')
- }
-
- , prev: function () {
- if (this.sliding) return
- return this.slide('prev')
- }
-
- , slide: function (type, next) {
- var $active = this.$element.find('.active')
- , $next = next || $active[type]()
- , isCycling = this.interval
- , direction = type == 'next' ? 'left' : 'right'
- , fallback = type == 'next' ? 'first' : 'last'
- , that = this
-
- this.sliding = true
-
- isCycling && this.pause()
-
- $next = $next.length ? $next : this.$element.find('.item')[fallback]()
-
- if (!$.support.transition && this.$element.hasClass('slide')) {
- this.$element.trigger('slide')
- $active.removeClass('active')
- $next.addClass('active')
- this.sliding = false
- this.$element.trigger('slid')
- } else {
- $next.addClass(type)
- $next[0].offsetWidth // force reflow
- $active.addClass(direction)
- $next.addClass(direction)
- this.$element.trigger('slide')
- this.$element.one($.support.transition.end, function () {
- $next.removeClass([type, direction].join(' ')).addClass('active')
- $active.removeClass(['active', direction].join(' '))
- that.sliding = false
- setTimeout(function () { that.$element.trigger('slid') }, 0)
- })
- }
-
- isCycling && this.cycle()
-
- return this
- }
-
- }
-
-
- /* CAROUSEL PLUGIN DEFINITION
- * ========================== */
-
- $.fn.carousel = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('carousel')
- , options = typeof option == 'object' && option
- if (!data) $this.data('carousel', (data = new Carousel(this, options)))
- if (typeof option == 'number') data.to(option)
- else if (typeof option == 'string' || (option = options.slide)) data[option]()
- else data.cycle()
- })
- }
-
- $.fn.carousel.defaults = {
- interval: 5000
- }
-
- $.fn.carousel.Constructor = Carousel
-
-
- /* CAROUSEL DATA-API
- * ================= */
-
- $(function () {
- $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
- var $this = $(this), href
- , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
- , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
- $target.carousel(options)
- e.preventDefault()
- })
- })
-
-}( window.jQuery )
-
-/* =============================================================
- * bootstrap-typeahead.js v2.0.0
- * http://twitter.github.com/bootstrap/javascript.html#typeahead
- * =============================================================
- * Copyright 2012 Twitter, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-!function( $ ){
-
- "use strict"
-
- var Typeahead = function ( element, options ) {
- this.$element = $(element)
- this.options = $.extend({}, $.fn.typeahead.defaults, options)
- this.matcher = this.options.matcher || this.matcher
- this.sorter = this.options.sorter || this.sorter
- this.highlighter = this.options.highlighter || this.highlighter
- this.$menu = $(this.options.menu).appendTo('body')
- this.source = this.options.source
- this.shown = false
- this.listen()
- }
-
- Typeahead.prototype = {
-
- constructor: Typeahead
-
- , select: function () {
- var val = this.$menu.find('.active').attr('data-value')
- this.$element.val(val)
- return this.hide()
- }
-
- , show: function () {
- var pos = $.extend({}, this.$element.offset(), {
- height: this.$element[0].offsetHeight
- })
-
- this.$menu.css({
- top: pos.top + pos.height
- , left: pos.left
- })
-
- this.$menu.show()
- this.shown = true
- return this
- }
-
- , hide: function () {
- this.$menu.hide()
- this.shown = false
- return this
- }
-
- , lookup: function (event) {
- var that = this
- , items
- , q
-
- this.query = this.$element.val()
-
- if (!this.query) {
- return this.shown ? this.hide() : this
- }
-
- items = $.grep(this.source, function (item) {
- if (that.matcher(item)) return item
- })
-
- items = this.sorter(items)
-
- if (!items.length) {
- return this.shown ? this.hide() : this
- }
-
- return this.render(items.slice(0, this.options.items)).show()
- }
-
- , matcher: function (item) {
- return ~item.toLowerCase().indexOf(this.query.toLowerCase())
- }
-
- , sorter: function (items) {
- var beginswith = []
- , caseSensitive = []
- , caseInsensitive = []
- , item
-
- while (item = items.shift()) {
- if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
- else if (~item.indexOf(this.query)) caseSensitive.push(item)
- else caseInsensitive.push(item)
- }
-
- return beginswith.concat(caseSensitive, caseInsensitive)
- }
-
- , highlighter: function (item) {
- return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) {
- return '' + match + ' '
- })
- }
-
- , render: function (items) {
- var that = this
-
- items = $(items).map(function (i, item) {
- i = $(that.options.item).attr('data-value', item)
- i.find('a').html(that.highlighter(item))
- return i[0]
- })
-
- items.first().addClass('active')
- this.$menu.html(items)
- return this
- }
-
- , next: function (event) {
- var active = this.$menu.find('.active').removeClass('active')
- , next = active.next()
-
- if (!next.length) {
- next = $(this.$menu.find('li')[0])
- }
-
- next.addClass('active')
- }
-
- , prev: function (event) {
- var active = this.$menu.find('.active').removeClass('active')
- , prev = active.prev()
-
- if (!prev.length) {
- prev = this.$menu.find('li').last()
- }
-
- prev.addClass('active')
- }
-
- , listen: function () {
- this.$element
- .on('blur', $.proxy(this.blur, this))
- .on('keypress', $.proxy(this.keypress, this))
- .on('keyup', $.proxy(this.keyup, this))
-
- if ($.browser.webkit || $.browser.msie) {
- this.$element.on('keydown', $.proxy(this.keypress, this))
- }
-
- this.$menu
- .on('click', $.proxy(this.click, this))
- .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
- }
-
- , keyup: function (e) {
- e.stopPropagation()
- e.preventDefault()
-
- switch(e.keyCode) {
- case 40: // down arrow
- case 38: // up arrow
- break
-
- case 9: // tab
- case 13: // enter
- if (!this.shown) return
- this.select()
- break
-
- case 27: // escape
- this.hide()
- break
-
- default:
- this.lookup()
- }
-
- }
-
- , keypress: function (e) {
- e.stopPropagation()
- if (!this.shown) return
-
- switch(e.keyCode) {
- case 9: // tab
- case 13: // enter
- case 27: // escape
- e.preventDefault()
- break
-
- case 38: // up arrow
- e.preventDefault()
- this.prev()
- break
-
- case 40: // down arrow
- e.preventDefault()
- this.next()
- break
- }
- }
-
- , blur: function (e) {
- var that = this
- e.stopPropagation()
- e.preventDefault()
- setTimeout(function () { that.hide() }, 150)
- }
-
- , click: function (e) {
- e.stopPropagation()
- e.preventDefault()
- this.select()
- }
-
- , mouseenter: function (e) {
- this.$menu.find('.active').removeClass('active')
- $(e.currentTarget).addClass('active')
- }
-
- }
-
-
- /* TYPEAHEAD PLUGIN DEFINITION
- * =========================== */
-
- $.fn.typeahead = function ( option ) {
- return this.each(function () {
- var $this = $(this)
- , data = $this.data('typeahead')
- , options = typeof option == 'object' && option
- if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
- if (typeof option == 'string') data[option]()
- })
- }
-
- $.fn.typeahead.defaults = {
- source: []
- , items: 8
- , menu: ''
- , item: ' '
- }
-
- $.fn.typeahead.Constructor = Typeahead
-
-
- /* TYPEAHEAD DATA-API
- * ================== */
-
- $(function () {
- $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
- var $this = $(this)
- if ($this.data('typeahead')) return
- e.preventDefault()
- $this.typeahead($this.data())
- })
- })
-
-}( window.jQuery )
+/* ===================================================
+ * bootstrap-transition.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
+ * ===================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ $(function () {
+
+ "use strict"; // jshint ;_;
+
+
+ /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
+ * ======================================================= */
+
+ $.support.transition = (function () {
+
+ var transitionEnd = (function () {
+
+ var el = document.createElement('bootstrap')
+ , transEndEventNames = {
+ 'WebkitTransition' : 'webkitTransitionEnd'
+ , 'MozTransition' : 'transitionend'
+ , 'OTransition' : 'oTransitionEnd otransitionend'
+ , 'transition' : 'transitionend'
+ }
+ , name
+
+ for (name in transEndEventNames){
+ if (el.style[name] !== undefined) {
+ return transEndEventNames[name]
+ }
+ }
+
+ }())
+
+ return transitionEnd && {
+ end: transitionEnd
+ }
+
+ })()
+
+ })
+
+}(window.jQuery);/* ==========================================================
+ * bootstrap-alert.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* ALERT CLASS DEFINITION
+ * ====================== */
+
+ var dismiss = '[data-dismiss="alert"]'
+ , Alert = function (el) {
+ $(el).on('click', dismiss, this.close)
+ }
+
+ Alert.prototype.close = function (e) {
+ var $this = $(this)
+ , selector = $this.attr('data-target')
+ , $parent
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+
+ e && e.preventDefault()
+
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
+
+ $parent.trigger(e = $.Event('close'))
+
+ if (e.isDefaultPrevented()) return
+
+ $parent.removeClass('in')
+
+ function removeElement() {
+ $parent
+ .trigger('closed')
+ .remove()
+ }
+
+ $.support.transition && $parent.hasClass('fade') ?
+ $parent.on($.support.transition.end, removeElement) :
+ removeElement()
+ }
+
+
+ /* ALERT PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.alert = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('alert')
+ if (!data) $this.data('alert', (data = new Alert(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.alert.Constructor = Alert
+
+
+ /* ALERT DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
+ })
+
+}(window.jQuery);/* ============================================================
+ * bootstrap-button.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* BUTTON PUBLIC CLASS DEFINITION
+ * ============================== */
+
+ var Button = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.button.defaults, options)
+ }
+
+ Button.prototype.setState = function (state) {
+ var d = 'disabled'
+ , $el = this.$element
+ , data = $el.data()
+ , val = $el.is('input') ? 'val' : 'html'
+
+ state = state + 'Text'
+ data.resetText || $el.data('resetText', $el[val]())
+
+ $el[val](data[state] || this.options[state])
+
+ // push to event loop to allow forms to submit
+ setTimeout(function () {
+ state == 'loadingText' ?
+ $el.addClass(d).attr(d, d) :
+ $el.removeClass(d).removeAttr(d)
+ }, 0)
+ }
+
+ Button.prototype.toggle = function () {
+ var $parent = this.$element.closest('[data-toggle="buttons-radio"]')
+
+ $parent && $parent
+ .find('.active')
+ .removeClass('active')
+
+ this.$element.toggleClass('active')
+ }
+
+
+ /* BUTTON PLUGIN DEFINITION
+ * ======================== */
+
+ $.fn.button = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('button')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('button', (data = new Button(this, options)))
+ if (option == 'toggle') data.toggle()
+ else if (option) data.setState(option)
+ })
+ }
+
+ $.fn.button.defaults = {
+ loadingText: 'loading...'
+ }
+
+ $.fn.button.Constructor = Button
+
+
+ /* BUTTON DATA-API
+ * =============== */
+
+ $(function () {
+ $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
+ var $btn = $(e.target)
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+ $btn.button('toggle')
+ })
+ })
+
+}(window.jQuery);/* ==========================================================
+ * bootstrap-carousel.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* CAROUSEL CLASS DEFINITION
+ * ========================= */
+
+ var Carousel = function (element, options) {
+ this.$element = $(element)
+ this.options = options
+ this.options.slide && this.slide(this.options.slide)
+ this.options.pause == 'hover' && this.$element
+ .on('mouseenter', $.proxy(this.pause, this))
+ .on('mouseleave', $.proxy(this.cycle, this))
+ }
+
+ Carousel.prototype = {
+
+ cycle: function (e) {
+ if (!e) this.paused = false
+ this.options.interval
+ && !this.paused
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+ return this
+ }
+
+ , to: function (pos) {
+ var $active = this.$element.find('.item.active')
+ , children = $active.parent().children()
+ , activePos = children.index($active)
+ , that = this
+
+ if (pos > (children.length - 1) || pos < 0) return
+
+ if (this.sliding) {
+ return this.$element.one('slid', function () {
+ that.to(pos)
+ })
+ }
+
+ if (activePos == pos) {
+ return this.pause().cycle()
+ }
+
+ return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
+ }
+
+ , pause: function (e) {
+ if (!e) this.paused = true
+ if (this.$element.find('.next, .prev').length && $.support.transition.end) {
+ this.$element.trigger($.support.transition.end)
+ this.cycle()
+ }
+ clearInterval(this.interval)
+ this.interval = null
+ return this
+ }
+
+ , next: function () {
+ if (this.sliding) return
+ return this.slide('next')
+ }
+
+ , prev: function () {
+ if (this.sliding) return
+ return this.slide('prev')
+ }
+
+ , slide: function (type, next) {
+ var $active = this.$element.find('.item.active')
+ , $next = next || $active[type]()
+ , isCycling = this.interval
+ , direction = type == 'next' ? 'left' : 'right'
+ , fallback = type == 'next' ? 'first' : 'last'
+ , that = this
+ , e = $.Event('slide', {
+ relatedTarget: $next[0]
+ })
+
+ this.sliding = true
+
+ isCycling && this.pause()
+
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
+
+ if ($next.hasClass('active')) return
+
+ if ($.support.transition && this.$element.hasClass('slide')) {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $next.addClass(type)
+ $next[0].offsetWidth // force reflow
+ $active.addClass(direction)
+ $next.addClass(direction)
+ this.$element.one($.support.transition.end, function () {
+ $next.removeClass([type, direction].join(' ')).addClass('active')
+ $active.removeClass(['active', direction].join(' '))
+ that.sliding = false
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
+ })
+ } else {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $active.removeClass('active')
+ $next.addClass('active')
+ this.sliding = false
+ this.$element.trigger('slid')
+ }
+
+ isCycling && this.cycle()
+
+ return this
+ }
+
+ }
+
+
+ /* CAROUSEL PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.carousel = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('carousel')
+ , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
+ , action = typeof option == 'string' ? option : options.slide
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
+ if (typeof option == 'number') data.to(option)
+ else if (action) data[action]()
+ else if (options.interval) data.cycle()
+ })
+ }
+
+ $.fn.carousel.defaults = {
+ interval: 5000
+ , pause: 'hover'
+ }
+
+ $.fn.carousel.Constructor = Carousel
+
+
+ /* CAROUSEL DATA-API
+ * ================= */
+
+ $(function () {
+ $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
+ $target.carousel(options)
+ e.preventDefault()
+ })
+ })
+
+}(window.jQuery);/* =============================================================
+ * bootstrap-collapse.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* COLLAPSE PUBLIC CLASS DEFINITION
+ * ================================ */
+
+ var Collapse = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
+
+ if (this.options.parent) {
+ this.$parent = $(this.options.parent)
+ }
+
+ this.options.toggle && this.toggle()
+ }
+
+ Collapse.prototype = {
+
+ constructor: Collapse
+
+ , dimension: function () {
+ var hasWidth = this.$element.hasClass('width')
+ return hasWidth ? 'width' : 'height'
+ }
+
+ , show: function () {
+ var dimension
+ , scroll
+ , actives
+ , hasData
+
+ if (this.transitioning) return
+
+ dimension = this.dimension()
+ scroll = $.camelCase(['scroll', dimension].join('-'))
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
+
+ if (actives && actives.length) {
+ hasData = actives.data('collapse')
+ if (hasData && hasData.transitioning) return
+ actives.collapse('hide')
+ hasData || actives.data('collapse', null)
+ }
+
+ this.$element[dimension](0)
+ this.transition('addClass', $.Event('show'), 'shown')
+ $.support.transition && this.$element[dimension](this.$element[0][scroll])
+ }
+
+ , hide: function () {
+ var dimension
+ if (this.transitioning) return
+ dimension = this.dimension()
+ this.reset(this.$element[dimension]())
+ this.transition('removeClass', $.Event('hide'), 'hidden')
+ this.$element[dimension](0)
+ }
+
+ , reset: function (size) {
+ var dimension = this.dimension()
+
+ this.$element
+ .removeClass('collapse')
+ [dimension](size || 'auto')
+ [0].offsetWidth
+
+ this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
+ return this
+ }
+
+ , transition: function (method, startEvent, completeEvent) {
+ var that = this
+ , complete = function () {
+ if (startEvent.type == 'show') that.reset()
+ that.transitioning = 0
+ that.$element.trigger(completeEvent)
+ // for orbit
+ setTimeout(mainTablePosition,150);
+ }
+
+ this.$element.trigger(startEvent)
+
+ if (startEvent.isDefaultPrevented()) return
+
+ this.transitioning = 1
+
+ this.$element[method]('in')
+
+ $.support.transition && this.$element.hasClass('collapse') ?
+ this.$element.one($.support.transition.end, complete) :
+ complete()
+ }
+
+ , toggle: function () {
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
+ }
+
+ }
+
+
+ /* COLLAPSIBLE PLUGIN DEFINITION
+ * ============================== */
+
+ $.fn.collapse = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('collapse')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.collapse.defaults = {
+ toggle: true
+ }
+
+ $.fn.collapse.Constructor = Collapse
+
+
+ /* COLLAPSIBLE DATA-API
+ * ==================== */
+
+ $(function () {
+ $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
+ var $this = $(this), href
+ , target = $this.attr('data-target')
+ || e.preventDefault()
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
+ $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
+ $(target).collapse(option)
+ // for orbit
+ $this.parents('li').siblings().removeClass('active');
+ $this.parents('li').toggleClass('active');
+ })
+ })
+
+}(window.jQuery);/* ============================================================
+ * bootstrap-dropdown.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
+ * ============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* DROPDOWN CLASS DEFINITION
+ * ========================= */
+
+ var toggle = '[data-toggle=dropdown]'
+ , Dropdown = function (element) {
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
+ $('html').on('click.dropdown.data-api', function () {
+ $el.parent().removeClass('open')
+ })
+ }
+
+ Dropdown.prototype = {
+
+ constructor: Dropdown
+
+ , toggle: function (e) {
+ var $this = $(this)
+ , $parent
+ , isActive
+
+ if ($this.is('.disabled, :disabled')) return
+
+ $parent = getParent($this)
+
+ isActive = $parent.hasClass('open')
+
+ clearMenus()
+
+ if (!isActive) {
+ $parent.toggleClass('open')
+ $this.focus()
+ }
+
+ return false
+ }
+
+ , keydown: function (e) {
+ var $this
+ , $items
+ , $active
+ , $parent
+ , isActive
+ , index
+
+ if (!/(38|40|27)/.test(e.keyCode)) return
+
+ $this = $(this)
+
+ e.preventDefault()
+ e.stopPropagation()
+
+ if ($this.is('.disabled, :disabled')) return
+
+ $parent = getParent($this)
+
+ isActive = $parent.hasClass('open')
+
+ if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
+
+ $items = $('[role=menu] li:not(.divider) a', $parent)
+
+ if (!$items.length) return
+
+ index = $items.index($items.filter(':focus'))
+
+ if (e.keyCode == 38 && index > 0) index-- // up
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
+ if (!~index) index = 0
+
+ $items
+ .eq(index)
+ .focus()
+ }
+
+ }
+
+ function clearMenus() {
+ getParent($(toggle))
+ .removeClass('open')
+ }
+
+ function getParent($this) {
+ var selector = $this.attr('data-target')
+ , $parent
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+ $parent.length || ($parent = $this.parent())
+
+ return $parent
+ }
+
+
+ /* DROPDOWN PLUGIN DEFINITION
+ * ========================== */
+
+ $.fn.dropdown = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('dropdown')
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
+ * =================================== */
+
+ $(function () {
+ $('html')
+ .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
+ $('body')
+ .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
+ .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
+ })
+
+}(window.jQuery);/* =========================================================
+ * bootstrap-modal.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#modals
+ * =========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================= */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* MODAL CLASS DEFINITION
+ * ====================== */
+
+ var Modal = function (element, options) {
+ this.options = options
+ this.$element = $(element)
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
+ this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
+ }
+
+ Modal.prototype = {
+
+ constructor: Modal
+
+ , toggle: function () {
+ return this[!this.isShown ? 'show' : 'hide']()
+ }
+
+ , show: function () {
+ var that = this
+ , e = $.Event('show')
+
+ this.$element.trigger(e)
+
+ if (this.isShown || e.isDefaultPrevented()) return
+
+ $('body').addClass('modal-open')
+
+ this.isShown = true
+
+ this.escape()
+
+ this.backdrop(function () {
+ var transition = $.support.transition && that.$element.hasClass('fade')
+
+ if (!that.$element.parent().length) {
+ that.$element.appendTo(document.body) //don't move modals dom position
+ }
+
+ that.$element
+ .show()
+
+ if (transition) {
+ that.$element[0].offsetWidth // force reflow
+ }
+
+ that.$element
+ .addClass('in')
+ .attr('aria-hidden', false)
+ .focus()
+
+ that.enforceFocus()
+
+ transition ?
+ that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
+ that.$element.trigger('shown')
+
+ })
+ }
+
+ , hide: function (e) {
+ e && e.preventDefault()
+
+ var that = this
+
+ e = $.Event('hide')
+
+ this.$element.trigger(e)
+
+ if (!this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = false
+
+ $('body').removeClass('modal-open')
+
+ this.escape()
+
+ $(document).off('focusin.modal')
+
+ this.$element
+ .removeClass('in')
+ .attr('aria-hidden', true)
+
+ $.support.transition && this.$element.hasClass('fade') ?
+ this.hideWithTransition() :
+ this.hideModal()
+ }
+
+ , enforceFocus: function () {
+ var that = this
+ $(document).on('focusin.modal', function (e) {
+ if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
+ that.$element.focus()
+ }
+ })
+ }
+
+ , escape: function () {
+ var that = this
+ if (this.isShown && this.options.keyboard) {
+ this.$element.on('keyup.dismiss.modal', function ( e ) {
+ e.which == 27 && that.hide()
+ })
+ } else if (!this.isShown) {
+ this.$element.off('keyup.dismiss.modal')
+ }
+ }
+
+ , hideWithTransition: function () {
+ var that = this
+ , timeout = setTimeout(function () {
+ that.$element.off($.support.transition.end)
+ that.hideModal()
+ }, 500)
+
+ this.$element.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ that.hideModal()
+ })
+ }
+
+ , hideModal: function (that) {
+ this.$element
+ .hide()
+ .trigger('hidden')
+
+ this.backdrop()
+ }
+
+ , removeBackdrop: function () {
+ this.$backdrop.remove()
+ this.$backdrop = null
+ }
+
+ , backdrop: function (callback) {
+ var that = this
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+ if (this.isShown && this.options.backdrop) {
+ var doAnimate = $.support.transition && animate
+
+ this.$backdrop = $('
')
+ .appendTo(document.body)
+
+ if (this.options.backdrop != 'static') {
+ this.$backdrop.click($.proxy(this.hide, this))
+ }
+
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+ this.$backdrop.addClass('in')
+
+ doAnimate ?
+ this.$backdrop.one($.support.transition.end, callback) :
+ callback()
+
+ } else if (!this.isShown && this.$backdrop) {
+ this.$backdrop.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade')?
+ this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
+ this.removeBackdrop()
+
+ } else if (callback) {
+ callback()
+ }
+ }
+ }
+
+
+ /* MODAL PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.modal = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('modal')
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option]()
+ else if (options.show) data.show()
+ })
+ }
+
+ $.fn.modal.defaults = {
+ backdrop: true
+ , keyboard: true
+ , show: true
+ }
+
+ $.fn.modal.Constructor = Modal
+
+
+ /* MODAL DATA-API
+ * ============== */
+
+ $(function () {
+ $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
+ var $this = $(this)
+ , href = $this.attr('href')
+ , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
+ , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+ e.preventDefault()
+
+ $target
+ .modal(option)
+ .one('hide', function () {
+ $this.focus()
+ })
+ })
+ })
+
+}(window.jQuery);/* ===========================================================
+ * bootstrap-tooltip.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* TOOLTIP PUBLIC CLASS DEFINITION
+ * =============================== */
+
+ var Tooltip = function (element, options) {
+ this.init('tooltip', element, options)
+ }
+
+ Tooltip.prototype = {
+
+ constructor: Tooltip
+
+ , init: function (type, element, options) {
+ var eventIn
+ , eventOut
+
+ this.type = type
+ this.$element = $(element)
+ this.options = this.getOptions(options)
+ this.enabled = true
+
+ if (this.options.trigger == 'click') {
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+ } else if (this.options.trigger != 'manual') {
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+ }
+
+ this.options.selector ?
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+ this.fixTitle()
+ }
+
+ , getOptions: function (options) {
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
+
+ if (options.delay && typeof options.delay == 'number') {
+ options.delay = {
+ show: options.delay
+ , hide: options.delay
+ }
+ }
+
+ return options
+ }
+
+ , enter: function (e) {
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+ if (!self.options.delay || !self.options.delay.show) return self.show()
+
+ clearTimeout(this.timeout)
+ self.hoverState = 'in'
+ this.timeout = setTimeout(function() {
+ if (self.hoverState == 'in') self.show()
+ }, self.options.delay.show)
+ }
+
+ , leave: function (e) {
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+ if (this.timeout) clearTimeout(this.timeout)
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+ self.hoverState = 'out'
+ this.timeout = setTimeout(function() {
+ if (self.hoverState == 'out') self.hide()
+ }, self.options.delay.hide)
+ }
+
+ , show: function () {
+ var $tip
+ , inside
+ , pos
+ , actualWidth
+ , actualHeight
+ , placement
+ , tp
+
+ if (this.hasContent() && this.enabled) {
+ $tip = this.tip()
+ this.setContent()
+
+ if (this.options.animation) {
+ $tip.addClass('fade')
+ }
+
+ placement = typeof this.options.placement == 'function' ?
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
+ this.options.placement
+
+ inside = /in/.test(placement)
+
+ $tip
+ .remove()
+ .css({ top: 0, left: 0, display: 'block' })
+ .appendTo(inside ? this.$element : document.body)
+
+ pos = this.getPosition(inside)
+
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+
+ switch (inside ? placement.split(' ')[1] : placement) {
+ case 'bottom':
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
+ break
+ case 'top':
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
+ break
+ case 'left':
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
+ break
+ case 'right':
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
+ break
+ }
+
+ $tip
+ .css(tp)
+ .addClass(placement)
+ .addClass('in')
+ }
+ }
+
+ , setContent: function () {
+ var $tip = this.tip()
+ , title = this.getTitle()
+
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+ $tip.removeClass('fade in top bottom left right')
+ }
+
+ , hide: function () {
+ var that = this
+ , $tip = this.tip()
+
+ $tip.removeClass('in')
+
+ function removeWithAnimation() {
+ var timeout = setTimeout(function () {
+ $tip.off($.support.transition.end).remove()
+ }, 500)
+
+ $tip.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ $tip.remove()
+ })
+ }
+
+ $.support.transition && this.$tip.hasClass('fade') ?
+ removeWithAnimation() :
+ $tip.remove()
+
+ return this
+ }
+
+ , fixTitle: function () {
+ var $e = this.$element
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
+ }
+ }
+
+ , hasContent: function () {
+ return this.getTitle()
+ }
+
+ , getPosition: function (inside) {
+ return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
+ width: this.$element[0].offsetWidth
+ , height: this.$element[0].offsetHeight
+ })
+ }
+
+ , getTitle: function () {
+ var title
+ , $e = this.$element
+ , o = this.options
+
+ title = $e.attr('data-original-title')
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
+
+ return title
+ }
+
+ , tip: function () {
+ return this.$tip = this.$tip || $(this.options.template)
+ }
+
+ , validate: function () {
+ if (!this.$element[0].parentNode) {
+ this.hide()
+ this.$element = null
+ this.options = null
+ }
+ }
+
+ , enable: function () {
+ this.enabled = true
+ }
+
+ , disable: function () {
+ this.enabled = false
+ }
+
+ , toggleEnabled: function () {
+ this.enabled = !this.enabled
+ }
+
+ , toggle: function () {
+ this[this.tip().hasClass('in') ? 'hide' : 'show']()
+ }
+
+ , destroy: function () {
+ this.hide().$element.off('.' + this.type).removeData(this.type)
+ }
+
+ }
+
+
+ /* TOOLTIP PLUGIN DEFINITION
+ * ========================= */
+
+ $.fn.tooltip = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tooltip')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tooltip.Constructor = Tooltip
+
+ $.fn.tooltip.defaults = {
+ animation: true
+ , placement: 'top'
+ , selector: false
+ , template: ''
+ , trigger: 'hover'
+ , title: ''
+ , delay: 0
+ , html: true
+ }
+
+}(window.jQuery);
+/* ===========================================================
+ * bootstrap-popover.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#popovers
+ * ===========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * =========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* POPOVER PUBLIC CLASS DEFINITION
+ * =============================== */
+
+ var Popover = function (element, options) {
+ this.init('popover', element, options)
+ }
+
+
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
+ ========================================== */
+
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
+
+ constructor: Popover
+
+ , setContent: function () {
+ var $tip = this.tip()
+ , title = this.getTitle()
+ , content = this.getContent()
+
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+ $tip.find('.popover-content > *')[this.options.html ? 'html' : 'text'](content)
+
+ $tip.removeClass('fade top bottom left right in')
+ }
+
+ , hasContent: function () {
+ return this.getTitle() || this.getContent()
+ }
+
+ , getContent: function () {
+ var content
+ , $e = this.$element
+ , o = this.options
+
+ content = $e.attr('data-content')
+ || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
+
+ return content
+ }
+
+ , tip: function () {
+ if (!this.$tip) {
+ this.$tip = $(this.options.template)
+ }
+ return this.$tip
+ }
+
+ , destroy: function () {
+ this.hide().$element.off('.' + this.type).removeData(this.type)
+ }
+
+ })
+
+
+ /* POPOVER PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.popover = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('popover')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('popover', (data = new Popover(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.popover.Constructor = Popover
+
+ $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
+ placement: 'right'
+ , trigger: 'click'
+ , content: ''
+ , template: ''
+ })
+
+}(window.jQuery);/* =============================================================
+ * bootstrap-scrollspy.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#scrollspy
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* SCROLLSPY CLASS DEFINITION
+ * ========================== */
+
+ function ScrollSpy(element, options) {
+ var process = $.proxy(this.process, this)
+ , $element = $(element).is('body') ? $(window) : $(element)
+ , href
+ this.options = $.extend({}, $.fn.scrollspy.defaults, options)
+ this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
+ this.selector = (this.options.target
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ || '') + ' .nav li > a'
+ this.$body = $('body')
+ this.refresh()
+ this.process()
+ }
+
+ ScrollSpy.prototype = {
+
+ constructor: ScrollSpy
+
+ , refresh: function () {
+ var self = this
+ , $targets
+
+ this.offsets = $([])
+ this.targets = $([])
+
+ $targets = this.$body
+ .find(this.selector)
+ .map(function () {
+ var $el = $(this)
+ , href = $el.data('target') || $el.attr('href')
+ , $href = /^#\w/.test(href) && $(href)
+ return ( $href
+ && $href.length
+ && [[ $href.position().top, href ]] ) || null
+ })
+ .sort(function (a, b) { return a[0] - b[0] })
+ .each(function () {
+ self.offsets.push(this[0])
+ self.targets.push(this[1])
+ })
+ }
+
+ , process: function () {
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
+ , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
+ , maxScroll = scrollHeight - this.$scrollElement.height()
+ , offsets = this.offsets
+ , targets = this.targets
+ , activeTarget = this.activeTarget
+ , i
+
+ if (scrollTop >= maxScroll) {
+ return activeTarget != (i = targets.last()[0])
+ && this.activate ( i )
+ }
+
+ for (i = offsets.length; i--;) {
+ activeTarget != targets[i]
+ && scrollTop >= offsets[i]
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+ && this.activate( targets[i] )
+ }
+ }
+
+ , activate: function (target) {
+ var active
+ , selector
+
+ this.activeTarget = target
+
+ $(this.selector)
+ .parent('.active')
+ .removeClass('active')
+
+ selector = this.selector
+ + '[data-target="' + target + '"],'
+ + this.selector + '[href="' + target + '"]'
+
+ active = $(selector)
+ .parent('li')
+ .addClass('active')
+
+ if (active.parent('.dropdown-menu').length) {
+ active = active.closest('li.dropdown').addClass('active')
+ }
+
+ active.trigger('activate')
+ }
+
+ }
+
+
+ /* SCROLLSPY PLUGIN DEFINITION
+ * =========================== */
+
+ $.fn.scrollspy = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('scrollspy')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.scrollspy.Constructor = ScrollSpy
+
+ $.fn.scrollspy.defaults = {
+ offset: 10
+ }
+
+
+ /* SCROLLSPY DATA-API
+ * ================== */
+
+ $(window).on('load', function () {
+ $('[data-spy="scroll"]').each(function () {
+ var $spy = $(this)
+ $spy.scrollspy($spy.data())
+ })
+ })
+
+}(window.jQuery);/* ========================================================
+ * bootstrap-tab.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
+ * ========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* TAB CLASS DEFINITION
+ * ==================== */
+
+ var Tab = function (element) {
+ this.element = $(element)
+ }
+
+ Tab.prototype = {
+
+ constructor: Tab
+
+ , show: function () {
+ var $this = this.element
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
+ , selector = $this.attr('data-target')
+ , previous
+ , $target
+ , e
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ if ( $this.parent('li').hasClass('active') ) return
+
+ previous = $ul.find('.active a').last()[0]
+
+ e = $.Event('show', {
+ relatedTarget: previous
+ })
+
+ $this.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ $target = $(selector)
+
+ this.activate($this.parent('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $this.trigger({
+ type: 'shown'
+ , relatedTarget: previous
+ })
+ })
+ }
+
+ , activate: function ( element, container, callback) {
+ var $active = container.find('> .active')
+ , transition = callback
+ && $.support.transition
+ && $active.hasClass('fade')
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+
+ element.addClass('active')
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if ( element.parent('.dropdown-menu') ) {
+ element.closest('li.dropdown').addClass('active')
+ }
+
+ callback && callback()
+ }
+
+ transition ?
+ $active.one($.support.transition.end, next) :
+ next()
+
+ $active.removeClass('in')
+ }
+ }
+
+
+ /* TAB PLUGIN DEFINITION
+ * ===================== */
+
+ $.fn.tab = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tab')
+ if (!data) $this.data('tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tab.Constructor = Tab
+
+
+ /* TAB DATA-API
+ * ============ */
+
+ $(function () {
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+ e.preventDefault()
+ $(this).tab('show')
+ })
+ })
+
+}(window.jQuery);/* =============================================================
+ * bootstrap-typeahead.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function($){
+
+ "use strict"; // jshint ;_;
+
+
+ /* TYPEAHEAD PUBLIC CLASS DEFINITION
+ * ================================= */
+
+ var Typeahead = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
+ this.matcher = this.options.matcher || this.matcher
+ this.sorter = this.options.sorter || this.sorter
+ this.highlighter = this.options.highlighter || this.highlighter
+ this.updater = this.options.updater || this.updater
+ this.$menu = $(this.options.menu).appendTo('body')
+ this.source = this.options.source
+ this.shown = false
+ this.listen()
+ }
+
+ Typeahead.prototype = {
+
+ constructor: Typeahead
+
+ , select: function () {
+ var val = this.$menu.find('.active').attr('data-value')
+ this.$element
+ .val(this.updater(val))
+ .change()
+ return this.hide()
+ }
+
+ , updater: function (item) {
+ return item
+ }
+
+ , show: function () {
+ var pos = $.extend({}, this.$element.offset(), {
+ height: this.$element[0].offsetHeight
+ })
+
+ this.$menu.css({
+ top: pos.top + pos.height
+ , left: pos.left
+ })
+
+ this.$menu.show()
+ this.shown = true
+ return this
+ }
+
+ , hide: function () {
+ this.$menu.hide()
+ this.shown = false
+ return this
+ }
+
+ , lookup: function (event) {
+ var items
+
+ this.query = this.$element.val()
+
+ if (!this.query || this.query.length < this.options.minLength) {
+ return this.shown ? this.hide() : this
+ }
+
+ items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
+
+ return items ? this.process(items) : this
+ }
+
+ , process: function (items) {
+ var that = this
+
+ items = $.grep(items, function (item) {
+ return that.matcher(item)
+ })
+
+ items = this.sorter(items)
+
+ if (!items.length) {
+ return this.shown ? this.hide() : this
+ }
+
+ return this.render(items.slice(0, this.options.items)).show()
+ }
+
+ , matcher: function (item) {
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
+ }
+
+ , sorter: function (items) {
+ var beginswith = []
+ , caseSensitive = []
+ , caseInsensitive = []
+ , item
+
+ while (item = items.shift()) {
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
+ else if (~item.indexOf(this.query)) caseSensitive.push(item)
+ else caseInsensitive.push(item)
+ }
+
+ return beginswith.concat(caseSensitive, caseInsensitive)
+ }
+
+ , highlighter: function (item) {
+ var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
+ return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
+ return '' + match + ' '
+ })
+ }
+
+ , render: function (items) {
+ var that = this
+
+ items = $(items).map(function (i, item) {
+ i = $(that.options.item).attr('data-value', item)
+ i.find('a').html(that.highlighter(item))
+ return i[0]
+ })
+
+ items.first().addClass('active')
+ this.$menu.html(items)
+ return this
+ }
+
+ , next: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , next = active.next()
+
+ if (!next.length) {
+ next = $(this.$menu.find('li')[0])
+ }
+
+ next.addClass('active')
+ }
+
+ , prev: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , prev = active.prev()
+
+ if (!prev.length) {
+ prev = this.$menu.find('li').last()
+ }
+
+ prev.addClass('active')
+ }
+
+ , listen: function () {
+ this.$element
+ .on('blur', $.proxy(this.blur, this))
+ .on('keypress', $.proxy(this.keypress, this))
+ .on('keyup', $.proxy(this.keyup, this))
+
+ if ($.browser.chrome || $.browser.webkit || $.browser.msie) {
+ this.$element.on('keydown', $.proxy(this.keydown, this))
+ }
+
+ this.$menu
+ .on('click', $.proxy(this.click, this))
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+ }
+
+ , move: function (e) {
+ if (!this.shown) return
+
+ switch(e.keyCode) {
+ case 9: // tab
+ case 13: // enter
+ case 27: // escape
+ e.preventDefault()
+ break
+
+ case 38: // up arrow
+ e.preventDefault()
+ this.prev()
+ break
+
+ case 40: // down arrow
+ e.preventDefault()
+ this.next()
+ break
+ }
+
+ e.stopPropagation()
+ }
+
+ , keydown: function (e) {
+ this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27])
+ this.move(e)
+ }
+
+ , keypress: function (e) {
+ if (this.suppressKeyPressRepeat) return
+ this.move(e)
+ }
+
+ , keyup: function (e) {
+ switch(e.keyCode) {
+ case 40: // down arrow
+ case 38: // up arrow
+ break
+
+ case 9: // tab
+ case 13: // enter
+ if (!this.shown) return
+ this.select()
+ break
+
+ case 27: // escape
+ if (!this.shown) return
+ this.hide()
+ break
+
+ default:
+ this.lookup()
+ }
+
+ e.stopPropagation()
+ e.preventDefault()
+ }
+
+ , blur: function (e) {
+ var that = this
+ setTimeout(function () { that.hide() }, 150)
+ }
+
+ , click: function (e) {
+ e.stopPropagation()
+ e.preventDefault()
+ this.select()
+ }
+
+ , mouseenter: function (e) {
+ this.$menu.find('.active').removeClass('active')
+ $(e.currentTarget).addClass('active')
+ }
+
+ }
+
+
+ /* TYPEAHEAD PLUGIN DEFINITION
+ * =========================== */
+
+ $.fn.typeahead = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('typeahead')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.typeahead.defaults = {
+ source: []
+ , items: 8
+ , menu: ''
+ , item: ' '
+ , minLength: 1
+ }
+
+ $.fn.typeahead.Constructor = Typeahead
+
+
+ /* TYPEAHEAD DATA-API
+ * ================== */
+
+ $(function () {
+ $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
+ var $this = $(this)
+ if ($this.data('typeahead')) return
+ e.preventDefault()
+ $this.typeahead($this.data())
+ })
+ })
+
+}(window.jQuery);
+/* ==========================================================
+ * bootstrap-affix.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#affix
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* AFFIX CLASS DEFINITION
+ * ====================== */
+
+ var Affix = function (element, options) {
+ this.options = $.extend({}, $.fn.affix.defaults, options)
+ this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
+ this.$element = $(element)
+ this.checkPosition()
+ }
+
+ Affix.prototype.checkPosition = function () {
+ if (!this.$element.is(':visible')) return
+
+ var scrollHeight = $(document).height()
+ , scrollTop = this.$window.scrollTop()
+ , position = this.$element.offset()
+ , offset = this.options.offset
+ , offsetBottom = offset.bottom
+ , offsetTop = offset.top
+ , reset = 'affix affix-top affix-bottom'
+ , affix
+
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
+ if (typeof offsetTop == 'function') offsetTop = offset.top()
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
+
+ affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
+ false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
+ 'bottom' : offsetTop != null && scrollTop <= offsetTop ?
+ 'top' : false
+
+ if (this.affixed === affix) return
+
+ this.affixed = affix
+ this.unpin = affix == 'bottom' ? position.top - scrollTop : null
+
+ this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
+ }
+
+
+ /* AFFIX PLUGIN DEFINITION
+ * ======================= */
+
+ $.fn.affix = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('affix')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('affix', (data = new Affix(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.affix.Constructor = Affix
+
+ $.fn.affix.defaults = {
+ offset: 0
+ }
+
+
+ /* AFFIX DATA-API
+ * ============== */
+
+ $(window).on('load', function () {
+ $('[data-spy="affix"]').each(function () {
+ var $spy = $(this)
+ , data = $spy.data()
+
+ data.offset = data.offset || {}
+
+ data.offsetBottom && (data.offset.bottom = data.offsetBottom)
+ data.offsetTop && (data.offset.top = data.offsetTop)
+
+ $spy.affix(data)
+ })
+ })
+
+
+}(window.jQuery);
\ No newline at end of file
diff --git a/app/assets/javascripts/desktop.js b/app/assets/javascripts/desktop.js
new file mode 100644
index 000000000..7bfcb0b58
--- /dev/null
+++ b/app/assets/javascripts/desktop.js
@@ -0,0 +1,15 @@
+// This is a manifest file that'll be compiled into including all the files listed below.
+// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
+// be included in the compiled file accessible from http://example.com/assets/application.js
+// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
+// the compiled file.
+//
+//= require jquery
+//= require jquery_ujs
+//= require jquery-ui
+//= require jquery.tinyscrollbar
+//= require jquery.miniColors.min
+//= require bootstrap
+//= require orbitdesktopAPI
+//= require orbitTimeline
+//= require orbitdesktop
\ No newline at end of file
diff --git a/app/assets/javascripts/desktopload.js.erb b/app/assets/javascripts/desktopload.js.erb
new file mode 100644
index 000000000..c4e9d1e7a
--- /dev/null
+++ b/app/assets/javascripts/desktopload.js.erb
@@ -0,0 +1,6 @@
+
+orbitDesktop.prototype.themefolder = "desktop_themes";
+orbitDesktopAPI.prototype.notifyImgPath = "/assets/";
+alert("<%= @desktop.inspect %>")
+var od = new orbitDesktop("#ajax_container");
+
diff --git a/app/assets/javascripts/jquery.masonry.min.js b/app/assets/javascripts/jquery.masonry.min.js
new file mode 100644
index 000000000..67be98867
--- /dev/null
+++ b/app/assets/javascripts/jquery.masonry.min.js
@@ -0,0 +1,10 @@
+/**
+ * jQuery Masonry v2.1.05
+ * A dynamic layout plugin for jQuery
+ * The flip-side of CSS Floats
+ * http://masonry.desandro.com
+ *
+ * Licensed under the MIT license.
+ * Copyright 2012 David DeSandro
+ */
+(function(a,b,c){"use strict";var d=b.event,e;d.special.smartresize={setup:function(){b(this).bind("resize",d.special.smartresize.handler)},teardown:function(){b(this).unbind("resize",d.special.smartresize.handler)},handler:function(a,c){var d=this,f=arguments;a.type="smartresize",e&&clearTimeout(e),e=setTimeout(function(){b.event.handle.apply(d,f)},c==="execAsap"?0:100)}},b.fn.smartresize=function(a){return a?this.bind("smartresize",a):this.trigger("smartresize",["execAsap"])},b.Mason=function(a,c){this.element=b(c),this._create(a),this._init()},b.Mason.settings={isResizable:!0,isAnimated:!1,animationOptions:{queue:!1,duration:500},gutterWidth:0,isRTL:!1,isFitWidth:!1,containerStyle:{position:"relative"}},b.Mason.prototype={_filterFindBricks:function(a){var b=this.options.itemSelector;return b?a.filter(b).add(a.find(b)):a},_getBricks:function(a){var b=this._filterFindBricks(a).css({position:"absolute"}).addClass("masonry-brick");return b},_create:function(c){this.options=b.extend(!0,{},b.Mason.settings,c),this.styleQueue=[];var d=this.element[0].style;this.originalStyle={height:d.height||""};var e=this.options.containerStyle;for(var f in e)this.originalStyle[f]=d[f]||"";this.element.css(e),this.horizontalDirection=this.options.isRTL?"right":"left",this.offset={x:parseInt(this.element.css("padding-"+this.horizontalDirection),10),y:parseInt(this.element.css("padding-top"),10)},this.isFluid=this.options.columnWidth&&typeof this.options.columnWidth=="function";var g=this;setTimeout(function(){g.element.addClass("masonry")},0),this.options.isResizable&&b(a).bind("smartresize.masonry",function(){g.resize()}),this.reloadItems()},_init:function(a){this._getColumns(),this._reLayout(a)},option:function(a,c){b.isPlainObject(a)&&(this.options=b.extend(!0,this.options,a))},layout:function(a,b){for(var c=0,d=a.length;c');trigger.insertAfter(input);input.addClass('miniColors').data('original-maxlength',input.attr('maxlength')||null).data('original-autocomplete',input.attr('autocomplete')||null).data('letterCase','uppercase').data('trigger',trigger).data('hsb',hsb).data('change',o.change?o.change:null).attr('maxlength',7).attr('autocomplete','off').val('#'+convertCase(color,o.letterCase));if(o.readonly)input.prop('readonly',true);if(o.disabled)disable(input);trigger.bind('click.miniColors',function(event){event.preventDefault();if(input.val()==='')input.val('#');show(input)});input.bind('focus.miniColors',function(event){if(input.val()==='')input.val('#');show(input)});input.bind('blur.miniColors',function(event){var hex=expandHex(input.val());input.val(hex?'#'+convertCase(hex,input.data('letterCase')):'')});input.bind('keydown.miniColors',function(event){if(event.keyCode===9)hide(input)});input.bind('keyup.miniColors',function(event){setColorFromInput(input)});input.bind('paste.miniColors',function(event){setTimeout(function(){setColorFromInput(input)},5)})};var destroy=function(input){hide();input=$(input);input.data('trigger').remove();input.attr('autocomplete',input.data('original-autocomplete')).attr('maxlength',input.data('original-maxlength')).removeData().removeClass('miniColors').unbind('.miniColors');$(document).unbind('.miniColors')};var enable=function(input){input.prop('disabled',false).data('trigger').css('opacity',1)};var disable=function(input){hide(input);input.prop('disabled',true).data('trigger').css('opacity',0.5)};var show=function(input){if(input.prop('disabled'))return false;hide();var selector=$('
');selector.append('').append('').css({top:input.is(':visible')?input.offset().top+input.outerHeight():input.data('trigger').offset().top+input.data('trigger').outerHeight(),left:input.is(':visible')?input.offset().left:input.data('trigger').offset().left,display:'none'}).addClass(input.attr('class'));var hsb=input.data('hsb');selector.find('.miniColors-colors').css('backgroundColor','#'+hsb2hex({h:hsb.h,s:100,b:100}));var colorPosition=input.data('colorPosition');if(!colorPosition)colorPosition=getColorPositionFromHSB(hsb);selector.find('.miniColors-colorPicker').css('top',colorPosition.y+'px').css('left',colorPosition.x+'px');var huePosition=input.data('huePosition');if(!huePosition)huePosition=getHuePositionFromHSB(hsb);selector.find('.miniColors-huePicker').css('top',huePosition.y+'px');input.data('selector',selector).data('huePicker',selector.find('.miniColors-huePicker')).data('colorPicker',selector.find('.miniColors-colorPicker')).data('mousebutton',0);$('BODY').append(selector);selector.fadeIn(100);selector.bind('selectstart',function(){return false});$(document).bind('mousedown.miniColors touchstart.miniColors',function(event){input.data('mousebutton',1);if($(event.target).parents().andSelf().hasClass('miniColors-colors')){event.preventDefault();input.data('moving','colors');moveColor(input,event)}if($(event.target).parents().andSelf().hasClass('miniColors-hues')){event.preventDefault();input.data('moving','hues');moveHue(input,event)}if($(event.target).parents().andSelf().hasClass('miniColors-selector')){event.preventDefault();return}if($(event.target).parents().andSelf().hasClass('miniColors'))return;hide(input)});$(document).bind('mouseup.miniColors touchend.miniColors',function(event){event.preventDefault();input.data('mousebutton',0).removeData('moving')}).bind('mousemove.miniColors touchmove.miniColors',function(event){event.preventDefault();if(input.data('mousebutton')===1){if(input.data('moving')==='colors')moveColor(input,event);if(input.data('moving')==='hues')moveHue(input,event)}})};var hide=function(input){if(!input)input='.miniColors';$(input).each(function(){var selector=$(this).data('selector');$(this).removeData('selector');$(selector).fadeOut(100,function(){$(this).remove()})});$(document).unbind('.miniColors')};var moveColor=function(input,event){var colorPicker=input.data('colorPicker');colorPicker.hide();var position={x:event.pageX,y:event.pageY};if(event.originalEvent.changedTouches){position.x=event.originalEvent.changedTouches[0].pageX;position.y=event.originalEvent.changedTouches[0].pageY}position.x=position.x-input.data('selector').find('.miniColors-colors').offset().left-5;position.y=position.y-input.data('selector').find('.miniColors-colors').offset().top-5;if(position.x<=-5)position.x=-5;if(position.x>=144)position.x=144;if(position.y<=-5)position.y=-5;if(position.y>=144)position.y=144;input.data('colorPosition',position);colorPicker.css('left',position.x).css('top',position.y).show();var s=Math.round((position.x+5)*0.67);if(s<0)s=0;if(s>100)s=100;var b=100-Math.round((position.y+5)*0.67);if(b<0)b=0;if(b>100)b=100;var hsb=input.data('hsb');hsb.s=s;hsb.b=b;setColor(input,hsb,true)};var moveHue=function(input,event){var huePicker=input.data('huePicker');huePicker.hide();var position={y:event.pageY};if(event.originalEvent.changedTouches){position.y=event.originalEvent.changedTouches[0].pageY}position.y=position.y-input.data('selector').find('.miniColors-colors').offset().top-1;if(position.y<=-1)position.y=-1;if(position.y>=149)position.y=149;input.data('huePosition',position);huePicker.css('top',position.y).show();var h=Math.round((150-position.y-1)*2.4);if(h<0)h=0;if(h>360)h=360;var hsb=input.data('hsb');hsb.h=h;setColor(input,hsb,true)};var setColor=function(input,hsb,updateInput){input.data('hsb',hsb);var hex=hsb2hex(hsb);if(updateInput)input.val('#'+convertCase(hex,input.data('letterCase')));input.data('trigger').css('backgroundColor','#'+hex);if(input.data('selector'))input.data('selector').find('.miniColors-colors').css('backgroundColor','#'+hsb2hex({h:hsb.h,s:100,b:100}));if(input.data('change')){if(hex===input.data('lastChange'))return;input.data('change').call(input.get(0),'#'+hex,hsb2rgb(hsb));input.data('lastChange',hex)}};var setColorFromInput=function(input){input.val('#'+cleanHex(input.val()));var hex=expandHex(input.val());if(!hex)return false;var hsb=hex2hsb(hex);var currentHSB=input.data('hsb');if(hsb.h===currentHSB.h&&hsb.s===currentHSB.s&&hsb.b===currentHSB.b)return true;var colorPosition=getColorPositionFromHSB(hsb);var colorPicker=$(input.data('colorPicker'));colorPicker.css('top',colorPosition.y+'px').css('left',colorPosition.x+'px');input.data('colorPosition',colorPosition);var huePosition=getHuePositionFromHSB(hsb);var huePicker=$(input.data('huePicker'));huePicker.css('top',huePosition.y+'px');input.data('huePosition',huePosition);setColor(input,hsb);return true};var convertCase=function(string,letterCase){if(letterCase==='lowercase')return string.toLowerCase();if(letterCase==='uppercase')return string.toUpperCase();return string};var getColorPositionFromHSB=function(hsb){var x=Math.ceil(hsb.s/0.67);if(x<0)x=0;if(x>150)x=150;var y=150-Math.ceil(hsb.b/0.67);if(y<0)y=0;if(y>150)y=150;return{x:x-5,y:y-5}};var getHuePositionFromHSB=function(hsb){var y=150-(hsb.h/2.4);if(y<0)h=0;if(y>150)h=150;return{y:y-1}};var cleanHex=function(hex){return hex.replace(/[^A-F0-9]/ig,'')};var expandHex=function(hex){hex=cleanHex(hex);if(!hex)return null;if(hex.length===3)hex=hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];return hex.length===6?hex:null};var hsb2rgb=function(hsb){var rgb={};var h=Math.round(hsb.h);var s=Math.round(hsb.s*255/100);var v=Math.round(hsb.b*255/100);if(s===0){rgb.r=rgb.g=rgb.b=v}else{var t1=v;var t2=(255-s)*v/255;var t3=(t1-t2)*(h%60)/60;if(h===360)h=0;if(h<60){rgb.r=t1;rgb.b=t2;rgb.g=t2+t3}else if(h<120){rgb.g=t1;rgb.b=t2;rgb.r=t1-t3}else if(h<180){rgb.g=t1;rgb.r=t2;rgb.b=t2+t3}else if(h<240){rgb.b=t1;rgb.r=t2;rgb.g=t1-t3}else if(h<300){rgb.b=t1;rgb.g=t2;rgb.r=t2+t3}else if(h<360){rgb.r=t1;rgb.g=t2;rgb.b=t1-t3}else{rgb.r=0;rgb.g=0;rgb.b=0}}return{r:Math.round(rgb.r),g:Math.round(rgb.g),b:Math.round(rgb.b)}};var rgb2hex=function(rgb){var hex=[rgb.r.toString(16),rgb.g.toString(16),rgb.b.toString(16)];$.each(hex,function(nr,val){if(val.length===1)hex[nr]='0'+val});return hex.join('')};var hex2rgb=function(hex){hex=parseInt(((hex.indexOf('#')>-1)?hex.substring(1):hex),16);return{r:hex>>16,g:(hex&0x00FF00)>>8,b:(hex&0x0000FF)}};var rgb2hsb=function(rgb){var hsb={h:0,s:0,b:0};var min=Math.min(rgb.r,rgb.g,rgb.b);var max=Math.max(rgb.r,rgb.g,rgb.b);var delta=max-min;hsb.b=max;hsb.s=max!==0?255*delta/max:0;if(hsb.s!==0){if(rgb.r===max){hsb.h=(rgb.g-rgb.b)/delta}else if(rgb.g===max){hsb.h=2+(rgb.b-rgb.r)/delta}else{hsb.h=4+(rgb.r-rgb.g)/delta}}else{hsb.h=-1}hsb.h*=60;if(hsb.h<0){hsb.h+=360}hsb.s*=100/255;hsb.b*=100/255;return hsb};var hex2hsb=function(hex){var hsb=rgb2hsb(hex2rgb(hex));if(hsb.s===0)hsb.h=360;return hsb};var hsb2hex=function(hsb){return rgb2hex(hsb2rgb(hsb))};switch(o){case'readonly':$(this).each(function(){if(!$(this).hasClass('miniColors'))return;$(this).prop('readonly',data)});return $(this);case'disabled':$(this).each(function(){if(!$(this).hasClass('miniColors'))return;if(data){disable($(this))}else{enable($(this))}});return $(this);case'value':if(data===undefined){if(!$(this).hasClass('miniColors'))return;var input=$(this),hex=expandHex(input.val());return hex?'#'+convertCase(hex,input.data('letterCase')):null}$(this).each(function(){if(!$(this).hasClass('miniColors'))return;$(this).val(data);setColorFromInput($(this))});return $(this);case'destroy':$(this).each(function(){if(!$(this).hasClass('miniColors'))return;destroy($(this))});return $(this);default:if(!o)o={};$(this).each(function(){if($(this)[0].tagName.toLowerCase()!=='input')return;if($(this).data('trigger'))return;create($(this),o,data)});return $(this)}}})})(jQuery);
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery.mu.image.resize.degsin.js b/app/assets/javascripts/jquery.mu.image.resize.degsin.js
new file mode 100644
index 000000000..9c87bf783
--- /dev/null
+++ b/app/assets/javascripts/jquery.mu.image.resize.degsin.js
@@ -0,0 +1,6 @@
+ var pic = $(".app-pic").length,w,h;
+ for(i=0; i ';
+ });
+ }
+
+ if (!$.browser.msie)
+ {
+ // Get original size for calcutation.
+ ow = this.width;
+ oh = this.height;
+ }
+
+ // if cannot get width or height.
+ if (0==ow || 0==oh){
+ $(this).width(_set.width);
+ $(this).height(_set.height);
+ }else{
+
+ // Merge position settings
+ var sh_margin_type='';
+
+ // if original image's width > height.
+ if (ow > oh) {
+ p = oh / _set.height;
+ oh = _set.height;
+ ow = ow / p;
+
+ // original image width smaller than settings.
+ if (ow < _set.width){
+ // need to resize again,
+ // because new image size range must can cover settings' range, than we can crop it correctly.
+ p = ow / _set.width;
+ ow = _set.width;
+ oh = oh / p;
+
+ // the crop range would be in the center of new image size.
+ sh = (oh-_set.height)/2;
+ t=sh+'px';
+ r=_set.width+'px';
+ b=(_set.height+sh)+'px';
+ l='0px';
+
+ // need to be adjust top position latter.
+ sh_margin_type = 'margin-top';
+
+ // original image width bigger than settings.
+ }else{
+ // new image range can cover settings' range.
+ sh = (ow-_set.width)/2;
+ t='0px';
+ r=(_set.width+sh)+'px';
+ b=_set.height+'px';
+ l=sh+'px';
+ // need to be adjust left position latter.
+ sh_margin_type = 'margin-left';
+ }
+ // ref above, change width to height then do same things.
+ }else{
+ p = ow / _set.width;
+ ow = _set.width;
+ oh = oh / p;
+
+ if (oh < _set.height) {
+ p = oh / _set.height;
+ oh = _set.height;
+ ow = ow / p;
+
+ sh = (ow-_set.width)/2;
+ t='0px';
+ r=(_set.width+sh)+'px';
+ b=_set.height+'px';
+ l=sh+'px';
+ sh_margin_type = 'margin-left';
+ }else{
+ sh = (oh-_set.height)/2;
+ t=sh+'px';
+ r=_set.width+'px';
+ b=(_set.height+sh)+'px';
+ l='0px';
+ sh_margin_type = 'margin-top';
+ }
+ }
+
+ // Resize img.
+ $(this).width(ow);
+ $(this).height(oh);
+
+ // Crop img by set clip style.
+ $(this).css('clip','rect('+t+' '+r+' '+b+' '+l+')');
+
+ var osh = 0;
+ if('auto' != $(this).css(sh_margin_type)){
+ osh = parseInt($(this).css(sh_margin_type));
+ }
+
+ if (0 < sh) {sh*=-1;}
+ sh += osh;
+
+ $(this).css(sh_margin_type, sh+'px');
+ $(this).css('position','absolute');
+ }
+ $(this).fadeIn('slow');
+ })
+ .one( "error", function() {
+ //$(this).hide();
+ })
+ .each(function() {
+ $(this).hide();
+ // Trigger load event (for Gecko and MSIE)
+ if ( this.complete || $.browser.msie ) {
+ $( this ).trigger( "load" ).trigger( "error" );
+ }
+ });
+ };
+
+})( jQuery );
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery.tinyscrollbar.js b/app/assets/javascripts/jquery.tinyscrollbar.js
new file mode 100644
index 000000000..4bca0dfa0
--- /dev/null
+++ b/app/assets/javascripts/jquery.tinyscrollbar.js
@@ -0,0 +1,210 @@
+/*
+ * Tiny Scrollbar 1.8
+ * http://www.baijs.nl/tinyscrollbar/
+ *
+ * Copyright 2012, Maarten Baijs
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.opensource.org/licenses/gpl-2.0.php
+ *
+ * Date: 26 / 07 / 2012
+ * Depends on library: jQuery
+ *
+ */
+( function( $ )
+{
+ $.tiny = $.tiny || { };
+
+ $.tiny.scrollbar = {
+ options: {
+ axis : 'y' // vertical or horizontal scrollbar? ( x || y ).
+ , wheel : 40 // how many pixels must the mouswheel scroll at a time.
+ , scroll : true // enable or disable the mousewheel.
+ , lockscroll : true // return scrollwheel to browser if there is no more content.
+ , size : 'auto' // set the size of the scrollbar to auto or a fixed number.
+ , sizethumb : 'auto' // set the size of the thumb to auto or a fixed number.
+ , onMove : function(){}
+ }
+ };
+
+ $.fn.tinyscrollbar = function( params )
+ {
+ var options = $.extend( {}, $.tiny.scrollbar.options, params );
+
+ this.each( function()
+ {
+ $( this ).data('tsb', new Scrollbar( $( this ), options ) );
+ });
+
+ return this;
+ };
+
+ $.fn.tinyscrollbar_update = function(sScroll)
+ {
+ return $( this ).data( 'tsb' ).update( sScroll );
+ };
+
+ function Scrollbar( root, options )
+ {
+ var oSelf = this
+ , oWrapper = root
+ , oViewport = { obj: $( '.viewport', root ) }
+ , oContent = { obj: $( '.overview', root ) }
+ , oScrollbar = { obj: $( '.scrollbar', root ) }
+ , oTrack = { obj: $( '.track', oScrollbar.obj ) }
+ , oThumb = { obj: $( '.thumb', oScrollbar.obj ) }
+ , sAxis = options.axis === 'x'
+ , sDirection = sAxis ? 'left' : 'top'
+ , sSize = sAxis ? 'Width' : 'Height'
+ , iScroll = 0
+ , iPosition = { start: 0, now: 0 }
+ , iMouse = {}
+ , touchEvents = ( 'ontouchstart' in document.documentElement ) ? true : false
+ ;
+
+ function initialize()
+ {
+ oSelf.update();
+ setEvents();
+ return oSelf;
+ }
+
+ this.update = function( sScroll )
+ {
+ oViewport[ options.axis ] = oViewport.obj[0][ 'offset'+ sSize ];
+ oContent[ options.axis ] = oContent.obj[0][ 'scroll'+ sSize ];
+ oContent.ratio = oViewport[ options.axis ] / oContent[ options.axis ];
+
+ oScrollbar.obj.toggleClass( 'disable', oContent.ratio >= 1 );
+
+ oTrack[ options.axis ] = options.size === 'auto' ? oViewport[ options.axis ] : options.size;
+ oThumb[ options.axis ] = Math.min( oTrack[ options.axis ], Math.max( 0, ( options.sizethumb === 'auto' ? ( oTrack[ options.axis ] * oContent.ratio ) : options.sizethumb ) ) );
+
+ oScrollbar.ratio = options.sizethumb === 'auto' ? ( oContent[ options.axis ] / oTrack[ options.axis ] ) : ( oContent[ options.axis ] - oViewport[ options.axis ] ) / ( oTrack[ options.axis ] - oThumb[ options.axis ] );
+
+ iScroll = ( sScroll === 'relative' && oContent.ratio <= 1 ) ? Math.min( ( oContent[ options.axis ] - oViewport[ options.axis ] ), Math.max( 0, iScroll )) : 0;
+ iScroll = ( sScroll === 'bottom' && oContent.ratio <= 1 ) ? ( oContent[ options.axis ] - oViewport[ options.axis ] ) : isNaN( parseInt( sScroll, 10 ) ) ? iScroll : parseInt( sScroll, 10 );
+
+ setSize();
+ };
+
+ function setSize()
+ {
+ var sCssSize = sSize.toLowerCase();
+
+ oThumb.obj.css( sDirection, iScroll / oScrollbar.ratio );
+ oContent.obj.css( sDirection, -iScroll );
+ iMouse.start = oThumb.obj.offset()[ sDirection ];
+
+ oScrollbar.obj.css( sCssSize, oTrack[ options.axis ] );
+ oTrack.obj.css( sCssSize, oTrack[ options.axis ] );
+ oThumb.obj.css( sCssSize, oThumb[ options.axis ] );
+ }
+
+ function setEvents()
+ {
+ if( ! touchEvents )
+ {
+ oThumb.obj.bind( 'mousedown', start );
+ oTrack.obj.bind( 'mouseup', drag );
+ }
+ else
+ {
+ oViewport.obj[0].ontouchstart = function( event )
+ {
+ if( 1 === event.touches.length )
+ {
+ start( event.touches[ 0 ] );
+ event.stopPropagation();
+ }
+ };
+ }
+
+ if( options.scroll && window.addEventListener )
+ {
+ oWrapper[0].addEventListener( 'DOMMouseScroll', wheel, false );
+ oWrapper[0].addEventListener( 'mousewheel', wheel, false );
+ }
+ else if( options.scroll )
+ {
+ oWrapper[0].onmousewheel = wheel;
+ }
+ }
+
+ function start( event )
+ {
+ var oThumbDir = parseInt( oThumb.obj.css( sDirection ), 10 );
+ iMouse.start = sAxis ? event.pageX : event.pageY;
+ iPosition.start = oThumbDir == 'auto' ? 0 : oThumbDir;
+
+ if( ! touchEvents )
+ {
+ $( document ).bind( 'mousemove', drag );
+ $( document ).bind( 'mouseup', end );
+ oThumb.obj.bind( 'mouseup', end );
+ }
+ else
+ {
+ document.ontouchmove = function( event )
+ {
+ event.preventDefault();
+ drag( event.touches[ 0 ] );
+ };
+ document.ontouchend = end;
+ }
+ }
+
+ function wheel( event )
+ {
+ if( oContent.ratio < 1 )
+ {
+ var oEvent = event || window.event
+ , iDelta = oEvent.wheelDelta ? oEvent.wheelDelta / 120 : -oEvent.detail / 3
+ ;
+
+ iScroll -= iDelta * options.wheel;
+ iScroll = Math.min( ( oContent[ options.axis ] - oViewport[ options.axis ] ), Math.max( 0, iScroll ));
+
+ oThumb.obj.css( sDirection, iScroll / oScrollbar.ratio );
+ oContent.obj.css( sDirection, -iScroll );
+
+ if( options.lockscroll || ( iScroll !== ( oContent[ options.axis ] - oViewport[ options.axis ] ) && iScroll !== 0 ) )
+ {
+ oEvent = $.event.fix( oEvent );
+ oEvent.preventDefault();
+ }
+ }
+ options.onMove.call(this,iScroll);
+ }
+
+ function drag( event )
+ {
+ if( oContent.ratio < 1 )
+ {
+ if( ! touchEvents )
+ {
+ iPosition.now = Math.min( ( oTrack[ options.axis ] - oThumb[ options.axis ] ), Math.max( 0, ( iPosition.start + ( ( sAxis ? event.pageX : event.pageY ) - iMouse.start))));
+ }
+ else
+ {
+ iPosition.now = Math.min( ( oTrack[ options.axis ] - oThumb[ options.axis ] ), Math.max( 0, ( iPosition.start + ( iMouse.start - ( sAxis ? event.pageX : event.pageY ) ))));
+ }
+
+ iScroll = iPosition.now * oScrollbar.ratio;
+ oContent.obj.css( sDirection, -iScroll );
+ oThumb.obj.css( sDirection, iPosition.now );
+ }
+ }
+
+ function end()
+ {
+ $( document ).unbind( 'mousemove', drag );
+ $( document ).unbind( 'mouseup', end );
+ oThumb.obj.unbind( 'mouseup', end );
+ document.ontouchmove = document.ontouchend = null;
+ }
+
+ return initialize();
+ }
+
+}(jQuery));
\ No newline at end of file
diff --git a/app/assets/javascripts/jquery.tinyscrollbar.min.js b/app/assets/javascripts/jquery.tinyscrollbar.min.js
index e385ff8ed..ec8be7a22 100644
--- a/app/assets/javascripts/jquery.tinyscrollbar.min.js
+++ b/app/assets/javascripts/jquery.tinyscrollbar.min.js
@@ -1,118 +1,126 @@
-(function(a){
- function b(b,c){
- function w(a){
- if(!(g.ratio>=1)){
- o.now=Math.min(i[c.axis]-j[c.axis],Math.max(0,o.start+((k?a.pageX:a.pageY)-p.start)));
- n=o.now*h.ratio;g.obj.css(l,-n);
- j.obj.css(l,o.now)
- }
- return false
- }
- function v(b){
- a(document).unbind("mousemove",w);
- a(document).unbind("mouseup",v);
- j.obj.unbind("mouseup",v);
- document.ontouchmove=j.obj[0].ontouchend=document.ontouchend=null;
- return false
- }
- function u(b){
- if(!(g.ratio>=1)){
- var b=b||window.event;
- var d=b.wheelDelta?b.wheelDelta/120:-b.detail/3;
- n-=d*c.wheel;
- n=Math.min(g[c.axis]-f[c.axis],Math.max(0,n));
- j.obj.css(l,n/h.ratio);
- g.obj.css(l,-n);
- b=a.event.fix(b);
- b.preventDefault()
- }
- }
- function t(b){
- p.start=k?b.pageX:b.pageY;
- var c=parseInt(j.obj.css(l));
- o.start=c=="auto"?0:c;
- a(document).bind("mousemove",w);
- document.ontouchmove=function(b){
- a(document).unbind("mousemove");
- w(b.touches[0])
- };
- a(document).bind("mouseup",v);
- j.obj.bind("mouseup",v);
- j.obj[0].ontouchend=document.ontouchend=function(b){
- a(document).unbind("mouseup");
- j.obj.unbind("mouseup");
- v(b.touches[0])
- };
- return false
- }
- function s(){
- j.obj.bind("mousedown",t);
- j.obj[0].ontouchstart=function(a){
- a.preventDefault();
- j.obj.unbind("mousedown");
- t(a.touches[0]);
- return false
- };
- i.obj.bind("mouseup",w);
- if(c.scroll&&this.addEventListener){
- e[0].addEventListener("DOMMouseScroll",u,false);
- e[0].addEventListener("mousewheel",u,false)
- }else if(c.scroll){
- e[0].onmousewheel=u
- }
- }
- function r(){
- j.obj.css(l,n/h.ratio);
- g.obj.css(l,-n);
- p["start"]=j.obj.offset()[l];
- var a=m.toLowerCase();
- h.obj.css(a,i[c.axis]);
- i.obj.css(a,i[c.axis]);
- j.obj.css(a,j[c.axis])
- }
- function q(){
- d.update();
- s();
- return d
- }
- var d=this;
- var e=b;
- var f={obj:a(".viewport",b)};
- var g={obj:a(".overview",b)};
- var h={obj:a(".scrollbar",b)};
- var i={obj:a(".track",h.obj)};
- var j={obj:a(".thumb",h.obj)};
- var k=c.axis=="x",
- l=k?"left":"top",
- m=k?"Width":"Height";
- var n,
- o={start:0,now:0},
- p={};
- this.update=function(a){
- f[c.axis]=f.obj[0]["offset"+m];
- g[c.axis]=g.obj[0]["scroll"+m];
- g.ratio=f[c.axis]/g[c.axis];
- h.obj.toggleClass("disable",g.ratio>=1);
- i[c.axis]=c.size=="auto"?f[c.axis]:c.size;
- j[c.axis]=Math.min(i[c.axis],Math.max(0,c.sizethumb=="auto"?i[c.axis]*g.ratio:c.sizethumb));
- h.ratio=c.sizethumb=="auto"?g[c.axis]/i[c.axis]:(g[c.axis]-f[c.axis])/(i[c.axis]-j[c.axis]);
- n=a=="relative"&&g.ratio<=1?Math.min(g[c.axis]-f[c.axis],Math.max(0,n)):0;
- n=a=="bottom"&&g.ratio<=1?g[c.axis]-f[c.axis]:isNaN(parseInt(a))?n:parseInt(a);
- r()
- };
- return q()
- }
- a.tiny=a.tiny||{};
- a.tiny.scrollbar={options:{axis:"y",wheel:40,scroll:true,size:"auto",sizethumb:"auto"}};
- a.fn.tinyscrollbar=function(c){
- var c=a.extend({},a.tiny.scrollbar.options,c);
- this.each(function(){
- a(this).data("tsb",new b(a(this),c))
- });
- return this
- };
- a.fn.tinyscrollbar_update=function(b){
- return a(this).data("tsb").update(b)
- };
-})
+(function(a){
+ function b(b,c){
+ function w(a){
+ if(!(g.ratio>=1)){
+ o.now=Math.min(i[c.axis]-j[c.axis],Math.max(0,o.start+((k?a.pageX:a.pageY)-p.start)));
+ n=o.now*h.ratio;
+ g.obj.css(l,-n);
+ j.obj.css(l,o.now)
+ }
+ return false
+ }
+ function v(b){
+ a(document).unbind("mousemove",w);
+ a(document).unbind("mouseup",v);
+ j.obj.unbind("mouseup",v);
+ document.ontouchmove=j.obj[0].ontouchend=document.ontouchend=null;
+ return false
+ }
+ function u(b){
+ if(!(g.ratio>=1)){
+ var b=b||window.event;
+ var d=b.wheelDelta?b.wheelDelta/120:-b.detail/3;
+ n-=d*c.wheel;
+ n=Math.min(g[c.axis]-f[c.axis],Math.max(0,n));
+ j.obj.css(l,n/h.ratio);
+ g.obj.css(l,-n);
+ b=a.event.fix(b);
+ b.preventDefault()
+ }
+ }
+ function t(b){
+ p.start=k?b.pageX:b.pageY;
+ var c=parseInt(j.obj.css(l));
+ o.start=c=="auto"?0:c;
+ a(document).bind("mousemove",w);
+ document.ontouchmove=function(b){
+ a(document).unbind("mousemove");
+ w(b.touches[0])
+ };
+ a(document).bind("mouseup",v);
+ j.obj.bind("mouseup",v);
+ j.obj[0].ontouchend=document.ontouchend=function(b){
+ a(document).unbind("mouseup");
+ j.obj.unbind("mouseup");
+ v(b.touches[0])};
+ return false
+ }
+ function s(){
+ j.obj.bind("mousedown",t);
+ j.obj[0].ontouchstart=function(a){
+ a.preventDefault();
+ j.obj.unbind("mousedown");
+ t(a.touches[0]);
+ return false
+ };
+ i.obj.bind("mouseup",w);
+ if(c.scroll&&this.addEventListener){
+ e[0].addEventListener("DOMMouseScroll",u,false);
+ e[0].addEventListener("mousewheel",u,false)
+ }else if(c.scroll){
+ e[0].onmousewheel=u
+ }
+ }
+ function r(){
+ j.obj.css(l,n/h.ratio);
+ g.obj.css(l,-n);
+ p["start"]=j.obj.offset()[l];
+ var a=m.toLowerCase();
+ h.obj.css(a,i[c.axis]);
+ i.obj.css(a,i[c.axis]);
+ j.obj.css(a,j[c.axis])
+ }
+ function q(){
+ d.update();
+ s();
+ return d
+ }
+ var d=this;
+ var e=b;
+ var f={obj:a(".viewport",b)};
+ var g={obj:a(".overview",b)};
+ var h={obj:a(".scrollbar",b)};
+ var i={obj:a(".track",h.obj)};
+ var j={obj:a(".thumb",h.obj)};
+ var k=c.axis=="x",
+ l=k?"left":"top",
+ m=k?"Width":"Height";
+ var n,
+ o={start:0,now:0},
+ p={};
+ this.update=function(a){
+ f[c.axis]=f.obj[0]["offset"+m];
+ g[c.axis]=g.obj[0]["scroll"+m];
+ g.ratio=f[c.axis]/g[c.axis];
+ h.obj.toggleClass("disable",g.ratio>=1);
+ i[c.axis]=c.size=="auto"?f[c.axis]:c.size;
+ j[c.axis]=Math.min(i[c.axis],Math.max(0,c.sizethumb=="auto"?i[c.axis]*g.ratio:c.sizethumb));
+ h.ratio=c.sizethumb=="auto"?g[c.axis]/i[c.axis]:(g[c.axis]-f[c.axis])/(i[c.axis]-j[c.axis]);
+ n=a=="relative"&&g.ratio<=1?Math.min(g[c.axis]-f[c.axis],Math.max(0,n)):0;
+ n=a=="bottom"&&g.ratio<=1?g[c.axis]-f[c.axis]:isNaN(parseInt(a))?n:parseInt(a);
+ r()
+ };
+ return q()
+ }
+ a.tiny=a.tiny||{};
+ a.tiny.scrollbar={
+ options:{
+ axis:"y",
+ wheel:40,
+ scroll:true,
+ size:"auto",
+ sizethumb:"auto"
+ }
+ };
+ a.fn.tinyscrollbar=function(c){
+ var c=a.extend({},a.tiny.scrollbar.options,c);
+ this.each(function(){
+ a(this).data("tsb",new b(a(this),c))
+ });
+ return this
+ };
+ a.fn.tinyscrollbar_update=function(b){
+ return a(this).data("tsb").update(b)
+ };
+ })
(jQuery)
\ No newline at end of file
diff --git a/app/assets/javascripts/new_admin.js b/app/assets/javascripts/new_admin.js
index 949753a9f..732eef1b1 100644
--- a/app/assets/javascripts/new_admin.js
+++ b/app/assets/javascripts/new_admin.js
@@ -8,13 +8,15 @@
//= require jquery_ujs
//= require jquery.form
//= require bootstrap
+//= require jquery.masonry.min
//= require jquery.isotope.min
//= require jquery.tinyscrollbar.min
//= require orbit-1.0
//= require tinymce-jquery
//= require tinymce_orbit
//= require orbit-bar-search
+//= require orbit-bar-member
//= require side_bar_history
//= require rss
//= require ajax_form
-//= require inc/ajax_setting
+//= require inc/ajax_setting
\ No newline at end of file
diff --git a/app/assets/javascripts/orbit-1.0.js b/app/assets/javascripts/orbit-1.0.js
index b1ac99937..c9a9beeb7 100644
--- a/app/assets/javascripts/orbit-1.0.js
+++ b/app/assets/javascripts/orbit-1.0.js
@@ -1,115 +1,208 @@
-var viewportwidth,
- viewportheight;
-function resize() {
- viewportheight=$(window).height();
- viewportwidth=$(window).width();
- if(window.navigator.userAgent.indexOf("MSIE")>0){
- windH=document.clientHeight;
- windW=document.clientWidht;
- }
-}
-$(document).ready(function(){
-
- $('.tip').tooltip({
- placement: "left"
- });
-
-
- $(document).on('click', '.privacy', function() {
-
- switch ($(this).val()) {
- case 'true':
- $(this).parents('.controls').children('.select-role').slideUp(300);
- break;
- case 'false':
- $(this).parents('.controls').children('.select-role').slideDown(300);
- break;
- }
- });
-
- var $role = $('.select-role');
- var method =$('.privacy:eq(1)').attr('checked');
- if(method == 'checked'){
- $role.slideDown(0);
- }
- $('.privacy').each(function($i) {
- $(this).click(function() {
- switch ($i) {
- case 0:
- $role.slideUp(300);
- break;
- case 1:
- $role.slideDown(300);
- break;
- }
- });
- });
-
- /*tinyscrollbar&windows-Size*/
- resize();
- var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-2,
- $subWiget = $('#sub-wiget').width()+18;
- $orbitBar = $('#orbit-bar').height(),
- $mainSidebar = $('#main-sidebar').width()+5,
- $formActionPadding = parseInt($('.form-fixed').css("padding-left"))+parseInt($('.form-fixed').css("padding-right"));
- $('#main-sidebar').css("height", viewportheight-$orbitBar);
- $('#main-sidebar .viewport').css("height", viewportheight-$orbitBar);
- $('#post-body').css("width", viewportwidth-$mainWrapMarginLeft-$subWiget);
- $('.post-title').css("width", viewportwidth-$mainWrapMarginLeft-$subWiget-16);
- $('#main-wrap .subnav').css("width", viewportwidth-$mainWrapMarginLeft);
- $('.form-fixed').css("width", viewportwidth-$mainWrapMarginLeft-$formActionPadding);
- $('#main-sidebar').tinyscrollbar({size:(viewportheight-$orbitBar-4)});
- $('.detal-list').tinyscrollbar();
- mainTablePosition();
-
- /*isotope*/
- var $container = $('#isotope');
- $container.isotope({
- itemSelector : '.item',
- layoutMode : 'masonry',
- });
-
-
-});
-$(window).resize(function(){
- resize();
- var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-2,
- $subWiget = $('#sub-wiget').width()+18;
- $orbitBar = $('#orbit-bar').height(),
- $mainSidebar = $('#main-sidebar').width()+5,
- $formActionPadding = parseInt($('.form-fixed').css("padding-left"))+parseInt($('.form-fixed').css("padding-right"));
- $('#main-sidebar').css("height", viewportheight-$orbitBar);
- $('#main-sidebar .viewport').css("height", viewportheight-$orbitBar);
- $('#post-body').css("width", viewportwidth-$mainWrapMarginLeft-$subWiget);
- $('.post-title').css("width", viewportwidth-$mainWrapMarginLeft-$subWiget-16);
- $('#main-wrap .subnav').css("width", viewportwidth-$mainWrapMarginLeft);
- $('.form-fixed').css("width", viewportwidth-$mainWrapMarginLeft-$formActionPadding);
- $('#main-sidebar').tinyscrollbar({size:(viewportheight-$orbitBar-4)});
- mainTablePosition();
-});
-/*main-table position*/
-function mainTablePosition() {
- var $height = $('#main-wrap .subnav').length && $('#main-wrap .subnav').height();
- var $table = $('.main-list').length && $('.main-list:last');
- if($table && $table==0){
- $table.css({marginTop:$height});
- }
- else if($table){
- if($height>0){
- $height = $height-17;
- }
- $table.stop().animate({marginTop:$height},500);
- }
- else if($('#main-wrap .subnav')){
- var $object = $('#main-wrap .subnav').next();
- $object.css({marginTop:$height});
- };
-};
-$(window).scroll(function () {
- //var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-1;
- //var $subnavWidth = parseInt($('#main-wrap > .subnav').css("width"));
- var $winLeft = $(window).scrollLeft()
- $(".table-label").css({left:$winLeft*-1} );
- //$(".table-label").css({left:$mainWrapMarginLeft+($winLeft*-1)} );
- //$("#main-wrap > .subnav").css({width:$subnavWidth+($winLeft)} );
-});
+var viewportwidth,
+ viewportheight;
+function resize() {
+ viewportheight=$(window).height();
+ viewportwidth=$(window).width();
+ if(window.navigator.userAgent.indexOf("MSIE")>0){
+ windH=document.clientHeight;
+ windW=document.clientWidht;
+ }
+}
+$(document).ready(function(){
+
+ $('.tip').tooltip({
+ placement: "left"
+ });
+
+ $(document).on('click', '.privacy', function() {
+
+ switch ($(this).val()) {
+ case 'true':
+ $(this).parents('.controls').children('.select-role').slideUp(300);
+ break;
+ case 'false':
+ $(this).parents('.controls').children('.select-role').slideDown(300);
+ break;
+ }
+ });
+
+ var $role = $('.select-role');
+ var method =$('.privacy:eq(1)').attr('checked');
+ if(method == 'checked'){
+ $role.slideDown(0);
+ }
+ $('.privacy').each(function($i) {
+ $(this).click(function() {
+ switch ($i) {
+ case 0:
+ $role.slideUp(300);
+ break;
+ case 1:
+ $role.slideDown(300);
+ break;
+ }
+ });
+ });
+
+ /*tinyscrollbar&windows-Size*/
+ resize();
+ mainResize()
+ mainTablePosition();
+ itemPosition()
+ $('#collapse-menu').on({
+ click: function(){
+ $('body').toggleClass("folded");
+ if($('#collapse-menu > i').attr("class")=="icon-chevron-right"){
+ $('#collapse-menu > i').removeClass('icon-chevron-right');
+ $('#collapse-menu > i').addClass('icon-chevron-left');
+ } else if($('#collapse-menu > i').attr("class")=="icon-chevron-left"){
+ $('#collapse-menu > i').removeClass('icon-chevron-left');
+ $('#collapse-menu > i').addClass('icon-chevron-right');
+ }
+ resize();
+ mainResize();
+ mainTablePosition();
+ itemPosition()
+ }
+ })
+
+ $('.with_action').on({
+ mouseleave: function(){
+ $('.quick-edit').find('.dropdown').removeClass("open");
+ }
+ })
+
+ $(window).resize(function(){
+ resize();
+ mainResize();
+ mainTablePosition();
+ itemPosition()
+ });
+
+});
+/*main-table position*/
+function mainTablePosition() {
+ var $height = $('#main-wrap .subnav').length && $('#main-wrap .subnav').height();
+ var $table = $('.main-list').length && $('.main-list:last');
+ if($table && $table==0){
+ // $table.css({marginTop:$height});
+ $table.stop().animate({marginTop:$height}, 500)
+ }
+ else if($table){
+ if($height>0){
+ $height = $height-18;
+ }
+ $table.stop().animate({marginTop:$height}, 500, function(){
+ resize();
+ mainResize();
+ });
+ }
+ else if($('#main-wrap .subnav')){
+ var $object = $('#main-wrap .subnav').next();
+ // $object.css({marginTop:$height});
+ $object.stop().animate({marginTop:$height}, 500)
+ };
+};
+
+function moduleNav() {
+ var $moduleNav = $('#module-nav'),
+ $userDataW = $('.user-data').width();
+ $moduleNav.css("width", $userDataW);
+}
+function itemPosition() {
+ moduleNav();
+ if($('#isotope').length>0 && $('.user-info').length>0){
+ if(viewportwidth<=1200){
+ if($('body').attr("class")=="folded"){
+ $('#isotope').find('.detail').css("width", 550);
+ $('#isotope').masonry({
+ itemSelector: '.item',
+ isAnimated: true
+ });
+ }else{
+ $('#isotope').find('.detail').css("width", 435);
+ $('#isotope').masonry({
+ itemSelector: '.item',
+ isAnimated: true
+ });
+ }
+ }else if(viewportwidth>=1201 && viewportwidth<=1280){
+ if($('body').attr("class")=="folded"){
+ $('#isotope').find('.detail').css("width", 385);
+ $('#isotope').masonry({
+ itemSelector: '.item',
+ isAnimated: true
+ });
+ }else{
+ $('#isotope').find('.detail').css("width", 325);
+ $('#isotope').masonry({
+ itemSelector: '.item',
+ isAnimated: true
+ });
+ }
+ }else if(viewportwidth>=1281 && viewportwidth<=1440){
+ if($('body').attr("class")=="folded"){
+ $('#isotope').find('.detail').css("width", 470);
+ $('#isotope').masonry({
+ itemSelector: '.item',
+ isAnimated: true
+ });
+ }else{
+ $('#isotope').find('.detail').css("width", 410);
+ $('#isotope').masonry({
+ itemSelector: '.item',
+ isAnimated: true
+ });
+ }
+ }else if(viewportwidth>=1441){
+ if($('#isotope').length>0){
+ $('#isotope').find('.detail').css("width", 500);
+ $('#isotope').masonry({
+ itemSelector: '.item',
+ isAnimated: true
+ });
+ }
+ }
+ }else if($('#isotope').length>0){
+ $('#isotope').masonry({
+ itemSelector: '.item',
+ isAnimated: true
+ });
+ }
+}
+
+function mainResize() {
+ var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-2,
+ $subWiget = $('#sub-wiget').width()+18;
+ $orbitBar = $('#orbit-bar').height(),
+ $brand = $('#brand').height(),
+ $collapseMenu = $('#collapse-menu').height()+$('#position').height()+1,
+ $mainSidebar = $('#main-sidebar').width()+5,
+ $formActionPadding = parseInt($('.form-fixed').css("padding-left"))+parseInt($('.form-fixed').css("padding-right")),
+ $scrollContent = $('#main-sidebar .nav-list').height();
+ $('#main-sidebar').css("height", viewportheight-$orbitBar);
+ $('#main-sidebar .viewport').css("height", viewportheight-$orbitBar-$collapseMenu);
+ $('.user-roles .viewport').css("height", viewportheight-$orbitBar-$brand-30);
+ $('#main-sidebar .viewport').css("top", $collapseMenu);
+ $('#main-sidebar .scrollbar').css("top", $collapseMenu);
+ $('#post-body').css("width", viewportwidth-$mainWrapMarginLeft-$subWiget);
+ $('.post-title').css("width", viewportwidth-$mainWrapMarginLeft-$subWiget-20);
+ $('#main-wrap .subnav').css("width", viewportwidth-$mainWrapMarginLeft);
+ $('#main-wrap .table-label').css("width", viewportwidth-$mainWrapMarginLeft);
+ $('.form-fixed').css("width", viewportwidth-$mainWrapMarginLeft-$formActionPadding);
+ $('.user-info').css("height", viewportheight-$orbitBar-30);
+ $('#main-sidebar').tinyscrollbar();
+ $('.detal-list').tinyscrollbar();
+ $('.user-roles').tinyscrollbar();
+ if((viewportheight-$orbitBar-$collapseMenu)>=$scrollContent){
+ $('#main-sidebar .overview').css("top", '0px');
+ }
+};
+$(window).scroll(function () {
+ //var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-1;
+ //var $subnavWidth = parseInt($('#main-wrap > .subnav').css("width"));
+ var $winLeft = $(window).scrollLeft()
+ $(".table-label").css({left:$winLeft*-1} );
+ //$(".table-label").css({left:$mainWrapMarginLeft+($winLeft*-1)} );
+ //$("#main-wrap > .subnav").css({width:$subnavWidth+($winLeft)} );
+});
diff --git a/app/assets/javascripts/orbit-1.0.js.backup20120913 b/app/assets/javascripts/orbit-1.0.js.backup20120913
new file mode 100644
index 000000000..b1ac99937
--- /dev/null
+++ b/app/assets/javascripts/orbit-1.0.js.backup20120913
@@ -0,0 +1,115 @@
+var viewportwidth,
+ viewportheight;
+function resize() {
+ viewportheight=$(window).height();
+ viewportwidth=$(window).width();
+ if(window.navigator.userAgent.indexOf("MSIE")>0){
+ windH=document.clientHeight;
+ windW=document.clientWidht;
+ }
+}
+$(document).ready(function(){
+
+ $('.tip').tooltip({
+ placement: "left"
+ });
+
+
+ $(document).on('click', '.privacy', function() {
+
+ switch ($(this).val()) {
+ case 'true':
+ $(this).parents('.controls').children('.select-role').slideUp(300);
+ break;
+ case 'false':
+ $(this).parents('.controls').children('.select-role').slideDown(300);
+ break;
+ }
+ });
+
+ var $role = $('.select-role');
+ var method =$('.privacy:eq(1)').attr('checked');
+ if(method == 'checked'){
+ $role.slideDown(0);
+ }
+ $('.privacy').each(function($i) {
+ $(this).click(function() {
+ switch ($i) {
+ case 0:
+ $role.slideUp(300);
+ break;
+ case 1:
+ $role.slideDown(300);
+ break;
+ }
+ });
+ });
+
+ /*tinyscrollbar&windows-Size*/
+ resize();
+ var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-2,
+ $subWiget = $('#sub-wiget').width()+18;
+ $orbitBar = $('#orbit-bar').height(),
+ $mainSidebar = $('#main-sidebar').width()+5,
+ $formActionPadding = parseInt($('.form-fixed').css("padding-left"))+parseInt($('.form-fixed').css("padding-right"));
+ $('#main-sidebar').css("height", viewportheight-$orbitBar);
+ $('#main-sidebar .viewport').css("height", viewportheight-$orbitBar);
+ $('#post-body').css("width", viewportwidth-$mainWrapMarginLeft-$subWiget);
+ $('.post-title').css("width", viewportwidth-$mainWrapMarginLeft-$subWiget-16);
+ $('#main-wrap .subnav').css("width", viewportwidth-$mainWrapMarginLeft);
+ $('.form-fixed').css("width", viewportwidth-$mainWrapMarginLeft-$formActionPadding);
+ $('#main-sidebar').tinyscrollbar({size:(viewportheight-$orbitBar-4)});
+ $('.detal-list').tinyscrollbar();
+ mainTablePosition();
+
+ /*isotope*/
+ var $container = $('#isotope');
+ $container.isotope({
+ itemSelector : '.item',
+ layoutMode : 'masonry',
+ });
+
+
+});
+$(window).resize(function(){
+ resize();
+ var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-2,
+ $subWiget = $('#sub-wiget').width()+18;
+ $orbitBar = $('#orbit-bar').height(),
+ $mainSidebar = $('#main-sidebar').width()+5,
+ $formActionPadding = parseInt($('.form-fixed').css("padding-left"))+parseInt($('.form-fixed').css("padding-right"));
+ $('#main-sidebar').css("height", viewportheight-$orbitBar);
+ $('#main-sidebar .viewport').css("height", viewportheight-$orbitBar);
+ $('#post-body').css("width", viewportwidth-$mainWrapMarginLeft-$subWiget);
+ $('.post-title').css("width", viewportwidth-$mainWrapMarginLeft-$subWiget-16);
+ $('#main-wrap .subnav').css("width", viewportwidth-$mainWrapMarginLeft);
+ $('.form-fixed').css("width", viewportwidth-$mainWrapMarginLeft-$formActionPadding);
+ $('#main-sidebar').tinyscrollbar({size:(viewportheight-$orbitBar-4)});
+ mainTablePosition();
+});
+/*main-table position*/
+function mainTablePosition() {
+ var $height = $('#main-wrap .subnav').length && $('#main-wrap .subnav').height();
+ var $table = $('.main-list').length && $('.main-list:last');
+ if($table && $table==0){
+ $table.css({marginTop:$height});
+ }
+ else if($table){
+ if($height>0){
+ $height = $height-17;
+ }
+ $table.stop().animate({marginTop:$height},500);
+ }
+ else if($('#main-wrap .subnav')){
+ var $object = $('#main-wrap .subnav').next();
+ $object.css({marginTop:$height});
+ };
+};
+$(window).scroll(function () {
+ //var $mainWrapMarginLeft = parseInt($('#main-wrap').css("margin-left"))-1;
+ //var $subnavWidth = parseInt($('#main-wrap > .subnav').css("width"));
+ var $winLeft = $(window).scrollLeft()
+ $(".table-label").css({left:$winLeft*-1} );
+ //$(".table-label").css({left:$mainWrapMarginLeft+($winLeft*-1)} );
+ //$("#main-wrap > .subnav").css({width:$subnavWidth+($winLeft)} );
+});
diff --git a/app/assets/javascripts/orbit-bar-search.js b/app/assets/javascripts/orbit-bar-search.js
index 7ef1dd055..cc422b124 100644
--- a/app/assets/javascripts/orbit-bar-search.js
+++ b/app/assets/javascripts/orbit-bar-search.js
@@ -1,23 +1,25 @@
-
-$(document).ready(function(){
- $('.search').tooltip({
- placement: "bottom"
- });
-});
$(document).on('click', '.orbit-bar-search', function (){
if ($(this).parents('.search').hasClass('visible')){
$(this).parents('.search').stop().animate({
'width':'28px',
- });
+ },500);
+ $('.navbar-search').stop().animate({
+ 'left':'30px',
+ 'opacity':'0',
+ },200);
$(this).parents('.search').css({
'background-color': 'transparent',
});
- $(this).parents('.search').removeClass('visible');
+ $(this).parents('.search').removeClass('visible');
}
else{
$(this).parents('.search').stop().animate({
'width':'265px',
- });
+ },200);
+ $('.navbar-search').stop().animate({
+ 'left':'7px',
+ 'opacity':'1'
+ },500);
$(this).parents('.search').css({
'background-color': 'rgba(0, 0, 0, 0.5)',
});
diff --git a/app/assets/javascripts/orbitTimeline.js b/app/assets/javascripts/orbitTimeline.js
new file mode 100644
index 000000000..bd2fbb78a
--- /dev/null
+++ b/app/assets/javascripts/orbitTimeline.js
@@ -0,0 +1,243 @@
+//for timeline parent library, will be accessable by main library and API library for other people to use.. default inherits orbitDesktopAPI
+// Harry Bomrah
+
+var orbitTimeline = function(dom){
+ t = this;
+ this.dom = $(dom);
+ this.timelineHtml = $("
");
+ //this.marker = t.timelineHtml.find("#timline_marker");
+ this.scale = "";
+ //this.container = t.timelineHtml.find("#t_container");
+ this.events = new Array;
+ this.monthList = ["","January","February","March","April","May","June","July","August","September","October","November","December"];
+ this.dt = new Date();
+ this.fromdate = [t.dt.getFullYear(),t.dt.getMonth()+1];
+ this.ajaxload = true;
+ this.halfline = $(window).width()/2 + 200;
+ this.initialize = function(){
+ t.dom.html(t.timelineHtml);
+ $("div.scrollbar").hide();
+ t.constructTimeScale(function(timelineScale){
+ $("#timeline_scale").html(timelineScale);
+ var totalyearwidth =timelineScale.find(".year").length * timelineScale.find(".year").outerWidth();
+ var totalul = 0;
+ $(".t_scale").css({"min-width":$(".tinycanvas .viewport").width()+500 + "px"})
+ for(eve in t.events){
+ t.makeBubble(t.events[eve]);
+ totalul = $("#scale_wrapper ul").length
+ $(".t_scale").width((totalul*350) + totalyearwidth);
+ }
+ t.bubble_fx();
+ var scrollvalue = 0;
+ $('.tinycanvas').tinyscrollbar({
+ axis: 'x',
+ onMove: function(x){
+ if(x > scrollvalue)
+ t.timeScaleForward();
+ // else
+ // t.timeScaleBackward();
+ scrollvalue = x;
+ var limit = $("#timeline_scale").outerWidth() - $(".tinycanvas .scrollbar").outerWidth();
+ if(t.ajaxload){
+ if((limit - x) < 10){
+ t.eventAjaxLoad(function(){
+ var totalul = 0;
+ for(eve in t.events){
+ t.makeBubble(t.events[eve]);
+ totalul = $("#scale_wrapper ul").length
+ $(".t_scale").width((totalul*360) + totalyearwidth + 314);
+ }
+ $('.tinycanvas').tinyscrollbar_update(x);
+ t.bubble_fx();
+ });
+ }
+ }
+ }
+ });
+ });
+ }
+ this.constructTimeScale = function(callbackFn){
+ var mon ="",year="",formname;
+ var scale = $("
");
+ $.getJSON("desktop_orbit/gettimelinespan",{"get":"papers"},function(years){
+ var $ul = $("");
+ var startyear = years.startyear, endyear = years.endyear,year = years.startyear;
+ $ul.append(''+startyear+' ');
+ while(year > endyear){
+ year--;
+ $ul.append(''+year+' ');
+ }
+ $("div#orbit div#year_navigation").html($ul);
+ })
+ $.getJSON("desktop_orbit/eventajaxload",{"event":"papers","from":t.fromdate},function(papersArray){
+ $.each(papersArray,function(i,pa){
+ $.each(pa.papers,function(i,paper){
+ var dt = new Date(paper.created_at);
+ var cur_mon = paper.created_at.substr(5,2);
+ var cur_year = dt.getFullYear();
+ var cdt = paper.created_at.substr(0,7).replace("-","");
+ formname = (cur_mon.charAt(0) == "0"?cur_mon.charAt(1) : cur_mon)
+ var bubbleData = {"fulldate" : t.monthList[parseInt(formname)] +", " + dt.getDate() + ", " + cur_year,"title":paper.title,"jtitle":"Harry","coauthors":paper.coauthors,"abstract":paper.abstract,"timestamp":cdt}
+ t.events.push(bubbleData);
+ if(cur_year != year){
+ year = cur_year;
+ scale.append($(""+year+"
"));
+ }
+ if(cur_mon != mon){
+ mon = cur_mon;
+ var yr = scale.find("div[data-content="+year+"]");
+ yr.append($(""+t.monthList[parseInt(formname)]+"
"))
+ }
+ });
+ });
+ //scale.append($(""+year+"
"));
+ t.fromdate = [year,formname-1];
+ if(typeof callbackFn == "function"){
+ callbackFn.call(this,scale);
+ }
+ })
+
+ }
+ this.makeBubble = function(bubbleData){
+ var totalul = $("#scale_wrapper").find("div[data-content="+bubbleData.timestamp+"] ul").length;
+ var targetul = $("#scale_wrapper div[data-content="+bubbleData.timestamp+"] div.bubble_list ul").eq(totalul-1);
+ if(totalul == 0){
+ var ul = $("");
+ $("#scale_wrapper").find("div[data-content="+bubbleData.timestamp+"] div.bubble_list").append(ul);
+ targetul = ul;
+ }else{
+ var totalli = targetul.find("li").length;
+ if(totalli >= 5){
+ var ul = $("");
+ $("#scale_wrapper").find("div[data-content="+bubbleData.timestamp+"] div.bubble_list").append(ul);
+ targetul = ul;
+ }
+ }
+ var bt = (bubbleData.title.length > 70? bubbleData.title.substr(0,70) + "..." : bubbleData.title);
+ var bubble = $(""+bt+""+bubbleData.fulldate+" ");
+ targetul.prepend(bubble);
+ bubble.show();
+ bubble.click(function(){
+ var thisbubble = $(this);
+ $(this).parents(dom)
+ .find('.bubble, .date')
+ .removeClass('thmc1 thmtxt');
+
+ o.toolPopup({
+ parent: $(this).parent(),
+ html : "
"+bubbleData.jtitle+" Co-Authors "+bubbleData.coauthors+" Abstract "+bubbleData.abstract+" ",
+ height: "392px",
+ width:"310px",
+ beforeClose : function(){
+ $("div.bubble_arrow").remove();
+ thisbubble.parents(dom)
+ .find('.bubble, .date')
+ .removeClass('thmc1 thmtxt');
+ },
+ onOpen : function(){
+ thisbubble.append('
');
+ },
+ beforeOpen : function(){
+ thisbubble.addClass('thmc1 thmtxt');
+ thisbubble.find('.date').addClass('thmtxt');
+ }
+ });
+ })
+ }
+ this.eventAjaxLoad = function(callbackFn){
+ t.events = [];
+ var mon ="",year="",formname;
+ var scale = $("#scale_wrapper");
+
+ t.ajaxload = false;
+ $.getJSON("desktop_orbit/eventajaxload",{"from":t.fromdate},function(papersArray){
+ $.each(papersArray,function(i,pa){
+ $.each(pa.papers,function(i,paper){
+ var dt = new Date(paper.created_at);
+ var cur_mon = paper.created_at.substr(5,2);
+ var cur_year = dt.getFullYear();
+ var cdt = paper.created_at.substr(0,7).replace("-","");
+ formname = (cur_mon.charAt(0) == "0"?cur_mon.charAt(1) : cur_mon)
+ var bubbleData = {"fulldate" : t.monthList[parseInt(formname)] +", " + dt.getDate() + ", " + cur_year,"title":paper.title,"jtitle":"Harry","coauthors":paper.coauthors,"abstract":paper.abstract,"timestamp":cdt}
+ t.events.push(bubbleData);
+ if(cur_year != year){
+ year = cur_year;
+ if(scale.find("div[data-content="+year+"]").length == 0){
+ scale.append($(""+year+"
"));
+ }
+ }
+ if(cur_mon != mon){
+ mon = cur_mon;
+ var yr = scale.find("div[data-content="+year+"]");
+ yr.append($(""+t.monthList[parseInt(formname)]+"
"))
+ }
+ });
+ });
+ if(papersArray.length != 0){
+ // if(scale.find("div[data-content="+(year-1)+"]").length == 0)
+ // scale.append($(""+year+"
"));
+ t.ajaxload = true;
+ t.fromdate = [year,formname-1];
+ }
+ if(typeof callbackFn == "function"){
+ callbackFn.call(this,scale);
+ }
+ })
+
+ }
+ this.bubble_fx = function(){
+ $('.bubble').on({
+ mouseover: function(){
+ $(this)
+ .addClass('hover')
+ .append(' ');
+ },
+ mouseout: function(){
+ $(this)
+ .removeClass('hover')
+ .find('.icon-chevron-right').remove();
+ },
+ });
+ }
+ this.timeScaleForward = function(){
+
+ // var lastregion = regions.eq(regions.length-1);
+ // if(lastregion.offset().left < halfline){
+ // var year = lastregion.attr("data-content");
+ // $("div#orbit div#year_navigation ul a").removeClass("active");
+ // $("div#orbit div#year_navigation ul a[href="+year+"]").addClass("active");
+ // }
+ var regions = $("div.region_year");
+ regions.each(function(){
+ var offset = $(this).offset().left;
+ if(offset < t.halfline){
+ if(offset > 156){
+ var year = $(this).attr("data-content");
+ $("div#orbit div#year_navigation ul a").removeClass("active");
+ $("div#orbit div#year_navigation ul a[href="+year+"]").addClass("active");
+ }
+ }
+ })
+ }
+ this.timeScaleBackward = function(){
+ var regions = $("div.region_year");
+ regions.each(function(){
+ var offset = $(this).offset().left * -1
+ if(offset > t.halfline){
+ if(offset > 156){
+ var year = $(this).attr("data-content");
+ $("div#orbit div#year_navigation ul a").removeClass("active");
+ $("div#orbit div#year_navigation ul a[href="+year+"]").addClass("active");
+ }
+ }
+ })
+ }
+ this.ajaxEventPull = function(){
+ if(!t.update){
+ t.update = true;
+ $.getJSON("desktop_orbit/ajaxeventpull",{"from":t.fromdate},function(){
+
+ })
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/assets/javascripts/orbitdesktop.js b/app/assets/javascripts/orbitdesktop.js
new file mode 100755
index 000000000..17b148413
--- /dev/null
+++ b/app/assets/javascripts/orbitdesktop.js
@@ -0,0 +1,1699 @@
+// JavaScript Document
+//harry
+//Inititialize function will initialize desktop
+$.extend($.expr[':'], {
+ 'containsi': function (elem, i, match, array) {
+ return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
+ }
+});
+$.fn.sort = function(c) {
+ return this.pushStack([].sort.apply(this, arguments), []);
+ };
+var sortAscending = function(a, b) {
+ return $(a).find("h1").text() > $(b).find("h1").text() ? 1 : -1;
+};
+var sortDescending = function(a, b) {
+ return $(a).find("h1").text() < $(b).find("h1").text() ? 1 : -1;
+};
+var orbitDesktop = function(dom){
+ orbitDesktopAPI.apply(this);
+ o = this;
+ this.contentHolder = dom;
+ this.themesettings = "";
+ this.theme = "4f8d3f493b67fcd05f086359";
+ this.transitionTime = 500;
+ this.currenthtml = "desktop.html";
+ this.currentface = "home";
+ this.desktopData = {"home":"","settings":"","work":"","favorite":"","apps_manager":"","sections":"","journal_p":"","appstore":"","orbit":"","books":"","seminar_p":"","research_d":"","research_p":""};
+ this.tp = "";
+ this.sectionList;
+ this.initialize = function(){
+ var theme = o.theme;
+ var custom = false;
+ $.getJSON("/desktop/get_desktop_settings",{"get":"desktop","desktopid":o.desktopId},function(desktopSettings){
+ if(desktopSettings){
+ if(desktopSettings.theme!="custom"){
+ theme = desktopSettings.theme;
+ }else{
+ theme = "4f8d3f493b67fcd05f086359";
+ custom = true;
+ }
+ o.theme = theme;
+ loadTheme(desktopSettings.customtheme,desktopSettings.wallpaper);
+ }else{loadTheme();}
+ })
+ var loadTheme = function(customtheme,customwallpaper){ //This function will load the theme from database
+ $.getJSON("/"+o.themefolder+"/"+theme+"/settings/"+theme+".json",function(ts){
+ o.themesettings = eval(ts);
+ $('head').append( $(' ').attr('href', "/"+o.themefolder+"/"+theme+"/css/"+ts.css));
+ if(custom){
+ $("head").find("#dyn_css").remove();
+ $("head").append(customtheme);
+ }
+ $(document).ready(function(){o.loadWallpaper(customwallpaper);o.bindDesktopEvents();o.loadIconCache();o.initializeDesktop();});
+ })
+ }
+ }
+ this.changeTheme = function(theme){ // this function is used for changing theme
+ o.theme = theme;
+ $.getJSON("/"+o.themefolder+"/"+theme+"/settings/"+theme+".json",function(ts){
+ o.themesettings = eval(ts);
+ $('head').find("#dyn_css").remove();
+ $('head').append( $(' ').attr('href', "/"+o.themefolder+"/"+theme+"/css/"+ts.css));
+ o.loadWallpaper();
+ o.loadIconCache();
+ })
+ };
+ this.bindDesktopEvents = function(){ //this function will bind the global handlers to thd desktop, for example doc
+ $("a#d_app_manager").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeAppSearch(target);
+ });
+ }
+ });
+ $("a#d_desktop").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeDesktop(target);
+ });
+ }
+ });
+ $("a#d_sections").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeSectionsManager(target);
+ });
+ }
+ });
+ $("#d_journal_p").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeJournalPapers(target);
+ });
+ }
+ });
+ $("a#d_settings").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeSettings(target);
+ });
+ }
+ });
+ $("a#d_appstore").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeAppstore(target);
+ });
+ }
+ });
+ $("a#d_orbit").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeOrbitTimeline(target);
+ });
+ }
+ });
+ $("a#d_books").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeBooks(target);
+ });
+ }
+ });
+ $("a#d_seminar_p").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeSeminar(target);
+ });
+ }
+ });
+ $("a#d_research_d").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeResearchDomain(target);
+ });
+ }
+ });
+ $("a#d_research_p").click(function(){
+ var target = $(this).attr("href");
+ if(o.currenthtml!=target){
+ o.desktopData[o.currentface] = $(o.contentHolder).html();
+ $("#content").hide("drop",o.transitionTime,function(){
+ o.initializeResearchProject(target);
+ });
+ }
+ });
+ $(window).resize(function(){
+ var ww = $(window).width();
+ $("img#thmbackground").attr({"width":ww});
+ if( $('.tinycanvas').length > 0 ){ $('.tinycanvas').tinyscrollbar_update(); }
+ if($(o.contentHolder).find("div.app_frame").length > 0){
+ $(o.contentHolder).find("div.app_frame").each(function(){
+ var app_holder_height = $(this).height() - 72;
+ var app_holder_width = $(this).width();
+ $(this).find("div.app_holder").height(app_holder_height);
+ $(this).find("div.app_holder iframe").attr({"height":app_holder_height,"width":app_holder_width});
+ })
+ }
+ });
+ var $widget_fn = $('.widget_fn'),$fn_des = $('.fn_des');
+ $widget_fn.hover(function(){
+ var fn_name = $(this).find('img').attr('alt'),nth = $(this).parents('.d_cate').index(),des_left = $('.dock_child').eq(nth).width();
+ $(this).addClass('thmc1');
+ $fn_des.text(fn_name).css({'top':nth * 60,'left': des_left + 60}).stop(true, true).fadeIn();
+ },function(){
+ $(this).removeClass('thmc1');
+ $fn_des.stop(true, true).fadeOut();
+ });
+ };
+
+ this.initializeDesktop = function(target){ //this is for initializing main desktops that are sections and tiles
+ if(!target)target = "desktop";
+ o.currenthtml = target;
+ o.currentface = "home";
+
+ var bindHandlers = function(){ // this function will bind all the handlers in the desktop
+ var groupWrapperWidth = 0;
+ $("div#desktop .group").each(function(){groupWrapperWidth+=$(this).outerWidth(true);});
+ var grps = new Array;
+ $("div#desktop #group_wrapper").css("width",groupWrapperWidth);
+ var first = true;
+ $("div#desktop .g_col").sortable({
+ connectWith: ".g_col",
+ tolerance: 'pointer' ,
+ revert: 300,
+ containment: '#group_wrapper',
+ helper: 'clone',
+ stop:function(){
+ first = true;
+ var grpwidth = 0;
+ for(i in grps){
+ var grp = grps[i];
+ if(grp.find(".element").length == 0){
+ grp.animate({"width":"0px"},500,function(){$(this).remove();});
+ grpwidth+=225;
+ }
+ }
+ grps = [];
+ $("#group_wrapper").width($("#group_wrapper").width()-grpwidth);
+ },
+ start:function(){
+ $("#group_wrapper").find("div.group").each(function(i,par){
+ var nextnumber = $(this).find("ul").length;
+ $newcol = $('');
+ $(this).append($newcol);
+ $newcol.sortable({connectWith: '.g_col'});
+ grps.push($newcol);
+ $("#group_wrapper").width($("#group_wrapper").width()+225);
+ });
+ $("div#desktop .g_col").sortable('refresh');
+ },
+ update:function(){
+ if(first){
+ first = false;
+ var newpostitions = new Array;
+ var groupids = new Array;
+ $.each($("div#desktop .group"),function(i,grp){
+ var groupone = new Array;
+ groupids.push($(grp).attr("id"));
+ $ul = $(grp).find(".g_col .element");
+ $.each($ul,function(){
+ groupone.push($(this).attr("id"));
+ })
+ newpostitions.push(groupone);
+ });
+ $.post("/desktop/newpositions",{"sectionid":o.sectionId,"newpos":newpostitions,"groupids":groupids});
+ }
+ var s = $(this).find('.element').length;
+ if(s!=0){
+ last = $(this).find('.element').eq(s-1).position(),
+ lasth = $(this).find('.element').eq(s-1).outerHeight(true);
+ if ((last.top+lasth)>528){
+ $(this).sortable('cancel');
+ }
+ }
+ $("#group_wrapper ul").each(function(){
+ if($(this).find('.element').length == 0)
+ $(this).animate({"width":"0px"},500,function(){$(this).remove();});
+ })
+ },
+ receive: function(event, ui){
+ var s = $(this).find('.element').length,
+ last = $(this).find('.element').eq(s-1).position(),
+ lasth = $(this).find('.element').eq(s-1).outerHeight(true);
+ if ((last.top+lasth)>528){
+ $(ui.sender).sortable('cancel');
+ }
+ }
+ });
+
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas'
+ })
+
+ o.simple_drop_down();
+ $("div#group_wrapper ul li[data-category=app]").click(function(){
+ o.appWindow({
+ title : $(this).find("a").attr("href"),
+ appid : $(this).find("a").attr("href")
+ });
+ });
+ }
+ var loadTiles = function(id){ //This will load tiles for a specific desktop .. id of section has to be passed here to load tiles
+ $("div#desktop div#group_wrapper").empty();
+ $.getJSON("/desktop/getgroups",{sectionid:id},function(groups){
+ var tilecolors = o.themesettings.tilecolor;
+ var opacity = ["op05","op06","op07","op08","op09"];
+ $.each(groups,function(i,group){
+ group.sort(o.sortJSON("position",true,parseInt));
+ // var $group = $(''),
+ var colindex = 0,
+ $group = $('
'),
+ $col = $(''),
+ $li,
+ bdsum = 0,
+ bwsum = 0,
+ bhsum = 0,
+ small = 0,
+ single = false;
+ $group.append($col);
+ for(j=0;j 8 || bhsum > 6){
+ bdsum = 0, bhsum = 0, colindex++,j--;
+ $group.append('');
+ }else{
+ var tilecolor = tilecolors[Math.floor(Math.random()*tilecolors.length)];
+ var op = opacity[Math.floor(Math.random()*opacity.length)];
+ if(j==0)$group.attr("id",tile.group_id);
+
+ if(tile.data_category == "app")
+ $li = $(''+tile.title+' ');
+ else
+ $li = $(''+tile.title+' Loading...
');
+
+ $group.find('.col'+colindex).append($li);
+ }
+ }
+ $("div#desktop div#group_wrapper").append($group);
+ })
+ bindHandlers();
+ o.initializeWidgets();
+ })
+ }
+ var loadSectionList = function(){ //This will load the section list from the db
+ $.getJSON("/desktop/getsectionlist",{desktopid:o.desktopId},function(sectionlist){
+ o.sectionList = eval(sectionlist);
+ $.each(sectionlist,function(i,section){
+ var tempstyle="";
+ if(i==0){
+ tempstyle = "style='display:none;'";
+ $("#desktop #section_heading").text(section.name);
+ }
+ $("div#desktop ul#section_list").append($(''+section.name+' '));
+ })
+ bindSecondaryHandlers();
+ })
+ }
+ var bindSecondaryHandlers = function(){ //This is the secondary bind handler function which is used to bind events which are repeatative
+ $("div#desktop ul#section_list li.section_name").click(function(){
+ $("div#desktop li.section_name").show();
+ $(this).hide();
+ $("#desktop #section_heading").text($(this).text());
+ o.sectionId = $(this).find("a").attr("href");
+ loadTiles(o.sectionId);
+ })
+ }
+
+ if(!o.desktopData[o.currentface]){
+ $(o.contentHolder).empty().load("/desktop/"+target,function(){
+ loadTiles(o.sectionId);
+ loadSectionList();
+ });
+ }else{
+ $(o.contentHolder).html(o.desktopData[o.currentface]);
+ bindHandlers();
+ o.initializeWidgets();
+ bindSecondaryHandlers();
+ $("div#desktop ul#section_list").empty();
+ $.each(o.sectionList,function(i,section){
+ var tempstyle="";
+ if(section._id==o.sectionId){
+ tempstyle = "style='display:none;'";
+ $("div#desktop span#section_heading").text(section.name);
+ }
+ $("div#desktop ul#section_list").append($(''+section.name+' '));
+ })
+ bindSecondaryHandlers();
+ }
+ };
+
+ this.tempFunc = function(th){
+ $.post("desktop/twitter",function(){});
+ };
+
+ this.initializeAppSearch = function(target){ //this is application search ie is app manager initialization
+ o.currenthtml = target;
+ o.currentface = "apps_manager";
+ var searchArray,allApps;
+ var bindHandlers = function(){ // bind handler for app manager page
+ var gn = $('.g_col').length,
+ gw = $('.g_col').outerWidth(true);
+ $("#app_manager #group_wrapper").css("width",gn*gw);
+ // $("div#app_manager .group_search").css("width",$(window).width()-200);
+ //for textbox search
+ $("#app_manager #searchbox").focus(function(){$(this).val("");}).keyup(function(e){
+ if($(this).val()){
+ $("div#app_manager .search_result").empty();
+ $("div#app_manager #seperator").hide();
+ searchArray = $("div#app_manager .element:containsi("+$(this).val()+")");
+ if(searchArray.length>0){
+ $("div#app_manager #seperator").show();
+ searchArray.each(function(){
+ var $newelement = $(''+$(this).html()+'
');
+ $("div#app_manager .search_result").prepend($newelement);
+ })
+ }
+ }else{$("div#app_manager #seperator").hide();$("div#app_manager .search_result").empty();}
+ }).blur(function(){$(this).val("Search");});
+
+ //for Alphabet sorting
+ $("div#app_manager a#alphabet_sort_btn").click(function(){
+ switch ($(this).attr("href")){
+ case "ascending":
+ $(this).attr("href","descending").find(".thmtxt").text("Alphabet [Z-A]");
+ allApps = $("div#app_manager .group_search .element").sort(sortAscending);
+ break;
+ case "descending":
+ $(this).attr("href","ascending").find(".thmtxt").text("Alphabet [A-Z]");
+ allApps = $("div#app_manager .group_search .element").sort(sortDescending);
+ break;
+ }
+ $("div#app_manager #app_list").empty();
+ var count = 0, colindex = 0;
+ $('#app_list').append('
');
+ $.each(allApps,function(i,app){
+ count++;
+ if( count > 4 ){
+ count = 1, colindex+=1;
+ $('#app_list').append('
');
+ $('.g_col.col'+ colindex).append(app);
+ } else {
+ $('.g_col.col'+ colindex).append(app);
+ }
+ })
+ return false;
+ })
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas'
+ })
+ }
+ var loadApps = function(){ //this load apps for sorting and searching
+ $.getJSON("/desktop/getapplist",{desktopid:o.desktopId},function(appss){
+ var count = 0, colindex = 0;
+ $('#app_list').append('
');
+ $.each(appss,function(i,apps){
+ $.each(apps,function(i,app){
+ var $app;
+ count++;
+ $app = $(''+app.title+' ');
+ if( count > 4 ){
+ count = 1, colindex+=1;
+ $('#app_list').append('
');
+ $('.g_col.col'+ colindex).append($app);
+ } else {
+ $('.g_col.col'+ colindex).append($app);
+ }
+ })
+ })
+
+ bindHandlers();
+ })
+ }
+ if(!o.desktopData[o.currentface]){
+ $(o.contentHolder).empty().load("/desktop/"+target,function(){
+ loadApps();
+ });
+ }else{
+ $(o.contentHolder).html(o.desktopData[o.currentface]);
+ bindHandlers();
+ }
+ };
+ this.initializeSectionsManager = function(target){ // this is init function for section manager
+ o.currenthtml = target;
+ o.currentface = "sections";
+ var elementParent,element,slabel;
+ var bindHandlers = function(){ // this is bind handler for section manager page
+ var groupWrapperWidth = 0;
+ $("div#sections .group").width(400);
+ $("div#sections .group").each(function(){groupWrapperWidth+=$(this).width();})
+ groupWrapperWidth+=200;
+ groupWrapperHeight = $(".group").height() + 20;
+ $("#group_wrapper").width(groupWrapperWidth);
+ $("div#sections #group_wrapper .grp").sortable({
+ start:function(){
+ slabel = $(this).siblings('.section_label');
+ slabel.find('li:hidden').stop(1,1).fadeIn(500);
+ },
+ stop:function(){
+ slabel.find('li:not(:nth-child(1))').stop(1,1).fadeOut(500);
+ }
+ });
+ $("div#sections .section_label li:not(:nth-child(1))").droppable({
+ drop:function(event, ui){
+ elementParent = ui.draggable.parents('.group');
+ var $item = $( this ),
+ $list = $( '#'+$item.data("category") );
+
+ if($list.children('.element').length>=24){
+ o.notify("Section is full.","alert");
+ }
+ else{
+ ui.draggable.hide('fast',function(){
+ $(this).appendTo($list).fadeIn();
+ });
+ $.post("/desktop/save_desktop_settings",{"save":"appnewsection","appid":ui.draggable.attr("id"),"newsectionid":$(this).data("content"),"desktopid":o.desktopId});
+ if(o.sectionId == $(this).data("content") || o.sectionId == elementParent.attr("id")){
+ o.desktopData["home"]="";
+ }
+ }
+ $(this).find('span.tile').addClass('op06',400);
+ },
+ over:function(){
+ $(this).find('span.tile').removeClass('op06');
+ },
+ out:function(){
+ $(this).find('span.tile').addClass('op06');
+ },
+ accept: '.to_drop'
+ });
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas'
+ })
+
+
+ };
+ var loadApps = function(){ // this loads apps from db to in each sections
+ $.getJSON("/desktop/getapplist",{desktopid:o.desktopId},function(appss){
+ var $group,$lii,$li;
+ var z=0;
+ for(section in o.sectionList){
+ $group = $('');
+ for(x=0;x<4;x++){
+ if(x==0){
+ $li = $(''+o.sectionList[z].name+' ');
+ $group.find("ul.section_grp").append($li);
+ }
+ if(z!=x){
+ $lii = $(''+o.sectionList[x].name+' ');
+ $group.find("ul.section_grp").append($lii);
+ }
+ }
+ z++;
+ $("div#group_wrapper").append($group);
+ }
+ var yy=1,y=0;
+ $.each(appss,function(i,apps){
+
+ $.each(apps,function(i,app){
+ $li = $(''+app.title+' ');
+ $("ul#section"+yy).append($li);
+ })
+ if(y==1){
+ y=-1;
+ yy++;
+ }
+ y++;
+ })
+ bindHandlers();
+ })
+ }
+ if(!o.desktopData[o.currentface]){
+ $(o.contentHolder).empty().load("/desktop/"+target,function(){
+ loadApps();
+ });
+ }else{
+ $(o.contentHolder).html(o.desktopData[o.currentface]);
+ bindHandlers();
+ }
+
+ };
+ this.initializeSettings = function(target){ //this is to initialize setting page
+ o.currenthtml = target;
+ o.currentface = "settings";
+ var bindHandlers = function(){ // this is the bind handler function for setting page
+ $("div#settings ul#setting_left_nav li a").on({
+ click: function(){
+ if(!$(this).data("clicked")){
+ var tfunc = $(this).attr("href");
+ switch(tfunc){
+ case "themes":
+ themes();
+ break;
+ case "sections":
+ sections();
+ break;
+ case "connection":
+ connection();
+ break;
+ }
+ $("div#settings ul#setting_left_nav li a").removeClass('thmc1 thmtxt').data('clicked',null);
+ $(this).addClass('thmc1 thmtxt').data('clicked',true);
+ }
+ },
+ mouseenter: function(){
+ $(this).removeClass('admtxt').addClass('thmc1 thmtxt');
+ },
+ mouseleave: function(){
+ var t = $(this).data('clicked') ? '' : 'thmc1 thmtxt';
+ $(this).removeClass(t).addClass('admtxt');
+ }
+ });
+
+ }
+ var sections = function(){ // this load section page in setting page
+ var bindHandlers = function(){ // binding handlers in section page
+ $('.tinycanvas').each(function(){
+ var h = $(this).parent().height(),
+ sh = $(this).siblings('.s_tab').height();
+ o.tinyscrollbar_ext({
+ main : $(this),
+ height : h-sh-24,
+ },{
+ axis : "y"
+ })
+ });
+
+ $("a#name_save_btn").click(function(){
+ var desktopnm = new Array;
+ $("#desktop_names input").each(function(){
+ desktopnm.push($(this).val());
+ })
+ $.post("/desktop/save_desktop_settings",{"save":"desktopnames","desktopid":o.desktopId,"desktopnms":desktopnm},function(result,status){
+ if(result[0].success=="true"){
+ o.notify("Names Saved!!","success",2);
+ }else
+ o.notify("Name saving failed!!","imp",2);
+ })
+ $.each(o.sectionList,function(i,sec){
+ sec.name = desktopnm[i];
+ })
+ })
+ }
+ $("div#settings div#panel_r").load("/desktop/settingsections",function(){
+ $.getJSON("/desktop/get_desktop_settings",{"get":"sectionnames","desktopid":o.desktopId},function(sectionnames){
+ $("#desktop_names input").each(function(i){
+ $(this).val(sectionnames[i]);
+ })
+ bindHandlers();
+ })
+ })
+
+ }
+ var themes = function(){ // this opens themes page in setting page
+ var bindHandlers = function(){ // binding handlers in themes page
+ // live change theme
+ $(".theme_list > .ssl_item").click(function(){
+ o.changeTheme($(this).attr("id"));
+ // $(".theme_list > li").removeClass('thmc1').data('clicked',null).find('.theme_name').removeClass('thmtxt');
+ // $(this).addClass('thmc1').data('clicked',true).find('.theme_name').addClass('thmtxt');
+ $.post("/desktop/save_desktop_settings",{"save":"theme","desktopid":o.desktopId,"theme":$(this).attr("id")},function(result,status){
+ if(result[0].success=="true"){
+ o.notify("Theme Saved!!","success",2);
+ loadthmc();
+ } else {
+ o.notify("Theme saving failed!!","imp",2);
+ }
+ });
+ });
+
+ $('.tinycanvas').each(function(){
+ var h = $(this).parent().height(),
+ sh = $(this).siblings('.s_tab').height();
+
+ o.tinyscrollbar_ext({
+ main: $(this),
+ height: h-sh-24
+ },{
+ axis: 'y'
+ })
+ });
+
+ o.single_select();
+ o.simple_tab();
+
+ $('.color-picker').miniColors({
+ change:function(hex){
+ var changewhat = $(this).attr("for");
+ var previewarea = $("#theme_preview_area");
+ switch(changewhat){
+ case "thmtxt":
+ case "thmtxth":
+ previewarea.find("."+changewhat).css({"color":hex});
+ break;
+ case "g_sep":
+ previewarea.find("."+changewhat).css({"border-color":hex});
+ break;
+ case "background":
+ previewarea.css({"background-color":hex});
+ break;
+ default:
+ previewarea.find("."+changewhat).css({"background-color":hex});
+ break;
+ }
+ }
+ });
+
+ $("a#theme_submit").click(function(){
+ o.confirm({
+ message : "Are you sure that you want to save custom theme?",
+ highlighted : 1,
+ buttons : ["Yes","No"]
+ },function(reply){
+ if(reply){
+ var colors = new Array;
+ $("#color_input input").each(function(){
+ colors[$(this).attr("for")] = $(this).val();
+ })
+ var dhtml ="";
+ $("head").find("#dyn_css").remove();
+ $("head").append(dhtml);
+ $.post("/desktop/save_desktop_settings",{"save":"customtheme","desktopid":o.desktopId,"theme":dhtml},function(result,status){
+ if(result[0].success=="true")
+ o.notify("Custom theme saved!!","success",2);
+ else
+ o.notify("Custom theme saving failed!!","imp",2);
+ })
+ }
+ })
+ });
+
+ $(".stock_wallpaper .ssl_item").click(function(){
+ var wallpapername = $(this).find("img").attr("alt");
+ o.changeWallpaper(wallpapername);
+ })
+ }
+ var loadthmc = function(){ // a general function to load the themecolor in color selector
+ $('.color-picker').each(function(){
+ var cc = $(this).attr('for'), hex, color;
+ switch(cc){
+ case 'thmtxt':
+ case 'thmtxth':
+ hex = 'color';
+ break;
+ case 'g_sep':
+ hex = 'border-left-color';
+ break;
+ default:
+ hex = 'background-color';
+ break;
+ }
+ if(cc=="background")
+ color = $("#theme_preview_area").css("background-color");
+ else
+ color = $('#theme_preview_area .'+cc).css(hex);
+ $(this).miniColors("value", o.rgb2hex(color));
+ });
+ }
+
+ $("div#settings div#panel_r").load("/desktop/settingthemes",function(){
+ $.getJSON("/desktop/get_desktop_settings",{"get":"theme","desktopid":o.desktopId},function(theme){
+ $('#st1 .theme_list [id='+theme+']')
+ .addClass("thmc1 active", 300)
+ .find("span")
+ .addClass("thmtxt");
+
+ bindHandlers();
+ loadthmc();
+ })
+ })
+ }
+
+ var connection = function(){
+ var bindHandlers = function(){
+ $("#connection_setting ul a").click(function(){
+ var what = $(this).attr("for"),
+ type = $(this).attr("href"),
+ $ul = $("#"+type+"_connection"),
+ usernm = $ul.find("input[type=text]").val(),
+ pwd = $ul.find("input[type=password]").val();
+ switch(what){
+ case "save":
+ case "new":
+ if(usernm!="" && pwd!=""){
+ $ul.find("input[type=text]").replaceWith(""+usernm+"
")
+ $ul.find("input[type=password]").replaceWith("••••••
");
+ $(this).text("Edit").attr("for","edit");
+ $(this).parent().find("a[for=delete]").show();
+ $ul.find("span.c_status").text("Connected").addClass("c_status_on");
+ if(what=="save")
+ what="edit";
+ saveaccount(usernm,pwd,type,what);
+ }
+ break;
+ case "edit":
+ var un = $ul.find("div.usrnm").text();
+ $ul.find("div.usrnm").replaceWith(' ');
+ $ul.find("div.pwd").replaceWith(' ');
+ $(this).text("Save").attr("for","save");
+ break;
+ case "delete":
+ var $this = $(this);
+ o.confirm({
+ message : "Are you sure that you want to remove this account?",
+ buttons : ["Yes","No"],
+ highlighted : 2
+ },function(reply){
+ if(reply){
+ $this.hide();
+ $ul.find("div.usrnm").replaceWith(' ');
+ $ul.find("div.pwd").replaceWith(' ');
+ $ul.find("span.c_status").text("No Connection").removeClass("c_status_on");
+ $this.parent().find("a[for=edit]").text("Connect").attr("for","new");
+ saveaccount("","",type,what);
+ }
+ })
+ break;
+ }
+ })
+
+ var $conlist = $('.s_form'),
+ conlist_w = $conlist.length * $conlist.outerWidth(true) + ($conlist.length - 1) * 25;
+
+ $('#connection_setting').width(conlist_w);
+
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas'
+ })
+
+ }
+ var saveaccount = function(usernm,pwd,type,what){
+ $.post("/desktop/save_account_info",{email:usernm,password:pwd,account:type,dowhat:what},function(result){
+ if(what!="delete"){
+ if(result[0].success=="true")
+ o.notify(type+" account connected!!","success",2);
+ else
+ o.notify(type+" account connection failed!!","imp",2);
+ }else{
+ if(result[0].success=="true")
+ o.notify(type+" account removed!!","success",2);
+ else
+ o.notify(type+" account removal failed!!","imp",2);
+ }
+ })
+ }
+ $("div#settings div#panel_r").load("/desktop/settingconnection",function(){
+ $.getJSON("desktop/getaccounts",function(accounts){
+ $.each(accounts,function(i,account){
+ $ul = $("#"+account.type+"_connection");
+ $ul.find("input[type=text]").replaceWith(""+account.email+"
")
+ $ul.find("input[type=password]").replaceWith("••••••
");
+ $ul.find("a[for=new]").text("Edit").attr("for","edit");
+ $ul.find("a[for=delete]").show();
+ $ul.find("span.c_status").text("Connected").addClass("c_status_on");
+ })
+ bindHandlers();
+ })
+
+ })
+
+ }
+
+ $(o.contentHolder).empty().load("/desktop/"+target,function(){
+ bindHandlers();
+ themes();
+ });
+ };
+ this.initializeOrbitTimeline = function(target){
+ o.currenthtml = target;
+ o.currentface = "orbit";
+ var bindHandlers = function(){
+ var timeline = new orbitTimeline("#timeline");
+ timeline.initialize();
+ }
+ if(!o.desktopData[o.currentface]){
+ $(o.contentHolder).empty().load("/desktop_orbit/"+target,function(){
+ bindHandlers();
+ });
+ }else{
+ $(o.contentHolder).html(o.desktopData[o.currentface]);
+ bindHandlers();
+ }
+ };
+ this.initializeJournalPapers = function(target){ // this init journal papers
+ o.currenthtml = target;
+ o.currentface = "journal_p";
+ var bindHandlers = function(){ // bind handler for journal paper
+ $('.s_menu a').on({
+ click: function(){
+ if(!$(this).hasClass('active')){
+ var tfunc = $(this).attr('href');
+ switch(tfunc){
+ case 'list':
+ list();
+ break;
+ case 'addpaper':
+ addpaper();
+ break;
+ }
+ $('.s_menu a').removeClass('thmc1 thmtxt active');
+ $(this).addClass('thmc1 thmtxt active');
+ }
+ },
+ mouseenter: function(){
+ if(!$(this).hasClass('active')){
+ $(this).switchClass('admtxt','thmc1 thmtxt',0);
+ }
+ },
+ mouseleave: function(){
+ var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
+ $(this).switchClass(t,'admtxt',0);
+ }
+ });
+ }
+
+ var list = function(){ // to open list part in journal papers page
+ var journalData;
+ var bindHandlers = function(){ // to bind handlers for list page
+ o.simple_drop_down();
+
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas',
+ fill: '.list_t'
+ })
+
+
+ $("#journal_selection_options a").click(function(){
+ switch($(this).attr("href")){
+ case "all":
+ $(".list_item_action > .icon-check-empty").switchClass("icon-check-empty","icon-check",0);
+ break;
+ case "none":
+ $(".list_item_action > .icon-check").switchClass("icon-check","icon-check-empty",0);
+ break;
+ }
+ return false;
+ })
+ $("#journal_view_selection a").click(function(){
+ switch($(this).attr("href")){
+ case "journal":
+ journalview();
+ break;
+ case "keywords":
+ keywordsview();
+ break;
+ case "title":
+ titleview();
+ break;
+ case "abstract":
+ abstractview();
+ break;
+ }
+ return false;
+ })
+ }
+
+ var bindSecondaryHandlers = function(){
+ $("#journal_p div#paper_list a").click(function(){
+ if($(this).hasClass("icon-check-empty")){
+ $(this).switchClass("icon-check-empty","icon-check",0);
+ } else if($(this).hasClass("icon-check")) {
+ $(this).switchClass("icon-check","icon-check-empty",0);
+ } else if($(this).hasClass("icon-star")){
+ $(this).removeClass("icon-star").addClass("icon-star-empty");
+ } else if($(this).hasClass("icon-star-empty")){
+ $(this).removeClass("icon-star-empty").addClass("icon-star");
+ }
+ return false;
+ })
+ }
+
+ var journalview = function(){
+ $("#journal_p div#paper_list div.overview").empty();
+ var column = $(''),
+ counter = 1,
+ li;
+ $.each(journalData,function(i,journal){
+ $.each(journal.papers,function(j,paper){
+ li = $(''+journal.title+'
'+paper.title+'
');
+ column.find("ul").append(li);
+ if(counter%5==0){
+ $("#journal_p div#paper_list div.overview").append(column);
+ column = $('');
+ }
+ counter++;
+ })
+ })
+ $("#journal_p div#paper_list div.overview").append(column);
+ bindSecondaryHandlers();
+ }
+
+ var keywordsview = function(){
+ $("#journal_p div#paper_list div.overview").empty();
+ var column = $(''),
+ counter = 1,
+ li;
+ $.each(journalData,function(i,journal){
+ $.each(journal.papers,function(j,paper){
+ li = $(''+paper.title+'
'+paper.keywords+'
');
+ column.find("ul").append(li);
+ if(counter%5==0){
+ $("#journal_p div#paper_list div.overview").append(column);
+ column = $('');
+ }
+ counter++;
+ })
+ })
+ $("#journal_p div#paper_list div.overview").append(column);
+ bindSecondaryHandlers();
+ }
+
+ var titleview = function(){
+ $("#journal_p div#paper_list div.overview").empty();
+ var column = $(''),
+ counter = 1,
+ li;
+ $.each(journalData,function(i,journal){
+ $.each(journal.papers,function(j,paper){
+ li = $(''+paper.title+'
');
+ column.find("ul").append(li);
+ if(counter%5==0){
+ $("#journal_p div#paper_list div.overview").append(column);
+ column = $('');
+ }
+ counter++;
+ })
+ })
+ $("#journal_p div#paper_list div.overview").append(column);
+ bindSecondaryHandlers();
+ }
+
+ var abstractview = function(){
+ $("#journal_p div#paper_list div.overview").empty();
+ var column = $(''),
+ li;
+ $.each(journalData,function(i,journal){
+ $.each(journal.papers,function(j,paper){
+ li = $(''+paper.title+'
'+paper.abstract+paper.abstract+'
');
+ column.find("ul").append(li);
+ $("#journal_p div#paper_list div.overview").append(column);
+ column = $('');
+ })
+ })
+ $("#journal_p div#paper_list div.overview").append(column);
+ bindSecondaryHandlers();
+ }
+
+ $("div#journal_p div#panel_r").load("/desktop/journal_p_list",function(){
+ $.getJSON("/desktop_publications/getjournals",function(journals){
+ journalData = eval(journals);
+ journalview();
+ bindHandlers();
+ })
+ })
+ }
+
+ var addpaper = function(){ // to open add pages in journal papers page
+ var bindHandlers = function(){ // to bind handlers for add page
+ o.simple_drop_down();
+
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas',
+ fill: '.s_grid_con'
+ })
+ }
+ $("div#journal_p div#panel_r").load("/desktop/journal_p_add",function(){
+ bindHandlers();
+ })
+ }
+
+ if(!o.desktopData[o.currentface]){
+ $(o.contentHolder).empty().load("/desktop/"+target,function(){
+ bindHandlers();
+ list();
+ });
+ }else{
+ $(o.contentHolder).html(o.desktopData[o.currentface]);
+ bindHandlers();
+ list();
+ }
+ };
+ this.initializeAppstore = function(target){
+ o.currenthtml = target;
+ o.currentface = "appstore";
+ var bindHandlers = function(){
+ $('.s_menu a').on({
+ click: function(){
+ if(!$(this).hasClass('active')){
+ var tfunc = $(this).attr('href');
+ switch(tfunc){
+ case 'widgets':
+ widgets();
+ break;
+ case 'onlinestore':
+ onlinestore();
+ break;
+ }
+ $('.s_menu a').removeClass('thmc1 thmtxt active');
+ $(this).addClass('thmc1 thmtxt active');
+ }
+ },
+ mouseenter: function(){
+ if(!$(this).hasClass('active')){
+ $(this).switchClass('admtxt','thmc1 thmtxt',0);
+ }
+ },
+ mouseleave: function(){
+ var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
+ $(this).switchClass(t,'admtxt',0);
+ }
+ });
+ }
+ var widgets = function(){
+ var bindHandlers = function(){
+ $("#widget_list a").click(function(){
+ var sectionid = $(this).attr("for");
+ var widgetid = $(this).parent().parent().attr("for");
+ switch($(this).attr("href")){
+ case "addthis":
+ $this = $(this);
+ o.confirm({
+ message: "Are you sure you want to add this widget?",
+ buttons: ['Yes','No'],
+ highlighted: 1
+ },function(reply){
+ if(reply){
+ $.post("desktop_appstore/widgets_settings",{section:sectionid, widget:widgetid, what:"add"},function(result){
+ if(result[0].success){
+ $this.attr("href","removethis");
+ $targetDom = $this.parent().parent().find("div.status");
+ $parentDom = $this.parent();
+ if($targetDom.find("a").length == 0)
+ $targetDom.html("Status : Installed on");
+ $targetDom.append(" ").append($this);
+ if($parentDom.find("a").length == 0)
+ $parentDom.empty();
+ o.desktopData["home"]="";
+ o.notify("Widget added.","success",2);
+ }else{
+ o.notify(result[0].error,"imp",2);
+ }
+ })
+ }
+ })
+ break;
+ case "removethis":
+ $this = $(this);
+ o.confirm({
+ message: "Are you sure you want to remove this widget?",
+ buttons: ['Yes','No'],
+ highlighted: 2
+ },function(reply){
+ if(reply){
+ $.post("desktop_appstore/widgets_settings",{section:sectionid, widget:widgetid, what:"remove"},function(result){
+ if(result[0].success){
+ $this.attr("href","addthis");
+ $targetDom = $this.parent().parent().find("div.not_status");
+ $parentDom = $this.parent();
+ if($targetDom.html()=="")
+ $targetDom.html("Install on");
+ $targetDom.append(" ").append($this);
+ if($parentDom.find("a").length == 0)
+ $parentDom.html("Status : Downloaded");
+ o.desktopData["home"]="";
+ o.notify("Widget removed.","success",2);
+ }
+ })
+ }
+ })
+ break;
+ }
+ return false;
+ });
+
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas',
+ fill: '.list_t'
+ })
+ }
+ $("div#apps_store div#panel_r").load("/desktop_appstore/widgets",function(){
+
+ $.getJSON("/desktop_appstore/getuserwidgets",function(userwidgets){
+ var column = $(''),
+ counter = 1,
+ li;
+ $.each(userwidgets,function(i,widge){
+ if(!widge.status)widge.status = "Downloaded";
+ var brick = widge.shape.split(' '),
+ bw = parseInt(brick[0].substr(1)),
+ bh = parseInt(brick[1].substr(1)),
+ shp = bw+" X "+bh;
+ li = $(''+widge.name+'
Author : '+widge.author+'
Shape : '+shp+'
Status : '+widge.status+'
');
+ var cur_section_names = new Array();
+ var section_names = new Array();
+ var section_links = new Array();
+ if(widge.section){
+ var s_name_list = "";
+ $.each(widge.section,function(x,sec){
+ $.each(o.sectionList,function(j,s){
+ if(s._id==sec){
+ cur_section_names.push(s.name);
+ s_name_list+= ""+s.name +" ";
+ }
+ })
+ })
+ var section_names = o.getArrayfromJson(o.sectionList,"name");
+ var section_links = o.getArrayfromJson(o.sectionList,"_id");
+ var s_name_list_not = "";
+ $.each(section_names,function(j,sec_name){
+ if($.inArray(sec_name,cur_section_names)==-1){
+ var sec_link = section_links[j];
+ s_name_list_not+= ""+sec_name+" ";
+ }
+ })
+ li.find("div.status").html("Status : Installed on "+s_name_list);
+ if(s_name_list_not)
+ li.find("div.not_status").html("Install on "+s_name_list_not);
+ }else{
+ li.find("div.not_status").html("Install on "+o.sectionList[0].name+" "+o.sectionList[1].name+" "+o.sectionList[2].name+" "+o.sectionList[3].name)+" ";
+ }
+ //console.log(section_names);
+ column.find("ul").append(li);
+ if(counter%4==0){
+ $("#apps_store div#widget_list").append(column);
+ column = $('');
+ }
+ counter++;
+ })
+ $("#apps_store div#widget_list").append(column);
+ bindHandlers();
+ })
+ })
+ }
+ var onlinestore = function(){
+ var bindHandlers = function(){
+
+ }
+ $("div#apps_store div#panel_r").load("/desktop_appstore/onlinestore",function(){
+ bindHandlers();
+ })
+ }
+ if(!o.desktopData[o.currentface]){
+ $(o.contentHolder).empty().load("/desktop_appstore/"+target,function(){
+ onlinestore();
+ bindHandlers();
+ });
+ }else{
+ $(o.contentHolder).html(o.desktopData[o.currentface]);
+ onlinestore();
+ bindHandlers();
+ }
+ }
+ this.initializeBooks = function(target){
+ o.currenthtml = target;
+ o.currentface = "books";
+ var bindHandlers = function(){
+ $('.s_menu a').on({
+ click: function(){
+ if(!$(this).hasClass('active')){
+ var tfunc = $(this).attr('href');
+ switch(tfunc){
+ case 'list':
+ list();
+ break;
+ case 'addbook':
+ addbook();
+ break;
+ }
+ $('.s_menu a').removeClass('thmc1 thmtxt active');
+ $(this).addClass('thmc1 thmtxt active');
+ }
+ },
+ mouseenter: function(){
+ if(!$(this).hasClass('active')){
+ $(this).switchClass('admtxt','thmc1 thmtxt',0);
+ }
+ },
+ mouseleave: function(){
+ var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
+ $(this).switchClass(t,'admtxt',0);
+ }
+ });
+ }
+
+ var list = function(){
+ var bindHandlers = function(){
+ o.simple_drop_down();
+
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas',
+ fill: '.list_t'
+ })
+ }
+
+ $("div#books div#panel_r").load("/desktop/books_list",function(){
+ bindHandlers();
+ })
+ }
+
+ var addbook = function(){
+ var bindHandlers = function(){
+ o.simple_drop_down();
+
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas',
+ fill: '.s_grid_con'
+ })
+
+ }
+
+ $("div#books div#panel_r").load("/desktop/books_add",function(){
+ bindHandlers();
+ })
+ }
+ if(!o.desktopData[o.currentface]){
+ $(o.contentHolder).empty().load("/desktop/"+target,function(){
+ list();
+ bindHandlers();
+ });
+ }else{
+ $(o.contentHolder).html(o.desktopData[o.currentface]);
+ list();
+ bindHandlers();
+ }
+ }
+ this.initializeSeminar = function(target){
+ o.currenthtml = target;
+ o.currentface = "seminar_p";
+ var bindHandlers = function(){
+ $('.s_menu a').on({
+ click: function(){
+ if(!$(this).hasClass('active')){
+ var tfunc = $(this).attr('href');
+ switch(tfunc){
+ case 'list':
+ list();
+ break;
+ case 'addseminar':
+ addseminar();
+ break;
+ }
+ $('.s_menu a').removeClass('thmc1 thmtxt active');
+ $(this).addClass('thmc1 thmtxt active');
+ }
+ },
+ mouseenter: function(){
+ if(!$(this).hasClass('active')){
+ $(this).switchClass('admtxt','thmc1 thmtxt',0);
+ }
+ },
+ mouseleave: function(){
+ var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
+ $(this).switchClass(t,'admtxt',0);
+ }
+ });
+ }
+
+ var list = function(){
+ var bindHandlers = function(){
+ o.tinyscrollbar_ext({
+ main : ".tinycanvas",
+ fill : ".list_t"
+ })
+ }
+
+ $("div#seminar_p div#panel_r").load("/desktop/seminar_p_list",function(){
+ bindHandlers();
+ })
+ }
+
+ var addseminar = function(){
+ var bindHandlers = function(){
+ o.simple_drop_down();
+
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas',
+ fill: '.s_grid_con'
+ })
+ }
+
+ $("div#seminar_p div#panel_r").load("/desktop/seminar_p_add",function(){
+ bindHandlers();
+ })
+ }
+ if(!o.desktopData[o.currentface]){
+ $(o.contentHolder).empty().load("/desktop/"+target,function(){
+ list();
+ bindHandlers();
+ });
+ }else{
+ $(o.contentHolder).html(o.desktopData[o.currentface]);
+ list();
+ bindHandlers();
+ }
+ }
+ this.initializeResearchDomain = function(target){
+ o.currenthtml = target;
+ o.currentface = "research_d";
+ var bindHandlers = function(){
+ $('.s_menu a').on({
+ click: function(){
+ if(!$(this).hasClass('active')){
+ var tfunc = $(this).attr('href');
+ switch(tfunc){
+ case 'list':
+ list();
+ break;
+ case 'add':
+ add_this();
+ break;
+ }
+ $('.s_menu a').removeClass('thmc1 thmtxt active');
+ $(this).addClass('thmc1 thmtxt active');
+ }
+ },
+ mouseenter: function(){
+ if(!$(this).hasClass('active')){
+ $(this).switchClass('admtxt','thmc1 thmtxt',0);
+ }
+ },
+ mouseleave: function(){
+ var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
+ $(this).switchClass(t,'admtxt',0);
+ }
+ });
+ }
+ var list = function(){
+ var bindHandlers = function(){
+ o.tinyscrollbar_ext({
+ main : ".tinycanvas",
+ fill : ".list_t"
+ })
+ }
+
+ $("div#research_d div#panel_r").load("/desktop/research_d_list",function(){
+ bindHandlers();
+ })
+ }
+ var add_this = function(){
+ var bindHandlers = function(){
+ o.simple_drop_down();
+
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas',
+ fill: '.s_grid_con'
+ })
+ }
+
+ $("div#research_d div#panel_r").load("/desktop/research_d_add",function(){
+ bindHandlers();
+ })
+ }
+ if(!o.desktopData[o.currentface]){
+ $(o.contentHolder).empty().load("/desktop/"+target,function(){
+ list();
+ bindHandlers();
+ });
+ }else{
+ $(o.contentHolder).html(o.desktopData[o.currentface]);
+ list();
+ bindHandlers();
+ }
+ }
+ this.initializeResearchProject = function(target){
+ o.currenthtml = target;
+ o.currentface = "research_p";
+ var bindHandlers = function(){
+ $('.s_menu a').on({
+ click: function(){
+ if(!$(this).hasClass('active')){
+ var tfunc = $(this).attr('href');
+ switch(tfunc){
+ case 'list':
+ list();
+ break;
+ case 'add':
+ add_this();
+ break;
+ }
+ $('.s_menu a').removeClass('thmc1 thmtxt active');
+ $(this).addClass('thmc1 thmtxt active');
+ }
+ },
+ mouseenter: function(){
+ if(!$(this).hasClass('active')){
+ $(this).switchClass('admtxt','thmc1 thmtxt',0);
+ }
+ },
+ mouseleave: function(){
+ var t = $(this).hasClass('active') ? '' : 'thmc1 thmtxt';
+ $(this).switchClass(t,'admtxt',0);
+ }
+ });
+ }
+ var list = function(){
+ var bindHandlers = function(){
+ o.tinyscrollbar_ext({
+ main : ".tinycanvas",
+ fill : ".list_t"
+ })
+ }
+
+ $("div#research_p div#panel_r").load("/desktop/research_p_list",function(){
+ bindHandlers();
+ })
+ }
+ var add_this = function(){
+ var bindHandlers = function(){
+ o.simple_drop_down();
+
+ o.tinyscrollbar_ext({
+ main: '.tinycanvas',
+ fill: '.s_grid_con'
+ })
+ }
+
+ $("div#research_p div#panel_r").load("/desktop/research_p_add",function(){
+ bindHandlers();
+ })
+ }
+ if(!o.desktopData[o.currentface]){
+ $(o.contentHolder).empty().load("/desktop/"+target,function(){
+ list();
+ bindHandlers();
+ });
+ }else{
+ $(o.contentHolder).html(o.desktopData[o.currentface]);
+ list();
+ bindHandlers();
+ }
+ }
+ this.loadWallpaper = function(wallpaper){ // this is to load new wallpaper
+ if(!wallpaper)wallpapernm = o.themesettings.background;else wallpapernm = wallpaper
+ var ww = $(window).width();
+ var wh = $(window).height();
+ if(!wallpaper)
+ $("img#thmbackground").attr({"src":"/"+o.themefolder+"/"+o.theme+"/images/"+wallpapernm,"width":ww}).css({"position":"fixed","top":"0px","left":"0px","z-index":"-1","height":"auto"});
+ else
+ $("img#thmbackground").attr({"src":o.wallpaperPath+wallpaper,"width":ww}).css({"position":"fixed","top":"0px","left":"0px","z-index":"-1","height":"auto"});
+
+ $("div#bgover").css({"position":"fixed","top":"0px","left":"0px","z-index":"-1","width":ww,"height":wh});
+ };
+
+ this.loadIconCache = function(){ // this function load or refresh icon cache for the theme
+ var imgs = $("ul.docklist img");
+ $.each(imgs,function(){
+ var setting_name = $(this).attr("id").replace("_icon","");
+ $(this).attr("src","/"+o.themefolder+"/"+o.theme+"/images/"+o.themesettings.icons[setting_name])
+ })
+ };
+ this.initializeWidgets = function(){ // this function will initialize all the widgets in the desktop
+ var elements = $("#group_wrapper li.element");
+ $.each(elements,function(){
+ var widget = $(this);
+ if(widget.attr("data-category")=="widget"){
+ var widgename = widget.attr("data-content");
+ $.getScript("/desktop_widgets/"+widgename+"/"+widgename+".js",function(){
+ widget.find("div.appholder").load("/desktop_widgets/"+widgename+"/index.html.erb");
+ });
+ // $(this).find("div.appholder").append( $(' ').attr('href', "/desktop_widgets/"+widgename+"/css/"+widgename+".css"));
+ }
+
+ })
+ };
+ this.saveWallpaper = function(wallpaper){ // this function saves wallpaper in db
+ $.post("desktop/save_desktop_settings",{"save":"wallpaper","wallpapernm":wallpaper,"desktopid":o.desktopId},function(result){
+ if(result[0].success=="true")
+ o.notify("Wallpaper saved!!","success",2);
+ else
+ o.notify("Wallpaper saving failed!!","imp",2);
+ })
+ };
+ this.tinyscrollbar_ext = function(target,tinysettings){
+ //main : dom on which tinyscrollbar has to be applied
+ //fill : number or object for width
+ //height : height for the target element
+ //tinysettings : tinyscrollbar settings
+
+ if(typeof target.main == "undefined"){
+ o.notify('tinyscrollbar: target undefined','imp',2);
+ return;
+ }else{
+ target.main = $(target.main);
+ }
+ //var target.fill = $
+ var tinysettings = ( typeof tinysettings == 'undefined' ) ? {"axis":"x"} : tinysettings ;
+
+ var count,baseWidth,fillArray,pxs;
+
+ if( typeof target.fill == 'string' ){
+ fillArray = target.main.find(target.fill);
+ count = fillArray.length;
+ baseWidth = $(target.fill).eq(1).outerWidth(true);
+ target.main.find('.overview').width( baseWidth * count);
+ } else if( typeof target.fill == 'number' ){
+ target.main.find('.overview').width( target.fill );
+ } else if( typeof target.fill == 'undefined' ){
+
+ } else {
+ o.notify('tinyscrollbar: setting width failed','imp',2);
+ }
+ if(target.height)
+ target.main.height(target.height);
+
+ target.main
+ .tinyscrollbar( tinysettings )
+ .find('.scrollbar')
+ .delay(1500)
+ .addClass('op00', 500);
+ };
+ this.simple_drop_down = function(){
+ // simple dropdown menu
+ if( !$('.sdm').children('.sdm_o').length > 0 ){
+ return;
+ } else {
+ $('.sdm').hover(function(){
+ $(this).stop(1,1).toggleClass('thmc2 thmtxt');
+ }, function(){
+ $(this).stop(1,1).toggleClass('thmc2 thmtxt');
+ });
+ $('.sdm').find('a').hover(function(){
+ $(this).stop(1,1).toggleClass('thmc2 thmtxt');
+ }, function(){
+ $(this).stop(1,1).toggleClass('thmc2 thmtxt');
+ });
+ }
+ };
+ this.simple_tab = function(){
+ // tab
+ var $anchor = $('.s_tab a[href*=#]'),
+ $tabcontent = $('.st_c');
+
+ $anchor.each(function(){
+ $(this).click(function(){
+ var target = $(this).attr('href');
+ $anchor.removeClass('thmc2 thmtxt admtxt admbg').addClass('admtxt admbg');
+ $(this).toggleClass('thmc2 thmtxt admtxt admbg');
+ $tabcontent.hide();
+ $(target).show();
+ if( $('.tinycanvas').length > 0 ){
+ $('.tinycanvas').tinyscrollbar_update();
+ }
+ return false;
+ });
+ });
+ };
+ this.single_select = function(){
+ // single select
+ $('.ssl .ssl_item').each(function(){
+ var $des = $(this).find('.ssl_des');
+
+ $(this).on({
+ click: function(){
+ $(this).switchClass('','thmc1 active',0);
+ $(this).siblings('.thmc1').switchClass('thmc1 active','',0);
+
+ if( $des.length > 0 ){
+ $(this).parents('.ssl').find('.ssl_des').removeClass('thmtxt');
+ $des.addClass('thmtxt');
+ }
+ },
+ mouseenter: function(){
+ if( !$(this).hasClass('active') ){
+ $(this).addClass('thmc1');
+
+ if( $des.length > 0 ){
+ $des.addClass('thmtxt');
+ }
+ }
+ },
+ mouseleave: function(){
+ if( !$(this).hasClass('active') ){
+ $(this).removeClass('thmc1');
+
+ if( $des.length > 0 ){
+ $des.removeClass('thmtxt');
+ }
+ }
+ }
+ });
+ });
+ }
+ o.initialize();
+}
+
+orbitDesktop.prototype.themefolder = "themes";
+orbitDesktop.prototype.widgetfolder = "desktop_widgets";
+orbitDesktop.prototype.desktopId = "1";
+orbitDesktop.prototype.notifyImgPath = "temp";
+orbitDesktop.prototype.wallpaperPath = "/assets/stockBackground/";
+orbitDesktop.prototype.iconPath = "/assets/icons/";
+orbitDesktop.prototype.currentLanguage = "en";
+orbitDesktop.prototype.currentUsername = "Harry";
+var uselessfunction = function(){
+ $.post("/desktop/temp_func",{sectionid:"4f83e7bbbd98eb041600001d"});
+}
diff --git a/app/assets/javascripts/orbitdesktopAPI.js b/app/assets/javascripts/orbitdesktopAPI.js
new file mode 100644
index 000000000..57065c4d5
--- /dev/null
+++ b/app/assets/javascripts/orbitdesktopAPI.js
@@ -0,0 +1,207 @@
+// JavaScript Document
+//Harry Bomrah
+var orbitDesktopAPI = function(){
+ o = this;
+ this.windowcounter = 0;
+ this.notify = function(msg,type,time){
+ //takes 3 arguments
+ //msg (string) : message to display
+ //type (string : success, imp, alert
+ //time (int) : duration for notification in seconds
+ var $notify = $("#orbitnote");
+ var img, n_height;
+ if(!type)type="";
+ switch(type){
+ case "alert":
+ img = "note_alert.png";
+ break;
+ case "imp":
+ img = "note_imp.png";
+ break;
+ case "success":
+ img = "note_success.png";
+ break;
+ default:
+ img = "note_alert.png";
+ break;
+ }
+ $notify.find("img#note_img").attr("src",o.notifyImgPath+img);
+ $notify.find(".note_message").text(msg);
+ n_height = $notify.outerHeight();
+ if(!time)time=5000; else time=time*1000;
+ $notify
+ .css({'top':-n_height, 'display':'block', 'opacity':0})
+ .animate({top:0,opacity:1},200)
+ .delay(time)
+ .animate({top:-n_height,opacity:0},200);
+ };
+ this.executeFunc = function(func,callbackFn){
+ //takes 2 arguments
+ //func (object Function) : the function which has to be executed
+ //callbackFn (object function) : the function for callback
+ func.call(this);
+ if(callbackFn){
+ callbackFn.call(this,func);
+ }
+ };
+ this.sortJSON = function(field, reverse, primer){
+ //takes 3 arguments
+ //field (string): it is the field on which sorting has to be done
+ //reverse (boolean): this is for asc or desc
+ //primer (method): for example pass parseInt for converting the field attribute in integer
+ var key = function (x) {return primer ? primer(x[field]) : x[field]};
+ return function (a,b) {
+ var A = key(a), B = key(b);
+ return ((A < B) ? -1 : (A > B) ? +1 : 0) * [-1,1][+!!reverse];
+ }
+ };
+ this.rgb2hex = function(rgb) {
+ // takes 1 parameter
+ // rgb (string) : pass rgb string to convert
+ rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
+ var hex = function(x) {
+ return ("0" + parseInt(x).toString(16)).slice(-2);
+ }
+ return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
+ };
+ this.changeWallpaper = function(wallpaper){
+ //takes 1 parameter
+ //wallpaper (string): takes wallpaper and sets the wallpaper
+ $("img#thmbackground").attr("src",o.wallpaperPath+wallpaper);
+ o.saveWallpaper(wallpaper);
+ };
+ this.confirm = function(settings,callbackfn){
+ //takes set of arguments in array
+ //settings.buttons (array string) : name of buttons to be displayed
+ //settings.highlighted (integer) : takes either 1 or 2.. will highlight the button which is passed
+ //settings.message (string) : takes a string and message to be displayed on the confirmbox
+ //callbackfn (object function) : function to callback
+
+ if(!settings.buttons)settings.buttons=["Ok","Cancel"];
+ if(settings.highlighted!=1 && settings.highlighted!=2)settings.highlighted=2;
+ if(!settings.message)settings.message = "Are you sure?"
+ var $confirm = $("#orbitdiag");
+ $confirm.find(".diag_action a").removeClass("thmc1 thmtxt").addClass("admbg admtxt");
+ $confirm.find(".diag_message").text(settings.message);
+ if(settings.highlighted == 1)
+ $confirm.find("#diag_confirm").removeClass("admbg admtxt").addClass("thmc1 thmtxt");
+ if(settings.highlighted == 2)
+ $confirm.find("#diag_cancel").removeClass("admbg admtxt").addClass("thmc1 thmtxt");
+ $confirm.find("#diag_confirm").text(settings.buttons[0]).one("click",function(){
+ $confirm.stop(1,1).fadeOut();
+ $confirm.find(".diag_action a").unbind();
+ if(typeof callbackfn=="function")
+ callbackfn.call(this,true);
+ });
+ $confirm.find("#diag_cancel").text(settings.buttons[1]).one("click",function(){
+ $confirm.stop(1,1).fadeOut();
+ $confirm.find(".diag_action a").unbind();
+ if(typeof callbackfn=="function")
+ callbackfn.call(this,false);
+ });
+ $confirm.stop(1,1).fadeIn();
+ };
+ this.getArrayfromJson = function(tjson,key){
+ // returns array and takes json object and key
+ //json (json object) : json object from which the key has to be extracted
+ // key (string) : key which has to be extracted
+ var tempArray = new Array;
+ $.each(tjson,function(i,val){
+ tempArray.push(val[key]);
+ })
+ return tempArray;
+ };
+ this.appWindow = function(settings,callbackfn){
+ //takes set of arguments as array and gives callback
+ //settings.method (string) : like open and close
+ //settings.title (string) : the window title
+ //settings.appid (string) : appid.. user can use this appid to open or close or refresh the window
+ //settings.url (string) : it is the url if you want to force external url to open in appwindow... you have to pass extURL in appid if you want to open externalurl
+ if(typeof settings == "undefined")settings = {};
+ if(!settings.appid){
+ o.notify("Invalid AppID.","imp",3);
+ return;
+ }
+ if(!settings.method)settings.method = "open";
+ if(settings.method == 'open'){
+ var appurl = "http://www.rulingcom.com";
+ o.windowcounter++;
+ if(!settings.title)settings.title = "New Window "+o.windowcounter;
+ if(settings.appid=="extURL"){
+ if(settings.url){
+ if(settings.url.substr(0,3)!="http")settings.url = "http://"+settings.url;
+ var urlregex = new RegExp("^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([0-9A-Za-z]+\.)");
+ if(urlregex.test(settings.url))
+ appurl = settings.url;
+ else{
+ o.notify("Invalid URL","alert",3);
+ return;
+ }
+ }
+ else{
+ o.notify("Invalid URL","alert",3);
+ return;
+ }
+ }
+ var whtml =$('');
+ $(o.contentHolder).append(whtml);
+ var parentwindow = $(o.contentHolder).find("div#app_frame_"+o.windowcounter);
+ var app_holder_height = parentwindow.height() - 72;
+ var app_holder_width = parentwindow.width();
+ parentwindow.find("iframe").attr({"height":app_holder_height,"width":app_holder_width});
+ parentwindow.find("div.app_holder").height(app_holder_height);
+ parentwindow.find("span.icon-remove").click(function(){
+ parentwindow.remove();
+ })
+ }
+ if(typeof callbackfn=="function"){
+ callbackfn.call(this);
+ }
+ };
+ this.toolPopup = function(settings){
+ if(settings == "destroy"){
+ $(".desktop_toolpopup").hide("fold",function(){
+ $(this).remove();
+ $(this).parent().css("position","");
+ })
+ return;
+ }
+ if(settings.parent){
+ if(settings.parent.find("div.desktop_toolpopup").length == 0){
+ settings.height = (!settings.height ? "50px" : settings.height);
+ settings.width = (!settings.width ? "150px" : settings.width);
+ settings.html = (!settings.html ? "" : settings.html);
+
+ //Events
+ settings.onClose = (!settings.onClose ? function(){} : settings.onClose);
+ settings.beforeOpen = (!settings.beforeOpen ? function(){} : settings.beforeOpen);
+ settings.onOpen = (!settings.onOpen ? function(){} : settings.onOpen);
+ settings.beforeClose = (!settings.beforeClose ? function(){} : settings.beforeClose);
+ //Events end
+
+ var leftpos = settings.parent.outerWidth();
+ var toolpopup = $("");
+ settings.parent.css("position","relative");
+ settings.parent.prepend(toolpopup);
+ toolpopup.click(function(event){
+ event.stopPropagation();
+ });
+ settings.beforeOpen.call(this);
+ toolpopup.show("fold",function(){
+ settings.onOpen.call(this);
+ $(document).unbind("click");
+ $(document).one("click",function(e){
+ settings.beforeClose.call(this);
+ toolpopup.hide("fold",function(){
+ toolpopup.remove();
+ settings.parent.css("position","");
+ settings.onClose.call(this);
+ });
+ })
+ });
+ }
+ }
+ }
+};
+orbitDesktopAPI.prototype.notifyImgPath = "temp";
+orbitDesktopAPI.prototype.wallpaperPath = "temp";
diff --git a/app/assets/javascripts/page_edit.js.erb b/app/assets/javascripts/page_edit.js.erb
index d7aaccd0a..8d2ca97c2 100644
--- a/app/assets/javascripts/page_edit.js.erb
+++ b/app/assets/javascripts/page_edit.js.erb
@@ -24,6 +24,10 @@ $("#module_app_list select").live('change', function() {
$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_widgets');
});
+$("#widget_list select").live('change', function() {
+ $.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_widget_styles?module_app_id=' + $("#module_app_list select").val());
+});
+
$("#tag_list select").live('change', function() {
$.getScript($(this).attr('rel') + '/' + $(this).val() + '/reload_r_tag_options');
});
diff --git a/app/assets/javascripts/rss.js b/app/assets/javascripts/rss.js
index 737b08b71..b7e67fcb7 100644
--- a/app/assets/javascripts/rss.js
+++ b/app/assets/javascripts/rss.js
@@ -346,6 +346,9 @@ getUrlVars : function(){
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
+ if(vars[0] == window.location.href){
+ vars =[];
+ }
return vars;
},
/*function to open a modalwindow on a page.. self reliant no images, no css needed.
@@ -379,19 +382,19 @@ modalWindow : function(settings,callbackFn){
var maxwidth = (rgmaskWidth*85)/100;
if(typeof tempheight!="undefined"){
+ tempheight = tempheight.toString();
if(tempheight.charAt(tempheight.length-1)=='%')
tempheight=(rgmaskHeight*parseInt(tempheight.substr(0,tempheight.length)))/100;
if(tempheight>maxheight)
tempheight=maxheight;
}else{tempheight="auto";}
-
if(typeof tempwidth!="undefined"){
+ tempwidth = tempwidth.toString();
if(tempwidth.charAt(tempwidth.length-1)=='%')
tempwidth=(rgmaskWidth*parseInt(tempwidth.substr(0,tempwidth.length)))/100;
if(tempwidth>maxwidth)
tempwidth=maxwidth;
}else{tempwidth="auto";}
-
$rss("body").append('
');
$rss("#rgsheath").css({background: "#000", width: "100%", position: "fixed", top: 0, left: 0,opacity:0.5,'z-index':199});
$rss("body").append('
');
@@ -400,7 +403,7 @@ modalWindow : function(settings,callbackFn){
var rgWLeft = (rgmaskWidth-20)/2;
$rss("#rgWindow").css({top:rgWTop+"px", left:rgWLeft+"px"});
if(typeof settings.loadDiv!="undefined"){
- dhtml = $rss("#"+settings.loadDiv).html();
+ dhtml = $rss(settings.loadDiv).html();
$rss("#rgWindow").html(dhtml).hide();
prepareWindow();
}
@@ -416,7 +419,7 @@ modalWindow : function(settings,callbackFn){
if(tempheight!="auto")
rgWTop = (rgmaskHeight-tempheight)/2;
else{
- tempheight=$rss("#rgWindow").height();
+ tempheight=$rss("#rgWindow").height()+30;
if(tempheight>maxheight)
tempheight=maxheight;
rgWTop=(rgmaskHeight-tempheight)/2;
@@ -436,22 +439,20 @@ modalWindow : function(settings,callbackFn){
closebtn='X ';
$rss("#rgWindow").animate({"width":tempwidth+"px","height":tempheight+"px",top:rgWTop+"px", left:rgWLeft+"px"},500,function(){$rss("#rgWindow").html(closebtn+""+dhtml+"
");
$rss("#close_modal").mouseover(function(){$rss(this).css("color","#999");}).mouseout(function(){$rss(this).css("color","#666");})
- $rss("#close_modal").click(function(){
- $rss("#rgWindow").empty();
- var x = (rgmaskHeight-20)/2;
- var y = (rgmaskWidth-20)/2;
- $rss("#rgWindow").animate({top:x+"px", left:y+"px","width":"50px","height":"50px"},300,function(){$rss(this).fadeOut(100).remove();$rss("#rgsheath").fadeOut(500).remove();});
- return false;
- })
+ $rss("#close_modal").click(function(){rcom.modalWindowClose(); return false;})
if(envClose)
$rss("#rgsheath").click(function(){
- $rss("#rgWindow").empty();
- var x = (rgmaskHeight-20)/2;
- var y = (rgmaskWidth-20)/2;
- $rss("#rgWindow").animate({top:x+"px", left:y+"px","width":"50px","height":"50px"},300,function(){$rss(this).fadeOut(100).remove();$rss("#rgsheath").fadeOut(500).remove();});})
-
+ rcom.modalWindowClose();
+ })
+ $rss(document).one("keydown",function(e){
+ if (e.keyCode == 27){
+ rcom.modalWindowClose();
+ return false;
+ }
+ })
+
if(typeof callbackFn=="function")
- callbackFn.call(this,dhtml);
+ callbackFn.call(this,$rss("#rgWindow"));
});
}
},
@@ -464,13 +465,14 @@ modalWindowUpdate : function(settings,callbackFn){
var maxheight = (rgmaskHeight*85)/100;
var maxwidth = (rgmaskWidth*85)/100;
if(typeof tempheight!="undefined"){
+ tempheight = tempheight.toString();
if(tempheight.charAt(tempheight.length-1)=='%')
tempheight=(rgmaskHeight*parseInt(tempheight.substr(0,tempheight.length)))/100;
if(tempheight>maxheight)
tempheight=maxheight;
}else{tempheight="auto";}
-
if(typeof tempwidth!="undefined"){
+ tempwidth = tempwidth.toString();
if(tempwidth.charAt(tempwidth.length-1)=='%')
tempwidth=(rgmaskWidth*parseInt(tempwidth.substr(0,tempwidth.length)))/100;
if(tempwidth>maxwidth)
@@ -495,7 +497,7 @@ modalWindowUpdate : function(settings,callbackFn){
if(tempheight!="auto")
rgWTop = (rgmaskHeight-tempheight)/2;
else{
- tempheight=$rss("#rgwindow_temp_div").height();
+ tempheight=$rss("#rgwindow_temp_div").height()+30;
if(tempheight>maxheight)
tempheight=maxheight;
rgWTop=(rgmaskHeight-tempheight)/2;
diff --git a/app/assets/javascripts/tinymce_orbit.js.erb b/app/assets/javascripts/tinymce_orbit.js.erb
index e0394c851..364acb0ec 100644
--- a/app/assets/javascripts/tinymce_orbit.js.erb
+++ b/app/assets/javascripts/tinymce_orbit.js.erb
@@ -53,6 +53,7 @@ function myFileBrowser(field_name, url, type, win) {
var cmsURL = window.location.toString();
cmsURL = cmsURL.split("/");
cmsURL = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>";
+
// script URL - use an absolute path!
if (cmsURL.indexOf("?") < 0) {
//add the type as the only query parameter
diff --git a/app/assets/stylesheets/banner_nav.css b/app/assets/stylesheets/banner_nav.css
index ed613576e..0ff3a05c0 100644
--- a/app/assets/stylesheets/banner_nav.css
+++ b/app/assets/stylesheets/banner_nav.css
@@ -1,34 +1,35 @@
-#banner_nav {
- position: absolute;
- z-index: 10;
- bottom: 0;
- margin-right: 5px;
- right: 0;
-}
-#banner_nav>li {
- float: left;
- display: inline-block;
- *display: inline;
-
-}
-#banner_nav>li>a {
- width: 10px;
- height: 10px;
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- background-color: #FFFFFF;
- opacity: .5;
- filter: alpha(opacity = 50);
- margin: 0 4px 10px;
- text-indent: -9999px;
- box-shadow: 0 0 5px rgba(0,0,0,.7);
-}
-#banner_nav>li>a:hover {
- opacity: 1;
- filter: alpha(opacity = 100);
-}
-#banner_nav>li.activeSlide>a {
- opacity: 1;
- filter: alpha(opacity = 100);
-}
+#banner_nav {
+ position: absolute;
+ z-index: 10;
+ bottom: 0;
+ margin-right: 5px;
+ right: 0;
+}
+#banner_nav>li {
+ float: left;
+ display: inline-block;
+ *display: inline;
+
+}
+#banner_nav>li>a {
+ display:block;
+ width: 10px;
+ height: 10px;
+ border-radius: 5px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ background-color: #FFFFFF;
+ opacity: .5;
+ filter: alpha(opacity = 50);
+ margin: 0 4px 10px;
+ text-indent: -9999px;
+ box-shadow: 0 0 5px rgba(0,0,0,.7);
+}
+#banner_nav>li>a:hover {
+ opacity: 1;
+ filter: alpha(opacity = 100);
+}
+#banner_nav>li.activeSlide>a {
+ opacity: 1;
+ filter: alpha(opacity = 100);
+}
diff --git a/app/assets/stylesheets/bootstrap-orbit.css b/app/assets/stylesheets/bootstrap-orbit.css
index 2ce9bc9cb..0c251a2d0 100644
--- a/app/assets/stylesheets/bootstrap-orbit.css
+++ b/app/assets/stylesheets/bootstrap-orbit.css
@@ -44,24 +44,14 @@ h1, h2, h3, h4, h5, h6 {
.subnav {
width: 100%;
height: 36px;
- background-color: #eeeeee; /* Old browsers */
- background-repeat: repeat-x; /* Repeat the gradient */
- background-image: -moz-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%); /* FF3.6+ */
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f5f5f5), color-stop(100%, #eeeeee)); /* Chrome,Safari4+ */
- background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%); /* Chrome 10+,Safari 5.1+ */
- background-image: -ms-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%); /* IE10+ */
- background-image: -o-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%); /* Opera 11.10+ */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#eeeeee', GradientType=0 ); /* IE6-9 */
- background-image: linear-gradient(top, #f5f5f5 0%, #eeeeee 100%); /* W3C */
- border: 1px solid #e5e5e5;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+ /*border-top: 1px solid #e5e5e5;*/
+ background-color: #ffffff;
}
-.subnav .nav {
+.subnav .filter {
margin-bottom: 0;
+ border-bottom: 1px solid #e5e5e5;
}
-.subnav .nav > li > a {
+.subnav .filter > li > a {
margin: 0;
padding-top: 11px;
padding-bottom: 11px;
@@ -71,7 +61,7 @@ h1, h2, h3, h4, h5, h6 {
-moz-border-radius: 0;
border-radius: 0;
}
-.subnav .nav > .active > a, .subnav .nav > .active > a:hover {
+.subnav .filter > .active > a, .subnav .filter > .active > a:hover {
padding-left: 13px;
color: #777;
background-color: #e9e9e9;
@@ -81,17 +71,17 @@ h1, h2, h3, h4, h5, h6 {
-moz-box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
box-shadow: inset 0 3px 5px rgba(0,0,0,.05);
}
-.subnav .nav > .active > a .caret, .subnav .nav > .active > a:hover .caret {
+.subnav .filter > .active > a .caret, .subnav .filter > .active > a:hover .caret {
border-top-color: #777;
}
-.subnav .nav > li:first-child > a, .subnav .nav > li:first-child > a:hover {
+.subnav .filter > li:first-child > a, .subnav .filter > li:first-child > a:hover {
border-left: 0;
padding-left: 12px;
-webkit-border-radius: 4px 0 0 4px;
-moz-border-radius: 4px 0 0 4px;
border-radius: 4px 0 0 4px;
}
-.subnav .nav > li:last-child > a {
+.subnav .filter > li:last-child > a {
border-right: 0;
}
.subnav .dropdown-menu {
diff --git a/app/assets/stylesheets/bootstrap-responsive.css b/app/assets/stylesheets/bootstrap-responsive.css
new file mode 100644
index 000000000..2f94e3433
--- /dev/null
+++ b/app/assets/stylesheets/bootstrap-responsive.css
@@ -0,0 +1,438 @@
+/*!
+ * Bootstrap Responsive v2.1.1
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+
+.clearfix {
+ *zoom: 1;
+}
+
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.clearfix:after {
+ clear: both;
+}
+
+.hide-text {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+
+.input-block-level {
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.hidden {
+ display: none;
+ visibility: hidden;
+}
+
+.visible-phone {
+ display: none !important;
+}
+
+.visible-tablet {
+ display: none !important;
+}
+
+.hidden-desktop {
+ display: none !important;
+}
+
+.visible-desktop {
+ display: inherit !important;
+}
+
+@media (min-width: 768px) and (max-width: 979px) {
+ .hidden-desktop {
+ display: inherit !important;
+ }
+ .visible-desktop {
+ display: none !important ;
+ }
+ .visible-tablet {
+ display: inherit !important;
+ }
+ .hidden-tablet {
+ display: none !important;
+ }
+}
+
+@media (max-width: 767px) {
+ .hidden-desktop {
+ display: inherit !important;
+ }
+ .visible-desktop {
+ display: none !important;
+ }
+ .visible-phone {
+ display: inherit !important;
+ }
+ .hidden-phone {
+ display: none !important;
+ }
+}
+
+.row {
+ margin-left: -30px;
+ *zoom: 1;
+}
+.row:before,
+.row:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+.row:after {
+ clear: both;
+}
+[class*="span"] {
+ float: left;
+ min-height: 1px;
+ margin-left: 30px;
+}
+.container,
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+ width: 1170px;
+}
+.span12 {
+ width: 1170px;
+}
+.span11 {
+ width: 1070px;
+}
+.span10 {
+ width: 970px;
+}
+.span9 {
+ width: 870px;
+}
+.span8 {
+ width: 770px;
+}
+.span7 {
+ width: 670px;
+}
+.span6 {
+ width: 570px;
+}
+.span5 {
+ width: 470px;
+}
+.span4 {
+ width: 370px;
+}
+.span3 {
+ width: 270px;
+}
+.span2 {
+ width: 170px;
+}
+.span1 {
+ width: 70px;
+}
+.offset12 {
+ margin-left: 1230px;
+}
+.offset11 {
+ margin-left: 1130px;
+}
+.offset10 {
+ margin-left: 1030px;
+}
+.offset9 {
+ margin-left: 930px;
+}
+.offset8 {
+ margin-left: 830px;
+}
+.offset7 {
+ margin-left: 730px;
+}
+.offset6 {
+ margin-left: 630px;
+}
+.offset5 {
+ margin-left: 530px;
+}
+.offset4 {
+ margin-left: 430px;
+}
+.offset3 {
+ margin-left: 330px;
+}
+.offset2 {
+ margin-left: 230px;
+}
+.offset1 {
+ margin-left: 130px;
+}
+.row-fluid {
+ width: 100%;
+ *zoom: 1;
+}
+.row-fluid:before,
+.row-fluid:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+.row-fluid:after {
+ clear: both;
+}
+.row-fluid [class*="span"] {
+ display: block;
+ float: left;
+ width: 100%;
+ min-height: 30px;
+ margin-left: 2.564102564102564%;
+ *margin-left: 2.5109110747408616%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+}
+.row-fluid .span12 {
+ width: 100%;
+ *width: 99.94680851063829%;
+}
+.row-fluid .span11 {
+ width: 91.45299145299145%;
+ *width: 91.39979996362975%;
+}
+.row-fluid .span10 {
+ width: 82.90598290598291%;
+ *width: 82.8527914166212%;
+}
+.row-fluid .span9 {
+ width: 74.35897435897436%;
+ *width: 74.30578286961266%;
+}
+.row-fluid .span8 {
+ width: 65.81196581196582%;
+ *width: 65.75877432260411%;
+}
+.row-fluid .span7 {
+ width: 57.26495726495726%;
+ *width: 57.21176577559556%;
+}
+.row-fluid .span6 {
+ width: 48.717948717948715%;
+ *width: 48.664757228587014%;
+}
+.row-fluid .span5 {
+ width: 40.17094017094017%;
+ *width: 40.11774868157847%;
+}
+.row-fluid .span4 {
+ width: 31.623931623931625%;
+ *width: 31.570740134569924%;
+}
+.row-fluid .span3 {
+ width: 23.076923076923077%;
+ *width: 23.023731587561375%;
+}
+.row-fluid .span2 {
+ width: 14.52991452991453%;
+ *width: 14.476723040552828%;
+}
+.row-fluid .span1 {
+ width: 5.982905982905983%;
+ *width: 5.929714493544281%;
+}
+.row-fluid .offset12 {
+ margin-left: 105.12820512820512%;
+ *margin-left: 105.02182214948171%;
+}
+.row-fluid .offset12:first-child {
+ margin-left: 102.56410256410257%;
+ *margin-left: 102.45771958537915%;
+}
+.row-fluid .offset11 {
+ margin-left: 96.58119658119658%;
+ *margin-left: 96.47481360247316%;
+}
+.row-fluid .offset11:first-child {
+ margin-left: 94.01709401709402%;
+ *margin-left: 93.91071103837061%;
+}
+.row-fluid .offset10 {
+ margin-left: 88.03418803418803%;
+ *margin-left: 87.92780505546462%;
+}
+.row-fluid .offset10:first-child {
+ margin-left: 85.47008547008548%;
+ *margin-left: 85.36370249136206%;
+}
+.row-fluid .offset9 {
+ margin-left: 79.48717948717949%;
+ *margin-left: 79.38079650845607%;
+}
+.row-fluid .offset9:first-child {
+ margin-left: 76.92307692307693%;
+ *margin-left: 76.81669394435352%;
+}
+.row-fluid .offset8 {
+ margin-left: 70.94017094017094%;
+ *margin-left: 70.83378796144753%;
+}
+.row-fluid .offset8:first-child {
+ margin-left: 68.37606837606839%;
+ *margin-left: 68.26968539734497%;
+}
+.row-fluid .offset7 {
+ margin-left: 62.393162393162385%;
+ *margin-left: 62.28677941443899%;
+}
+.row-fluid .offset7:first-child {
+ margin-left: 59.82905982905982%;
+ *margin-left: 59.72267685033642%;
+}
+.row-fluid .offset6 {
+ margin-left: 53.84615384615384%;
+ *margin-left: 53.739770867430444%;
+}
+.row-fluid .offset6:first-child {
+ margin-left: 51.28205128205128%;
+ *margin-left: 51.175668303327875%;
+}
+.row-fluid .offset5 {
+ margin-left: 45.299145299145295%;
+ *margin-left: 45.1927623204219%;
+}
+.row-fluid .offset5:first-child {
+ margin-left: 42.73504273504273%;
+ *margin-left: 42.62865975631933%;
+}
+.row-fluid .offset4 {
+ margin-left: 36.75213675213675%;
+ *margin-left: 36.645753773413354%;
+}
+.row-fluid .offset4:first-child {
+ margin-left: 34.18803418803419%;
+ *margin-left: 34.081651209310785%;
+}
+.row-fluid .offset3 {
+ margin-left: 28.205128205128204%;
+ *margin-left: 28.0987452264048%;
+}
+.row-fluid .offset3:first-child {
+ margin-left: 25.641025641025642%;
+ *margin-left: 25.53464266230224%;
+}
+.row-fluid .offset2 {
+ margin-left: 19.65811965811966%;
+ *margin-left: 19.551736679396257%;
+}
+.row-fluid .offset2:first-child {
+ margin-left: 17.094017094017094%;
+ *margin-left: 16.98763411529369%;
+}
+.row-fluid .offset1 {
+ margin-left: 11.11111111111111%;
+ *margin-left: 11.004728132387708%;
+}
+.row-fluid .offset1:first-child {
+ margin-left: 8.547008547008547%;
+ *margin-left: 8.440625568285142%;
+}
+input,
+textarea,
+.uneditable-input {
+ margin-left: 0;
+}
+.controls-row [class*="span"] + [class*="span"] {
+ margin-left: 30px;
+}
+input.span12,
+textarea.span12,
+.uneditable-input.span12 {
+ width: 1156px;
+}
+input.span11,
+textarea.span11,
+.uneditable-input.span11 {
+ width: 1056px;
+}
+input.span10,
+textarea.span10,
+.uneditable-input.span10 {
+ width: 956px;
+}
+input.span9,
+textarea.span9,
+.uneditable-input.span9 {
+ width: 856px;
+}
+input.span8,
+textarea.span8,
+.uneditable-input.span8 {
+ width: 756px;
+}
+input.span7,
+textarea.span7,
+.uneditable-input.span7 {
+ width: 656px;
+}
+input.span6,
+textarea.span6,
+.uneditable-input.span6 {
+ width: 556px;
+}
+input.span5,
+textarea.span5,
+.uneditable-input.span5 {
+ width: 456px;
+}
+input.span4,
+textarea.span4,
+.uneditable-input.span4 {
+ width: 356px;
+}
+input.span3,
+textarea.span3,
+.uneditable-input.span3 {
+ width: 256px;
+}
+input.span2,
+textarea.span2,
+.uneditable-input.span2 {
+ width: 156px;
+}
+input.span1,
+textarea.span1,
+.uneditable-input.span1 {
+ width: 56px;
+}
+.thumbnails {
+ margin-left: -30px;
+}
+.thumbnails > li {
+ margin-left: 30px;
+}
+.row-fluid .thumbnails {
+ margin-left: 0;
+}
+
diff --git a/app/assets/stylesheets/bootstrap.css b/app/assets/stylesheets/bootstrap.css
new file mode 100644
index 000000000..476405e27
--- /dev/null
+++ b/app/assets/stylesheets/bootstrap.css
@@ -0,0 +1,5774 @@
+/*!
+ * Bootstrap v2.1.1
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+ display: block;
+}
+
+audio,
+canvas,
+video {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+
+audio:not([controls]) {
+ display: none;
+}
+
+html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+
+a:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+a:hover,
+a:active {
+ outline: 0;
+}
+
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+img {
+ width: auto\9;
+ height: auto;
+ max-width: 100%;
+ vertical-align: middle;
+ border: 0;
+ -ms-interpolation-mode: bicubic;
+}
+
+#map_canvas img {
+ max-width: none;
+}
+
+button,
+input,
+select,
+textarea {
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
+}
+
+button,
+input {
+ *overflow: visible;
+ line-height: normal;
+}
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ cursor: pointer;
+ -webkit-appearance: button;
+}
+
+input[type="search"] {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
+}
+
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+ -webkit-appearance: none;
+}
+
+textarea {
+ overflow: auto;
+ vertical-align: top;
+}
+
+.clearfix {
+ *zoom: 1;
+}
+
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.clearfix:after {
+ clear: both;
+}
+
+.hide-text {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+
+.input-block-level {
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+body {
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 12px;
+ line-height: 20px;
+ color: #333333;
+ background-color: #ffffff;
+}
+
+a {
+ color: #0088cc;
+ text-decoration: none;
+}
+
+a:hover {
+ color: #005580;
+ text-decoration: underline;
+}
+
+.img-rounded {
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.img-polaroid {
+ padding: 4px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+
+.img-circle {
+ -webkit-border-radius: 500px;
+ -moz-border-radius: 500px;
+ border-radius: 500px;
+}
+
+.row {
+ margin-left: -20px;
+ *zoom: 1;
+}
+
+.row:before,
+.row:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.row:after {
+ clear: both;
+}
+
+[class*="span"] {
+ float: left;
+ min-height: 1px;
+ margin-left: 20px;
+}
+
+.container,
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+ width: 940px;
+}
+
+.span12 {
+ width: 940px;
+}
+
+.span11 {
+ width: 860px;
+}
+
+.span10 {
+ width: 780px;
+}
+
+.span9 {
+ width: 700px;
+}
+
+.span8 {
+ width: 620px;
+}
+
+.span7 {
+ width: 540px;
+}
+
+.span6 {
+ width: 460px;
+}
+
+.span5 {
+ width: 380px;
+}
+
+.span4 {
+ width: 300px;
+}
+
+.span3 {
+ width: 220px;
+}
+
+.span2 {
+ width: 140px;
+}
+
+.span1 {
+ width: 60px;
+}
+
+.offset12 {
+ margin-left: 980px;
+}
+
+.offset11 {
+ margin-left: 900px;
+}
+
+.offset10 {
+ margin-left: 820px;
+}
+
+.offset9 {
+ margin-left: 740px;
+}
+
+.offset8 {
+ margin-left: 660px;
+}
+
+.offset7 {
+ margin-left: 580px;
+}
+
+.offset6 {
+ margin-left: 500px;
+}
+
+.offset5 {
+ margin-left: 420px;
+}
+
+.offset4 {
+ margin-left: 340px;
+}
+
+.offset3 {
+ margin-left: 260px;
+}
+
+.offset2 {
+ margin-left: 180px;
+}
+
+.offset1 {
+ margin-left: 100px;
+}
+
+.row-fluid {
+ width: 100%;
+ *zoom: 1;
+}
+
+.row-fluid:before,
+.row-fluid:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.row-fluid:after {
+ clear: both;
+}
+
+.row-fluid [class*="span"] {
+ display: block;
+ float: left;
+ width: 100%;
+ min-height: 30px;
+ margin-left: 2.127659574468085%;
+ *margin-left: 2.074468085106383%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+}
+
+.row-fluid .span12 {
+ width: 100%;
+ *width: 99.94680851063829%;
+}
+
+.row-fluid .span11 {
+ width: 91.48936170212765%;
+ *width: 91.43617021276594%;
+}
+
+.row-fluid .span10 {
+ width: 82.97872340425532%;
+ *width: 82.92553191489361%;
+}
+
+.row-fluid .span9 {
+ width: 74.46808510638297%;
+ *width: 74.41489361702126%;
+}
+
+.row-fluid .span8 {
+ width: 65.95744680851064%;
+ *width: 65.90425531914893%;
+}
+
+.row-fluid .span7 {
+ width: 57.44680851063829%;
+ *width: 57.39361702127659%;
+}
+
+.row-fluid .span6 {
+ width: 48.93617021276595%;
+ *width: 48.88297872340425%;
+}
+
+.row-fluid .span5 {
+ width: 40.42553191489362%;
+ *width: 40.37234042553192%;
+}
+
+.row-fluid .span4 {
+ width: 31.914893617021278%;
+ *width: 31.861702127659576%;
+}
+
+.row-fluid .span3 {
+ width: 23.404255319148934%;
+ *width: 23.351063829787233%;
+}
+
+.row-fluid .span2 {
+ width: 14.893617021276595%;
+ *width: 14.840425531914894%;
+}
+
+.row-fluid .span1 {
+ width: 6.382978723404255%;
+ *width: 6.329787234042553%;
+}
+
+.row-fluid .offset12 {
+ margin-left: 104.25531914893617%;
+ *margin-left: 104.14893617021275%;
+}
+
+.row-fluid .offset12:first-child {
+ margin-left: 102.12765957446808%;
+ *margin-left: 102.02127659574467%;
+}
+
+.row-fluid .offset11 {
+ margin-left: 95.74468085106382%;
+ *margin-left: 95.6382978723404%;
+}
+
+.row-fluid .offset11:first-child {
+ margin-left: 93.61702127659574%;
+ *margin-left: 93.51063829787232%;
+}
+
+.row-fluid .offset10 {
+ margin-left: 87.23404255319149%;
+ *margin-left: 87.12765957446807%;
+}
+
+.row-fluid .offset10:first-child {
+ margin-left: 85.1063829787234%;
+ *margin-left: 84.99999999999999%;
+}
+
+.row-fluid .offset9 {
+ margin-left: 78.72340425531914%;
+ *margin-left: 78.61702127659572%;
+}
+
+.row-fluid .offset9:first-child {
+ margin-left: 76.59574468085106%;
+ *margin-left: 76.48936170212764%;
+}
+
+.row-fluid .offset8 {
+ margin-left: 70.2127659574468%;
+ *margin-left: 70.10638297872339%;
+}
+
+.row-fluid .offset8:first-child {
+ margin-left: 68.08510638297872%;
+ *margin-left: 67.9787234042553%;
+}
+
+.row-fluid .offset7 {
+ margin-left: 61.70212765957446%;
+ *margin-left: 61.59574468085106%;
+}
+
+.row-fluid .offset7:first-child {
+ margin-left: 59.574468085106375%;
+ *margin-left: 59.46808510638297%;
+}
+
+.row-fluid .offset6 {
+ margin-left: 53.191489361702125%;
+ *margin-left: 53.085106382978715%;
+}
+
+.row-fluid .offset6:first-child {
+ margin-left: 51.063829787234035%;
+ *margin-left: 50.95744680851063%;
+}
+
+.row-fluid .offset5 {
+ margin-left: 44.68085106382979%;
+ *margin-left: 44.57446808510638%;
+}
+
+.row-fluid .offset5:first-child {
+ margin-left: 42.5531914893617%;
+ *margin-left: 42.4468085106383%;
+}
+
+.row-fluid .offset4 {
+ margin-left: 36.170212765957444%;
+ *margin-left: 36.06382978723405%;
+}
+
+.row-fluid .offset4:first-child {
+ margin-left: 34.04255319148936%;
+ *margin-left: 33.93617021276596%;
+}
+
+.row-fluid .offset3 {
+ margin-left: 27.659574468085104%;
+ *margin-left: 27.5531914893617%;
+}
+
+.row-fluid .offset3:first-child {
+ margin-left: 25.53191489361702%;
+ *margin-left: 25.425531914893618%;
+}
+
+.row-fluid .offset2 {
+ margin-left: 19.148936170212764%;
+ *margin-left: 19.04255319148936%;
+}
+
+.row-fluid .offset2:first-child {
+ margin-left: 17.02127659574468%;
+ *margin-left: 16.914893617021278%;
+}
+
+.row-fluid .offset1 {
+ margin-left: 10.638297872340425%;
+ *margin-left: 10.53191489361702%;
+}
+
+.row-fluid .offset1:first-child {
+ margin-left: 8.51063829787234%;
+ *margin-left: 8.404255319148938%;
+}
+
+[class*="span"].hide,
+.row-fluid [class*="span"].hide {
+ display: none;
+}
+
+[class*="span"].pull-right,
+.row-fluid [class*="span"].pull-right {
+ float: right;
+}
+
+.container {
+ margin-right: auto;
+ margin-left: auto;
+ *zoom: 1;
+}
+
+.container:before,
+.container:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.container:after {
+ clear: both;
+}
+
+.container-fluid {
+ padding-right: 20px;
+ padding-left: 20px;
+ *zoom: 1;
+}
+
+.container-fluid:before,
+.container-fluid:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.container-fluid:after {
+ clear: both;
+}
+
+p {
+ margin: 0 0 10px;
+}
+
+.lead {
+ margin-bottom: 20px;
+ font-size: 21px;
+ font-weight: 200;
+ line-height: 30px;
+}
+
+small {
+ font-size: 85%;
+}
+
+strong {
+ font-weight: bold;
+}
+
+em {
+ font-style: italic;
+}
+
+cite {
+ font-style: normal;
+}
+
+.muted {
+ color: #999999;
+}
+
+.text-warning {
+ color: #c09853;
+}
+
+.text-error {
+ color: #b94a48;
+}
+
+.text-info {
+ color: #3a87ad;
+}
+
+.text-success {
+ color: #468847;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 10px 0;
+ font-family: inherit;
+ font-weight: bold;
+ line-height: 1;
+ color: inherit;
+ text-rendering: optimizelegibility;
+}
+
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
+}
+
+h1 {
+ font-size: 36px;
+ line-height: 40px;
+}
+
+h2 {
+ font-size: 30px;
+ line-height: 40px;
+}
+
+h3 {
+ font-size: 24px;
+ line-height: 40px;
+}
+
+h4 {
+ font-size: 18px;
+ line-height: 20px;
+}
+
+h5 {
+ font-size: 14px;
+ line-height: 20px;
+}
+
+h6 {
+ font-size: 12px;
+ line-height: 20px;
+}
+
+h1 small {
+ font-size: 24px;
+}
+
+h2 small {
+ font-size: 18px;
+}
+
+h3 small {
+ font-size: 14px;
+}
+
+h4 small {
+ font-size: 14px;
+}
+
+.page-header {
+ padding-bottom: 9px;
+ margin: 20px 0 30px;
+ border-bottom: 1px solid #eeeeee;
+}
+
+ul,
+ol {
+ padding: 0;
+ margin: 0 0 10px 25px;
+}
+
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+ margin-bottom: 0;
+}
+
+li {
+ line-height: 20px;
+}
+
+ul.unstyled,
+ol.unstyled {
+ margin-left: 0;
+ list-style: none;
+}
+
+dl {
+ margin-bottom: 20px;
+}
+
+dt,
+dd {
+ line-height: 20px;
+}
+
+dt {
+ font-weight: bold;
+}
+
+dd {
+ margin-left: 10px;
+}
+
+.dl-horizontal {
+ *zoom: 1;
+}
+
+.dl-horizontal:before,
+.dl-horizontal:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.dl-horizontal:after {
+ clear: both;
+}
+
+.dl-horizontal dt {
+ float: left;
+ width: 160px;
+ overflow: hidden;
+ clear: left;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.dl-horizontal dd {
+ margin-left: 180px;
+}
+
+hr {
+ margin: 20px 0;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+ border-bottom: 1px solid #ffffff;
+}
+
+abbr[title] {
+ cursor: help;
+ border-bottom: 1px dotted #999999;
+}
+
+abbr.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+
+blockquote {
+ padding: 0 0 0 15px;
+ margin: 0 0 20px;
+ border-left: 5px solid #eeeeee;
+}
+
+blockquote p {
+ margin-bottom: 0;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 25px;
+}
+
+blockquote small {
+ display: block;
+ line-height: 20px;
+ color: #999999;
+}
+
+blockquote small:before {
+ content: '\2014 \00A0';
+}
+
+blockquote.pull-right {
+ float: right;
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
+}
+
+blockquote.pull-right p,
+blockquote.pull-right small {
+ text-align: right;
+}
+
+blockquote.pull-right small:before {
+ content: '';
+}
+
+blockquote.pull-right small:after {
+ content: '\00A0 \2014';
+}
+
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+ content: "";
+}
+
+address {
+ display: block;
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 20px;
+}
+
+code,
+pre {
+ padding: 0 3px 2px;
+ font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+ font-size: 12px;
+ color: #333333;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+code {
+ padding: 2px 4px;
+ color: #d14;
+ background-color: #f7f7f9;
+ border: 1px solid #e1e1e8;
+}
+
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 20px;
+ word-break: break-all;
+ word-wrap: break-word;
+ white-space: pre;
+ white-space: pre-wrap;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+pre.prettyprint {
+ margin-bottom: 20px;
+}
+
+pre code {
+ padding: 0;
+ color: inherit;
+ background-color: transparent;
+ border: 0;
+}
+
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+
+form {
+ margin: 0 0 20px;
+}
+
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: 40px;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+
+legend small {
+ font-size: 15px;
+ color: #999999;
+}
+
+label,
+input,
+button,
+select,
+textarea {
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
+}
+
+input,
+button,
+select,
+textarea {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+
+label {
+ display: block;
+ margin-bottom: 5px;
+}
+
+select,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+ display: inline-block;
+ height: 20px;
+ padding: 4px 6px;
+ margin-bottom: 9px;
+ font-size: 14px;
+ line-height: 20px;
+ color: #555555;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+input,
+textarea,
+.uneditable-input {
+ width: 206px;
+}
+
+textarea {
+ height: auto;
+}
+
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -o-transition: border linear 0.2s, box-shadow linear 0.2s;
+ transition: border linear 0.2s, box-shadow linear 0.2s;
+}
+
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+.uneditable-input:focus {
+ border-color: rgba(82, 168, 236, 0.8);
+ outline: 0;
+ outline: thin dotted \9;
+ /* IE6-9 */
+
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ *margin-top: 0;
+ line-height: normal;
+ cursor: pointer;
+}
+
+input[type="file"],
+input[type="image"],
+input[type="submit"],
+input[type="reset"],
+input[type="button"],
+input[type="radio"],
+input[type="checkbox"] {
+ width: auto;
+}
+
+select,
+input[type="file"] {
+ height: 30px;
+ /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+ *margin-top: 4px;
+ /* For IE7, add top margin to align select with labels */
+
+ line-height: 30px;
+}
+
+select {
+ width: 220px;
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+}
+
+select[multiple],
+select[size] {
+ height: auto;
+}
+
+select:focus,
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.uneditable-input,
+.uneditable-textarea {
+ color: #999999;
+ cursor: not-allowed;
+ background-color: #fcfcfc;
+ border-color: #cccccc;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+}
+
+.uneditable-input {
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+.uneditable-textarea {
+ width: auto;
+ height: auto;
+}
+
+input:-moz-placeholder,
+textarea:-moz-placeholder {
+ color: #999999;
+}
+
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+ color: #999999;
+}
+
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+ color: #999999;
+}
+
+.radio,
+.checkbox {
+ min-height: 18px;
+ padding-left: 18px;
+}
+
+.radio input[type="radio"],
+.checkbox input[type="checkbox"] {
+ float: left;
+ margin-left: -18px;
+}
+
+.controls > .radio:first-child,
+.controls > .checkbox:first-child {
+ padding-top: 5px;
+}
+
+.radio.inline,
+.checkbox.inline {
+ display: inline-block;
+ padding-top: 5px;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+
+.radio.inline + .radio.inline,
+.checkbox.inline + .checkbox.inline {
+ margin-left: 10px;
+}
+
+.input-mini {
+ width: 60px;
+}
+
+.input-small {
+ width: 90px;
+}
+
+.input-medium {
+ width: 150px;
+}
+
+.input-large {
+ width: 210px;
+}
+
+.input-xlarge {
+ width: 270px;
+}
+
+.input-xxlarge {
+ width: 530px;
+}
+
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"] {
+ float: none;
+ margin-left: 0;
+}
+
+.input-append input[class*="span"],
+.input-append .uneditable-input[class*="span"],
+.input-prepend input[class*="span"],
+.input-prepend .uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"],
+.row-fluid .input-prepend [class*="span"],
+.row-fluid .input-append [class*="span"] {
+ display: inline-block;
+}
+
+input,
+textarea,
+.uneditable-input {
+ margin-left: 0;
+}
+
+.controls-row [class*="span"] + [class*="span"] {
+ margin-left: 20px;
+}
+
+input.span12,
+textarea.span12,
+.uneditable-input.span12 {
+ width: 926px;
+}
+
+input.span11,
+textarea.span11,
+.uneditable-input.span11 {
+ width: 846px;
+}
+
+input.span10,
+textarea.span10,
+.uneditable-input.span10 {
+ width: 766px;
+}
+
+input.span9,
+textarea.span9,
+.uneditable-input.span9 {
+ width: 686px;
+}
+
+input.span8,
+textarea.span8,
+.uneditable-input.span8 {
+ width: 606px;
+}
+
+input.span7,
+textarea.span7,
+.uneditable-input.span7 {
+ width: 526px;
+}
+
+input.span6,
+textarea.span6,
+.uneditable-input.span6 {
+ width: 446px;
+}
+
+input.span5,
+textarea.span5,
+.uneditable-input.span5 {
+ width: 366px;
+}
+
+input.span4,
+textarea.span4,
+.uneditable-input.span4 {
+ width: 286px;
+}
+
+input.span3,
+textarea.span3,
+.uneditable-input.span3 {
+ width: 206px;
+}
+
+input.span2,
+textarea.span2,
+.uneditable-input.span2 {
+ width: 126px;
+}
+
+input.span1,
+textarea.span1,
+.uneditable-input.span1 {
+ width: 46px;
+}
+
+.controls-row {
+ *zoom: 1;
+}
+
+.controls-row:before,
+.controls-row:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.controls-row:after {
+ clear: both;
+}
+
+.controls-row [class*="span"] {
+ float: left;
+}
+
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+ cursor: not-allowed;
+ background-color: #eeeeee;
+}
+
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"][readonly],
+input[type="checkbox"][readonly] {
+ background-color: transparent;
+}
+
+.control-group.warning > label,
+.control-group.warning .help-block,
+.control-group.warning .help-inline {
+ color: #c09853;
+}
+
+.control-group.warning .checkbox,
+.control-group.warning .radio,
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+ color: #c09853;
+}
+
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+ border-color: #c09853;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.control-group.warning input:focus,
+.control-group.warning select:focus,
+.control-group.warning textarea:focus {
+ border-color: #a47e3c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+}
+
+.control-group.warning .input-prepend .add-on,
+.control-group.warning .input-append .add-on {
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #c09853;
+}
+
+.control-group.error > label,
+.control-group.error .help-block,
+.control-group.error .help-inline {
+ color: #b94a48;
+}
+
+.control-group.error .checkbox,
+.control-group.error .radio,
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+ color: #b94a48;
+}
+
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+ border-color: #b94a48;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.control-group.error input:focus,
+.control-group.error select:focus,
+.control-group.error textarea:focus {
+ border-color: #953b39;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+}
+
+.control-group.error .input-prepend .add-on,
+.control-group.error .input-append .add-on {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #b94a48;
+}
+
+.control-group.success > label,
+.control-group.success .help-block,
+.control-group.success .help-inline {
+ color: #468847;
+}
+
+.control-group.success .checkbox,
+.control-group.success .radio,
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+ color: #468847;
+}
+
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+ border-color: #468847;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.control-group.success input:focus,
+.control-group.success select:focus,
+.control-group.success textarea:focus {
+ border-color: #356635;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+}
+
+.control-group.success .input-prepend .add-on,
+.control-group.success .input-append .add-on {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #468847;
+}
+
+.control-group.info > label,
+.control-group.info .help-block,
+.control-group.info .help-inline {
+ color: #3a87ad;
+}
+
+.control-group.info .checkbox,
+.control-group.info .radio,
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+ color: #3a87ad;
+}
+
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+ border-color: #3a87ad;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.control-group.info input:focus,
+.control-group.info select:focus,
+.control-group.info textarea:focus {
+ border-color: #2d6987;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+}
+
+.control-group.info .input-prepend .add-on,
+.control-group.info .input-append .add-on {
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #3a87ad;
+}
+
+input:focus:required:invalid,
+textarea:focus:required:invalid,
+select:focus:required:invalid {
+ color: #b94a48;
+ border-color: #ee5f5b;
+}
+
+input:focus:required:invalid:focus,
+textarea:focus:required:invalid:focus,
+select:focus:required:invalid:focus {
+ border-color: #e9322d;
+ -webkit-box-shadow: 0 0 6px #f8b9b7;
+ -moz-box-shadow: 0 0 6px #f8b9b7;
+ box-shadow: 0 0 6px #f8b9b7;
+}
+
+.form-actions {
+ padding: 19px 20px 20px;
+ margin-top: 20px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #e5e5e5;
+ *zoom: 1;
+}
+
+.form-actions:before,
+.form-actions:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.form-actions:after {
+ clear: both;
+}
+
+.help-block,
+.help-inline {
+ color: #595959;
+}
+
+.help-block {
+ display: block;
+ margin-bottom: 10px;
+}
+
+.help-inline {
+ display: inline-block;
+ *display: inline;
+ padding-left: 5px;
+ vertical-align: middle;
+ *zoom: 1;
+}
+
+.input-append,
+.input-prepend {
+ margin-bottom: 5px;
+ font-size: 0;
+ white-space: nowrap;
+}
+
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input {
+ position: relative;
+ margin-bottom: 0;
+ *margin-left: 0;
+ font-size: 14px;
+ vertical-align: top;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+
+.input-append input:focus,
+.input-prepend input:focus,
+.input-append select:focus,
+.input-prepend select:focus,
+.input-append .uneditable-input:focus,
+.input-prepend .uneditable-input:focus {
+ z-index: 2;
+}
+
+.input-append .add-on,
+.input-prepend .add-on {
+ display: inline-block;
+ width: auto;
+ height: 20px;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
+ text-align: center;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #eeeeee;
+ border: 1px solid #ccc;
+}
+
+.input-append .add-on,
+.input-prepend .add-on,
+.input-append .btn,
+.input-prepend .btn {
+ vertical-align: top;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.input-append .active,
+.input-prepend .active {
+ background-color: #a9dba9;
+ border-color: #46a546;
+}
+
+.input-prepend .add-on,
+.input-prepend .btn {
+ margin-right: -1px;
+}
+
+.input-prepend .add-on:first-child,
+.input-prepend .btn:first-child {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+
+.input-append input,
+.input-append select,
+.input-append .uneditable-input {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+
+.input-append .add-on,
+.input-append .btn {
+ margin-left: -1px;
+}
+
+.input-append .add-on:last-child,
+.input-append .btn:last-child {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+
+.input-prepend.input-append input,
+.input-prepend.input-append select,
+.input-prepend.input-append .uneditable-input {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.input-prepend.input-append .add-on:first-child,
+.input-prepend.input-append .btn:first-child {
+ margin-right: -1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+
+.input-prepend.input-append .add-on:last-child,
+.input-prepend.input-append .btn:last-child {
+ margin-left: -1px;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+
+input.search-query {
+ padding-right: 14px;
+ padding-right: 4px \9;
+ padding-left: 14px;
+ padding-left: 4px \9;
+ /* IE7-8 doesn't have border-radius, so don't indent the padding */
+
+ margin-bottom: 0;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+}
+
+/* Allow for input prepend/append in search forms */
+
+.form-search .input-append .search-query,
+.form-search .input-prepend .search-query {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.form-search .input-append .search-query {
+ -webkit-border-radius: 14px 0 0 14px;
+ -moz-border-radius: 14px 0 0 14px;
+ border-radius: 14px 0 0 14px;
+}
+
+.form-search .input-append .btn {
+ -webkit-border-radius: 0 14px 14px 0;
+ -moz-border-radius: 0 14px 14px 0;
+ border-radius: 0 14px 14px 0;
+}
+
+.form-search .input-prepend .search-query {
+ -webkit-border-radius: 0 14px 14px 0;
+ -moz-border-radius: 0 14px 14px 0;
+ border-radius: 0 14px 14px 0;
+}
+
+.form-search .input-prepend .btn {
+ -webkit-border-radius: 14px 0 0 14px;
+ -moz-border-radius: 14px 0 0 14px;
+ border-radius: 14px 0 0 14px;
+}
+
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input,
+.form-search .input-prepend,
+.form-inline .input-prepend,
+.form-horizontal .input-prepend,
+.form-search .input-append,
+.form-inline .input-append,
+.form-horizontal .input-append {
+ display: inline-block;
+ *display: inline;
+ margin-bottom: 0;
+ vertical-align: middle;
+ *zoom: 1;
+}
+
+.form-search .hide,
+.form-inline .hide,
+.form-horizontal .hide {
+ display: none;
+}
+
+.form-search label,
+.form-inline label,
+.form-search .btn-group,
+.form-inline .btn-group {
+ display: inline-block;
+}
+
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+ margin-bottom: 0;
+}
+
+.form-search .radio,
+.form-search .checkbox,
+.form-inline .radio,
+.form-inline .checkbox {
+ padding-left: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+
+.form-search .radio input[type="radio"],
+.form-search .checkbox input[type="checkbox"],
+.form-inline .radio input[type="radio"],
+.form-inline .checkbox input[type="checkbox"] {
+ float: left;
+ margin-right: 3px;
+ margin-left: 0;
+}
+
+.control-group {
+ margin-bottom: 10px;
+}
+
+legend + .control-group {
+ margin-top: 20px;
+ -webkit-margin-top-collapse: separate;
+}
+
+.form-horizontal .control-group {
+ margin-bottom: 20px;
+ *zoom: 1;
+}
+
+.form-horizontal .control-group:before,
+.form-horizontal .control-group:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.form-horizontal .control-group:after {
+ clear: both;
+}
+
+.form-horizontal .control-label {
+ float: left;
+ width: 160px;
+ padding-top: 5px;
+ text-align: right;
+}
+
+.form-horizontal .controls {
+ *display: inline-block;
+ *padding-left: 20px;
+ margin-left: 180px;
+ *margin-left: 0;
+}
+
+.form-horizontal .controls:first-child {
+ *padding-left: 180px;
+}
+
+.form-horizontal .help-block {
+ margin-bottom: 0;
+}
+
+.form-horizontal input + .help-block,
+.form-horizontal select + .help-block,
+.form-horizontal textarea + .help-block {
+ margin-top: 10px;
+}
+
+.form-horizontal .form-actions {
+ padding-left: 180px;
+}
+
+table {
+ max-width: 100%;
+ background-color: transparent;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.table {
+ width: 100%;
+ margin-bottom: 20px;
+}
+
+.table th,
+.table td {
+ padding: 8px;
+ line-height: 20px;
+ text-align: left;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
+}
+
+.table th {
+ font-weight: bold;
+}
+
+.table thead th {
+ vertical-align: bottom;
+}
+
+.table caption + thead tr:first-child th,
+.table caption + thead tr:first-child td,
+.table colgroup + thead tr:first-child th,
+.table colgroup + thead tr:first-child td,
+.table thead:first-child tr:first-child th,
+.table thead:first-child tr:first-child td {
+ border-top: 0;
+}
+
+.table tbody + tbody {
+ border-top: 2px solid #dddddd;
+}
+
+.table-condensed th,
+.table-condensed td {
+ padding: 4px 5px;
+}
+
+.table-bordered {
+ border: 1px solid #dddddd;
+ border-collapse: separate;
+ *border-collapse: collapse;
+ border-left: 0;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.table-bordered th,
+.table-bordered td {
+ border-left: 1px solid #dddddd;
+}
+
+.table-bordered caption + thead tr:first-child th,
+.table-bordered caption + tbody tr:first-child th,
+.table-bordered caption + tbody tr:first-child td,
+.table-bordered colgroup + thead tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child td,
+.table-bordered thead:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child td {
+ border-top: 0;
+}
+
+.table-bordered thead:first-child tr:first-child th:first-child,
+.table-bordered tbody:first-child tr:first-child td:first-child {
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+
+.table-bordered thead:first-child tr:first-child th:last-child,
+.table-bordered tbody:first-child tr:first-child td:last-child {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+}
+
+.table-bordered thead:last-child tr:last-child th:first-child,
+.table-bordered tbody:last-child tr:last-child td:first-child,
+.table-bordered tfoot:last-child tr:last-child td:first-child {
+ -webkit-border-radius: 0 0 0 4px;
+ -moz-border-radius: 0 0 0 4px;
+ border-radius: 0 0 0 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+}
+
+.table-bordered thead:last-child tr:last-child th:last-child,
+.table-bordered tbody:last-child tr:last-child td:last-child,
+.table-bordered tfoot:last-child tr:last-child td:last-child {
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+}
+
+.table-bordered caption + thead tr:first-child th:first-child,
+.table-bordered caption + tbody tr:first-child td:first-child,
+.table-bordered colgroup + thead tr:first-child th:first-child,
+.table-bordered colgroup + tbody tr:first-child td:first-child {
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+
+.table-bordered caption + thead tr:first-child th:last-child,
+.table-bordered caption + tbody tr:first-child td:last-child,
+.table-bordered colgroup + thead tr:first-child th:last-child,
+.table-bordered colgroup + tbody tr:first-child td:last-child {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+
+.table-striped tbody tr:nth-child(odd) td,
+.table-striped tbody tr:nth-child(odd) th {
+ background-color: #f9f9f9;
+}
+
+.table-hover tbody tr:hover td,
+.table-hover tbody tr:hover th {
+ background-color: #f5f5f5;
+}
+
+table [class*=span],
+.row-fluid table [class*=span] {
+ display: table-cell;
+ float: none;
+ margin-left: 0;
+}
+
+.table .span1 {
+ float: none;
+ width: 44px;
+ margin-left: 0;
+}
+
+.table .span2 {
+ float: none;
+ width: 124px;
+ margin-left: 0;
+}
+
+.table .span3 {
+ float: none;
+ width: 204px;
+ margin-left: 0;
+}
+
+.table .span4 {
+ float: none;
+ width: 284px;
+ margin-left: 0;
+}
+
+.table .span5 {
+ float: none;
+ width: 364px;
+ margin-left: 0;
+}
+
+.table .span6 {
+ float: none;
+ width: 444px;
+ margin-left: 0;
+}
+
+.table .span7 {
+ float: none;
+ width: 524px;
+ margin-left: 0;
+}
+
+.table .span8 {
+ float: none;
+ width: 604px;
+ margin-left: 0;
+}
+
+.table .span9 {
+ float: none;
+ width: 684px;
+ margin-left: 0;
+}
+
+.table .span10 {
+ float: none;
+ width: 764px;
+ margin-left: 0;
+}
+
+.table .span11 {
+ float: none;
+ width: 844px;
+ margin-left: 0;
+}
+
+.table .span12 {
+ float: none;
+ width: 924px;
+ margin-left: 0;
+}
+
+.table .span13 {
+ float: none;
+ width: 1004px;
+ margin-left: 0;
+}
+
+.table .span14 {
+ float: none;
+ width: 1084px;
+ margin-left: 0;
+}
+
+.table .span15 {
+ float: none;
+ width: 1164px;
+ margin-left: 0;
+}
+
+.table .span16 {
+ float: none;
+ width: 1244px;
+ margin-left: 0;
+}
+
+.table .span17 {
+ float: none;
+ width: 1324px;
+ margin-left: 0;
+}
+
+.table .span18 {
+ float: none;
+ width: 1404px;
+ margin-left: 0;
+}
+
+.table .span19 {
+ float: none;
+ width: 1484px;
+ margin-left: 0;
+}
+
+.table .span20 {
+ float: none;
+ width: 1564px;
+ margin-left: 0;
+}
+
+.table .span21 {
+ float: none;
+ width: 1644px;
+ margin-left: 0;
+}
+
+.table .span22 {
+ float: none;
+ width: 1724px;
+ margin-left: 0;
+}
+
+.table .span23 {
+ float: none;
+ width: 1804px;
+ margin-left: 0;
+}
+
+.table .span24 {
+ float: none;
+ width: 1884px;
+ margin-left: 0;
+}
+
+.table tbody tr.success td {
+ background-color: #dff0d8;
+}
+
+.table tbody tr.error td {
+ background-color: #f2dede;
+}
+
+.table tbody tr.warning td {
+ background-color: #fcf8e3;
+}
+
+.table tbody tr.info td {
+ background-color: #d9edf7;
+}
+
+.table-hover tbody tr.success:hover td {
+ background-color: #d0e9c6;
+}
+
+.table-hover tbody tr.error:hover td {
+ background-color: #ebcccc;
+}
+
+.table-hover tbody tr.warning:hover td {
+ background-color: #faf2cc;
+}
+
+.table-hover tbody tr.info:hover td {
+ background-color: #c4e3f3;
+}
+/*
+[class^="icon-"],
+[class*=" icon-"] {
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+ margin-top: 1px;
+ *margin-right: .3em;
+ line-height: 14px;
+ vertical-align: text-top;
+ background-image: url("img/glyphicons-halflings.png");
+ background-position: 14px 14px;
+ background-repeat: no-repeat;
+}
+
+/* White icons with optional class, or on hover/active states of certain elements
+
+.icon-white,
+.nav-tabs > .active > a > [class^="icon-"],
+.nav-tabs > .active > a > [class*=" icon-"],
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"] {
+ background-image: url("img/glyphicons-halflings-white.png");
+}
+
+.icon-glass {
+ background-position: 0 0;
+}
+
+.icon-music {
+ background-position: -24px 0;
+}
+
+.icon-search {
+ background-position: -48px 0;
+}
+
+.icon-envelope {
+ background-position: -72px 0;
+}
+
+.icon-heart {
+ background-position: -96px 0;
+}
+
+.icon-star {
+ background-position: -120px 0;
+}
+
+.icon-star-empty {
+ background-position: -144px 0;
+}
+
+.icon-user {
+ background-position: -168px 0;
+}
+
+.icon-film {
+ background-position: -192px 0;
+}
+
+.icon-th-large {
+ background-position: -216px 0;
+}
+
+.icon-th {
+ background-position: -240px 0;
+}
+
+.icon-th-list {
+ background-position: -264px 0;
+}
+
+.icon-ok {
+ background-position: -288px 0;
+}
+
+.icon-remove {
+ background-position: -312px 0;
+}
+
+.icon-zoom-in {
+ background-position: -336px 0;
+}
+
+.icon-zoom-out {
+ background-position: -360px 0;
+}
+
+.icon-off {
+ background-position: -384px 0;
+}
+
+.icon-signal {
+ background-position: -408px 0;
+}
+
+.icon-cog {
+ background-position: -432px 0;
+}
+
+.icon-trash {
+ background-position: -456px 0;
+}
+
+.icon-home {
+ background-position: 0 -24px;
+}
+
+.icon-file {
+ background-position: -24px -24px;
+}
+
+.icon-time {
+ background-position: -48px -24px;
+}
+
+.icon-road {
+ background-position: -72px -24px;
+}
+
+.icon-download-alt {
+ background-position: -96px -24px;
+}
+
+.icon-download {
+ background-position: -120px -24px;
+}
+
+.icon-upload {
+ background-position: -144px -24px;
+}
+
+.icon-inbox {
+ background-position: -168px -24px;
+}
+
+.icon-play-circle {
+ background-position: -192px -24px;
+}
+
+.icon-repeat {
+ background-position: -216px -24px;
+}
+
+.icon-refresh {
+ background-position: -240px -24px;
+}
+
+.icon-list-alt {
+ background-position: -264px -24px;
+}
+
+.icon-lock {
+ background-position: -287px -24px;
+}
+
+.icon-flag {
+ background-position: -312px -24px;
+}
+
+.icon-headphones {
+ background-position: -336px -24px;
+}
+
+.icon-volume-off {
+ background-position: -360px -24px;
+}
+
+.icon-volume-down {
+ background-position: -384px -24px;
+}
+
+.icon-volume-up {
+ background-position: -408px -24px;
+}
+
+.icon-qrcode {
+ background-position: -432px -24px;
+}
+
+.icon-barcode {
+ background-position: -456px -24px;
+}
+
+.icon-tag {
+ background-position: 0 -48px;
+}
+
+.icon-tags {
+ background-position: -25px -48px;
+}
+
+.icon-book {
+ background-position: -48px -48px;
+}
+
+.icon-bookmark {
+ background-position: -72px -48px;
+}
+
+.icon-print {
+ background-position: -96px -48px;
+}
+
+.icon-camera {
+ background-position: -120px -48px;
+}
+
+.icon-font {
+ background-position: -144px -48px;
+}
+
+.icon-bold {
+ background-position: -167px -48px;
+}
+
+.icon-italic {
+ background-position: -192px -48px;
+}
+
+.icon-text-height {
+ background-position: -216px -48px;
+}
+
+.icon-text-width {
+ background-position: -240px -48px;
+}
+
+.icon-align-left {
+ background-position: -264px -48px;
+}
+
+.icon-align-center {
+ background-position: -288px -48px;
+}
+
+.icon-align-right {
+ background-position: -312px -48px;
+}
+
+.icon-align-justify {
+ background-position: -336px -48px;
+}
+
+.icon-list {
+ background-position: -360px -48px;
+}
+
+.icon-indent-left {
+ background-position: -384px -48px;
+}
+
+.icon-indent-right {
+ background-position: -408px -48px;
+}
+
+.icon-facetime-video {
+ background-position: -432px -48px;
+}
+
+.icon-picture {
+ background-position: -456px -48px;
+}
+
+.icon-pencil {
+ background-position: 0 -72px;
+}
+
+.icon-map-marker {
+ background-position: -24px -72px;
+}
+
+.icon-adjust {
+ background-position: -48px -72px;
+}
+
+.icon-tint {
+ background-position: -72px -72px;
+}
+
+.icon-edit {
+ background-position: -96px -72px;
+}
+
+.icon-share {
+ background-position: -120px -72px;
+}
+
+.icon-check {
+ background-position: -144px -72px;
+}
+
+.icon-move {
+ background-position: -168px -72px;
+}
+
+.icon-step-backward {
+ background-position: -192px -72px;
+}
+
+.icon-fast-backward {
+ background-position: -216px -72px;
+}
+
+.icon-backward {
+ background-position: -240px -72px;
+}
+
+.icon-play {
+ background-position: -264px -72px;
+}
+
+.icon-pause {
+ background-position: -288px -72px;
+}
+
+.icon-stop {
+ background-position: -312px -72px;
+}
+
+.icon-forward {
+ background-position: -336px -72px;
+}
+
+.icon-fast-forward {
+ background-position: -360px -72px;
+}
+
+.icon-step-forward {
+ background-position: -384px -72px;
+}
+
+.icon-eject {
+ background-position: -408px -72px;
+}
+
+.icon-chevron-left {
+ background-position: -432px -72px;
+}
+
+.icon-chevron-right {
+ background-position: -456px -72px;
+}
+
+.icon-plus-sign {
+ background-position: 0 -96px;
+}
+
+.icon-minus-sign {
+ background-position: -24px -96px;
+}
+
+.icon-remove-sign {
+ background-position: -48px -96px;
+}
+
+.icon-ok-sign {
+ background-position: -72px -96px;
+}
+
+.icon-question-sign {
+ background-position: -96px -96px;
+}
+
+.icon-info-sign {
+ background-position: -120px -96px;
+}
+
+.icon-screenshot {
+ background-position: -144px -96px;
+}
+
+.icon-remove-circle {
+ background-position: -168px -96px;
+}
+
+.icon-ok-circle {
+ background-position: -192px -96px;
+}
+
+.icon-ban-circle {
+ background-position: -216px -96px;
+}
+
+.icon-arrow-left {
+ background-position: -240px -96px;
+}
+
+.icon-arrow-right {
+ background-position: -264px -96px;
+}
+
+.icon-arrow-up {
+ background-position: -289px -96px;
+}
+
+.icon-arrow-down {
+ background-position: -312px -96px;
+}
+
+.icon-share-alt {
+ background-position: -336px -96px;
+}
+
+.icon-resize-full {
+ background-position: -360px -96px;
+}
+
+.icon-resize-small {
+ background-position: -384px -96px;
+}
+
+.icon-plus {
+ background-position: -408px -96px;
+}
+
+.icon-minus {
+ background-position: -433px -96px;
+}
+
+.icon-asterisk {
+ background-position: -456px -96px;
+}
+
+.icon-exclamation-sign {
+ background-position: 0 -120px;
+}
+
+.icon-gift {
+ background-position: -24px -120px;
+}
+
+.icon-leaf {
+ background-position: -48px -120px;
+}
+
+.icon-fire {
+ background-position: -72px -120px;
+}
+
+.icon-eye-open {
+ background-position: -96px -120px;
+}
+
+.icon-eye-close {
+ background-position: -120px -120px;
+}
+
+.icon-warning-sign {
+ background-position: -144px -120px;
+}
+
+.icon-plane {
+ background-position: -168px -120px;
+}
+
+.icon-calendar {
+ background-position: -192px -120px;
+}
+
+.icon-random {
+ width: 16px;
+ background-position: -216px -120px;
+}
+
+.icon-comment {
+ background-position: -240px -120px;
+}
+
+.icon-magnet {
+ background-position: -264px -120px;
+}
+
+.icon-chevron-up {
+ background-position: -288px -120px;
+}
+
+.icon-chevron-down {
+ background-position: -313px -119px;
+}
+
+.icon-retweet {
+ background-position: -336px -120px;
+}
+
+.icon-shopping-cart {
+ background-position: -360px -120px;
+}
+
+.icon-folder-close {
+ background-position: -384px -120px;
+}
+
+.icon-folder-open {
+ width: 16px;
+ background-position: -408px -120px;
+}
+
+.icon-resize-vertical {
+ background-position: -432px -119px;
+}
+
+.icon-resize-horizontal {
+ background-position: -456px -118px;
+}
+
+.icon-hdd {
+ background-position: 0 -144px;
+}
+
+.icon-bullhorn {
+ background-position: -24px -144px;
+}
+
+.icon-bell {
+ background-position: -48px -144px;
+}
+
+.icon-certificate {
+ background-position: -72px -144px;
+}
+
+.icon-thumbs-up {
+ background-position: -96px -144px;
+}
+
+.icon-thumbs-down {
+ background-position: -120px -144px;
+}
+
+.icon-hand-right {
+ background-position: -144px -144px;
+}
+
+.icon-hand-left {
+ background-position: -168px -144px;
+}
+
+.icon-hand-up {
+ background-position: -192px -144px;
+}
+
+.icon-hand-down {
+ background-position: -216px -144px;
+}
+
+.icon-circle-arrow-right {
+ background-position: -240px -144px;
+}
+
+.icon-circle-arrow-left {
+ background-position: -264px -144px;
+}
+
+.icon-circle-arrow-up {
+ background-position: -288px -144px;
+}
+
+.icon-circle-arrow-down {
+ background-position: -312px -144px;
+}
+
+.icon-globe {
+ background-position: -336px -144px;
+}
+
+.icon-wrench {
+ background-position: -360px -144px;
+}
+
+.icon-tasks {
+ background-position: -384px -144px;
+}
+
+.icon-filter {
+ background-position: -408px -144px;
+}
+
+.icon-briefcase {
+ background-position: -432px -144px;
+}
+
+.icon-fullscreen {
+ background-position: -456px -144px;
+}
+*/
+.dropup,
+.dropdown {
+ position: relative;
+}
+
+.dropdown-toggle {
+ *margin-bottom: -3px;
+}
+
+.dropdown-toggle:active,
+.open .dropdown-toggle {
+ outline: 0;
+}
+
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ vertical-align: top;
+ border-top: 4px solid #000000;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+ content: "";
+}
+
+.dropdown .caret {
+ margin-top: 8px;
+ margin-left: 2px;
+}
+
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ background-color: #ffffff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ *border-right-width: 2px;
+ *border-bottom-width: 2px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+}
+
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+
+.dropdown-menu .divider {
+ *width: 100%;
+ height: 1px;
+ margin: 9px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
+}
+
+.dropdown-menu a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 20px;
+ color: #333333;
+ white-space: nowrap;
+}
+
+.dropdown-menu li > a:hover,
+.dropdown-menu li > a:focus,
+.dropdown-submenu:hover > a {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #0088cc;
+ background-color: #0081c2;
+ background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+ background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+
+.dropdown-menu .active > a,
+.dropdown-menu .active > a:hover {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #0088cc;
+ background-color: #0081c2;
+ background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+ background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+ background-repeat: repeat-x;
+ outline: 0;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+
+.dropdown-menu .disabled > a,
+.dropdown-menu .disabled > a:hover {
+ color: #999999;
+}
+
+.dropdown-menu .disabled > a:hover {
+ text-decoration: none;
+ cursor: default;
+ background-color: transparent;
+}
+
+.open {
+ *z-index: 1000;
+}
+
+.open > .dropdown-menu {
+ display: block;
+}
+
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ border-top: 0;
+ border-bottom: 4px solid #000000;
+ content: "";
+}
+
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 1px;
+}
+
+.dropdown-submenu {
+ position: relative;
+}
+
+.dropdown-submenu > .dropdown-menu {
+ top: 0;
+ left: 100%;
+ margin-top: -6px;
+ margin-left: -1px;
+ -webkit-border-radius: 0 6px 6px 6px;
+ -moz-border-radius: 0 6px 6px 6px;
+ border-radius: 0 6px 6px 6px;
+}
+
+.dropdown-submenu:hover > .dropdown-menu {
+ display: block;
+}
+
+.dropdown-submenu > a:after {
+ display: block;
+ float: right;
+ width: 0;
+ height: 0;
+ margin-top: 5px;
+ margin-right: -10px;
+ border-color: transparent;
+ border-left-color: #cccccc;
+ border-style: solid;
+ border-width: 5px 0 5px 5px;
+ content: " ";
+}
+
+.dropdown-submenu:hover > a:after {
+ border-left-color: #ffffff;
+}
+
+.dropdown .dropdown-menu .nav-header {
+ padding-right: 20px;
+ padding-left: 20px;
+}
+
+.typeahead {
+ margin-top: 2px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
+}
+
+.well-large {
+ padding: 24px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.well-small {
+ padding: 9px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity 0.15s linear;
+ -moz-transition: opacity 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+}
+
+.fade.in {
+ opacity: 1;
+}
+
+.collapse {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition: height 0.35s ease;
+ -moz-transition: height 0.35s ease;
+ -o-transition: height 0.35s ease;
+ transition: height 0.35s ease;
+}
+
+.collapse.in {
+ height: auto;
+}
+
+.close {
+ float: right;
+ font-size: 20px;
+ font-weight: bold;
+ line-height: 20px;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+
+.close:hover {
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.4;
+ filter: alpha(opacity=40);
+}
+
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+
+.btn {
+ display: inline-block;
+ *display: inline;
+ padding: 4px 14px;
+ margin-bottom: 0;
+ *margin-left: .3em;
+ font-size: 14px;
+ line-height: 20px;
+ *line-height: 20px;
+ color: #333333;
+ text-align: center;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ vertical-align: middle;
+ cursor: pointer;
+ background-color: #f5f5f5;
+ *background-color: #e6e6e6;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+ background-repeat: repeat-x;
+ border: 1px solid #bbbbbb;
+ *border: 0;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+ border-bottom-color: #a2a2a2;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+ *zoom: 1;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.btn:hover,
+.btn:active,
+.btn.active,
+.btn.disabled,
+.btn[disabled] {
+ color: #333333;
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
+}
+
+.btn:active,
+.btn.active {
+ background-color: #cccccc \9;
+}
+
+.btn:first-child {
+ *margin-left: 0;
+}
+
+.btn:hover {
+ color: #333333;
+ text-decoration: none;
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
+ /* Buttons in IE7 don't get borders, so darken on hover */
+
+ background-position: 0 -15px;
+ -webkit-transition: background-position 0.1s linear;
+ -moz-transition: background-position 0.1s linear;
+ -o-transition: background-position 0.1s linear;
+ transition: background-position 0.1s linear;
+}
+
+.btn:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.btn.active,
+.btn:active {
+ background-color: #e6e6e6;
+ background-color: #d9d9d9 \9;
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.btn.disabled,
+.btn[disabled] {
+ cursor: default;
+ background-color: #e6e6e6;
+ background-image: none;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+
+.btn-large {
+ padding: 9px 14px;
+ font-size: 16px;
+ line-height: normal;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+
+.btn-large [class^="icon-"] {
+ margin-top: 2px;
+}
+
+.btn-small {
+ padding: 3px 9px;
+ font-size: 12px;
+ line-height: 18px;
+}
+
+.btn-small [class^="icon-"] {
+ margin-top: 0;
+}
+
+.btn-mini {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 17px;
+}
+
+.btn-block {
+ display: block;
+ width: 100%;
+ padding-right: 0;
+ padding-left: 0;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active,
+.btn-inverse.active {
+ color: rgba(255, 255, 255, 0.75);
+}
+
+.btn {
+ border-color: #c5c5c5;
+ border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
+}
+
+.btn-primary {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #006dcc;
+ *background-color: #0044cc;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+ background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+ background-repeat: repeat-x;
+ border-color: #0044cc #0044cc #002a80;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+
+.btn-primary:hover,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+ color: #ffffff;
+ background-color: #0044cc;
+ *background-color: #003bb3;
+}
+
+.btn-primary:active,
+.btn-primary.active {
+ background-color: #003399 \9;
+}
+
+.btn-warning {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #faa732;
+ *background-color: #f89406;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(to bottom, #fbb450, #f89406);
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ border-color: #f89406 #f89406 #ad6704;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+
+.btn-warning:hover,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+ color: #ffffff;
+ background-color: #f89406;
+ *background-color: #df8505;
+}
+
+.btn-warning:active,
+.btn-warning.active {
+ background-color: #c67605 \9;
+}
+
+.btn-danger {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #da4f49;
+ *background-color: #bd362f;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
+ background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+ background-repeat: repeat-x;
+ border-color: #bd362f #bd362f #802420;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+
+.btn-danger:hover,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+ color: #ffffff;
+ background-color: #bd362f;
+ *background-color: #a9302a;
+}
+
+.btn-danger:active,
+.btn-danger.active {
+ background-color: #942a25 \9;
+}
+
+.btn-success {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #5bb75b;
+ *background-color: #51a351;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+ background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+ background-image: -o-linear-gradient(top, #62c462, #51a351);
+ background-image: linear-gradient(to bottom, #62c462, #51a351);
+ background-image: -moz-linear-gradient(top, #62c462, #51a351);
+ background-repeat: repeat-x;
+ border-color: #51a351 #51a351 #387038;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+
+.btn-success:hover,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+ color: #ffffff;
+ background-color: #51a351;
+ *background-color: #499249;
+}
+
+.btn-success:active,
+.btn-success.active {
+ background-color: #408140 \9;
+}
+
+.btn-info {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #49afcd;
+ *background-color: #2f96b4;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
+ background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+ background-repeat: repeat-x;
+ border-color: #2f96b4 #2f96b4 #1f6377;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+
+.btn-info:hover,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+ color: #ffffff;
+ background-color: #2f96b4;
+ *background-color: #2a85a0;
+}
+
+.btn-info:active,
+.btn-info.active {
+ background-color: #24748c \9;
+}
+
+.btn-inverse {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #363636;
+ *background-color: #222222;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
+ background-image: -webkit-linear-gradient(top, #444444, #222222);
+ background-image: -o-linear-gradient(top, #444444, #222222);
+ background-image: linear-gradient(to bottom, #444444, #222222);
+ background-image: -moz-linear-gradient(top, #444444, #222222);
+ background-repeat: repeat-x;
+ border-color: #222222 #222222 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+
+.btn-inverse:hover,
+.btn-inverse:active,
+.btn-inverse.active,
+.btn-inverse.disabled,
+.btn-inverse[disabled] {
+ color: #ffffff;
+ background-color: #222222;
+ *background-color: #151515;
+}
+
+.btn-inverse:active,
+.btn-inverse.active {
+ background-color: #080808 \9;
+}
+
+button.btn,
+input[type="submit"].btn {
+ *padding-top: 3px;
+ *padding-bottom: 3px;
+}
+
+button.btn::-moz-focus-inner,
+input[type="submit"].btn::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+button.btn.btn-large,
+input[type="submit"].btn.btn-large {
+ *padding-top: 7px;
+ *padding-bottom: 7px;
+}
+
+button.btn.btn-small,
+input[type="submit"].btn.btn-small {
+ *padding-top: 3px;
+ *padding-bottom: 3px;
+}
+
+button.btn.btn-mini,
+input[type="submit"].btn.btn-mini {
+ *padding-top: 1px;
+ *padding-bottom: 1px;
+}
+
+.btn-link,
+.btn-link:active,
+.btn-link[disabled] {
+ background-color: transparent;
+ background-image: none;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+
+.btn-link {
+ color: #0088cc;
+ cursor: pointer;
+ border-color: transparent;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.btn-link:hover {
+ color: #005580;
+ text-decoration: underline;
+ background-color: transparent;
+}
+
+.btn-link[disabled]:hover {
+ color: #333333;
+ text-decoration: none;
+}
+
+.btn-group {
+ position: relative;
+ *margin-left: .3em;
+ font-size: 0;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+.btn-group:first-child {
+ *margin-left: 0;
+}
+
+.btn-group + .btn-group {
+ margin-left: 5px;
+}
+
+.btn-toolbar {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ font-size: 0;
+}
+
+.btn-toolbar .btn-group {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+}
+
+.btn-toolbar .btn + .btn,
+.btn-toolbar .btn-group + .btn,
+.btn-toolbar .btn + .btn-group {
+ margin-left: 5px;
+}
+
+.btn-group > .btn {
+ position: relative;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.btn-group > .btn + .btn {
+ margin-left: -1px;
+}
+
+.btn-group > .btn,
+.btn-group > .dropdown-menu {
+ font-size: 14px;
+}
+
+.btn-group > .btn-mini {
+ font-size: 11px;
+}
+
+.btn-group > .btn-small {
+ font-size: 12px;
+}
+
+.btn-group > .btn-large {
+ font-size: 16px;
+}
+
+.btn-group > .btn:first-child {
+ margin-left: 0;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+
+.btn-group > .btn:last-child,
+.btn-group > .dropdown-toggle {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-bottomright: 4px;
+}
+
+.btn-group > .btn.large:first-child {
+ margin-left: 0;
+ -webkit-border-bottom-left-radius: 6px;
+ border-bottom-left-radius: 6px;
+ -webkit-border-top-left-radius: 6px;
+ border-top-left-radius: 6px;
+ -moz-border-radius-bottomleft: 6px;
+ -moz-border-radius-topleft: 6px;
+}
+
+.btn-group > .btn.large:last-child,
+.btn-group > .large.dropdown-toggle {
+ -webkit-border-top-right-radius: 6px;
+ border-top-right-radius: 6px;
+ -webkit-border-bottom-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+ -moz-border-radius-topright: 6px;
+ -moz-border-radius-bottomright: 6px;
+}
+
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active {
+ z-index: 2;
+}
+
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+
+.btn-group > .btn + .dropdown-toggle {
+ *padding-top: 5px;
+ padding-right: 8px;
+ *padding-bottom: 5px;
+ padding-left: 8px;
+ -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.btn-group > .btn-mini + .dropdown-toggle {
+ *padding-top: 2px;
+ padding-right: 5px;
+ *padding-bottom: 2px;
+ padding-left: 5px;
+}
+
+.btn-group > .btn-small + .dropdown-toggle {
+ *padding-top: 5px;
+ *padding-bottom: 4px;
+}
+
+.btn-group > .btn-large + .dropdown-toggle {
+ *padding-top: 7px;
+ padding-right: 12px;
+ *padding-bottom: 7px;
+ padding-left: 12px;
+}
+
+.btn-group.open .dropdown-toggle {
+ background-image: none;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.btn-group.open .btn.dropdown-toggle {
+ background-color: #e6e6e6;
+}
+
+.btn-group.open .btn-primary.dropdown-toggle {
+ background-color: #0044cc;
+}
+
+.btn-group.open .btn-warning.dropdown-toggle {
+ background-color: #f89406;
+}
+
+.btn-group.open .btn-danger.dropdown-toggle {
+ background-color: #bd362f;
+}
+
+.btn-group.open .btn-success.dropdown-toggle {
+ background-color: #51a351;
+}
+
+.btn-group.open .btn-info.dropdown-toggle {
+ background-color: #2f96b4;
+}
+
+.btn-group.open .btn-inverse.dropdown-toggle {
+ background-color: #222222;
+}
+
+.btn .caret {
+ margin-top: 8px;
+ margin-left: 0;
+}
+
+.btn-mini .caret,
+.btn-small .caret,
+.btn-large .caret {
+ margin-top: 6px;
+}
+
+.btn-large .caret {
+ border-top-width: 5px;
+ border-right-width: 5px;
+ border-left-width: 5px;
+}
+
+.dropup .btn-large .caret {
+ border-top: 0;
+ border-bottom: 5px solid #000000;
+}
+
+.btn-primary .caret,
+.btn-warning .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret,
+.btn-inverse .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+
+.btn-group-vertical {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+}
+
+.btn-group-vertical .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.btn-group-vertical .btn + .btn {
+ margin-top: -1px;
+ margin-left: 0;
+}
+
+.btn-group-vertical .btn:first-child {
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+
+.btn-group-vertical .btn:last-child {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+
+.btn-group-vertical .btn-large:first-child {
+ -webkit-border-radius: 6px 6px 0 0;
+ -moz-border-radius: 6px 6px 0 0;
+ border-radius: 6px 6px 0 0;
+}
+
+.btn-group-vertical .btn-large:last-child {
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+}
+
+.alert {
+ padding: 8px 35px 8px 14px;
+ margin-bottom: 20px;
+ color: #c09853;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ background-color: #fcf8e3;
+ border: 1px solid #fbeed5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.alert h4 {
+ margin: 0;
+}
+
+.alert .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ line-height: 20px;
+}
+
+.alert-success {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+
+.alert-danger,
+.alert-error {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #eed3d7;
+}
+
+.alert-info {
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+
+.alert-block {
+ padding-top: 14px;
+ padding-bottom: 14px;
+}
+
+.alert-block > p,
+.alert-block > ul {
+ margin-bottom: 0;
+}
+
+.alert-block p + p {
+ margin-top: 5px;
+}
+
+.nav {
+ margin-bottom: 20px;
+ margin-left: 0;
+ list-style: none;
+}
+
+.nav > li > a {
+ display: block;
+}
+
+.nav > li > a:hover {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+
+.nav > .pull-right {
+ float: right;
+}
+
+.nav-header {
+ display: block;
+ padding: 3px 15px;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 20px;
+ color: #999999;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ text-transform: uppercase;
+}
+
+.nav li + .nav-header {
+ margin-top: 9px;
+}
+
+.nav-list {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-bottom: 0;
+}
+
+.nav-list > li > a,
+.nav-list .nav-header {
+ margin-right: -15px;
+ margin-left: -15px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+
+.nav-list > li > a {
+ padding: 3px 15px;
+}
+
+.nav-list > .active > a,
+.nav-list > .active > a:hover {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+ background-color: #0088cc;
+}
+
+.nav-list [class^="icon-"] {
+ margin-right: 2px;
+}
+
+.nav-list .divider {
+ *width: 100%;
+ height: 1px;
+ margin: 9px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
+}
+
+.nav-tabs,
+.nav-pills {
+ *zoom: 1;
+}
+
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.nav-tabs:after,
+.nav-pills:after {
+ clear: both;
+}
+
+.nav-tabs > li,
+.nav-pills > li {
+ float: left;
+}
+
+.nav-tabs > li > a,
+.nav-pills > li > a {
+ padding-right: 12px;
+ padding-left: 12px;
+ margin-right: 2px;
+ line-height: 14px;
+}
+
+.nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+
+.nav-tabs > li {
+ margin-bottom: -1px;
+}
+
+.nav-tabs > li > a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ line-height: 20px;
+ border: 1px solid transparent;
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+
+.nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #dddddd;
+}
+
+.nav-tabs > .active > a,
+.nav-tabs > .active > a:hover {
+ color: #555555;
+ cursor: default;
+ background-color: #ffffff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+}
+
+.nav-pills > li > a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+
+.nav-pills > .active > a,
+.nav-pills > .active > a:hover {
+ color: #ffffff;
+ background-color: #0088cc;
+}
+
+.nav-stacked > li {
+ float: none;
+}
+
+.nav-stacked > li > a {
+ margin-right: 0;
+}
+
+.nav-tabs.nav-stacked {
+ border-bottom: 0;
+}
+
+.nav-tabs.nav-stacked > li > a {
+ border: 1px solid #ddd;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.nav-tabs.nav-stacked > li:first-child > a {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+
+.nav-tabs.nav-stacked > li:last-child > a {
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-border-radius-bottomleft: 4px;
+}
+
+.nav-tabs.nav-stacked > li > a:hover {
+ z-index: 2;
+ border-color: #ddd;
+}
+
+.nav-pills.nav-stacked > li > a {
+ margin-bottom: 3px;
+}
+
+.nav-pills.nav-stacked > li:last-child > a {
+ margin-bottom: 1px;
+}
+
+.nav-tabs .dropdown-menu {
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+}
+
+.nav-pills .dropdown-menu {
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.nav .dropdown-toggle .caret {
+ margin-top: 6px;
+ border-top-color: #0088cc;
+ border-bottom-color: #0088cc;
+}
+
+.nav .dropdown-toggle:hover .caret {
+ border-top-color: #005580;
+ border-bottom-color: #005580;
+}
+
+/* move down carets for tabs */
+
+.nav-tabs .dropdown-toggle .caret {
+ margin-top: 8px;
+}
+
+.nav .active .dropdown-toggle .caret {
+ border-top-color: #fff;
+ border-bottom-color: #fff;
+}
+
+.nav-tabs .active .dropdown-toggle .caret {
+ border-top-color: #555555;
+ border-bottom-color: #555555;
+}
+
+.nav > .dropdown.active > a:hover {
+ cursor: pointer;
+}
+
+.nav-tabs .open .dropdown-toggle,
+.nav-pills .open .dropdown-toggle,
+.nav > li.dropdown.open.active > a:hover {
+ color: #ffffff;
+ background-color: #999999;
+ border-color: #999999;
+}
+
+.nav li.dropdown.open .caret,
+.nav li.dropdown.open.active .caret,
+.nav li.dropdown.open a:hover .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+
+.tabs-stacked .open > a:hover {
+ border-color: #999999;
+}
+
+.tabbable {
+ *zoom: 1;
+}
+
+.tabbable:before,
+.tabbable:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.tabbable:after {
+ clear: both;
+}
+
+.tab-content {
+ overflow: auto;
+}
+
+.tabs-below > .nav-tabs,
+.tabs-right > .nav-tabs,
+.tabs-left > .nav-tabs {
+ border-bottom: 0;
+}
+
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+ display: none;
+}
+
+.tab-content > .active,
+.pill-content > .active {
+ display: block;
+}
+
+.tabs-below > .nav-tabs {
+ border-top: 1px solid #ddd;
+}
+
+.tabs-below > .nav-tabs > li {
+ margin-top: -1px;
+ margin-bottom: 0;
+}
+
+.tabs-below > .nav-tabs > li > a {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+
+.tabs-below > .nav-tabs > li > a:hover {
+ border-top-color: #ddd;
+ border-bottom-color: transparent;
+}
+
+.tabs-below > .nav-tabs > .active > a,
+.tabs-below > .nav-tabs > .active > a:hover {
+ border-color: transparent #ddd #ddd #ddd;
+}
+
+.tabs-left > .nav-tabs > li,
+.tabs-right > .nav-tabs > li {
+ float: none;
+}
+
+.tabs-left > .nav-tabs > li > a,
+.tabs-right > .nav-tabs > li > a {
+ min-width: 74px;
+ margin-right: 0;
+ margin-bottom: 3px;
+}
+
+.tabs-left > .nav-tabs {
+ float: left;
+ margin-right: 19px;
+ border-right: 1px solid #ddd;
+}
+
+.tabs-left > .nav-tabs > li > a {
+ margin-right: -1px;
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+
+.tabs-left > .nav-tabs > li > a:hover {
+ border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+
+.tabs-left > .nav-tabs .active > a,
+.tabs-left > .nav-tabs .active > a:hover {
+ border-color: #ddd transparent #ddd #ddd;
+ *border-right-color: #ffffff;
+}
+
+.tabs-right > .nav-tabs {
+ float: right;
+ margin-left: 19px;
+ border-left: 1px solid #ddd;
+}
+
+.tabs-right > .nav-tabs > li > a {
+ margin-left: -1px;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.tabs-right > .nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+
+.tabs-right > .nav-tabs .active > a,
+.tabs-right > .nav-tabs .active > a:hover {
+ border-color: #ddd #ddd #ddd transparent;
+ *border-left-color: #ffffff;
+}
+
+.nav > .disabled > a {
+ color: #999999;
+}
+
+.nav > .disabled > a:hover {
+ text-decoration: none;
+ cursor: default;
+ background-color: transparent;
+}
+
+.navbar {
+ *position: relative;
+ *z-index: 2;
+ margin-bottom: 20px;
+ overflow: visible;
+ color: #777777;
+}
+
+.navbar-inner {
+ min-height: 40px;
+ padding-right: 20px;
+ padding-left: 20px;
+ background-color: #fafafa;
+ background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
+ background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
+ background-repeat: repeat-x;
+ border: 1px solid #d4d4d4;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
+ *zoom: 1;
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+}
+
+.navbar-inner:before,
+.navbar-inner:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.navbar-inner:after {
+ clear: both;
+}
+
+.navbar .container {
+ width: auto;
+}
+
+.nav-collapse.collapse {
+ height: auto;
+}
+
+.navbar .brand {
+ display: block;
+ float: left;
+ padding: 10px 20px 10px;
+ margin-left: -20px;
+ font-size: 20px;
+ font-weight: 200;
+ color: #777777;
+ text-shadow: 0 1px 0 #ffffff;
+}
+
+.navbar .brand:hover {
+ text-decoration: none;
+}
+
+.navbar-text {
+ margin-bottom: 0;
+ line-height: 40px;
+}
+
+.navbar-link {
+ color: #777777;
+}
+
+.navbar-link:hover {
+ color: #333333;
+}
+
+.navbar .divider-vertical {
+ height: 40px;
+ margin: 0 9px;
+ border-right: 1px solid #ffffff;
+ border-left: 1px solid #f2f2f2;
+}
+
+.navbar .btn,
+.navbar .btn-group {
+ margin-top: 5px;
+}
+
+.navbar .btn-group .btn,
+.navbar .input-prepend .btn,
+.navbar .input-append .btn {
+ margin-top: 0;
+}
+
+.navbar-form {
+ margin-bottom: 0;
+ *zoom: 1;
+}
+
+.navbar-form:before,
+.navbar-form:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.navbar-form:after {
+ clear: both;
+}
+
+.navbar-form input,
+.navbar-form select,
+.navbar-form .radio,
+.navbar-form .checkbox {
+ margin-top: 5px;
+}
+
+.navbar-form input,
+.navbar-form select,
+.navbar-form .btn {
+ display: inline-block;
+ margin-bottom: 0;
+}
+
+.navbar-form input[type="image"],
+.navbar-form input[type="checkbox"],
+.navbar-form input[type="radio"] {
+ margin-top: 3px;
+}
+
+.navbar-form .input-append,
+.navbar-form .input-prepend {
+ margin-top: 6px;
+ white-space: nowrap;
+}
+
+.navbar-form .input-append input,
+.navbar-form .input-prepend input {
+ margin-top: 0;
+}
+
+.navbar-search {
+ position: relative;
+ float: left;
+ margin-top: 5px;
+ margin-bottom: 0;
+}
+
+.navbar-search .search-query {
+ padding: 4px 14px;
+ margin-bottom: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+}
+
+.navbar-static-top {
+ position: static;
+ width: 100%;
+ margin-bottom: 0;
+}
+
+.navbar-static-top .navbar-inner {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+ margin-bottom: 0;
+}
+
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+ border-width: 0 0 1px;
+}
+
+.navbar-fixed-bottom .navbar-inner {
+ border-width: 1px 0 0;
+}
+
+.navbar-fixed-top .navbar-inner,
+.navbar-fixed-bottom .navbar-inner {
+ padding-right: 0;
+ padding-left: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+ width: 940px;
+}
+
+.navbar-fixed-top {
+ top: 0;
+}
+
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
+}
+
+.navbar-fixed-bottom {
+ bottom: 0;
+}
+
+.navbar-fixed-bottom .navbar-inner {
+ -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
+}
+
+.navbar .nav {
+ position: relative;
+ left: 0;
+ display: block;
+ float: left;
+ margin: 0 10px 0 0;
+}
+
+.navbar .nav.pull-right {
+ float: right;
+ margin-right: 0;
+}
+
+.navbar .nav > li {
+ float: left;
+}
+
+.navbar .nav > li > a {
+ float: none;
+ padding: 10px 15px 10px;
+ color: #777777;
+ text-decoration: none;
+ text-shadow: 0 1px 0 #ffffff;
+}
+
+.navbar .nav .dropdown-toggle .caret {
+ margin-top: 8px;
+}
+
+.navbar .nav > li > a:focus,
+.navbar .nav > li > a:hover {
+ color: #333333;
+ text-decoration: none;
+ background-color: transparent;
+}
+
+.navbar .nav > .active > a,
+.navbar .nav > .active > a:hover,
+.navbar .nav > .active > a:focus {
+ color: #555555;
+ text-decoration: none;
+ background-color: #e5e5e5;
+ -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+ -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+}
+
+.navbar .btn-navbar {
+ display: none;
+ float: right;
+ padding: 7px 10px;
+ margin-right: 5px;
+ margin-left: 5px;
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #ededed;
+ *background-color: #e5e5e5;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
+ background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
+ background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-repeat: repeat-x;
+ border-color: #e5e5e5 #e5e5e5 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+}
+
+.navbar .btn-navbar:hover,
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active,
+.navbar .btn-navbar.disabled,
+.navbar .btn-navbar[disabled] {
+ color: #ffffff;
+ background-color: #e5e5e5;
+ *background-color: #d9d9d9;
+}
+
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active {
+ background-color: #cccccc \9;
+}
+
+.navbar .btn-navbar .icon-bar {
+ display: block;
+ width: 18px;
+ height: 2px;
+ background-color: #f5f5f5;
+ -webkit-border-radius: 1px;
+ -moz-border-radius: 1px;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+
+.btn-navbar .icon-bar + .icon-bar {
+ margin-top: 3px;
+}
+
+.navbar .nav > li > .dropdown-menu:before {
+ position: absolute;
+ top: -7px;
+ left: 9px;
+ display: inline-block;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-left: 7px solid transparent;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ content: '';
+}
+
+.navbar .nav > li > .dropdown-menu:after {
+ position: absolute;
+ top: -6px;
+ left: 10px;
+ display: inline-block;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #ffffff;
+ border-left: 6px solid transparent;
+ content: '';
+}
+
+.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
+ top: auto;
+ bottom: -7px;
+ border-top: 7px solid #ccc;
+ border-bottom: 0;
+ border-top-color: rgba(0, 0, 0, 0.2);
+}
+
+.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
+ top: auto;
+ bottom: -6px;
+ border-top: 6px solid #ffffff;
+ border-bottom: 0;
+}
+
+.navbar .nav li.dropdown.open > .dropdown-toggle,
+.navbar .nav li.dropdown.active > .dropdown-toggle,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle {
+ color: #555555;
+ background-color: #e5e5e5;
+}
+
+.navbar .nav li.dropdown > .dropdown-toggle .caret {
+ border-top-color: #777777;
+ border-bottom-color: #777777;
+}
+
+.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
+ border-top-color: #555555;
+ border-bottom-color: #555555;
+}
+
+.navbar .pull-right > li > .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+
+.navbar .pull-right > li > .dropdown-menu:before,
+.navbar .nav > li > .dropdown-menu.pull-right:before {
+ right: 12px;
+ left: auto;
+}
+
+.navbar .pull-right > li > .dropdown-menu:after,
+.navbar .nav > li > .dropdown-menu.pull-right:after {
+ right: 13px;
+ left: auto;
+}
+
+.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
+ right: 100%;
+ left: auto;
+ margin-right: -1px;
+ margin-left: 0;
+ -webkit-border-radius: 6px 0 6px 6px;
+ -moz-border-radius: 6px 0 6px 6px;
+ border-radius: 6px 0 6px 6px;
+}
+
+.navbar-inverse {
+ color: #999999;
+}
+
+.navbar-inverse .navbar-inner {
+ background-color: #1b1b1b;
+ background-image: -moz-linear-gradient(top, #222222, #111111);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
+ background-image: -webkit-linear-gradient(top, #222222, #111111);
+ background-image: -o-linear-gradient(top, #222222, #111111);
+ background-image: linear-gradient(to bottom, #222222, #111111);
+ background-repeat: repeat-x;
+ border-color: #252525;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
+}
+
+.navbar-inverse .brand,
+.navbar-inverse .nav > li > a {
+ color: #999999;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+
+.navbar-inverse .brand:hover,
+.navbar-inverse .nav > li > a:hover {
+ color: #ffffff;
+}
+
+.navbar-inverse .nav > li > a:focus,
+.navbar-inverse .nav > li > a:hover {
+ color: #ffffff;
+ background-color: transparent;
+}
+
+.navbar-inverse .nav .active > a,
+.navbar-inverse .nav .active > a:hover,
+.navbar-inverse .nav .active > a:focus {
+ color: #ffffff;
+ background-color: #111111;
+}
+
+.navbar-inverse .navbar-link {
+ color: #999999;
+}
+
+.navbar-inverse .navbar-link:hover {
+ color: #ffffff;
+}
+
+.navbar-inverse .divider-vertical {
+ border-right-color: #222222;
+ border-left-color: #111111;
+}
+
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
+ color: #ffffff;
+ background-color: #111111;
+}
+
+.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
+ border-top-color: #999999;
+ border-bottom-color: #999999;
+}
+
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+
+.navbar-inverse .navbar-search .search-query {
+ color: #ffffff;
+ background-color: #515151;
+ border-color: #111111;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ -webkit-transition: none;
+ -moz-transition: none;
+ -o-transition: none;
+ transition: none;
+}
+
+.navbar-inverse .navbar-search .search-query:-moz-placeholder {
+ color: #cccccc;
+}
+
+.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
+ color: #cccccc;
+}
+
+.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
+ color: #cccccc;
+}
+
+.navbar-inverse .navbar-search .search-query:focus,
+.navbar-inverse .navbar-search .search-query.focused {
+ padding: 5px 15px;
+ color: #333333;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #ffffff;
+ border: 0;
+ outline: 0;
+ -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+}
+
+.navbar-inverse .btn-navbar {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #0e0e0e;
+ *background-color: #040404;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
+ background-image: -webkit-linear-gradient(top, #151515, #040404);
+ background-image: -o-linear-gradient(top, #151515, #040404);
+ background-image: linear-gradient(to bottom, #151515, #040404);
+ background-image: -moz-linear-gradient(top, #151515, #040404);
+ background-repeat: repeat-x;
+ border-color: #040404 #040404 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
+ filter: progid:dximagetransform.microsoft.gradient(enabled=false);
+}
+
+.navbar-inverse .btn-navbar:hover,
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active,
+.navbar-inverse .btn-navbar.disabled,
+.navbar-inverse .btn-navbar[disabled] {
+ color: #ffffff;
+ background-color: #040404;
+ *background-color: #000000;
+}
+
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active {
+ background-color: #000000 \9;
+}
+
+.breadcrumb {
+ padding: 8px 15px;
+ margin: 0 0 20px;
+ list-style: none;
+ background-color: #f5f5f5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.breadcrumb li {
+ display: inline-block;
+ *display: inline;
+ text-shadow: 0 1px 0 #ffffff;
+ *zoom: 1;
+}
+
+.breadcrumb .divider {
+ padding: 0 5px;
+ color: #ccc;
+}
+
+.breadcrumb .active {
+ color: #999999;
+}
+
+.pagination {
+ height: 40px;
+ margin: 20px 0;
+}
+
+.pagination ul {
+ display: inline-block;
+ *display: inline;
+ margin-bottom: 0;
+ margin-left: 0;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ *zoom: 1;
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.pagination ul > li {
+ display: inline;
+}
+
+.pagination ul > li > a,
+.pagination ul > li > span {
+ float: left;
+ padding: 0 14px;
+ line-height: 38px;
+ text-decoration: none;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-left-width: 0;
+}
+
+.pagination ul > li > a:hover,
+.pagination ul > .active > a,
+.pagination ul > .active > span {
+ background-color: #f5f5f5;
+}
+
+.pagination ul > .active > a,
+.pagination ul > .active > span {
+ color: #999999;
+ cursor: default;
+}
+
+.pagination ul > .disabled > span,
+.pagination ul > .disabled > a,
+.pagination ul > .disabled > a:hover {
+ color: #999999;
+ cursor: default;
+ background-color: transparent;
+}
+
+.pagination ul > li:first-child > a,
+.pagination ul > li:first-child > span {
+ border-left-width: 1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+
+.pagination ul > li:last-child > a,
+.pagination ul > li:last-child > span {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+
+.pagination-centered {
+ text-align: center;
+}
+
+.pagination-right {
+ text-align: right;
+}
+
+.pager {
+ margin: 20px 0;
+ text-align: center;
+ list-style: none;
+ *zoom: 1;
+}
+
+.pager:before,
+.pager:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.pager:after {
+ clear: both;
+}
+
+.pager li {
+ display: inline;
+}
+
+.pager a,
+.pager span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+}
+
+.pager a:hover {
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+
+.pager .next a,
+.pager .next span {
+ float: right;
+}
+
+.pager .previous a {
+ float: left;
+}
+
+.pager .disabled a,
+.pager .disabled a:hover,
+.pager .disabled span {
+ color: #999999;
+ cursor: default;
+ background-color: #fff;
+}
+
+.modal-open .modal .dropdown-menu {
+ z-index: 2050;
+}
+
+.modal-open .modal .dropdown.open {
+ *z-index: 2050;
+}
+
+.modal-open .modal .popover {
+ z-index: 2060;
+}
+
+.modal-open .modal .tooltip {
+ z-index: 2080;
+}
+
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000000;
+}
+
+.modal-backdrop.fade {
+ opacity: 0;
+}
+
+.modal-backdrop,
+.modal-backdrop.fade.in {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+
+.modal {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ z-index: 1050;
+ width: 560px;
+ margin: -250px 0 0 -280px;
+ overflow: auto;
+ background-color: #ffffff;
+ border: 1px solid #999;
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ *border: 1px solid #999;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding-box;
+ background-clip: padding-box;
+}
+
+.modal.fade {
+ top: -25%;
+ -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
+ -moz-transition: opacity 0.3s linear, top 0.3s ease-out;
+ -o-transition: opacity 0.3s linear, top 0.3s ease-out;
+ transition: opacity 0.3s linear, top 0.3s ease-out;
+}
+
+.modal.fade.in {
+ top: 50%;
+}
+
+.modal-header {
+ padding: 9px 15px;
+ border-bottom: 1px solid #eee;
+}
+
+.modal-header .close {
+ margin-top: 2px;
+}
+
+.modal-header h3 {
+ margin: 0;
+ line-height: 30px;
+}
+
+.modal-body {
+ max-height: 400px;
+ padding: 15px;
+ overflow-y: auto;
+}
+
+.modal-form {
+ margin-bottom: 0;
+}
+
+.modal-footer {
+ padding: 14px 15px 15px;
+ margin-bottom: 0;
+ text-align: right;
+ background-color: #f5f5f5;
+ border-top: 1px solid #ddd;
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+ *zoom: 1;
+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
+ -moz-box-shadow: inset 0 1px 0 #ffffff;
+ box-shadow: inset 0 1px 0 #ffffff;
+}
+
+.modal-footer:before,
+.modal-footer:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.modal-footer:after {
+ clear: both;
+}
+
+.modal-footer .btn + .btn {
+ margin-bottom: 0;
+ margin-left: 5px;
+}
+
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+
+.tooltip {
+ position: absolute;
+ z-index: 1030;
+ display: block;
+ padding: 5px;
+ font-size: 11px;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ visibility: visible;
+}
+
+.tooltip.in {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+
+.tooltip.top {
+ margin-top: -3px;
+}
+
+.tooltip.right {
+ margin-left: 3px;
+}
+
+.tooltip.bottom {
+ margin-top: 3px;
+}
+
+.tooltip.left {
+ margin-left: -3px;
+}
+
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000000;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-top-color: #000000;
+ border-width: 5px 5px 0;
+}
+
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-right-color: #000000;
+ border-width: 5px 5px 5px 0;
+}
+
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-left-color: #000000;
+ border-width: 5px 0 5px 5px;
+}
+
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-bottom-color: #000000;
+ border-width: 0 5px 5px;
+}
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1010;
+ display: none;
+ width: 236px;
+ padding: 1px;
+ background-color: #ffffff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+}
+
+.popover.top {
+ margin-bottom: 10px;
+}
+
+.popover.right {
+ margin-left: 10px;
+}
+
+.popover.bottom {
+ margin-top: 10px;
+}
+
+.popover.left {
+ margin-right: 10px;
+}
+
+.popover-title {
+ padding: 8px 14px;
+ margin: 0;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 18px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ -webkit-border-radius: 5px 5px 0 0;
+ -moz-border-radius: 5px 5px 0 0;
+ border-radius: 5px 5px 0 0;
+}
+
+.popover-content {
+ padding: 9px 14px;
+}
+
+.popover-content p,
+.popover-content ul,
+.popover-content ol {
+ margin-bottom: 0;
+}
+
+.popover .arrow,
+.popover .arrow:after {
+ position: absolute;
+ display: inline-block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.popover .arrow:after {
+ z-index: -1;
+ content: "";
+}
+
+.popover.top .arrow {
+ bottom: -10px;
+ left: 50%;
+ margin-left: -10px;
+ border-top-color: #ffffff;
+ border-width: 10px 10px 0;
+}
+
+.popover.top .arrow:after {
+ bottom: -1px;
+ left: -11px;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ border-width: 11px 11px 0;
+}
+
+.popover.right .arrow {
+ top: 50%;
+ left: -10px;
+ margin-top: -10px;
+ border-right-color: #ffffff;
+ border-width: 10px 10px 10px 0;
+}
+
+.popover.right .arrow:after {
+ bottom: -11px;
+ left: -1px;
+ border-right-color: rgba(0, 0, 0, 0.25);
+ border-width: 11px 11px 11px 0;
+}
+
+.popover.bottom .arrow {
+ top: -10px;
+ left: 50%;
+ margin-left: -10px;
+ border-bottom-color: #ffffff;
+ border-width: 0 10px 10px;
+}
+
+.popover.bottom .arrow:after {
+ top: -1px;
+ left: -11px;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+ border-width: 0 11px 11px;
+}
+
+.popover.left .arrow {
+ top: 50%;
+ right: -10px;
+ margin-top: -10px;
+ border-left-color: #ffffff;
+ border-width: 10px 0 10px 10px;
+}
+
+.popover.left .arrow:after {
+ right: -1px;
+ bottom: -11px;
+ border-left-color: rgba(0, 0, 0, 0.25);
+ border-width: 11px 0 11px 11px;
+}
+
+.thumbnails {
+ margin-left: -20px;
+ list-style: none;
+ *zoom: 1;
+}
+
+.thumbnails:before,
+.thumbnails:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.thumbnails:after {
+ clear: both;
+}
+
+.row-fluid .thumbnails {
+ margin-left: 0;
+}
+
+.thumbnails > li {
+ float: left;
+ margin-bottom: 20px;
+ margin-left: 20px;
+}
+
+.thumbnail {
+ display: block;
+ padding: 4px;
+ line-height: 20px;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+
+a.thumbnail:hover {
+ border-color: #0088cc;
+ -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+ -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+ box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+}
+
+.thumbnail > img {
+ display: block;
+ max-width: 100%;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.thumbnail .caption {
+ padding: 9px;
+ color: #555555;
+}
+
+.label,
+.badge {
+ font-size: 11.844px;
+ font-weight: bold;
+ line-height: 14px;
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ white-space: nowrap;
+ vertical-align: baseline;
+ background-color: #999999;
+}
+
+.label {
+ padding: 1px 4px 2px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.badge {
+ padding: 1px 9px 2px;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
+ border-radius: 9px;
+}
+
+a.label:hover,
+a.badge:hover {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.label-important,
+.badge-important {
+ background-color: #b94a48;
+}
+
+.label-important[href],
+.badge-important[href] {
+ background-color: #953b39;
+}
+
+.label-warning,
+.badge-warning {
+ background-color: #f89406;
+}
+
+.label-warning[href],
+.badge-warning[href] {
+ background-color: #c67605;
+}
+
+.label-success,
+.badge-success {
+ background-color: #468847;
+}
+
+.label-success[href],
+.badge-success[href] {
+ background-color: #356635;
+}
+
+.label-info,
+.badge-info {
+ background-color: #3a87ad;
+}
+
+.label-info[href],
+.badge-info[href] {
+ background-color: #2d6987;
+}
+
+.label-inverse,
+.badge-inverse {
+ background-color: #333333;
+}
+
+.label-inverse[href],
+.badge-inverse[href] {
+ background-color: #1a1a1a;
+}
+
+.btn .label,
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+
+.btn-mini .label,
+.btn-mini .badge {
+ top: 0;
+}
+
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@-moz-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@-ms-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@-o-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+.progress {
+ height: 20px;
+ margin-bottom: 20px;
+ overflow: hidden;
+ background-color: #f7f7f7;
+ background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+ background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
+ background-repeat: repeat-x;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+
+.progress .bar {
+ float: left;
+ width: 0;
+ height: 100%;
+ font-size: 12px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #0e90d2;
+ background-image: -moz-linear-gradient(top, #149bdf, #0480be);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+ background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+ background-image: -o-linear-gradient(top, #149bdf, #0480be);
+ background-image: linear-gradient(to bottom, #149bdf, #0480be);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transition: width 0.6s ease;
+ -moz-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+
+.progress .bar + .bar {
+ -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+}
+
+.progress-striped .bar {
+ background-color: #149bdf;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ -moz-background-size: 40px 40px;
+ -o-background-size: 40px 40px;
+ background-size: 40px 40px;
+}
+
+.progress.active .bar {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -moz-animation: progress-bar-stripes 2s linear infinite;
+ -ms-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+
+.progress-danger .bar,
+.progress .bar-danger {
+ background-color: #dd514c;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
+}
+
+.progress-danger.progress-striped .bar,
+.progress-striped .bar-danger {
+ background-color: #ee5f5b;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-success .bar,
+.progress .bar-success {
+ background-color: #5eb95e;
+ background-image: -moz-linear-gradient(top, #62c462, #57a957);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
+ background-image: -webkit-linear-gradient(top, #62c462, #57a957);
+ background-image: -o-linear-gradient(top, #62c462, #57a957);
+ background-image: linear-gradient(to bottom, #62c462, #57a957);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
+}
+
+.progress-success.progress-striped .bar,
+.progress-striped .bar-success {
+ background-color: #62c462;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-info .bar,
+.progress .bar-info {
+ background-color: #4bb1cf;
+ background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
+}
+
+.progress-info.progress-striped .bar,
+.progress-striped .bar-info {
+ background-color: #5bc0de;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-warning .bar,
+.progress .bar-warning {
+ background-color: #faa732;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(to bottom, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+}
+
+.progress-warning.progress-striped .bar,
+.progress-striped .bar-warning {
+ background-color: #fbb450;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.accordion {
+ margin-bottom: 20px;
+}
+
+.accordion-group {
+ margin-bottom: 2px;
+ border: 1px solid #e5e5e5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.accordion-heading {
+ border-bottom: 0;
+}
+
+.accordion-heading .accordion-toggle {
+ display: block;
+ padding: 8px 15px;
+}
+
+.accordion-toggle {
+ cursor: pointer;
+}
+
+.accordion-inner {
+ padding: 9px 15px;
+ border-top: 1px solid #e5e5e5;
+}
+
+.carousel {
+ position: relative;
+ margin-bottom: 20px;
+ line-height: 1;
+}
+
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+
+.carousel .item {
+ position: relative;
+
+ -webkit-transition: 0.6s ease-in-out left;
+ -moz-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
+}
+
+.carousel .item > img {
+ display: block;
+ line-height: 1;
+}
+
+.carousel .active,
+.carousel .next,
+.carousel .prev {
+ display: block;
+}
+
+.carousel .active {
+ left: 0;
+}
+
+.carousel .next,
+.carousel .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+
+.carousel .next {
+ left: 100%;
+}
+
+.carousel .prev {
+ left: -100%;
+}
+
+.carousel .next.left,
+.carousel .prev.right {
+ left: 0;
+}
+
+.carousel .active.left {
+ left: -100%;
+}
+
+.carousel .active.right {
+ left: 100%;
+}
+
+.carousel-control {
+ position: absolute;
+ top: 40%;
+ left: 15px;
+ width: 40px;
+ height: 40px;
+ margin-top: -20px;
+ font-size: 60px;
+ font-weight: 100;
+ line-height: 30px;
+ color: #ffffff;
+ text-align: center;
+ background: #222222;
+ border: 3px solid #ffffff;
+ -webkit-border-radius: 23px;
+ -moz-border-radius: 23px;
+ border-radius: 23px;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+
+.carousel-control.right {
+ right: 15px;
+ left: auto;
+}
+
+.carousel-control:hover {
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: 15px;
+ background: #333333;
+ background: rgba(0, 0, 0, 0.75);
+}
+
+.carousel-caption h4,
+.carousel-caption p {
+ line-height: 20px;
+ color: #ffffff;
+}
+
+.carousel-caption h4 {
+ margin: 0 0 5px;
+}
+
+.carousel-caption p {
+ margin-bottom: 0;
+}
+
+.hero-unit {
+ padding: 60px;
+ margin-bottom: 30px;
+ background-color: #eeeeee;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.hero-unit h1 {
+ margin-bottom: 0;
+ font-size: 60px;
+ line-height: 1;
+ letter-spacing: -1px;
+ color: inherit;
+}
+
+.hero-unit p {
+ font-size: 18px;
+ font-weight: 200;
+ line-height: 30px;
+ color: inherit;
+}
+
+.pull-right {
+ float: right;
+}
+
+.pull-left {
+ float: left;
+}
+
+.hide {
+ display: none;
+}
+
+.show {
+ display: block;
+}
+
+.invisible {
+ visibility: hidden;
+}
+
+.affix {
+ position: fixed;
+}
diff --git a/app/assets/stylesheets/bootstrap.css.erb b/app/assets/stylesheets/bootstrap.css.erb.backup20120913
similarity index 99%
rename from app/assets/stylesheets/bootstrap.css.erb
rename to app/assets/stylesheets/bootstrap.css.erb.backup20120913
index 24fbaabc1..e754a9709 100644
--- a/app/assets/stylesheets/bootstrap.css.erb
+++ b/app/assets/stylesheets/bootstrap.css.erb.backup20120913
@@ -3039,7 +3039,7 @@ button.btn.small, input[type="submit"].btn.small {
}
.navbar-search .search-query {
padding: 4px 9px;
- font-family: Helvetica, Arial, sans-serif;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
font-weight: normal;
line-height: 1;
@@ -3222,8 +3222,8 @@ button.btn.small, input[type="submit"].btn.small {
color: #333333;
}
.pagination {
- height: 36px;
- margin: 18px 0;
+ height: 36px;
+ margin: 18px 0;
}
.pagination ul {
display: inline-block;
@@ -3274,7 +3274,7 @@ button.btn.small, input[type="submit"].btn.small {
background-color: #FFFFFF;
}
.pagination a:hover, .pagination .active a {
- background-color: #e8e8e8;
+ background-color: #f5f5f5;
}
.pagination .active a {
color: #999999;
diff --git a/app/assets/stylesheets/desktop.css b/app/assets/stylesheets/desktop.css
new file mode 100644
index 000000000..226afb8f1
--- /dev/null
+++ b/app/assets/stylesheets/desktop.css
@@ -0,0 +1,14 @@
+/*
+ *This is a manifest file that'll automatically include all the stylesheets available in this directory
+ *and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
+ *the top of the compiled file, but it's generally better to create a new file per style scope.
+ *= require style
+ *= require bootstrap
+ *= require bootstrap-orbit
+ *= require jquery.miniColors
+ *= require font-awesome
+ *= require desktopmain
+ *= require desktopmedia
+ *= require orbitTimeline
+ *= require orbit-bar
+*/
\ No newline at end of file
diff --git a/app/assets/stylesheets/desktopmain.css b/app/assets/stylesheets/desktopmain.css
new file mode 100644
index 000000000..8f591e1fb
--- /dev/null
+++ b/app/assets/stylesheets/desktopmain.css
@@ -0,0 +1,757 @@
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+
+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, 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,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+#container input, #container textarea, #container select, #container input:focus, #container textarea:focus {
+ border-radius: 0;
+ box-shadow: none;
+ font: inherit;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+body {
+ line-height: 1;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+/* basic setting */
+body {
+ font-family: Cuprum, Arial, "Sans Serif";
+ font-size: 12px;
+ background-color: #000;
+ }
+a, a:hover { text-decoration: none; color: #666; }
+a:focus { outline: none; }
+/* desktop layout */
+#container {
+ margin: 48px 0 0 156px;
+ }
+#header {
+ padding: 0 0 12px 0;
+ min-width: 800px;
+ }
+#side {
+ width: 60px;
+ height: 516px;
+ position: absolute;
+ margin-right: 96px;
+ top: 120px;
+ left: 0;
+ z-index: 10;
+ }
+#holder {
+ /*overflow: hidden;
+ overflow-x: auto;*/
+ height: 516px;
+ width: auto;
+ position: relative;
+ }
+#rwidget {
+ height: 516px;
+ }
+.widget_fn {
+ display: block;
+ overflow: hidden;
+ }
+.widget_icon {
+ display: block;
+ width: 30px;
+ height: 30px;
+ margin: 15px 0 0 15px;
+ }
+.docklist {
+
+ }
+.docklist li {
+ position: relative;
+ }
+.dock_child {
+ display: none;
+ overflow: hidden;
+ position: absolute;
+ left: 60px;
+ top: 0;
+ }
+.docklist > li:hover .dock_child { display: block; }
+.dock_item { float: left; }
+.fn_des.admtxt {
+ line-height: 60px;
+ padding: 0 6px;
+ font-size: 15px;
+ position: absolute;
+ min-width: 48px;
+ text-align: center;
+ white-space: nowrap;
+ display: none;
+ }
+
+.ini_input {
+ margin: 0;
+ padding: 0;
+ border: none;
+ }
+.ini_input:focus { outline: none; }
+#search_app { position: relative; background-color: #fff; }
+#search_app .form {
+ position: absolute;
+ left: 0;
+ top: 2px;
+ padding: 2px 12px;
+ width: 192px;
+ height: 28px;
+ line-height: 28px;
+ background: none;
+ }
+#search_app .submit {
+ position: absolute;
+ right: 2px;
+ top: 2px;
+ width: 32px;
+ height: 32px;
+ overflow: hidden;
+ text-indent: -999px;
+ cursor: pointer;
+ }
+.section_label {
+ float: left;
+ width: 132px;
+ height:516px;
+ }
+.section_label li { font-size: 15px; }
+.section_label li:first-child { font-size: 21px; }
+
+
+.appname {
+ font-size: 15px;
+ height: 30px;
+ line-height: 30px;
+ overflow: hidden;
+ cursor: default;
+ z-index: 3;
+ }
+.w1.h1 .appname { text-align: center; }
+.w2.h2 .appname { font-size: 21px; }
+.appicon {
+ display: block;
+ width: 60px;
+ height: 60px;
+ margin: 0 auto;
+ position: relative;
+ }
+#sections .appicon {
+ width: 30px;
+ height: 30px;
+ float: left;
+ margin-right: 6px;
+}
+.appholder {
+ position: relative;
+ z-index: 2;
+ }
+.holder_f .appholder {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ padding: 0;
+ left: 0;
+ top: 0;
+ }
+.holder_f .appname { display: none; }
+.dtitle {
+ font-size: 30px;
+ line-height: 60px;
+ float: left;
+ margin: 0 12px 0 0;
+ position: relative;
+ z-index: 9;
+ }
+/*.section_slc { width: 252px; }*/
+
+.admbg { background-color: #fff; }
+.admbg2 { background-color: #ddd; }
+.admtxt { color: #666; }
+.admtxt:hover { color: #666; }
+.hfn {
+ font-size: 15px;
+ line-height: 36px;
+ float: left;
+ margin: 12px 12px 0 0;
+ position: relative;
+ }
+.thmtxt { position: relative; }
+.tile {
+ display: block;
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 0;
+ }
+
+/* panel */
+#panel_l { background-color: #f0f0f0; float: left; }
+#panel_r { margin-left: 252px; position: relative;}
+
+/* simple dropdown menu */
+.sdm { position: relative; }
+.sdm_t {
+ cursor: default;
+ transition: all 0.3s ease;
+ -webkit-transition: all 0.3s ease;
+ -moz-transition: all 0.3s ease;
+}
+.sdm:hover .sdm_o { display: block; }
+.sdm_o {
+ display: none;
+ position: absolute;
+ z-index: 9;
+ left: 0;
+ top: 60px;
+ font-size: 15px;
+ }
+.sdm_o li { border-top: solid 1px #f2f2f2; }
+.sdm_o li:first-child { border: none; }
+.sdm_o a { display: block; }
+.sdm_o .admtxt { display: block; line-height: 36px; }
+
+/* with indicator */
+.sdm_mdr .sdm_t {
+ padding-right: 12px;
+}
+.sdm_mdr .mdr {
+ position: absolute;
+ right: 0;
+}
+
+/* simple menu */
+.s_menu { font-size: 15px; line-height: 36px; }
+.s_menu li { border-top: solid 1px #ddd; }
+.s_menu li:first-child { border: none; }
+.s_menu a { display: block; }
+
+/* simple tabs */
+.s_tab { font-size: 15px; line-height: 36px; }
+.stb_h {}
+.stb_v {}
+.s_tab ul { overflow: hidden; }
+.s_tab li { float: left; }
+.s_tab a { display: block; }
+.s_tab .admbg { background-color: #f0f0f0; }
+.st_c { display: none; }
+.st_c:first-child { display: block; }
+
+/* header drop menu */
+.sdm_mdr .sdm_o { top: 36px; }
+
+/* tool bar */
+.toolbar {
+ background-color: #f0f0f0;
+ font-size: 15px;
+ line-height: 36px;
+ position: relative;
+ z-index: 9;
+}
+.toolbar .sdm, .toolbar .fn_g { display: inline-block; }
+.toolbar .sdm_o { top: 36px; background-color: #f0f0f0; }
+.toolbar button {
+ border: none;
+ outline: none;
+ padding: 0 16px;
+ margin: 0;
+ font-family: inherit;
+ font-size: 15px;
+ vertical-align: top;
+}
+
+
+/* Setting Page */
+.theme_list {}
+.theme_list .ssl_item, .stock_wallpaper .ssl_item {
+ display: inline-block;
+ vertical-align: top;
+ margin: 0 0 12px 0;
+ padding: 6px 0px;
+ width: 132px;
+ text-align: center;
+ cursor: pointer
+ }
+.theme_thumb, .stock_wallpaper img { border: solid 1px #fff; width: 120px; margin: 0 auto; }
+.theme_thumb img, .stock_wallpaper img { display: block; }
+.theme_name { font-size: 15px; padding: 8px 6px; display: block; }
+.theme_preview { width: 528px; height: 150px; line-height: 36px; font-size: 15px; }
+.theme_plate { overflow: hidden; }
+.theme_plate > div { float: left; margin-right: 12px; }
+.theme_plate > div:first-child { margin-right: 48px;}
+.stock_wallpaper { }
+.stock_wallpaper .ssl_item { margin-bottom: 6px; }
+.stock_wallpaper img { }
+
+.s_title { font-size: 15px; line-height: 60px; text-align: left; }
+.s_subtitle {
+ font-size: 13px;
+ line-height: 1.5em;
+ color: #ccc;
+ padding: 12px 0 24px 0;
+}
+.s_action {
+ padding: 24px 0;
+ margin-top: 12px;
+ overflow: hidden;
+ border-top: solid 1px #eee;
+ background-color: #fff;
+}
+.setting_btn {
+ display: block;
+ float: right;
+ font-size: 15px;
+ line-height: 36px;
+ text-align: center;
+}
+
+/* theme color opacity */
+.op10 { opacity: 1; }
+.op09 { opacity: 0.9; }
+.op08 { opacity: 0.8; }
+.op07 { opacity: 0.7; }
+.op06 { opacity: 0.6; }
+.op05 { opacity: 0.5; }
+.op04 { opacity: 0.4; }
+.op03 { opacity: 0.3; }
+.op02 { opacity: 0.2; }
+.op01 { opacity: 0.1; }
+.op00 { opacity: 0; }
+
+/* box set */
+.w1 { width: 96px; }
+.w2 { width: 228px; }
+.w4 { width: 488px; }
+.wh1 { width: 30px; }
+.wh2 { width: 36px; }
+.wh3 { width: 60px; }
+.w100 { width: 100%; }
+.pw { width: 540px; }
+
+.h1 { height: 96px; }
+.h2 { height: 228px; }
+.h4 { height: 488px; }
+.hh1 { height: 30px; }
+.hh2 { height: 36px; }
+.hh3 { height: 60px; }
+.ph { height: 516px; }
+
+.hp { padding-left: 12px; padding-right: 12px; }
+.vp { padding-top: 12px; padding-bottom: 12px; }
+.element {
+ margin: 0 12px 12px 0;
+ float: left;
+ position: relative;
+ /*display:inline-block;*/
+ }
+.group{
+ float: left;
+ margin-right: 24px;
+ /*max-width: 800px;*/
+ /*max-height:540px;*/
+}
+.group_search{
+ float: left;
+ margin-right: 36px;
+
+}
+.search_result{
+ float: left;
+ margin-right: 24px;
+ max-width: 340px;
+}
+.g_sep { width: 11px; border-left: solid 1px #fff; }
+
+
+.clear { clear: both; }
+
+/* tiny scrollbar */
+.tinycanvas { overflow: hidden; position: relative; height: 100%; }
+.tinycanvas .viewport { width: auto; height: 100%; overflow: hidden; position: relative; }
+.tinycanvas .overview { position: absolute; left: 0; top: 0; min-width: 100%; }
+.tinycanvas .scrollbar { position: absolute; z-index: 9; }
+.tinycanvas .scrollbar.sb_h { left: 0; bottom: 0; height: 6px; }
+.tinycanvas .scrollbar.sb_v { right: 0; top: 0; width: 6px; }
+.tinycanvas .track { height: 100%; width: 6px; position: relative; }
+.tinycanvas .thumb { height: 6px; width: 6px; cursor: pointer; overflow: hidden; position: absolute; top: 0; }
+.tinycanvas .thumb .end { overflow: hidden; height: 6px; width: 6px; }
+.tinycanvas .scrollbar.disable{ display: none; }
+
+/* Orbit Notification */
+#orbitnote {
+ position: fixed;
+ top: 0;
+ left: 50%;
+ margin-left: -206px;
+ z-index: 99999;
+ width: 400px;
+ padding: 0 6px 6px 6px;
+ background-color: #000;
+ background-color: rgba(0,0,0,0.6);
+}
+.note_holder {
+ background-color: #f3f3f3;
+ border: solid 1px #fff;
+ border-top: none;
+ overflow: hidden;
+ padding: 24px 24px;
+}
+.note_type { float: left; }
+.note_type img { display: block; }
+.note_message {
+ color: #333;
+ margin: 10px 0 0 48px;
+ font-size: 15px;
+}
+
+/* Orbit Dialogue */
+#orbitdiag {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ z-index: 9;
+}
+#orbitdiag .tile { background-color: #000; }
+.diag_holder { background-color: #000; }
+.diag_holder_inner {
+ width: 600px;
+ margin: 200px auto 0 auto;
+ position: relative;
+ padding: 30px 0;
+}
+.diag_message {
+ color: #fff;
+ font-size: 18px;
+ padding: 30px 0;
+}
+.diag_action { clear: both; text-align: right; }
+.diag_btn {
+ display: inline-block;
+ line-height: 36px;
+ text-align: center;
+ font-size: 15px;
+ margin: 0 6px;
+}
+.diag_btn:hover { outline: solid 2px #fff; }
+
+/* tinygrid */
+.s_grid_con { width: 410px; }
+.s_grid_row { overflow: hidden; margin-bottom: 12px; }
+.s_grid_row .s_grid:first-child { margin-left: 0; }
+.s_grid {
+ float: left;
+ margin: 0 0 0 10px;
+}
+.s_grid_con .s_grid_1 { width: 60px; }
+.s_grid_con .s_grid_2 { width: 130px; }
+.s_grid_con .s_grid_3 { width: 200px; }
+.s_grid_con .s_grid_4 { width: 270px; }
+.s_grid_con .s_grid_5 { width: 340px; }
+.s_grid_con .s_grid_6 { width: 410px; }
+
+/* simple slider */
+/*.s_slider { display: inline-block; float: none; vertical-align: middle; }
+.s_slider > .s_grid { display: inline-block; float: none; vertical-align: middle; }
+.s_slider_holder {
+ position: absolute;
+}
+.s_slider_c {
+ position: relative;
+ height: 6px;
+ background-color: #ddd;
+ margin-right: 5px;
+}
+.s_slider_c .ui-slider-handle {
+ position: absolute;
+ width: 10px;
+ height: 16px;
+ margin: -5px 0 0 0;
+ background-color: #333;
+}
+.s_slider_c .ui-slider-range {
+ position: absolute;
+ top: 0;
+ height: 100%;
+ background-color: red;
+ display: block;
+}*/
+
+/* simple form */
+
+.s_form { font-size: 15px; }
+.s_form li { overflow: hidden; padding: 6px; margin-bottom: 12px; position: relative; }
+.s_form .s_grid_row { padding: 3px; margin-bottom: 6px; }
+.s_form label {
+ font-size: 13px;
+ display: inline-block;
+ vertical-align: middle;
+ width: 100px;
+ margin-right: 24px;
+ color: #777;
+}
+.s_form input[type=text], .s_form input[type=password], .s_form textarea{
+ outline: solid 3px #f6f6f6;
+ border: solid 1px #eee;
+ font-size: 18px;
+ font-family: Arial !important;
+ margin: 0;
+ padding: 6px;
+ transition: all 0.3s ease;
+ -webkit-transition: all 0.3s ease;
+ -moz-transition: all 0.3s ease;
+}
+.s_form select { font-family: Arial !important; padding: 6px; height: auto; }
+.s_form input[type=file] { margin: 0px; vertical-align: baseline; }
+.s_form input[type=text]:focus, .s_form input[type=password]:focus, .s_form textarea:focus {
+ background-color: #333;
+ color: #fff;
+}
+.s_form textarea { resize: none; }
+.check_box_g {
+ padding: 4px 8px;
+ outline: solid 1px #eee;
+}
+.check_box_g > label {
+ font-size: 15px;
+ display: block;
+ padding: 4px 0;
+}
+.check_box_g li {
+ margin: 0 6px 6px 0;
+ padding: 0;
+}
+.check_box_g li, .check_box_g li > * {
+ display: inline-block;
+ vertical-align: middle;
+}
+.check_box_g label {
+ width: auto;
+ margin: 0;
+}
+.check_box_g li label { padding-left: 4px; font-family: Arial; }
+.s_form .input_append {
+ position: absolute;
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+ right: 5px;
+ top: 4px;
+ display: block;
+ background-color: #fff;
+}
+.s_form.s_grid_con { width: 416px; }
+.s_form .s_grid_row { width: 410px; }
+.s_form .s_grid_row .s_grid:first-child { margin-left: 0; }
+.s_form input[type=text].s_grid, .s_form input[type=passowrd].s_grid, .s_form textarea.s_grid, .s_form label.s_grid { float: none; display: inline-block; margin-left: 10px; }
+.s_form input[type=text].s_grid_1, .s_form input[type=passowrd].s_grid_1, .s_form textarea.s_grid_1 { width: 46px; }
+.s_form input[type=text].s_grid_2, .s_form input[type=passowrd].s_grid_2, .s_form textarea.s_grid_2 { width: 116px; }
+.s_form input[type=text].s_grid_3, .s_form input[type=passowrd].s_grid_3, .s_form textarea.s_grid_3 { width: 186px; }
+.s_form input[type=text].s_grid_4, .s_form input[type=passowrd].s_grid_4, .s_form textarea.s_grid_4 { width: 256px; }
+.s_form input[type=text].s_grid_5, .s_form input[type=passowrd].s_grid_5, .s_form textarea.s_grid_5 { width: 326px; }
+.s_form input[type=text].s_grid_6, .s_form input[type=passowrd].s_grid_6, .s_form textarea.s_grid_6 { width: 396px; }
+.s_form select.s_grid_1 { width: 60px; }
+.s_form select.s_grid_2 { width: 130px; }
+.s_form select.s_grid_3 { width: 200px; }
+.s_form select.s_grid_4 { width: 270px; }
+.s_form select.s_grid_5 { width: 340px; }
+.s_form select.s_grid_6 { width: 410px; }
+
+
+
+#group_wrapper {}
+.grp { height:528px; }
+.g_col {
+ height: 516px;
+ float: left;
+}
+.g_col_w1 { width: 132px; }
+.g_col_w2 { width: 264px; }
+.ui-sortable-placeholder { background-color: rgba(0,0,0,0.2); visibility: visible !important; }
+
+/* list item */
+.list_t_item { padding: 2px; overflow: hidden; }
+.list_t_title {
+ font-size: 15px;
+ font-family: Arial;
+ margin-bottom: 10px;
+ color: #333;
+}
+.list_t_des {
+ font-size: 13px;
+ line-height: 1.5em;
+ color: #999;
+ font-family: Arial, sans-serif;
+ margin-bottom: 10px;
+}
+
+/* Connection Page */
+#connection_setting { height: 492px; }
+#connection_setting .s_form {
+ float: left;
+ margin: 0 12px 0 0;
+ padding-left: 24px;
+ height: 100%;
+ border-left: solid 1px #ddd;
+}
+#connection_setting .s_form:first-child { padding-left: 0; border: none; }
+#connection_setting .s_form label { line-height: 30px; }
+#connection_setting .s_form .c_icon, #connection_setting .s_form .c_name {
+ display: inline-block;
+ vertical-align: middle;
+}
+#connection_setting .s_form .c_name { padding: 0 12px; font-size: 18px; }
+#connection_setting .s_form input[type=text], #connection_setting .s_form input[type=password] { width: 202px; }
+#connection_setting .setting_btn { margin-left: 12px; }
+#connection_setting .setting_btn.disable { background-color: #ddd; cursor: default; }
+#connection_setting .c_status {
+ float: right;
+ padding: 6px;
+ font-size: 9px;
+ background-color: #eee;
+ color: #ccc;
+ font-family: Arial;
+ font-weight: bold;
+ -webkit-text-size-adjust: none;
+ transition: background-color 0.5s ease;
+ -moz-transition: background-color 0.5s ease;
+ -webkit-transition: background-color 0.5s ease;
+}
+#connection_setting .c_status_on { background-color: #51A351; color: #fff; }
+#connection_setting .c_info {
+ font-size: 18px;
+ font-family: Arial;
+ padding: 7px 6px;
+ background-color: #fcfcfc;
+ cursor: default;
+}
+
+/* Journal Papers */
+#paper_list, #paper_add { height: 456px; }
+#paper_list .g_col {
+ width: 410px;
+ height: 456px;
+ margin-left: 12px;
+ padding-left: 12px;
+ border-left: solid 1px #eee;
+}
+#paper_list .g_col:first-child { margin-left: 0; padding-left: 10px; border: none; }
+#paper_list .list_t .list_t_item { padding-left: 30px; height: 86px; }
+#paper_list .list_item_action {
+ font-size: 12px;
+ float: left;
+ margin-left: -30px;
+}
+.list_item_action a {
+ display: block;
+ width: 20px;
+ height: 20px;
+ line-height: 20px;
+ margin: 1px 1px 6px 1px;
+}
+.list_item_action .icon-star-empty { color: #999; font-size: 20px; }
+.list_item_action .icon-star { color: #faa732; font-size: 20px; }
+.list_item_action .icon-check-empty { color: #999; font-size: 20px; }
+.list_item_action .icon-check { color: #333; font-size: 20px; }
+
+/* Journal Paper Add */
+#paper_add .s_grid_con {
+ float: left;
+ height: 456px;
+ margin-left: 12px;
+ padding-left: 12px;
+ border-left: solid 1px #eee;
+}
+#paper_add .s_grid_con:first-child { margin-left: 0; padding-left: 0; border: none; }
+#paper_add .f_w { width: 336px; }
+#paper_add label { margin-right: 0; }
+
+/* App */
+.app_frame {
+ margin: 48px 96px 48px 156px;
+ min-width: 800px;
+ min-height: 588px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 9;
+}
+.app_frame .app_holder {
+ background-color: #fff;
+ position: absolute;
+ width: 100%;
+}
+.app_frame #header .icon-remove {
+ display: block;
+ float: right;
+ line-height: 60px;
+ font-size: 20px;
+ cursor: pointer;
+}
+
+/* Timeline */
+#orbit #holder > .admbg {
+ background-color: #efefef;
+}
+
+/*Tooltip popup */
+.desktop_toolpopup {
+ position: absolute;
+ z-index: 10px;
+ display: none;
+ padding: 12px;
+ cursor: default;
+ background-color: #fff;
+}
+.desktop_toolpopup span {
+ margin: 3px 0 3px 0;
+}
+.desktop_toolpopup h3 {
+}
+.desktop_toolpopup h2 {
+
+}
diff --git a/app/assets/stylesheets/desktopmedia.css b/app/assets/stylesheets/desktopmedia.css
new file mode 100644
index 000000000..e8fc7bfea
--- /dev/null
+++ b/app/assets/stylesheets/desktopmedia.css
@@ -0,0 +1,10 @@
+@media only screen and (min-width: 1240px){
+
+ #panel_r.pw { width: 800px; }
+
+}
+@media only screen and (min-width: 1900px){
+
+ #panel_r.pw { width: 1400px; }
+
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/font-awesome.css.erb b/app/assets/stylesheets/font-awesome.css.erb
new file mode 100644
index 000000000..00b36d146
--- /dev/null
+++ b/app/assets/stylesheets/font-awesome.css.erb
@@ -0,0 +1,303 @@
+/* Font Awesome
+ the iconic font designed for use with Twitter Bootstrap
+ -------------------------------------------------------
+ The full suite of pictographic icons, examples, and documentation
+ can be found at: http://fortawesome.github.com/Font-Awesome/
+
+ License
+ -------------------------------------------------------
+ The Font Awesome webfont, CSS, and LESS files are licensed under CC BY 3.0:
+ http://creativecommons.org/licenses/by/3.0/ A mention of
+ 'Font Awesome - http://fortawesome.github.com/Font-Awesome' in human-readable
+ source code is considered acceptable attribution (most common on the web).
+ If human readable source code is not available to the end user, a mention in
+ an 'About' or 'Credits' screen is considered acceptable (most common in desktop
+ or mobile software).
+
+ Contact
+ -------------------------------------------------------
+ Email: dave@davegandy.com
+ Twitter: http://twitter.com/fortaweso_me
+ Work: http://lemonwi.se co-founder
+
+ */
+@font-face {
+ font-family: "FontAwesome";
+ src: url(<%= asset_path 'fontawesome-webfont.eot' %>);
+ src: url(<%= asset_path 'fontawesome-webfont.eot?#iefix' %>) format('eot'), url(<%= asset_path 'fontawesome-webfont.woff' %>) format('woff'), url(<%= asset_path 'fontawesome-webfont.ttf' %>) format('truetype'), url(<%= asset_path 'fontawesome-webfont.svg#FontAwesome' %>) format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+/* Font Awesome styles
+ ------------------------------------------------------- */
+[class^="icon-"]:before, [class*=" icon-"]:before {
+ font-family: FontAwesome;
+ font-weight: normal;
+ font-style: normal;
+ display: inline-block;
+ text-decoration: inherit;
+}
+a [class^="icon-"], a [class*=" icon-"] {
+ display: inline-block;
+ text-decoration: inherit;
+}
+/* makes the font 33% larger relative to the icon container */
+.icon-large:before {
+ vertical-align: top;
+ font-size: 1.3333333333333333em;
+}
+.btn [class^="icon-"], .btn [class*=" icon-"] {
+ /* keeps button heights with and without icons the same */
+
+ line-height: .9em;
+}
+li [class^="icon-"], li [class*=" icon-"] {
+ display: inline-block;
+ width: 1.25em;
+ text-align: center;
+}
+li .icon-large[class^="icon-"], li .icon-large[class*=" icon-"] {
+ /* 1.5 increased font size for icon-large * 1.25 width */
+
+ width: 1.875em;
+}
+li[class^="icon-"], li[class*=" icon-"] {
+ margin-left: 0;
+ list-style-type: none;
+}
+li[class^="icon-"]:before, li[class*=" icon-"]:before {
+ text-indent: -2em;
+ text-align: center;
+}
+li[class^="icon-"].icon-large:before, li[class*=" icon-"].icon-large:before {
+ text-indent: -1.3333333333333333em;
+}
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+.icon-glass:before { content: "\f000"; }
+.icon-music:before { content: "\f001"; }
+.icon-search:before { content: "\f002"; }
+.icon-envelope:before { content: "\f003"; }
+.icon-heart:before { content: "\f004"; }
+.icon-star:before { content: "\f005"; }
+.icon-star-empty:before { content: "\f006"; }
+.icon-user:before { content: "\f007"; }
+.icon-film:before { content: "\f008"; }
+.icon-th-large:before { content: "\f009"; }
+.icon-th:before { content: "\f00a"; }
+.icon-th-list:before { content: "\f00b"; }
+.icon-ok:before { content: "\f00c"; }
+.icon-remove:before { content: "\f00d"; }
+.icon-zoom-in:before { content: "\f00e"; }
+
+.icon-zoom-out:before { content: "\f010"; }
+.icon-off:before { content: "\f011"; }
+.icon-signal:before { content: "\f012"; }
+.icon-cog:before { content: "\f013"; }
+.icon-trash:before { content: "\f014"; }
+.icon-home:before { content: "\f015"; }
+.icon-file:before { content: "\f016"; }
+.icon-time:before { content: "\f017"; }
+.icon-road:before { content: "\f018"; }
+.icon-download-alt:before { content: "\f019"; }
+.icon-download:before { content: "\f01a"; }
+.icon-upload:before { content: "\f01b"; }
+.icon-inbox:before { content: "\f01c"; }
+.icon-play-circle:before { content: "\f01d"; }
+.icon-repeat:before { content: "\f01e"; }
+
+/* \f020 doesn't work in Safari. all shifted one down */
+.icon-refresh:before { content: "\f021"; }
+.icon-list-alt:before { content: "\f022"; }
+.icon-lock:before { content: "\f023"; }
+.icon-flag:before { content: "\f024"; }
+.icon-headphones:before { content: "\f025"; }
+.icon-volume-off:before { content: "\f026"; }
+.icon-volume-down:before { content: "\f027"; }
+.icon-volume-up:before { content: "\f028"; }
+.icon-qrcode:before { content: "\f029"; }
+.icon-barcode:before { content: "\f02a"; }
+.icon-tag:before { content: "\f02b"; }
+.icon-tags:before { content: "\f02c"; }
+.icon-book:before { content: "\f02d"; }
+.icon-bookmark:before { content: "\f02e"; }
+.icon-print:before { content: "\f02f"; }
+
+.icon-camera:before { content: "\f030"; }
+.icon-font:before { content: "\f031"; }
+.icon-bold:before { content: "\f032"; }
+.icon-italic:before { content: "\f033"; }
+.icon-text-height:before { content: "\f034"; }
+.icon-text-width:before { content: "\f035"; }
+.icon-align-left:before { content: "\f036"; }
+.icon-align-center:before { content: "\f037"; }
+.icon-align-right:before { content: "\f038"; }
+.icon-align-justify:before { content: "\f039"; }
+.icon-list:before { content: "\f03a"; }
+.icon-indent-left:before { content: "\f03b"; }
+.icon-indent-right:before { content: "\f03c"; }
+.icon-facetime-video:before { content: "\f03d"; }
+.icon-picture:before { content: "\f03e"; }
+
+.icon-pencil:before { content: "\f040"; }
+.icon-map-marker:before { content: "\f041"; }
+.icon-adjust:before { content: "\f042"; }
+.icon-tint:before { content: "\f043"; }
+.icon-edit:before { content: "\f044"; }
+.icon-share:before { content: "\f045"; }
+.icon-check:before { content: "\f046"; }
+.icon-move:before { content: "\f047"; }
+.icon-step-backward:before { content: "\f048"; }
+.icon-fast-backward:before { content: "\f049"; }
+.icon-backward:before { content: "\f04a"; }
+.icon-play:before { content: "\f04b"; }
+.icon-pause:before { content: "\f04c"; }
+.icon-stop:before { content: "\f04d"; }
+.icon-forward:before { content: "\f04e"; }
+
+.icon-fast-forward:before { content: "\f050"; }
+.icon-step-forward:before { content: "\f051"; }
+.icon-eject:before { content: "\f052"; }
+.icon-chevron-left:before { content: "\f053"; }
+.icon-chevron-right:before { content: "\f054"; }
+.icon-plus-sign:before { content: "\f055"; }
+.icon-minus-sign:before { content: "\f056"; }
+.icon-remove-sign:before { content: "\f057"; }
+.icon-ok-sign:before { content: "\f058"; }
+.icon-question-sign:before { content: "\f059"; }
+.icon-info-sign:before { content: "\f05a"; }
+.icon-screenshot:before { content: "\f05b"; }
+.icon-remove-circle:before { content: "\f05c"; }
+.icon-ok-circle:before { content: "\f05d"; }
+.icon-ban-circle:before { content: "\f05e"; }
+
+.icon-arrow-left:before { content: "\f060"; }
+.icon-arrow-right:before { content: "\f061"; }
+.icon-arrow-up:before { content: "\f062"; }
+.icon-arrow-down:before { content: "\f063"; }
+.icon-share-alt:before { content: "\f064"; }
+.icon-resize-full:before { content: "\f065"; }
+.icon-resize-small:before { content: "\f066"; }
+.icon-plus:before { content: "\f067"; }
+.icon-minus:before { content: "\f068"; }
+.icon-asterisk:before { content: "\f069"; }
+.icon-exclamation-sign:before { content: "\f06a"; }
+.icon-gift:before { content: "\f06b"; }
+.icon-leaf:before { content: "\f06c"; }
+.icon-fire:before { content: "\f06d"; }
+.icon-eye-open:before { content: "\f06e"; }
+
+.icon-eye-close:before { content: "\f070"; }
+.icon-warning-sign:before { content: "\f071"; }
+.icon-plane:before { content: "\f072"; }
+.icon-calendar:before { content: "\f073"; }
+.icon-random:before { content: "\f074"; }
+.icon-comment:before { content: "\f075"; }
+.icon-magnet:before { content: "\f076"; }
+.icon-chevron-up:before { content: "\f077"; }
+.icon-chevron-down:before { content: "\f078"; }
+.icon-retweet:before { content: "\f079"; }
+.icon-shopping-cart:before { content: "\f07a"; }
+.icon-folder-close:before { content: "\f07b"; }
+.icon-folder-open:before { content: "\f07c"; }
+.icon-resize-vertical:before { content: "\f07d"; }
+.icon-resize-horizontal:before { content: "\f07e"; }
+
+.icon-bar-chart:before { content: "\f080"; }
+.icon-twitter-sign:before { content: "\f081"; }
+.icon-facebook-sign:before { content: "\f082"; }
+.icon-camera-retro:before { content: "\f083"; }
+.icon-key:before { content: "\f084"; }
+.icon-cogs:before { content: "\f085"; }
+.icon-comments:before { content: "\f086"; }
+.icon-thumbs-up:before { content: "\f087"; }
+.icon-thumbs-down:before { content: "\f088"; }
+.icon-star-half:before { content: "\f089"; }
+.icon-heart-empty:before { content: "\f08a"; }
+.icon-signout:before { content: "\f08b"; }
+.icon-linkedin-sign:before { content: "\f08c"; }
+.icon-pushpin:before { content: "\f08d"; }
+.icon-external-link:before { content: "\f08e"; }
+
+.icon-signin:before { content: "\f090"; }
+.icon-trophy:before { content: "\f091"; }
+.icon-github-sign:before { content: "\f092"; }
+.icon-upload-alt:before { content: "\f093"; }
+.icon-lemon:before { content: "\f094"; }
+.icon-phone:before { content: "\f095"; }
+.icon-check-empty:before { content: "\f096"; }
+.icon-bookmark-empty:before { content: "\f097"; }
+.icon-phone-sign:before { content: "\f098"; }
+.icon-twitter:before { content: "\f099"; }
+.icon-facebook:before { content: "\f09a"; }
+.icon-github:before { content: "\f09b"; }
+.icon-unlock:before { content: "\f09c"; }
+.icon-credit-card:before { content: "\f09d"; }
+.icon-rss:before { content: "\f09e"; }
+
+.icon-hdd:before { content: "\f0a0"; }
+.icon-bullhorn:before { content: "\f0a1"; }
+.icon-bell:before { content: "\f0a2"; }
+.icon-certificate:before { content: "\f0a3"; }
+.icon-hand-right:before { content: "\f0a4"; }
+.icon-hand-left:before { content: "\f0a5"; }
+.icon-hand-up:before { content: "\f0a6"; }
+.icon-hand-down:before { content: "\f0a7"; }
+.icon-circle-arrow-left:before { content: "\f0a8"; }
+.icon-circle-arrow-right:before { content: "\f0a9"; }
+.icon-circle-arrow-up:before { content: "\f0aa"; }
+.icon-circle-arrow-down:before { content: "\f0ab"; }
+.icon-globe:before { content: "\f0ac"; }
+.icon-wrench:before { content: "\f0ad"; }
+.icon-tasks:before { content: "\f0ae"; }
+
+.icon-filter:before { content: "\f0b0"; }
+.icon-briefcase:before { content: "\f0b1"; }
+.icon-fullscreen:before { content: "\f0b2"; }
+
+.icon-group:before { content: "\f0c0"; }
+.icon-link:before { content: "\f0c1"; }
+.icon-cloud:before { content: "\f0c2"; }
+.icon-beaker:before { content: "\f0c3"; }
+.icon-cut:before { content: "\f0c4"; }
+.icon-copy:before { content: "\f0c5"; }
+.icon-paper-clip:before { content: "\f0c6"; }
+.icon-save:before { content: "\f0c7"; }
+.icon-sign-blank:before { content: "\f0c8"; }
+.icon-reorder:before { content: "\f0c9"; }
+.icon-list-ul:before { content: "\f0ca"; }
+.icon-list-ol:before { content: "\f0cb"; }
+.icon-strikethrough:before { content: "\f0cc"; }
+.icon-underline:before { content: "\f0cd"; }
+.icon-table:before { content: "\f0ce"; }
+
+.icon-magic:before { content: "\f0d0"; }
+.icon-truck:before { content: "\f0d1"; }
+.icon-pinterest:before { content: "\f0d2"; }
+.icon-pinterest-sign:before { content: "\f0d3"; }
+.icon-google-plus-sign:before { content: "\f0d4"; }
+.icon-google-plus:before { content: "\f0d5"; }
+.icon-money:before { content: "\f0d6"; }
+.icon-caret-down:before { content: "\f0d7"; }
+.icon-caret-up:before { content: "\f0d8"; }
+.icon-caret-left:before { content: "\f0d9"; }
+.icon-caret-right:before { content: "\f0da"; }
+.icon-columns:before { content: "\f0db"; }
+.icon-sort:before { content: "\f0dc"; }
+.icon-sort-down:before { content: "\f0dd"; }
+.icon-sort-up:before { content: "\f0de"; }
+
+.icon-envelope-alt:before { content: "\f0e0"; }
+.icon-linkedin:before { content: "\f0e1"; }
+.icon-undo:before { content: "\f0e2"; }
+.icon-legal:before { content: "\f0e3"; }
+.icon-dashboard:before { content: "\f0e4"; }
+.icon-comment-alt:before { content: "\f0e5"; }
+.icon-comments-alt:before { content: "\f0e6"; }
+.icon-bolt:before { content: "\f0e7"; }
+.icon-sitemap:before { content: "\f0e8"; }
+.icon-umbrella:before { content: "\f0e9"; }
+.icon-paste:before { content: "\f0ea"; }
+
+.icon-user-md:before { content: "\f200"; }
diff --git a/app/assets/stylesheets/isotope.css b/app/assets/stylesheets/isotope.css
index 3e7bf739c..247fcf143 100644
--- a/app/assets/stylesheets/isotope.css
+++ b/app/assets/stylesheets/isotope.css
@@ -1,11 +1,15 @@
-/*isotope*/
-
#isotope {
margin-top: 2px;
}
.isotope-item {
z-index: 2;
}
+
+.isotope-hidden.isotope-item {
+ pointer-events: none;
+ z-index: 1;
+}
+
/**** Isotope CSS3 transitions ****/
.isotope,
@@ -39,104 +43,4 @@
-moz-transition-duration: 0s;
-o-transition-duration: 0s;
transition-duration: 0s;
-}
-.w-a {
- width: 398px;
-}
-.w-b {
- width: 812px;
-}
-.h-a {
- height: 315px;
-}
-.h-b {
- height: 703px;
-}
-.item {
- margin: 5px 0 15px 15px;
-}
-.item h3 {
- margin: 20px 0 5px;
-}
-.item h3 [class^="icons-"] {
- margin: 1px 5px 0 3px;
-}
-.item .detail {
- border: 1px solid rgba(0, 0, 0, 0.1);
- background-color: #FFFFFF;
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- box-shadow: 0 3px 3px rgba(0, 0, 0, 0.1);
- -webkit-box-shadow: 0 3px 3px rgba(0, 0, 0, 0.1);
-}
-.item .detail .totle {
- font-size: 50px;
- padding:10px 5px 30px 0;
- margin: 0;
- text-align: right;
- border-bottom:1px solid #d9d9d9;
-}
-.item .detail .totle span {
- display: block;
- font-size:18px;
- color: #333;
- padding-left: 5px;
- text-align:left;
- margin-bottom: -7px;
-}
-.item .detail .table {
- margin-bottom: 0;
-}
-.item .detail .table th, .item .detail .table td {
- border-top: none;
- border-bottom: 1px solid #DDDDDD;
-}
-.item .detail .table tr th {
- background-color: #F2F2F2;
- border-bottom: 1px solid #AAAAAA;
-}
-.item .detail .table tr td:first-child {
- color: #666;;
-}
-.item .detail .table tr td:last-child, .item .detail .table tr th:last-child {
- text-align:right;
- padding-right: 15px;
-}
-.item .h-a .my_scroll .viewport {
- height: 210px;
-}
-.item .h-b .my_scroll .viewport {
- height: 594px;
-}
-.item .isotope-hidden.isotope-item {
- pointer-events: none;
- z-index: 1;
-}
-.item .my_scroll {
- position: relative;
-}
-.item .my_scroll .scrollbar {
- right: 3px;
- top: 0;
- position: absolute;
- z-index: 10;
-}
-.item .my_scroll .track {
- background-color: transparent;
-}
-.detail.noStatistics {
- overflow: hidden;
-}
-.detail.noStatistics.h-a {
- height: 315px;
-}
-.detail.noStatistics.h-a .my_scroll .viewport {
- height: 280px;
-}
-.detail.noStatistics.h-b {
- height: 704px;
-}
-.detail.noStatistics.h-b .my_scroll .viewport {
- height: 670px;
}
\ No newline at end of file
diff --git a/app/assets/stylesheets/item.css b/app/assets/stylesheets/item.css
new file mode 100644
index 000000000..a71a3af1c
--- /dev/null
+++ b/app/assets/stylesheets/item.css
@@ -0,0 +1,79 @@
+.w-a {
+ width: 388px;
+}
+.w-b {
+ width: 802px;
+}
+.h-a {
+ height: 315px;
+}
+.h-b {
+ height: 699px;
+}
+.item {
+ margin: 5px 0 15px 15px;
+}
+.item h3 {
+ margin: 5px 0;
+}
+.item h3 [class^="icons-"] {
+ margin: 3px 5px 0 3px;
+}
+.item .detail {
+ border: 1px solid rgba(0, 0, 0, 0.1);
+ background-color: #FFFFFF;
+ border-radius: 5px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ box-shadow: 0 3px 3px rgba(0, 0, 0, 0.1);
+ -webkit-box-shadow: 0 3px 3px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 3px 3px rgba(0, 0, 0, 0.1);
+}
+.item .detail .totle {
+ font-size: 50px;
+ padding:10px 5px 20px 0;
+ margin: 0px;
+ text-align: right;
+ border-bottom:1px solid #d9d9d9;
+ line-height: 18px;
+}
+.item .detail .totle span {
+ display: block;
+ font-size:18px;
+ color: #333;
+ padding-left: 5px;
+ text-align:left;
+}
+.item .detail .table {
+ margin-bottom: 0;
+}
+.item .detail .table tr th {
+ background-color: #F2F2F2;
+ border-bottom: 1px solid #AAA;
+}
+.item .detail .table th, .item .detail .table td {
+ border-top: none;
+ border-bottom: 1px solid #DDDDDD;
+}
+.item .detail .table tr td:first-child {
+ color: #666;;
+}
+.item .detail .table tr td:last-child, .item .detail .table tr th:last-child {
+ text-align:right;
+}
+.item .h-a .my_scroll .viewport {
+ height: 248px;
+}
+.item .h-b .my_scroll .viewport {
+ height: 632px;
+}
+.item .my_scroll .track {
+ opacity: 0.7;
+ -moz-opacity: 0.7;
+ filter:alpha(opacity=7);
+}
+
+/*user-data*/
+.user-data .item {
+ margin: 5px 8px 15px;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/jquery.miniColors.css b/app/assets/stylesheets/jquery.miniColors.css
new file mode 100755
index 000000000..831da6f88
--- /dev/null
+++ b/app/assets/stylesheets/jquery.miniColors.css
@@ -0,0 +1,59 @@
+.miniColors-trigger {
+ height: 36px;
+ width: 36px;
+ border: solid 3px #e8e8e8;
+ vertical-align: middle;
+ margin: 0 6px 0 0;
+ display: inline-block;
+ outline: none;
+}
+
+.miniColors-selector {
+ position: absolute;
+ width: 175px;
+ height: 150px;
+ background: #FFF;
+ border: solid 1px #BBB;
+ padding: 5px;
+ z-index: 999999;
+}
+
+.miniColors-selector.black {
+ background: #222;
+ border-color: #222;
+}
+
+.miniColors-colors {
+ position: absolute;
+ top: 5px;
+ left: 5px;
+ width: 150px;
+ height: 150px;
+ background: url(miniColors/gradient.png) center no-repeat;
+ cursor: crosshair;
+}
+
+.miniColors-hues {
+ position: absolute;
+ top: 5px;
+ left: 160px;
+ width: 20px;
+ height: 150px;
+ background: url(miniColors/rainbow.png) center no-repeat;
+ cursor: crosshair;
+}
+
+.miniColors-colorPicker {
+ position: absolute;
+ width: 11px;
+ height: 11px;
+ background: url(miniColors/circle.gif) center no-repeat;
+}
+
+.miniColors-huePicker {
+ position: absolute;
+ left: -3px;
+ width: 26px;
+ height: 3px;
+ background: url(miniColors/line.gif) center no-repeat;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/list.css b/app/assets/stylesheets/list.css
index 52e26185d..2e87755ca 100644
--- a/app/assets/stylesheets/list.css
+++ b/app/assets/stylesheets/list.css
@@ -1,7 +1,13 @@
/*list*/
-.table th.select {
+.table th.select>span {
border-bottom:2px solid #0088CC;
+ display: block;
+ margin: 0 -8px;
+ padding: 0 8px;
+}
+#check_all {
+ margin-top: -20px;
}
.main-list {
margin-bottom: 0;
@@ -11,7 +17,7 @@
border-right: medium none;
}
.main-list thead th:last-child {
- border-right: none;
+ border-right: none !important;
}
.main-list .span1 {
min-width: 32px;
@@ -33,14 +39,21 @@
width: 350px;
left: -8px;
}
+.main-list tbody .quick-edit .nav .dropdown-menu {
+ margin: 0;
+}
.main-list tr:first-child td {
border-top: 1px solid #DDDDDD;
}
.main-list td {
background-color: #FFFFFF;
border-bottom: 1px solid #DDDDDD;
+ border-right: 1px solid #FFFFFF;
border-top: medium none;
}
+.main-list td:last-child {
+ border-right: none;
+}
.main-list .nav {
margin-top: 0;
margin-bottom: 3px;
@@ -51,10 +64,14 @@
}
.main-list tr.with_action:hover>td {
color: #333333;
+ border-right: 1px solid #E6E6E6;
background-color: #E6E6E6;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
}
+.main-list tr.with_action:hover>td:last-child {
+ border-right: none;
+}
.main-list tr.with_action:hover .hide {
display:block !important;
}
@@ -95,11 +112,11 @@
.table-label {
background-color: #F2F2F2;
position: relative;
+ border-bottom: 1px solid #e5e5e5;
}
.table-label .main-list thead th {
- background-color: #F2F2F2;
- border-right: 1px solid #DDDDDD;
- border-top: 1px solid #DDDDDD !important;
+ background-color: #FFFFFF;
+ border-right: 1px solid #e5e5e5;
line-height: 20px;
}
.route-group .route {
@@ -150,7 +167,7 @@ legend {
top: 30px;
z-index: 50;
}
-.subnav .nav > li:first-child > a, .subnav .nav > li:first-child > a:hover {
+.subnav .filter > li:first-child > a, .subnav .filter > li:first-child > a:hover {
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
@@ -178,6 +195,7 @@ legend {
padding: 0 8px;
vertical-align: inherit;
position: relative;
+ position/**/: static;
}
.sort-header th a {
display: block;
@@ -204,10 +222,11 @@ legend {
margin: 0;
padding: 10px;
bottom: 0;
- z-index: 2;
+ z-index: 10;
}
.form-fixed .btn {
margin-top: 4px;
+ margin-left: 5px;
}
.paginationFixed {
}
diff --git a/app/assets/stylesheets/list.css.backup120913 b/app/assets/stylesheets/list.css.backup120913
new file mode 100644
index 000000000..58167a128
--- /dev/null
+++ b/app/assets/stylesheets/list.css.backup120913
@@ -0,0 +1,237 @@
+/*list*/
+
+.table th.select>span {
+ border-bottom:2px solid #0088CC;
+ display: block;
+ margin: 0 -8px -8px;
+ padding: 0 8px 6px;
+}
+.main-list {
+ margin-bottom: 0;
+}
+.main-wrap>.main-list thead th {
+ background-color: transparent;
+ border-right: medium none;
+}
+.main-list thead th:last-child {
+ border-right: none !important;
+}
+.main-list .span1 {
+ min-width: 32px;
+}
+.main-list .span7 {
+ min-width: 300px;
+}
+.main-list .nav-pills > li > a {
+ border-radius: 5px 5px 5px 5px;
+ margin: 2px;
+ padding:5px;
+}
+.main-list tbody .quick-edit {
+ position:relative;
+ height:20px;
+}
+.main-list tbody .quick-edit .nav {
+ position: absolute;
+ width: 350px;
+ left: -8px;
+}
+.main-list tbody .quick-edit .nav .dropdown-menu {
+ margin: 0;
+}
+.main-list tr:first-child td {
+ border-top: 1px solid #DDDDDD;
+}
+.main-list td {
+ background-color: #FFFFFF;
+ border-bottom: 1px solid #DDDDDD;
+ border-right: 1px solid #FFFFFF;
+ border-top: medium none;
+}
+.main-list td:last-child {
+ border-right: none;
+}
+.main-list .nav {
+ margin-top: 0;
+ margin-bottom: 3px;
+}
+.main-list tr.with_action>td {
+ -webkit-transition: all 0.1s linear;
+ -moz-transition: all 0.1s linear;
+}
+.main-list tr.with_action:hover>td {
+ color: #333333;
+ border-right: 1px solid #E6E6E6;
+ background-color: #E6E6E6;
+ -webkit-transition: all 0.2s linear;
+ -moz-transition: all 0.2s linear;
+}
+.main-list tr.with_action:hover>td:last-child {
+ border-right: none;
+}
+.main-list tr.with_action:hover .hide {
+ display:block !important;
+}
+.main-list .label-group {
+ position: relative;
+ height: 40px;
+}
+.main-list .label-group .label {
+ margin-bottom: 1px;
+ display: inline-block;
+ padding: 0 3px;
+}
+.main-list .label-td {
+ height: 40px;
+ overflow: hidden;
+ position: absolute;
+ width: 100%;
+ left: 0;
+ z-index: 1;
+}
+.main-list .label-td:hover {
+ background-color: #fff;
+ height: auto;
+ padding: 7px;
+ left: -55px;
+ top: -8px;
+ border: 1px solid #333;
+ border-radius: 3px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ z-index: 5;
+ width: 160px;
+ min-height: 40px;
+}
+.qe-edit-div .table-condensed {
+ background-color: #F2F2F2;
+}
+.table-label {
+ background-color: #F2F2F2;
+ position: relative;
+ border-bottom: 1px solid #e5e5e5;
+}
+.table-label .main-list thead th {
+ background-color: #FFFFFF;
+ border-right: 1px solid #e5e5e5;
+ line-height: 20px;
+}
+.route-group .route {
+ padding: 0;
+}
+.route-group .route .breadcrumb {
+ border-width: 0!important;
+}
+.qe-block td {
+ height:auto;
+ padding: 0;
+ /*background-color: #dedede;*/
+}
+.qe-block legend {
+ padding-left: 8px;
+ margin-bottom: 0;
+ padding-bottom: 0;
+}
+.qe-block .control-group {
+ margin-bottom: 0;
+}
+.qe-block .controls, .qe-block .control-label {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.qe-block .table td, .qe-block .table th {
+ padding: 8px;
+}
+.qe-block .form-horizontal {
+ margin-bottom: 0;
+}
+.qe-block .form-actions {
+ margin-bottom: 0;
+}
+legend {
+ font-size: 15px;
+ line-height: 30px;
+ margin-bottom: 15px;
+ padding-bottom: 5px;
+}
+.subnav {
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+ border-left: none;
+ border-right: none;
+ position: fixed;
+ top: 30px;
+ z-index: 50;
+}
+.subnav .filter > li:first-child > a, .subnav .filter > li:first-child > a:hover {
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+}
+.dropdown-menu.tags {
+ max-width: none;
+}
+.dropdown-menu.tags .tags-cloud {
+ width: 300px;
+ padding:10px;
+}
+.dropdown-menu.tags .tags-cloud .active {
+ background-color: #0088CC;
+ color: #FFFFFF;
+}
+.dropdown-menu.tags .tags-cloud a {
+ display: inline-block;
+ margin-bottom: 3px;
+}
+.dropdown-menu.tags li:last-child a {
+ display: block;
+ text-align:center;
+}
+.sort-header th {
+ padding: 0 8px;
+ vertical-align: inherit;
+ position: relative;
+}
+.sort-header th a {
+ display: block;
+ padding: 10px 0;
+ white-space: nowrap;
+}
+.sort-header th a:hover {
+ text-decoration: none;
+}
+.list-remove {
+ position: absolute;
+ top: 0;
+ padding-top: 11px !important;
+ left: 25px;
+ font-size: 19px;
+ color: #333;
+}
+.list-remove:hover {
+ color: #333;
+ text-decoration: none;
+}
+.form-fixed {
+ position: fixed;
+ margin: 0;
+ padding: 10px;
+ bottom: 0;
+ z-index: 10;
+}
+.form-fixed .btn {
+ margin-top: 4px;
+ margin-left: 5px;
+}
+.paginationFixed {
+}
+.paginationFixed .pagination {
+ margin-top: 0 !important;
+}
+.member-list td:last-child {
+ position: relative;
+}
+.member-list td:last-child .gender {
+ border-radius: 0;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/member.css b/app/assets/stylesheets/member.css
new file mode 100644
index 000000000..436a9b6a6
--- /dev/null
+++ b/app/assets/stylesheets/member.css
@@ -0,0 +1,341 @@
+.gender {
+ position: absolute;
+ border-radius: 0 0 5px 0;
+ border-width: .5em;
+ margin: 0;
+ border-style: solid;
+ z-index: 10;
+ bottom: 0;
+ right: 0;
+}
+.gender.male {
+ border-color: transparent #41B1D5 #41B1D5 transparent;
+}
+.gender.female {
+ border-color: transparent #DB186E #DB186E transparent;
+}
+.user-info {
+ background-color: #FFFFFF;
+ padding: 30px 10px 0 20px;
+ top: 31px;
+ position: relative;
+ border-right: 1px solid #b8b8b8;
+ width: 330px;
+ position: fixed;
+ z-index: 1;
+ -webkit-box-shadow: 5px 0px 10px rgba(0,0,0,.15);
+ -moz-box-shadow: 5px 0px 10px rgba(0,0,0,.15);
+ box-shadow: 5px 0px 10px rgba(0,0,0,.15);
+}
+.user-info .gender {
+ border-color: #41B1D5 transparent transparent #41B1D5;
+ border-radius: 5px 0 0 0;
+ bottom: auto;
+ right: auto;
+}
+.user-info .brand {
+}
+.user-info .scrollbar {
+ right: -9px;
+}
+.user-info .brand .user-avatar {
+ margin-bottom: 10px;
+ margin-right: 10px;
+}
+.user-roles {
+ clear: both;
+}
+.user-roles .roles .table tr:first-child td {
+ border-top: none;
+}
+.user-roles .roles .table td:first-child {
+ text-align: right;
+}
+.user-roles .label-line {
+ position: relative;
+ text-align: center;
+}
+.user-roles .label-line hr {
+ position: absolute;
+ top: 50%;
+ width: 100%;
+ height: 4px;
+ border: none;
+ margin: -2px 0 0;
+}
+.user-roles .label-line span {
+ color: #343434;
+ font-size: 1.2em;
+ padding: 0 5px;
+ background-color: #FFF;
+ display: inline-block;
+ position: relative;
+}
+.user-roles .basic .label-line hr {
+ background-color: #e0e0e0;
+}
+.user-roles .teacher .label-line hr {
+ background-color: #186AB6;
+}
+.user-roles .student .label-line hr {
+ background-color: #F38C08;
+}
+.user-roles .staff .label-line hr {
+ background-color: #139E2F;
+}
+.user-avatar {
+ overflow: hidden;
+ width: 80px;
+ height: 80px;
+ border-radius: 5px;
+ box-shadow: 0 1px 3px rgba(0,0,0,.8);
+ margin-right: 10px;
+ margin-bottom: 10px;
+}
+.user-avatar .reflective {
+ background-image: url(img/reflective.png);
+ background-repeat: no-repeat;
+ background-position: 0;
+ height: 80px;
+ width: 80px;
+ position: absolute;
+}
+.user .user-avatar .reflective {
+ background-image: url(img/reflective.png);
+ background-repeat: no-repeat;
+ background-position: 0 -20px;
+ height: 80px;
+ width: 80px;
+ position: absolute;
+ top: 10px;
+ left: 10px;
+ opacity: 0;
+ -moz-opacity: 0;
+ filter:alpha(opacity=0);
+}
+.user:hover .user-avatar .reflective {
+ background-position: 0 0;
+ opacity: 1;
+ -moz-opacity: 1;
+ filter:alpha(opacity=10);
+}
+.user-name {
+ font-size: 1.5em;
+ color: #2d2d2d;
+ margin: 0 0 3px;
+ font-family: Helvetica, "微軟正黑體";
+}
+.user-mail {
+ font-size: 1em;
+ color: #A2A2A2;
+ margin: 0 0 3px;
+}
+.user-data {
+ padding: 60px 0 0;
+ margin: 0 0 0 360px;
+}
+.user-data .form-fixed {
+}
+.user-data .subnav {
+ top: 87px;
+ z-index: 1;
+}
+.user-data #module-nav {
+ margin-left: -20px;
+ position: fixed;
+ z-index: 1;
+ background-color: #FFFFFF;
+ top: 31px;
+ padding: 10px 20px 0;
+ -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, .16);
+ -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, .16);
+ box-shadow: 0px 0px 10px rgba(0, 0, 0, .16);
+}
+.user-data #module-nav ul {
+ margin-bottom: 10px;
+}
+.member-plugin-list {
+ margin-bottom: 30px;
+}
+.member-abstract, .member-large {
+ padding: 15px;
+}
+.member-abstract ul, .member-large ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.member-abstract>ul>li, .member-large>ul>li {
+ margin: 5px;
+ overflow: hidden;
+ border-radius: 5px;
+ box-shadow: 0 1px 3px rgba(0,0,0,.3);
+}
+.member-abstract .user *, .member-large .user * {
+ -webkit-transition: all .3s ease;
+ -moz-transition: all .3s ease;
+ -o-transition: all .3s ease;
+ transition: all .3s ease;
+}
+.member-abstract .user, .member-large .user {
+ background-color: #EDEDED;
+ padding: 10px;
+ position: relative;
+ border-radius: 0 0 5px 5px;
+ width: 360px;
+ -webkit-transition: all .3s ease;
+ -moz-transition: all .3s ease;
+ -o-transition: all .3s ease;
+ transition: all .3s ease;
+}
+.member-abstract .user:hover, .member-large .user:hover {
+ background-color: #333333;
+}
+.member-abstract .user:hover .user-name, .member-large .user:hover .user-name {
+ color: #DDD;
+}
+.member-abstract .user .user-meta {
+ margin-left: 90px;
+}
+.member-abstract .user .user-title span {
+ color: #5e5e5e;
+ font-size: 1.3em;
+ padding-right: 10px;
+}
+.member-abstract .user:hover .user-title span {
+ color: #AAA;
+}
+.member-abstract .user ul.user-itemborder {
+ margin-top: 8px;
+ border-top: 1px solid #D5D5D5;
+ padding: 4px 0 0;
+}
+.member-abstract .user ul.user-itemborder li, .member-abstract .user ul.user-itemborder li span {
+ color: #333;
+}
+.member-abstract .user:hover ul.user-itemborder {
+ color: #EDEDED;
+ border-top: 1px solid #666;
+}
+.member-abstract .user:hover ul.user-itemborder li, .member-abstract .user:hover ul.user-itemborder li span {
+ color: #EDEDED;
+}
+.member-abstract .user ul.user-itemborder li {
+ width: 33%;
+ font-size: 1.1em;
+ text-align: center;
+}
+.member-abstract .user ul.user-itemborder li span {
+ font-size: 13px;
+ font-weight: bold;
+ padding-right: 5px;
+}
+.member-large .user {
+ width: 80px;
+ min-height: 125px;
+}
+.member-large .user-avatar {
+ margin-right: 0;
+}
+.member-large .user-name {
+ font-weight: bold;
+ font-size: 1.1em;
+ width: 80px;
+ line-height: 18px;
+ padding-top: 5px;
+ text-align: center;
+}
+.rolesTag {
+ width: 100%;
+}
+.rolesTag td {
+ height: 6px;
+ background-color: #333;
+}
+.rolesTag td.teacher {
+ background-color: #186AB6;
+}
+.rolesTag td.student {
+ background-color: #F38C08;
+}
+.rolesTag td.staff {
+ background-color: #139E2F;
+}
+
+.modal.alert-error {
+ color: #B94A48;
+ background-color: #F2DEDE;
+ border-color: #EED3D7;
+}
+.news_paragraph p {
+ line-height: 20px;
+}
+.nav-tabs>li>.edit, .nav-tabs>li>.edit:hover {
+ background-color: #333;
+ color: #FFF;
+ padding-right: 12px;
+}
+.nav-tabs li .icons-pencil {
+ float: right;
+ margin-top: 8px;
+}
+.nav-tabs li a {
+ padding-right: 32px;
+}
+
+.user-role {
+ padding: 0 20px 0 150px !important;
+ margin: 20px 0 0;
+}
+.user-role .user-info {
+ top: 23px;
+ margin-left: -135px;
+ width: 100px;
+ border-right: none;
+ box-shadow: none;
+}
+.user-role .map-block h4 .gender {
+ top: -1px;
+ bottom: auto;
+ left: -1px;
+ right: auto;
+ border-radius: 4px 0 0 0;
+}
+.user-role .teacher h4 .gender {
+ border-color: #186AB6 transparent transparent #186AB6;
+}
+.user-role .student h4 .gender {
+ border-color: #F38C08 transparent transparent #F38C08;
+}
+.user-role .staff h4 .gender {
+ border-color: #139E2F transparent transparent #139E2F;
+}
+.user-role .tab-content, .user-role .nav-pills {
+ float: left;
+}
+.user-role .nav-pills {
+ margin-left: 10px;
+}
+.plural .input-append input, .plural .input-append select, .plural .input-append .uneditable-input {
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.plural .input-append .removeInput {
+ display: none;
+}
+.plural.editMore .input-append input, .plural.editMore .input-append select, .plural.editMore .input-append .uneditable-input {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.plural.editMore .input-append input, .plural.editMore .input-append select, .plural.editMore .input-append .uneditable-input {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.plural.editMore .input-append .add-on, .plural.editMore .input-append .btn {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/new_admin.css.erb b/app/assets/stylesheets/new_admin.css.erb
index 995421010..8d1e8a8b2 100644
--- a/app/assets/stylesheets/new_admin.css.erb
+++ b/app/assets/stylesheets/new_admin.css.erb
@@ -7,6 +7,8 @@
*= require message
*= require bootstrap
*= require style
+ *= require font-awesome
+ *= require orbit-bar
*= require bootstrap-orbit
*= require list
*= require widgets
diff --git a/app/assets/stylesheets/orbit-bar.css.erb b/app/assets/stylesheets/orbit-bar.css.erb
new file mode 100644
index 000000000..adde331e2
--- /dev/null
+++ b/app/assets/stylesheets/orbit-bar.css.erb
@@ -0,0 +1,231 @@
+
+#orbit-bar {
+ margin-bottom: 0;
+ position:fixed;
+ width:100%;
+ z-index: 99;
+ top: 0;
+ left: 0;
+}
+#orbit-bar .navbar-inner {
+ min-height: 28px;
+ height: 28px;
+ border: none;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ border-radius: 0px;
+ padding-top: 2px;
+ padding-bottom: 1px;
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
+ background-image: -moz-linear-gradient(top, #545b60, #191a1c);
+ background-image: -ms-linear-gradient(top, #545b60, #191a1c);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#545b60), to(#191a1c));
+ background-image: -webkit-linear-gradient(top, #545b60, #191a1c);
+ background-image: -o-linear-gradient(top, #545b60, #191a1c);
+ background-image: linear-gradient(top, #545b60, #191a1c);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#545b60', endColorstr='#191a1c', GradientType=0);
+}
+#orbit-bar .navbar-search {
+ left: 30px;
+ margin: 0;
+ position: absolute;
+ text-align: right;
+ top: -1px;
+ z-index: 0;
+ opacity: 0;
+ -moz-opacity: 0;
+ filter:alpha(opacity=0);
+}
+#orbit-bar .nav.pull-right {
+ margin-right: -20px;
+}
+#orbit-bar .search-query {
+ padding: 7px 9px 5px;
+ height: 12px;
+ margin-top: 3px;
+ border: none;
+ line-height: 14px;
+ border-radius: 3px;
+}
+#orbit-bar .search-query:focus {
+ background-position: 5px 2px;
+}
+#orbit-bar .container {
+ width:100%;
+}
+#orbit-bar .orbit-logo .brand {
+ background: url(<%= asset_path 'orbit-bar.png' %>) no-repeat -162px -5px;
+ text-indent:-9999px;
+ padding: 5px 20px 4px;
+}
+#orbit-bar .orbit-logo .brand:hover {
+ background-color: rgba(0,157,220,1);
+}
+#orbit-bar .orbit-logo.open .brand {
+ background-color: rgba(0,157,220,1);
+}
+#orbit-bar .orbit-logo .dropdown-menu {
+ left: -15px;
+}
+#orbit-bar .orbit-logo .dropdown-menu>li>a:hover>i {
+ background-image: url(<%= asset_path 'icons_pack_white.png' %>);
+}
+#orbit-bar .nav > li {
+ height: 28px;
+}
+#orbit-bar .nav > li > a:hover {
+ background-color: rgba(0,157,220,1);
+}
+#orbit-bar .nav > li > a {
+ background-image: url(<%= asset_path 'orbit-bar.png' %>);
+ background-repeat:no-repeat;
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ text-indent: -9999px;
+ padding:6px;
+}
+#orbit-bar .nav > li.search {
+ overflow: hidden;
+ width: 28px;
+ position: relative;
+}
+#orbit-bar .nav > li > a.orbit-bar-home {
+ background-position: -10px -10px;
+}
+#orbit-bar .nav > li > a.orbit-bar-desktop {
+ background-position: -106px -9px;
+}
+#orbit-bar .nav > li > a.orbit-bar-member {
+ background-position: -4px -37px;
+}
+#orbit-bar .nav > li > a.orbit-bar-member {
+ background-position: -10px -43px;
+}
+#orbit-bar .nav > li > a.orbit-bar-language {
+ background-position: -42px -42px;
+}
+#orbit-bar .nav > li > a.orbit-bar-search {
+ background-position: -75px -10px;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ z-index: 1;
+}
+#orbit-bar .nav > li.language.open > a.orbit-bar-language {
+ background-color: rgba(0,157,220,1);
+}
+.language-menu .active {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #0088cc;
+}
+#orbit-bar .nav > li > a.orbit-bar-account {
+ background-image: none;
+ height: 22px;
+ padding: 3px;
+ text-indent: inherit;
+ min-width: 110px;
+ width: auto !important;
+ text-align: left;
+ color: #FFFFFF;
+ text-shadow: none;
+ background-color: rgba(0, 0, 0, 0.5);
+}
+#orbit-bar .nav > li > a.orbit-bar-account:hover {
+ background-color: #08C;
+}
+#orbit-bar .nav span.member-name {
+ display: inline-block;
+ line-height: 22px;
+ padding: 0 10px;
+}
+#orbit-bar .nav img.member-img {
+ display: inline-block;
+ max-width: 24px;
+ margin-top: -2px;
+}
+#orbit-bar .clear {
+ clear: none;
+}
+#orbit-bar .account-menu {
+ right: 5px;
+}
+#orbit-bar .bar-login {
+
+}
+#orbit-bar .bar-login .open, #orbit-bar .open .orbit-bar-account {
+ background-color: #009DDC;
+}
+#orbit-bar .bar-login .dropdown-menu {
+ padding: 0 0 10px;
+ max-width: 260px;
+}
+#orbit-bar .bar-login .dropdown-menu .log {
+ margin: 10px 15px 0;
+ list-style: none outside none;
+}
+#orbit-bar .bar-login .dropdown-menu .log .title {
+ background: url(<%= asset_path 'sign-in-logo2.png' %>) no-repeat center center;
+ height: 70px;
+}
+#orbit-bar .bar-login .dropdown-menu .log form {
+ margin: 0 0 8px;
+}
+#orbit-bar .bar-login .dropdown-menu .log input {
+ display: inline-block;
+ margin: 0;
+}
+#orbit-bar .bar-login .dropdown-menu .log .span2 {
+ width: 182px;
+}
+#orbit-bar .bar-login .dropdown-menu .log .forgot {
+ margin-bottom: 20px;
+ padding: 3px 0 0;
+ float: right;
+ display: inline-block;
+ color: #0088CC;
+}
+#orbit-bar .bar-login .dropdown-menu .log .input-prepend {
+ margin-top: 20px;
+}
+#orbit-bar .bar-login .dropdown-menu .log .remember {
+ margin-top: 5px;
+}
+#orbit-bar .bar-login .dropdown-menu .log .forgot:hover {
+ padding: 3px 0 0;
+ float: right;
+ display: inline-block;
+ color: #005580;
+ text-decoration: underline;
+ background-color: transparent;
+}
+#orbit-bar .bar-login .dropdown-menu .log .btn {
+ width: 220px;
+}
+#orbit-bar .bar-login .dropdown-menu .log .divider {
+ position:relative;
+ overflow: inherit;
+ margin: 20px 0;
+}
+#orbit-bar .bar-login .dropdown-menu .log .divider span {
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ background-color: #FFF;
+ color: #666;
+ top: -9px;
+ left: 100px;
+ font-size: 1.4em;
+ text-align: center;
+}
+#orbit-bar .bar-login .dropdown-menu .register {
+ color: #FFFFFF;
+ margin: 0 15px;
+ width: 188px;
+}
+#orbit-bar .add-on i {
+ font-size: 12px;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/orbitTimeline.css.erb b/app/assets/stylesheets/orbitTimeline.css.erb
new file mode 100644
index 000000000..549770138
--- /dev/null
+++ b/app/assets/stylesheets/orbitTimeline.css.erb
@@ -0,0 +1,152 @@
+#orbit .viewport {
+ background: -1px 4px url(<%= asset_path "timeline/ruler.png" %>) repeat-x;
+}
+.time_nav a, .time_nav_c a {
+ display: block;
+}
+.time_nav {
+ position: absolute;
+ left: -60px;
+ top: 0;
+}
+.time_nav a {
+ line-height: 60px;
+ text-align: center;
+ font-size: 18px;
+}
+.time_nav .active {
+ background-color: #333;
+ color: #fff;
+}
+.time_nav_c {
+ position: absolute;
+ left: -60px;
+ bottom: 0;
+ background-color: #efefef;
+}
+.time_nav_c a {
+ width: 30px;
+ height: 36px;
+ float: left;
+ line-height: 36px;
+ text-align: center;
+}
+.t_scale {
+ height: 516px;
+}
+#scale_wrapper {
+ overflow: hidden;
+ padding: 24px 0 0 12px;
+ background: 0 48px url(<%= asset_path "timeline/date_connector.png" %>) repeat-x;
+}
+#timline_marker {
+ width:100px;
+ height:140px;
+ opacity:0.4;
+ cursor: move;
+ border-style:solid;
+ border-width:5px;
+ border-radius:5px;
+}
+#t_container {
+ height:366px;
+}
+.scale_region {
+}
+.group {
+ margin-right: 48px;
+}
+.month {
+
+}
+.year {
+ font-size: 30px;
+ margin-right: 24px;
+ border-right: solid 12px #efefef;
+ border-left: solid 12px #efefef;
+}
+.region_year {
+ position: relative;
+}
+.month_heading {
+ color: #333;
+ font-family: 'Open sans', sans-serif;
+ font-size: 21px;
+ display: inline-block;
+ margin-top: -10px;
+ padding-top: 22px;
+ background: #efefef 9px 0 url(<%= asset_path "timeline/pp.png" %>) no-repeat;
+}
+
+.bubble_list ul {
+ float:left;
+ width: 324px;
+ height: 440px;
+ margin-right: 12px;
+}
+.bubble {
+ cursor: pointer;
+ width: 300px;
+ height: 50px;
+ float: left;
+ font-size: 12px;
+ font-family: Arial, sans-serif;
+ margin-bottom: 12px;
+ position: relative;
+}
+.date {
+ display: block;
+ padding: 8px 0 0 0;
+ color: #999;
+}
+.bubble_arrow {
+ width: 0;
+ height: 0;
+ border-top: 14px solid transparent;
+ border-bottom: 14px solid transparent;
+ border-right: 14px solid #fff;
+ position: absolute;
+ right: -1px;
+ top: 50%;
+ margin-top: -14px;
+ z-index: 99;
+}
+.bubble .icon-chevron-right {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 15px;
+ height: 74px;
+ line-height: 74px;
+ font-size: 15px;
+}
+.desktop_toolpopup {
+ z-index: 9;
+ border: solid 1px #ccc;
+ font-family: Arial, sans-serif;
+ color: #666;
+ font-size: 12px;
+}
+.desktop_toolpopup h2 {
+ font-size: 18px;
+ padding: 0 0 20px 0;
+ margin: 0 0 20px 0;
+ border-bottom: solid 1px #d7d7d7;
+ color: #333;
+}
+.desktop_toolpopup h3 {
+ font-size: 15px;
+ padding: 0 0 20px 0;
+ margin: 20px 0 0 0;
+ color: #333;
+}
+.desktop_toolpopup .bubble_content {
+ overflow: hidden;
+ height: 368px;
+}
+.desktop_toolpopup .context {
+ line-height: 1.5em;
+}
+.thmc1.hover .icon-chevron-right {
+ display: none;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/orbitTimeline111.css b/app/assets/stylesheets/orbitTimeline111.css
new file mode 100644
index 000000000..2718b69db
--- /dev/null
+++ b/app/assets/stylesheets/orbitTimeline111.css
@@ -0,0 +1,68 @@
+.t_scale{
+ height:516px;
+ bottom:0;
+}
+#timline_marker{
+ width:100px;
+ height:140px;
+ opacity:0.4;
+ cursor: move;
+ border-style:solid;
+ border-width:5px;
+ border-radius:5px;
+}
+.t_scale{
+ border-style:solid;
+ border-width:2px;
+ border-radius:5px;
+}
+#t_container{
+ height:366px;
+}
+.scale_region{
+ height:516px;
+ border-style:solid;
+ border-width:0 2px 0 2px;
+ float: left;
+ margin-right:1px;
+ font-size:20px;
+ padding:5px;
+}
+.scale_region span{
+ display: block;
+}
+.month{
+
+}
+.year{
+ background-color: #c0bebe;
+ width:30px;
+}
+.bubble{
+ cursor: pointer;
+ width:300px;
+ height:30px;
+ border-style:solid;
+ border-width:5px;
+ float: left;
+ border-radius:5px;
+ margin-top: 10px;
+ margin-bottom:10px;
+ font-size:15px;
+ padding:5px;
+ text-align:justify;
+ display: none;
+}
+.month_heading{
+ text-align: center;
+ margin-bottom: 10px;
+}
+
+.bubble_list ul{
+ width:350px;
+ float:left;
+}
+.bubble_list ul li span.date{
+ font-weight:bolder;
+ float:right;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/scroll_style.css b/app/assets/stylesheets/scroll_style.css
index 849fbc13e..a60c4cd8b 100644
--- a/app/assets/stylesheets/scroll_style.css
+++ b/app/assets/stylesheets/scroll_style.css
@@ -1,15 +1,14 @@
-/*scroll_style*/
-
@charset "UTF-8";
/* CSS Document */
.my_scroll {
+ position: relative;
width: 100%;
clear: both;
}
.my_scroll .viewport {
- width: 1005;
overflow: hidden;
position: relative;
+ top: 0px;
}
.my_scroll .overview {
list-style: none;
@@ -22,14 +21,15 @@
background-color: #000000;
}
.my_scroll .scrollbar {
- position: relative;
+ position: absolute;
float: right;
width: 8px;
- top:2px;
- right:-2px;
+ top: 0px;
+ right: 2px;
+ z-index: 1;
}
.my_scroll .track {
- background-color: #CFCFCF;
+ /*background-color: #CFCFCF;*/
height: 100%;
width:7px;
position: relative;
diff --git a/app/assets/stylesheets/site-map.css b/app/assets/stylesheets/site-map.css
new file mode 100644
index 000000000..d7d3cda60
--- /dev/null
+++ b/app/assets/stylesheets/site-map.css
@@ -0,0 +1,117 @@
+
+.site-map {
+ padding: 15px;
+}
+.site-map .map-block {
+ min-width: 250px;
+ min-height: 20px;
+ border: 1px solid #dedede;
+ background-color: #E6E6E6;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ margin-bottom: 10px;
+}
+.site-map .map-block > ul {
+ margin: 0px;
+ list-style: none;
+ width: 220px \9;
+}
+.site-map .map-block li.clear {
+ background-color: #F7F7F7;
+ padding: 5px 15px;
+ border-top: 1px solid #FFF;
+ border-bottom: 1px solid #dedede;
+ display: table;
+ width: 100%;
+}
+.site-map .map-block li span {
+ width: 170px;
+ display: block;
+}
+.site-map .map-block li:last-child {
+ border-radius: 0 0 4px 4px;
+ border-bottom: none;
+}
+.site-map .map-block li:hover a {;
+ text-decoration: none;
+}
+.site-map .map-block li.disabled {
+ color: #C9C9C9;
+}
+.site-map .map-block li.disabled .onoff {
+ box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(0,0,0,.2) inset;
+ background-color: #9C9C9C;
+ color: #CACACA;
+}
+.site-map .map-block h4 {
+ line-height: 18px;
+ min-height: 20px;
+ margin: 0;
+ padding: 5px 15px;
+ border-radius: 4px 4px 0 0;
+ box-shadow: 0px 1px 2px #A8A8A8;
+ position: relative;
+ background-image: -moz-linear-gradient(top, #FCFCFC, #DFDFDF);
+ background-image: -ms-linear-gradient(top, #FCFCFC, #DFDFDF);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#FCFCFC), to(#DFDFDF));
+ background-image: -webkit-linear-gradient(top, #FCFCFC, #DFDFDF);
+ background-image: -o-linear-gradient(top, #FCFCFC, #DFDFDF);
+ background-image: linear-gradient(top, #FCFCFC, #DFDFDF);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FCFCFC', endColorstr='#DFDFDF', GradientType=0);
+}
+.site-map .map-block h4 span {
+ width: 170px;
+ display: block;
+}
+.site-map .map-block h4 .onoff {
+}
+.site-map .disabled h4 {
+ color: #CACACA;
+ border-radius: 4px;
+}
+.site-map .disabled h4 .onoff ,.onoff.disabled {
+ box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(0,0,0,.2) inset;
+ background-color: #9C9C9C;
+ color: #CACACA;
+}
+.onoff {
+ display: block;
+ background-color: #5EB92B;
+ font-size: 9px;
+ padding: 0px 10px;
+ border-radius: 8px;
+ line-height: 16px;
+ height: 15px;
+ color: #FFF;
+ width: 38px;
+ border: none;
+ box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(13, 75, 23, 0.5) inset;
+ margin-top: 2px;
+}
+
+/* for mamber role */
+
+.user-role .form-horizontal {
+ padding: 20px 10px 10px;
+ background-color: #FFF;
+ margin-bottom: 0;
+ border-radius: 0 0 4px 4px;
+}
+.user-role .form-horizontal .control-label {
+ width: 100px;
+}
+.user-role .form-horizontal .controls {
+ margin-left: 120px;
+}
+.user-role .form-horizontal .controls>.input-append {
+ margin-bottom: 10px;
+}
+.user-role .map-block {
+ min-width: 440px;
+}
+.user-role .map-block legend {
+ font-size: 18px;
+ line-height: 25px;
+}
diff --git a/app/assets/stylesheets/site_editor.css.erb b/app/assets/stylesheets/site_editor.css.erb
index e36d0b7bb..6506589e6 100644
--- a/app/assets/stylesheets/site_editor.css.erb
+++ b/app/assets/stylesheets/site_editor.css.erb
@@ -7,6 +7,8 @@
*= require message
*= require bootstrap
*= require style
+ *= require font-awesome
+ *= require orbit-bar
*= require bootstrap-orbit
*= require scroll_style
*= require site_items
diff --git a/app/assets/stylesheets/style.css.erb b/app/assets/stylesheets/style.css.erb
index 6ff22e2d7..0279c0ef5 100644
--- a/app/assets/stylesheets/style.css.erb
+++ b/app/assets/stylesheets/style.css.erb
@@ -11,266 +11,182 @@
}
.login-logo {
text-indent: -9999px;
- background: url(<%= asset_path 'sign-in-logo.png' %>) no-repeat center 80px;
+ background: url(<%= asset_path 'sign-in-logo.png' %>) no-repeat center 40px;
padding-top: 40px;
height: 160px;
-}
-#orbit-bar {
- margin-bottom: 0;
- position:fixed;
- width:100%;
- z-index: 99;
- top: 0;
- left: 0;
-}
-#orbit-bar .navbar-inner {
- height: 28px;
- -moz-border-radius: 0px;
- -webkit-border-radius: 0px;
- border-radius: 0px;
- padding-top: 2px;
- padding-bottom: 1px;
- -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
- -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
- background-image: -moz-linear-gradient(top, #5282A6, #133757);
- background-image: -ms-linear-gradient(top, #5282A6, #133757);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5282A6), to(#133757));
- background-image: -webkit-linear-gradient(top, #5282A6, #133757);
- background-image: -o-linear-gradient(top, #5282A6, #133757);
- background-image: linear-gradient(top, #5282A6, #133757);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5282A6', endColorstr='#133757', GradientType=0);
-}
-#orbit-bar .navbar-search {
- left: 28px;
margin: 0;
- position: absolute;
- text-align: right;
- top: -1px;
-}
-#orbit-bar .nav.pull-right {
- margin-right: -20px;
-}
-#orbit-bar .search-query {
- padding: 7px 9px 5px;
- height: 11px;
- margin-top: 3px;
- border: 1px solid #333333;
- line-height: 1.5em;
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.3) inset, 0 1px 0 rgba(255, 255, 255, 0.15);
-}
-#orbit-bar .search-query:focus {
- background-position: 5px 2px;
-}
-#orbit-bar .container {
- width:100%;
-}
-#orbit-bar .orbit-logo .brand {
- background: url(<%= asset_path 'nccu_logo.png' %>) no-repeat 6px 0px;
- text-indent:-9999px;
- padding: 5px 20px 4px;
-}
-#orbit-bar .orbit-logo .brand:hover {
- background-color: rgba(0,157,220,1);
-}
-#orbit-bar .orbit-logo.open .brand {
- background-color: rgba(0,157,220,1);
-}
-#orbit-bar .orbit-logo .dropdown-menu {
- left: -15px;
-}
-#orbit-bar .nav > li {
- height: 28px;
-}
-#orbit-bar .nav > li > a:hover {
- background-color: rgba(0,157,220,1);
-}
-#orbit-bar .nav > li > a {
- background-image: url(<%= asset_path 'orbit-bar.png' %>);
- background-repeat:no-repeat;
- display: inline-block;
- width: 16px;
- height: 16px;
- text-indent: -9999px;
- padding:6px;
-}
-#orbit-bar .nav > li.search {
- overflow: hidden;
- width: 28px;
- position: relative;
-}
-#orbit-bar .nav > li > a.orbit-bar-home {
- background-position: -10px -10px;
-}
-#orbit-bar .nav > li > a.orbit-bar-desktop {
- background-position: -73px -42px;width: 48px;
-}
-#orbit-bar .nav > li > a.orbit-bar-member {
- background-position: -4px -37px;
-}
-#orbit-bar .nav > li > a.orbit-bar-member {
- background-position: -10px -43px;
-}
-#orbit-bar .nav > li > a.orbit-bar-language {
- background-position: -42px -42px;
-}
-#orbit-bar .nav > li > a.orbit-bar-search {
- background-position: -75px -10px;
- overflow: hidden;
-}
-.language-menu .active {
- color: #ffffff;
- text-decoration: none;
- background-color: #0088cc;
-}
-#orbit-bar .nav > li > a.orbit-bar-account {
- background-image: none;
- height: 22px;
- padding: 3px;
- text-indent: inherit;
- min-width: 110px;
- width: auto !important;
- text-align: left;
-}
-#orbit-bar .nav span.member-name {
- display: inline-block;
- line-height: 22px;
- padding: 0 10px;
-}
-#orbit-bar .nav img.member-img {
- display: inline-block;
- float: left;
- max-width: 22px;
-}
-#orbit-bar .clear {
- clear: none;
-}
-#orbit-bar .account-menu {
- right: 5px;
-}
-#orbit-bar .bar-login {
-
-}
-#orbit-bar .bar-login .open, #orbit-bar .open .orbit-bar-account {
- background-color: #009DDC;
-}
-#orbit-bar .bar-login .dropdown-menu {
- padding: 0 0 10px;
- max-width: 260px;
-}
-#orbit-bar .bar-login .dropdown-menu .log {
- margin: 10px 15px 0;
- list-style: none outside none;
-}
-#orbit-bar .bar-login .dropdown-menu .log .title {
- background: url(<%= asset_path 'sign-in-logo2.png' %>) no-repeat center center;
- height: 70px;
-}
-#orbit-bar .bar-login .dropdown-menu .log form {
- margin: 0 0 8px;
-}
-#orbit-bar .bar-login .dropdown-menu .log input {
- display: inline-block;
- margin: 0;
-}
-#orbit-bar .bar-login .dropdown-menu .log .span2 {
- width: 182px;
-}
-#orbit-bar .bar-login .dropdown-menu .log .forgot {
- margin-bottom: 20px;
- padding: 3px 0 0;
- float: right;
- display: inline-block;
- color: #0088CC;
-}
-#orbit-bar .bar-login .dropdown-menu .log .input-prepend {
- margin-top: 20px;
-}
-#orbit-bar .bar-login .dropdown-menu .log .remember {
- margin-top: 5px;
-}
-#orbit-bar .bar-login .dropdown-menu .log .forgot:hover {
- padding: 3px 0 0;
- float: right;
- display: inline-block;
- color: #005580;
- text-decoration: underline;
- background-color: transparent;
-}
-#orbit-bar .bar-login .dropdown-menu .log .btn {
- width: 220px;
-}
-#orbit-bar .bar-login .dropdown-menu .log .divider {
- position:relative;
- overflow: inherit;
- margin: 20px 0;
-}
-#orbit-bar .bar-login .dropdown-menu .log .divider span {
- position: absolute;
- width: 20px;
- height: 20px;
- background-color: #FFF;
- color: #666;
- top: -9px;
- left: 100px;
- font-size: 1.4em;
- text-align: center;
-}
-#orbit-bar .bar-login .dropdown-menu .register {
- color: #FFFFFF;
- margin: 0 15px;
- width: 188px;
}
#main-sidebar {
background: url(<%= asset_path 'background.jpg' %>) repeat left top;
width: 155px;
- padding-right: 4px;
- border-right: 1px solid rgba(0,0,0,.2);
+ /*padding-right: 4px;*/
+ /*border-right: 1px solid rgba(0,0,0,.2);*/
position:fixed;
top: 31px;
z-index: 88;
+ box-shadow: inset -5px 0px 15px rgba(0, 0, 0, .15);
+ -webkit-box-shadow: inset -5px 0px 15px rgba(0, 0, 0, .15);
+ -moz-box-shadow: inset -5px 0px 15px rgba(0, 0, 0, .15);
}
-#main-sidebar .nav {
- padding-top: 5px;
+#main-sidebar .viewport, #main-sidebar .scrollbar {
+ top: 49px;
}
-#main-sidebar .nav > li.active > a [class^="icons-"] {
+#main-sidebar #position {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 36px;
+ line-height: 36px;
+ background-image: -moz-linear-gradient(top, #08C, #006091);
+ background-image: -ms-linear-gradient(top, #08C, #006091);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#08C), to(#006091));
+ background-image: -webkit-linear-gradient(top, #08C, #006091);
+ background-image: -o-linear-gradient(top, #08C, #006091);
+ background-image: linear-gradient(top, #08C, #006091);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#08C', endColorstr='#006091', GradientType=0);
+}
+#main-sidebar #position span {
+ color: #FFF;
+}
+#main-sidebar #position [class^="icons"] {
background-image: url(<%= asset_path 'icons_pack_white.png' %>);
}
+#main-sidebar #position a {
+ display: block;
+ padding-left: 11px;
+}
+#main-sidebar #position #collapse-menu {
+ height: 16px;
+ line-height: 13px;
+ -moz-box-shadow:inset 0px 1px 0px 0px #bababa;
+ -webkit-box-shadow:inset 0px 1px 0px 0px #bababa;
+ box-shadow:inset 0px 1px 0px 0px #bababa;
+ background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #969696), color-stop(1, #4f4f4f) );
+ background:-moz-linear-gradient( center top, #969696 5%, #4f4f4f 100% );
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#969696', endColorstr='#4f4f4f');
+ background-color:#969696;
+ color:#414141;
+ text-shadow: 0 1px 0px rgba(255, 255, 255, .3);
+ font-size: 8px;
+ text-decoration:none;
+ text-align: center;
+ position: relative;
+ cursor:pointer;
+}
+#main-sidebar #position #collapse-menu:hover {
+ color: #CFCFCF;
+ text-shadow: 0 -1px 0px rgba(36, 36, 36, 0.65);
+}
+#main-sidebar #position #collapse-menu [class^="icon-"] {
+ display: inline;
+}
+#main-sidebar #position a:hover {
+ text-decoration: none;
+ opacity: 1;
+ -moz-opacity: 1;
+ filter:alpha(opacity=10);
+}
+#main-sidebar .nav > li {
+ margin: 1px 0;
+}
+#main-sidebar .nav > li > a [class^="icons-"] {
+ opacity: .5;
+ -moz-opacity: .5;
+ filter:alpha(opacity=5);
+}
+#main-sidebar .nav > li.active > a [class^="icons-"] {
+ opacity: 1;
+ -moz-opacity: 1;
+ filter:alpha(opacity=10);
+}
+#main-sidebar .overview > .nav > li > a {
+ padding: 3px 13px;
+ line-height: 30px;
+ background-color: #e2e2e2;
+ margin-left: -17px;
+ border-top: 1px solid #DBDBDB;
+ border-bottom: 1px solid #BDBDBD;
+ box-shadow: inset -5px 0px 15px rgba(0, 0, 0, .18), 0px -1px 0px rgba(0, 0, 0, .1);
+ -webkit-box-shadow: inset -5px 0px 15px rgba(0, 0, 0, .18), 0px -1px 0px rgba(0, 0, 0, .1);
+ -moz-box-shadow: inset -5px 0px 15px rgba(0, 0, 0, .18), 0px -1px 0px rgba(0, 0, 0, .1);
+}
+#main-sidebar .overview > .nav > li.active > a {
+ background-color: white;
+ box-shadow: none;
+ color: #000000;
+ text-shadow: none;
+}
+#main-sidebar .overview > .nav > li:hover > a {
+ background-color: #08C;
+ color: #FFFFFF;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+ box-shadow: inset -5px 0px 15px rgba(0, 0, 0, .15);
+ -webkit-box-shadow: inset -5px 0px 15px rgba(0, 0, 0, .15);
+ -moz-box-shadow: inset -5px 0px 15px rgba(0, 0, 0, .15);
+}
+#main-sidebar .overview > .nav > li:hover > a [class^="icons-"] {
+ background-image: url(<%= asset_path 'icons_pack_white.png' %>);
+ opacity: 1;
+ -moz-opacity: 1;
+ filter:alpha(opacity=10);
+}
#main-sidebar .nav > li > .nav {
- margin-left: -14px;
+ margin-left: -15px;
margin-bottom: 5px;
width: 155px;
padding: 0;
- background-color: #FFF;
+ background-color: #3A3A3A;
/*border-radius: 0px 0px 8px 0px;
-webkit-border-radius: 0px 0px 8px 0px;
-moz-border-radius: 0px 0px 8px 0px;*/
- box-shadow: 0px 2px 1px rgba(0,0,0,0.1);
- -moz-box-shadow: 0px 2px 1px rgba(0,0,0,0.1);
- -webkit-box-shadow: 0px 2px 1px rgba(0,0,0,0.1);
+ box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);
+ -webkit-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1);
display: none;
}
#main-sidebar .nav > li.active > .nav {
display: block;
}
-#main-sidebar .nav > li > .nav > li > a {
- margin-left: 0;
- padding-left: 19px;
- color: #999;
+#main-sidebar .nav > li > .nav > li {
+ position: relative;
}
-#main-sidebar .nav > li > .nav > li > a:hover {
- color: #000;
- background-color: #d7eeff;
+#main-sidebar .nav > li > .nav > li [class^="icon-"] {
+ position: absolute;
+ color: #FFF;
+ top: 4px;
+ right: 0;
+ display: none;
+}
+#main-sidebar .nav > li > .nav > li > a {
+ margin: 0;
+ padding-left: 19px;
+ color: #FFFFFF;
+ text-shadow: none;
+ border-bottom: 1px solid #353535;
+ box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.06);
+}
+#main-sidebar .nav > li > .nav > li:last-child > a {
+ border-bottom: none;
+ box-shadow: none;
}
#main-sidebar .nav > li > .nav > li.active > a {
- background-color: #b7b7b7;
+ background-color: #3A3A3A;
color: #fff;
}
+#main-sidebar .nav > li > .nav > li > a:hover,
+#main-sidebar .nav > li > .nav > li.active > a:hover {
+ background-color: #6B6B6B;
+}
+#main-sidebar .nav > li > .nav > li.active > a [class^="icon-"],
+#main-sidebar .nav > li > .nav > li > a:hover [class^="icon-"] {
+ display: block;
+}
#main-wrap {
background-color: #FFF;
- margin-left:160px;
+ margin-left: 155px;
padding-top: 32px;
- padding-bottom: 45px;
+ padding-bottom: 60px;
position: relative;
}
#main-wrap .subnav {
@@ -333,9 +249,6 @@
margin-right: -340px;
}
#post-body .title input[type=text] {
- margin-bottom: 0;
- width: 100%;
- height: 30px;
}
#post-body .btn-group {
margin-left: 5px;
@@ -354,13 +267,26 @@
#post-body-content {
padding: 8px 0 8px 6px;
}
+#post-body-content .middle {
+ width: 100%;
+ padding: 0;
+ border: none;
+ box-shadow: none;
+}
+.filter .accordion-group {
+ margin-bottom: 0;
+ border: none;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
.filter .accordion-heading > a:hover {
text-decoration: none;
}
-.filter .accordion-group {
+.filter .accordion-heading {
border-bottom: none;
border-top: none;
- border-left: 1px solid rgba(0,0,0,0.07);
+ border-left: 1px solid #E9E9E9;
border-right: none;
-moz-border-radius: 0;
-webkit-border-radius: 0;
@@ -370,11 +296,8 @@
left: 0;
top: 0;
}
-.filter .accordion-group:last-child {
- border-right: 1px solid rgba(0,0,0,0.07);
-}
-.filter .accordion-heading .accordion-toggle {
- padding: 9px 15px;
+.filter li:last-child .accordion-heading {
+ border-right: 1px solid #E9E9E9;
}
.accordion-group .accordion-toggle .caret {
border-top-color: #0088CC;
@@ -390,13 +313,16 @@
margin: 5px 10px;
}
.filters {
- background-color: rgba(0,0,0,0.075);
- -webkit-box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.2);
- -moz-box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.2);
- box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.2);
+ margin-bottom: 0;
+ border: none;
+ border-radius: 0;
+ background-color: #F0F0F0;
+ -webkit-box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.06);
+ -moz-box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.06);
+ box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.06);
}
-.filters > div {
- background-color: #dadada;
+.filters > div.in {
+ border-bottom: 1px solid #e5e5e5;
}
.filters .btn {
margin-bottom: 5px;
@@ -409,13 +335,9 @@
padding: 5px 5px 0;
border-top: 1px solid rgba(0,0,0,0.1);
text-align: right;
- margin: 0 5px;
-webkit-box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5);
- -moz-box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5);
- box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5);
-}
-.filters .in {
- /*border-bottom: 1px solid rgba(0,0,0,0.07)*/
+ -moz-box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5);
+ box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5);
}
#tags {
}
@@ -476,6 +398,7 @@
#signin-header h3 {
color: #848484;
text-shadow: 0 1px 0 #e9e9e9;
+ margin: 0;
}
#sign-footer {
width: 100%;
@@ -518,7 +441,7 @@
display:none;
}
.sign-in .error .help-inline {
- display:inline-block;
+ display:inline-block;
}
.web-symbol:after {
font-family: 'WebSymbolsRegular';
@@ -532,7 +455,7 @@
.img-peview {
margin-left: 12px;
}
-.popover img {
+/*.popover img {
max-height: 120px;
max-width: 100%;
}
@@ -545,11 +468,9 @@
.popover-content {
border-radius: 3px;
padding: 5px;
-}
-.popover-title {
- display: none;
-}
+}*/
+<<<<<<< HEAD
.member td.teacher {
/*background-color: #AF0045;
border-left: 2px solid #AF0045;*/
@@ -743,232 +664,109 @@
/*.staff hr {
background-color: #139E2F;
}*/
+=======
+>>>>>>> various_bugs
.view-mode {
- margin: 4px 20px 0 0;
+ margin: 6px 10px 0 0;
+}
+.view-mode .btn {
+ margin-bottom: 0;
}
.view-mode .btn {
margin-bottom: 0;
}
.view-mode i {
- font-size: 1.4em;
- line-height: 6px !important;
+ font-size: 1.2em;
+ line-height: 17px !important;
}
-.member-abstract, .member-large {
- padding: 15px;
+#module-nav {
+ padding: 5px 0;
+ border-bottom: 1px solid #e8e8e8;
+ -webkit-box-shadow: inset 0px -4px 10px rgba(0, 0, 0, .1);
+ -moz-box-shadow: inset 0px -4px 10px rgba(0, 0, 0, .1);
+ box-shadow: inset 0px -4px 10px rgba(0, 0, 0, .1);
}
-.member-abstract ul, .member-large ul {
- margin: 0;
- padding: 0;
- list-style: none;
-}
-.member-abstract>ul>li, .member-large>ul>li {
- margin: 5px;
+#module-nav .module-nav-view {
overflow: hidden;
- border-radius: 5px;
- box-shadow: 0 1px 3px rgba(0,0,0,.3);
}
-.member-abstract .user *, .member-large .user * {
- -webkit-transition: all .3s ease;
- -moz-transition: all .3s ease;
- -o-transition: all .3s ease;
- transition: all .3s ease;
-}
-.member-abstract .user, .member-large .user {
- background-color: #EDEDED;
- padding: 10px;
+#module-nav ul {
+ margin-bottom: 0px;
+ height: 35px;
+ white-space: nowrap;
+ display: inline-block;
position: relative;
+}
+#module-nav ul li {
+ display: inline-block;
+ *display: inline;
+ float: none;
+}
+#module-nav [class^="arrow_"] {
+ font-size: 18px;
+ margin-top: 8px;
+ color: #acacac;
+ width: 20px;
+ text-align: center;
+}
+#module-nav [class^="arrow_"]:hover {
+ color: #333333;
+ cursor:pointer;
+}
+/*Folded*/
+.folded #main-sidebar {
+ width: 40px;
+ /*border-right: 1px solid rgba(0,0,0,.2);*/
+}
+.folded #main-wrap {
+ margin-left:40px;
+}
+.folded #main-sidebar .nav {
+ padding-left: 12px;
+ width: 28px;
+ white-space: nowrap;
+}
+.folded #main-sidebar .nav > li > a [class^="icons-"] {
+ margin-left: 1px;
+}
+.folded #main-sidebar:hover .viewport {
+ width: 198px;
+}
+.folded #main-sidebar .overview > .nav-list > li {
+ position: relative;
+}
+.folded #main-sidebar .overview > .nav-list > li > a {
+ width: 17px;
+ margin-left: -15px;
+}
+.folded #main-sidebar .overview > .nav-list > li:hover > a {
+ width: 172px;
+}
+.folded #main-sidebar .overview > .nav-list > li > a > span, .folded #main-sidebar #position span {
+ display: none;
+}
+.folded #main-sidebar .overview > .nav-list > li:hover > a > span {
+ display: inline-block;
+ margin-left: 20px;
+}
+.folded #main-sidebar .overview > .nav-list > li > .nav-list > li > a {
+ padding: 3px 15px;
+}
+.folded #main-sidebar .overview > .nav-list > li > .nav-list {
+ display: none;
border-radius: 0 0 5px 5px;
- width: 360px;
- -webkit-transition: all .3s ease;
- -moz-transition: all .3s ease;
- -o-transition: all .3s ease;
- transition: all .3s ease;
}
-.member-abstract .user:hover, .member-large .user:hover {
- background-color: #333333;
-}
-.member-abstract .user:hover .user-name, .member-large .user:hover .user-name {
- color: #DDD;
-}
-.member-abstract .user .user-meta {
- margin-left: 90px;
-}
-.member-abstract .user .user-title span {
- color: #5e5e5e;
- font-size: 1.3em;
- padding-right: 10px;
-}
-.member-abstract .user:hover .user-title span {
- color: #AAA;
-}
-.member-abstract .user ul.user-itemborder {
- margin-top: 8px;
- border-top: 1px solid #D5D5D5;
- padding: 4px 0 0;
-}
-.member-abstract .user ul.user-itemborder li, .member-abstract .user ul.user-itemborder li span {
- color: #333;
-}
-.member-abstract .user:hover ul.user-itemborder {
- color: #EDEDED;
- border-top: 1px solid #666;
-}
-.member-abstract .user:hover ul.user-itemborder li, .member-abstract .user:hover ul.user-itemborder li span {
- color: #EDEDED;
-}
-.member-abstract .user ul.user-itemborder li {
- width: 33%;
- font-size: 1.1em;
- text-align: center;
-}
-.member-abstract .user ul.user-itemborder li span {
- font-size: 13px;
- font-weight: bold;
- padding-right: 5px;
-}
-.member-large .user {
- width: 80px;
- min-height: 125px;
-}
-.member-large .user-avatar {
- margin-right: 0;
-}
-.member-large .user-name {
- font-weight: bold;
- font-size: 1.3em;
- width: 80px;
- line-height: 18px;
- padding-top: 5px;
- text-align: center;
-}
-.rolesTag {
- width: 100%;
-}
-.rolesTag td {
- height: 6px;
- background-color: #333;
-}
-.rolesTag td.teacher {
- background-color: #F38C08;
-}
-.rolesTag td.student {
- background-color: #186AB6;
-}
-.rolesTag td.staff {
- background-color: #139E2F;
-}
-.site-map {
- padding: 15px;
-}
-.site-map .map-block {
- width: 250px;
- min-height: 20px;
- border: 1px solid #dedede;
- background-color: #E6E6E6;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- margin-bottom: 10px;
-}
-.site-map .map-block ul {
- margin: 0px;
- list-style: none;
- width: 220px \9;
-}
-.site-map .map-block li {
- background-color: #F7F7F7;
- padding: 5px 15px;
- border-top: 1px solid #FFF;
- border-bottom: 1px solid #dedede;
- display: table;
- width: 100%;
-}
-.site-map .map-block li span {
- width: 170px;
+.folded #main-sidebar .overview > .nav-list > li:hover > .nav-list {
display: block;
+ position: absolute;
+ top: 37px;
+ left: 43px;
}
-.site-map .map-block li:last-child {
- border-radius: 0 0 4px 4px;
- border-bottom: none;
+.folded #main-sidebar .scrollbar {
+ right: 32px;
}
-.site-map .map-block li:hover a {;
- text-decoration: none;
+.folded #main-sidebar .nav > li > .nav > li:last-child > a {
+ border-radius: 0 0 5px 5px;
}
-.site-map .map-block li.disabled {
- color: #C9C9C9;
-}
-.site-map .map-block li.disabled .onoff {
- box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(0,0,0,.2) inset;
- background-color: #9C9C9C;
- color: #CACACA;
-}
-.site-map .map-block h4 {
- line-height: 18px;
- min-height: 20px;
- padding: 5px 15px;
- border-radius: 4px 4px 0 0;
- box-shadow: 0px 1px 2px #A8A8A8;
- position: relative;
- background-image: -moz-linear-gradient(top, #FCFCFC, #DFDFDF);
- background-image: -ms-linear-gradient(top, #FCFCFC, #DFDFDF);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#FCFCFC), to(#DFDFDF));
- background-image: -webkit-linear-gradient(top, #FCFCFC, #DFDFDF);
- background-image: -o-linear-gradient(top, #FCFCFC, #DFDFDF);
- background-image: linear-gradient(top, #FCFCFC, #DFDFDF);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FCFCFC', endColorstr='#DFDFDF', GradientType=0);
-}
-.site-map .map-block h4 span {
- width: 170px;
- display: block;
-}
-.site-map .map-block h4 .onoff {
-}
-.site-map .disabled h4 {
- color: #CACACA;
-}
-.site-map .disabled h4 .onoff {
- box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(0,0,0,.2) inset;
- background-color: #9C9C9C;
- color: #CACACA;
-}
-.onoff {
- display: block;
- background-color: #5EB92B;
- font-size: 0.9em;
- padding: 0px 10px;
- border-radius: 8px;
- line-height: 16px;
- height: 15px;
- color: #FFF;
- width: 38px;
- border: none;
- box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(13, 75, 23, 0.5) inset;
- margin-top: 2px;
-}
-
-.modal.alert-error {
- color: #B94A48;
- background-color: #F2DEDE;
- border-color: #EED3D7;
-}
-.news_paragraph p {
- line-height: 20px;
-}
-.nav-tabs>li>.edit, .nav-tabs>li>.edit:hover {
- background-color: #333;
- color: #FFF;
- padding-right: 12px;
-}
-.nav-tabs li .icons-pencil {
- float: right;
- margin-top: 8px;
-}
-.nav-tabs li a {
- padding-right: 32px;
-}
-
-
/*icons*/
.the-icons i:after {
content: attr(class);
@@ -1600,20 +1398,191 @@
background-position: -448px -352px;
}
/*13*/
-.icons- {
- background-position: -0px -384px;
+.icons-13-1 {
+ background-position: -0px -384px;
+}
+.icons-13-2 {
+ background-position: -32px -384px;
+}
+.icons-13-3 {
+ background-position: -64px -384px;
+}
+.icons-13-4 {
+ background-position: -96px -384px;
+}
+.icons-13-5 {
+ background-position: -128px -384px;
+}
+.icons-13-6 {
+ background-position: -160px -384px;
+}
+.icons-13-7 {
+ background-position: -192px -384px;
+}
+.icons-13-8 {
+ background-position: -224px -384px;
+}
+.icons-13-9 {
+ background-position: -256px -384px;
}
/*14*/
-.icons- {
+.icons-14-1 {
background-position: -0px -416px;
}
+.icons-14-2 {
+ background-position: -32px -416px;
+}
+.icons-14-3 {
+ background-position: -64px -416px;
+}
+.icons-14-4 {
+ background-position: -96px -416px;
+}
+.icons-14-5 {
+ background-position: -128px -416px;
+}
+.icons-14-6 {
+ background-position: -160px -416px;
+}
+.icons-14-7 {
+ background-position: -192px -416px;
+}
+.icons-14-8 {
+ background-position: -224px -416px;
+}
+.icons-14-9 {
+ background-position: -256px -416px;
+}
+.icons-14-10 {
+ background-position: -288px -416px;
+}
+.icons-14-11 {
+ background-position: -320px -416px;
+}
+.icons-14-12 {
+ background-position: -352px -416px;
+}
+.icons-14-13 {
+ background-position: -384px -416px;
+}
/*15*/
-.icons- {
+.icons-15-1 {
background-position: -0px -448px;
}
+.icons-15-2 {
+ background-position: -32px -448px;
+}
+.icons-15-3 {
+ background-position: -64px -448px;
+}
+.icons-15-4 {
+ background-position: -96px -448px;
+}
+.icons-15-5 {
+ background-position: -128px -448px;
+}
+.icons-15-6 {
+ background-position: -160px -448px;
+}
+.icons-15-7 {
+ background-position: -192px -448px;
+}
+.icons-15-8 {
+ background-position: -224px -448px;
+}
+.icons-15-9 {
+ background-position: -256px -448px;
+}
+.icons-15-10 {
+ background-position: -288px -448px;
+}
+.icons-15-11 {
+ background-position: -320px -448px;
+}
+.icons-15-12 {
+ background-position: -352px -448px;
+}
+.icons-15-13 {
+ background-position: -384px -448px;
+}
+.icons-15-14 {
+ background-position: -416px -448px;
+}
+.icons-15-15 {
+ background-position: -448px -448px;
+}
+.icons-15-16 {
+ background-position: -480px -448px;
+}
+.icons-15-17 {
+ background-position: -512px -448px;
+}
/*16*/
-.icons- {
- background-position: -0px -480px;
+.icons-16-1 {
+ background-position: -0px -480px;
+}
+.icons-16-2 {
+ background-position: -32px -480px;
+}
+.icons-16-3 {
+ background-position: -64px -480px;
+}
+.icons-16-4 {
+ background-position: -96px -480px;
+}
+.icons-16-5 {
+ background-position: -128px -480px;
+}
+.icons-16-6 {
+ background-position: -160px -480px;
+}
+.icons-16-7 {
+ background-position: -192px -480px;
+}
+.icons-16-8 {
+ background-position: -224px -480px;
+}
+.icons-16-9 {
+ background-position: -256px -480px;
+}
+.icons-16-10 {
+ background-position: -288px -480px;
+}
+.icons-16-11 {
+ background-position: -320px -480px;
+}
+.icons-16-12 {
+ background-position: -352px -480px;
+}
+.icons-16-13 {
+ background-position: -384px -480px;
+}
+.icons-16-14 {
+ background-position: -416px -480px;
+}
+.icons-16-15 {
+ background-position: -448px -480px;
+}
+.icons-16-16 {
+ background-position: -480px -480px;
+}
+.icons-16-17 {
+ background-position: -512px -480px;
+}
+.icons-16-18 {
+ background-position: -548px -480px;
+}
+.icons-16-19 {
+ background-position: -580px -480px;
+}
+.icons-16-20 {
+ background-position: -612px -480px;
+}
+.icons-16-21 {
+ background-position: -640px -480px;
+}
+.icons-16-22 {
+ background-position: -672px -480px;
}
/*17*/
.icons- {
diff --git a/app/assets/stylesheets/style.css.erb.backup20120913 b/app/assets/stylesheets/style.css.erb.backup20120913
new file mode 100644
index 000000000..18dd59eae
--- /dev/null
+++ b/app/assets/stylesheets/style.css.erb.backup20120913
@@ -0,0 +1,1689 @@
+/*style*/
+
+@font-face{
+ font-family: 'WebSymbolsRegular';
+ src: url(<%= asset_path 'websymbols-regular-webfont.eot' %>);
+ src: url(<%= asset_path 'websymbols-regular-webfont.eot?#iefix' %>) format('embedded-opentype'),
+ url(<%= asset_path 'websymbols-regular-webfont.woff' %>) format('woff'),
+ url(<%= asset_path 'websymbols-regular-webfont.ttf' %>) format('truetype'),
+ url(<%= asset_path 'websymbols-regular-webfont.svg#WebSymbolsRegular' %>) format('svg');
+}
+.login-logo {
+ text-indent: -9999px;
+ background: url(<%= asset_path 'sign-in-logo.png' %>) no-repeat center 80px;
+ padding-top: 40px;
+ height: 160px;
+}
+#orbit-bar {
+ margin-bottom: 0;
+ position:fixed;
+ width:100%;
+ z-index: 99;
+ top: 0;
+ left: 0;
+}
+#orbit-bar .navbar-inner {
+ min-height: 28px;
+ height: 28px;
+ border: none;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ border-radius: 0px;
+ padding-top: 2px;
+ padding-bottom: 1px;
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(127, 149, 165, 1), 0 -1px 0 rgba(31, 32, 36, 1) inset;
+ background-image: -moz-linear-gradient(top, #545b60, #191a1c);
+ background-image: -ms-linear-gradient(top, #545b60, #191a1c);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#545b60), to(#191a1c));
+ background-image: -webkit-linear-gradient(top, #545b60, #191a1c);
+ background-image: -o-linear-gradient(top, #545b60, #191a1c);
+ background-image: linear-gradient(top, #545b60, #191a1c);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#545b60', endColorstr='#191a1c', GradientType=0);
+}
+#orbit-bar .navbar-search {
+ left: 28px;
+ margin: 0;
+ position: absolute;
+ text-align: right;
+ top: -1px;
+}
+#orbit-bar .nav.pull-right {
+ margin-right: -20px;
+}
+#orbit-bar .search-query {
+ padding: 7px 9px 5px;
+ height: 11px;
+ margin-top: 3px;
+ border: 1px solid #333333;
+ font-size: 11px;
+ line-height: 21px;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.3) inset, 0 1px 0 rgba(255, 255, 255, 0.15);
+}
+#orbit-bar .search-query:focus {
+ background-position: 5px 2px;
+}
+#orbit-bar .container {
+ width:100%;
+}
+#orbit-bar .orbit-logo .brand {
+ background: url("/assets/orbit-bar.png") no-repeat scroll -163px -5px transparent;
+ text-indent:-9999px;
+ padding: 5px 20px 4px;
+}
+#orbit-bar .orbit-logo .brand:hover {
+ background-color: rgba(0,157,220,1);
+}
+#orbit-bar .orbit-logo.open .brand {
+ background-color: rgba(0,157,220,1);
+}
+#orbit-bar .orbit-logo .dropdown-menu {
+ left: -15px;
+}
+#orbit-bar .nav > li {
+ height: 28px;
+}
+#orbit-bar .nav > li > a:hover {
+ background-color: rgba(0,157,220,1);
+}
+#orbit-bar .nav > li > a {
+ background-image: url(<%= asset_path 'orbit-bar.png' %>);
+ background-repeat:no-repeat;
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ text-indent: -9999px;
+ padding:6px;
+}
+#orbit-bar .nav > li.search {
+ overflow: hidden;
+ width: 28px;
+ position: relative;
+}
+#orbit-bar .nav > li > a.orbit-bar-home {
+ background-position: -10px -10px;
+}
+#orbit-bar .nav > li > a.orbit-bar-desktop {
+ background-position: -105px -10px;
+ width: 18px;
+}
+#orbit-bar .nav > li > a.orbit-bar-member {
+ background-position: -4px -37px;
+}
+#orbit-bar .nav > li > a.orbit-bar-member {
+ background-position: -10px -43px;
+}
+#orbit-bar .nav > li > a.orbit-bar-language {
+ background-position: -42px -42px;
+}
+#orbit-bar .nav > li > a.orbit-bar-search {
+ background-position: -75px -10px;
+ overflow: hidden;
+}
+.language-menu .active {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #0088cc;
+}
+#orbit-bar .nav > li > a.orbit-bar-account {
+ background-image: none;
+ height: 22px;
+ padding: 3px;
+ text-indent: inherit;
+ min-width: 110px;
+ width: auto !important;
+ text-align: left;
+}
+#orbit-bar .nav span.member-name {
+ display: inline-block;
+ line-height: 22px;
+ padding: 0 10px;
+}
+#orbit-bar .nav img.member-img {
+ display: inline-block;
+ float: left;
+ max-width: 22px;
+}
+#orbit-bar .clear {
+ clear: none;
+}
+#orbit-bar .account-menu {
+ right: 5px;
+}
+#orbit-bar .bar-login {
+
+}
+#orbit-bar .bar-login .open, #orbit-bar .open .orbit-bar-account {
+ background-color: #009DDC;
+}
+#orbit-bar .bar-login .dropdown-menu {
+ padding: 0 0 10px;
+ max-width: 260px;
+}
+#orbit-bar .bar-login .dropdown-menu .log {
+ margin: 10px 15px 0;
+ list-style: none outside none;
+}
+#orbit-bar .bar-login .dropdown-menu .log .title {
+ background: url(<%= asset_path 'sign-in-logo2.png' %>) no-repeat center center;
+ height: 70px;
+}
+#orbit-bar .bar-login .dropdown-menu .log form {
+ margin: 0 0 8px;
+}
+#orbit-bar .bar-login .dropdown-menu .log input {
+ display: inline-block;
+ margin: 0;
+}
+#orbit-bar .bar-login .dropdown-menu .log .span2 {
+ width: 182px;
+}
+#orbit-bar .bar-login .dropdown-menu .log .forgot {
+ margin-bottom: 20px;
+ padding: 3px 0 0;
+ float: right;
+ display: inline-block;
+ color: #0088CC;
+}
+#orbit-bar .bar-login .dropdown-menu .log .input-prepend {
+ margin-top: 20px;
+}
+#orbit-bar .bar-login .dropdown-menu .log .remember {
+ margin-top: 5px;
+}
+#orbit-bar .bar-login .dropdown-menu .log .forgot:hover {
+ padding: 3px 0 0;
+ float: right;
+ display: inline-block;
+ color: #005580;
+ text-decoration: underline;
+ background-color: transparent;
+}
+#orbit-bar .bar-login .dropdown-menu .log .btn {
+ width: 220px;
+}
+#orbit-bar .bar-login .dropdown-menu .log .divider {
+ position:relative;
+ overflow: inherit;
+ margin: 20px 0;
+}
+#orbit-bar .bar-login .dropdown-menu .log .divider span {
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ background-color: #FFF;
+ color: #666;
+ top: -9px;
+ left: 100px;
+ font-size:16px;
+ text-align: center;
+}
+#orbit-bar .bar-login .dropdown-menu .register {
+ color: #FFFFFF;
+ margin: 0 15px;
+ width: 188px;
+}
+#main-sidebar {
+ background: url(<%= asset_path 'background.jpg' %>) repeat left top;
+ width: 155px;
+ padding-right: 4px;
+ border-right: 1px solid rgba(0,0,0,.2);
+ position:fixed;
+ top: 31px;
+ z-index: 88;
+}
+#main-sidebar .nav {
+ padding-top: 5px;
+}
+#main-sidebar .nav > li.active > a [class^="icons-"] {
+ background-image: url(<%= asset_path 'icons_pack_white.png' %>);
+}
+#main-sidebar .nav > li > .nav {
+ margin-left: -14px;
+ margin-bottom: 5px;
+ width: 155px;
+ padding: 0;
+ background-color: #FFF;
+ /*border-radius: 0px 0px 8px 0px;
+ -webkit-border-radius: 0px 0px 8px 0px;
+ -moz-border-radius: 0px 0px 8px 0px;*/
+ box-shadow: 0px 2px 1px rgba(0,0,0,0.1);
+ -moz-box-shadow: 0px 2px 1px rgba(0,0,0,0.1);
+ -webkit-box-shadow: 0px 2px 1px rgba(0,0,0,0.1);
+ display: none;
+}
+#main-sidebar .nav > li.active > .nav {
+ display: block;
+}
+#main-sidebar .nav > li > .nav > li > a {
+ margin-left: 0;
+ padding-left: 19px;
+ color: #999;
+}
+#main-sidebar .nav > li > .nav > li > a:hover {
+ color: #000;
+ background-color: #d7eeff;
+}
+#main-sidebar .nav > li > .nav > li.active > a {
+ background-color: #b7b7b7;
+ color: #fff;
+}
+#main-wrap {
+ background-color: #FFF;
+ margin-left:160px;
+ padding-top: 32px;
+ padding-bottom: 45px;
+ position: relative;
+}
+#main-wrap .subnav {
+ height: auto;
+ min-height: 36px;
+}
+#main-wrap .pagination {
+ margin: 18px 0 0;
+ text-align: center;
+}
+.main-list .route-group td {
+ border: none;
+}
+#main-wrap .route-group .breadcrumb {
+ background-image: none;
+ border-radius: 0;
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-width: 0 0 1px 0;
+ box-shadow: none;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ margin-bottom: 0px;
+ padding: 7px 8px 5px;
+}
+#main-wrap .breadcrumb li {
+ font-size: 12px;
+ color: #999;
+}
+.form-actions .btn {
+ margin-bottom: 0;
+}
+#sub-wiget {
+ clear: right;
+ float: right;
+ padding-right: 10px;
+ padding-top: 8px;
+ position: relative;
+ margin-bottom: 13px;
+ width: 304px;
+}
+.main-wiget .widget-box {
+ margin: 5px 0;
+ width: 100%;
+}
+#poststuff .form-actions {
+ background-color: transparent;
+ text-align: right;
+ padding-left: 10px;
+ padding-right: 10px;
+ margin-bottom: -50px;
+ clear: both;
+}
+#poststuff form {
+ margin-bottom: 0;
+}
+#post-body {
+ float: left;
+ clear: left;
+ width: 100%;
+ margin-right: -340px;
+}
+#post-body .title input[type=text] {
+ margin-bottom: 0;
+ width: 100%;
+ height: 30px;
+}
+#post-body .btn-group {
+ margin-left: 5px;
+}
+#post-body .well {
+ margin: 0;
+ border-radius: 0px;
+ -moz-border-radius: 0px;
+ box-shadow: none;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ border-top: none;
+}
+#post-body .editor {
+}
+#post-body-content {
+ padding: 8px 0 8px 6px;
+}
+.filter .accordion-heading > a:hover {
+ text-decoration: none;
+}
+.filter .accordion-group {
+ border-bottom: none;
+ border-top: none;
+ border-left: 1px solid rgba(0,0,0,0.07);
+ border-right: none;
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+ margin-bottom: -1px;
+ position: relative;
+ left: 0;
+ top: 0;
+}
+.filter .accordion-group:last-child {
+ border-right: 1px solid rgba(0,0,0,0.07);
+}
+.filter .accordion-heading .accordion-toggle {
+ padding: 9px 15px;
+}
+.accordion-group .accordion-toggle .caret {
+ border-top-color: #0088CC;
+ margin-top: 6px;
+}
+.filter .active {
+ background-color: #0088CC;
+}
+.filter .active a {
+ color: #FFF;
+}
+.filter form {
+ margin: 5px 10px;
+}
+.filters {
+ background-color: rgba(0,0,0,0.075);
+ -webkit-box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.2);
+ box-shadow: inset 0 2px 3px rgba(0, 0, 0, 0.2);
+}
+.filters > div {
+ background-color: #dadada;
+}
+.filters .btn {
+ margin-bottom: 5px;
+}
+.filters .accordion-inner {
+ border-top: none;
+ padding: 9px 15px 4px;
+}
+.filters .filter-clear {
+ padding: 5px 5px 0;
+ border-top: 1px solid rgba(0,0,0,0.1);
+ text-align: right;
+ margin: 0 5px;
+ -webkit-box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5);
+ -moz-box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5);
+ box-shadow: inset 0 1px 0px rgba(255, 255, 255, 0.5);
+}
+.filters .in {
+ /*border-bottom: 1px solid rgba(0,0,0,0.07)*/
+}
+#tags {
+}
+#tags .tag {
+ line-height: 32px;
+ padding: 0 10px;
+ background-color: #FFFFFF;
+ border-bottom: 1px solid #DDDDDD;
+ border-top: medium none;
+}
+#tags .tag form, #tags .tag form input {
+ margin:0;
+}
+#tags .tagitem {
+ display: inline-block;
+ float: left;
+}
+#tags .action {
+ display: inline-block;
+ float: right;
+}
+.sign-in {
+ width: 360px;
+ margin: 0 auto 70px;
+ background-color: #FFF;
+ -moz-border-radius: 0 0 5px 5px;
+ -webkit-border-radius: 0 0 5px 5px;
+ border-radius: 0 0 5px 5px;
+ -moz-box-shadow: 0 2px 2px rgba(143, 143, 143, 0.38);
+ -webkit-box-shadow: 0 2px 2px rgba(143, 143, 143, 0.38);
+ box-shadow: 0 2px 2px rgba(143, 143, 143, 0.38);
+ border-width: 0px 1px 1px 1px;
+ border-style: none solid solid solid;
+ border-color: transparent #c6c6c6 #c6c6c6 #c6c6c6;
+}
+#signin-header {
+ width: 340px;
+ margin: 30px auto 0;
+ line-height: 25px;
+ padding: 5px 10px;
+ border-width: 1px 1px 0px 1px;
+ border-style: solid solid none solid;
+ border-color: #c6c6c6 #c6c6c6 transparent #c6c6c6;
+ background-color: #006dcc;
+ background-image: -moz-linear-gradient(top, #dadada, #c0c0c0);
+ background-image: -ms-linear-gradient(top, #dadada, #c0c0c0);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dadada), to(#c0c0c0));
+ background-image: -webkit-linear-gradient(top, #dadada, #c0c0c0);
+ background-image: -o-linear-gradient(top, #dadada, #c0c0c0);
+ background-image: linear-gradient(top, #dadada, #c0c0c0);
+ -moz-border-radius: 5px 5px 0px 0px ;
+ -webkit-border-radius: 5px 5px 0px 0px;
+ border-radius: 5px 5px 0px 0px;
+ -moz-box-shadow: 0 1px 0px rgba(20, 20, 20, 0.3);
+ -webkit-box-shadow: 0 1px 0px rgba(20, 20, 20, 0.3);
+ box-shadow: 0 1px 0px rgba(20, 20, 20, 0.3);
+}
+#signin-header h3 {
+ color: #848484;
+ text-shadow: 0 1px 0 #e9e9e9;
+}
+#sign-footer {
+ width: 100%;
+ position:fixed;
+ bottom: 0;
+ height: 40px;
+ background-color: #dadada;
+ color: #7a7a7a;
+ box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.3);
+ -moz-box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.3);
+ -webkit-box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.3);
+}
+#sign-footer p {
+ line-height: 40px;
+ padding: 0 10px;
+ text-align: right;
+}
+.sign-in .control-group label {
+ text-align: left;
+ width: auto;
+ font-size: 15px;
+}
+.sign-in .forgot {
+ padding-top: 5px;
+}
+.sign-in .content {
+ padding: 10px;
+}
+.sign-in .form-actions {
+ padding: 17px 10px 18px;
+ margin: 0;
+ -moz-border-radius: 0px 0px 5px 5px;
+ -webkit-border-radius: 0px 0px 5px 5px;
+ border-radius: 0px 0px 5px 5px;
+}
+.sign-in form {
+ margin: 0;
+}
+.sign-in .control-group .help-inline {
+ display:none;
+}
+.sign-in .error .help-inline {
+ display:inline-block;
+}
+.web-symbol:after {
+ font-family: 'WebSymbolsRegular';
+ content: "{";
+ margin-left: 2px;
+ margin-top: 8px;
+}
+.active .web-symbol:after {
+ content: "}";
+}
+.img-peview {
+ margin-left: 12px;
+}
+.popover img {
+ max-height: 120px;
+ max-width: 100%;
+}
+.popover-inner {
+ width: auto;
+}
+.popover-title {
+ padding: 5px;
+}
+.popover-content {
+ border-radius: 3px;
+ padding: 5px;
+}
+.popover-title {
+ display: none;
+}
+
+.member td.teacher {
+ /*background-color: #AF0045;
+ border-left: 2px solid #AF0045;*/
+}
+.gender {
+ position: absolute;
+ border-radius: 0 0 5px 0;
+ border-width: 10px;
+ margin: 0;
+ border-style: solid;
+ z-index: 10;
+ bottom: 0;
+ right: 0;
+}
+.gender.male {
+ border-color: transparent #41B1D5 #41B1D5 transparent;
+}
+.gender.female {
+ border-color: transparent #DB186E #DB186E transparent;
+}
+.user-info .roles-nav {
+ margin: 0;
+ position: relative;
+ clear: both;
+}
+.user-info .roles-nav li {
+ float: left;
+ list-style: none;
+ background-color: #FFFFFF;
+}
+.user-info .roles-nav li a {
+ text-indent: -9999px;
+ display: block;
+ height: 15px;
+ width: 100px;
+ margin-top: 3px;
+ opacity: 0.3;
+ -moz-opacity: 0.3;
+ filter:alpha(opacity=3);
+}
+.user-info .roles-nav li:first-child a {
+ border-radius: 0 0 0 4px;
+}
+.user-info .roles-nav li:last-child a {
+ border-radius: 0 0 4px 0;
+}
+.user-info .roles-nav li hr {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 3px;
+ margin: 0;
+ border: none;
+ display: none;
+}
+.user-info .roles-nav li.teacher a {
+ background-color: #F36F08;
+}
+.user-info .roles-nav li.student a {
+ background-color: #186AB6;
+}
+.user-info .roles-nav li.staff a {
+ background-color: #139E2F;
+}
+.user-info .roles-nav li.active a {
+ border-bottom: none;
+ height: 18px;
+ margin-top: 0;
+ opacity: 1;
+ -moz-opacity: 1;
+ filter:alpha(opacity=10);
+}
+.user-info .roles-nav li.active hr {
+ display: block;
+}
+.user-info-basic {
+ padding: 20px;
+ min-width: 220px;
+ display: inline-block;
+ float: left;
+ position: relative;
+}
+.user-info-basic .gender {
+ border-radius: 0;
+ top: 0;
+ left: 0;
+ right: auto;
+ bottom: auto;
+}
+.user-info-basic .gender.male {
+ border-color: #41B1D5 transparent transparent #41B1D5;
+}
+.user-info-basic .gender.female {
+ border-color: #DB186E transparent transparent #DB186E;
+}
+.user-info-roles {
+ padding: 20px;
+}
+.user-avatar {
+ overflow: hidden;
+ width: 80px;
+ height: 80px;
+ border-radius: 5px;
+ box-shadow: 0 1px 3px rgba(0,0,0,.8);
+ margin-right: 10px;
+}
+.user-avatar .reflective {
+ background-image: url(<%= asset_path 'reflective.png' %>);
+ background-repeat: no-repeat;
+ background-position: 0;
+ height: 80px;
+ width: 80px;
+ position: absolute;
+}
+.user .user-avatar .reflective {
+ background-image: url(<%= asset_path 'reflective.png' %>);
+ background-repeat: no-repeat;
+ background-position: 0 -20px;
+ height: 80px;
+ width: 80px;
+ position: absolute;
+ top: 10px;
+ left: 10px;
+ opacity: 0;
+ -moz-opacity: 0;
+ filter:alpha(opacity=0);
+}
+.user:hover .user-avatar .reflective {
+ background-position: 0 0;
+ opacity: 1;
+ -moz-opacity: 1;
+ filter:alpha(opacity=10);
+}
+.user-name {
+ font-size: 22px;
+ line-height: 24px;
+ color: #555;
+ margin: 0 0 3px;
+ font-family: Helvetica, "微軟正黑體";
+}
+.user-data {
+ padding: 20px;
+ position: relative;
+}
+.data-block hr {
+ background-color: #666;
+ height: 8px;
+ border: none;
+ margin: 0;
+ border-radius: 5px 5px 0px 0px;
+ -moz-border-radius: 5px 5px 0px 0px;
+ -webkit-border-radius: 5px 5px 0px 0px;
+}
+.data-block .info_input {
+ margin-bottom:50px;
+ position:relative;
+ padding: 10px;
+ background-color: rgba(227,227,227,1);
+ border-radius: 0px 0px 5px 5px;
+ -moz-border-radius: 0px 0px 5px 5px;
+ -webkit-border-radius: 0px 0px 5px 5px;
+ -moz-box-shadow: 0px 1px 0px rgba(0,0,0,.3); /* Firefox */
+ -webkit-box-shadow: 0px 1px 0px rgba(0,0,0,.3);/* Safari 和 Chrome */
+ box-shadow: 0px 1px 0px rgba(0,0,0,.3); /* Opera 10.5 + */
+}
+.data-block .info_input table {
+ width: 100%;
+}
+.data-block .info_input table .list_head td {
+ border-bottom: 1px solid #AAA;
+}
+.teacher hr {
+ background-color: #F36F08;
+}
+.student hr {
+ background-color: #186AB6;
+}
+.staff hr {
+ background-color: #139E2F;
+}
+.view-mode {
+ margin: 4px 20px 0 0;
+}
+.view-mode i {
+ font-size: 14px;
+ line-height: 6px !important;
+}
+.member-abstract, .member-large {
+ padding: 15px;
+}
+.member-abstract ul, .member-large ul {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.member-abstract>ul>li, .member-large>ul>li {
+ margin: 5px;
+ overflow: hidden;
+ border-radius: 5px;
+ box-shadow: 0 1px 3px rgba(0,0,0,.3);
+}
+.member-abstract .user *, .member-large .user * {
+ -webkit-transition: all .3s ease;
+ -moz-transition: all .3s ease;
+ -o-transition: all .3s ease;
+ transition: all .3s ease;
+}
+.member-abstract .user, .member-large .user {
+ background-color: #EDEDED;
+ padding: 10px;
+ position: relative;
+ border-radius: 0 0 5px 5px;
+ width: 360px;
+ -webkit-transition: all .3s ease;
+ -moz-transition: all .3s ease;
+ -o-transition: all .3s ease;
+ transition: all .3s ease;
+}
+.member-abstract .user:hover, .member-large .user:hover {
+ background-color: #333333;
+}
+.member-abstract .user:hover .user-name, .member-large .user:hover .user-name {
+ color: #DDD;
+}
+.member-abstract .user .user-meta {
+ margin-left: 90px;
+}
+.member-abstract .user .user-title span {
+ color: #5e5e5e;
+ font-size: 13px;
+ padding-right: 10px;
+}
+.member-abstract .user:hover .user-title span {
+ color: #AAA;
+}
+.member-abstract .user ul.user-itemborder {
+ margin-top: 8px;
+ border-top: 1px solid #D5D5D5;
+ padding: 4px 0 0;
+}
+.member-abstract .user ul.user-itemborder li, .member-abstract .user ul.user-itemborder li span {
+ color: #333;
+}
+.member-abstract .user:hover ul.user-itemborder {
+ color: #EDEDED;
+ border-top: 1px solid #666;
+}
+.member-abstract .user:hover ul.user-itemborder li, .member-abstract .user:hover ul.user-itemborder li span {
+ color: #EDEDED;
+}
+.member-abstract .user ul.user-itemborder li {
+ width: 33%;
+ font-size: 11px;
+ text-align: center;
+}
+.member-abstract .user ul.user-itemborder li span {
+ font-size: 13px;
+ font-weight: bold;
+ padding-right: 5px;
+}
+.member-large .user {
+ width: 80px;
+ min-height: 125px;
+}
+.member-large .user-avatar {
+ margin-right: 0;
+}
+.member-large .user-name {
+ font-weight: bold;
+ font-size: 13px;
+ width: 80px;
+ line-height: 18px;
+ padding-top: 5px;
+ text-align: center;
+}
+.rolesTag {
+ width: 100%;
+}
+.rolesTag td {
+ height: 6px;
+ background-color: #333;
+}
+.rolesTag td.teacher {
+ background-color: #F38C08;
+}
+.rolesTag td.student {
+ background-color: #186AB6;
+}
+.rolesTag td.staff {
+ background-color: #139E2F;
+}
+.site-map {
+ padding: 15px;
+}
+.site-map .map-block {
+ width: 250px;
+ min-height: 20px;
+ border: 1px solid #dedede;
+ background-color: #E6E6E6;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ margin-bottom: 10px;
+}
+.site-map .map-block ul {
+ margin: 0px;
+ list-style: none;
+ width: 220px \9;
+}
+.site-map .map-block li {
+ font-size: 12px;
+ background-color: #F7F7F7;
+ padding: 5px 15px;
+ border-top: 1px solid #FFF;
+ border-bottom: 1px solid #dedede;
+ display: table;
+ width: 100%;
+}
+.site-map .map-block li span {
+ width: 170px;
+ display: block;
+
+}
+.site-map .map-block li:last-child {
+ border-radius: 0 0 4px 4px;
+ border-bottom: none;
+}
+.site-map .map-block li:hover a {;
+ text-decoration: none;
+}
+.site-map .map-block li.disabled {
+ color: #C9C9C9;
+}
+.site-map .map-block li.disabled .onoff {
+ box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(0,0,0,.2) inset;
+ background-color: #9C9C9C;
+ color: #CACACA;
+}
+.site-map .map-block h4 {
+ line-height: 18px;
+ min-height: 20px;
+ padding: 5px 15px;
+ border-radius: 4px 4px 0 0;
+ box-shadow: 0px 1px 2px #A8A8A8;
+ position: relative;
+ background-image: -moz-linear-gradient(top, #FCFCFC, #DFDFDF);
+ background-image: -ms-linear-gradient(top, #FCFCFC, #DFDFDF);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#FCFCFC), to(#DFDFDF));
+ background-image: -webkit-linear-gradient(top, #FCFCFC, #DFDFDF);
+ background-image: -o-linear-gradient(top, #FCFCFC, #DFDFDF);
+ background-image: linear-gradient(top, #FCFCFC, #DFDFDF);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FCFCFC', endColorstr='#DFDFDF', GradientType=0);
+}
+.site-map .map-block h4 span {
+ width: 170px;
+ display: block;
+}
+.site-map .map-block h4 .onoff {
+}
+.site-map .disabled h4 {
+ color: #CACACA;
+}
+.site-map .disabled h4 .onoff {
+ box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(0,0,0,.2) inset;
+ background-color: #9C9C9C;
+ color: #CACACA;
+}
+.onoff {
+ display: block;
+ background-color: #5EB92B;
+ font-size: 9px;
+ padding: 0px 10px;
+ border-radius: 8px;
+ line-height: 16px;
+ height: 15px;
+ color: #FFF;
+ width: 38px;
+ border: none;
+ box-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5), 0 0 5px rgba(13, 75, 23, 0.5) inset;
+ margin-top: 2px;
+}
+
+.modal.alert-error {
+ color: #B94A48;
+ background-color: #F2DEDE;
+ border-color: #EED3D7;
+}
+.news_paragraph p {
+ line-height: 20px;
+}
+.nav-tabs>li>.edit, .nav-tabs>li>.edit:hover {
+ background-color: #333;
+ color: #FFF;
+ padding-right: 12px;
+}
+.nav-tabs li .icons-pencil {
+ float: right;
+ margin-top: 8px;
+}
+.nav-tabs li a {
+ padding-right: 32px;
+}
+
+
+/*icons*/
+.the-icons i:after {
+ content: attr(class);
+ display: block;
+ font-style: normal;
+ margin-left: 20px;
+ width: 140px;
+}
+.the-icons i {
+ display: block;
+ margin-bottom: 5px;
+}
+[class^="text-"] {
+ font-size: 15px !important;
+}
+.text-blue {
+ color: #0088CC !important;
+}
+.text-red {
+ color: #CC3300 !important;
+}
+.text-yellow {
+ color: #ffcc00 !important;
+}
+.text-orange {
+ color: #f7941d !important;
+}
+.text-purple {
+ color: #a864a8 !important;
+}
+.text-palm {
+ color: #a67c52 !important;
+}
+.text-green {
+ color: #39b54a !important;
+}
+.adbanner-setup {
+ margin-right: 10px;
+ margin-bottom: 30px !important;
+}
+.adbanner-list {
+ border-top: 1px solid #AAA;
+ margin-right: 10px;
+ padding-top: 10px;
+ position: relative;
+}
+.adbanner-list ul {
+ margin: 0px;
+}
+.adbanner-list ul li {
+ list-style: none;
+ margin-left: 0;
+ margin-right: 20px;
+}
+.adbanner-action {
+ margin-bottom: 20px;
+}
+.textarea-height-s {
+ resize: none;
+ max-height: 150px;
+}
+.textarea-height-m {
+ resize: none;
+ max-height: 250px;
+}
+.textarea-height-l {
+ resize: none;
+ max-height: 350px;
+}
+.textarea-height-xl {
+ resize: none;
+ max-height: 500px;
+}
+#banner [id^="slideshow-"] {
+ z-index: 2 !important;
+}
+
+#back_main .editable {
+ position: relative;
+}
+#back_main .editable:after {
+ content: '';
+ clear: both;
+ display: block;
+ visibility: hidden;
+ height: 0;
+}
+
+#back_main .edit_link a {
+ position: absolute;
+ z-index: 10;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ text-indent: -9999px;
+ background: url(<%= asset_path 'editicon.png' %>) no-repeat center center rgba(255,255,255,.8);
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 1);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 1);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 1);
+}
+
+
+#category_id, #module_app_id {
+ width: auto;
+}
+
+[class^="icons-"] {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ vertical-align: text-top;
+ background-image: url(<%= asset_path 'icons_pack.png' %>);
+ background-position: 16px 16px;
+ background-repeat: no-repeat;
+ *margin-right: .3em;
+ margin-right:10px;
+}
+[class^="icons-"]:last-child {
+ *margin-left: 0;
+}
+.icons-white {
+ background-image: url(<%= asset_path 'icons_pack_white.png' %>);
+}
+/*1*/
+.icons-pencil {
+ background-position: 0 0;
+}
+.icons-brush {
+ background-position: -32px 0;
+}
+.icons-pen {
+ background-position: -64px 0;
+}
+.icons-brush-large {
+ background-position: -128px 0;
+}
+.icons-pen-small {
+ background-position: -96px 0;
+}
+.icons-bucket {
+ background-position: -160px 0;
+}
+.icons-eye {
+ background-position: -192px 0;
+}
+.icons-ban {
+ background-position: -224px 0;
+}
+.icons-trash {
+ background-position: -256px 0;
+}
+.icons-zoom {
+ background-position: -288px 0;
+}
+.icons-zoom-out {
+ background-position: -320px 0;
+}
+.icons-zoom-in {
+ background-position: -352px 0;
+}
+.icons-magic {
+ background-position: -384px 0;
+}
+.icons-aim {
+ background-position: -416px 0;
+}
+/*2*/
+.icons-flag {
+ background-position: 0 -32px;
+}
+.icons-paperclip {
+ background-position: -32px -32px;
+}
+.icons-share {
+ background-position: -64px -32px;
+}
+.icons-link {
+ background-position: -96px -32px;
+}
+.icons-tag {
+ background-position: -128px -32px;
+}
+.icons-lock {
+ background-position: -160px -32px;
+}
+.icons-unlock {
+ background-position: -192px -32px;
+}
+.icons-thumbtack {
+ background-position: -224px -32px;
+}
+.icons-pin {
+ background-position: -257px -32px;
+}
+.icons-shield {
+ background-position: -288px -32px;
+}
+.icons-key {
+ background-position: -320px -32px;
+}
+.icons-fire {
+ background-position: -352px -32px;
+}
+.icons-bulls-eye {
+ background-position: -384px -32px;
+}
+.icons-flash {
+ background-position: -416px -32px;
+}
+.icons-time {
+ background-position: -448px -32px;
+}
+.icons-halo {
+ background-position: -480px -32px;
+}
+.icons-hourglass {
+ background-position: -513px -32px;
+}
+.icons-alarm-clock {
+ background-position: -545px -32px;
+}
+.icons-paper {
+ background-position: -577px -32px;
+}
+.icons-banner {
+ background-position: -608px -32px;
+}
+/*3*/
+.icons-phone {
+ background-position: 0px -64px;
+}
+.icons-mobile {
+ background-position: -32px -64px;
+}
+.icons-mail {
+ background-position: -64px -64px;
+}
+.icons-mail-open {
+ background-position: -96px -64px;
+}
+.icons-mail-read {
+ background-position: -128px -64px;
+}
+.icons-content {
+ background-position: -160px -64px;
+}
+.icons-content-out {
+ background-position: -192px -64px;
+}
+.icons-content-in {
+ background-position: -224px -64px;
+}
+.icons-projector {
+ background-position: -256px -64px;
+}
+.icons-tape {
+ background-position: -288px -64px;
+}
+.icons-chat-a {
+ background-position: -320px -64px;
+}
+.icons-chat-b {
+ background-position: -352px -64px;
+}
+.icons-chat-c {
+ background-position: -384px -64px;
+}
+.icons-comment {
+ background-position: -416px -64px;
+}
+.icons-rss {
+ background-position: -448px -64px;
+}
+.icons-ship {
+ background-position: -480px -64px;
+}
+.icons-send {
+ background-position: -512px -64px;
+}
+.icons-bell {
+ background-position: -544px -64px;
+}
+.icons-announcement {
+ background-position: -576px -64px;
+}
+/*4*/
+.icons-contact {
+ background-position: 0 -96px;
+}
+.icons-roll {
+ background-position: -32px -96px;
+}
+.icons-member {
+ background-position: -288px -96px;
+}
+.icons-member-user {
+ background-position: -64px -96px;
+}
+.icons-member-admin {
+ background-position: -96px -96px;
+}
+.icons-member-manager{
+ background-position: -128px -96px;
+}
+.icons-member-plus{
+ background-position: -160px -96px;
+}
+.icons-member-minus{
+ background-position: -192px -96px;
+}
+.icons-member-blockade{
+ background-position: -224px -96px;
+}
+.icons-carte {
+ background-position: -256px -96px;
+}
+.icons-building {
+ background-position: -320px -96px;
+}
+.icons-calendar {
+ background-position: -352px -96px;
+}
+.icons-calendars {
+ background-position: -384px -96px;
+}
+.icons-out {
+ background-position: -416px -96px;
+}
+.icons-desktop {
+ background-position: -448px -96px;
+}
+/*5*/
+.icons-page-blank {
+ background-position: 0px -128px;
+}
+.icons-page {
+ background-position: -32px -128px;
+}
+.icons-page-copy {
+ background-position: -64px -128px;
+}
+.icons-folder {
+ background-position: -96px -128px;
+}
+.icons-folder-open {
+ background-position: -128px -128px;
+}
+.icons-folder-lock {
+ background-position: -160px -128px;
+}
+.icons-folder-plus {
+ background-position: -192px -128px;
+}
+.icons-folder-minus {
+ background-position: -224px -128px;
+}
+.icons-page-plus {
+ background-position: -256px -128px;
+}
+.icons-page-minus {
+ background-position: -288px -128px;
+}
+.icons-page-edit {
+ background-position: -320px -128px;
+}
+.icons-page-download {
+ background-position: -352px -128px;
+}
+/*6*/
+.icons-house-w {
+ background-position: 0px -160px;
+}
+.icons-house-b {
+ background-position: -32px -160px;
+}
+.icons-signs {
+ background-position: -64px -160px;
+}
+.icons-globe {
+ background-position: -96px -160px;
+}
+.icons-map {
+ background-position: -128px -160px;
+}
+.icons-markers {
+ background-position: -160px -160px;
+}
+.icons-barrier {
+ background-position: -192px -160px;
+}
+.icons-assist {
+ background-position: -224px -160px;
+}
+.icons-cones {
+ background-position: -256px -160px;
+}
+.icons-group {
+ background-position: -288px -160px;
+}
+.icons-cuble {
+ background-position: -320px -160px;
+}
+.icons-structure {
+ background-position: -352px -160px;
+}
+.icons-layer {
+ background-position: -384px -160px;
+}
+/*7*/
+.icons-shopcar-a {
+ background-position: 0px -192px;
+}
+.icons-shopcar-b {
+ background-position: -34px -192px;
+}
+.icons-purchase {
+ background-position: -64px -192px;
+}
+.icons-shopcart {
+ background-position: -96px -192px;
+}
+.icons-van {
+ background-position: -128px -192px;
+}
+.icons-form {
+ background-position: -160px -192px;
+}
+.icons-gift {
+ background-position: -192px -192px;
+}
+.icons-credit-card {
+ background-position: -224px -192px;
+}
+.icons-cash {
+ background-position: -256px -192px;
+}
+.icons-assets {
+ background-position: -288px -192px;
+}
+.icons-computer {
+ background-position: -320px -192px;
+}
+.icons-library {
+ background-position: -352px -192px;
+}
+/*8*/
+.icons-dashboard {
+ background-position: 0 -224px;
+}
+.icons-cog {
+ background-position: -32px -224px;
+}
+.icons-cogs {
+ background-position: -64px -224px;
+}
+.icons-tool {
+ background-position: -96px -224px;
+}
+.icons-screwdriver {
+ background-position: -128px -224px;
+}
+.icons-wrench {
+ background-position: -160px -224px;
+}
+.icons-toolbox {
+ background-position: -192px -224px;
+}
+.icons-switch {
+ background-position: -224px -224px;
+}
+.icons-valve {
+ background-position: -256px -224px;
+}
+/*9*/
+.icons-book-cover {
+ background-position: 0px -256px;
+}
+.icons-book-make {
+ background-position: -32px -256px;
+}
+.icons-binder {
+ background-position: -64px -256px;
+}
+.icons-album {
+ background-position: -96px -256px;
+}
+.icons-camera {
+ background-position: -128px -256px;
+}
+.icons-video-camera {
+ background-position: -160px -256px;
+}
+.icons-pillar {
+ background-position: -192px -256px;
+}
+.icons-chart {
+ background-position: -224px -256px;
+}
+.icons-picture {
+ background-position: -256px -256px;
+}
+.icons-pictures {
+ background-position: -288px -256px;
+}
+.icons-brief {
+ background-position: -320px -256px;
+}
+.icons-film {
+ background-position: -352px -256px;
+}
+.icons-asset {
+ background-position: -384px -256px;
+}
+.icons-asset-download {
+ background-position: -416px -256px;
+}
+.icons-asset-upload {
+ background-position: -448px -256px;
+}
+.icons-music {
+ background-position: -480px -256px;
+}
+.icons-book-open-w {
+ background-position: -512px -256px;
+}
+.icons-book-open-b {
+ background-position: -544px -256px;
+}
+.icons-clapper-board {
+ background-position: -576px -256px;
+}
+/*10*/
+.icons-date {
+ background-position: 0px -288px;
+}
+.icons-screen {
+ background-position: -32px -288px;
+}
+.icons-iphone {
+ background-position: -64px -288px;
+}
+.icons-ipad {
+ background-position: -96px -288px;
+}
+.icons-ipod {
+ background-position: -128px -288px;
+}
+.icons-battery-low {
+ background-position: -160px -288px;
+}
+.icons-battery-mid {
+ background-position: -192px -288px;
+}
+.icons-battery-full {
+ background-position: -224px -288px;
+}
+.icons-battery-charge {
+ background-position: -256px -288px;
+}
+/*11*/
+.icons-pie {
+ background-position: 0px -320px;
+}
+.icons-histogram {
+ background-position: -32px -320px;
+}
+.icons-window {
+ background-position: -64px -320px;
+}
+.icons-window-line{
+ background-position: -96px -320px;
+}
+.icons-window-command{
+ background-position: -128px -320px;
+}
+.icons-window-list{
+ background-position: -160px -320px;
+}
+.icons-window-block{
+ background-position: -192px -320px;
+}
+.icons-terminal{
+ background-position: -224px -320px;
+}
+/*12*/
+.icons-heart-w {
+ background-position: 0px -352px;
+}
+.icons-heart-b {
+ background-position: -32px -352px;
+}
+.icons-like {
+ background-position: -64px -352px;
+}
+.icons-hate {
+ background-position: -96px -352px;
+}
+.icons-medal {
+ background-position: -128px -352px;
+}
+.icons-warning {
+ background-position: -160px -352px;
+}
+.icons-check {
+ background-position: -192px -352px;
+}
+.icons-check-box-solid {
+ background-position: -224px -352px;
+}
+.icons-check-box-dot {
+ background-position: -256px -352px;
+}
+.icons-check-2 {
+ background-position: -288px -352px;
+}
+.icons-check-circle-solid {
+ background-position: -320px -352px;
+}
+.icons-check-circle-dot {
+ background-position: -352px -352px;
+}
+.icons-check-circle-b {
+ background-position: -384px -352px;
+}
+.icons-star-thin {
+ background-position: -416px -352px;
+}
+.icons-star {
+ background-position: -448px -352px;
+}
+/*13*/
+.icons- {
+ background-position: -0px -384px;
+}
+/*14*/
+.icons- {
+ background-position: -0px -416px;
+}
+/*15*/
+.icons- {
+ background-position: -0px -448px;
+}
+/*16*/
+.icons- {
+ background-position: -0px -480px;
+}
+/*17*/
+.icons- {
+ background-position: -0px -512px;
+}
+/*18*/
+.icons-help {
+ background-position: -160px -544px;
+}
+.icons- {
+ background-position: -0px -544px;
+}
+/*19*/
+.icons-plus-cube {
+ background-position: -192px -576px;
+}
+.icons-plus {
+ background-position: -288px -576px;
+}
+/*20*/
+.icons-power {
+ background-position: -0px -608px;
+}
+.icons-output {
+ background-position: -32px -608px;
+}
+.icons-col-resize {
+ background-position: -64px -608px;
+}
+.icons-move {
+ background-position: -96px -608px;
+}
+.icons-size-out {
+ background-position: -128px -608px;
+}
+.icons-size-in {
+ background-position: -160px -608px;
+}
+.icons-slash {
+ background-position: -192px -608px;
+}
+.icons-level {
+ background-position: -224px -608px;
+}
+.icons-share {
+ background-position: -256px -608px;
+}
+.icons-share2 {
+ background-position: -288px -608px;
+}
+.icons-re {
+ background-position: -320px -608px;
+}
+.icons-insert {
+ background-position: -352px -608px;
+}
+.icons-insert2 {
+ background-position: -384px -608px;
+}
+.icons-download {
+ background-position: -416px -608px;
+}
+.icons-tag-rignt {
+ background-position: -448px -608px;
+}
+.icons-tag-top {
+ background-position: -480px -608px;
+}
+.icons-tag-bottom {
+ background-position: -512px -608px;
+}
+.icons-tag-left {
+ background-position: -544px -608px;
+}
+.icons-moves {
+ background-position: -576px -608px;
+}
+/*21*/
+.icons- {
+ background-position: -0px -640px;
+}
diff --git a/app/assets/stylesheets/widget.css b/app/assets/stylesheets/widget.css
new file mode 100644
index 000000000..b0431d454
--- /dev/null
+++ b/app/assets/stylesheets/widget.css
@@ -0,0 +1,153 @@
+.widget-size-300 {
+ width:298px;
+}
+.widget-box {
+ background-color: #FFF;
+ overflow: hidden;
+ min-width: 300px;
+ margin: 0 0 5px 5px;
+ position:relative;
+}
+.widget-box .widget-title {
+ margin: 0;
+ font-size: 1.5em;
+ line-height: 1.5em;
+ color: #FFF;
+ padding-left: 5px;
+ border-radius: 5px 5px 0 0;
+ -moz-border-radius: 5px 5px 0 0;
+ -webkit-border-radius: 5px 5px 0 0;
+ background-image: -moz-linear-gradient(top, #B7B7B7, #9d9d9d);
+ background-image: -ms-linear-gradient(top, #B7B7B7, #9d9d9d);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#B7B7B7), to(#9d9d9d));
+ background-image: -webkit-linear-gradient(top, #B7B7B7, #9d9d9d);
+ background-image: -o-linear-gradient(top, #B7B7B7, #9d9d9d);
+ background-image: linear-gradient(top, #B7B7B7, #9d9d9d);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#B7B7B7', endColorstr='#9d9d9d', GradientType=0);
+}
+.widget-box .widget-title [class^="icons-"] {
+ margin: 3px 5px 0 2px;
+}
+.widget-box .widget-content {
+ padding: 10px;
+ border-width: 0 1px 1px;
+ border-style: solid;
+ border-color: #CCCCCC;
+ border-radius: 0 0 5px 5px;
+ -moz-border-radius: 0 0 5px 5px;
+ -webkit-border-radius: 0 0 5px 5px;
+}
+.widget-box .form-horizontal .control-group > label {
+ width: 50px;
+}
+.widget-box .form-horizontal .controls {
+ margin-left: 60px;
+}
+.widget-action {
+ position:absolute;
+ right:1px;
+ top:4px;
+}
+.action {
+ float: left;
+ display:inline-block;
+ margin-right: 5px;
+ opacity: 0.8;
+ filter: alpha(opacity:80);
+ color: #FFF;
+}
+.action:hover {
+ opacity: 1;
+ filter: alpha(opacity:100);
+ cursor: pointer;
+ color: #FFF;
+ text-decoration: none;
+}
+.select-role {
+ display:none;
+ overflow:hidden;
+}
+.file-upload {
+ position:relative;
+ overflow: hidden;
+}
+.file-upload .file-name {
+ white-space: nowrap;
+ overflow: hidden;
+ border-style: solid;
+ border-width: 1px 1px 1px 0;
+ border-color: #CCC;
+ display: inline-block;
+ padding: 4px 10px;
+ height: 20px;
+ line-height: 18px;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+ text-align: left;
+ margin: 0;
+ width: 175px;
+}
+.file-upload .upload {
+ margin:0;
+ padding:0;
+ position:absolute;
+ top: 0;
+ left:0;
+ opacity:.0;
+ font-size: 60px;
+ left: -595px/9;
+ filter: alpha(opacity: 0);
+ outline: none;
+}
+.file-upload .upload:focus {
+ position:absolute;
+}
+.upload-picture {
+ margin-bottom: 5px;
+ text-align: center;
+ width: 276px;
+ overflow: hidden;
+ height: 90px;
+}
+.upload-picture img {
+ left: 0;
+ margin-top: -15%;
+ width: 100%;
+}
+.widget-box .widgetInfo {
+ display: inline-block;
+ text-align: center;
+ width: 255px;
+ margin : 0px 0 5px;
+ padding: 5px 10px;
+}
+.file-upload .input-medium {
+ border-radius: 3px 3px 3px 3px !important;
+ width: 263px;
+ position: relative;
+ z-index: 5;
+}
+#widget-link table {
+ margin-bottom:0
+}
+/*Date*/
+.showDate {
+ border-style: solid;
+ border-width: 1px 0 1px 1px;
+ border-color: #CCC;
+ display: inline-block;
+ float: left;
+ padding: 4px 10px;
+ height: 18px;
+ line-height: 18px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+ text-align: center;
+}
+.calendarInput {
+ position: absolute;
+ visibility: hidden;
+ left: 11px;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/widgets.css b/app/assets/stylesheets/widgets.css
index a44824c0a..aee096159 100644
--- a/app/assets/stylesheets/widgets.css
+++ b/app/assets/stylesheets/widgets.css
@@ -1,6 +1,3 @@
-/*Widget*/
-
-
.widget-size-300 {
width:298px;
}
@@ -12,6 +9,9 @@
position:relative;
}
.widget-box .widget-title {
+ margin: 0;
+ font-size: 1.5em;
+ line-height: 1.5em;
color: #FFF;
padding-left: 5px;
border-radius: 5px 5px 0 0;
@@ -53,12 +53,15 @@
display:inline-block;
margin-right: 5px;
opacity: 0.8;
- filter: alpha(opacity=80);
+ filter: alpha(opacity=80);
+ color: #FFF;
}
.action:hover {
opacity: 1;
- filter: alpha(opacity=80);
+ filter: alpha(opacity=80);
cursor: pointer;
+ color: #FFF;
+ text-decoration: none;
}
.select-role {
display:none;
diff --git a/app/controllers/admin/ad_banners_controller.rb b/app/controllers/admin/ad_banners_controller.rb
index f43c19e52..7f49faf27 100644
--- a/app/controllers/admin/ad_banners_controller.rb
+++ b/app/controllers/admin/ad_banners_controller.rb
@@ -1,8 +1,10 @@
class Admin::AdBannersController < OrbitBackendController
layout "new_admin"
- before_filter :authenticate_user!
+ before_filter :force_order_for_visitor,:only=>[:index]
+ #before_filter :force_order_for_user,:except => [:index]
+ before_filter :for_app_sub_manager,:except => [:index]
before_filter :for_app_manager,:except => [:index,:show,:update,:realtime_preview]
- before_filter :for_app_sub_manager
+
def rename
@ad_banner = AdBanner.find(params[:id])
diff --git a/app/controllers/admin/dashboards_controller.rb b/app/controllers/admin/dashboards_controller.rb
index 991f19af5..cd00b49da 100644
--- a/app/controllers/admin/dashboards_controller.rb
+++ b/app/controllers/admin/dashboards_controller.rb
@@ -1,7 +1,7 @@
-class Admin::DashboardsController < ApplicationController
-
+class Admin::DashboardsController < OrbitBackendController
layout "new_admin"
- before_filter :authenticate_user!
+ #before_filter :set_current_user
+ #before_filter :authenticate_user!, :except => [:index]
# before_filter :is_admin?
def index
diff --git a/app/controllers/admin/designs_controller.rb b/app/controllers/admin/designs_controller.rb
index 9d434ff8d..0b94317eb 100644
--- a/app/controllers/admin/designs_controller.rb
+++ b/app/controllers/admin/designs_controller.rb
@@ -34,14 +34,37 @@ class Admin::DesignsController < OrbitBackendController
def update
@design = Design.find(params[:id])
- if @design.update_attributes(params[:design])
- flash[:notice] = "Successfully updated design and tasks."
- redirect_to admin_designs_url(@design)
- else
- render :action => 'edit'
+ @design.update_attributes(params[:design])
+ # if @design.update_attributes(params[:design])
+ # flash[:notice] = "Successfully updated design and tasks."
+ # redirect_to admin_designs_url(@design)
+ # else
+ # render :action => 'edit'
+ # end
+
+ respond_to do |format|
+ format.js {nil}
end
end
+ def update_file
+ @design = Design.find(params[:id])
+ case params[:type]
+ when 'layout', 'css_default', 'css_reset'
+ @object = @design.send(params[:type])
+ when 'image', 'javascript', 'theme'
+ @object = @design.send(params[:type]).find(params[:object_id])
+ end
+
+ Dir.mktmpdir('f_path') { |dir|
+ temp_file = File.new(dir + '/' + File.basename(@object.file.url), 'w+')
+ temp_file.write(params[:file][:content].force_encoding('UTF-8'))
+ @object.remove_file!
+ @object.file = temp_file
+ @object.save
+ }
+ end
+
def edit_file
@design = Design.find(params[:id])
filename = params[:filename]
@@ -91,6 +114,13 @@ class Admin::DesignsController < OrbitBackendController
end
redirect_to admin_designs_url(:direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
end
+
+ def upload_image
+ @design = Design.find(params[:id])
+ @image = @design.images.build(params[:image])
+ @image.save
+ render :layout => false
+ end
protected
@@ -98,7 +128,6 @@ class Admin::DesignsController < OrbitBackendController
Zip::ZipFile.open(file) { |zip_file|
design = Design.new.from_json(zip_file.read("#{zip_name}/info.json"))
Dir.mktmpdir('f_path') { |dir|
- design.build_layout
themes_entries = []
javascripts_entries = []
images_entries = []
@@ -106,25 +135,11 @@ class Admin::DesignsController < OrbitBackendController
zip_file.entries.each do |entry|
case (path = entry.to_s)
when /\A(#{zip_name})\/(default\.css)\z/ #for default css
- filename = File.basename(entry.to_s)
- temp_file = File.new(dir + '/' + filename, 'w+')
- temp_file.write (zip_file.read entry ).force_encoding('UTF-8')
- default_css = design.build_default_css
- default_css.file = temp_file
- default_css.to_save = true
+ design.build_css_default(:file => get_temp_file(zip_file, dir, entry))
when /\A(#{zip_name})\/(reset\.css)\z/ #for reset css
- filename = File.basename(entry.to_s)
- temp_file = File.new(dir + '/' + filename, 'w+')
- temp_file.write (zip_file.read entry ).force_encoding('UTF-8')
- reset_css = design.build_reset_css
- reset_css.file = temp_file
- reset_css.to_save = true
+ design.build_css_reset(:file => get_temp_file(zip_file, dir, entry))
when /\A(#{zip_name})\/(layout\.html)\z/ #for layout html
- filename = File.basename(entry.to_s)
- temp_file = File.new(dir + '/' + filename, 'w+')
- temp_file.write (zip_file.read entry ).force_encoding('UTF-8')
- design.layout.file = temp_file
- design.layout.to_save=true
+ design.build_layout(:file => get_temp_file(zip_file, dir, entry))
when /\A(#{zip_name})\/(themes)\/.*(\.css)\z/ #for themes css
themes_entries << entry
when /\A(#{zip_name})\/(javascripts)\/.*(\.js)\z/ #for js
@@ -136,12 +151,7 @@ class Admin::DesignsController < OrbitBackendController
['themes', 'javascripts', 'images'].each do |type|
eval("#{type}_entries").each do |entry|
- filename = File.basename entry.to_s
- temp_file = File.new(dir + '/' + filename, 'w+')
- temp_file.write (zip_file.read entry).force_encoding('UTF-8')
- build_and_store = eval("design.#{type}").build
- build_and_store.file = temp_file
- build_and_store.to_save = true
+ eval("design.#{type}").build(:file => get_temp_file(zip_file, dir, entry))
end
end
}
@@ -149,4 +159,11 @@ class Admin::DesignsController < OrbitBackendController
}
end
+ def get_temp_file(zip_file, dir, entry)
+ filename = File.basename(entry.to_s)
+ temp_file = File.new(dir + '/' + filename, 'w+')
+ temp_file.write (zip_file.read entry ).force_encoding('UTF-8')
+ temp_file
+ end
+
end
diff --git a/app/controllers/admin/infos_controller.rb b/app/controllers/admin/infos_controller.rb
index 21306c6e5..5ffa6a069 100644
--- a/app/controllers/admin/infos_controller.rb
+++ b/app/controllers/admin/infos_controller.rb
@@ -32,6 +32,7 @@ class Admin::InfosController < ApplicationController
def update
@attribute = Info.find(params[:id])
+ # binding.pry
@attribute.update_attributes(params[:info])
respond_to do |format|
format.html { redirect_to :action => :index }
diff --git a/app/controllers/admin/module_apps_controller.rb b/app/controllers/admin/module_apps_controller.rb
index bf3661c88..af5290868 100644
--- a/app/controllers/admin/module_apps_controller.rb
+++ b/app/controllers/admin/module_apps_controller.rb
@@ -12,6 +12,11 @@ class Admin::ModuleAppsController < ApplicationController
def reload_frontend_pages
@categories =[]
@module_app = ModuleApp.find(params[:id])
+
+ @frontend_path = @module_app.widgets.keys[0] if ( !@module_app.widgets.blank? && @module_app.widgets[0].blank? )
+
+ @frontend_style = @module_app.widgets[@frontend_path] if ( !@frontend_path.blank? )
+
case @module_app.key
when 'announcement'
@categories = BulletinCategory.all
@@ -22,6 +27,9 @@ class Admin::ModuleAppsController < ApplicationController
when 'web_resource'
@categories = WebLinkCategory.all
@tags = WebResourceTag.all
+ when 'archive'
+ @categories = ArchiveFileCategory.all
+ @tags = ArchiveTag.all
end
respond_to do |format|
format.js {}
diff --git a/app/controllers/admin/module_apps_new_interface_controller.rb b/app/controllers/admin/module_apps_new_interface_controller.rb
index 31718624c..2fd7685e2 100644
--- a/app/controllers/admin/module_apps_new_interface_controller.rb
+++ b/app/controllers/admin/module_apps_new_interface_controller.rb
@@ -6,7 +6,7 @@ class Admin::ModuleAppsNewInterfaceController < OrbitBackendController
layout "new_admin"
def setting
- @sys_users = User.all(conditions: {admin: false}).includes(:avatar)
+ @sys_users = User.all(conditions: {admin: false}).includes(:avatar)
@module_app = ModuleApp.find(params[:module_app_id])
@options_from_collection_for_select_bulletin_categorys = [@module_app].collect{|ma| [ma.title,ma.id] }
# if params.has_key? :category
diff --git a/app/controllers/admin/object_auths_new_interface_controller.rb b/app/controllers/admin/object_auths_new_interface_controller.rb
index fae946664..973f4215c 100644
--- a/app/controllers/admin/object_auths_new_interface_controller.rb
+++ b/app/controllers/admin/object_auths_new_interface_controller.rb
@@ -4,6 +4,7 @@ class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController
def setting
+
@sys_users = User.all(conditions: {admin: false}).includes(:avatar)
@ob_auth = ObjectAuth.find params[:object_auth_id]
@options_from_collection_for_select_ob_auth = @ob_auth.siblings.collect{|oa| [oa.auth_obj.pp_object,oa.id] }
diff --git a/app/controllers/admin/page_parts_controller.rb b/app/controllers/admin/page_parts_controller.rb
index 793f8637f..ed2748c24 100644
--- a/app/controllers/admin/page_parts_controller.rb
+++ b/app/controllers/admin/page_parts_controller.rb
@@ -26,6 +26,13 @@ class Admin::PagePartsController < ApplicationController
@module_app = @part.module_app ? @part.module_app : @module_apps[0]
@r_tag = @part.public_r_tag.blank? ? LIST[:public_r_tags][0] : @part.public_r_tag
@tag_objects = @r_tag.classify.constantize.all rescue nil
+
+ @widget_path = @part.widget_path ? @part.widget_path : @module_app.widgets.keys[0]
+
+ if @module_app.widgets.any?{|b| b.class == Array}
+ @widget_style = @module_app.widgets[@widget_path] if !@widget_path.blank? && !@module_app.widgets.blank?
+ end
+
case @module_app.key
when 'announcement'
@categories = BulletinCategory.all
@@ -36,6 +43,9 @@ class Admin::PagePartsController < ApplicationController
when 'web_resource'
@categories = WebLinkCategory.all
@tags = WebResourceTag.all
+ when 'archive'
+ @categories = ArchiveFileCategory.all
+ @tags = ArchiveTag.all
end
end
@@ -45,6 +55,10 @@ class Admin::PagePartsController < ApplicationController
def update
@part = PagePart.find(params[:id])
+
+ params[:page_part][:widget_field] = params[:page_part][:widget_field].zip( params[:page_part][:widget_field_type] ) if params[:page_part][:widget_field]
+ params[:page_part][:widget_field_type] = nil
+
if @part.update_attributes(params[:page_part])
set_children_sub_menu(@part) if @part.public_r_tag && @part.public_r_tag.eql?('sub_menu')
flash.now[:notice] = t('update.success.content')
@@ -76,7 +90,11 @@ class Admin::PagePartsController < ApplicationController
def reload_widgets
@categories =[]
@module_app = ModuleApp.find(params[:id])
-
+
+ @widget_path = @module_app.widgets.keys[0] if ( @module_app.widgets[0].blank? )
+
+ @widget_style = @module_app.widgets[@widget_path] if ( !@widget_path.blank? )
+
case @module_app.key
when 'announcement'
@categories = BulletinCategory.all
@@ -87,12 +105,25 @@ class Admin::PagePartsController < ApplicationController
when 'web_resource'
@categories = WebLinkCategory.all
@tags = WebResourceTag.all
+ when 'archive'
+ @categories = ArchiveFileCategory.all
+ @tags = ArchiveTag.all
end
respond_to do |format|
format.js {}
end
end
+
+ def reload_widget_styles
+ @module_app = ModuleApp.find(params[:module_app_id])
+
+ @widget_style = @module_app.widgets[params[:id]]
+
+ respond_to do |format|
+ format.js {}
+ end
+ end
def reload_r_tag_options
@r_tag = (ModuleApp.find(params[:id]) rescue nil) || params[:id]
diff --git a/app/controllers/admin/pages_controller.rb b/app/controllers/admin/pages_controller.rb
index f24b0526b..cf935a091 100644
--- a/app/controllers/admin/pages_controller.rb
+++ b/app/controllers/admin/pages_controller.rb
@@ -28,10 +28,22 @@ class Admin::PagesController < ApplicationController
def edit
@item = Page.find(params[:id])
@apps = ModuleApp.excludes(app_pages: nil).entries
+
+ @module_apps = ModuleApp.excludes(widgets: nil).where(enable_frontend: true).order_by(:title, :asc)
+
@designs = Design.all.entries
@design = @item.design ? @item.design : @designs.first
@app_frontend_urls = @item.module_app.app_pages if @item.module_app
+
if @item.module_app
+ @module_app = @item.module_app
+
+ @frontend_path = @item.app_frontend_url ? @item.app_frontend_url : @module_app.widgets.keys[0]
+
+ if @module_app.widgets.any?{|b| b.class == Array}
+ @frontend_style = @module_app.widgets[@frontend_path] if !@frontend_path.blank? && !@module_app.widgets.blank?
+ end
+
case @item.module_app.key
when 'announcement'
@categories = BulletinCategory.all
@@ -42,9 +54,13 @@ class Admin::PagesController < ApplicationController
when 'web_resource'
@categories = WebLinkCategory.all
@tags = WebResourceTag.all
+ when 'archive'
+ @categories = ArchiveFileCategory.all
+ @tags = ArchiveTag.all
end
else
@categories = nil
+ @module_app = @module_apps[0]
end
end
@@ -79,6 +95,9 @@ class Admin::PagesController < ApplicationController
@item.page_contexts.build(:create_user_id => current_user.id, :update_user_id => current_user.id )
end
+ params[:page][:frontend_field] = params[:page][:frontend_field].zip( params[:page][:frontend_field_type] ) if params[:page][:frontend_field]
+ params[:page][:frontend_field_type] = nil
+
if @item.update_attributes(params[:page])
flash[:notice] = t('update.success.page')
respond_to do |format|
diff --git a/app/controllers/admin/plugins_controller.rb b/app/controllers/admin/plugins_controller.rb
new file mode 100644
index 000000000..feeff300c
--- /dev/null
+++ b/app/controllers/admin/plugins_controller.rb
@@ -0,0 +1,17 @@
+class Admin::PluginsController < ApplicationController
+
+ layout "new_admin"
+
+ def index
+
+ @plugins = OrbitApp::Module::Registration.all
+
+ if(!params[:show_plugin_profile].nil?)
+ @right_partial = OrbitApp::Plugin::Registration.find_by_key(params[:show_plugin_profile]).profile_partial_path rescue 'plugin_summary'
+ else
+ @right_partial = "admin/users_new_interface/plugin_summary"
+ end
+
+ end
+
+end
diff --git a/app/controllers/admin/purchases_controller.rb b/app/controllers/admin/purchases_controller.rb
index ab5b047de..b259c12ff 100644
--- a/app/controllers/admin/purchases_controller.rb
+++ b/app/controllers/admin/purchases_controller.rb
@@ -71,8 +71,8 @@ class Admin::PurchasesController < ApplicationController
Dir.mktmpdir('f_path') { |dir|
build_file(orig_zip, zip_name, dir, design.layout) if design.layout
- build_file(orig_zip, zip_name, dir, design.default_css) if design.default_css
- build_file(orig_zip, zip_name, dir, design.reset_css) if design.reset_css
+ build_file(orig_zip, zip_name, dir, design.css_default) if design.css_default
+ build_file(orig_zip, zip_name, dir, design.css_reset) if design.css_reset
['themes', 'javascripts', 'images'].each do |type|
design.send(type).each do |object|
diff --git a/app/controllers/admin/tags_controller.rb b/app/controllers/admin/tags_controller.rb
index d8d59f52c..cd5e00c93 100644
--- a/app/controllers/admin/tags_controller.rb
+++ b/app/controllers/admin/tags_controller.rb
@@ -1,9 +1,13 @@
-class Admin::TagsController < ApplicationController
+class Admin::TagsController < OrbitBackendController
+ before_filter :force_order_for_visitor,:only=>[:index]
+ before_filter :force_order_for_user,:except => [:index]
+ before_filter :for_app_sub_manager,:except => [:index]
- layout 'new_admin'
- before_filter :authenticate_user!
- before_filter :is_admin?
- before_filter :set_module_app
+
+ # layout 'new_admin'
+ # before_filter :authenticate_user!
+ # before_filter :is_admin?
+ # before_filter :set_module_app
def index
get_tags
diff --git a/app/controllers/admin/users_new_interface_controller.rb b/app/controllers/admin/users_new_interface_controller.rb
new file mode 100644
index 000000000..faf14f3a1
--- /dev/null
+++ b/app/controllers/admin/users_new_interface_controller.rb
@@ -0,0 +1,162 @@
+class Admin::UsersNewInterfaceController < ApplicationController
+
+ layout "new_admin"
+ before_filter :authenticate_user!
+ before_filter :set_attribute, :only => [:index, :show, :new, :edit]
+
+ def index
+ get_tags
+ get_sub_roles
+
+ page_num = params[:page] || 1
+ @users = []
+
+ render case params[:at]
+ when 'summary'
+ @users=User.page(page_num).per(12).includes('avatar')
+ "index_summary"
+ when 'thumbnail'
+ @users=User.page(page_num).per(36).includes('avatar')
+ "index_thumbnail"
+ else
+ @users=User.page(page_num).per(10).includes('avatar')
+ "index"
+ end
+ end
+
+ def show
+ @user = User.find(params[:id])
+ @plugins = OrbitApp::Module::Registration.all
+
+ @profile_data = []
+ @teacher_data = []
+ @student_data = []
+ @staff_data = []
+
+
+ attribute_values = @user.attribute_values.reject{|att_val|
+ # binding.pry if(att_val.id.to_s == '507fa1295789b52a540000e0')
+ !att_val.attribute_field.locale and (att_val.attribute_field.neutral_for != I18n.locale.to_s)
+ }
+
+ attribute_values.each{|att_val|
+ @profile_data.push({:name => att_val.attribute_field.title,:value =>att_val.get_value_by_locale(I18n.locale)}) if att_val.attribute_field.attribute.key=="profile" rescue false
+ }
+
+
+ if(!params[:show_plugin_profile].nil?)
+ @right_partial = OrbitApp::Plugin::Registration.find_by_key(params[:show_plugin_profile]).profile_partial_path rescue 'plugin_summary'
+ else
+ @right_partial = "plugin_summary"
+ end
+
+ # @user.attribute_values.each{|att_val|
+ # @teacher_data.push({:name => att_val.attribute_field.title,:value =>att_val[I18n.locale]})
+ # }
+
+ # @user.attribute_values.each{|att_val|
+ # @student_data.push({:name => att_val.attribute_field.title,:value =>att_val[I18n.locale]})
+ # }
+
+ # @user.attribute_values.each{|att_val|
+ # @staff_data.push({:name => att_val.attribute_field.title,:value =>att_val[I18n.locale]})
+ # }
+
+ # [ {:name=> "1",:value =>"Matt"},{:name=> "2",:value =>"Mark"},{:name=> "3",:value =>"Luke"},{:name=> "4",:value =>"John"} ]
+
+ get_info_and_roles
+ end
+
+ def new
+ @user = User.new
+ # @disable_all_field = true
+ @form_index = 0
+ get_info_and_roles
+ end
+
+ def create
+ binding.pry
+ puts params.to_yaml
+ # attribute_values_key = params[:user].has_key?('new_attribute_values') ? 'new_attribute_values' : 'attribute_values'
+ # attribute_values = params[:user].delete(attribute_values_key)
+ @user = User.new(params["user"])
+ # attribute_values.to_hash.each{|key,value|
+ # @user.attribute_values.build(value)
+ # }
+ # @user.rebuild_sub_roles_from_attribute_values!(attribute_values)
+ if @user.save
+ flash[:notice] = t('create.success.user')
+ redirect_to :action => :index
+ else
+ @form_index = 0
+ render :action => :new
+ end
+ end
+
+ def temp_edit
+ @user = User.find(params[:id])
+ @form_index = 0
+ get_info_and_roles
+ end
+
+ def edit
+ # @disable_all_field = false
+ @user = User.find(params[:id])
+ @form_index = 0
+ get_info_and_roles
+ end
+
+ def update
+ @user = User.find(params[:id])
+ @user.update_attributes(params[:user])
+ attribute_values_key = params[:user].has_key?('new_attribute_values') ? 'new_attribute_values' : 'attribute_values'
+ attribute_values = params[:user].delete(attribute_values_key)
+ # @user.rebuild_sub_roles_from_attribute_values!(attribute_values)
+ @user.save
+ redirect_to :action => :show
+ # # Update changes to the avatar
+ # @user.remove_avatar! if params[:file]
+ # @user.avatar = params[:file] if params[:file]
+
+ # if @user.id.to_s.eql?(session['warden.user.user.key'][1].to_s) && @user.admin != params[:user][:admin].to_i.to_b
+ # flash.now[:error] = t(:cant_revoke_self_admin)
+ # end
+ # if !flash[:error] && @user.update_attributes(params[:user])
+ # flash[:notice] = t('update.success.user')
+ # redirect_to :action => :index
+ # else
+ # get_info_and_roles
+ # render :action => :edit
+ # end
+ end
+
+ def destroy
+ if params[:id].eql?(session['warden.user.user.key'][1].to_s)
+ flash[:error] = t(:cant_delete_self)
+ else
+ @user = User.find(params[:id])
+ @user.destroy
+ end
+
+ redirect_to :action => :index
+ end
+
+ protected
+ def get_tags
+ @sub_role_tags = SubRoleTag.all
+ end
+
+ def get_sub_roles
+ @sub_roles = SubRole.all
+ end
+
+ def get_info_and_roles
+ @infos = Info.excludes('disabled' => true)
+ @roles = Role.excludes('disabled' => true)
+ end
+
+ def set_attribute
+ @class = 'users'
+ end
+
+end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index b969911e2..e82365e51 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,15 +1,15 @@
class ApplicationController < ActionController::Base
protect_from_forgery
-
- include ParserFrontEnd, ParserBackEnd
+
+ include ParserFrontEnd, ParserBackEnd, ApplicationHelper
layout :layout_by_resource
- helper :all
+ helper :admin
before_filter :set_locale, :set_site
def set_current_user
- User.current = current_user
+ User.current = current_or_guest_user
end
def front_end_available(module_app_title='')
@@ -48,14 +48,29 @@ class ApplicationController < ActionController::Base
redirect_to root_path
end
- # Check if the current_user is admin
+ # Check if the current_user is admin,if not redirect
def is_admin?
- current_user.admin? ? true : auth_failed_in_backend
+ current_or_guest_user.admin? ? true : auth_failed_in_backend
end
- def is_manager?
- @module_app.managing_users.include?(current_user) || is_admin?
- end
+ # def is_manager?
+ # @module_app.is_manager?(current_or_guest_user) || is_admin?
+ # end
+
+ # # Check if the current_user is admin
+ # def is_member?
+ # if (current_user rescue false)
+ # return true
+ # end
+ # return false
+ # end
+
+ # def is_guest?
+ # if session[:guest_user_id]
+ # return true
+ # end
+ # return false
+ # end
def for_admin_only
if is_admin?
@@ -76,7 +91,7 @@ class ApplicationController < ActionController::Base
end
def for_app_sub_manager
- if (@module_app.sub_managing_users.include?(current_user) || is_manager?)
+ if (@module_app.sub_managing_users.include?(current_or_guest_user) || is_manager?)
true
else
flash[:error] = t("access.denied.app.not_sub_manager")
@@ -85,7 +100,7 @@ class ApplicationController < ActionController::Base
end
def for_app_user
- if (@module_app.app_auth.auth_users.include?(current_user) || for_app_sub_manager )
+ if (@module_app.app_auth.auth_users.include?(current_or_guest_user) || for_app_sub_manager )
true
else
flash[:error] = t("access.denied.app.not_authed_user")
@@ -95,7 +110,7 @@ class ApplicationController < ActionController::Base
def check_object_premission(obj,title)
flash[:error] = t("access.denied.object")
- auth_failed_in_backend unless (obj.get_object_auth_by_title(title).auth_users.include?(current_user) || is_manager? || is_admin? )
+ auth_failed_in_backend unless (obj.get_object_auth_by_title(title).auth_users.include?(current_or_guest_user) || is_manager? || is_admin? )
end
# Render the page
@@ -191,6 +206,17 @@ class ApplicationController < ActionController::Base
[shift_out] + a
end
end
+ # called (once) when the user logs in, insert any code your application needs
+ # to hand off from guest_user to current_user.
+ def logging_in
+ # For example:
+ # guest_comments = guest_user.comments.all
+ # guest_comments.each do |comment|
+ # comment.user_id = current_user.id
+ # comment.save
+ # end
+ end
+
def render_main_rss
ret = ''
diff --git a/app/controllers/desktop_appstore_controller.rb b/app/controllers/desktop_appstore_controller.rb
new file mode 100644
index 000000000..05701891d
--- /dev/null
+++ b/app/controllers/desktop_appstore_controller.rb
@@ -0,0 +1,101 @@
+class DesktopAppstoreController< ApplicationController
+
+ def appstore
+ render "desktop/appstore", :layout => false
+ end
+
+ def widgets
+ render "desktop/appstore/widgets", :layout => false
+ end
+
+ def onlinestore
+ render "desktop/appstore/onlinestore", :layout => false
+ end
+
+ def getuserwidgets
+ @widgets = current_user.desktop.desktop_widgets
+ @groups = Array.new
+ @sections = current_user.desktop.sections
+
+ @sections.each do |section|
+ @groups << section.groups
+ end
+
+ @widgets.each do |widget|
+ @count = 0;
+ @sectionids = Array.new
+ @groups.each do |group|
+ group.each do |grp|
+ @widge = 0
+ @gid = widget.id.to_s
+ @widge = grp.tiles.where(:data_content.all => [@gid]).count
+ @count = @count + @widge
+ if @widge > 0
+ @sectionids << grp.section_id
+ end
+ end
+ end
+ if @count > 0
+ widget.status = "Installed"
+ widget.section = @sectionids
+ else
+ widget.status = "Downloaded"
+ end
+ end
+ render :json=>@widgets.to_json
+ end
+
+ def widgets_settings
+ what = params["what"]
+ @widgetid = params["widget"]
+ @sectionid = params["section"]
+ @msg = Array.new
+ case what
+ when "remove"
+ @section = Section.find(@sectionid)
+ @groups = @section.groups
+ @groups.each do |group|
+ @tile = group.tiles.where(:data_content.all => [@widgetid])
+ if @tile.count > 0
+ @thistile = @tile
+ end
+ end
+ @t = Tile.find(@thistile.first.id)
+ @t.delete
+ @msg << {"success"=>true}
+ when "add"
+ @widget = current_user.desktop.desktop_widgets.find(@widgetid)
+ @section = Section.find(@sectionid)
+ @groups = @section.groups
+ @totalwidgets = 0
+ @groups.each do |group|
+ @tile = group.tiles.where(:data_content.all => [@widgetid]).count
+ if @tile > 0
+ @msg << {"success"=>false,"error"=>"Duplicate widget"}
+ else
+ no_of_widgets = group.tiles.where(:data_category.all => ["widget"]).count
+ @totalwidgets = @totalwidgets + no_of_widgets
+ end
+ end
+ if @totalwidgets >= 12
+ @msg << {"success"=>false,"error"=>"Section full"}
+ else
+ wshape = @widget.shape
+ wdata_content = @widgetid
+ wdata_category = "widget"
+ wname = @widget.name
+ if @groups.first.tiles.where(:data_category.all => ["widget"]).count >= 6
+ groupid = @groups.last.id
+ else
+ groupid = @groups.first.id
+ end
+ Tile.create(data_category: wdata_category,data_content: wdata_content, group_id: groupid, position: 10, title: wname, shape: wshape)
+ @msg << {"success"=>true}
+ end
+ end
+
+ render :json=>@msg.to_json
+ end
+
+end
+
diff --git a/app/controllers/desktop_controller.rb b/app/controllers/desktop_controller.rb
new file mode 100644
index 000000000..286ec1c46
--- /dev/null
+++ b/app/controllers/desktop_controller.rb
@@ -0,0 +1,185 @@
+class DesktopController< ApplicationController
+ layout 'desktop'
+ before_filter :authenticate_user!
+
+ #to load pages...
+
+ def index
+ @desktop = current_user.desktop
+ @currentusername = current_user.name
+ @title = "Desktop - " + @currentusername
+ @section = @desktop.sections.first
+ end
+
+ def desktop
+ render :layout => false
+ end
+
+ def app_manager
+ render :layout => false
+ end
+
+ def sections
+ render :layout => false
+ end
+
+ def settings
+ render :layout => false
+ end
+
+ def settingthemes
+ @themes = DesktopTheme.all
+ # raise @themes.inspect
+ render "desktop/settings/themes", :layout => false
+ end
+
+ def settingsections
+ render "desktop/settings/sections", :layout => false
+ end
+
+ def settingconnection
+ render "desktop/settings/connections", :layout => false
+ end
+
+
+ #ajax data load....
+
+ def save_desktop_settings
+ @desktop = Desktop.find(params["desktopid"])
+ @savewhat = params["save"]
+ case @savewhat
+ when "theme"
+ @desktop.update_attributes(:theme => params["theme"])
+ @desktop.update_attributes(:wallpaper => nil)
+ when "desktopnames"
+ @sections = @desktop.sections
+ x = 0;
+ @sections.each do |section|
+ @desktopnewnames = params["desktopnms"]
+ section.update_attributes(:name => @desktopnewnames[x] )
+ x = x+1
+ end
+ when "appnewsection"
+ @section = Section.find(params["newsectionid"])
+ @groups = @section.groups
+ @app = Tile.find(params["appid"])
+ @groups.each do |group|
+ @tiles = group.tiles.where(:data_category.all => ["app"])
+ if @tiles.length < 12
+ @app.update_attributes(:group_id => group.id)
+ break
+ end
+ end
+ when "customtheme"
+ @desktop.update_attributes(:theme => "custom")
+ @desktop.update_attributes(:customtheme => params['theme'])
+ when "wallpaper"
+ @desktop.update_attributes(:wallpaper => params["wallpapernm"])
+ end
+ a = Array.new
+ a << {"success"=>"true"}
+ render :json=>a.to_json
+ end
+
+ def get_desktop_settings
+ @desktop = Desktop.find(params["desktopid"])
+ @getwhat = params["get"]
+ case @getwhat
+ when "desktop"
+ render :json => @desktop.to_json
+ when "sectionnames"
+ secnames = Array.new
+ @sections = @desktop.sections
+ @sections.each do |section|
+ secnames << section.name
+ end
+ render :json => secnames.to_json
+ when "theme"
+ @theme = @desktop.theme
+ render :json => @theme.to_json
+ end
+ end
+
+ def getgroups
+ @section = Section.find(params["sectionid"])
+ @groups = @section.groups
+ a = Array.new
+ @groups.each do |group|
+ a << group.tiles
+ end
+ render :json =>a.to_json
+ end
+
+ def getsectionlist
+ @desktop = Desktop.find(params["desktopid"])
+ @sections = @desktop.sections
+ render :json => @sections.to_json
+ end
+
+ def temp_func
+ @section = Section.find(params["sectionid"])
+ @groups = @section.groups
+
+ @groups.each do |group|
+ a = 1;
+ @tiles = group.tiles
+ @tiles.each do |tile|
+ tile.update_attributes({:data_category => "widget",:data_content => "temp", :position => a})
+ a = a+1;
+ end
+ end
+ b = Array.new
+ b << {"success"=>"true"}
+ render :json=>b.to_json
+ end
+
+ def getapplist
+ @desktop = Desktop.find(params["desktopid"])
+ @sections = @desktop.sections
+ a = Array.new
+ @sections.each do |section|
+ @groups = section.groups
+ @groups.each do |group|
+ @tiles = group.tiles.where(:data_category.all => ["app"])
+ a << @tiles
+ end
+ end
+ render :json=>a.to_json
+ end
+
+ def newpositions
+ @newpositions = params["newpos"]
+ @section = Section.find(params["sectionid"])
+ @groupids = params["groupids"]
+ @groups = @section.groups
+ z = 0
+ @newpositions.each do |grp|
+ x = 1
+ grp.each do |tileid|
+ if x != 1
+ y = 1
+ tileid.each do |id|
+ @tile = Tile.find(id)
+ @tile.update_attributes({:position => y})
+ if @tile.group_id != @groupids[z]
+ @tile.update_attributes({:group_id => @groupids[z]})
+ end
+ y = y + 1
+ end
+ z = z + 1
+ end
+ x = x + 1
+ end
+ end
+ b = Array.new
+ b << {"success"=>"true"}
+ render :json=>b.to_json
+ end
+
+ def forgmail
+
+ feed = Net::HTTP.get_response(URI.parse("https://mail.google.com/mail/feed/atom")).body
+ render :xml=>feed
+ end
+
+end
\ No newline at end of file
diff --git a/app/controllers/desktop_orbit_controller.rb b/app/controllers/desktop_orbit_controller.rb
new file mode 100644
index 000000000..d2fa9bbc3
--- /dev/null
+++ b/app/controllers/desktop_orbit_controller.rb
@@ -0,0 +1,52 @@
+class DesktopOrbitController< ApplicationController
+
+ def orbit
+ render "desktop/orbit", :layout => false
+ end
+
+ def gettimelinespan
+ @get = params['get']
+ case @get
+ when "papers"
+ firstpaper = current_user.papers.all.first
+ lastpaper = current_user.papers.all.desc(:created_at).last
+ endyear = Integer(lastpaper.created_at.strftime("%Y"))
+ startyear = Integer(firstpaper.created_at.strftime("%Y"))
+ end
+ render :json=>{"startyear"=>startyear,"endyear"=>endyear}.to_json
+ end
+
+ def eventajaxload
+ @limit = 15
+ @fromdate = params["from"]
+ @fromdate[0] = Integer(@fromdate[0])
+ @fromdate[1] = Integer(@fromdate[1])
+ @totalpapers = 0
+ @lastpaper = current_user.papers.all.desc(:created_at).last
+ @date = Date.new(Integer(@lastpaper.created_at.strftime("%Y")),Integer(@lastpaper.created_at.strftime("%m")))
+ @data = Array.new
+ while @totalpapers < @limit
+ if Date.new(@date.year,@date.month-1) > Date.new(@fromdate[0],@fromdate[1])
+ break
+ end
+ if(@fromdate[1] == 12)
+ @papers = current_user.papers.where(:created_at.gt => Date.new(@fromdate[0],@fromdate[1]),:created_at.lt => Date.new(@fromdate[0]+1,1)).desc(:created_at)
+ else
+ @papers = current_user.papers.where(:created_at.gt => Date.new(@fromdate[0],@fromdate[1]),:created_at.lt => Date.new(@fromdate[0],@fromdate[1]+1)).desc(:created_at)
+ end
+ if(@papers.length > 0)
+ @data << {"papers" => @papers}
+ end
+ @totalpapers = @totalpapers + @papers.length
+
+ @fromdate[1] = @fromdate[1]-1
+ if(@fromdate[1] == 0)
+ @fromdate[1] = 12
+ @fromdate[0] = @fromdate[0] - 1
+
+ end
+
+ end
+ render :json=>@data.to_json
+ end
+end
\ No newline at end of file
diff --git a/app/controllers/desktop_publications_controller.rb b/app/controllers/desktop_publications_controller.rb
new file mode 100644
index 000000000..14307022a
--- /dev/null
+++ b/app/controllers/desktop_publications_controller.rb
@@ -0,0 +1,74 @@
+class DesktopPublicationsController< ApplicationController
+ def journal_p
+ render "desktop/journal_p", :layout => false
+ end
+
+ def journal_p_list
+ render "desktop/journal_pages/list", :layout => false
+ end
+
+ def journal_p_add
+ render "desktop/journal_pages/add", :layout => false
+ end
+
+ def books
+ render "desktop/books", :layout => false
+ end
+
+ def books_list
+ render "desktop/books/list", :layout => false
+ end
+
+ def books_add
+ render "desktop/books/add", :layout => false
+ end
+
+ def seminar_p
+ render "desktop/seminar_p", :layout => false
+ end
+
+ def seminar_p_list
+ render "desktop/seminar_pages/list", :layout => false
+ end
+
+ def seminar_p_add
+ render "desktop/seminar_pages/add", :layout => false
+ end
+
+ def create_journal
+ Journal.create(user_id: current_user.id, title: "Ice Cream Sandwich")
+ b = Array.new
+ b << {"success"=>"true"}
+ render :json=>b.to_json
+ end
+
+ def getjournals
+ @journals = current_user.journals
+ data = Array.new
+ @journals.each do |journal|
+ @papers = journal.papers.all
+ data << {"title" => journal.title, "papers" => @papers}
+ end
+ render :json=>data.to_json
+ end
+
+ def delete_journal
+ @journals = Journal.find("")
+ @journals.delete
+ b = Array.new
+ b << {"success"=>"true"}
+ render :json=>b.to_json
+ end
+
+ def update_journal
+ @journal = Journal.find("4ff2d6ebbd98eb02b9000017")
+ @papers = @journal.papers
+ @papers.each do |paper|
+ paper.update_attributes(:user_id => current_user.id)
+ end
+ b = Array.new
+
+ b << {"success"=>"true"}
+ render :json=>b.to_json
+ end
+end
diff --git a/app/controllers/desktop_research_controller.rb b/app/controllers/desktop_research_controller.rb
new file mode 100644
index 000000000..5e528762b
--- /dev/null
+++ b/app/controllers/desktop_research_controller.rb
@@ -0,0 +1,26 @@
+class DesktopResearchController< ApplicationController
+
+ def research_d
+ render "desktop/research_d", :layout=>false
+ end
+ def research_d_list
+ render "desktop/research_domain/list", :layout=>false
+ end
+
+ def research_d_add
+ render "desktop/research_domain/add", :layout=>false
+ end
+
+ def research_p
+ render "desktop/research_p", :layout=>false
+ end
+ def research_p_list
+ render "desktop/research_project/list", :layout=>false
+ end
+
+ def research_p_add
+ render "desktop/research_project/add", :layout=>false
+ end
+
+
+end
\ No newline at end of file
diff --git a/app/controllers/orbit_backend_controller.rb b/app/controllers/orbit_backend_controller.rb
index b43a6b9af..0ac853edb 100644
--- a/app/controllers/orbit_backend_controller.rb
+++ b/app/controllers/orbit_backend_controller.rb
@@ -1,12 +1,12 @@
class OrbitBackendController< ApplicationController
- before_filter :force_order,:except => [:public]
- before_filter :setup_vars
- before_filter :set_current_user
+ #before_filter :setup_vars
+ #before_filter :set_current_user
# before_filter {|c| c.front_end_available(@app_title)}
# before_filter :check_user_can_use
include OrbitCoreLib::PermissionUnility
include AdminHelper
+ include ApplicationHelper
layout 'new_admin'
@@ -18,8 +18,16 @@ class OrbitBackendController< ApplicationController
end
private
-
- def force_order
+
+ def force_order_for_visitor
+ setup_vars
+ set_current_user
+ end
+
+
+ def force_order_for_user
+ setup_vars
+ set_current_user
authenticate_user!
check_user_can_use
end
diff --git a/app/controllers/otheraccounts_controller.rb b/app/controllers/otheraccounts_controller.rb
new file mode 100644
index 000000000..454f108ee
--- /dev/null
+++ b/app/controllers/otheraccounts_controller.rb
@@ -0,0 +1,78 @@
+class OtheraccountsController< ApplicationController
+ require 'open-uri'
+ require 'rexml/document'
+ require 'net/http'
+ require 'net/https'
+ # require 'twitter'
+ include REXML
+
+ def saveaccountinfo
+ @dowhat = params['dowhat']
+ @email = params['email']
+ @password = params['password']
+ @account = params['account']
+ case @dowhat
+ when "new"
+ OtherAccount.create(user_id: current_user.id, email: @email, encrypted_password: @password, type: @account)
+ when "edit"
+ @otheraccount = OtherAccount.where(:type.all => [@account],:user_id.all => [current_user.id]) rescue nil
+ @otheraccount.first.update_attributes(:email => @email, :encrypted_password => @password)
+ when "delete"
+ @otheraccount = OtherAccount.where(:type.all => [@account], :user_id.all => [current_user.id]) rescue nil
+ @otheraccount.destroy_all
+ end
+ a = Array.new
+ a << {"success"=>"true"}
+ render :json=>a.to_json
+ end
+
+ def gmail
+ @gmailaccount = OtherAccount.where(:type.all => ["gmail"],:user_id.all => [current_user.id]) rescue nil
+ if @gmailaccount.first != nil
+ @decrypted_password = @gmailaccount.first.encrypted_password.decrypt
+ @email = @gmailaccount.first.email
+ url = URI.parse("https://mail.google.com/mail/feed/atom")
+ #url = URI.parse("https://www.google.com/m8/feeds/contacts/default/full")
+ req = Net::HTTP::Get.new(url.path)
+ req.basic_auth @email, @decrypted_password
+ req.content_type = 'text/xml'
+
+ http = Net::HTTP.new(url.host, url.port)
+ http.use_ssl = true
+ response = http.start { |http| http.request(req) }
+
+ root = Document.new(response.read_body).root
+ render :text=>root
+ else
+ msg = "true Account setting problem. "
+ respond_to do |m|
+ m.xml {render :xml=>msg}
+ end
+ end
+ end
+
+ def twitter
+ # token = "Yh9qYe0lhWk27TZJamnhrA"
+ # secret = "iBgxJ5BrxfGFLkp7aB6pyCSzd0zcJiYDqJGFBK6Wdo"
+ # oauth = Twitter::OAuth.new(token,secret)
+
+ # oauth_token = oauth.request_token.token
+ # oauth_secret = oauth.request_token.secret
+ #require File.dirname(__FILE__)+"/../lib/contacts"
+ @gmailaccount = OtherAccount.where(:type.all => ["gmail"],:user_id.all => [current_user.id]) rescue nil
+ if @gmailaccount.first != nil
+ login = @gmailaccount.first.encrypted_password.decrypt
+ password = @gmailaccount.first.email
+
+ @contacts = Contacts::Gmail.new(login, password).contacts
+
+ render :json => @contacts.to_json
+ end
+
+ end
+
+ def getaccounts
+ @accounts = OtherAccount.where(:user_id.all => [current_user.id]).without(:encrypted_password)
+ render :json => @accounts.to_json
+ end
+end
\ No newline at end of file
diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb
index bfc4f403b..4c3084dd2 100644
--- a/app/controllers/pages_controller.rb
+++ b/app/controllers/pages_controller.rb
@@ -17,7 +17,8 @@ class PagesController < ApplicationController
def show
#begin
@item = Item.first(:conditions => {:path => params[:page_name]})
- if @item && @item.is_published #&& (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s))
+ #binding.pry
+ if @item && @item.is_published && (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s))
impressionist(@item)
case @item.class.to_s
when 'Page'
@@ -36,7 +37,7 @@ class PagesController < ApplicationController
def index_from_link
url = "/#{@item.path}"
options = ''
- options << "?page_main=#{params[:page_main]}" unless params[:page_main].blank?
+ options << "#{options.blank? ? '?' : '&'}page_main=#{params[:page_main]}" unless params[:page_main].blank?
options << "#{options.blank? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank?
options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank?
options << "#{options.blank? ? '?' : '&'}search_query=#{params[:search_query]}" unless params[:search_query].blank?
@@ -47,11 +48,13 @@ class PagesController < ApplicationController
end
def show_from_link
- url = "/#{@item.path}?id=#{params[:id]}"
+ url = "/#{@item.path}"
options = ''
+ options << "#{options.blank? ? '?' : '&'}id=#{params[:id]}" unless params[:id].blank?
options << "#{options.blank? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank?
options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank?
- options << "&preview=#{params[:preview]}" unless params[:preview].blank?
+ options << "#{options.blank? ? '?' : '&'}preview=#{params[:preview]}" unless params[:preview].blank?
+ options << "#{options.blank? ? '?' : '&'}controller_action=#{params[:controller_action]}" unless params[:controller_action].blank?
redirect_to(url + options) unless save_from_no_lang_for_page
end
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb
deleted file mode 100644
index b2fbc9975..000000000
--- a/app/controllers/sessions_controller.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-class SessionsController < Devise::SessionsController
- prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
- include Devise::Controllers::InternalHelpers
-
- # POST /resource/sign_in
- def create
- # login_password = params[:user][:password]
- # login_uid = params[:user][:nccu_ldap_uid]
- login_password = params[:user][:password]
- login_uid = params[:user][:nccu_ldap_uid]
- result = false
- ldap_filter = "(uid=#{login_uid})"
- if /@rulingcom.com$/.match(login_uid).nil?
- MiddleSiteConnection.establish
- NccuLdapConnection.establish
-
- if ($nccu_ldap_connection.bind rescue false)
- logger.info "=LDAP Binded password ok..."
- result =check_auth_with_ldap(login_uid,login_password)
- if result #&& login_password!=''
- logger.info "==LDAP password passed..."
- nccu_id = get_nccu_id_from_mid_site(login_uid)
- resource = nccu_id.nil? ? nil : (User.first(conditions:{ nccu_ldap_uid: nccu_id }))
- # resource = env['warden'].authenticate!(:check_nccu_ldap)
- # resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
- set_flash_message(:notice, :signed_in) if is_navigational_format?
- if (resource.nil? || nccu_id.nil?)
- logger.error "===LDAP passed local block... resource:#{resource.inspect}\n nccu_id:#{nccu_id} \t login_uid:#{login_uid}"
- flash[:notice] = t('devise.failure.ldap_pass_but_account_not_in_orbit')
- render :action => "new"
- else
- logger.info "===ALL passed"
- resource_name = resource.class.to_s.downcase
- sign_in(resource_name, resource)
- respond_with resource, :location => redirect_location(resource_name, resource)
- end
- else
- logger.error "==password LDAP fail..."
- flash[:notice] = t('devise.failure.ldap_invalid')
- render :action => "new"
- end
- else
- logger.error "=LDAP fail..."
- flash[:notice] = t('devise.failure.ldap_connection_failed')
- render :action => "new"
- end
- else #if rulingcom account
- logger.info "=======Rulingcom account======"
- resource = User.first(conditions:{email: login_uid})
- if resource.valid_password?(login_password)
- resource_name = resource.class.to_s.downcase
- sign_in(resource_name, resource)
- respond_with resource, :location => redirect_location(resource_name, resource)
- else
- logger.error "==password Local fail..."
- flash[:notice] = t('devise.failure.invalid')
- render :action => "new"
- end
- end
- logger.info "=======End Debugging======"
-
- end
-private
- def check_auth_with_ldap(login_uid,login_password)
- ldap_filter = "(uid=#{login_uid})"
- $nccu_ldap_connection.bind_as(:base => NccuLdapConnection::BASE,:filter => ldap_filter,:password=> login_password) rescue false
- end
-
- def get_nccu_id_from_mid_site(ldap_id)
- nccu_id = $mid_site_connection.query("SELECT nccu_id FROM rss_aaldap_view WHERE ldap_id='#{ldap_id}' LIMIT 1").first['nccu_id'] rescue nil
- #
- # if nccu_id.nil?
- # #show_error
- # p 'account not exist'
- # #should return?
- # end
- # # User.first(conditions: { })
- # rss_pautlst_ut = $mid_site_connection.query("SELECT * FROM rss_pautlst_ut WHERE nccu_id='#{nccu_id}' LIMIT 1").first rescue nil
- # # rss_paunit = client.query("SELECT * FROM rss_paunit LIMIT 1").first rescue nil
- # user = User.find_or_create_by(:nccu_id => nccu_id)
- # p user
- # # p rss_paunit
- #
- end
-end
diff --git a/app/helpers/admin/ad_banner_helper.rb b/app/helpers/admin/ad_banners_helper.rb
similarity index 96%
rename from app/helpers/admin/ad_banner_helper.rb
rename to app/helpers/admin/ad_banners_helper.rb
index feb3f6a67..df0d3e737 100644
--- a/app/helpers/admin/ad_banner_helper.rb
+++ b/app/helpers/admin/ad_banners_helper.rb
@@ -1,4 +1,4 @@
-module Admin::AdBannerHelper
+module Admin::AdBannersHelper
def preview_block_ad_images_helper(ad_banner)
printable_ad_images = []
ad_banner.ad_images.each do |ad_image|
diff --git a/app/helpers/admin/ad_images_helper.rb b/app/helpers/admin/ad_images_helper.rb
deleted file mode 100644
index b09bd2633..000000000
--- a/app/helpers/admin/ad_images_helper.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-module Admin::AdImagesHelper
-
-end
diff --git a/app/helpers/admin/app_auth_helper.rb b/app/helpers/admin/app_auths_helper.rb
similarity index 95%
rename from app/helpers/admin/app_auth_helper.rb
rename to app/helpers/admin/app_auths_helper.rb
index 1a022e948..c679f338f 100644
--- a/app/helpers/admin/app_auth_helper.rb
+++ b/app/helpers/admin/app_auths_helper.rb
@@ -1,4 +1,4 @@
-module Admin::AppAuthHelper
+module Admin::AppAuthsHelper
def on_off_switch(attribute,attribute_type)
link_to t(:enable), eval("admin_#{attribute_type}_path(attribute, :authenticity_token => form_authenticity_token, :#{attribute_type} => {:disabled => true})"), :remote => true, :method => :put, :id => "disable_#{attribute.id}", :style => "display:#{attribute.is_disabled? ? 'none' : ''}", :class => 'switch'
link_to t(:disable), eval("admin_#{attribute_type}_path(attribute, :authenticity_token => form_authenticity_token, :#{attribute_type} => {:disabled => false})"), :remote => true, :method => :put, :id => "enable_#{attribute.id}", :style => "display:#{attribute.is_disabled? ? '' : 'none'}", :class => 'switch'
diff --git a/app/helpers/admin/asset_helper.rb b/app/helpers/admin/assets_helper.rb
similarity index 86%
rename from app/helpers/admin/asset_helper.rb
rename to app/helpers/admin/assets_helper.rb
index 7ed6fa158..f6187d522 100644
--- a/app/helpers/admin/asset_helper.rb
+++ b/app/helpers/admin/assets_helper.rb
@@ -1,4 +1,4 @@
-module Admin::AssetHelper
+module Admin::AssetsHelper
def show_all_fields(asset, field)
a = []
diff --git a/app/helpers/admin/dashboard_helper.rb b/app/helpers/admin/dashboards_helper.rb
similarity index 95%
rename from app/helpers/admin/dashboard_helper.rb
rename to app/helpers/admin/dashboards_helper.rb
index bbfde4483..8ee0e36e4 100644
--- a/app/helpers/admin/dashboard_helper.rb
+++ b/app/helpers/admin/dashboards_helper.rb
@@ -1,4 +1,4 @@
-module Admin::DashboardHelper
+module Admin::DashboardsHelper
def get_link(title)
case title
diff --git a/app/helpers/admin/item_helper.rb b/app/helpers/admin/items_helper.rb
similarity index 98%
rename from app/helpers/admin/item_helper.rb
rename to app/helpers/admin/items_helper.rb
index d69674910..2f46b15fa 100644
--- a/app/helpers/admin/item_helper.rb
+++ b/app/helpers/admin/items_helper.rb
@@ -1,4 +1,4 @@
-module Admin::ItemHelper
+module Admin::ItemsHelper
def render_node_and_children(node)
ret = ''
diff --git a/app/helpers/admin/module_app_helper.rb b/app/helpers/admin/module_apps_helper.rb
similarity index 94%
rename from app/helpers/admin/module_app_helper.rb
rename to app/helpers/admin/module_apps_helper.rb
index b041786fb..af2359765 100644
--- a/app/helpers/admin/module_app_helper.rb
+++ b/app/helpers/admin/module_apps_helper.rb
@@ -1,4 +1,4 @@
-module Admin::ModuleAppHelper
+module Admin::ModuleAppsHelper
def if_permit_to_delete(item)
case item.downcase
diff --git a/app/helpers/admin/plugins_helper.rb b/app/helpers/admin/plugins_helper.rb
new file mode 100644
index 000000000..a169e14d0
--- /dev/null
+++ b/app/helpers/admin/plugins_helper.rb
@@ -0,0 +1,30 @@
+module Admin::PluginsHelper
+
+ def render_plugin_list
+ ret = ''
+
+ ret << ""
+ ret << "
"
+ ret << "
"
+ ret << "
"
+ ret << "
"
+
+ ret << "
"
+
+ @plugins.each do |plugin|
+ ret << ""
+ ret << (link_to eval("#{plugin.title}") , eval("panel_#{plugin.title}_back_end_#{plugin.object}s_path")) rescue nil
+ ret << " "
+ end
+
+ ret << " "
+
+ ret << "
"
+ ret << "
"
+ ret << "
"
+
+ ret.html_safe
+
+ end
+
+end
diff --git a/app/helpers/admin/user_helper.rb b/app/helpers/admin/users_helper.rb
similarity index 93%
rename from app/helpers/admin/user_helper.rb
rename to app/helpers/admin/users_helper.rb
index 22da150ea..c6b72b530 100644
--- a/app/helpers/admin/user_helper.rb
+++ b/app/helpers/admin/users_helper.rb
@@ -1,4 +1,4 @@
-module Admin::UserHelper
+module Admin::UsersHelper
def show_attribute(object, field_id, locale = '')
attribute = object.attribute_values.detect {|av| av.attribute_field_id.eql?(field_id) || av[locale.to_s].eql?(locale.to_s) } rescue nil
diff --git a/app/helpers/admin/web_link_helper.rb b/app/helpers/admin/web_link_helper.rb
deleted file mode 100644
index 2890eb517..000000000
--- a/app/helpers/admin/web_link_helper.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-module Admin::WebLinkHelper
- def show_web_link_permission_link(web_link)
- type = 'edit'
- oa = web_link.get_object_auth_by_title(type)
- if oa.nil?
- web_link.object_auths.new(title: type ).save
- oa = web_link.get_object_auth_by_title(type)
- end
- link_to t(:category_auth),admin_object_auth_ob_auth_path(oa)
- end
-end
\ No newline at end of file
diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb
index 021687da8..31177d706 100644
--- a/app/helpers/admin_helper.rb
+++ b/app/helpers/admin_helper.rb
@@ -7,15 +7,31 @@ module AdminHelper
# Check if the current_user is manager in current module app
def is_manager?
- @module_app.is_manager?(current_user) || is_admin?
+ @module_app.is_manager?(current_or_guest_user) || is_admin?
end
# Check if the current_user is sub manager in current module app
def is_sub_manager?
- @module_app.is_sub_manager?(current_user)|| is_admin?
+ @module_app.is_sub_manager?(current_or_guest_user)|| is_admin?
end
def is_admin?
- current_user.admin?
+ current_or_guest_user.admin?
end
+
+ def is_member?
+ if (current_user rescue false)
+ return true
+ end
+ return false
+ end
+
+
+ def is_guest?
+ if session[:guest_user_id]
+ return true
+ end
+ return false
+ end
+
end
\ No newline at end of file
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index e74e59768..76f0f933a 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -1,6 +1,48 @@
module ApplicationHelper
FLASH_NOTICE_KEYS = [:error, :notice, :warning]
+ def check_user_role_enable(attribute_fields)
+ @user.attribute_values.collect{|t| attribute_fields.include?(t.attribute_field) }.include?(true) rescue false
+ end
+ def show_attribute_value(value)
+ if value.kind_of? Hash
+ result = []
+ value.each{|t| result.push(t.last)}
+ result.join ","
+ else
+ value
+ end
+ end
+
+ def create_guest_user
+ u = User.create(:name => "guest", :email => "guest_#{Time.now.to_i}#{rand(99)}@example.com")
+ u.admin = false
+ u.save(:validate => false)
+ u
+ end
+
+ # if user is logged in, return current_user, else return guest_user
+ def current_or_guest_user
+ if current_user
+ if session[:guest_user_id]
+ guest_user.destroy
+ session[:guest_user_id] = nil
+ end
+ current_user
+ else
+ guest_user
+ end
+ end
+
+
+ # find guest_user object associated with the current session,
+ # creating one as needed
+ def guest_user
+ User.find(session[:guest_user_id].nil? ? session[:guest_user_id] = create_guest_user.id : session[:guest_user_id])
+ end
+
+
+
def colorize_in_use_locale(locale)
@site_in_use_locales.include?(locale)? 'green' : 'red'
@@ -135,15 +177,17 @@ module ApplicationHelper
def page_stylesheets(page, edit=nil)
stylesheets = ''
- unless edit
- stylesheets << " \n"
+ unless edit
stylesheets << " \n"
stylesheets << " \n"
end
+ stylesheets << " \n" if page.design.css_reset
+ stylesheets << " \n"
+ stylesheets << " \n"
+ stylesheets << " \n"
stylesheets << " \n"
- stylesheets << " \n" if page.design.reset_css
stylesheets << " \n"
- stylesheets << " \n" if page.design.default_css
+ stylesheets << " \n" if page.design.css_default
theme = page.design.themes.detect{ |d| d.id == page.theme_id }
stylesheets << " \n" if theme
stylesheets
@@ -204,10 +248,6 @@ module ApplicationHelper
display_visitors(created_at: {'$gte' => Date.today.beginning_of_year, '$lte' => Date.today.end_of_year})
end
- def at_least_module_manager
- is_manager? || is_admin?
- end
-
def display_date_time(object)
object.strftime("%Y-%m-%d %H:%M")
end
@@ -236,4 +276,13 @@ module ApplicationHelper
wrap_mark = options[:wrap_mark] || " "
str.scan((/.{0,#{line_width}}/)).join(wrap_mark)
end
+
+ def show_avatar(user)
+ if (user.avatar? rescue false)
+ image_tag(user.avatar.thumb.url)
+ else
+ image_tag "person.png"
+ end
+ end
+
end
diff --git a/app/helpers/attribute_fields_helper.rb b/app/helpers/attribute_fields_helper.rb
new file mode 100644
index 000000000..af805daa4
--- /dev/null
+++ b/app/helpers/attribute_fields_helper.rb
@@ -0,0 +1,216 @@
+#encoding: utf-8
+# require ActionView::Helpers::FormTagHelper
+
+module AttributeFieldsHelper
+ include ActionView::Helpers::FormTagHelper
+ include ActionView::Helpers::FormOptionsHelper
+ include ActionView::Helpers::DateHelper
+ include ActionView::Helpers::TagHelper
+ include ActionView::Helpers::RenderingHelper
+
+ def block_helper(user,index,disable = false)
+ @index = index
+ @markup_options = markup_options.merge(:disabled=>disable)
+ @user = user
+ @attribute_value = @user.get_value_from_field_id(id)
+ @new_attribute = @attribute_value.nil?
+ @attribute_value = @attribute_value || @user.attribute_values.build(attribute_field_id: id)
+ @prefiled_value = @attribute_value.get_values
+ return instance_eval("render_#{markup}") #rescue ""
+ end
+
+ def lang_tab(str,lang)
+ content_tag(:div,str,:class=>"tab-pane fade",:id=>(get_field_name_base+"tab_#{lang}"))
+ end
+
+ def render_address
+ control_group_wrapper do |key,value|
+ result = ''.html_safe
+ result << gen_modal_dialog
+ end
+ end
+
+ def render_checkbox
+ @prefiled_value ||=[]
+ markup_value = eval(self.markup_value) rescue {}
+ control_group_wrapper do
+ markup_value.collect do |key,value|
+ label_tag(key,check_box_tag(get_field_name_base+"[value][#{key}]", value[I18n.locale.to_s], (@prefiled_value.include?(key) ? true : false), {})+value[I18n.locale.to_s],@markup_options.merge(:class=>"control-label"))
+ end.join rescue ""
+ end
+ end
+
+ def render_date
+ control_group_wrapper{date_select(get_field_name_base+"[value]",nil,@markup_options.merge(:default=>@prefiled_value),:class=>"input-small")}
+ end
+
+ def render_date_durnation #Need re-write low priority
+
+ end
+
+ def render_radio_button
+ @prefiled_value ||=[]
+ markup_value = eval(self.markup_value) rescue {}
+ control_group_wrapper do
+ markup_value.collect do |key,value|
+ label_tag(key,radio_button_tag(get_field_name_base+"[value][#{key}]", value[I18n.locale.to_s], (@prefiled_value.include?(key) ? true : false), {})+value[I18n.locale.to_s],@markup_options.merge(:class=>"control-label"))
+ end.join rescue ""
+ end
+ end
+
+ def render_select
+ markup_value = (self.markup_value.is_a?(Hash) ? self.markup_value : eval(self.markup_value) )rescue {}
+ control_group_wrapper{select_tag( get_field_name_base+"[value]",options_for_select(markup_value.collect{|p| [p[1][I18n.locale.to_s],p[0]]},@prefiled_value),@markup_options)} rescue ""
+ end
+
+ def render_text_area
+ control_group_wrapper do |key,value|
+ if(add_more and value.is_a?(Hash))
+ values = value
+ values.each_with_index.collect do |value,index|
+ text_area_tag(get_field_name_base + (key.nil? ? '' : "[#{key}][#{index}]"), value.last,@markup_options)
+ end.join.html_safe
+ else
+ value = can_muti_lang_input ? @prefiled_value[key] : @prefiled_value
+ key = can_muti_lang_input ? "[#{key}]" : "[value]"
+ text_area_tag(get_field_name_base + key, value,@markup_options)
+ end
+ end
+ end
+
+ def render_text_field
+ control_group_wrapper do |key,value|
+ if(add_more and value.is_a?(Hash))
+ values = value
+ values.each_with_index.collect do |value,index|
+
+ text_field_tag(get_field_name_base + (key.nil? ? '' : "[#{key}][#{index}]"), value.last,@markup_options)
+ end.join.html_safe
+ else
+ value = can_muti_lang_input ? @prefiled_value[key] : @prefiled_value
+ key = can_muti_lang_input ? "[#{key}]" : "[value]"
+ text_field_tag(get_field_name_base + key, value,@markup_options)
+ end
+ end
+end
+protected
+ def lang_panel_control_wrapper(&block)
+ result = ''
+ result << '
'
+ result << controls_wrapper{yield}
+ result << '
'
+ result << '
'
+ result.html_safe
+ end
+
+ def controls_wrapper(&block)
+ result = ""
+ if can_muti_lang_input
+ result << "
"
+ result << "
"
+ VALID_LOCALES.collect do |key|
+ value = @prefiled_value[key.to_s] rescue nil
+ div_class = ["tab-pane" ,"fade"].join(" ")
+ div_class << (key == I18n.locale.to_s ? " active in" : '')
+ result << content_tag(:div,yield(key,value),:class=>div_class,:id=>"tab"+id.to_s+"_#{key}")
+ end
+ result << "
"
+ result << "
"
+ VALID_LOCALES.each do |key|
+ result << content_tag(:li,link_to(t(:_locale, :locale => key),"#tab"+id.to_s+"_#{key}",:data=>{:toggle=>"tab"}),:class=>(key == I18n.locale.to_s ? "active" : nil))
+ end
+ result << " "
+ result << "
"
+ # @prefiled_value.collect do |key,value|
+ # result << yield(key,value)
+ # end
+ else
+ result << yield
+ end
+ if can_add_more
+ result << '
'
+ result << ' Add '
+ result << ' '
+ end
+ result << "
"
+ result.html_safe
+ end
+
+ def control_group_wrapper(&block)
+ div_class = can_muti_lang_input ? "control-group language-swich" : "control-group"
+ temp = label + controls_wrapper(&block)
+
+ result = content_tag(:div,temp,:class=>div_class)
+ result << end_block
+
+ result.html_safe
+ end
+
+ def end_block
+ if @new_attribute
+ hidden_field_tag(get_field_name_base+"[attribute_field_id]",id,:for=>"field_#{@index}")
+ else
+ hidden_field_tag(get_field_name_base+"[id]",@attribute_value.id,:for=>"field_#{@index}")
+ end
+ end
+
+ def get_field_name_base
+ # "user[#{self.attribute._type.downcase.pluralize}][#{self.attribute._id.to_s}][attribute_values][#{attribute_value.id}]"
+ # binding.pry if @attribute_value[:key] == 'status'
+ if @new_attribute
+ "user[new_attribute_values][#{@index}]"
+ else
+ "user[attribute_values][#{@index}]"
+ end
+ end
+
+ def label
+ label_tag(key,title,:class=>"control-label")
+ end
+
+ def can_muti_lang_input
+ locale and LIST[:markups][markup]["muti_lang_input_supprt"]
+ end
+
+ def can_add_more
+ locale and LIST[:markups][markup]["ext_support"] && add_more
+ end
+
+def render_anywhere(partial, assigns)
+ view = ActionView::Base.new(Rails::Configuration.new.view_path, assigns)
+ ActionView::Base.helper_modules.each { |helper| view.extend helper }
+ view.extend ApplicationHelper
+ view.render(:partial => partial)
+end
+
+def gen_modal_dialog
+ result = ''
+ result << ''
+ result << '
'
+ result << '
One fine body…
'
+ result << '
'
+ result << ''
+ result << '
'
+ result.html_safe
+end
+
+end
\ No newline at end of file
diff --git a/app/helpers/design_helper.rb b/app/helpers/design_helper.rb
deleted file mode 100644
index c55eb2a09..000000000
--- a/app/helpers/design_helper.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-module DesignHelper
-
-
-end
diff --git a/app/helpers/orbit_backend_helper.rb b/app/helpers/orbit_backend_helper.rb
index 23f49cbf3..c1894ac2f 100644
--- a/app/helpers/orbit_backend_helper.rb
+++ b/app/helpers/orbit_backend_helper.rb
@@ -38,7 +38,9 @@ module OrbitBackendHelper
def render_title(title, fields, span, translation)
content_tag :th, :class => "sort #{span} #{is_sort_active?(title)}" do
- link_to (t(translation) + content_tag(:b, nil, :class => is_sort?(title))).html_safe, url_for({:filter => @filter}.merge(sortable(title).merge(:sort_options => fields))), :class => 'js_history'
+ content_tag :span do
+ link_to (t(translation) + content_tag(:b, nil, :class => is_sort?(title))).html_safe, url_for({:filter => @filter}.merge(sortable(title).merge(:sort_options => fields))), :class => 'js_history'
+ end
end
end
diff --git a/app/helpers/sites_helper.rb b/app/helpers/sites_helper.rb
deleted file mode 100644
index 621069dbc..000000000
--- a/app/helpers/sites_helper.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-module SitesHelper
-end
diff --git a/app/models/design/css_default.rb b/app/models/design/css_default.rb
new file mode 100644
index 000000000..3ee5a58c0
--- /dev/null
+++ b/app/models/design/css_default.rb
@@ -0,0 +1,5 @@
+class CssDefault < Stylesheet
+
+ belongs_to :design
+
+end
diff --git a/app/models/design/css_reset.rb b/app/models/design/css_reset.rb
new file mode 100644
index 000000000..b2a14b602
--- /dev/null
+++ b/app/models/design/css_reset.rb
@@ -0,0 +1,5 @@
+class CssReset < Stylesheet
+
+ belongs_to :design
+
+end
diff --git a/app/models/design/design.rb b/app/models/design/design.rb
index 58f95bd48..c9d87982a 100644
--- a/app/models/design/design.rb
+++ b/app/models/design/design.rb
@@ -3,25 +3,27 @@ class Design
include Mongoid::Timestamps
include ParserLayout
- field :title, :type => String
field :author, :type => String
field :intro, :type => String
+ field :title, :type => String
field :version, :type => String
+ has_one :css_default, :autosave => true, :dependent => :destroy
+ has_one :layout, :autosave => true, :dependent => :destroy
+ has_one :css_reset, :autosave => true, :dependent => :destroy
+ has_many :images, :autosave => true, :dependent => :destroy
+ has_many :javascripts, :autosave => true, :dependent => :destroy
has_many :pages
-
- embeds_one :layout, :cascade_callbacks => true
- embeds_one :default_css, :class_name => "Stylesheet", :cascade_callbacks => true
- embeds_one :reset_css, :class_name => "Stylesheet", :cascade_callbacks => true
- embeds_many :themes, :cascade_callbacks => true
- embeds_many :javascripts, :cascade_callbacks => true
- embeds_many :images, :as => :design_image, :cascade_callbacks => true
- # embeds_many :custom_images, :class_name => 'Image', :cascade_callbacks => true
-
- validates_presence_of :title
- validates_presence_of :author
+ has_many :themes, :autosave => true, :dependent => :destroy
+
+ accepts_nested_attributes_for :images, :allow_destroy => true
+ accepts_nested_attributes_for :javascripts, :allow_destroy => true
+ accepts_nested_attributes_for :themes, :allow_destroy => true
+
+ validates_presence_of :author, :title
after_save :parse_css_for_images
+
def new_files=(*attrs)
attrs[0].map do |key,items_ary| #Loop by JSs,Themes,Imgs
@@ -66,13 +68,9 @@ class Design
protected
def parse_css_for_images
- if (self.default_css && self.default_css.changed)
- self.default_css.parse_urls
- end
+ self.css_default.parse_urls
self.themes.each do |theme|
- if theme.changed?
- theme.parse_urls
- end
+ theme.parse_urls
end
parse_body_for_images(self)
end
diff --git a/app/models/design/design_file.rb b/app/models/design/design_file.rb
index 3aec9a0cb..973313c40 100644
--- a/app/models/design/design_file.rb
+++ b/app/models/design/design_file.rb
@@ -4,7 +4,14 @@ class DesignFile
mount_uploader :file, AssetUploader
- field :to_save, :type => Boolean
- field :to_destroy, :type => Boolean
+ field :name
+
+ before_save :set_name
+
+ protected
+
+ def set_name
+ self.name = self.file_identifier
+ end
end
diff --git a/app/models/design/image.rb b/app/models/design/image.rb
index 939095e8e..91c4a733f 100644
--- a/app/models/design/image.rb
+++ b/app/models/design/image.rb
@@ -1,11 +1,23 @@
-class Image < DesignFile
+class Image
+ include Mongoid::Document
+ include Mongoid::Timestamps
- field :in_css, :type => Boolean
- field :name
field :html_id
field :html_class
-
- embedded_in :design_image, polymorphic: true
+ field :in_css, :type => Boolean, :default => false
+ field :in_html, :type => Boolean, :default => false
+ field :name
mount_uploader :file, ImageUploader
-end
+
+ belongs_to :design
+
+ before_save :set_name
+
+ protected
+
+ def set_name
+ self.name = self.file_identifier
+ end
+
+end
\ No newline at end of file
diff --git a/app/models/design/javascript.rb b/app/models/design/javascript.rb
index 7bfd2c5a7..439e3b982 100644
--- a/app/models/design/javascript.rb
+++ b/app/models/design/javascript.rb
@@ -1,3 +1,3 @@
class Javascript < DesignFile
- embedded_in :design
+ belongs_to :design
end
diff --git a/app/models/design/layout.rb b/app/models/design/layout.rb
index bf48415cb..a782894df 100644
--- a/app/models/design/layout.rb
+++ b/app/models/design/layout.rb
@@ -6,7 +6,7 @@ class Layout < DesignFile
field :body
embeds_one :menu
- embedded_in :design
+ belongs_to :design
embeds_many :layout_parts
before_save :parse_layout
diff --git a/app/models/design/stylesheet.rb b/app/models/design/stylesheet.rb
index bb2ec85e4..525e40f3f 100644
--- a/app/models/design/stylesheet.rb
+++ b/app/models/design/stylesheet.rb
@@ -1,5 +1,5 @@
class Stylesheet < DesignFile
- embedded_in :design
+ belongs_to :design
mount_uploader :file_orig, AssetUploader
def parse_urls
@@ -11,7 +11,9 @@ class Stylesheet < DesignFile
content.scan(/(?<=url)(.*?)(?=\))/){
css_name = $1.gsub(' ','').gsub('(','')
name = File.basename(css_name).gsub(/[\\\"]/, '')
- file_name = images.detect{ |i| i.file_identifier.eql?(name) }.file_url rescue nil
+ image = images.detect{ |i| i.file_identifier.eql?(name) } rescue nil
+ image.update_attribute(:in_css, true) if image
+ file_name = image.file_url rescue nil
names << [css_name, file_name]
}
names.each do |name|
diff --git a/app/models/design/theme.rb b/app/models/design/theme.rb
index 8aca324b5..0935fe12f 100644
--- a/app/models/design/theme.rb
+++ b/app/models/design/theme.rb
@@ -1,14 +1,11 @@
class Theme < Stylesheet
- field :name
- embedded_in :design
-
- before_save :set_name
+ belongs_to :design
protected
def set_name
- self.name = File.basename(self.file_identifier,".css")
+ self.name = File.basename(self.file_identifier, ".css")
end
end
diff --git a/app/models/desktop.rb b/app/models/desktop.rb
new file mode 100644
index 000000000..e8c1e9c44
--- /dev/null
+++ b/app/models/desktop.rb
@@ -0,0 +1,23 @@
+class Desktop
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ field :theme, default: "4f8d3f493b67fcd05f086359"
+ field :customtheme
+ field :wallpaper
+
+ belongs_to :user
+
+ has_many :sections, :autosave => true, :dependent => :destroy
+ has_many :desktop_widgets, :autosave => true, :dependent => :destroy
+
+ before_create :initialize_section
+
+ def initialize_section
+ self.sections.build(name: "Desktop 1")
+ self.sections.build(name: "Desktop 2")
+ self.sections.build(name: "Desktop 3")
+ self.sections.build(name: "Desktop 4")
+ end
+
+end
\ No newline at end of file
diff --git a/app/models/desktop_theme.rb b/app/models/desktop_theme.rb
new file mode 100644
index 000000000..76886103d
--- /dev/null
+++ b/app/models/desktop_theme.rb
@@ -0,0 +1,9 @@
+class DesktopTheme
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ field :name
+ field :author
+
+
+end
diff --git a/app/models/desktop_widget.rb b/app/models/desktop_widget.rb
new file mode 100644
index 000000000..eb0446ded
--- /dev/null
+++ b/app/models/desktop_widget.rb
@@ -0,0 +1,13 @@
+class DesktopWidget
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ field :name
+ field :author
+ field :shape
+ field :desktop_id
+ field :status
+ field :section
+
+ belongs_to :desktop
+end
\ No newline at end of file
diff --git a/app/models/group.rb b/app/models/group.rb
new file mode 100644
index 000000000..7346ad1ec
--- /dev/null
+++ b/app/models/group.rb
@@ -0,0 +1,19 @@
+class Group
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ belongs_to :section
+ has_many :tiles, :autosave => true, :dependent => :destroy
+ before_create :initialize_tile
+
+ def initialize_tile
+ self.tiles.build(data_category: "widget", data_content: "timetable", position: 1, shape: "w2 h2", title: "Tiime Table")
+ self.tiles.build(data_category: "app", data_content: "quotes", position: 2, shape: "w1 h1", title: "Quotes")
+ self.tiles.build(data_category: "widget", data_content: "weather", position: 3, shape: "w2 h2", title: "Weather")
+ self.tiles.build(data_category: "widget", data_content: "clock", position: 4, shape: "w2 h1", title: "Clock")
+ self.tiles.build(data_category: "app", data_content: "dailyenglish", position: 5, shape: "w1 h1", title: "Daily English Word")
+ self.tiles.build(data_category: "widget", data_content: "school_events", position: 6, shape: "w2 h1", title: "School Events")
+ end
+
+end
+
\ No newline at end of file
diff --git a/app/models/journal.rb b/app/models/journal.rb
new file mode 100644
index 000000000..b1a652841
--- /dev/null
+++ b/app/models/journal.rb
@@ -0,0 +1,19 @@
+class Journal
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ field :user_id
+ field :title
+
+ belongs_to :user
+ has_many :papers, :autosave => true, :dependent => :destroy
+
+ before_create :initialize_paper
+
+ def initialize_paper
+ for i in 0..11
+ self.papers.build
+ end
+ end
+
+end
diff --git a/app/models/module_app.rb b/app/models/module_app.rb
index a177f23fc..8441e4fea 100644
--- a/app/models/module_app.rb
+++ b/app/models/module_app.rb
@@ -14,7 +14,9 @@ class ModuleApp
field :enable_frontend, type: Boolean, :default => true
field :app_pages ,type: Array
- field :widgets ,type: Array
+ # field :widgets ,type: Array
+ field :widgets ,type: Hash
+ field :widget_fields ,type: Array
has_many :managers,as: :managing_app ,:class_name => "AppManager" ,:dependent => :destroy#,:foreign_key => "managing_app_id",:inverse_of => :managing_app
has_many :sub_managers,as: :sub_managing_app ,:class_name => "AppManager", :dependent => :destroy#,:foreign_key => "sub_managing_app_id",:inverse_of => :sub_managing_app
diff --git a/app/models/other_account.rb b/app/models/other_account.rb
new file mode 100644
index 000000000..2b6606661
--- /dev/null
+++ b/app/models/other_account.rb
@@ -0,0 +1,15 @@
+class OtherAccount
+ include Mongoid::Document
+ include Mongoid::Timestamps
+ include Mongoid::Encryptor
+
+ field :user_id
+ field :type
+ field :email
+ field :encrypted_password
+
+ encrypts :encrypted_password, :mode => :symmetric, :password => 'rulingcom'
+
+ belongs_to :user
+
+end
\ No newline at end of file
diff --git a/app/models/page.rb b/app/models/page.rb
index 1d53e36d9..bee0700b6 100644
--- a/app/models/page.rb
+++ b/app/models/page.rb
@@ -11,14 +11,18 @@ class Page < Item
field :view_count, :type => Integer, :default => 0
field :page_title, localize: true
+ field :frontend_style
+ field :frontend_field , :type => Array
+ field :frontend_data_count
+
belongs_to :design
belongs_to :module_app
has_many :page_parts, :autosave => true, :dependent => :destroy
has_many :page_contexts, :autosave => true, :dependent => :destroy
has_many :page_metas, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :page_parts, :allow_destroy => true
-
- before_save :create_parts
+
+ before_save :create_parts, :delete_empty_frontend_field
# embeds_many :custom_images, :class_name => 'Image', as: :design_image
@@ -44,5 +48,17 @@ class Page < Item
end
end
end
+
+ def delete_empty_frontend_field
+ if self.frontend_field
+ self.frontend_field.reject! { |ff| (ff[0].blank? || ff[1].blank?) }
+ # self.frontend_field.each do | ff |
+ # if ff[0].blank? || ff[1].blank?
+ # self.frontend_field.delete("") if self.frontend_field
+ # self.frontend_field.delete(ff)
+ # end
+ # end
+ end
+ end
end
diff --git a/app/models/page_part.rb b/app/models/page_part.rb
index 5f4b1dd61..595d5fb33 100644
--- a/app/models/page_part.rb
+++ b/app/models/page_part.rb
@@ -11,8 +11,23 @@ class PagePart
field :public_r_tag_option, :default => nil
field :page_title, localize: true
field :widget_path
+
+ field :widget_style
+ field :widget_field , :type => Array
+ field :widget_data_count
belongs_to :page
belongs_to :module_app
+ before_save :delete_empty_widget_field
+
+ protected
+
+ def delete_empty_widget_field
+ if self.widget_field
+ self.widget_field.reject! { |wf| (wf[0].blank? || wf[1].blank?) }
+ end
+ # self.widget_field.delete("") if self.widget_field
+ end
+
end
\ No newline at end of file
diff --git a/app/models/paper.rb b/app/models/paper.rb
new file mode 100644
index 000000000..a27725742
--- /dev/null
+++ b/app/models/paper.rb
@@ -0,0 +1,12 @@
+class Paper
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ field :keywords, default: "Material, Fracture Mechanism, Reliability Test, Solder Joints, Nano-material"
+ field :title, default: "The performance and fracture mechanism of solder joints under mechanical reliability test"
+ field :abstract, default: "The concept of microstructure engineering has gained increasingly attention with the goal to quantitatively link the operational parameters of an industrial process to the properties of its product. The key component of this concept is to accurately model the microstructure evolution along the processing path. Modelling of recrystallization in Cuinterconnects will be presented as an example of a conventional process model. Further, the potential of developing next generation process models will be discussed by using models across different length and time scale. The multi-scale modelling approach will be illustrated with a case study for phase transformation in Fe-Mn alloys."
+ field :level, default: "SCI"
+ field :coauthors, default: "Allen, Shelly, Eric, Manson, Chris, Clara, Anna, Albee, Vincent, Devin, Chunchi, Ika, Jaoshua, Ray, Matt, Lin, Spen"
+ field :created_at, type: Date
+ belongs_to :journal
+ end
\ No newline at end of file
diff --git a/app/models/proto_tag.rb b/app/models/proto_tag.rb
new file mode 100644
index 000000000..b5724acbd
--- /dev/null
+++ b/app/models/proto_tag.rb
@@ -0,0 +1,40 @@
+class ProtoTag
+ include Mongoid::Document
+ include Mongoid::Timestamps
+ include Impressionist::Impressionable
+
+ is_impressionable :counter_cache => { :column_name => :view_count }
+
+ field :key
+ field :view_count, :type => Integer, :default => 0
+ #field :cloud_amper,:type: Integer,:default=> 0
+
+ def self.sorted_for_cloud
+ tags = {}
+ self.all.each{ |tag|
+ tags.merge!({tag => self.get_impressionist(tag)})
+ }
+ if !tags.blank?
+ sorted_tags = tags.sort{|a,b| a[1]<=>b[1]}.reverse
+ sorted_tags[0][1] = :hot1
+ offset = (sorted_tags.size - 1) / 3
+ i = 1
+ class_i = 2
+ sorted_tags[1..-1].collect!{ |x|
+ x[1] = "hot#{class_i}"
+ i == offset ? i = 1 : i += 1 if class_i < 4
+ class_i += 1 if i == offset && class_i < 4
+ }
+ sorted_tags
+ else
+ []
+ end
+ end
+
+ protected
+
+ def self.get_impressionist(item_tag = self)
+ item_tag.impressions.where(:created_at.gte=> 14.days.ago,:created_at.lte => Time.now).count
+ end
+
+end
diff --git a/app/models/section.rb b/app/models/section.rb
new file mode 100644
index 000000000..f9035c698
--- /dev/null
+++ b/app/models/section.rb
@@ -0,0 +1,17 @@
+class Section
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ field :name
+
+ belongs_to :desktop
+ has_many :groups, :autosave => true, :dependent => :destroy
+
+ before_create :initialize_group
+
+ def initialize_group
+ self.groups.build
+ self.groups.build
+ end
+
+end
\ No newline at end of file
diff --git a/app/models/site.rb b/app/models/site.rb
index 37e6e444a..992ef9a7c 100644
--- a/app/models/site.rb
+++ b/app/models/site.rb
@@ -12,11 +12,13 @@ class Site
field :private_key, :type => Binary
field :public_key, :type => Binary
field :title_always_on, :type => Boolean, :default => false
-
+ field :dashbroad_allow_visitor, :type => Boolean, :default => false
field :mail_settings, :type => Hash
field :school
field :department
+
+ mount_uploader :default_image, ImageUploader
field :search,:type => Hash
diff --git a/app/models/sub_role_tag.rb b/app/models/sub_role_tag.rb
new file mode 100644
index 000000000..f2ff6b7b1
--- /dev/null
+++ b/app/models/sub_role_tag.rb
@@ -0,0 +1,4 @@
+class SubRoleTag < ProtoTag
+ has_and_belongs_to_many :sub_roles
+
+end
diff --git a/app/models/tag.rb b/app/models/tag.rb
index eb7e1f77d..ad63434bd 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -1,41 +1,4 @@
-class Tag
- include Mongoid::Document
- include Mongoid::Timestamps
- include Impressionist::Impressionable
-
- is_impressionable :counter_cache => { :column_name => :view_count }
-
- field :key
- field :view_count, :type => Integer, :default => 0
- #field :cloud_amper,:type: Integer,:default=> 0
+class Tag < ProtoTag
belongs_to :module_app
- def self.sorted_for_cloud
- tags = {}
- self.all.each{ |tag|
- tags.merge!({tag => self.get_impressionist(tag)})
- }
- if !tags.blank?
- sorted_tags = tags.sort{|a,b| a[1]<=>b[1]}.reverse
- sorted_tags[0][1] = :hot1
- offset = (sorted_tags.size - 1) / 3
- i = 1
- class_i = 2
- sorted_tags[1..-1].collect!{ |x|
- x[1] = "hot#{class_i}"
- i == offset ? i = 1 : i += 1 if class_i < 4
- class_i += 1 if i == offset && class_i < 4
- }
- sorted_tags
- else
- []
- end
- end
-
- protected
-
- def self.get_impressionist(item_tag = self)
- item_tag.impressions.where(:created_at.gte=> 14.days.ago,:created_at.lte => Time.now).count
- end
-
end
diff --git a/app/models/tile.rb b/app/models/tile.rb
new file mode 100644
index 000000000..70066d1be
--- /dev/null
+++ b/app/models/tile.rb
@@ -0,0 +1,14 @@
+class Tile
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ field :data_category
+ field :data_content
+ field :position, type: Integer
+ field :shape
+ field :title
+
+ belongs_to :group
+
+
+end
diff --git a/app/models/user/attribute_field.rb b/app/models/user/attribute_field.rb
index 2a227d27d..0d9999b33 100644
--- a/app/models/user/attribute_field.rb
+++ b/app/models/user/attribute_field.rb
@@ -2,29 +2,112 @@ class AttributeField
include Mongoid::Document
include Mongoid::Timestamps
-
+ include ::AttributeFieldsHelper
+
field :key
- field :markup
+ field :markup
+ field :markup_value ,:type => Hash
+ field :markup_options,:type => Hash
field :locale, :type => Boolean, :default => true
- field :list_options, :type => Array
+ # field :list_options, :type => Array
field :built_in, :type => Boolean, :default => false
field :disabled, :type => Boolean, :default => false
- field :title, localize: true
-
+ field :add_more,:type => Boolean, :default => false
+
+ #field :title, localize: true
+
+ field :locale_title, localize: true
+ field :neutral_title
+ field :neutral_for
+
belongs_to :attribute
- has_many :attribute_values
+ # belongs_to :role
+ has_many :attribute_values,:autosave => true, :dependent => :destroy
# validates_uniqueness_of :key
-
- # Convert the string list_options into an array
- def select_list_options=(var)
- self.list_options = var.gsub(' ', '').split(',')
+
+ def self_defined_markup_options?
+ (self.attribute.role.method(self[:key].pluralize.to_sym) && self.attribute.role.method(self[:key].pluralize+"_for_"+markup)) rescue false
end
-
- # Convert the array list_options into a string
- def select_list_options
- self.list_options.to_a.join(', ')
+
+ def markup_value=(var)
+ if !self_defined_markup_options?
+ self[:markup_value] = (eval(var) rescue {})
+ end
end
+
+ def markup_value
+ if self_defined_markup_options?
+ #Class need to have corresponding field and value agent
+ # Ex: For "status" the class must have field called "statuses" for the relation and "statuses_for_select" for the select function
+ method = self.attribute.role.method(self[:key].pluralize+"_for_"+markup)
+ return (method.call rescue {})
+ elsif self[:markup_value].nil? || (self[:markup_value].empty?)
+ return {}
+ else
+ return self[:markup_value]
+ end
+ end
+
+
+
+ def markup_options=(var)
+ self[:markup_options] = (eval(var) rescue {})
+ end
+
+ def markup_options
+ if self[:markup_options].nil?
+ return {}
+ else
+ Hash[self[:markup_options].map{|key,val|[key.to_sym,val]}] rescue {}
+ end
+
+ end
+
+ def role
+ self.attribute.role
+ end
+
+ def title_translations
+ if locale
+ return locale_title_translations
+ else
+ return Hash[VALID_LOCALES.map{|d| [d,neutral_title]}]
+ end
+ end
+
+ def title_translations=(var)
+ if locale
+ self.locale_title_translations = var
+ end
+ end
+
+ def title
+ if locale
+ return self.locale_title
+ else
+ return self.neutral_title
+ end
+ end
+
+ def title=(var)
+ # binding.pry
+ if locale
+ self.locale_title = var
+ else
+ self.neutral_title = var
+ end
+ end
+
+ # # Convert the string list_options into an array
+ # def select_list_options=(var)
+ # self.list_options = var.gsub(' ', '').split(',')
+ # end
+
+ # # Convert the array list_options into a string
+ # def select_list_options
+ # self.list_options.to_a.join(', ')
+ # end
def is_built_in?
self.built_in
diff --git a/app/models/user/attribute_value.rb b/app/models/user/attribute_value.rb
index 47c840858..a1eb54668 100644
--- a/app/models/user/attribute_value.rb
+++ b/app/models/user/attribute_value.rb
@@ -2,14 +2,70 @@ class AttributeValue
include Mongoid::Document
include Mongoid::Timestamps
+ include Mongoid::MultiParameterAttributes
field :key
belongs_to :attribute_field
belongs_to :user
-
- def method_missing(field)
- self[field]
+
+ before_save :check_key
+
+ # NO_MULTI_TAG = ["select","date","radio_button","checkbox","date_durnation"]
+
+ def check_key
+ binding.pry if attribute_field.nil?
+ self.key = attribute_field.key
+ end
+
+ def method_missing(*field)
+ if field.size < 1
+ self[field[0]]
+ else
+ self[(field[0].to_s.delete "=")] = field[1]
+ end
end
+ def get_value_by_locale(locale)
+ case self.attribute_field.markup
+ when "text_field"
+ self.attribute_field.locale ? self[locale] : self[:value]
+ when "select"
+ markup_values = self.attribute_field.self_defined_markup_options? ? self.attribute_field.markup_value : eval(self.attribute_field.markup_value)
+ markup_values[self[:value]][locale.to_s] rescue 'NoData'
+ when "text_area"
+ self.attribute_field.locale ? self[locale] : self[:value]
+ when "date"
+ Date.new(self[:value]["(1i)"].to_i,self[:value]["(2i)"].to_i,self[:value]["(3i)"].to_i) rescue nil
+ when "addr"
+ self[:value]
+ when "radio_button"
+ markup_values = eval(self.attribute_field.markup_value)
+ markup_values[self[:value].first[0]][locale.to_s]
+ when "checkbox"
+ markup_values = eval(self.attribute_field.markup_value)
+ self[:value].keys.collect{|key| markup_values[key][locale.to_s] }.join(",")
+ when "date_durnation"
+ self[:value]
+ else
+ self.attribute_field.locale ? self[locale] : self[:value]
+ end
+ end
+
+ def get_values
+ unless ['select','checkbox','radio_button'].include?(self.attribute_field.markup )
+ if self.attribute_field.locale && LIST[:markups][self.attribute_field.markup]["muti_lang_input_supprt"]
+ return Hash[VALID_LOCALES.collect{|lang| [lang,get_value_by_locale(lang.to_sym)]}]
+ else
+ return get_value_by_locale("")
+ end
+ else
+ if self.attribute_field.markup == "select"
+ self[:value]
+ else
+ self[:value].keys rescue self[:value]
+ end
+ end
+ end
+
end
diff --git a/app/models/user/role.rb b/app/models/user/role.rb
index bbcedfc7e..cd3d67758 100644
--- a/app/models/user/role.rb
+++ b/app/models/user/role.rb
@@ -10,6 +10,8 @@ class Role
has_many :sub_roles, :autosave => true, :dependent => :destroy
has_many :users
+ has_many :statuses, :autosave => true, :dependent => :destroy
+ has_many :attribute_fields, :autosave => true, :dependent => :destroy
accepts_nested_attributes_for :sub_roles, :allow_destroy => true
def is_built_in?
@@ -25,4 +27,11 @@ class Role
self.first(:conditions => {:key => key})
end
+ def statuses_for_select
+ data = self.statuses.map do |t|
+ [t.id.to_s,t.title_translations]
+ end
+ Hash[data]
+ end
+
end
\ No newline at end of file
diff --git a/app/models/user/status.rb b/app/models/user/status.rb
new file mode 100644
index 000000000..d9715d893
--- /dev/null
+++ b/app/models/user/status.rb
@@ -0,0 +1,14 @@
+class Status
+
+ include Mongoid::Document
+ include Mongoid::Timestamps
+
+ has_and_belongs_to_many :users
+
+ field :key
+ belongs_to :role
+ # has_and_belongs_to_many :sub_roles
+
+ field :title, localize: true
+
+end
\ No newline at end of file
diff --git a/app/models/user/sub_role.rb b/app/models/user/sub_role.rb
index cdefb5f50..6bd3cf0d6 100644
--- a/app/models/user/sub_role.rb
+++ b/app/models/user/sub_role.rb
@@ -2,7 +2,9 @@ class SubRole < Attribute
belongs_to :role
has_and_belongs_to_many :users
-
+ #has_and_belongs_to_many :statuses, :autosave => true, :dependent => :destroy
+ has_and_belongs_to_many :tags, :class_name => "SubRoleTag", :autosave => true
+
# Get an sub_role from key
def self.get_sub_role_from_key(key)
self.first(:conditions => {:key => key})
diff --git a/app/models/user/user.rb b/app/models/user/user.rb
index 4cb00bbbb..5893dae2f 100644
--- a/app/models/user/user.rb
+++ b/app/models/user/user.rb
@@ -9,22 +9,120 @@ class User
field :admin, :type => Boolean, :default => true
field :active_role
- field :nccu_ldap_uid
-
- # field :cache_dept
- # has_one :cache_dept, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy
+ field :email
field :cache_dept,type: Hash
+ field :status_record,type: Hash
has_many :attribute_values, :autosave => true, :dependent => :destroy
has_many :app_auths,as: :privilege_apps,:inverse_of => :privilege_lists
has_many :blocked_apps, :inverse_of => :blocked_users, :class_name => "AppAuth", :dependent => :destroy
has_many :privilege_apps, :inverse_of => :privilege_users, :class_name => "AppAuth", :dependent => :destroy
-
+
has_many :managing_apps,:class_name => "AppManager", :dependent => :destroy
-
- belongs_to :role
+ has_one :desktop, :autosave => true, :dependent => :destroy
+ has_many :other_accounts, :autosave => true, :dependent => :destroy
+ has_many :journals, :autosave => true, :dependent => :destroy
+ has_many :papers, :autosave => true, :dependent => :destroy
+ has_and_belongs_to_many :sub_role_tags
+
+ has_and_belongs_to_many :statuses
+ has_and_belongs_to_many :roles
has_and_belongs_to_many :sub_roles
- accepts_nested_attributes_for :attribute_values, :allow_destroy => true
+ accepts_nested_attributes_for :attribute_values, :allow_destroy => true
+
+ before_create :initialize_desktop
+ before_save :rebuild_status_record
+ before_save :save_roles
+ scope :remote_account, where(:nccu_id.ne => nil)
+
+ validates_uniqueness_of :email,:message=> I18n.t("devise.registrations.email_not_unique")
+ # def new_attribute_values=(vars)
+ # binding.pry
+ # end
+ # def new_attribute_values(vars)
+ # binding.pry
+ # end
+
+ ## # class << self
+ ## def initialize
+ ## self.define_method("asd"){ p "hi"}
+ ## sub_roles.each do |sr|
+ ## sr_ids = sr.attribute_fields.collect{|t| t.id.to_s}
+ ## self.define_method("attribute_values_for_"+sr.key.to_s) {
+ ## AttributeValue.where(user_id: id ).in(attribute_field_id: sr_ids)
+ ## }
+ ## end
+ ## yield self
+ ## end
+
+ # end
+
+ # def initialize
+ # binding.pry
+ # # yield self
+ # end
+
+ def get_attribute_value(attribute_field)
+ attribute_values.where(attribute_field_id: attribute_field.id).first
+ end
+
+ def get_sub_roles_by_role(role)
+ sub_roles.where(role_id: role.id)
+ end
+
+ def disable_sub_role=(var)
+ var[:id].each do |id,val|
+ # binding.pry if id == '5052c5b22b5c49ab02000004'
+ if (val=="true")
+ self.sub_roles = self.sub_roles.reject{|t| t.id.to_s==id}
+ elsif(val=="false")
+ self.sub_roles << SubRole.find(id)
+ end
+ end
+ end
+
+
+
+ def set_sub_role(sub_role_id,status_id)
+ self.status_record.merge!(Hash[sub_role_id,status_id])
+ end
+
+ # def get_status(*params)
+ # param = params[0]
+ # case param.class.to_s
+ # when 'String'
+ # sr = ::SubRole.find sub_role_id
+ # when 'Hash'
+ # sr = ::SubRole.first({conditions:{key: param[:key]}})
+ # end
+ # if self.sub_roles.include?(sr)
+ # return ::Status.find(status_record.fetch(sr.id.to_s))
+ # else
+ # nil
+ # end
+ # end
+ def new_attribute_values=(fields)
+ fields.each do |key,field|
+ self.attribute_values.build(field)
+ end
+ end
+
+ def self.find_by_status_and_sub_role_key(sub_role_key,status_key) #Query for users by using specific sub_role and status key
+ sr = ::SubRole.first({conditions: { key: sub_role_key }})
+ status = ::Status.first({conditions:{role_id: sr.role.id,key: status_key}})
+ find_by_subrole_and_status(sr.id,status.id)
+ end
+
+ def self.find_by_subrole_and_status(sub_role_id,status_id) #Query for users by using specific sub_role and status key by within ID
+ User.where("status_record.#{sub_role_id}" => status_id,:sub_role_ids.in => [ sub_role_id ])
+ end
+
+ def self.find_by_status(status_id)
+ status = ::Status.find status_id
+ ::SubRole.where({role_id: status.role.id.to_s,disabled: false}).collect{|sr|
+ find_by_subrole_and_status(sr.id.to_s,status_id)
+ }.uniq!
+ end
def create_dept_cache
dept_hash = {}
@@ -37,16 +135,6 @@ class User
self.save!
end
- def self.current
- Thread.current[:user]
- end
-
- def self.current=(user)
- Thread.current[:user] = user
- end
-
- scope :remote_account, where(:nccu_id.ne => nil)
-
def self.current
Thread.current[:user]
end
@@ -80,11 +168,29 @@ class User
def get_value_from_field_id(field_id)
values = get_attribute_values
value = values.detect {|value| value.attribute_field_id == field_id} rescue nil
- value ? value : self.attribute_values.build
+ value ? value : nil
end
def self.from_id(id)
User.find(id) rescue nil
end
-end
+ def initialize_desktop
+ self.build_desktop
+ end
+
+ protected
+ def save_roles
+ self.roles = self.sub_roles.collect{|t| t.role}.uniq
+ end
+
+
+ def rebuild_status_record
+ self.status_record = {}
+ self.attribute_values.reject{|t| t.key!='status'}.each do |status|
+ # binding.pry
+ set_sub_role(status.attribute_field.attribute.id.to_s,status[:value]) rescue nil
+ end
+ end
+
+end
\ No newline at end of file
diff --git a/app/uploaders/gallery_uploader.rb b/app/uploaders/gallery_uploader.rb
new file mode 100644
index 000000000..d8670a7a9
--- /dev/null
+++ b/app/uploaders/gallery_uploader.rb
@@ -0,0 +1,78 @@
+# encoding: utf-8
+module CarrierWave
+ module Uploader
+ module Versions
+ def recreate_version!(version)
+ already_cached = cached?
+ cache_stored_file! if !already_cached
+ send(version).store!
+ if !already_cached && @cache_id
+ tmp_dir = File.expand_path(File.join(cache_dir, cache_id), CarrierWave.root)
+ FileUtils.rm_rf(tmp_dir)
+ end
+ end
+ end
+ end
+end
+
+class GalleryUploader < CarrierWave::Uploader::Base
+
+ # Include RMagick or ImageScience support:
+ # include CarrierWave::RMagick
+ # include CarrierWave::ImageScience
+ include CarrierWave::MiniMagick
+
+ # Choose what kind of storage to use for this uploader:
+ # storage :file
+ # storage :s3
+
+ # Override the directory where uploaded files will be stored.
+ # This is a sensible default for uploaders that are meant to be mounted:
+ def store_dir
+ "gallery/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
+ end
+
+ # Provide a default URL as a default if there hasn't been a file uploaded:
+ # def default_url
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
+ # end
+
+ # Process files as they are uploaded:
+ # process :scale => [200, 300]
+ #
+ # def scale(width, height)
+ # # do something
+ # end
+
+ # Create different versions of your uploaded files:
+ # version :thumb do
+ # process :scale => [50, 50]
+ # end
+
+ version :thumb do
+ process :resize_to_fill => [150, 120]
+ end
+
+ # Add a white list of extensions which are allowed to be uploaded.
+ # For images you might use something like this:
+ # def extension_white_list
+ # %w(jpg jpeg gif png)
+ # end
+
+ # Override the filename of the uploaded files:
+ # def filename
+ # "something.jpg" if original_filename
+ # end
+
+# def manipulate!
+# raise current_path.inspect
+# image = ::MiniMagick::Image.open(current_path)
+# image = yield(image)
+# image.write(current_path)
+# ::MiniMagick::Image.open(current_path)
+# rescue ::MiniMagick::Error, ::MiniMagick::Invalid => e
+# raise CarrierWave::ProcessingError.new("Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: #{e}")
+# end
+
+end
+
diff --git a/app/uploaders/gprs_uploader.rb b/app/uploaders/gprs_uploader.rb
new file mode 100644
index 000000000..4ce413216
--- /dev/null
+++ b/app/uploaders/gprs_uploader.rb
@@ -0,0 +1,61 @@
+class GprsUploader < CarrierWave::Uploader::Base
+
+ # Include RMagick or ImageScience support:
+ # include CarrierWave::RMagick
+ # include CarrierWave::ImageScience
+ include CarrierWave::MiniMagick
+
+ # Choose what kind of storage to use for this uploader:
+ # storage :file
+ # storage :s3
+
+ # Override the directory where uploaded files will be stored.
+ # This is a sensible default for uploaders that are meant to be mounted:
+ def store_dir
+ "gprs/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
+ end
+
+ # Provide a default URL as a default if there hasn't been a file uploaded:
+ # def default_url
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
+ # end
+
+ # Process files as they are uploaded:
+ # process :scale => [200, 300]
+ #
+ # def scale(width, height)
+ # # do something
+ # end
+
+ # Create different versions of your uploaded files:
+ # version :thumb do
+ # process :scale => [50, 50]
+ # end
+
+ version :thumb do
+ process :resize_to_fill => [150, 120]
+ end
+
+ # Add a white list of extensions which are allowed to be uploaded.
+ # For images you might use something like this:
+ # def extension_white_list
+ # %w(jpg jpeg gif png)
+ # end
+
+ # Override the filename of the uploaded files:
+ # def filename
+ # "something.jpg" if original_filename
+ # end
+
+# def manipulate!
+# raise current_path.inspect
+# image = ::MiniMagick::Image.open(current_path)
+# image = yield(image)
+# image.write(current_path)
+# ::MiniMagick::Image.open(current_path)
+# rescue ::MiniMagick::Error, ::MiniMagick::Invalid => e
+# raise CarrierWave::ProcessingError.new("Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: #{e}")
+# end
+
+end
+
diff --git a/app/uploaders/image_uploader.rb b/app/uploaders/image_uploader.rb
index 651cd3cfa..748bac16d 100644
--- a/app/uploaders/image_uploader.rb
+++ b/app/uploaders/image_uploader.rb
@@ -24,7 +24,7 @@ class ImageUploader < CarrierWave::Uploader::Base
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
- "image/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
+ "#{model.id}"
end
# Provide a default URL as a default if there hasn't been a file uploaded:
@@ -32,9 +32,9 @@ class ImageUploader < CarrierWave::Uploader::Base
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
# end
def default_url
- "news_alt.jpg"
+ Site.first.default_image.url rescue "-sign-in-logo.png"
end
-
+
# Process files as they are uploaded:
# process :scale => [200, 300]
#
@@ -48,7 +48,7 @@ class ImageUploader < CarrierWave::Uploader::Base
# end
version :thumb do
- process :resize_to_fit => [200, 200]
+ process :resize_to_limit => [200, 200]
end
# Add a white list of extensions which are allowed to be uploaded.
diff --git a/app/views/admin/assets/_asset.html.erb b/app/views/admin/assets/_asset.html.erb
index a45e9a4b4..3040f8725 100644
--- a/app/views/admin/assets/_asset.html.erb
+++ b/app/views/admin/assets/_asset.html.erb
@@ -10,8 +10,8 @@
- <%= asset.data.file.content_type %>
- <%= number_to_human_size(asset.data.file.file_length) %>
+ <%= asset.data.file.content_type rescue nil %>
+ <%= number_to_human_size(asset.data.file.file_length) rescue nil %>
<%= asset.description rescue nil %>
diff --git a/app/views/admin/assets/create1.js.erb b/app/views/admin/assets/create1.js.erb
index 267b2138e..d2e2550a3 100644
--- a/app/views/admin/assets/create1.js.erb
+++ b/app/views/admin/assets/create1.js.erb
@@ -2,7 +2,6 @@
// Uncomment and change this document.domain value if you are loading the script cross subdomains
// document.domain = 'moxiecode.com';
-// var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},10)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false&&b.editor.settings.language_load!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('
+<% end -%>
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_index_paginator.html.erb b/app/views/admin/users_new_interface/_index_paginator.html.erb
new file mode 100644
index 000000000..04fff093e
--- /dev/null
+++ b/app/views/admin/users_new_interface/_index_paginator.html.erb
@@ -0,0 +1,8 @@
+
diff --git a/app/views/admin/users_new_interface/_info.html.erb b/app/views/admin/users_new_interface/_info.html.erb
new file mode 100644
index 000000000..24b0d9760
--- /dev/null
+++ b/app/views/admin/users_new_interface/_info.html.erb
@@ -0,0 +1,12 @@
+
+
<%= info.title %>
+
+
+ <% info.attribute_fields.each do |af|%>
+ <%= af.block_helper(@user,@form_index)%>
+ <% @form_index = @form_index +1 %>
+ <% end %>
+
+
+
+
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_infos.html.erb b/app/views/admin/users_new_interface/_infos.html.erb
new file mode 100644
index 000000000..7af4321ef
--- /dev/null
+++ b/app/views/admin/users_new_interface/_infos.html.erb
@@ -0,0 +1,4 @@
+
+ <%#= f.text_field :email, :onfocus => "this.value='';", :onblur => "if(this.value==''){this.value=#{t(:email)};}", :value => (@user.email.blank? ? t(:email) : @user.email), :class => 'user_mail' %>
+
+<%=render :partial=>"info",:collection=>Info.all%>
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_js_and_css.html.erb b/app/views/admin/users_new_interface/_js_and_css.html.erb
new file mode 100644
index 000000000..d6bb59e06
--- /dev/null
+++ b/app/views/admin/users_new_interface/_js_and_css.html.erb
@@ -0,0 +1,7 @@
+<% content_for :page_specific_css do -%>
+ <%= stylesheet_link_tag "member" %>
+ <%= stylesheet_link_tag "item"%>
+<% end -%>
+<% content_for :page_specific_javascript do -%>
+ <%#= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
+<% end -%>
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_plugin_summary.html.erb b/app/views/admin/users_new_interface/_plugin_summary.html.erb
new file mode 100644
index 000000000..09871ad83
--- /dev/null
+++ b/app/views/admin/users_new_interface/_plugin_summary.html.erb
@@ -0,0 +1,46 @@
+
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_role.html.erb b/app/views/admin/users_new_interface/_role.html.erb
new file mode 100644
index 000000000..405bfad8a
--- /dev/null
+++ b/app/views/admin/users_new_interface/_role.html.erb
@@ -0,0 +1,25 @@
+
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_roles.html.erb b/app/views/admin/users_new_interface/_roles.html.erb
new file mode 100644
index 000000000..794935e9d
--- /dev/null
+++ b/app/views/admin/users_new_interface/_roles.html.erb
@@ -0,0 +1 @@
+<%=render :partial=>"role",:collection=>Role.all%>
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_show_roles.html.erb b/app/views/admin/users_new_interface/_show_roles.html.erb
new file mode 100644
index 000000000..fa4775df2
--- /dev/null
+++ b/app/views/admin/users_new_interface/_show_roles.html.erb
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+ <%= render :partial => 'show_sub_role',:collection=> @user.get_sub_roles_by_role(show_roles)%>
+
+
+
diff --git a/app/views/admin/users_new_interface/_show_sub_role.html.erb b/app/views/admin/users_new_interface/_show_sub_role.html.erb
new file mode 100644
index 000000000..12c5d8973
--- /dev/null
+++ b/app/views/admin/users_new_interface/_show_sub_role.html.erb
@@ -0,0 +1,7 @@
+
<%= show_sub_role.title %>
+<% show_sub_role.attribute_fields.each do |item|%>
+
+ <%= item.title %>
+ <%= show_attribute_value(@user.get_attribute_value(item).get_value_by_locale(I18n.locale)) %>
+
+<% end %>
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_side_bar.html.erb b/app/views/admin/users_new_interface/_side_bar.html.erb
new file mode 100644
index 000000000..3f82987b0
--- /dev/null
+++ b/app/views/admin/users_new_interface/_side_bar.html.erb
@@ -0,0 +1,16 @@
+<%= content_tag :li, :class => active_for_controllers('users_new_interface') do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-member')+ content_tag(:span, t('admin.new_admin.user')), admin_users_new_interface_index_path %>
+ <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('users_new_interface')) do -%>
+ <%= content_tag :li, link_to((t('admin.new_admin.side_bar.all_user') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, admin_users_new_interface_index_path), :class => active_for_action('users_new_interface', 'index') %>
+ <%= content_tag :li, link_to((t('admin.new_admin.side_bar.add_user') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_admin_users_new_interface_path), :class => active_for_action('users_new_interface', 'new') %>
+ <%= content_tag :li, link_to((t('admin.new_admin.side_bar.user_roles') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, ), :class => active_for_action('users_new_interfacexx', 'index') %>
+ <%= content_tag :li, link_to((t('admin.new_admin.side_bar.user_info') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, ), :class => active_for_action('users_new_interfacexx', 'index') %>
+ <% end -%>
+<% end -%>
+
+<%= content_tag :li, :class => active_for_controllers('plugins') do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-pie')+ content_tag(:span, t('admin.plugins')), admin_plugins_path %>
+ <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('plugins')) do -%>
+ <%= content_tag :li, link_to((t('admin.all_plugins') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, admin_plugins_path), :class => active_for_action('users_new_interface', 'index') %>
+ <% end -%>
+<% end -%>
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_sort_headers.html.erb b/app/views/admin/users_new_interface/_sort_headers.html.erb
new file mode 100644
index 000000000..9c14a32c7
--- /dev/null
+++ b/app/views/admin/users_new_interface/_sort_headers.html.erb
@@ -0,0 +1,7 @@
+<%#= render_sort_bar(true, delete_admin_assets_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]),
+ ['title', 'title','span4', 'admin.title'],
+ ['description', 'description', 'span1-2', 'admin.data'],
+ ['intro', 'intro', 'span1-2', 'admin.file_type'],
+ ['intro', 'intro', 'span1-2', 'admin.file_length'],
+ ['intro', 'intro', 'span1-2', 'admin.description'],
+ ['intro', 'intro', 'span1-2', 'admin.tags']).html_safe %>
diff --git a/app/views/admin/users_new_interface/_temp_form.html.erb b/app/views/admin/users_new_interface/_temp_form.html.erb
new file mode 100644
index 000000000..9e63fb2d1
--- /dev/null
+++ b/app/views/admin/users_new_interface/_temp_form.html.erb
@@ -0,0 +1,31 @@
+
+ <% if @user.avatar? %>
+ <%= image_tag(@user.avatar.thumb.url) %>
+ <% else %>
+ <%= image_tag "person.png" %>
+ <% end %>
+ <%= file_field_tag 'file' %>
+ <%= hidden_field_tag :avatar_cache %>
+
+ <%= t('admin.email') %>:
+ <%= f.text_field :email, :onfocus => "this.value='';", :onblur => "if(this.value==''){this.value=#{t('admin.email')};}", :value => (@user.email.blank? ? t('admin.email') : @user.email), :class => 'user_mail' %>
+
+
+ <%= f.check_box :admin %>
+ <%= t('admin.admin') %>:
+
+
+
+
+
+
+ <%=render :partial=>"temp_profile",:collection=>Info.all%>
+
+ <%= t('admin.role') %>:
+
+ <%= render :partial=>"temp_sub_role_from",:collection=>@user.sub_roles %>
+
+
+
+
+
diff --git a/app/views/admin/users_new_interface/_temp_profile.html.erb b/app/views/admin/users_new_interface/_temp_profile.html.erb
new file mode 100644
index 000000000..7112f9948
--- /dev/null
+++ b/app/views/admin/users_new_interface/_temp_profile.html.erb
@@ -0,0 +1,7 @@
+
+<%= temp_profile.title %>
+<% temp_profile.attribute_fields.each do |af|%>
+ <%= af.block_helper(@user,@form_index)%>
+ <% @form_index = @form_index +1 %>
+<% end %>
+
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_temp_sub_role_from.html.erb b/app/views/admin/users_new_interface/_temp_sub_role_from.html.erb
new file mode 100644
index 000000000..05fa4196f
--- /dev/null
+++ b/app/views/admin/users_new_interface/_temp_sub_role_from.html.erb
@@ -0,0 +1,10 @@
+
+<%= temp_sub_role_from.title%>
+
+
+<% temp_sub_role_from.attribute_fields.each do |af| %>
+ <%= af.block_helper(@user,@form_index) %>
+ <% @form_index = @form_index +1 %>
+<% end %>
+
+
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_user_basic.html.erb b/app/views/admin/users_new_interface/_user_basic.html.erb
new file mode 100644
index 000000000..52fd5f9ba
--- /dev/null
+++ b/app/views/admin/users_new_interface/_user_basic.html.erb
@@ -0,0 +1,32 @@
+ <%#= devise_error_messages! %>
+
+
+
<%=t('admin.user_new_interface.sys_basic_form')%>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_user_for_listing.html.erb b/app/views/admin/users_new_interface/_user_for_listing.html.erb
new file mode 100644
index 000000000..9df1eb109
--- /dev/null
+++ b/app/views/admin/users_new_interface/_user_for_listing.html.erb
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ <%= link_to user_for_listing.name,admin_users_new_interface_path(user_for_listing) %>
+ <%#= render "deled_quick_edit"%>
+
+ <%= Random.rand(1000)%>
+ <%= Random.rand(10)%>
+
+ <%= Random.rand(10000)%>
+
+
+
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_user_for_summary.html.erb b/app/views/admin/users_new_interface/_user_for_summary.html.erb
new file mode 100644
index 000000000..17848797f
--- /dev/null
+++ b/app/views/admin/users_new_interface/_user_for_summary.html.erb
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ <%= show_avatar(user_for_summary) %>
+
+
+
+
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_user_for_thumbnail.html.erb b/app/views/admin/users_new_interface/_user_for_thumbnail.html.erb
new file mode 100644
index 000000000..38b9aae53
--- /dev/null
+++ b/app/views/admin/users_new_interface/_user_for_thumbnail.html.erb
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ <%= show_avatar(user_for_thumbnail) %>
+
+
+
+
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/_user_role.html.erb b/app/views/admin/users_new_interface/_user_role.html.erb
new file mode 100644
index 000000000..fd47de601
--- /dev/null
+++ b/app/views/admin/users_new_interface/_user_role.html.erb
@@ -0,0 +1,16 @@
+
+
+
+ <%= t(i18n)%>
+
+
+
+ <% items.each do |item| %>
+
+ <%= item[:name] %>
+ <%= show_attribute_value(item[:value]) %>
+
+ <% end -%>
+
+
+
diff --git a/app/views/admin/users_new_interface/edit.html.erb b/app/views/admin/users_new_interface/edit.html.erb
new file mode 100644
index 000000000..d61886df1
--- /dev/null
+++ b/app/views/admin/users_new_interface/edit.html.erb
@@ -0,0 +1,28 @@
+<% content_for :side_bar do %>
+ <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('admin.user'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-member', :side_bar_content => 'admin/users_new_interface/side_bar'} %>
+<% end %>
+
+<% content_for :page_specific_css do -%>
+ <%= stylesheet_link_tag "member" %>
+ <%= stylesheet_link_tag "site-map" %>
+ <%= stylesheet_link_tag "isotope" %>
+<% end -%>
+<% content_for :page_specific_javascript do -%>
+ <%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
+ <%= javascript_include_tag "inc/modal-preview" %>
+ <%= javascript_include_tag "lib/contenteditable" %>
+<% end -%>
+
+
+<%= content_tag :div,:class=>"user-role site-map" do%>
+
+ <%= form_for @user, :url => admin_users_new_interface_path(@user), :html => { :multipart => true } do |f| %>
+ <%= f.error_messages %>
+ <%= render :partial => 'form', :locals => { :f => f } %>
+
+ <%= link_back %>
+ <%= link_to t('update'), "#", :onclick=>"$('#edit_user_#{@user.id}').submit()" %>
+
+ <% end -%>
+
+<% end -%>
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/index.html.erb b/app/views/admin/users_new_interface/index.html.erb
new file mode 100644
index 000000000..58f4f0aa4
--- /dev/null
+++ b/app/views/admin/users_new_interface/index.html.erb
@@ -0,0 +1,24 @@
+<% content_for :side_bar do %>
+ <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('admin.user'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-member', :side_bar_content => 'admin/users_new_interface/side_bar'} %>
+<% end %>
+
+<%= render :partial => "js_and_css"%>
+
+<%= render :partial => "filter"%>
+
+
+
+
+
+
+
+
+
+
+
+
+ <%= render :partial => "user_for_listing",:collection=> @users%>
+
+
+
+<%= render :partial=> "index_paginator" %>
diff --git a/app/views/admin/users_new_interface/index.js.erb b/app/views/admin/users_new_interface/index.js.erb
new file mode 100644
index 000000000..6c7ec7fca
--- /dev/null
+++ b/app/views/admin/users_new_interface/index.js.erb
@@ -0,0 +1,3 @@
+$("#sort_headers").html("<%= j render 'sort_headers' %>");
+$("#tbody_users").html("<%= j render :partial => 'user_for_listing', :collection => @users %>");
+$("#user_pagination").html("<%= j paginate @users, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/index_summary.html.erb b/app/views/admin/users_new_interface/index_summary.html.erb
new file mode 100644
index 000000000..5de99bb37
--- /dev/null
+++ b/app/views/admin/users_new_interface/index_summary.html.erb
@@ -0,0 +1,13 @@
+<% content_for :side_bar do %>
+ <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('admin.user'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-member', :side_bar_content => 'admin/users_new_interface/side_bar'} %>
+<% end %>
+
+<%= render :partial => "js_and_css"%>
+
+<%= render :partial => "filter"%>
+
+
+ <%= render :partial=>"user_for_summary",:collection=> @users%>
+
+
+<%= render :partial=> "index_paginator" %>
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/index_summary.js.erb b/app/views/admin/users_new_interface/index_summary.js.erb
new file mode 100644
index 000000000..109a75969
--- /dev/null
+++ b/app/views/admin/users_new_interface/index_summary.js.erb
@@ -0,0 +1,3 @@
+$("#sort_headers").html("<%= j render 'sort_headers' %>");
+$("#summary_block_users").html("<%= j render :partial => 'user_for_summary', :collection => @users %>");
+$("#user_pagination").html("<%= j paginate @users, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/index_thumbnail.html.erb b/app/views/admin/users_new_interface/index_thumbnail.html.erb
new file mode 100644
index 000000000..3f07dbe7f
--- /dev/null
+++ b/app/views/admin/users_new_interface/index_thumbnail.html.erb
@@ -0,0 +1,12 @@
+<% content_for :side_bar do %>
+ <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('admin.user'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-member', :side_bar_content => 'admin/users_new_interface/side_bar'} %>
+<% end %>
+
+<%= render :partial => "js_and_css"%>
+
+<%= render :partial => "filter"%>
+
+
+ <%= render :partial=>"user_for_thumbnail",:collection=> @users%>
+
+<%= render :partial=> "index_paginator" %>
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/index_thumbnail.js.erb b/app/views/admin/users_new_interface/index_thumbnail.js.erb
new file mode 100644
index 000000000..234663efb
--- /dev/null
+++ b/app/views/admin/users_new_interface/index_thumbnail.js.erb
@@ -0,0 +1,3 @@
+$("#sort_headers").html("<%= j render 'sort_headers' %>");
+$("#thumbnail_block_users").html("<%= j render :partial => 'user_for_thumbnail', :collection => @users %>");
+$("#user_pagination").html("<%= j paginate @users, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/new.html.erb b/app/views/admin/users_new_interface/new.html.erb
new file mode 100644
index 000000000..3e9bfc77f
--- /dev/null
+++ b/app/views/admin/users_new_interface/new.html.erb
@@ -0,0 +1,30 @@
+<% content_for :side_bar do %>
+ <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('admin.user'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-member', :side_bar_content => 'admin/users_new_interface/side_bar'} %>
+<% end %>
+
+<% content_for :page_specific_css do -%>
+ <%= stylesheet_link_tag "member" %>
+ <%= stylesheet_link_tag "site-map" %>
+ <%= stylesheet_link_tag "isotope" %>
+<% end -%>
+<% content_for :page_specific_javascript do -%>
+ <%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
+ <%= javascript_include_tag "inc/modal-preview" %>
+ <%= javascript_include_tag "lib/contenteditable" %>
+<% end -%>
+
+
+<%= content_tag :div,:class=>"user-role site-map" do%>
+ <%= form_for @user, :url => admin_users_new_interface_index_path, :html => { :multipart => true },:method => :post do |f| %>
+
+ <%= f.error_messages %>
+ <%= render :partial => 'user_basic', :locals => {:f => f}%>
+ <%= render :partial => 'form', :locals => { :f => f } %>
+
+ <%#= link_back %>
+ <%#= link_to t('update'), "#", :onclick=>"$('#edit_user_#{@user.id}').submit()" %>
+ <%= f.submit%>
+
+ <% end -%>
+
+<% end -%>
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/plugin_dashbroad.html.erb b/app/views/admin/users_new_interface/plugin_dashbroad.html.erb
new file mode 100644
index 000000000..3dc728197
--- /dev/null
+++ b/app/views/admin/users_new_interface/plugin_dashbroad.html.erb
@@ -0,0 +1,10 @@
+<% content_for :side_bar do %>
+ <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('admin.user'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-member', :side_bar_content => 'admin/users_new_interface/side_bar'} %>
+<% end %>
+
+
+ <% #binding.pry%>
+ <%= render :partial=> 'plugin_summary'%>
+ <%= render :partial=> 'plugin_summary'%>
+ <%= render :partial=> 'plugin_summary'%>
+
\ No newline at end of file
diff --git a/app/views/admin/users_new_interface/show.html.erb b/app/views/admin/users_new_interface/show.html.erb
new file mode 100644
index 000000000..b064986b5
--- /dev/null
+++ b/app/views/admin/users_new_interface/show.html.erb
@@ -0,0 +1,63 @@
+<% content_for :side_bar do %>
+ <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('admin.user'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-member', :side_bar_content => 'admin/users_new_interface/side_bar'} %>
+<% end %>
+
+<%= render :partial => "js_and_css"%>
+
+
+
+
+
+
+
+ <%= content_tag :li, :class=>(params[:show_plugin_profile].nil? ? "active" : nil) do %>
+ <%= link_to t("admin.new_admin.users.all_plugin_summary")%>
+ <% end -%>
+ <% @plugins.each do |plugin| %>
+ <%= content_tag :li, :class=>(params[:show_plugin_profile] == plugin.name ? "active" : nil) do %>
+ <%= link_to plugin.name, :show_plugin_profile => plugin.name %>
+ <% end -%>
+ <% end -%>
+
+
+
+
+
+ <%=render :partial => @right_partial %>
+
+
+
+
+
+
+ <%= show_avatar(@user) %>
+
+
+ <%= @user.name%>
+
+
+ <%= @user.email %>
+
+ <%= link_to "
#{t('admin.edit')}".html_safe,edit_admin_users_new_interface_path(@user),:class=>"btn btn-small"%>
+
+
+
+
+
+ <%= render :partial=> "user_role",:locals=>{:role_class=>"basic",:i18n=>"admin.new_admin.users.profile",:items=>@profile_data} %>
+ <%= render :partial=> "show_roles",:collection=>@user.roles %>
+ <%# @user.sub_roles.each{|sr| render :partial=> "user_role",:locals=>{:role_class=>sr.key.to_s,:i18n=>"admin.new_admin.users.roles.#{sr.key.to_s}",:items=>sr} }%>
+
+ <%#= render :partial=> "user_role",:locals=>{:role_class=>"teacher",:i18n=>"admin.new_admin.users.roles.teacher",:items=>@teacher_data} %>
+ <%#= render :partial=> "user_role",:locals=>{:role_class=>"student",:i18n=>"admin.new_admin.users.roles.student",:items=>@student_data}%>
+ <%#= render :partial=> "user_role",:locals=>{:role_class=>"staff",:i18n=>"admin.new_admin.users.roles.staff",:items=>@staff_data} %>
+
+
+
+
diff --git a/app/views/admin/users_new_interface/temp_edit.html.erb b/app/views/admin/users_new_interface/temp_edit.html.erb
new file mode 100644
index 000000000..ac81ef48a
--- /dev/null
+++ b/app/views/admin/users_new_interface/temp_edit.html.erb
@@ -0,0 +1,27 @@
+<% content_for :side_bar do %>
+ <%= render :partial => 'layouts/side_bar', :locals => {:link_name => t('admin.user'), :link_url => admin_site_site_info_path(@site), :icon => 'icons-member', :side_bar_content => 'admin/users_new_interface/side_bar'} %>
+<% end %>
+
+<% content_for :page_specific_css do -%>
+ <%= stylesheet_link_tag "member" %>
+ <%= stylesheet_link_tag "site-map" %>
+ <%= stylesheet_link_tag "isotope" %>
+<% end -%>
+<% content_for :page_specific_javascript do -%>
+ <%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
+ <%= javascript_include_tag "inc/modal-preview" %>
+ <%= javascript_include_tag "lib/contenteditable" %>
+<% end -%>
+
+<%= content_tag :div,:class=>"user-role site-map" do%>
+
+ <%= form_for @user, :url => admin_users_new_interface_path(@user), :html => { :multipart => true } do |f| %>
+ <%= f.error_messages %>
+ <%= render :partial => 'temp_form', :locals => { :f => f } %>
+
+ <%= link_back %>
+ <%= link_to t('update'), "#", :onclick=>"$('#edit_user_#{@user.id}').submit()" %>
+
+ <% end -%>
+
+<% end -%>
\ No newline at end of file
diff --git a/app/views/desktop/app_manager.html.erb b/app/views/desktop/app_manager.html.erb
new file mode 100755
index 000000000..b6a54fe3b
--- /dev/null
+++ b/app/views/desktop/app_manager.html.erb
@@ -0,0 +1,36 @@
+
\ No newline at end of file
diff --git a/app/views/desktop/app_view1.html.erb b/app/views/desktop/app_view1.html.erb
new file mode 100644
index 000000000..795c9ab00
--- /dev/null
+++ b/app/views/desktop/app_view1.html.erb
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/app/views/desktop/appstore.html.erb b/app/views/desktop/appstore.html.erb
new file mode 100644
index 000000000..ab83d9d93
--- /dev/null
+++ b/app/views/desktop/appstore.html.erb
@@ -0,0 +1,26 @@
+
\ No newline at end of file
diff --git a/app/views/desktop/appstore/onlinestore.html.erb b/app/views/desktop/appstore/onlinestore.html.erb
new file mode 100644
index 000000000..c5df54d96
--- /dev/null
+++ b/app/views/desktop/appstore/onlinestore.html.erb
@@ -0,0 +1,11 @@
+
Online Store
+
\ No newline at end of file
diff --git a/app/views/desktop/appstore/widgets.html.erb b/app/views/desktop/appstore/widgets.html.erb
new file mode 100644
index 000000000..4fd150c43
--- /dev/null
+++ b/app/views/desktop/appstore/widgets.html.erb
@@ -0,0 +1,11 @@
+
Your Widgets
+
\ No newline at end of file
diff --git a/app/views/desktop/books.html.erb b/app/views/desktop/books.html.erb
new file mode 100644
index 000000000..861a9926c
--- /dev/null
+++ b/app/views/desktop/books.html.erb
@@ -0,0 +1,33 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/books/add.html.erb b/app/views/desktop/books/add.html.erb
new file mode 100644
index 000000000..764f293ef
--- /dev/null
+++ b/app/views/desktop/books/add.html.erb
@@ -0,0 +1,87 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/books/list.html.erb b/app/views/desktop/books/list.html.erb
new file mode 100644
index 000000000..30fc4f60c
--- /dev/null
+++ b/app/views/desktop/books/list.html.erb
@@ -0,0 +1,75 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/books/seminar.html.erb b/app/views/desktop/books/seminar.html.erb
new file mode 100644
index 000000000..e32e4d6c5
--- /dev/null
+++ b/app/views/desktop/books/seminar.html.erb
@@ -0,0 +1,75 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/desktop.html.erb b/app/views/desktop/desktop.html.erb
new file mode 100755
index 000000000..938275066
--- /dev/null
+++ b/app/views/desktop/desktop.html.erb
@@ -0,0 +1,30 @@
+
\ No newline at end of file
diff --git a/app/views/desktop/index.html.erb b/app/views/desktop/index.html.erb
new file mode 100755
index 000000000..039ae65fa
--- /dev/null
+++ b/app/views/desktop/index.html.erb
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
Check the Notifications section for more information.
+
+
+
+
diff --git a/app/views/desktop/journal_p.html.erb b/app/views/desktop/journal_p.html.erb
new file mode 100644
index 000000000..6dddb734f
--- /dev/null
+++ b/app/views/desktop/journal_p.html.erb
@@ -0,0 +1,33 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/journal_pages/add.html.erb b/app/views/desktop/journal_pages/add.html.erb
new file mode 100644
index 000000000..324432b61
--- /dev/null
+++ b/app/views/desktop/journal_pages/add.html.erb
@@ -0,0 +1,109 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/journal_pages/list.html.erb b/app/views/desktop/journal_pages/list.html.erb
new file mode 100644
index 000000000..e32e4d6c5
--- /dev/null
+++ b/app/views/desktop/journal_pages/list.html.erb
@@ -0,0 +1,75 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/orbit.html.erb b/app/views/desktop/orbit.html.erb
new file mode 100644
index 000000000..b9bcbda63
--- /dev/null
+++ b/app/views/desktop/orbit.html.erb
@@ -0,0 +1,55 @@
+
\ No newline at end of file
diff --git a/app/views/desktop/patents/add.html.erb b/app/views/desktop/patents/add.html.erb
new file mode 100644
index 000000000..190e8abd6
--- /dev/null
+++ b/app/views/desktop/patents/add.html.erb
@@ -0,0 +1,107 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/patents/list.html.erb b/app/views/desktop/patents/list.html.erb
new file mode 100644
index 000000000..e32e4d6c5
--- /dev/null
+++ b/app/views/desktop/patents/list.html.erb
@@ -0,0 +1,75 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/research_d.html.erb b/app/views/desktop/research_d.html.erb
new file mode 100644
index 000000000..f9b8bf5ca
--- /dev/null
+++ b/app/views/desktop/research_d.html.erb
@@ -0,0 +1,33 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/research_domain/add.html.erb b/app/views/desktop/research_domain/add.html.erb
new file mode 100644
index 000000000..190e8abd6
--- /dev/null
+++ b/app/views/desktop/research_domain/add.html.erb
@@ -0,0 +1,107 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/research_domain/list.html.erb b/app/views/desktop/research_domain/list.html.erb
new file mode 100644
index 000000000..e32e4d6c5
--- /dev/null
+++ b/app/views/desktop/research_domain/list.html.erb
@@ -0,0 +1,75 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/research_p.html.erb b/app/views/desktop/research_p.html.erb
new file mode 100644
index 000000000..43eab7be0
--- /dev/null
+++ b/app/views/desktop/research_p.html.erb
@@ -0,0 +1,33 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/research_project/add.html.erb b/app/views/desktop/research_project/add.html.erb
new file mode 100644
index 000000000..190e8abd6
--- /dev/null
+++ b/app/views/desktop/research_project/add.html.erb
@@ -0,0 +1,107 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/research_project/list.html.erb b/app/views/desktop/research_project/list.html.erb
new file mode 100644
index 000000000..e32e4d6c5
--- /dev/null
+++ b/app/views/desktop/research_project/list.html.erb
@@ -0,0 +1,75 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/sections.html.erb b/app/views/desktop/sections.html.erb
new file mode 100644
index 000000000..d8e8208e4
--- /dev/null
+++ b/app/views/desktop/sections.html.erb
@@ -0,0 +1,178 @@
+
\ No newline at end of file
diff --git a/app/views/desktop/seminar_p.html.erb b/app/views/desktop/seminar_p.html.erb
new file mode 100644
index 000000000..eec6fc5f5
--- /dev/null
+++ b/app/views/desktop/seminar_p.html.erb
@@ -0,0 +1,33 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/seminar_pages/add.html.erb b/app/views/desktop/seminar_pages/add.html.erb
new file mode 100644
index 000000000..190e8abd6
--- /dev/null
+++ b/app/views/desktop/seminar_pages/add.html.erb
@@ -0,0 +1,107 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/seminar_pages/list.html.erb b/app/views/desktop/seminar_pages/list.html.erb
new file mode 100644
index 000000000..e32e4d6c5
--- /dev/null
+++ b/app/views/desktop/seminar_pages/list.html.erb
@@ -0,0 +1,75 @@
+
+
\ No newline at end of file
diff --git a/app/views/desktop/settings.html.erb b/app/views/desktop/settings.html.erb
new file mode 100644
index 000000000..8b7ad2d1f
--- /dev/null
+++ b/app/views/desktop/settings.html.erb
@@ -0,0 +1,27 @@
+
\ No newline at end of file
diff --git a/app/views/desktop/settings/connections.html.erb b/app/views/desktop/settings/connections.html.erb
new file mode 100644
index 000000000..148762da5
--- /dev/null
+++ b/app/views/desktop/settings/connections.html.erb
@@ -0,0 +1,44 @@
+
diff --git a/app/views/desktop/settings/sections.html.erb b/app/views/desktop/settings/sections.html.erb
new file mode 100644
index 000000000..dcb922379
--- /dev/null
+++ b/app/views/desktop/settings/sections.html.erb
@@ -0,0 +1,18 @@
+
+
+
+
+
Section Names
+
+
sample desciption
+
+
+
+
\ No newline at end of file
diff --git a/app/views/desktop/settings/themes.html.erb b/app/views/desktop/settings/themes.html.erb
new file mode 100644
index 000000000..6a3c34f83
--- /dev/null
+++ b/app/views/desktop/settings/themes.html.erb
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+ <% @themes.each do |theme| %>
+
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb
index 26ca75993..f394700ce 100644
--- a/app/views/devise/sessions/new.html.erb
+++ b/app/views/devise/sessions/new.html.erb
@@ -3,16 +3,16 @@
<%= t(:login) %>
- <%= form_for :user, :url => user_session_path, :html => {:class => 'user_new form-horizontal'} do |f| %>
+ <%= form_for resource, :as => resource_name, :url => session_path(resource_name), :html => {:class => 'user_new form-horizontal'} do |f| %>
<% flash.each do |key, msg| %>
<%= content_tag :span, msg, :class => [key, "notice label label-warning"] %>
- <% end%>
+ <% end %>
You need to sign in or sign up before continuing.
- <%= f.label :nccu_ldap_uid ,t("nccu_c.nccu_ldap_uid")%>
- <%= f.text_field :nccu_ldap_uid, :placeholder => t("nccu_c.nccu_ldap_uid"), :style => "width: 330px;" %>
+ <%= f.label :email ,t("admin.user_new_interface.email")%>
+ <%= f.text_field :email, :placeholder => t("admin.user_new_interface.email"), :style => "width: 330px;" %>
Please correct the error
diff --git a/app/views/layouts/_orbit_bar.html.erb b/app/views/layouts/_orbit_bar.html.erb
index 3645d62f1..4733ab6fd 100644
--- a/app/views/layouts/_orbit_bar.html.erb
+++ b/app/views/layouts/_orbit_bar.html.erb
@@ -6,12 +6,16 @@
Orbit
<% else %>
@@ -20,7 +24,7 @@
<%= link_to t(:homepage), root_path, :class => 'orbit-bar-home' %>
- Desktop
+ <%= link_to t(:desktop), desktop_path, :class => 'orbit-bar-desktop' %>
-
+
search
<% if user_signed_in? %>
@@ -86,7 +90,7 @@
- <%= f.text_field :nccu_ldap_uid, :class => 'span2', :placeholder => t('nccu_c.nccu_ldap_uid'), :size => 16 %>
+ <%= f.text_field :email, :class => 'span2', :placeholder => t(:email), :size => 16 %>
diff --git a/app/views/layouts/_side_bar.html.erb b/app/views/layouts/_side_bar.html.erb
index 02282605e..6363bb46a 100644
--- a/app/views/layouts/_side_bar.html.erb
+++ b/app/views/layouts/_side_bar.html.erb
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
<%#= content_tag :li, :class => active_for_controllers('purchases') do -%>
<%#= link_to content_tag(:i, nil, :class => 'icons-purchase') + t(:purchase), admin_purchases_path %>
<%# end -%>
@@ -79,4 +80,26 @@
<% flash.each do |key, msg| %>
<%= content_tag :span, msg, :class => [key, "notice label label-warning"] %>
<% end%>
-
\ No newline at end of file
+
+=======
+
+>>>>>>> various_bugs
diff --git a/app/views/layouts/_side_bar_content.html.erb b/app/views/layouts/_side_bar_content.html.erb
new file mode 100644
index 000000000..94c0b104d
--- /dev/null
+++ b/app/views/layouts/_side_bar_content.html.erb
@@ -0,0 +1,121 @@
+
+<%#= content_tag :li, :class => active_for_controllers('purchases') do -%>
+ <%#= link_to content_tag(:i, nil, :class => 'icons-purchase') + t('admin.purchase'), admin_purchases_path %>
+<%# end -%>
+<% content_for :page_specific_javascript do %>
+ <%= javascript_include_tag "/static/kernel.js" %>
+<% end %>
+
+<%= content_tag :li, :class => (active_for_controllers('bulletins', '/panel/announcement/back_end/tags', 'bulletin_categorys', 'approvals') || active_for_app_auth('Announcement') || active_for_ob_auths_object("BulletinCategory") ) do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-announcement') + content_tag(:span, t('admin.announcement')), panel_announcement_back_end_bulletins_path %>
+ <%= content_tag :ul, :class => ("nav nav-list " + (visible_for_controllers('bulletins', '/panel/announcement/back_end/tags', 'bulletin_categorys', 'approvals')||active_for_ob_auths_object("BulletinCategory"))) do -%>
+ <%= content_tag :li, link_to((t('announcement.all_articles') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_announcement_back_end_bulletins_path), :class => active_for_action('bulletins', 'index') %>
+ <%= content_tag :li, link_to((t('announcement.add_new') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_panel_announcement_back_end_bulletin_path), :class => active_for_action('bulletins', 'new') if (is_manager? rescue nil) %>
+ <%= content_tag :li, link_to((t('announcement.categories') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_announcement_back_end_bulletin_categorys_path), :class =>( active_for_action('bulletin_categorys', 'index') || active_for_ob_auths_object("BulletinCategory") )if (is_manager? rescue nil) %>
+ <%= content_tag :li, link_to((t('announcement.tags') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_announcement_back_end_tags_path), :class => active_for_action('/panel/announcement/back_end/tags', 'index')if (is_manager? rescue nil) %>
+ <%= content_tag :li, link_to((t('announcement.bulletin.approval_setting') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_announcement_back_end_approval_setting_path), :class => active_for_action('approvals', 'setting') if (is_manager? rescue nil) %>
+ <%= content_tag :li, link_to((t('admin.module.authorization') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {title: "Announcement"}))), :class => active_for_app_auth('Announcement') if (is_admin? rescue nil) %>
+
+ <% end -%>
+
+<% end -%>
+
+<%= content_tag :li, :class =>( active_for_controllers('news_bulletins', '/panel/news/back_end/tags', 'news_bulletin_categorys', 'news_approvals')|| active_for_app_auth('news') || active_for_ob_auths_object("NewsBulletinCategory")) do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-announcement') + content_tag(:span, t('admin.news')), panel_news_back_end_news_bulletins_path %>
+ <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('news_bulletins', '/panel/news/back_end/tags', 'news_bulletin_categorys', 'news_approvals')) do -%>
+ <%= content_tag :li, link_to((t('announcement.all_articles') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_news_back_end_news_bulletins_path), :class => active_for_action('news_bulletins', 'index') %>
+ <%= content_tag :li, link_to((t('announcement.add_new') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_panel_news_back_end_news_bulletin_path), :class => active_for_action('news_bulletins', 'new') if (is_manager? rescue nil) %>
+ <%= content_tag :li, link_to((t('announcement.categories') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_news_back_end_news_bulletin_categorys_path), :class => active_for_action('news_bulletin_categorys', 'index') || active_for_ob_auths_object("NewsBulletinCategory") if (is_manager? rescue nil) %>
+ <%= content_tag :li, link_to((t('announcement.tags') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_news_back_end_tags_path), :class => active_for_action('/panel/news/back_end/tags', 'index') if (is_manager? rescue nil)%>
+ <%= content_tag :li, link_to((t('announcement.bulletin.approval_setting') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_news_back_end_approval_setting_path), :class => active_for_action('news_approvals', 'setting') if (is_manager? rescue nil) %>
+ <%= content_tag :li, link_to((t('admin.module.authorization') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "news"}))), :class => active_for_app_auth('news') if (is_admin? rescue nil) %>
+ <% end -%>
+
+<% end -%>
+
+<%#= content_tag :li, :class => active_for_controllers('users') do -%>
+ <%#= link_to content_tag(:i, nil, :class => 'icons-member') + t('admin.member'), admin_users_path %>
+<%# end -%>
+
+<%= content_tag :li, :class => active_for_controllers('page_contexts') || active_for_app_auth('page_content') || active_for_ob_auths_object("PageContext") do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-page') + content_tag(:span, t('admin.page')), panel_page_content_back_end_page_contexts_path %>
+ <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('page_contexts')) do -%>
+ <%#= content_tag :li, link_to(t('admin.all_articles'), panel_page_content_back_end_page_contexts_path), :class => active_for_action('page_context', 'index') %>
+ <%= content_tag :li, link_to((t('admin.module.authorization') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "page_content"}))), :class => active_for_app_auth('page_content') if (is_admin? rescue nil) %>
+ <% end -%>
+
+<% end -%>
+
+<%= content_tag :li, :class => active_for_controllers('ad_banners', 'ad_images') ||active_for_ob_auths_object("AdBanner") ||active_for_app_auth('ad_banners') do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-link') + content_tag(:span, t('admin.ad_banner')), admin_ad_banners_path %>
+
+ <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('ad_banners', 'ad_images') ) do -%>
+ <%#= content_tag :li, link_to(t('admin.ad.all_banners'), admin_ad_banners_path), :class => active_for_action('ad_banners', 'index') %>
+ <%#= content_tag :li, link_to(t('admin.ad.new_banner'), new_admin_ad_banner_path), :class => active_for_action('ad_banners', 'new') %>
+ <%#= content_tag :li, link_to(t('admin.ad.new_image'), new_ad_image_admin_ad_banners_path), :class => active_for_action('ad_images', 'new') %>
+ <%= content_tag :li, link_to((t('admin.module.authorization') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "ad_banners"}))), :class => active_for_app_auth('ad_banners') if (is_admin? rescue nil) %>
+ <% end -%>
+<% end %>
+
+
+<%= content_tag :li, :class => active_for_controllers('web_links', '/panel/web_resource/back_end/tags', 'web_link_categorys') || active_for_app_auth('web_resource') || active_for_ob_auths_object("WebLinkCategory") do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-link') + content_tag(:span, t('admin.link')), panel_web_resource_back_end_web_links_path %>
+ <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('web_links', '/panel/web_resource/back_end/tags', 'web_link_categorys')) do -%>
+ <%= content_tag :li, link_to((t('admin.all_articles') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_web_resource_back_end_web_links_path), :class => active_for_action('web_links', 'index') %>
+ <%= content_tag :li, link_to((t('announcement.add_new') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_panel_web_resource_back_end_web_link_path), :class => active_for_action('web_links', 'new') if (is_manager? rescue nil)%>
+ <%= content_tag :li, link_to((t('announcement.categories') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_web_resource_back_end_web_link_categorys_path), :class => (active_for_action('web_link_categorys', 'index') || active_for_ob_auths_object("WebLinkCategory")) if (is_manager? rescue nil)%>
+ <%= content_tag :li, link_to((t('announcement.tags') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_web_resource_back_end_tags_path), :class => active_for_action('/panel/web_resource/back_end/tags', 'index') if (is_manager? rescue nil)%>
+ <%= content_tag :li, link_to((t('admin.module.authorization') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {title: "web_resource"}))), :class => active_for_app_auth('web_resource') if (is_admin? rescue nil) %>
+ <% end -%>
+<% end -%>
+
+<%= content_tag :li, :class => active_for_controllers('albums','album_images','gallery_categories','/panel/gallery/back_end/tags') || active_for_app_auth("gallery") do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-picture') + content_tag(:span, t('admin.orbit_gallery')), panel_gallery_back_end_albums_path %>
+ <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('albums') ) do -%>
+ <%#= content_tag :li, link_to(t('admin.ad.all_banners'), admin_ad_banners_path), :class => active_for_action('ad_banners', 'index') %>
+ <%#= content_tag :li, link_to(t('admin.ad.new_banner'), new_admin_ad_banner_path), :class => active_for_action('ad_banners', 'new') %>
+ <%#= content_tag :li, link_to(t('admin.ad.new_image'), new_ad_image_admin_ad_banners_path), :class => active_for_action('ad_images', 'new') %>
+ <%= content_tag :li, link_to((t('gallery.categories') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_gallery_back_end_gallery_categories_path), :class => active_for_action('gallery_categories','index') %>
+ <%= content_tag :li, link_to((t('gallery.tags') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_gallery_back_end_tags_path), :class => active_for_action('/panel/gallery/back_end/tags', 'index') %>
+ <%= content_tag :li, link_to((t('admin.module.authorization') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe,admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "gallery"}))), :class => active_for_app_auth('gallery') if (is_admin? rescue nil) %>
+ <% end -%>
+<% end %>
+
+<%= content_tag :li, :class => active_for_controllers('archive_files', 'tags', 'archive_file_categorys') do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-asset') + content_tag(:span, t('admin.archive')), panel_archive_back_end_archive_files_path %>
+ <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('archive_files', 'tags', 'archive_file_categorys')) do -%>
+ <%= content_tag :li, link_to((t('admin.all_articles') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_archive_back_end_archive_files_path), :class => active_for_action('archive_file', 'index') %>
+ <%= content_tag :li, link_to((t('admin.add_new') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_panel_archive_back_end_archive_file_path), :class => active_for_action('archive_file', 'new') %>
+ <%= content_tag :li, link_to((t('admin.categories') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_archive_back_end_archive_file_categorys_path), :class => active_for_action('archive_file_categorys', 'index') %>
+ <%= content_tag :li, link_to((t('admin.tags') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, panel_archive_back_end_tags_path), :class => active_for_action('tags', 'index') %>
+ <% end -%>
+<% end -%>
+
+<%= content_tag :li, :class => active_for_controllers('cals') || active_for_app_auth("calendar") do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-calendar') + content_tag(:span, t('admin.calendar')), panel_calendar_back_end_cals_path %>
+ <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('cals','calendar_categories') ) do -%>
+ <%#= content_tag :li, link_to(t('admin.ad.all_banners'), admin_ad_banners_path), :class => active_for_action('ad_banners', 'index') %>
+ <%#= content_tag :li, link_to(t('admin.ad.new_banner'), new_admin_ad_banner_path), :class => active_for_action('ad_banners', 'new') %>
+ <%#= content_tag :li, link_to(t('admin.ad.new_image'), new_ad_image_admin_ad_banners_path), :class => active_for_action('ad_images', 'new') %>
+ <%= content_tag :li, link_to((t('calendar.calendars') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_panel_calendar_back_end_cal_path), :class => active_for_action('cals','new') %>
+ <%#= content_tag :li, link_to(t('gallery.tags'), panel_gallery_back_end_tags_path), :class => active_for_action('/panel/gallery/back_end/tags', 'index') %>
+ <%#= content_tag :li, link_to(t('admin.module.authorization'),admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "gallery"}))), :class => active_for_app_auth('gallery') if (is_admin? rescue nil) %>
+ <% end -%>
+<% end %>
+<%= content_tag :li, :class => active_for_controllers('locations') || active_for_app_auth("gprs") do -%>
+ <%= link_to content_tag(:i, nil, :class => 'icons-link') + content_tag(:span, t('admin.gprs')), panel_gprs_back_end_locations_path %>
+ <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('locations') ) do -%>
+ <%#= content_tag :li, link_to(t('admin.ad.all_banners'), admin_ad_banners_path), :class => active_for_action('ad_banners', 'index') %>
+ <%#= content_tag :li, link_to(t('admin.ad.new_banner'), new_admin_ad_banner_path), :class => active_for_action('ad_banners', 'new') %>
+ <%#= content_tag :li, link_to(t('admin.ad.new_image'), new_ad_image_admin_ad_banners_path), :class => active_for_action('ad_images', 'new') %>
+ <%#= content_tag :li, link_to((t('calendar.calendars') + content_tag(:i, nil, :class => 'icon-chevron-right')).html_safe, new_panel_calendar_back_end_cal_path), :class => active_for_action('cals','new') %>
+ <%#= content_tag :li, link_to(t('gallery.tags'), panel_gallery_back_end_tags_path), :class => active_for_action('/panel/gallery/back_end/tags', 'index') %>
+ <%#= content_tag :li, link_to(t('admin.module.authorization'),admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "gallery"}))), :class => active_for_app_auth('gallery') if (is_admin? rescue nil) %>
+ <% end -%>
+<% end %>
+
+
+ <% flash.each do |key, msg| %>
+ <%= content_tag :span, msg, :class => [key, "notice label label-warning"] %>
+ <% end%>
+
\ No newline at end of file
diff --git a/app/views/layouts/_users_checkbox_ary.html.erb b/app/views/layouts/_users_checkbox_ary.html.erb
index e3baca271..92cf8242e 100644
--- a/app/views/layouts/_users_checkbox_ary.html.erb
+++ b/app/views/layouts/_users_checkbox_ary.html.erb
@@ -1,3 +1,3 @@
<%= content_tag :div ,:id => "users_checkbox_ary",:class => 'clear' do %>
- <%= render :partial => "shared/privilege_user",:collection =>@sys_users,:as=>:user ,:locals =>{ :chosen_users=> @users_array } %>
+ <%= render :partial => "shared/privilege_user",:collection =>@sys_users,:as=>:user ,:locals =>{ :chosen_users=> @users_array } %>
<%end -%>
\ No newline at end of file
diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb
index 3c2df3761..78673abfa 100644
--- a/app/views/layouts/admin.html.erb
+++ b/app/views/layouts/admin.html.erb
@@ -31,7 +31,7 @@
<%= yield %>
<%= yield :tertiary %>
-
+