[refs #128] Merge 3.2-master into 128-account-activation
|
@ -7,11 +7,10 @@ tmp/
|
||||||
config/database.yml
|
config/database.yml
|
||||||
.idea
|
.idea
|
||||||
config/application.yml
|
config/application.yml
|
||||||
public/stylesheets/compiled/*
|
|
||||||
public/assets/*
|
public/assets/*
|
||||||
config/initializers/local.rb
|
config/initializers/local.rb
|
||||||
public/system/*
|
public/system/*
|
||||||
public/downloads/*
|
public/downloads/*
|
||||||
.rvmrc
|
|
||||||
*.swp
|
*.swp
|
||||||
*.tmproj
|
*.tmproj
|
||||||
|
.sass-cache/
|
||||||
|
|
6
Capfile
|
@ -1,4 +1,8 @@
|
||||||
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
|
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
|
||||||
|
|
||||||
|
# Uncomment if you are using Rails' asset pipeline
|
||||||
|
load 'deploy/assets'
|
||||||
|
|
||||||
Dir['vendor/gems/*/recipes/*.rb', 'vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
|
Dir['vendor/gems/*/recipes/*.rb', 'vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
|
||||||
|
|
||||||
load 'config/deploy' # remove this line to skip loading any of the default tasks
|
load 'config/deploy' # remove this line to skip loading any of the default tasks
|
||||||
|
|
115
Gemfile
|
@ -1,87 +1,78 @@
|
||||||
source 'http://rubygems.org'
|
source 'http://rubygems.org'
|
||||||
|
|
||||||
gem 'rails', '3.0.11' #, :git => 'git://github.com/rails/rails.git'
|
gem 'rails', '3.2.2' #, :git => 'git://github.com/rails/rails.git'
|
||||||
|
|
||||||
gem 'pg', '~> 0.11.0'
|
gem 'pg', '~> 0.13.2'
|
||||||
gem 'silent-postgres', '~> 0.1.1'
|
# gem 'silent-postgres', :git => 'git://github.com/dolzenko/silent-postgres.git' #'~> 0.1.1'
|
||||||
|
gem 'redhillonrails_core', :git => 'git://github.com/chipiga/redhillonrails_core.git', :branch => 'rails31' # '~> 2.0.0.pre' # deprecated
|
||||||
|
# gem 'schema_plus', '~> 0.2.1' # buggy shit!
|
||||||
|
|
||||||
gem 'devise', '~> 2.0.0' #'~> 1.5.2'
|
gem 'devise', '~> 2.0.4'
|
||||||
gem 'omniauth', '~> 1.0.1'
|
gem 'omniauth', '~> 1.0.3'
|
||||||
gem 'omniauth-openid', '~> 1.0.1'
|
gem 'omniauth-openid', '~> 1.0.1'
|
||||||
gem 'cancan', '~> 1.6.7'
|
gem 'cancan', '~> 1.6.7'
|
||||||
#gem 'bitmask_attributes'
|
|
||||||
|
|
||||||
gem "haml-rails", '~> 0.3.4'
|
gem 'ancestry', '~> 1.2.5'
|
||||||
# gem "compass", '~> 0.11.5' # update when it will be needed
|
gem 'paperclip', '~> 2.7.0'
|
||||||
gem 'jammit'
|
gem 'delayed_job_active_record', '~> 0.3.2'
|
||||||
gem "yui-compressor", "0.9.5" # Higher versions depends on Platform gem which conflicts with Platform model
|
gem 'russian', '~> 0.6.0'
|
||||||
gem 'rails3-jquery-autocomplete'
|
gem 'highline', '~> 1.6.11'
|
||||||
|
gem 'rails-xmlrpc', '~> 0.3.6' # :git => 'git://github.com/chipiga/rails-xmlrpc.git'
|
||||||
|
|
||||||
gem 'ancestry', '~> 1.2.4'
|
# gem 'rugged', '~> 0.16.0'
|
||||||
gem 'paperclip', "~> 2.3"
|
|
||||||
gem "will_paginate", "~> 3.0.2"
|
|
||||||
gem 'meta-tags', '~> 1.2.4', :require => 'meta_tags'
|
|
||||||
gem "russian"
|
|
||||||
|
|
||||||
# gem 'ghoul_grack', '~> 0.0.1'
|
|
||||||
gem 'grack', :git => 'git://github.com/rdblue/grack.git', :require => 'git_http'
|
gem 'grack', :git => 'git://github.com/rdblue/grack.git', :require => 'git_http'
|
||||||
gem "grit"
|
gem "grit", :git => 'git://github.com/chipiga/grit.git'
|
||||||
gem 'whenever', :require => false
|
gem 'charlock_holmes', '~> 0.6.8' #, :git => 'git://github.com/brianmario/charlock_holmes.git', :branch => 'bundle-icu'
|
||||||
gem 'delayed_job'
|
|
||||||
gem 'highline', '~> 1.6.8'
|
|
||||||
|
|
||||||
# XML-RPC support
|
# Wiki
|
||||||
# gem 'actionwebservice' #, :git => 'git://github.com/ywen/actionwebservice.git'
|
gem "gollum", "1.3.1"
|
||||||
gem "rails-xmlrpc", '~> 0.3.6' # :git => 'git://github.com/chipiga/rails-xmlrpc.git'
|
gem "redcarpet", "1.17.2"
|
||||||
|
gem 'creole'
|
||||||
|
gem 'rdiscount'
|
||||||
|
# gem 'org-ruby'
|
||||||
|
gem 'RedCloth'
|
||||||
|
gem 'wikicloth'
|
||||||
|
|
||||||
# gem 'passenger', '~> 3.0.11'
|
gem 'unicorn', '~> 4.2.0', :platforms => [:mri, :rbx]
|
||||||
gem 'unicorn', '~> 4.1.1'
|
gem 'trinidad', '~> 1.0.2', :platforms => :jruby
|
||||||
|
gem 'newrelic_rpm', '~> 3.3.2', :platforms => [:mri, :rbx]
|
||||||
|
gem 'whenever', '~> 0.7.3', :require => false
|
||||||
|
|
||||||
|
gem 'rails3-jquery-autocomplete', '~> 1.0.6'
|
||||||
|
gem 'will_paginate', '~> 3.0.3'
|
||||||
|
gem 'meta-tags', '~> 1.2.5', :require => 'meta_tags'
|
||||||
|
gem "haml-rails", '~> 0.3.4'
|
||||||
|
gem 'jquery-rails', '~> 2.0.1'
|
||||||
|
|
||||||
|
group :assets do
|
||||||
|
gem 'sass-rails', '~> 3.2.5'
|
||||||
|
gem 'coffee-rails', '~> 3.2.2'
|
||||||
|
gem 'compass-rails', '~> 1.0.1'
|
||||||
|
gem 'uglifier', '~> 1.2.1'
|
||||||
|
gem 'therubyracer', '~> 0.9.10', :platforms => [:mri, :rbx]
|
||||||
|
gem 'therubyrhino', '~> 1.73.1', :platforms => :jruby
|
||||||
|
end
|
||||||
|
|
||||||
group :production do
|
group :production do
|
||||||
gem "airbrake", '~> 3.0.5'
|
gem "airbrake", '~> 3.0.9'
|
||||||
# gem 'newrelic_rpm', '~> 3.1.1'
|
gem 'bluepill', '~> 0.0.60', :require => false
|
||||||
gem 'bluepill', :require => false
|
gem 'daemons', '1.1.6' # for DJ
|
||||||
end
|
end
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
# gem 'letter_opener'
|
gem 'mailcatcher' # 'letter_opener'
|
||||||
gem 'rails3-generators'
|
gem 'rails3-generators'
|
||||||
gem 'web-app-theme'
|
|
||||||
gem 'hpricot'
|
|
||||||
gem 'ruby_parser'
|
|
||||||
|
|
||||||
# debug
|
|
||||||
gem 'ruby-debug'
|
|
||||||
# gem 'looksee'
|
|
||||||
# gem 'awesome_print'
|
|
||||||
# gem 'wirble'
|
|
||||||
gem 'hirb'
|
gem 'hirb'
|
||||||
# gem 'rails-footnotes', '>= 3.7.5.rc4' # this shit is very buggy don't forget to switch it off back
|
gem 'shotgun'
|
||||||
|
|
||||||
# deploy
|
# deploy
|
||||||
gem 'capistrano', :require => false
|
gem 'capistrano', :require => false
|
||||||
gem 'capistrano-ext', :require => false
|
|
||||||
gem 'cape', :require => false
|
gem 'cape', :require => false
|
||||||
# gem 'capistrano-exts', :require => false #, :git => 'git://github.com/chipiga/capistrano-exts.git'
|
|
||||||
# gem 'capistrano-recipes', :require => false
|
|
||||||
gem 'capistrano_colors', :require => false
|
gem 'capistrano_colors', :require => false
|
||||||
end
|
end
|
||||||
|
|
||||||
group :development, :test do
|
group :test do
|
||||||
gem 'mysql2', '<= 0.2.9'
|
gem 'rspec-rails', '~> 2.8.1'
|
||||||
gem 'rspec-rails', '~> 2.7.0'
|
gem 'factory_girl_rails', '~> 1.7.0'
|
||||||
gem 'factory_girl_rails', '~> 1.4.0'
|
gem 'rr', '~> 1.0.4'
|
||||||
gem 'rr'
|
gem 'shoulda'
|
||||||
end
|
end
|
||||||
|
|
||||||
# group :test do
|
|
||||||
# gem 'spork', '>= 0.9.0.rc9'
|
|
||||||
# gem 'guard-spork', '~> 0.3.1'
|
|
||||||
# gem 'guard-rspec', '~> 0.5.0'
|
|
||||||
# gem 'guard-bundler', '~> 0.1.3'
|
|
||||||
#
|
|
||||||
# gem 'rb-fsevent', '>= 0.4.3', :require => false
|
|
||||||
# gem 'growl', '~> 1.0.3', :require => false
|
|
||||||
# gem 'rb-inotify', '>= 0.8.6', :require => false
|
|
||||||
# gem 'libnotify', '~> 0.5.7', :require => false
|
|
||||||
# end
|
|
||||||
|
|
424
Gemfile.lock
|
@ -1,3 +1,20 @@
|
||||||
|
GIT
|
||||||
|
remote: git://github.com/chipiga/grit.git
|
||||||
|
revision: 696b0967cb7e6bac044569d898e5acef431d4f97
|
||||||
|
specs:
|
||||||
|
grit (2.4.1)
|
||||||
|
diff-lcs (~> 1.1)
|
||||||
|
mime-types (~> 1.15)
|
||||||
|
posix-spawn (~> 0.3.6)
|
||||||
|
|
||||||
|
GIT
|
||||||
|
remote: git://github.com/chipiga/redhillonrails_core.git
|
||||||
|
revision: 5f58167c41882890c223168b0a5521d99e8d92aa
|
||||||
|
branch: rails31
|
||||||
|
specs:
|
||||||
|
redhillonrails_core (2.0.0.pre)
|
||||||
|
activerecord (>= 3.1.0.rc)
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
remote: git://github.com/rdblue/grack.git
|
remote: git://github.com/rdblue/grack.git
|
||||||
revision: 020be3fef3fb308b9d214252522aa5945bf6584a
|
revision: 020be3fef3fb308b9d214252522aa5945bf6584a
|
||||||
|
@ -7,79 +24,112 @@ GIT
|
||||||
GEM
|
GEM
|
||||||
remote: http://rubygems.org/
|
remote: http://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
abstract (1.0.0)
|
RedCloth (4.2.9)
|
||||||
actionmailer (3.0.11)
|
RedCloth (4.2.9-java)
|
||||||
actionpack (= 3.0.11)
|
actionmailer (3.2.2)
|
||||||
mail (~> 2.2.19)
|
actionpack (= 3.2.2)
|
||||||
actionpack (3.0.11)
|
mail (~> 2.4.0)
|
||||||
activemodel (= 3.0.11)
|
actionpack (3.2.2)
|
||||||
activesupport (= 3.0.11)
|
activemodel (= 3.2.2)
|
||||||
builder (~> 2.1.2)
|
activesupport (= 3.2.2)
|
||||||
erubis (~> 2.6.6)
|
builder (~> 3.0.0)
|
||||||
i18n (~> 0.5.0)
|
erubis (~> 2.7.0)
|
||||||
rack (~> 1.2.1)
|
journey (~> 1.0.1)
|
||||||
rack-mount (~> 0.6.14)
|
rack (~> 1.4.0)
|
||||||
rack-test (~> 0.5.7)
|
rack-cache (~> 1.1)
|
||||||
tzinfo (~> 0.3.23)
|
rack-test (~> 0.6.1)
|
||||||
activemodel (3.0.11)
|
sprockets (~> 2.1.2)
|
||||||
activesupport (= 3.0.11)
|
activemodel (3.2.2)
|
||||||
builder (~> 2.1.2)
|
activesupport (= 3.2.2)
|
||||||
i18n (~> 0.5.0)
|
builder (~> 3.0.0)
|
||||||
activerecord (3.0.11)
|
activerecord (3.2.2)
|
||||||
activemodel (= 3.0.11)
|
activemodel (= 3.2.2)
|
||||||
activesupport (= 3.0.11)
|
activesupport (= 3.2.2)
|
||||||
arel (~> 2.0.10)
|
arel (~> 3.0.2)
|
||||||
tzinfo (~> 0.3.23)
|
tzinfo (~> 0.3.29)
|
||||||
activeresource (3.0.11)
|
activeresource (3.2.2)
|
||||||
activemodel (= 3.0.11)
|
activemodel (= 3.2.2)
|
||||||
activesupport (= 3.0.11)
|
activesupport (= 3.2.2)
|
||||||
activesupport (3.0.11)
|
activesupport (3.2.2)
|
||||||
airbrake (3.0.5)
|
i18n (~> 0.6)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
airbrake (3.0.9)
|
||||||
activesupport
|
activesupport
|
||||||
builder
|
builder
|
||||||
ancestry (1.2.4)
|
albino (1.3.3)
|
||||||
|
posix-spawn (>= 0.3.6)
|
||||||
|
ancestry (1.2.5)
|
||||||
activerecord (>= 2.2.2)
|
activerecord (>= 2.2.2)
|
||||||
arel (2.0.10)
|
arel (3.0.2)
|
||||||
bcrypt-ruby (3.0.1)
|
bcrypt-ruby (3.0.1)
|
||||||
bluepill (0.0.51)
|
bcrypt-ruby (3.0.1-java)
|
||||||
|
bluepill (0.0.60)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
daemons (~> 1.1.0)
|
daemons (~> 1.1.4, <= 1.1.6)
|
||||||
i18n (>= 0.5.0)
|
i18n (>= 0.5.0)
|
||||||
state_machine (~> 0.9.4)
|
state_machine (~> 1.1.0)
|
||||||
builder (2.1.2)
|
builder (3.0.0)
|
||||||
cancan (1.6.7)
|
cancan (1.6.7)
|
||||||
cape (1.0.1)
|
cape (1.4.0)
|
||||||
capistrano (2.9.0)
|
capistrano (2.11.2)
|
||||||
highline
|
highline
|
||||||
net-scp (>= 1.0.0)
|
net-scp (>= 1.0.0)
|
||||||
net-sftp (>= 2.0.0)
|
net-sftp (>= 2.0.0)
|
||||||
net-ssh (>= 2.0.14)
|
net-ssh (>= 2.0.14)
|
||||||
net-ssh-gateway (>= 1.1.0)
|
net-ssh-gateway (>= 1.1.0)
|
||||||
capistrano-ext (1.2.1)
|
|
||||||
capistrano (>= 1.0.0)
|
|
||||||
capistrano_colors (0.5.5)
|
capistrano_colors (0.5.5)
|
||||||
chronic (0.6.6)
|
charlock_holmes (0.6.8)
|
||||||
cocaine (0.2.0)
|
chronic (0.6.7)
|
||||||
columnize (0.3.5)
|
chunky_png (1.2.5)
|
||||||
daemons (1.1.4)
|
cocaine (0.2.1)
|
||||||
delayed_job (2.1.4)
|
coffee-rails (3.2.2)
|
||||||
|
coffee-script (>= 2.2.0)
|
||||||
|
railties (~> 3.2.0)
|
||||||
|
coffee-script (2.2.0)
|
||||||
|
coffee-script-source
|
||||||
|
execjs
|
||||||
|
coffee-script-source (1.2.0)
|
||||||
|
compass (0.12.1)
|
||||||
|
chunky_png (~> 1.2)
|
||||||
|
fssm (>= 0.2.7)
|
||||||
|
sass (~> 3.1)
|
||||||
|
compass-rails (1.0.1)
|
||||||
|
compass (~> 0.12.0)
|
||||||
|
creole (0.4.2)
|
||||||
|
daemons (1.1.6)
|
||||||
|
delayed_job (3.0.1)
|
||||||
activesupport (~> 3.0)
|
activesupport (~> 3.0)
|
||||||
daemons
|
delayed_job_active_record (0.3.2)
|
||||||
devise (1.5.2)
|
activerecord (> 2.1.0)
|
||||||
|
delayed_job (~> 3.0.0)
|
||||||
|
devise (2.0.4)
|
||||||
bcrypt-ruby (~> 3.0)
|
bcrypt-ruby (~> 3.0)
|
||||||
orm_adapter (~> 0.0.3)
|
orm_adapter (~> 0.0.3)
|
||||||
warden (~> 1.1)
|
railties (~> 3.1)
|
||||||
|
warden (~> 1.1.1)
|
||||||
diff-lcs (1.1.3)
|
diff-lcs (1.1.3)
|
||||||
erubis (2.6.6)
|
erubis (2.7.0)
|
||||||
abstract (>= 1.0.0)
|
eventmachine (0.12.10)
|
||||||
factory_girl (2.3.2)
|
eventmachine (0.12.10-java)
|
||||||
activesupport
|
execjs (1.3.0)
|
||||||
factory_girl_rails (1.4.0)
|
multi_json (~> 1.0)
|
||||||
factory_girl (~> 2.3.0)
|
expression_parser (0.9.0)
|
||||||
|
factory_girl (2.6.4)
|
||||||
|
activesupport (>= 2.3.9)
|
||||||
|
factory_girl_rails (1.7.0)
|
||||||
|
factory_girl (~> 2.6.0)
|
||||||
railties (>= 3.0.0)
|
railties (>= 3.0.0)
|
||||||
grit (2.4.1)
|
fssm (0.2.8.1)
|
||||||
diff-lcs (~> 1.1)
|
github-markup (0.7.1)
|
||||||
mime-types (~> 1.15)
|
gollum (1.3.1)
|
||||||
|
albino (~> 1.3.2)
|
||||||
|
github-markup (>= 0.4.0, < 1.0.0)
|
||||||
|
grit (~> 2.4.1)
|
||||||
|
mustache (>= 0.11.2, < 1.0.0)
|
||||||
|
nokogiri (~> 1.4)
|
||||||
|
redcarpet
|
||||||
|
sanitize (~> 2.0.0)
|
||||||
|
sinatra (~> 1.0)
|
||||||
haml (3.1.4)
|
haml (3.1.4)
|
||||||
haml-rails (0.3.4)
|
haml-rails (0.3.4)
|
||||||
actionpack (~> 3.0)
|
actionpack (~> 3.0)
|
||||||
|
@ -87,163 +137,231 @@ GEM
|
||||||
haml (~> 3.0)
|
haml (~> 3.0)
|
||||||
railties (~> 3.0)
|
railties (~> 3.0)
|
||||||
hashie (1.2.0)
|
hashie (1.2.0)
|
||||||
highline (1.6.8)
|
highline (1.6.11)
|
||||||
hirb (0.6.0)
|
hike (1.2.1)
|
||||||
hpricot (0.8.5)
|
hirb (0.6.2)
|
||||||
i18n (0.5.0)
|
i18n (0.6.0)
|
||||||
jammit (0.6.5)
|
journey (1.0.3)
|
||||||
yui-compressor (>= 0.9.3)
|
jquery-rails (2.0.1)
|
||||||
json (1.6.3)
|
railties (>= 3.2.0, < 5.0)
|
||||||
kgio (2.6.0)
|
thor (~> 0.14)
|
||||||
linecache (0.46)
|
jruby-rack (1.1.4)
|
||||||
rbx-require-relative (> 0.0.4)
|
json (1.6.5)
|
||||||
mail (2.2.19)
|
json (1.6.5-java)
|
||||||
activesupport (>= 2.3.6)
|
kgio (2.7.3)
|
||||||
|
libv8 (3.3.10.4)
|
||||||
|
mail (2.4.4)
|
||||||
i18n (>= 0.4.0)
|
i18n (>= 0.4.0)
|
||||||
mime-types (~> 1.16)
|
mime-types (~> 1.16)
|
||||||
treetop (~> 1.4.8)
|
treetop (~> 1.4.8)
|
||||||
meta-tags (1.2.4)
|
mailcatcher (0.5.5)
|
||||||
|
activesupport (~> 3.0)
|
||||||
|
eventmachine (~> 0.12)
|
||||||
|
haml (~> 3.1)
|
||||||
|
mail (~> 2.3)
|
||||||
|
sinatra (~> 1.2)
|
||||||
|
skinny (~> 0.2)
|
||||||
|
sqlite3 (~> 1.3)
|
||||||
|
thin (~> 1.2)
|
||||||
|
meta-tags (1.2.6)
|
||||||
actionpack
|
actionpack
|
||||||
mime-types (1.17.2)
|
mime-types (1.18)
|
||||||
mysql2 (0.2.9)
|
multi_json (1.1.0)
|
||||||
|
mustache (0.99.4)
|
||||||
net-scp (1.0.4)
|
net-scp (1.0.4)
|
||||||
net-ssh (>= 1.99.1)
|
net-ssh (>= 1.99.1)
|
||||||
net-sftp (2.0.5)
|
net-sftp (2.0.5)
|
||||||
net-ssh (>= 2.0.9)
|
net-ssh (>= 2.0.9)
|
||||||
net-ssh (2.2.1)
|
net-ssh (2.3.0)
|
||||||
net-ssh-gateway (1.1.0)
|
net-ssh-gateway (1.1.0)
|
||||||
net-ssh (>= 1.99.1)
|
net-ssh (>= 1.99.1)
|
||||||
omniauth (1.0.1)
|
newrelic_rpm (3.3.2.1)
|
||||||
|
nokogiri (1.5.2)
|
||||||
|
nokogiri (1.5.2-java)
|
||||||
|
omniauth (1.0.3)
|
||||||
hashie (~> 1.2)
|
hashie (~> 1.2)
|
||||||
rack
|
rack
|
||||||
omniauth-openid (1.0.1)
|
omniauth-openid (1.0.1)
|
||||||
omniauth (~> 1.0)
|
omniauth (~> 1.0)
|
||||||
rack-openid (~> 1.3.1)
|
rack-openid (~> 1.3.1)
|
||||||
orm_adapter (0.0.5)
|
orm_adapter (0.0.6)
|
||||||
paperclip (2.4.5)
|
paperclip (2.7.0)
|
||||||
activerecord (>= 2.3.0)
|
activerecord (>= 2.3.0)
|
||||||
activesupport (>= 2.3.2)
|
activesupport (>= 2.3.2)
|
||||||
cocaine (>= 0.0.2)
|
cocaine (>= 0.0.2)
|
||||||
mime-types
|
mime-types
|
||||||
pg (0.11.0)
|
pg (0.13.2)
|
||||||
polyglot (0.3.3)
|
polyglot (0.3.3)
|
||||||
rack (1.2.4)
|
posix-spawn (0.3.6)
|
||||||
rack-mount (0.6.14)
|
rack (1.4.1)
|
||||||
rack (>= 1.0.0)
|
rack-cache (1.2)
|
||||||
|
rack (>= 0.4)
|
||||||
rack-openid (1.3.1)
|
rack-openid (1.3.1)
|
||||||
rack (>= 1.1.0)
|
rack (>= 1.1.0)
|
||||||
ruby-openid (>= 2.1.8)
|
ruby-openid (>= 2.1.8)
|
||||||
rack-test (0.5.7)
|
rack-protection (1.2.0)
|
||||||
|
rack
|
||||||
|
rack-ssl (1.3.2)
|
||||||
|
rack
|
||||||
|
rack-test (0.6.1)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
rails (3.0.11)
|
rails (3.2.2)
|
||||||
actionmailer (= 3.0.11)
|
actionmailer (= 3.2.2)
|
||||||
actionpack (= 3.0.11)
|
actionpack (= 3.2.2)
|
||||||
activerecord (= 3.0.11)
|
activerecord (= 3.2.2)
|
||||||
activeresource (= 3.0.11)
|
activeresource (= 3.2.2)
|
||||||
activesupport (= 3.0.11)
|
activesupport (= 3.2.2)
|
||||||
bundler (~> 1.0)
|
bundler (~> 1.0)
|
||||||
railties (= 3.0.11)
|
railties (= 3.2.2)
|
||||||
rails-xmlrpc (0.3.6)
|
rails-xmlrpc (0.3.6)
|
||||||
rails3-generators (0.17.4)
|
rails3-generators (0.17.4)
|
||||||
railties (>= 3.0.0)
|
railties (>= 3.0.0)
|
||||||
rails3-jquery-autocomplete (1.0.4)
|
rails3-jquery-autocomplete (1.0.6)
|
||||||
rails (~> 3.0)
|
rails (~> 3.0)
|
||||||
railties (3.0.11)
|
railties (3.2.2)
|
||||||
actionpack (= 3.0.11)
|
actionpack (= 3.2.2)
|
||||||
activesupport (= 3.0.11)
|
activesupport (= 3.2.2)
|
||||||
|
rack-ssl (~> 1.3.2)
|
||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
rdoc (~> 3.4)
|
rdoc (~> 3.4)
|
||||||
thor (~> 0.14.4)
|
thor (~> 0.14.6)
|
||||||
raindrops (0.8.0)
|
raindrops (0.8.0)
|
||||||
rake (0.9.2.2)
|
rake (0.9.2.2)
|
||||||
rbx-require-relative (0.0.5)
|
rdiscount (1.6.8)
|
||||||
rdoc (3.11)
|
rdoc (3.12)
|
||||||
json (~> 1.4)
|
json (~> 1.4)
|
||||||
|
redcarpet (1.17.2)
|
||||||
rr (1.0.4)
|
rr (1.0.4)
|
||||||
rspec (2.7.0)
|
rspec (2.8.0)
|
||||||
rspec-core (~> 2.7.0)
|
rspec-core (~> 2.8.0)
|
||||||
rspec-expectations (~> 2.7.0)
|
rspec-expectations (~> 2.8.0)
|
||||||
rspec-mocks (~> 2.7.0)
|
rspec-mocks (~> 2.8.0)
|
||||||
rspec-core (2.7.1)
|
rspec-core (2.8.0)
|
||||||
rspec-expectations (2.7.0)
|
rspec-expectations (2.8.0)
|
||||||
diff-lcs (~> 1.1.2)
|
diff-lcs (~> 1.1.2)
|
||||||
rspec-mocks (2.7.0)
|
rspec-mocks (2.8.0)
|
||||||
rspec-rails (2.7.0)
|
rspec-rails (2.8.1)
|
||||||
actionpack (~> 3.0)
|
actionpack (>= 3.0)
|
||||||
activesupport (~> 3.0)
|
activesupport (>= 3.0)
|
||||||
railties (~> 3.0)
|
railties (>= 3.0)
|
||||||
rspec (~> 2.7.0)
|
rspec (~> 2.8.0)
|
||||||
ruby-debug (0.10.4)
|
|
||||||
columnize (>= 0.1)
|
|
||||||
ruby-debug-base (~> 0.10.4.0)
|
|
||||||
ruby-debug-base (0.10.4)
|
|
||||||
linecache (>= 0.3)
|
|
||||||
ruby-openid (2.1.8)
|
ruby-openid (2.1.8)
|
||||||
ruby_parser (2.3.1)
|
|
||||||
sexp_processor (~> 3.0)
|
|
||||||
russian (0.6.0)
|
russian (0.6.0)
|
||||||
i18n (>= 0.5.0)
|
i18n (>= 0.5.0)
|
||||||
sexp_processor (3.0.8)
|
sanitize (2.0.3)
|
||||||
silent-postgres (0.1.1)
|
nokogiri (>= 1.4.4, < 1.6)
|
||||||
state_machine (0.9.4)
|
sass (3.1.15)
|
||||||
|
sass-rails (3.2.5)
|
||||||
|
railties (~> 3.2.0)
|
||||||
|
sass (>= 3.1.10)
|
||||||
|
tilt (~> 1.3)
|
||||||
|
shotgun (0.9)
|
||||||
|
rack (>= 1.0)
|
||||||
|
shoulda (3.0.1)
|
||||||
|
shoulda-context (~> 1.0.0)
|
||||||
|
shoulda-matchers (~> 1.0.0)
|
||||||
|
shoulda-context (1.0.0)
|
||||||
|
shoulda-matchers (1.0.0)
|
||||||
|
sinatra (1.3.2)
|
||||||
|
rack (~> 1.3, >= 1.3.6)
|
||||||
|
rack-protection (~> 1.2)
|
||||||
|
tilt (~> 1.3, >= 1.3.3)
|
||||||
|
skinny (0.2.0)
|
||||||
|
eventmachine (~> 0.12)
|
||||||
|
thin (~> 1.2)
|
||||||
|
sprockets (2.1.2)
|
||||||
|
hike (~> 1.2)
|
||||||
|
rack (~> 1.0)
|
||||||
|
tilt (~> 1.1, != 1.3.0)
|
||||||
|
sqlite3 (1.3.5)
|
||||||
|
state_machine (1.1.2)
|
||||||
|
therubyracer (0.9.10)
|
||||||
|
libv8 (~> 3.3.10)
|
||||||
|
therubyrhino (1.73.1)
|
||||||
|
thin (1.3.1)
|
||||||
|
daemons (>= 1.0.9)
|
||||||
|
eventmachine (>= 0.12.6)
|
||||||
|
rack (>= 1.0.0)
|
||||||
thor (0.14.6)
|
thor (0.14.6)
|
||||||
|
tilt (1.3.3)
|
||||||
treetop (1.4.10)
|
treetop (1.4.10)
|
||||||
polyglot
|
polyglot
|
||||||
polyglot (>= 0.3.1)
|
polyglot (>= 0.3.1)
|
||||||
tzinfo (0.3.31)
|
trinidad (1.0.5)
|
||||||
unicorn (4.1.1)
|
jruby-rack (>= 1.0.2)
|
||||||
kgio (~> 2.4)
|
trinidad_jars (>= 0.3.0)
|
||||||
|
trinidad_jars (1.0.2)
|
||||||
|
tzinfo (0.3.32)
|
||||||
|
uglifier (1.2.3)
|
||||||
|
execjs (>= 0.3.0)
|
||||||
|
multi_json (>= 1.0.2)
|
||||||
|
unicorn (4.2.0)
|
||||||
|
kgio (~> 2.6)
|
||||||
rack
|
rack
|
||||||
raindrops (~> 0.6)
|
raindrops (~> 0.7)
|
||||||
warden (1.1.0)
|
warden (1.1.1)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
web-app-theme (0.7.0)
|
whenever (0.7.3)
|
||||||
whenever (0.7.0)
|
|
||||||
activesupport (>= 2.3.4)
|
activesupport (>= 2.3.4)
|
||||||
chronic (~> 0.6.3)
|
chronic (~> 0.6.3)
|
||||||
will_paginate (3.0.2)
|
wikicloth (0.7.1)
|
||||||
yui-compressor (0.9.5)
|
builder
|
||||||
|
expression_parser
|
||||||
|
will_paginate (3.0.3)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
|
java
|
||||||
ruby
|
ruby
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
airbrake (~> 3.0.5)
|
RedCloth
|
||||||
ancestry (~> 1.2.4)
|
airbrake (~> 3.0.9)
|
||||||
bluepill
|
ancestry (~> 1.2.5)
|
||||||
|
bluepill (~> 0.0.60)
|
||||||
cancan (~> 1.6.7)
|
cancan (~> 1.6.7)
|
||||||
cape
|
cape
|
||||||
capistrano
|
capistrano
|
||||||
capistrano-ext
|
|
||||||
capistrano_colors
|
capistrano_colors
|
||||||
delayed_job
|
charlock_holmes (~> 0.6.8)
|
||||||
devise (~> 1.5.2)
|
coffee-rails (~> 3.2.2)
|
||||||
factory_girl_rails (~> 1.4.0)
|
compass-rails (~> 1.0.1)
|
||||||
|
creole
|
||||||
|
daemons (= 1.1.6)
|
||||||
|
delayed_job_active_record (~> 0.3.2)
|
||||||
|
devise (~> 2.0.4)
|
||||||
|
factory_girl_rails (~> 1.7.0)
|
||||||
|
gollum (= 1.3.1)
|
||||||
grack!
|
grack!
|
||||||
grit
|
grit!
|
||||||
haml-rails (~> 0.3.4)
|
haml-rails (~> 0.3.4)
|
||||||
highline (~> 1.6.8)
|
highline (~> 1.6.11)
|
||||||
hirb
|
hirb
|
||||||
hpricot
|
jquery-rails (~> 2.0.1)
|
||||||
jammit
|
mailcatcher
|
||||||
meta-tags (~> 1.2.4)
|
meta-tags (~> 1.2.5)
|
||||||
mysql2 (<= 0.2.9)
|
newrelic_rpm (~> 3.3.2)
|
||||||
omniauth (~> 1.0.1)
|
omniauth (~> 1.0.3)
|
||||||
omniauth-openid (~> 1.0.1)
|
omniauth-openid (~> 1.0.1)
|
||||||
paperclip (~> 2.3)
|
paperclip (~> 2.7.0)
|
||||||
pg (~> 0.11.0)
|
pg (~> 0.13.2)
|
||||||
rails (= 3.0.11)
|
rails (= 3.2.2)
|
||||||
rails-xmlrpc (~> 0.3.6)
|
rails-xmlrpc (~> 0.3.6)
|
||||||
rails3-generators
|
rails3-generators
|
||||||
rails3-jquery-autocomplete
|
rails3-jquery-autocomplete (~> 1.0.6)
|
||||||
rr
|
rdiscount
|
||||||
rspec-rails (~> 2.7.0)
|
redcarpet (= 1.17.2)
|
||||||
ruby-debug
|
redhillonrails_core!
|
||||||
ruby_parser
|
rr (~> 1.0.4)
|
||||||
russian
|
rspec-rails (~> 2.8.1)
|
||||||
silent-postgres (~> 0.1.1)
|
russian (~> 0.6.0)
|
||||||
unicorn (~> 4.1.1)
|
sass-rails (~> 3.2.5)
|
||||||
web-app-theme
|
shotgun
|
||||||
whenever
|
shoulda
|
||||||
will_paginate (~> 3.0.2)
|
therubyracer (~> 0.9.10)
|
||||||
yui-compressor (= 0.9.5)
|
therubyrhino (~> 1.73.1)
|
||||||
|
trinidad (~> 1.0.2)
|
||||||
|
uglifier (~> 1.2.1)
|
||||||
|
unicorn (~> 4.2.0)
|
||||||
|
whenever (~> 0.7.3)
|
||||||
|
wikicloth
|
||||||
|
will_paginate (~> 3.0.3)
|
||||||
|
|
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 354 B |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.9 KiB |
|
@ -0,0 +1,52 @@
|
||||||
|
//= require jquery
|
||||||
|
//= require jquery_ujs
|
||||||
|
//= require jquery-ui
|
||||||
|
//= require autocomplete-rails
|
||||||
|
//= require vendor
|
||||||
|
//= require jquery.dataTables_ext
|
||||||
|
//= require_tree ./design
|
||||||
|
//= require_tree ./extra
|
||||||
|
//= require_self
|
||||||
|
|
||||||
|
function disableNotifierCbx(global_cbx) {
|
||||||
|
if ($(global_cbx).attr('checked')) {
|
||||||
|
$('.notify_cbx').removeAttr('disabled');
|
||||||
|
$('.notify_cbx').each(function(i,el) { $(el).prev().removeAttr('disabled'); })
|
||||||
|
} else {
|
||||||
|
$('.notify_cbx').attr('disabled', 'disabled');
|
||||||
|
$('.notify_cbx').each(function(i,el) { $(el).prev().attr('disabled', 'disabled'); })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('input.user_role_chbx').click(function() {
|
||||||
|
var current = $(this);
|
||||||
|
current.parent().find('input.user_role_chbx').each(function(i,el) {
|
||||||
|
if ($(el).attr('id') != current.attr('id')) {
|
||||||
|
$(el).removeAttr('checked');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#settings_notifier_can_notify').click(function() {
|
||||||
|
disableNotifierCbx($(this));
|
||||||
|
});
|
||||||
|
|
||||||
|
$('div.information > div.profile > a').live('click', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.more_activities').live('click', function(){
|
||||||
|
var button = $(this);
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: button.attr("href"),
|
||||||
|
success: function(data){
|
||||||
|
button.fadeOut('slow').after(data);
|
||||||
|
button.remove();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,44 @@
|
||||||
|
$(document).ready(function() {
|
||||||
|
var dropbox = $("#droplist");
|
||||||
|
|
||||||
|
function loadMessages() {
|
||||||
|
$("#messages-new").fadeOut("slow");
|
||||||
|
$("#new-messages").delay(700).fadeIn("slow");
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadOldMessages() {
|
||||||
|
$("#old-messages").fadeIn("slow");
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).click(function() {
|
||||||
|
var dl = dropbox.css("height");
|
||||||
|
var dl2 = dropbox.css("display");
|
||||||
|
if ((dl2 == "block")&&(dl == "91px")) {
|
||||||
|
dropbox.slideUp("slow");
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.data-expander').live('click', function(e) {
|
||||||
|
var $button = $(e.target);
|
||||||
|
var id = "#content-" + $button.attr('id');
|
||||||
|
var $slider = $(id);
|
||||||
|
$slider.slideToggle("slow", function(){
|
||||||
|
$button.toggleClass('expanded collapsed');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function showActivity(elem) {
|
||||||
|
$("#activity-bottom"+elem).slideToggle("slow");
|
||||||
|
var img = document.getElementById("expand" + elem).className;
|
||||||
|
if (img == "expand-gray-down") {
|
||||||
|
document.getElementById("expand" + elem).className = "expand-gray-up";
|
||||||
|
} else {
|
||||||
|
document.getElementById("expand" + elem).className = "expand-gray-down";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$('div.information > div.user').live('click', function() {
|
||||||
|
dropbox.slideToggle("slow");
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,32 @@
|
||||||
|
function changeCheck(el) {
|
||||||
|
var el = el, input = el.find('input[type="checkbox"]');
|
||||||
|
|
||||||
|
if(input.attr("checked")) {
|
||||||
|
el.css('backgroundPosition', '0 0');
|
||||||
|
input.removeAttr('checked');
|
||||||
|
} else {
|
||||||
|
el.css('backgroundPosition', '0 -18px');
|
||||||
|
input.attr('checked', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function startChangeCheck(el) {
|
||||||
|
var el = el, input = el.find('input[type="checkbox"]');
|
||||||
|
|
||||||
|
if(input.attr('checked')) {
|
||||||
|
el.css('backgroundPosition', '0 -18px');
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
$('.niceCheck-main').each(function(i,el) {
|
||||||
|
startChangeCheck($(el));
|
||||||
|
});
|
||||||
|
$('.niceCheck-main').click(function() {
|
||||||
|
changeCheck($(this));
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,37 @@
|
||||||
|
|
||||||
|
|
||||||
|
/*function changeCheck(el)
|
||||||
|
|
||||||
|
{
|
||||||
|
var el = el,
|
||||||
|
input = el.getElementsByTagName("input")[0];
|
||||||
|
|
||||||
|
if(input.checked)
|
||||||
|
{
|
||||||
|
el.style.backgroundPosition="0 0";
|
||||||
|
input.checked=false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
el.style.backgroundPosition="0 -17px";
|
||||||
|
input.checked=true;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
function startChangeCheck(el)
|
||||||
|
|
||||||
|
{
|
||||||
|
var el = el,
|
||||||
|
input = el.getElementsByTagName("input")[0];
|
||||||
|
if(input.checked)
|
||||||
|
{
|
||||||
|
el.style.backgroundPosition="0 -17px";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function startCheck()
|
||||||
|
{
|
||||||
|
|
||||||
|
startChangeCheck(document.getElementById("niceCheckbox1"));
|
||||||
|
}*/
|
|
@ -0,0 +1,11 @@
|
||||||
|
jQuery(document).ready(function(){
|
||||||
|
|
||||||
|
var params = {
|
||||||
|
changedEl: ".lineForm select.cusel",
|
||||||
|
visRows: 999999,
|
||||||
|
scrollArrows: false
|
||||||
|
}
|
||||||
|
|
||||||
|
cuSel(params);
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,16 @@
|
||||||
|
$(document).ready(function() {
|
||||||
|
// $("#myTable").tablesorter({
|
||||||
|
// headers: {
|
||||||
|
// 1: {
|
||||||
|
// sorter: false
|
||||||
|
// },
|
||||||
|
// 3: {
|
||||||
|
// sorter: false
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
});
|
||||||
|
|
||||||
|
function deleteRow(num) {
|
||||||
|
// $("#Row"+num).fadeOut("slow");
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
$(document).ready(function() {
|
||||||
|
// $("#myTable").tablesorter({
|
||||||
|
// headers: {
|
||||||
|
// 2: {
|
||||||
|
// sorter: false
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// });
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
// $("a.files-see").click(function() {
|
||||||
|
// $("#file1").fadeOut(0);
|
||||||
|
// $("#file2").fadeIn("slow");
|
||||||
|
// $("#file-name1").fadeOut(0);
|
||||||
|
// $("#file-name2").fadeIn("slow");
|
||||||
|
// $("#fork-and-edit").fadeIn("slow");
|
||||||
|
// });
|
||||||
|
});
|
|
@ -0,0 +1,97 @@
|
||||||
|
$(document).ready(function(){
|
||||||
|
$(".niceRadio").each(function() {
|
||||||
|
changeRadioStart($(this));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function changeRadio(el) {
|
||||||
|
var el = el, input = el.find("input").eq(0);
|
||||||
|
var nm = input.attr("name");
|
||||||
|
|
||||||
|
$(".niceRadio input").each(
|
||||||
|
|
||||||
|
function() {
|
||||||
|
if($(this).attr("name")==nm) {
|
||||||
|
$(this).parent().removeClass("radioChecked");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if(el.attr("class").indexOf("niceRadioDisabled")==-1) {
|
||||||
|
el.addClass("radioChecked");
|
||||||
|
input.attr("checked", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeVisualRadio(input) {
|
||||||
|
|
||||||
|
var wrapInput = input.parent();
|
||||||
|
var nm=input.attr("name");
|
||||||
|
|
||||||
|
$(".niceRadio input").each(function() {
|
||||||
|
if($(this).attr("name")==nm)
|
||||||
|
{
|
||||||
|
$(this).parent().removeClass("radioChecked");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if(input.attr("checked"))
|
||||||
|
{
|
||||||
|
wrapInput.addClass("radioChecked");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeRadioStart(el) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
var el = el,
|
||||||
|
radioName = el.attr("name"),
|
||||||
|
radioId = el.attr("id"),
|
||||||
|
radioChecked = el.attr("checked"),
|
||||||
|
radioDisabled = el.attr("disabled"),
|
||||||
|
radioTab = el.attr("tabindex"),
|
||||||
|
radioValue = el.attr("value");
|
||||||
|
|
||||||
|
if(radioChecked) {
|
||||||
|
el.after("<span class='niceRadio radioChecked'>"+
|
||||||
|
"<input type='radio'"+
|
||||||
|
"name='"+radioName+"'"+
|
||||||
|
"id='"+radioId+"'"+
|
||||||
|
"checked='"+radioChecked+"'"+
|
||||||
|
"tabindex='"+radioTab+"'"+
|
||||||
|
"value='"+radioValue+"' /></span>");
|
||||||
|
} else {
|
||||||
|
el.after("<span class='niceRadio'>"+
|
||||||
|
"<input type='radio'"+
|
||||||
|
"name='"+radioName+"'"+
|
||||||
|
"id='"+radioId+"'"+
|
||||||
|
"tabindex='"+radioTab+"'"+
|
||||||
|
"value='"+radioValue+"' /></span>");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(radioDisabled) {
|
||||||
|
el.next().addClass("niceRadioDisabled");
|
||||||
|
el.next().find("input").eq(0).attr("disabled","disabled");
|
||||||
|
}
|
||||||
|
|
||||||
|
el.next().bind("mousedown", function(e) {
|
||||||
|
changeRadio($(this));
|
||||||
|
$(this).find("input:radio").change();
|
||||||
|
});
|
||||||
|
if($.browser.msie) {
|
||||||
|
el.next().find("input").eq(0).bind("click", function(e) {
|
||||||
|
changeVisualRadio($(this))
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
el.next().find("input").eq(0).bind("change", function(e) {
|
||||||
|
changeVisualRadio($(this))
|
||||||
|
});
|
||||||
|
}
|
||||||
|
el.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(e) { }
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
/*function deleteAdminMember() {
|
||||||
|
if (document.getElementById("niceCheckbox1-1").checked == true) {
|
||||||
|
$("#admin-table-members-row1").fadeOut("slow");
|
||||||
|
}
|
||||||
|
if (document.getElementById("niceCheckbox2-1").checked == true) {
|
||||||
|
$("#admin-table-members-row2").fadeOut("slow");
|
||||||
|
}
|
||||||
|
if (document.getElementById("niceCheckbox3-1").checked == true) {
|
||||||
|
$("#admin-table-members-row3").fadeOut("slow");
|
||||||
|
}
|
||||||
|
if (document.getElementById("niceCheckbox4-1").checked == true) {
|
||||||
|
$("#admin-table-members-row4").fadeOut("slow");
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
function saveAdminMember() {
|
||||||
|
$('#_method').attr('value', 'post');
|
||||||
|
$('form#members_form').submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteAdminMember() {
|
||||||
|
$('#_method').attr('value', 'delete');
|
||||||
|
var delete_url = $('form#members_form').attr('delete_url');
|
||||||
|
$('form#members_form').attr('action', delete_url);
|
||||||
|
$('form#members_form').submit();
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
(function($) {
|
||||||
|
$.BlobEditor = function() {
|
||||||
|
$.BlobEditor.Placeholder.add($('#gollum-editor-edit-summary input'));
|
||||||
|
$('#gollum-editor form[name="blob-editor"]').submit(function( e ) {
|
||||||
|
e.preventDefault();
|
||||||
|
$.BlobEditor.Placeholder.clearAll();
|
||||||
|
//debug('submitting');
|
||||||
|
$(this).unbind('submit');
|
||||||
|
$(this).submit();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
$.BlobEditor.Placeholder = $.GollumPlaceholder;
|
||||||
|
})(jQuery);
|
|
@ -0,0 +1,48 @@
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#build_list_pl_id').change(function() {
|
||||||
|
var platform_id = $(this).val();
|
||||||
|
var base_platforms = $('.all_platforms input[type=checkbox].build_bpl_ids');
|
||||||
|
|
||||||
|
//$('#include_repos').html($('.preloaded_include_repos .include_repos_' + platform_id).html());
|
||||||
|
|
||||||
|
base_platforms.each(function(){
|
||||||
|
if ($.inArray(platform_id, base_platforms.map(function(){ return $(this).val() }).get()) >= 0) {
|
||||||
|
if ($(this).val() == platform_id) {
|
||||||
|
$(this).attr('checked', 'checked');
|
||||||
|
$(this).removeAttr('disabled');
|
||||||
|
$(this).parent().find('.offset25 input[type="checkbox"]').removeAttr('disabled');
|
||||||
|
if ($(this).parent().find('.offset25 label').text() == 'main') {
|
||||||
|
$(this).parent().find('.offset25 input[type="checkbox"]').attr('checked', 'checked');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$(this).removeAttr('checked');
|
||||||
|
$(this).attr('disabled', 'disabled');
|
||||||
|
$(this).parent().find('.offset25 input[type="checkbox"]').attr('disabled', 'disabled');
|
||||||
|
$(this).parent().find('.offset25 input[type="checkbox"]').removeAttr('checked');
|
||||||
|
}
|
||||||
|
//$('.additional_pl').parent().find('.offset25 input[type="checkbox"]').attr('disabled', 'disabled');
|
||||||
|
} else {
|
||||||
|
$(this).removeAttr('disabled');
|
||||||
|
$(this).removeAttr('checked');
|
||||||
|
$(this).parent().find('.offset25 input[type="checkbox"]').removeAttr('disabled');
|
||||||
|
$(this).parent().find('.offset25 input[type="checkbox"]').removeAttr('checked');
|
||||||
|
//$('.additional_pl').parent().find('.offset25 input[type="checkbox"]').removeAttr('disabled');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$('#build_list_pl_id').trigger('change');
|
||||||
|
|
||||||
|
$('.offset25 label').click(function() {
|
||||||
|
setPlChecked($(this).prev()[0], !$(this).prev().attr('checked'));
|
||||||
|
});
|
||||||
|
$('.offset25 input[type="checkbox"]').click(function() {
|
||||||
|
setPlChecked(this, $(this).attr('checked'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function setPlChecked(pointer, checked) {
|
||||||
|
pl_cbx = $(pointer).parent().parent().parent().find('input[type="checkbox"].build_bpl_ids');
|
||||||
|
if (checked && !$(pointer).attr('disabled')) {
|
||||||
|
pl_cbx.attr('checked', 'checked');
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,295 @@
|
||||||
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
$("#closed-switcher").live('click', function() {
|
||||||
|
if ($("#blue-switch-select").css("margin-left") != "130px") {
|
||||||
|
$("#blue-switch-select").animate({"margin-left": "+=130px"}, "fast");
|
||||||
|
$("#table1").fadeOut(0);
|
||||||
|
$("#table2").fadeIn("slow");
|
||||||
|
$('#issues_status').val('closed');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#blue-switch-select").animate({"margin-left": "-=130px"}, "fast");
|
||||||
|
$("#table2").fadeOut(0);
|
||||||
|
$("#table1").fadeIn("slow");
|
||||||
|
$('#issues_status').val('open');
|
||||||
|
}
|
||||||
|
return send_index_tracker_request('GET');
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#manage-labels").live('click', function () {
|
||||||
|
var toggled = $(this).data('toggled');
|
||||||
|
$(this).data('toggled', !toggled);
|
||||||
|
if (!toggled) {
|
||||||
|
$("#labels-stock").fadeOut(0);
|
||||||
|
$("#labels-edit").fadeIn("slow");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#labels-edit").fadeOut(0);
|
||||||
|
$("#labels-stock").fadeIn("slow");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("div.div-tracker-labels").live('click', function() {
|
||||||
|
var flag = this.id;
|
||||||
|
flag = flag.replace("label-","flag-");
|
||||||
|
var bg = $("#"+flag).css("background-color");
|
||||||
|
var checkbox = $(this).find(':checkbox');
|
||||||
|
if ($(this).css("background-color") != bg) {
|
||||||
|
$(this).css("background-color",bg);
|
||||||
|
$(this).css("color","#FFFFFF");
|
||||||
|
checkbox.attr('checked', 'checked');
|
||||||
|
} else {
|
||||||
|
$(this).css("background-color","rgb(247, 247, 247)");
|
||||||
|
$(this).css("color","#565657");
|
||||||
|
checkbox.removeAttr('checked');
|
||||||
|
}
|
||||||
|
return send_index_tracker_request('GET');
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#filter_issues #myradio1").live('change', function(event) {
|
||||||
|
return send_index_tracker_request('GET');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#search_issue').live('submit', function() {
|
||||||
|
return send_index_tracker_request('GET', $(this).attr("action"), $(this).serialize());
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#add_label').live('click', function() {
|
||||||
|
return send_index_tracker_request('POST', $(this).attr("href"), $('#new_label').serialize());
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.righter #update_label').live('click', function() {
|
||||||
|
return send_index_tracker_request('POST', $(this).attr("href"), $(this).parents('#update_label').serialize());
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.colors .choose').live('click', function() {
|
||||||
|
var parent = $(this).parents('.colors');
|
||||||
|
parent.find('.choose.selected').removeClass('selected');
|
||||||
|
$(this).addClass('selected');
|
||||||
|
parent.siblings('.lefter').find('#label_color').val($(this).attr('value'));
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.custom_color').live('click', function() {
|
||||||
|
$(this).siblings('#label_color').toggle();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('article a.edit_label').live('click', function() {
|
||||||
|
$(this).parents('.label.edit').siblings('.label.edit').find('.edit_label_form').hide();
|
||||||
|
$(this).parents('.label.edit').find('.edit_label_form').toggle();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.delete_label').live('click', function() {
|
||||||
|
return send_index_tracker_request('POST', $(this).attr('href'));
|
||||||
|
});
|
||||||
|
|
||||||
|
function send_index_tracker_request(type_request, url, data) {
|
||||||
|
data = data || '';
|
||||||
|
var filter_form = $('#filter_issues');
|
||||||
|
url = url || filter_form.attr("action");
|
||||||
|
var label_form = $('#filter_labels');
|
||||||
|
var status = 'status=' + $('#issues_status').attr('value');
|
||||||
|
$.ajax({
|
||||||
|
type: type_request,
|
||||||
|
url: url,
|
||||||
|
data: filter_form.serialize() + '&' + label_form.serialize() + '&' + status + '&' + data,
|
||||||
|
success: function(data){
|
||||||
|
$('article').html(data);
|
||||||
|
$(".niceRadio").each(function() { changeRadioStart(jQuery(this)) });
|
||||||
|
},
|
||||||
|
error: function(data){
|
||||||
|
alert('error') // TODO remove
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
$('#search_user').live('submit', function() {
|
||||||
|
var id = $(this).attr('id');
|
||||||
|
if(id.indexOf('user') != -1) { // FIXME
|
||||||
|
var which = 'users';
|
||||||
|
}
|
||||||
|
else if (id.indexOf('labels') != -1) {
|
||||||
|
var which = 'labels';
|
||||||
|
}
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: $(this).attr("action"),
|
||||||
|
data: $(this).serialize(),
|
||||||
|
success: function(data){
|
||||||
|
$('#manage_issue_'+ which +'_list').html(data);
|
||||||
|
},
|
||||||
|
error: function(data){
|
||||||
|
alert('error') // TODO remove
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
function remExecutor(form) {
|
||||||
|
var el = form.find('.people.selected.remove_executor');
|
||||||
|
var id = el.attr('id');
|
||||||
|
$('#manage_issue_users_list .add_executor.people.selected').removeClass('select');
|
||||||
|
el.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.add_executor.people.selected').live('click', function() {
|
||||||
|
var form_new = $('form.issue');
|
||||||
|
var form_edit = $('form.edit_form.issue');
|
||||||
|
form_new.find('#people-span').fadeOut(0);
|
||||||
|
remExecutor(form_new);
|
||||||
|
var clone = $(this).clone().removeClass('add_executor').addClass('remove_executor');
|
||||||
|
form_new.find('#issue_executor').html(clone);
|
||||||
|
$('.current_executor').html(clone.removeClass('select'));
|
||||||
|
$(this).addClass('select');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.remove_executor.people.selected').live('click', function() {
|
||||||
|
var form = $('form.issue, form.edit_form issue');
|
||||||
|
form.find('#people-span').fadeIn(0);
|
||||||
|
remExecutor(form);
|
||||||
|
});
|
||||||
|
|
||||||
|
function remLabel(form, id) {
|
||||||
|
var el = form.find('.label.remove_label'+'#'+id);
|
||||||
|
var label = $('#'+id+'.remove_label.label.selected');
|
||||||
|
label.find('.flag').fadeIn(0);
|
||||||
|
label.find('.labeltext.selected').removeClass('selected').attr('style', '');
|
||||||
|
label.fadeIn('slow');
|
||||||
|
el.fadeOut('slow').remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
$('.add_label.label').live('click', function() {
|
||||||
|
$(this).addClass('selected').removeClass('add_label').addClass('remove_label');
|
||||||
|
$(this).find('.labeltext').addClass('selected');
|
||||||
|
var style = $(this).find('.flag').attr('style');
|
||||||
|
$(this).find('.flag').fadeOut(0);
|
||||||
|
$(this).find('.labeltext.selected').attr('style', style);
|
||||||
|
var form_new = $('form.form.issue');
|
||||||
|
var clone = $(this).clone();
|
||||||
|
form_new.find('#flag-span').fadeOut(0);
|
||||||
|
form_new.find('#issue_labels').append(clone);
|
||||||
|
var labels = $('.manage_labels');
|
||||||
|
labels.append($(this).find('#'+$(this).attr('id')));
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.remove_label.label.selected').live('click', function() {
|
||||||
|
var id = $(this).attr('id');
|
||||||
|
$('.manage_labels, #active_labels').find('#'+id+'.label.selected.remove_label').remove();
|
||||||
|
var form = $('.form.issue');
|
||||||
|
if(form.find('.remove_label.label.selected').length == 1) {
|
||||||
|
form.find('#flag-span').fadeIn(0);
|
||||||
|
}
|
||||||
|
var str = '.label.remove_label'+'#'+id;
|
||||||
|
form.find(str).remove();
|
||||||
|
var label = $(str);
|
||||||
|
label.removeClass('selected').addClass('add_label').removeClass('remove_label');
|
||||||
|
label.find('.labeltext.selected').attr('style', '').removeClass('selected');
|
||||||
|
label.find('.flag').fadeIn(0);
|
||||||
|
$('.manage_labels').find('#'+$(this).attr('id')).remove();
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.issue_status.switch_issue_status').live('click', function () {
|
||||||
|
var button = $(this);
|
||||||
|
var status = (button.hasClass('switcher')) ? 'closed' : 'open';
|
||||||
|
var form = $('#update_issue_status');
|
||||||
|
form.find('#issue_status').attr('value', status);
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: form.attr("action"),
|
||||||
|
data: form.serialize(),
|
||||||
|
success: function(data){
|
||||||
|
if (status == "open") { button.addClass('switcher').removeClass("switcher-off"); }
|
||||||
|
else { button.removeClass('switcher').addClass("switcher-off"); }
|
||||||
|
$('#closed_issue_text').html(data);
|
||||||
|
},
|
||||||
|
error: function(data){
|
||||||
|
alert('error') // TODO remove
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#edit_issue_content').live('click', function() {
|
||||||
|
$('.edit_form.issue').fadeIn('fast');
|
||||||
|
$(this).fadeOut('fast');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#cancel_edit_issue_content').live('click', function() {
|
||||||
|
$('.edit_form.issue').fadeOut('fast');
|
||||||
|
$('#edit_issue_content').fadeIn('fast');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.edit_form.issue').live('submit', function() {
|
||||||
|
var form = $(this);
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: form.attr("action"),
|
||||||
|
data: form.serialize(),
|
||||||
|
success: function(data){
|
||||||
|
form.fadeOut('slow');
|
||||||
|
$('#edit_issue_content').fadeIn('slow');
|
||||||
|
$('h3.issue_title').html(form.find('#issue_title').attr('value'));
|
||||||
|
$('.fulltext.view.issue_body').html(form.find('#issue_body').attr('value'));
|
||||||
|
},
|
||||||
|
error: function(data){
|
||||||
|
alert('error'); // TODO remove
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.button.manage_executor').live('click', function() {
|
||||||
|
$('form#search_user, .button.update_executor').fadeIn(0);
|
||||||
|
$('.current_executor .people').addClass('remove_executor selected').removeClass('nopointer');
|
||||||
|
$(this).fadeOut(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.button.manage_labels').live('click', function() {
|
||||||
|
$('.button.update_labels').fadeIn(0);
|
||||||
|
$('.current_labels .label .labeltext.selected').parent().addClass('remove_label selected').removeClass('nopointer');
|
||||||
|
$('.current_labels .label .labeltext:not(.selected)').parent().addClass('add_label').removeClass('nopointer');
|
||||||
|
$(this).fadeOut(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.button.update_executor').live('click', function() {
|
||||||
|
var form = $('form.edit_executor.issue');
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: form.attr("action"),
|
||||||
|
data: form.serialize(),
|
||||||
|
success: function(data){
|
||||||
|
$('.current_executor .people').removeClass('remove_executor selected').addClass('nopointer');
|
||||||
|
$('form#search_user, .button.update_executor').fadeOut(0);
|
||||||
|
$('.button.manage_executor').fadeIn(0);
|
||||||
|
$('#manage_issue_users_list').html('');
|
||||||
|
},
|
||||||
|
error: function(data){
|
||||||
|
alert('error'); // TODO remove
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.button.update_labels').live('click', function() {
|
||||||
|
var form = $('form.edit_labels.issue');
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: form.attr("action"),
|
||||||
|
data: form.serialize(),
|
||||||
|
success: function(data){
|
||||||
|
$('.current_labels .label').removeClass('remove_label selected').addClass('nopointer');
|
||||||
|
$('.button.update_labels').fadeOut(0);
|
||||||
|
$('.button.manage_labels').fadeIn(0);
|
||||||
|
$('#manage_issue_labels_list').html('');
|
||||||
|
},
|
||||||
|
error: function(data){
|
||||||
|
alert('error'); // TODO remove
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,139 @@
|
||||||
|
(function($, window, document, undefined) {
|
||||||
|
$.extend( $.fn.DataTable.ext.oPagination, {
|
||||||
|
"will_paginate_like": {
|
||||||
|
/*
|
||||||
|
* Function: oPagination.full_numbers.fnInit
|
||||||
|
* Purpose: Initialise dom elements required for pagination with a list of the pages
|
||||||
|
* Returns: -
|
||||||
|
* Inputs: object:oSettings - dataTables settings object
|
||||||
|
* node:nPaging - the DIV which contains this pagination control
|
||||||
|
* function:fnCallbackDraw - draw function which must be called on update
|
||||||
|
*/
|
||||||
|
"fnInit": function ( oSettings, nPaging, fnCallbackDraw ) {
|
||||||
|
var oLang = oSettings.oLanguage.oPaginate;
|
||||||
|
var oClasses = oSettings.oClasses;
|
||||||
|
var fnClickHandler = function ( e ) {
|
||||||
|
if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
|
||||||
|
{
|
||||||
|
fnCallbackDraw( oSettings );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$(nPaging).append(
|
||||||
|
'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPagePrevious+'">'+oLang.sPrevious+'</a>'+
|
||||||
|
'<span></span>'+
|
||||||
|
'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageNext+'">'+oLang.sNext+'</a>'
|
||||||
|
);
|
||||||
|
var els = $('a', nPaging);
|
||||||
|
var nPrev = els[0],
|
||||||
|
nNext = els[1]
|
||||||
|
|
||||||
|
oSettings.oApi._fnBindAction( nPrev, {action: "previous"}, fnClickHandler );
|
||||||
|
oSettings.oApi._fnBindAction( nNext, {action: "next"}, fnClickHandler );
|
||||||
|
|
||||||
|
/* ID the first elements only */
|
||||||
|
if ( !oSettings.aanFeatures.p )
|
||||||
|
{
|
||||||
|
nPaging.id = oSettings.sTableId+'_paginate';
|
||||||
|
nPrev.id =oSettings.sTableId+'_previous';
|
||||||
|
nNext.id =oSettings.sTableId+'_next';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: oPagination.full_numbers.fnUpdate
|
||||||
|
* Purpose: Update the list of page buttons shows
|
||||||
|
* Returns: -
|
||||||
|
* Inputs: object:oSettings - dataTables settings object
|
||||||
|
* function:fnCallbackDraw - draw function to call on page change
|
||||||
|
*/
|
||||||
|
"fnUpdate": function ( oSettings, fnCallbackDraw ) {
|
||||||
|
if ( !oSettings.aanFeatures.p )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var iPageCount = $.fn.DataTable.ext.oPagination.iFullNumbersShowPages;
|
||||||
|
var iPageCountHalf = Math.floor(iPageCount / 2);
|
||||||
|
var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);
|
||||||
|
var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
|
||||||
|
var sList = "";
|
||||||
|
var iStartButton, iEndButton, i, iLen;
|
||||||
|
var oClasses = oSettings.oClasses;
|
||||||
|
var anButtons, anStatic, nPaginateList;
|
||||||
|
var an = oSettings.aanFeatures.p;
|
||||||
|
var fnBind = function (j) {
|
||||||
|
oSettings.oApi._fnBindAction( this, {"page": j+iStartButton-1}, function(e) {
|
||||||
|
/* Use the information in the element to jump to the required page */
|
||||||
|
oSettings.oApi._fnPageChange( oSettings, e.data.page );
|
||||||
|
fnCallbackDraw( oSettings );
|
||||||
|
e.preventDefault();
|
||||||
|
} );
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Pages calculation */
|
||||||
|
if (iPages < iPageCount)
|
||||||
|
{
|
||||||
|
iStartButton = 1;
|
||||||
|
iEndButton = iPages;
|
||||||
|
}
|
||||||
|
else if (iCurrentPage <= iPageCountHalf)
|
||||||
|
{
|
||||||
|
iStartButton = 1;
|
||||||
|
iEndButton = iPageCount;
|
||||||
|
}
|
||||||
|
else if (iCurrentPage >= (iPages - iPageCountHalf))
|
||||||
|
{
|
||||||
|
iStartButton = iPages - iPageCount + 1;
|
||||||
|
iEndButton = iPages;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;
|
||||||
|
iEndButton = iStartButton + iPageCount - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Build the dynamic list */
|
||||||
|
for ( i=iStartButton ; i<=iEndButton ; i++ )
|
||||||
|
{
|
||||||
|
sList += (iCurrentPage !== i) ?
|
||||||
|
'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+'">'+oSettings.fnFormatNumber(i)+'</a>' :
|
||||||
|
'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButtonActive+'">'+oSettings.fnFormatNumber(i)+'</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Loop over each instance of the pager */
|
||||||
|
for ( i=0, iLen=an.length ; i<iLen ; i++ )
|
||||||
|
{
|
||||||
|
if ( an[i].childNodes.length === 0 )
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Build up the dynamic list forst - html and listeners */
|
||||||
|
$('span:eq(0)', an[i])
|
||||||
|
.html( sList )
|
||||||
|
.children('a').each( fnBind );
|
||||||
|
|
||||||
|
/* Update the premanent botton's classes */
|
||||||
|
anButtons = an[i].getElementsByTagName('a');
|
||||||
|
anStatic = [
|
||||||
|
anButtons[0], anButtons[anButtons.length-1]
|
||||||
|
];
|
||||||
|
|
||||||
|
$(anStatic).removeClass( oClasses.sPageButton+" "+oClasses.sPageButtonActive+" "+oClasses.sPageButtonStaticDisabled );
|
||||||
|
$([anStatic[0]]).addClass(
|
||||||
|
(iCurrentPage==1) ?
|
||||||
|
oClasses.sPageButtonStaticDisabled :
|
||||||
|
oClasses.sPageButton
|
||||||
|
);
|
||||||
|
$([anStatic[1]]).addClass(
|
||||||
|
(iPages===0 || iCurrentPage===iPages || oSettings._iDisplayLength===-1) ?
|
||||||
|
oClasses.sPageButtonStaticDisabled :
|
||||||
|
oClasses.sPageButton
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} );
|
||||||
|
}(jQuery, window, document, undefined));
|
|
@ -0,0 +1,35 @@
|
||||||
|
//= require jquery
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
var login_default = $('#login_default').val();
|
||||||
|
var pass_default = $('#password_default').val();
|
||||||
|
|
||||||
|
$('.registartion-input').live('keydown', function() {
|
||||||
|
var id = $(this).attr('id');
|
||||||
|
if(id == 'user_login' || id == 'user_password') { id = 'login_error'}
|
||||||
|
$('.error.'+id).fadeOut('slow');
|
||||||
|
}).live('focus', function() {
|
||||||
|
var id = $(this).attr('id');
|
||||||
|
if(id == 'user_login' && $(this).val() == login_default) { $(this).val('')}
|
||||||
|
else if(id == 'user_password' && $(this).val() == pass_default) { $(this).val('')}
|
||||||
|
$(this).addClass('registartion-input-focus').removeClass('registartion-input-error');
|
||||||
|
}).live('blur', function() {
|
||||||
|
var id = $(this).attr('id');
|
||||||
|
if(id == 'user_login' && $(this).val() == '') { $(this).val(login_default)}
|
||||||
|
else if(id == 'user_password' && $(this).val() == '') { $(this).val(pass_default)}
|
||||||
|
$(this).addClass('registartion-input-no-focus').removeClass('registartion-input-focus');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#niceCheckbox1').click(function() {
|
||||||
|
var el = $(this),
|
||||||
|
input = el.find('input[type="checkbox"]');
|
||||||
|
if(input.attr("checked")) {
|
||||||
|
el.css('backgroundPosition', '0 0');
|
||||||
|
input.removeAttr('checked');
|
||||||
|
} else {
|
||||||
|
el.css('backgroundPosition', '0 -18px');
|
||||||
|
input.attr('checked', true);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
});
|
|
@ -0,0 +1,5 @@
|
||||||
|
@import "vendor";
|
||||||
|
@import "design/main";
|
||||||
|
@import "design/git";
|
||||||
|
@import "design/common";
|
||||||
|
@import "design/custom";
|
|
@ -0,0 +1,27 @@
|
||||||
|
@import 'compass/utilities/tables';
|
||||||
|
table.info {
|
||||||
|
width: 100%;
|
||||||
|
border-spacing: 0;
|
||||||
|
td {padding: 5px;}
|
||||||
|
}
|
||||||
|
table.columns2 {
|
||||||
|
@include inner-table-borders;
|
||||||
|
th.first, td.first {width: 30%;}
|
||||||
|
}
|
||||||
|
table.columns3 {
|
||||||
|
@include alternating-rows-and-columns(#eee, #ccc, #000);
|
||||||
|
th.first, td.first, th.last, td.last {width: 30%;}
|
||||||
|
}
|
||||||
|
|
||||||
|
@import 'blueprint/interaction';
|
||||||
|
.flash {
|
||||||
|
.notice {
|
||||||
|
@include success;
|
||||||
|
}
|
||||||
|
.warning {
|
||||||
|
@include notice;
|
||||||
|
}
|
||||||
|
.error, .alert {
|
||||||
|
@include error;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,623 @@
|
||||||
|
// PUT custom styles here ONLY
|
||||||
|
|
||||||
|
span.error {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a#manage-labels {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
article a.edit_label {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
header div.information div.user {
|
||||||
|
float: left;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
header div.user div.avatar {
|
||||||
|
padding: 6px 10px 10px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
header menu ul li a {
|
||||||
|
padding: 15px 8px 15px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.description-top input.name {
|
||||||
|
width: 350px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.description-top div.name input {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.activity {
|
||||||
|
border: 1px solid #D6D6D6;
|
||||||
|
border-radius: 5px 5px 5px 5px;
|
||||||
|
color: #333333;
|
||||||
|
margin-top: 15px;
|
||||||
|
padding: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.messages div.activity {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.activity .top div.image {
|
||||||
|
//position: absolute; // TODO broken issue page
|
||||||
|
float: left;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
margin-left: 2px;
|
||||||
|
margin-top: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.activity .top .buttons {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.activity .top div.text {
|
||||||
|
float: left;
|
||||||
|
font-size: 12px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.activity .top .imaged {
|
||||||
|
margin-left: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.activity .top div.text .name {
|
||||||
|
font-weight: 700;
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.activity .top div.text .date {
|
||||||
|
font-size: 11px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.activity div.fulltext {
|
||||||
|
font-size: 12px;
|
||||||
|
padding-top: 10px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.activity div.fulltext.alone {
|
||||||
|
padding-top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.activity .fulltext.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.activity .data-expander {
|
||||||
|
margin-left: 10px;
|
||||||
|
display: inline-block;
|
||||||
|
width: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.activity .data-expander.collapsed {
|
||||||
|
background: #FFF image-url('expand-gray.png') no-repeat;
|
||||||
|
background-position: 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.activity .data-expander.expanded {
|
||||||
|
background: #FFF image-url('expand-gray2.png') no-repeat;
|
||||||
|
background-position: 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.activity .fulltext p {
|
||||||
|
margin: 5px;
|
||||||
|
line-height: 1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.blob td.lines pre {
|
||||||
|
background-color: #ECECEC;
|
||||||
|
border-right: 1px solid #DDDDDD;
|
||||||
|
color: #AAAAAA;
|
||||||
|
padding: 10px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea#code {
|
||||||
|
width: 845px;
|
||||||
|
resize: none;
|
||||||
|
height: 30em;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.date-block {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.year {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
article h3 {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.date-block div.date {
|
||||||
|
height: 52px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date_select {
|
||||||
|
select {margin:3px 0px; padding:0px;}
|
||||||
|
}
|
||||||
|
|
||||||
|
article div#repo-wrapper div.hr {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
article table.commit_stats {
|
||||||
|
line-height: 1.4em;
|
||||||
|
margin-top: 12px;
|
||||||
|
width: 100%;
|
||||||
|
border-spacing: 0;
|
||||||
|
border-top: 1px solid #DDDDDD;
|
||||||
|
margin: 10px 0;
|
||||||
|
padding: 0;
|
||||||
|
font-size: 90%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
article table.commit_stats td {
|
||||||
|
border-bottom: 1px solid #DDDDDD;
|
||||||
|
padding: 0.4em 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article table.commit_stats .diffstat {
|
||||||
|
text-align: right;
|
||||||
|
white-space: nowrap;
|
||||||
|
padding-right: 0;
|
||||||
|
width: 1%;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.file div.diff_data {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.file table {
|
||||||
|
border-spacing: 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper table.diff td.line_numbers {
|
||||||
|
-moz-user-select: none;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 0 0.5em;
|
||||||
|
background-color: #ECECEC;
|
||||||
|
border-right: 1px solid #DDDDDD;
|
||||||
|
color: #999999;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper table.diff td.line_numbers,
|
||||||
|
#repo-wrapper table.diff td.header,
|
||||||
|
#repo-wrapper table.diff td.code {
|
||||||
|
font-family: 'Bitstream Vera Sans Mono','Courier',monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper table.diff td.header {
|
||||||
|
background-color: #ECECEC;
|
||||||
|
color: #999999;
|
||||||
|
width: 100%;
|
||||||
|
line-height: 1.4em;
|
||||||
|
font-size: 90%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper table.diff td.code, #repo-wrapper table.diff td.header {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper table.diff pre {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper table.diff .diff-content {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper table.diff tr td.code.del {
|
||||||
|
background-color: #FFDDDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper table.diff tr td.code.del .idiff {
|
||||||
|
background-color: #F2ACAD;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper table.diff tr td.code.ins {
|
||||||
|
background-color: #DDFFDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper table.diff tr td.code.ins .idiff {
|
||||||
|
background-color: #BAFBAD;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper div.comment {
|
||||||
|
background: none repeat scroll 0 0 #DCECFA;
|
||||||
|
border: 1px solid #B3CCE0;
|
||||||
|
border-radius: 4px 4px 4px 4px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin-top: 15px;
|
||||||
|
padding: 6px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper div.view {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper div.comment div.wrapper {
|
||||||
|
border: 1px solid #DEDEDE;
|
||||||
|
border-radius: 4px 4px 4px 4px;
|
||||||
|
color: #575756;
|
||||||
|
background: #FFFFFF;
|
||||||
|
font-size: 12px;
|
||||||
|
height: 110px;
|
||||||
|
margin: 10px 0;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#repo-wrapper div.comment div.wrapper textarea {
|
||||||
|
border: none;
|
||||||
|
color: #575756;
|
||||||
|
font-family: Tahoma,Geneva,Helvetica,sans-serif;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
resize: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.comment div.comment-left {
|
||||||
|
float: left;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.comment div.comment-right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.comment textarea { resize: none }
|
||||||
|
|
||||||
|
#repo-wrapper div.file div.data .formatted {
|
||||||
|
overflow-x: auto;
|
||||||
|
overflow-y: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter tbody td a .issue_title {
|
||||||
|
color: #58595B;
|
||||||
|
}
|
||||||
|
|
||||||
|
.syntaxhighlighter {
|
||||||
|
padding: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#output.formatted {
|
||||||
|
width: auto;
|
||||||
|
font-family: "Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace;
|
||||||
|
color: #000000;
|
||||||
|
padding: 10px 5px 0px;
|
||||||
|
margin-left: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#output.formatted pre {
|
||||||
|
font-family: "Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.gutter {
|
||||||
|
border-right: 1px solid #CCCCCC !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter tr td.centered {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO change this */
|
||||||
|
header div.user div.avatar img {
|
||||||
|
border: 1px solid #DDDDDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.blame_data {
|
||||||
|
font-size: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.blame_data tr.firstrow {
|
||||||
|
border-top: 1px solid #DDDDDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.blame_data tr td.commit_info {
|
||||||
|
padding: 0.5em !important;
|
||||||
|
vertical-align: top;
|
||||||
|
width: 210px;
|
||||||
|
border-right: 1px solid #DDDDDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.blame_data tr td.commit_info .date {
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
color: #666666;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.blame_data tr td.commit_info .message {
|
||||||
|
width: 210px;
|
||||||
|
display: block;
|
||||||
|
float: right;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.blame_data tr td.lines {
|
||||||
|
padding: 0 0.5em !important;
|
||||||
|
width: 1%;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.4em;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.blame_data tr td.code {
|
||||||
|
padding: 0 10px !important;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.blame_data tr td.code pre {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search
|
||||||
|
p.block { margin-bottom: 10px; clear: both; }
|
||||||
|
table.tablesorter.bmargin5 {
|
||||||
|
th { padding: 5px; }
|
||||||
|
td p.block {margin-bottom: 0px;}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div#gollum-searchbar-fauxtext {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#gollum-searchbar-fauxtext input#search-query {
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
width: 145px;
|
||||||
|
border: 1px solid #D3D3D3;
|
||||||
|
border-bottom-left-radius: 3px;
|
||||||
|
border-top-left-radius: 3px;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
font-size: 12px;
|
||||||
|
height: 24px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0 4px;
|
||||||
|
vertical-align: middle;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
a#search-submit {
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
border-left: medium none;
|
||||||
|
border-radius: 0 3px 3px 0;
|
||||||
|
height: 24px;
|
||||||
|
margin-left: 0;
|
||||||
|
padding: 0;
|
||||||
|
position: relative;
|
||||||
|
vertical-align: middle;
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
a#search-submit span {
|
||||||
|
background: image-url("gollum/icon-sprite.png") no-repeat scroll 50% 4px transparent;
|
||||||
|
background-position: -430px -2px;
|
||||||
|
height: 24px;
|
||||||
|
text-indent: -9999px;
|
||||||
|
width: 16px;
|
||||||
|
display: block;
|
||||||
|
height: 21px;
|
||||||
|
line-height: 21px;
|
||||||
|
padding: 0 9px 0 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a#search-submit:hover span {
|
||||||
|
background-position: -430px -29px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.wiki .history .td2 .name span.username {
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
width: 164px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter.platforms .th1 {
|
||||||
|
width: 290px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter.platforms .th2 {
|
||||||
|
width: 280px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter tr td.buttons {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter tr td.buttons a span.delete {
|
||||||
|
background: image-url('x.png') no-repeat 0 0 transparent;
|
||||||
|
width: 12px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#fork-and-edit {display:block;}
|
||||||
|
|
||||||
|
.notify.blue div.success {
|
||||||
|
border: 1px solid #bad099;
|
||||||
|
background: #d7e599;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.notify.blue div.error {
|
||||||
|
float: left;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
background-color: #FBE3E4;
|
||||||
|
border-color: #FBC2C4;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.notify.blue div.nocolor {
|
||||||
|
float: left;
|
||||||
|
border: 1px solid #a9c6dd;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.notify.blue div.red {
|
||||||
|
float: left;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
background-color: #FBE3E4;
|
||||||
|
border-color: #FBC2C4;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button.left_floated {
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.buttons_block {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter.unbordered {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter.unbordered tr td {
|
||||||
|
border: none;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter.repo-projects th.th1 {
|
||||||
|
width: 250px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter.repo-projects th.th3,
|
||||||
|
table.tablesorter th.buttons {
|
||||||
|
width: 60px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.tablesorter.repo-projects td.td2,
|
||||||
|
.table-sort-right {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_filter {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_paginate {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_info {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_info,
|
||||||
|
div.dataTables_paginate.paging_will_paginate_like {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_paginate.paging_will_paginate_like a.paginate_button,
|
||||||
|
div.dataTables_paginate.paging_will_paginate_like a.paginate_active {
|
||||||
|
background: none repeat scroll 0 0 #EDEDED;
|
||||||
|
color: #4C90D0 !important;
|
||||||
|
border: 1px solid #DDDDDD;
|
||||||
|
border-radius: 1px 1px 1px 1px;
|
||||||
|
padding: 3px 7px;
|
||||||
|
margin-right: 3px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_paginate.paging_will_paginate_like a.paginate_button_disabled,
|
||||||
|
div.dataTables_paginate.paging_will_paginate_like a.paginate_active {
|
||||||
|
color: #565657 !important;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_paginate.paging_will_paginate_like a.paginate_button_disabled:hover,
|
||||||
|
div.dataTables_paginate.paging_will_paginate_like a.paginate_active:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_paginate.paging_will_paginate_like a.previous {
|
||||||
|
margin-left: 0px;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_paginate.paging_will_paginate_like a.next {
|
||||||
|
margin-left: 1px;
|
||||||
|
margin-right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_paginate.paging_will_paginate_like a.paginate_active {
|
||||||
|
background: none repeat scroll 0 0 #D5E7F9;
|
||||||
|
border: 1px solid #C1DAED;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.dataTables_processing {
|
||||||
|
z-index: 999;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.rightlist textarea {
|
||||||
|
resize: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#crontab_generator .leftlist,
|
||||||
|
div#crontab_generator .rightlist {
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
div#crontab_generator .leftlist select,
|
||||||
|
div#crontab_generator .rightlist select {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable tr.odd td.sorting_1 {
|
||||||
|
background-color: #F0F0F6;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.dataTable tr.even td.sorting_1 {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.right.bigpadding div.command_select div.rightlist {
|
||||||
|
width: 245px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.right.bigpadding div.command_select div.rightlist select {
|
||||||
|
width: 240px;
|
||||||
|
height: 23px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.right.bigpadding div.command_select div.rightlist textarea {
|
||||||
|
width: 430px;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.rightlist textarea.resizable {
|
||||||
|
resize: both;
|
||||||
|
}
|
|
@ -37,7 +37,7 @@ li.commit .message {
|
||||||
|
|
||||||
li.commit .trees {
|
li.commit .trees {
|
||||||
padding-left: 5px;
|
padding-left: 5px;
|
||||||
width: 180px;
|
width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
li.commit .message a {
|
li.commit .message a {
|
||||||
|
@ -111,6 +111,7 @@ table.blob td.blob pre {
|
||||||
background-color: #EAEAEA;
|
background-color: #EAEAEA;
|
||||||
border-bottom: 1px solid #DDDDDD;
|
border-bottom: 1px solid #DDDDDD;
|
||||||
font-family: Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
|
font-family: Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;
|
||||||
|
font-size: 1.2em;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
@ -143,6 +144,7 @@ table.commit_stats tr {
|
||||||
|
|
||||||
table.diff {
|
table.diff {
|
||||||
line-height: 1.4em;
|
line-height: 1.4em;
|
||||||
|
font-size: 1.2em;
|
||||||
font-family: 'Bitstream Vera Sans Mono','Courier',monospace;
|
font-family: 'Bitstream Vera Sans Mono','Courier',monospace;
|
||||||
border-top: 1px solid #EAEAEA;
|
border-top: 1px solid #EAEAEA;
|
||||||
border-bottom: 1px solid #EAEAEA;
|
border-bottom: 1px solid #EAEAEA;
|
||||||
|
@ -153,8 +155,7 @@ table.diff tr td.line_numbers {
|
||||||
background-color: #ECECEC;
|
background-color: #ECECEC;
|
||||||
border-right: 1px solid #DDDDDD;
|
border-right: 1px solid #DDDDDD;
|
||||||
color: #AAAAAA;
|
color: #AAAAAA;
|
||||||
padding-left: 10px;
|
padding: 0 0.5em;
|
||||||
padding-right: 10px;
|
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,4 +278,4 @@ table.blame td.message .message {
|
||||||
#git_submenu div a:hover {
|
#git_submenu div a:hover {
|
||||||
background: #ECECEC;
|
background: #ECECEC;
|
||||||
color: #000;
|
color: #000;
|
||||||
}
|
}
|
|
@ -0,0 +1,326 @@
|
||||||
|
html, body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-family: Tahoma, Geneva, Helvetica, sans-serif;
|
||||||
|
color: #565667;
|
||||||
|
background: #1f60a1 image-url("bg.png") repeat-x;
|
||||||
|
min-width: 940px;
|
||||||
|
min-height: 300px;
|
||||||
|
text-align: center;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
header, section, footer, aside, nav, article, menu {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="text"]:focus { outline: none; }
|
||||||
|
|
||||||
|
input[type="password"]:focus { outline: none; }
|
||||||
|
|
||||||
|
input:focus { outline: none; }
|
||||||
|
|
||||||
|
select:focus { outline: none; }
|
||||||
|
|
||||||
|
a img { border: none; }
|
||||||
|
|
||||||
|
.wrap {
|
||||||
|
width: 940px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
min-height: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.both {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Header */
|
||||||
|
|
||||||
|
header div.logo {
|
||||||
|
background: image-url("logo.png") no-repeat 50% 100%;
|
||||||
|
height: 89px;
|
||||||
|
width: 233px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 12%;
|
||||||
|
}
|
||||||
|
|
||||||
|
header div.text {
|
||||||
|
color: #FFF;
|
||||||
|
font-size: 28px;
|
||||||
|
width: 800px;
|
||||||
|
text-align: left;
|
||||||
|
margin-left: 90px;
|
||||||
|
margin-top: 50px;
|
||||||
|
font-family: Arial;
|
||||||
|
text-shadow: 0px 1px 1px #000000;
|
||||||
|
filter: dropshadow(color=#000000, offx=0, offy=1);
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.niceCheck {
|
||||||
|
width: 17px;
|
||||||
|
height: 17px;
|
||||||
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
|
background: image-url("checkbox.png");
|
||||||
|
}
|
||||||
|
.niceCheck input {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Content */
|
||||||
|
|
||||||
|
article {
|
||||||
|
width: 257px;
|
||||||
|
height: 227px;
|
||||||
|
background: #1c394c image-url("bg-signup.png") repeat-x;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 1px solid #38658c;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 75px;
|
||||||
|
-webkit-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5);
|
||||||
|
-moz-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5);
|
||||||
|
box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button, input.button {
|
||||||
|
background: #125687;
|
||||||
|
background: image-url("button-green-normal.png");
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #FFF;
|
||||||
|
font-family: Tahoma;
|
||||||
|
font-size: 12px;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
font-weight: normal;
|
||||||
|
padding: 5px 25px;
|
||||||
|
text-align: center;
|
||||||
|
border: none;
|
||||||
|
height: 25px;
|
||||||
|
width: 106px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.button {
|
||||||
|
padding: 3px 27px 8px 27px;
|
||||||
|
height: 25px;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button:hover, input.button:hover {
|
||||||
|
background: #1874b6;
|
||||||
|
background: image-url("button-green-hover.png");
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button:active, input.button:active{
|
||||||
|
background: image-url("button-green-press.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button:disabled, a.button.disabled, input.button:disabled, input.button.disabled {
|
||||||
|
background: #125687;
|
||||||
|
background: image-url("button-green-disabled.png");
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
article h1 {
|
||||||
|
color: #FFF;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: normal;
|
||||||
|
font-family: Tahoma;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.registartion-input, .registartion-input-focus, .registartion-input-error, .registartion-input-no-focus {
|
||||||
|
height: 24px;
|
||||||
|
width: 217px;
|
||||||
|
border: 1px solid #8199a9;
|
||||||
|
border-radius: 2px;
|
||||||
|
color: #cfcfcf;
|
||||||
|
font-family: Tahoma;
|
||||||
|
font-size: 12px;
|
||||||
|
padding-left: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.registartion-input-focus, .registartion-input-focus-signup {
|
||||||
|
color: #575756;
|
||||||
|
-webkit-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75);
|
||||||
|
-moz-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75);
|
||||||
|
box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
.registartion-input-no-focus, .registartion-input-no-focus-signup {
|
||||||
|
color: #575756;
|
||||||
|
}
|
||||||
|
|
||||||
|
.registartion-input-error, .registartion-input-error-signup {
|
||||||
|
border: 1px solid #bd4d40;
|
||||||
|
outline:1px solid #bd4d40;
|
||||||
|
outline-offset:-2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.registration div.remember{
|
||||||
|
color: #FFF;
|
||||||
|
font-size: 12px;
|
||||||
|
float: left;
|
||||||
|
padding-left: 15px;
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.registration div.remember div.check {
|
||||||
|
float: left;
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.registration div.remember div.text {
|
||||||
|
float: left;
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.registration div.in {
|
||||||
|
float: right;
|
||||||
|
padding-right: 15px;
|
||||||
|
padding-top: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.hr {
|
||||||
|
margin-top: 10px;
|
||||||
|
height: 1px;
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid #264862;
|
||||||
|
border-top: 1px solid #264862;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.other div.left{
|
||||||
|
float: left;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
margin-top: 6px;
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.other div.right {
|
||||||
|
float: right;
|
||||||
|
margin-right: 15px;
|
||||||
|
margin-top: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.forgot {
|
||||||
|
width: 257px;
|
||||||
|
text-align: center;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
div.password {
|
||||||
|
float: right;
|
||||||
|
padding-top: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.password p {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.password a {
|
||||||
|
color: #FFF;
|
||||||
|
font-size: 12px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.password a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
width: 96px;
|
||||||
|
height: 47px;
|
||||||
|
background: image-url("registration.png") no-repeat;
|
||||||
|
float: right;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav p {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #FFF;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.error {
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
font-size: 12px;
|
||||||
|
position: absolute;
|
||||||
|
margin-top: -159px;
|
||||||
|
margin-left: 582px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.error div.img {
|
||||||
|
background: image-url("error-arrow.png") 0% 5px no-repeat;
|
||||||
|
width: 19px;
|
||||||
|
height: 35px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.error div.msg {
|
||||||
|
background: #ededed;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
float: left;
|
||||||
|
-webkit-box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||||
|
-moz-box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||||
|
padding: 5px 20px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
div.error p{
|
||||||
|
margin:0;
|
||||||
|
padding: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
|
||||||
|
footer {
|
||||||
|
height: 32px;
|
||||||
|
padding-left: 15px;
|
||||||
|
width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #FFF;
|
||||||
|
padding-top: 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer ul li {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer ul li a {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #FFF;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer ul li a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
|
@ -0,0 +1,285 @@
|
||||||
|
html, body {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-family: Tahoma, Geneva, Helvetica, sans-serif;
|
||||||
|
color: #565667;
|
||||||
|
background: #1f60a1 image-url("bg.png") repeat-x;
|
||||||
|
min-width: 940px;
|
||||||
|
min-height: 300px;
|
||||||
|
text-align: center;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
header, section, footer, aside, nav, article, menu {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="text"]:focus { outline: none; }
|
||||||
|
|
||||||
|
input[type="password"]:focus { outline: none; }
|
||||||
|
|
||||||
|
input:focus { outline: none; }
|
||||||
|
|
||||||
|
select:focus { outline: none; }
|
||||||
|
|
||||||
|
a img { border: none; }
|
||||||
|
|
||||||
|
.wrap {
|
||||||
|
width: 940px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
min-height: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.both {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Header */
|
||||||
|
|
||||||
|
header div.logo {
|
||||||
|
background: image-url("logo.png") no-repeat 50% 100%;
|
||||||
|
height: 89px;
|
||||||
|
width: 233px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 12%;
|
||||||
|
}
|
||||||
|
|
||||||
|
header div.text {
|
||||||
|
color: #FFF;
|
||||||
|
font-size: 28px;
|
||||||
|
width: 800px;
|
||||||
|
text-align: left;
|
||||||
|
margin-left: 90px;
|
||||||
|
margin-top: 50px;
|
||||||
|
font-family: Arial;
|
||||||
|
text-shadow: 0px 1px 1px #000000;
|
||||||
|
filter: dropshadow(color=#000000, offx=0, offy=1);
|
||||||
|
padding-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.niceCheck {
|
||||||
|
width: 17px;
|
||||||
|
height: 17px;
|
||||||
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
|
background: image-url("checkbox.png");
|
||||||
|
}
|
||||||
|
.niceCheck input {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Content */
|
||||||
|
|
||||||
|
article {
|
||||||
|
width: 380px;
|
||||||
|
height: 254px;
|
||||||
|
background: #1c394c image-url("bg-signup.png") repeat-x;
|
||||||
|
border-radius: 5px;
|
||||||
|
border: 1px solid #38658c;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 75px;
|
||||||
|
-webkit-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5);
|
||||||
|
-moz-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5);
|
||||||
|
box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button, input.button {
|
||||||
|
background: #125687;
|
||||||
|
background: image-url("button-green-normal.png");
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #FFF;
|
||||||
|
font-family: Tahoma;
|
||||||
|
font-size: 12px;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
font-weight: normal;
|
||||||
|
padding: 5px 25px;
|
||||||
|
text-align: center;
|
||||||
|
border: none;
|
||||||
|
height: 25px;
|
||||||
|
width: 106px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.left {
|
||||||
|
float: left;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #FFF;
|
||||||
|
margin-left: 15px;
|
||||||
|
margin-top: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
article div.right {
|
||||||
|
float: right;
|
||||||
|
margin-right: 15px;
|
||||||
|
padding-bottom: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.first {
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.button {
|
||||||
|
padding: 3px 27px 8px 27px;
|
||||||
|
height: 25px;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button:hover, input.button:hover {
|
||||||
|
background: #1874b6;
|
||||||
|
background: image-url("button-green-hover.png");
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button:active, input.button:active{
|
||||||
|
background: image-url("button-green-press.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
a.button:disabled, a.button.disabled, input.button:disabled, input.button.disabled{
|
||||||
|
background: #125687;
|
||||||
|
background: image-url("button-green-disabled.png");
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
article h1 {
|
||||||
|
color: #FFF;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: normal;
|
||||||
|
font-family: Tahoma;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.registartion-input, .registartion-input-focus, .registartion-input-error, .registartion-input-no-focus {
|
||||||
|
height: 24px;
|
||||||
|
width: 217px;
|
||||||
|
border: 1px solid #8199a9;
|
||||||
|
border-radius: 2px;
|
||||||
|
color: #cfcfcf;
|
||||||
|
font-family: Tahoma;
|
||||||
|
font-size: 12px;
|
||||||
|
padding-left: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.registartion-input-focus, .registartion-input-focus-signup {
|
||||||
|
color: #575756;
|
||||||
|
-webkit-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75);
|
||||||
|
-moz-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75);
|
||||||
|
box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
.registartion-input-no-focus, .registartion-input-no-focus-signup {
|
||||||
|
color: #575756;
|
||||||
|
}
|
||||||
|
|
||||||
|
.registartion-input-error, .registartion-input-error-signup {
|
||||||
|
border: 1px solid #bd4d40;
|
||||||
|
outline:1px solid #bd4d40;
|
||||||
|
outline-offset:-2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
div.in {
|
||||||
|
float: right;
|
||||||
|
margin-right: 15px;
|
||||||
|
margin-top: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
|
||||||
|
footer {
|
||||||
|
height: 32px;
|
||||||
|
padding-left: 15px;
|
||||||
|
width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #FFF;
|
||||||
|
padding-top: 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer ul li {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer ul li a {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #FFF;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer ul li a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.error {
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
font-size: 12px;
|
||||||
|
position: absolute;
|
||||||
|
margin-top: -159px;
|
||||||
|
margin-left: 582px;
|
||||||
|
display: none;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.error div.img {
|
||||||
|
background: image-url("error-arrow.png") 0% 5px no-repeat;
|
||||||
|
width: 19px;
|
||||||
|
height: 35px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.error div.msg {
|
||||||
|
background: #ededed;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
float: left;
|
||||||
|
-webkit-box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||||
|
-moz-box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0px 6px 3px -3px rgba(0, 0, 0, 0.2);
|
||||||
|
padding: 5px 20px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
div.error p{
|
||||||
|
margin:0;
|
||||||
|
padding: 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.error.login {
|
||||||
|
margin-top: -242px;
|
||||||
|
margin-left: 650px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.error.name {
|
||||||
|
margin-top: -202px;
|
||||||
|
margin-left: 650px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.error.email {
|
||||||
|
margin-top: -161px;
|
||||||
|
margin-left: 650px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.error.password {
|
||||||
|
margin-top: -101px;
|
||||||
|
margin-left: 650px;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
@import 'devise/login';
|
||||||
|
|
||||||
|
nav a { text-decoration: none;}
|
|
@ -0,0 +1,23 @@
|
||||||
|
@import "devise/registration";
|
||||||
|
|
||||||
|
nav {
|
||||||
|
width: 96px;
|
||||||
|
height: 47px;
|
||||||
|
background: image-url("registration.png") no-repeat;
|
||||||
|
float: right;
|
||||||
|
cursor: pointer;
|
||||||
|
a {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #FFF;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
padding-top: 10px;
|
||||||
|
text-decoration: none;} }
|
||||||
|
|
||||||
|
div.error.forgot {
|
||||||
|
margin-top: 8px;
|
||||||
|
margin-left: 308px; }
|
||||||
|
|
||||||
|
div.error.reset {
|
||||||
|
margin-top: -141px;
|
||||||
|
margin-left: 645px; }
|
|
@ -2,6 +2,14 @@ class ActivityFeedsController < ApplicationController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
|
|
||||||
def index
|
def index
|
||||||
|
@filter = t('feed_menu').has_key?(params[:filter].try(:to_sym)) ? params[:filter].to_sym : :all
|
||||||
@activity_feeds = current_user.activity_feeds
|
@activity_feeds = current_user.activity_feeds
|
||||||
|
@activity_feeds = @activity_feeds.where(:kind => "ActivityFeed::#{@filter.upcase}".constantize) unless @filter == :all
|
||||||
|
@activity_feeds = @activity_feeds.paginate :page => params[:page]
|
||||||
|
if request.format == '*/*'
|
||||||
|
render '_list', :layout => false
|
||||||
|
else
|
||||||
|
render 'index'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# coding: UTF-8
|
# -*- encoding : utf-8 -*-
|
||||||
class ApplicationController < ActionController::Base
|
class ApplicationController < ActionController::Base
|
||||||
protect_from_forgery
|
protect_from_forgery
|
||||||
|
|
||||||
|
@ -10,11 +10,11 @@ class ApplicationController < ActionController::Base
|
||||||
after_filter lambda { EventLog.current_controller = nil }
|
after_filter lambda { EventLog.current_controller = nil }
|
||||||
|
|
||||||
helper_method :get_owner
|
helper_method :get_owner
|
||||||
|
|
||||||
rescue_from CanCan::AccessDenied do |exception|
|
rescue_from CanCan::AccessDenied do |exception|
|
||||||
redirect_to forbidden_url, :alert => t('flash.exception_message')#:alert => exception.message
|
redirect_to forbidden_url, :alert => t('flash.exception_message')#:alert => exception.message
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def set_locale
|
def set_locale
|
||||||
|
@ -45,7 +45,7 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def layout_by_resource
|
def layout_by_resource
|
||||||
if devise_controller?
|
if devise_controller? && !(params[:controller] == 'devise/registrations' && ['edit', 'update'].include?(params[:action]))
|
||||||
"sessions"
|
"sessions"
|
||||||
else
|
else
|
||||||
"application"
|
"application"
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class AutoBuildListsController < ApplicationController
|
class AutoBuildListsController < ApplicationController
|
||||||
before_filter :authenticate_user!, :except => :auto_build
|
before_filter :authenticate_user!, :except => :auto_build
|
||||||
before_filter :find_auto_build_list, :only => :destroy
|
before_filter :find_auto_build_list, :only => :destroy
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class BuildListsController < ApplicationController
|
class BuildListsController < ApplicationController
|
||||||
CALLBACK_ACTIONS = [:publish_build, :status_build, :pre_build, :post_build, :circle_build, :new_bbdt]
|
CALLBACK_ACTIONS = [:publish_build, :status_build, :pre_build, :post_build, :circle_build, :new_bbdt]
|
||||||
NESTED_ACTIONS = [:index, :new, :create]
|
NESTED_ACTIONS = [:search, :index, :new, :create]
|
||||||
|
|
||||||
before_filter :authenticate_user!, :except => CALLBACK_ACTIONS
|
before_filter :authenticate_user!, :except => CALLBACK_ACTIONS
|
||||||
before_filter :authenticate_build_service!, :only => CALLBACK_ACTIONS
|
before_filter :authenticate_build_service!, :only => CALLBACK_ACTIONS
|
||||||
|
@ -12,16 +13,18 @@ class BuildListsController < ApplicationController
|
||||||
load_and_authorize_resource :build_list, :through => :project, :only => NESTED_ACTIONS, :shallow => true
|
load_and_authorize_resource :build_list, :through => :project, :only => NESTED_ACTIONS, :shallow => true
|
||||||
load_and_authorize_resource :except => CALLBACK_ACTIONS.concat(NESTED_ACTIONS)
|
load_and_authorize_resource :except => CALLBACK_ACTIONS.concat(NESTED_ACTIONS)
|
||||||
|
|
||||||
def index
|
def search
|
||||||
filter_params = params[:filter] || {}
|
new_params = {:filter => {}}
|
||||||
if @project
|
params[:filter].each do |k,v|
|
||||||
@action_url = project_build_lists_path(@project)
|
new_params[:filter][k] = v unless v.empty?
|
||||||
else
|
|
||||||
@action_url = build_lists_path
|
|
||||||
end
|
end
|
||||||
|
redirect_to @project ? project_build_lists_path(@project, new_params) : build_lists_path(new_params)
|
||||||
|
end
|
||||||
|
|
||||||
@filter = BuildList::Filter.new(@project, filter_params)
|
def index
|
||||||
@build_lists = @filter.find.accessible_by(current_ability).recent.paginate :page => params[:page]
|
@action_url = @project ? search_project_build_lists_path(@project) : search_build_lists_path
|
||||||
|
@filter = BuildList::Filter.new(@project, current_user, params[:filter] || {})
|
||||||
|
@build_lists = @filter.find.recent.paginate :page => params[:page]
|
||||||
|
|
||||||
@build_server_status = begin
|
@build_server_status = begin
|
||||||
BuildServer.get_status
|
BuildServer.get_status
|
||||||
|
@ -39,8 +42,9 @@ class BuildListsController < ApplicationController
|
||||||
Arch.where(:id => params[:arches]).each do |arch|
|
Arch.where(:id => params[:arches]).each do |arch|
|
||||||
Platform.main.where(:id => params[:bpls]).each do |bpl|
|
Platform.main.where(:id => params[:bpls]).each do |bpl|
|
||||||
@build_list = @project.build_lists.build(params[:build_list])
|
@build_list = @project.build_lists.build(params[:build_list])
|
||||||
@build_list.commit_hash = @project.git_repository.commits(@build_list.project_version.match(/(.+)_latest$/).to_a.last || @build_list.project_version).first.id
|
@build_list.commit_hash = @project.git_repository.commits(@build_list.project_version.match(/^latest_(.+)/).to_a.last || @build_list.project_version).first.id if @build_list.project_version
|
||||||
@build_list.bpl = bpl; @build_list.arch = arch; @build_list.user = current_user
|
@build_list.bpl = bpl; @build_list.arch = arch; @build_list.user = current_user
|
||||||
|
@build_list.include_repos = @build_list.include_repos.select { |ir| @build_list.bpl.repository_ids.include? ir.to_i }
|
||||||
flash_options = {:project_version => @build_list.project_version, :arch => arch.name, :bpl => bpl.name, :pl => @build_list.pl}
|
flash_options = {:project_version => @build_list.project_version, :arch => arch.name, :bpl => bpl.name, :pl => @build_list.pl}
|
||||||
if @build_list.save
|
if @build_list.save
|
||||||
notices << t("flash.build_list.saved", flash_options)
|
notices << t("flash.build_list.saved", flash_options)
|
||||||
|
@ -120,9 +124,9 @@ class BuildListsController < ApplicationController
|
||||||
@build_list.notified_at = Time.current
|
@build_list.notified_at = Time.current
|
||||||
@build_list.save
|
@build_list.save
|
||||||
|
|
||||||
@build_list.delay.publish if @build_list.auto_publish # && @build_list.can_publish?
|
|
||||||
|
|
||||||
render :nothing => true, :status => 200
|
render :nothing => true, :status => 200
|
||||||
|
|
||||||
|
@build_list.delay.publish if @build_list.auto_publish # && @build_list.can_publish?
|
||||||
end
|
end
|
||||||
|
|
||||||
def circle_build
|
def circle_build
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class CategoriesController < ApplicationController
|
class CategoriesController < ApplicationController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
before_filter :find_category, :only => [:show, :edit, :update, :destroy]
|
before_filter :find_category, :only => [:show, :edit, :update, :destroy]
|
||||||
|
@ -18,10 +19,10 @@ class CategoriesController < ApplicationController
|
||||||
if @platform
|
if @platform
|
||||||
@categories = Category.select('categories.id, categories.name, categories.ancestry, count(projects.id) projects_count').
|
@categories = Category.select('categories.id, categories.name, categories.ancestry, count(projects.id) projects_count').
|
||||||
joins(:projects => :repositories).where('repositories.platform_id = ?', @platform.id).
|
joins(:projects => :repositories).where('repositories.platform_id = ?', @platform.id).
|
||||||
having('count(projects.id) > 0').group('categories.id, categories.name, categories.ancestry, projects_count').default_order
|
having('count(projects.id) > 0').group('categories.id, categories.name, categories.ancestry, projects_count')
|
||||||
render 'index2'
|
render 'index2'
|
||||||
else
|
else
|
||||||
@categories = Category.default_order.paginate(:page => params[:page])
|
@categories = Category.paginate(:page => params[:page])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class CollaboratorsController < ApplicationController
|
class CollaboratorsController < ApplicationController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
|
|
||||||
|
@ -5,9 +6,10 @@ class CollaboratorsController < ApplicationController
|
||||||
before_filter :find_users
|
before_filter :find_users
|
||||||
before_filter :find_groups
|
before_filter :find_groups
|
||||||
|
|
||||||
load_and_authorize_resource :project
|
load_resource :project
|
||||||
|
before_filter :authorize_collaborators
|
||||||
|
|
||||||
def index
|
def index
|
||||||
redirect_to edit_project_collaborators_path(@project)
|
redirect_to edit_project_collaborators_path(@project)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -28,57 +30,57 @@ class CollaboratorsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
all_user_ids = []
|
params['user'].keys.each { |user_id|
|
||||||
all_groups_ids = []
|
role = params['user'][user_id]
|
||||||
Relation::ROLES.each { |r|
|
|
||||||
all_user_ids = all_user_ids | params['user'][r.to_sym].keys if params['user'] && params['user'][r.to_sym]
|
|
||||||
all_groups_ids = all_groups_ids | params['group'][r.to_sym].keys if params['group'] && params['group'][r.to_sym]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Remove relations
|
if relation = @project.relations.find_by_object_id_and_object_type(user_id, 'User')
|
||||||
users_for_removing = @project.collaborators.select do |u|
|
relation.update_attribute(:role, role)
|
||||||
!all_user_ids.map{|k| k.to_i}.include? u.id and @project.owner != u
|
else
|
||||||
end
|
relation = @project.relations.build(:object_id => user_id, :object_type => 'User', :role => role)
|
||||||
users_for_removing.each do |u|
|
relation.save!
|
||||||
Relation.by_object(u).by_target(@project).each {|r| r.destroy}
|
end
|
||||||
end
|
} if params['user']
|
||||||
groups_for_removing = @project.groups.select do |u|
|
|
||||||
!all_groups_ids.map{|k| k.to_i}.include? u.id and @project.owner != u
|
params['group'].keys.each { |group_id|
|
||||||
end
|
role = params['group'][group_id]
|
||||||
groups_for_removing.each do |u|
|
if relation = @project.relations.find_by_object_id_and_object_type(group_id, 'Group')
|
||||||
Relation.by_object(u).by_target(@project).each {|r| r.destroy}
|
relation.update_attribute(:role, role)
|
||||||
end
|
else
|
||||||
|
relation = @project.relations.build(:object_id => user_id, :object_type => 'Group', :role => role)
|
||||||
# Create relations
|
relation.save!
|
||||||
Relation::ROLES.each { |r|
|
end
|
||||||
#users_for_creating = users_for_creating params[:user].keys.map{|p| p.to_i} - @project.collaborators.map(&:id)
|
} if params['group']
|
||||||
params['user'][r.to_sym].keys.each { |u|
|
|
||||||
if relation = @project.relations.find_by_object_id_and_object_type(u, 'User')
|
|
||||||
relation.update_attribute(:role, r)
|
|
||||||
else
|
|
||||||
relation = @project.relations.build(:object_id => u, :object_type => 'User', :role => r)
|
|
||||||
relation.save!
|
|
||||||
end
|
|
||||||
} if params['user'] && params['user'][r.to_sym]
|
|
||||||
params['group'][r.to_sym].keys.each { |u|
|
|
||||||
if relation = @project.relations.find_by_object_id_and_object_type(u, 'Group')
|
|
||||||
relation.update_attribute(:role, r)
|
|
||||||
else
|
|
||||||
relation = @project.relations.build(:object_id => u, :object_type => 'Group', :role => r)
|
|
||||||
relation.save!
|
|
||||||
end
|
|
||||||
} if params['group'] && params['group'][r.to_sym]
|
|
||||||
}
|
|
||||||
|
|
||||||
if @project.save
|
if @project.save
|
||||||
flash[:notice] = t("flash.collaborators.successfully_changed")
|
flash[:notice] = t("flash.collaborators.successfully_changed")
|
||||||
else
|
else
|
||||||
flash[:error] = t("flash.collaborators.error_in_changing")
|
flash[:error] = t("flash.collaborators.error_in_changing")
|
||||||
end
|
end
|
||||||
redirect_to project_path(@project)
|
|
||||||
|
redirect_to edit_project_collaborators_path(@project)
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def remove
|
||||||
|
all_user_ids = []
|
||||||
|
all_groups_ids = []
|
||||||
|
|
||||||
|
params['user_remove'].keys.each { |user_id|
|
||||||
|
all_user_ids << user_id if params['user_remove'][user_id] == ["1"]
|
||||||
|
} if params['user_remove']
|
||||||
|
params['group_remove'].keys.each { |group_id|
|
||||||
|
all_group_ids << group_id if params['group_remove'][group_id] == ["1"]
|
||||||
|
} if params['group_remove']
|
||||||
|
|
||||||
|
all_user_ids.each do |user_id|
|
||||||
|
u = User.find(user_id)
|
||||||
|
Relation.by_object(u).by_target(@project).each {|r| r.destroy}
|
||||||
|
end
|
||||||
|
all_groups_ids.each do |group_id|
|
||||||
|
g = Group.find(group_id)
|
||||||
|
Relation.by_object(g).by_target(@project).each {|r| r.destroy}
|
||||||
|
end
|
||||||
|
|
||||||
|
redirect_to edit_project_collaborators_path(@project)
|
||||||
end
|
end
|
||||||
|
|
||||||
def add
|
def add
|
||||||
|
@ -94,7 +96,7 @@ class CollaboratorsController < ApplicationController
|
||||||
flash[:warning] << [t('flash.collaborators.member_already_added'), mem.uname]
|
flash[:warning] << [t('flash.collaborators.member_already_added'), mem.uname]
|
||||||
end
|
end
|
||||||
unless @project.relations.exists?(:object_id => mem.id, :object_type => mem.class.to_s)
|
unless @project.relations.exists?(:object_id => mem.id, :object_type => mem.class.to_s)
|
||||||
rel = @project.relations.build(:role => 'reader')
|
rel = @project.relations.build(:role => params[:role])
|
||||||
rel.object = mem
|
rel.object = mem
|
||||||
if rel.save
|
if rel.save
|
||||||
flash[:notice] << [t('flash.collaborators.successfully_added'), mem.uname]
|
flash[:notice] << [t('flash.collaborators.successfully_added'), mem.uname]
|
||||||
|
@ -108,10 +110,9 @@ class CollaboratorsController < ApplicationController
|
||||||
if flash[k].size > 0
|
if flash[k].size > 0
|
||||||
flash[k] = flash[k].map{|i| (i.is_a? Array) ? sprintf(i.first, i.last) : i}.join('; ')
|
flash[k] = flash[k].map{|i| (i.is_a? Array) ? sprintf(i.first, i.last) : i}.join('; ')
|
||||||
else
|
else
|
||||||
flash[k] = nil
|
flash.delete k
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
flash.delete_if{|k, v| v.nil?}
|
|
||||||
|
|
||||||
redirect_to(edit_project_collaborators_path(@project))
|
redirect_to(edit_project_collaborators_path(@project))
|
||||||
end
|
end
|
||||||
|
@ -129,4 +130,8 @@ class CollaboratorsController < ApplicationController
|
||||||
def find_groups
|
def find_groups
|
||||||
@groups = @project.groups#Group.all
|
@groups = @project.groups#Group.all
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def authorize_collaborators
|
||||||
|
authorize! :update, @project
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class CommentsController < ApplicationController
|
class CommentsController < ApplicationController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
before_filter :set_commentable, :only => [:index, :edit, :create, :update, :destroy]
|
|
||||||
#before_filter :find_project, :only => [:index, :edit]
|
|
||||||
before_filter :find_comment, :only => [:edit, :update, :destroy]
|
|
||||||
|
|
||||||
authorize_resource :only => [:show, :edit, :update, :destroy]
|
load_resource :project
|
||||||
authorize_resource :project, :only => [:index]
|
before_filter :set_commentable
|
||||||
|
before_filter :find_comment, :only => [:edit, :update, :destroy]
|
||||||
|
authorize_resource
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@comments = @commentable.comments
|
@comments = @commentable.comments
|
||||||
|
@ -13,8 +13,11 @@ class CommentsController < ApplicationController
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@comment = @commentable.comments.build(params[:comment]) if @commentable.class == Issue
|
@comment = @commentable.comments.build(params[:comment]) if @commentable.class == Issue
|
||||||
@comment = Comment.new(params[:comment].merge(:commentable_id => @commentable.id, :commentable_type => @commentable.class.name)) if @commentable.class == Grit::Commit
|
if @commentable.class == Grit::Commit
|
||||||
@comment.user = current_user
|
@comment = Comment.new(params[:comment].merge(:commentable_id => @commentable.id.hex, :commentable_type => @commentable.class.name))
|
||||||
|
end
|
||||||
|
@comment.project = @project
|
||||||
|
@comment.user_id = current_user.id
|
||||||
if @comment.save
|
if @comment.save
|
||||||
flash[:notice] = I18n.t("flash.comment.saved")
|
flash[:notice] = I18n.t("flash.comment.saved")
|
||||||
redirect_to commentable_path
|
redirect_to commentable_path
|
||||||
|
@ -53,36 +56,22 @@ class CommentsController < ApplicationController
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def find_commentable
|
|
||||||
#params.each do |name, value|
|
|
||||||
# if name =~ /(.+)_id$/
|
|
||||||
# return $1.classify.constantize.find(value)
|
|
||||||
# end
|
|
||||||
#end
|
|
||||||
#nil
|
|
||||||
if params[:issue_id].present?
|
|
||||||
return Issue.find_by_serial_id_and_project_id(params[:issue_id], params[:project_id])
|
|
||||||
elsif params[:commit_id].present?
|
|
||||||
return @project.git_repository.commit(params[:commit_id])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def set_commentable
|
def set_commentable
|
||||||
find_project
|
@commentable = if params[:issue_id].present?
|
||||||
@commentable = find_commentable
|
@project.issues.find_by_serial_id params[:issue_id]
|
||||||
|
elsif params[:commit_id].present?
|
||||||
|
@project.git_repository.commit params[:commit_id]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_comment
|
def find_comment
|
||||||
@comment = Comment.find(params[:id])
|
@comment = Comment.find(params[:id])
|
||||||
@comment.project = @project if @comment.commentable_type == 'Grit::Commit'
|
if @comment.commit_comment?
|
||||||
|
@comment.project = @project
|
||||||
|
@comment.helper
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_project
|
|
||||||
@project = Project.find(params[:project_id])
|
|
||||||
end
|
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
def commentable_path
|
def commentable_path
|
||||||
@commentable.class == Issue ? [@project, @commentable] : commit_path(@project, @commentable.id)
|
@commentable.class == Issue ? [@project, @commentable] : commit_path(@project, @commentable.id)
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
|
class CommitSubscribesController < ApplicationController
|
||||||
|
before_filter :authenticate_user!
|
||||||
|
|
||||||
|
load_and_authorize_resource :project
|
||||||
|
|
||||||
|
before_filter :find_commit
|
||||||
|
|
||||||
|
def create
|
||||||
|
if Subscribe.subscribe_to_commit(@options)
|
||||||
|
flash[:notice] = I18n.t("flash.subscribe.commit.saved")
|
||||||
|
# TODO js
|
||||||
|
redirect_to commit_path(@project, @commit)
|
||||||
|
else
|
||||||
|
flash[:error] = I18n.t("flash.subscribe.saved_error")
|
||||||
|
redirect_to commit_path(@project, @commit)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
Subscribe.unsubscribe_from_commit(@options)
|
||||||
|
flash[:notice] = t("flash.subscribe.commit.destroyed")
|
||||||
|
redirect_to commit_path(@project, @commit)
|
||||||
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def find_commit
|
||||||
|
@commit = @project.git_repository.commit(params[:commit_id])
|
||||||
|
@options = {:project_id => @project.id, :subscribeable_id => @commit.id.hex, :subscribeable_type => @commit.class.name, :user_id => current_user.id}
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,2 +1,3 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class ContainersController < ApplicationController
|
class ContainersController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class DownloadsController < ApplicationController
|
class DownloadsController < ApplicationController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
load_and_authorize_resource
|
load_and_authorize_resource
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# coding: UTF-8
|
# -*- encoding : utf-8 -*-
|
||||||
class EventLogsController < ApplicationController
|
class EventLogsController < ApplicationController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
load_and_authorize_resource
|
load_and_authorize_resource
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class Git::BaseController < ApplicationController
|
class Git::BaseController < ApplicationController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
|
load_and_authorize_resource :project
|
||||||
|
|
||||||
before_filter :find_project
|
|
||||||
before_filter :find_git_repository
|
before_filter :find_git_repository
|
||||||
before_filter :find_tags
|
before_filter :find_tags
|
||||||
before_filter :find_branches
|
before_filter :find_branches
|
||||||
|
@ -9,13 +10,7 @@ class Git::BaseController < ApplicationController
|
||||||
before_filter :set_current_tag
|
before_filter :set_current_tag
|
||||||
before_filter :set_current_branch
|
before_filter :set_current_branch
|
||||||
|
|
||||||
load_and_authorize_resource :project
|
|
||||||
|
|
||||||
protected
|
protected
|
||||||
def find_project
|
|
||||||
@project = Project.find(params[:project_id])
|
|
||||||
end
|
|
||||||
|
|
||||||
def find_git_repository
|
def find_git_repository
|
||||||
@git_repository = @project.git_repository
|
@git_repository = @project.git_repository
|
||||||
end
|
end
|
||||||
|
@ -29,7 +24,7 @@ class Git::BaseController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_treeish
|
def set_treeish
|
||||||
@treeish = params[:treeish].present? ? params[:treeish] : "master"
|
@treeish = params[:treeish].presence || @project.default_branch
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_current_tag
|
def set_current_tag
|
||||||
|
@ -39,4 +34,4 @@ class Git::BaseController < ApplicationController
|
||||||
def set_current_branch
|
def set_current_branch
|
||||||
@current_branch = @branches.select{|b| b.name == @treeish }.first
|
@current_branch = @branches.select{|b| b.name == @treeish }.first
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,55 +1,64 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class Git::BlobsController < Git::BaseController
|
class Git::BlobsController < Git::BaseController
|
||||||
before_filter :set_path
|
|
||||||
before_filter :set_commit_hash
|
|
||||||
before_filter :find_tree
|
before_filter :find_tree
|
||||||
|
before_filter :find_branch
|
||||||
|
before_filter :set_path_blob
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@blob = @tree / @path
|
redirect_to project_path(@project) and return unless @blob.present?
|
||||||
|
|
||||||
if params[:raw]
|
if params[:raw]
|
||||||
image_url = Rails.root.to_s + "/" + @path
|
|
||||||
|
|
||||||
response.headers['Cache-Control'] = "public, max-age=#{12.hours.to_i}"
|
response.headers['Cache-Control'] = "public, max-age=#{12.hours.to_i}"
|
||||||
response.headers['Content-Type'] = @blob.mime_type
|
response.headers['Content-Type'] = @blob.mime_type
|
||||||
response.headers['Content-Disposition'] = 'inline'
|
response.headers['Content-Disposition'] = 'inline'
|
||||||
|
render(:text => @blob.data) and return
|
||||||
render(:text => open(image_url).read) and return
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def blame
|
def edit
|
||||||
@blob = @tree / @path
|
redirect_to project_path(@project) and return unless @blob.present?
|
||||||
|
authorize! :write, @project
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
redirect_to project_path(@project) and return unless @blob.present?
|
||||||
|
authorize! :write, @project
|
||||||
|
# Here might be callbacks for notification purposes:
|
||||||
|
# @git_repository.after_update_file do |repo, sha|
|
||||||
|
# end
|
||||||
|
|
||||||
|
res = @git_repository.update_file(params[:path], params[:content].gsub("\r", ''),
|
||||||
|
:message => params[:message].gsub("\r", ''), :actor => current_user, :head => @treeish)
|
||||||
|
if res
|
||||||
|
flash[:notice] = t("flash.blob.successfully_updated", :name => params[:path])
|
||||||
|
else
|
||||||
|
flash[:notice] = t("flash.blob.updating_error", :name => params[:path])
|
||||||
|
end
|
||||||
|
redirect_to :action => :show
|
||||||
|
end
|
||||||
|
|
||||||
|
def blame
|
||||||
@blame = Grit::Blob.blame(@git_repository.repo, @commit.try(:id), @path)
|
@blame = Grit::Blob.blame(@git_repository.repo, @commit.try(:id), @path)
|
||||||
end
|
end
|
||||||
|
|
||||||
def raw
|
def raw
|
||||||
@blob = @tree / @path
|
redirect_to project_path(@project) and return unless @blob.present?
|
||||||
|
|
||||||
headers["Content-Disposition"] = %[attachment;filename="#{@blob.name}"]
|
headers["Content-Disposition"] = %[attachment;filename="#{@blob.name}"]
|
||||||
render :text => @blob.data, :content_type => @blob.mime_type
|
render :text => @blob.data, :content_type => @blob.mime_type
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
def set_path
|
|
||||||
@path = params[:path]
|
|
||||||
end
|
|
||||||
|
|
||||||
def set_commit_hash
|
def find_branch
|
||||||
@commit_hash = params[:commit_hash].present? ? params[:commit_hash] : nil
|
@branch = @project.branch(@treeish)
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_tree
|
def set_path_blob
|
||||||
if @commit_hash
|
@path = params[:path]
|
||||||
puts "1"
|
@blob = @tree / @path
|
||||||
@tree = @git_repository.tree(@commit_hash)
|
end
|
||||||
@commit = @git_repository.commits(@treeish, 1).first
|
|
||||||
else
|
|
||||||
puts "2"
|
|
||||||
@tree = @git_repository.tree(@treeish)
|
|
||||||
puts @tree.name.inspect
|
|
||||||
|
|
||||||
@commit = @git_repository.log(@treeish, @path).first # TODO WTF nil ?
|
def find_tree
|
||||||
end
|
@tree = @git_repository.tree(@treeish)
|
||||||
end
|
@commit = @git_repository.log(@treeish, @path, :max_count => 1).first # TODO WTF nil ?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class Git::CommitsController < Git::BaseController
|
class Git::CommitsController < Git::BaseController
|
||||||
|
helper_method :split_commits_by_date
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@branch_name = (params[:branch] ? params[:branch] : "master")
|
@branch_name = params[:treeish] || @project.default_branch
|
||||||
|
@branch = @project.branch(@branch_name)
|
||||||
@path = params[:path]
|
@path = params[:path]
|
||||||
|
|
||||||
if @path.present?
|
if @path.present?
|
||||||
|
@ -18,9 +21,22 @@ class Git::CommitsController < Git::BaseController
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.diff { render :text => (@commit.diffs.map{|d| d.diff}.join("\n") rescue ''), :content_type => "text/plain" }
|
format.diff { render :text => (@commit.diffs.map(&:diff).join("\n") rescue ''), :content_type => "text/plain" }
|
||||||
format.patch { render :text => (@commit.to_patch rescue ''), :content_type => "text/plain" }
|
format.patch { render :text => (@commit.to_patch rescue ''), :content_type => "text/plain" }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def split_commits_by_date(commits)
|
||||||
|
res = commits.sort{|x, y| y.authored_date <=> x.authored_date}.inject({}) do |h, commit|
|
||||||
|
dt = commit.authored_date
|
||||||
|
h[dt.year] ||= {}
|
||||||
|
h[dt.year][dt.month] ||= {}
|
||||||
|
h[dt.year][dt.month][dt.day] ||= []
|
||||||
|
h[dt.year][dt.month][dt.day] << commit
|
||||||
|
h
|
||||||
|
end
|
||||||
|
return res
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
class Git::RepositoriesController < Git::BaseController
|
|
||||||
|
|
||||||
def show
|
|
||||||
@commit = @git_repository.master
|
|
||||||
@tree = @commit ? @commit.tree : nil
|
|
||||||
|
|
||||||
render :template => "git/repositories/empty" unless @tree
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
|
@ -1,16 +1,18 @@
|
||||||
|
# -*- encoding : utf-8 -*-
|
||||||
class Git::TreesController < Git::BaseController
|
class Git::TreesController < Git::BaseController
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@path = params[:path]
|
redirect_to project_path(@project) and return if params[:treeish] == @project.default_branch and params[:path].blank?
|
||||||
|
|
||||||
|
@path = params[:path]
|
||||||
@tree = @git_repository.tree(@treeish)
|
@tree = @git_repository.tree(@treeish)
|
||||||
|
@branch = @project.branch(@treeish)
|
||||||
|
|
||||||
# @commit = @git_repository.commits(@treeish, 1).first
|
# @commit = @git_repository.commits(@treeish, 1).first
|
||||||
# Raises Grit::Git::GitTimeout
|
# Raises Grit::Git::GitTimeout
|
||||||
@commit = @git_repository.log(@treeish, @path).first
|
@commit = @branch.present? ? @branch.commit() : @git_repository.log(@treeish, @path, :max_count => 1).first
|
||||||
|
render :template => "git/trees/empty" and return unless @commit
|
||||||
|
|
||||||
@tree = @tree / @path if @path
|
@tree = @tree / @path if @path
|
||||||
|
render :template => "git/trees/show"
|
||||||
render :template => "git/repositories/show"
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# coding: UTF-8
|
# -*- encoding : utf-8 -*-
|
||||||
class GroupsController < ApplicationController
|
class GroupsController < ApplicationController
|
||||||
is_related_controller!
|
is_related_controller!
|
||||||
|
|
||||||
|
@ -7,16 +7,12 @@ class GroupsController < ApplicationController
|
||||||
before_filter :authenticate_user!
|
before_filter :authenticate_user!
|
||||||
before_filter :find_group, :only => [:show, :edit, :update, :destroy]
|
before_filter :find_group, :only => [:show, :edit, :update, :destroy]
|
||||||
|
|
||||||
load_and_authorize_resource
|
load_and_authorize_resource :except => :create
|
||||||
|
authorize_resource :only => :create
|
||||||
autocomplete :group, :uname
|
autocomplete :group, :uname
|
||||||
|
|
||||||
def index
|
def index
|
||||||
puts parent.inspect
|
@groups = current_user.groups#accessible_by(current_ability)
|
||||||
@groups = if parent? and !parent.nil?
|
|
||||||
parent.groups
|
|
||||||
else
|
|
||||||
Group
|
|
||||||
end.accessible_by(current_ability)
|
|
||||||
|
|
||||||
@groups = if params[:query]
|
@groups = if params[:query]
|
||||||
@groups.where(["name LIKE ?", "%#{params[:query]}%"])
|
@groups.where(["name LIKE ?", "%#{params[:query]}%"])
|
||||||
|
@ -39,19 +35,16 @@ class GroupsController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@group = Group.new params[:group]
|
@group = Group.new(:description => params[:group][:description])
|
||||||
@group.owner = if parent? and parent.is_a? User
|
@group.owner = current_user
|
||||||
parent
|
@group.uname = params[:group][:uname]
|
||||||
else
|
|
||||||
current_user
|
|
||||||
end
|
|
||||||
|
|
||||||
if @group.save
|
if @group.save
|
||||||
flash[:notice] = t('flash.group.saved')
|
flash[:notice] = t('flash.group.saved')
|
||||||
redirect_to group_path(@group)
|
redirect_to group_path(@group)
|
||||||
else
|
else
|
||||||
flash[:error] = t('flash.group.save_error')
|
flash[:error] = t('flash.group.save_error')
|
||||||
flash[:warning] = @group.errors[:base]
|
flash[:warning] = @group.errors.full_messages.join('. ')
|
||||||
render :action => :new
|
render :action => :new
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|