des tests supplémentaires, passage à bootstrap3, simplifications
parent
13cb33d7bb
commit
83157fb1ab
|
@ -13,7 +13,6 @@ cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mloca
|
|||
|
||||
cpanm Dancer2
|
||||
cpanm Dancer2::Plugin::Deferred
|
||||
#cpanm Dancer::Plugin::FlashMessage
|
||||
cpanm YAML::XS
|
||||
cpanm Data::Dump
|
||||
cpanm File::Basename
|
||||
|
@ -34,4 +33,6 @@ cpanm Net::OpenSSH
|
|||
cpanm Template
|
||||
cpanm Net::SSH
|
||||
cpanm Date::Calc
|
||||
cpanm Data::Validate::IP
|
||||
|
||||
# cpanm Template::Toolkit non trouvé
|
||||
|
|
|
@ -92,9 +92,10 @@ prefix '/domain' => sub {
|
|||
};
|
||||
|
||||
post '/update/:domain' => sub {
|
||||
what_is_next rt_dom_update
|
||||
what_is_next rt_dom_add_entry
|
||||
get_session( qw/login passwd/ )
|
||||
, get_param( qw/domain name type priority rdata ttl/ );
|
||||
, get_param( qw/domain type name ttl priority weight port rdata/ )
|
||||
, get_request( qw/referer/ );
|
||||
};
|
||||
|
||||
get '/details/:domain' => sub {
|
||||
|
@ -117,6 +118,20 @@ prefix '/domain' => sub {
|
|||
, get_request( qw/address referer/ );
|
||||
};
|
||||
|
||||
get '/del/:domain/:name/:ttl/:type/:priority/:rdata' => sub {
|
||||
what_is_next rt_dom_del_entry
|
||||
get_session( qw/login passwd/ )
|
||||
, get_param( qw/domain name ttl type priority rdata/ )
|
||||
, get_request( qw/address referer/ );
|
||||
};
|
||||
|
||||
get '/del/:domain/:name/:ttl/:type/:priority/:weight/:port/:rdata' => sub {
|
||||
what_is_next rt_dom_del_entry
|
||||
get_session( qw/login passwd/ )
|
||||
, get_param( qw/domain name ttl type priority weight port rdata/ )
|
||||
, get_request( qw/address referer/ );
|
||||
};
|
||||
|
||||
get '/del/:domain/:name/:ttl/:type/:rdata' => sub {
|
||||
what_is_next rt_dom_del_entry
|
||||
get_session( qw/login passwd/ )
|
||||
|
@ -127,9 +142,9 @@ prefix '/domain' => sub {
|
|||
post '/mod/:domain' => sub {
|
||||
what_is_next rt_dom_mod_entry
|
||||
get_session( qw/login passwd/ )
|
||||
, get_param( qw/domain
|
||||
oldpriority oldtype oldname oldttl oldrdata
|
||||
newpriority newtype newname newttl newrdata/ )
|
||||
, get_param( qw/domain type
|
||||
oldpriority oldname oldttl oldrdata oldweight oldport
|
||||
newpriority newname newttl newrdata newweight newport/ )
|
||||
, get_request( qw/address referer/ );
|
||||
};
|
||||
|
||||
|
|
253
lib/rt/domain.pm
253
lib/rt/domain.pm
|
@ -8,6 +8,7 @@ use app;
|
|||
use utf8;
|
||||
use Dancer ':syntax';
|
||||
use Data::Dump qw( dump );
|
||||
use Data::Validate::IP qw(is_ipv4 is_ipv6);
|
||||
|
||||
use Exporter 'import';
|
||||
# what we want to export eventually
|
||||
|
@ -18,7 +19,7 @@ rt_dom_del_entry
|
|||
rt_dom_del
|
||||
rt_dom_add
|
||||
rt_dom_details
|
||||
rt_dom_update
|
||||
rt_dom_add_entry
|
||||
rt_dom_updateraw
|
||||
/;
|
||||
|
||||
|
@ -30,7 +31,7 @@ rt_dom_del_entry
|
|||
rt_dom_del
|
||||
rt_dom_add
|
||||
rt_dom_details
|
||||
rt_dom_update
|
||||
rt_dom_add_entry
|
||||
rt_dom_updateraw
|
||||
/] );
|
||||
|
||||
|
@ -80,15 +81,22 @@ sub rt_dom_mod_entry {
|
|||
}
|
||||
|
||||
my @missingitems;
|
||||
my @items = qw/domain type
|
||||
oldname oldrdata oldttl
|
||||
newname newrdata newttl/;
|
||||
|
||||
for(qw/domain
|
||||
oldtype oldname oldrdata oldttl
|
||||
newtype newname newrdata newttl/) {
|
||||
push @missingitems, $_ unless($$param{$_});
|
||||
if($$param{type} && $$param{type} eq 'MX') {
|
||||
push @items, qw/oldpriority newpriority/;
|
||||
}
|
||||
|
||||
if($$param{oldtype} eq 'MX' && ! $$param{newpriority}) {
|
||||
push @missingitems, "newpriority";
|
||||
if($$param{type} && $$param{type} eq 'SRV') {
|
||||
push @items, qw/
|
||||
oldpriority oldweight oldport
|
||||
newpriority newweight newport/;
|
||||
}
|
||||
|
||||
for(@items) {
|
||||
push @missingitems, $_ unless($$param{$_});
|
||||
}
|
||||
|
||||
if(@missingitems != 0) {
|
||||
|
@ -96,13 +104,73 @@ sub rt_dom_mod_entry {
|
|||
return $res;
|
||||
}
|
||||
|
||||
for(qw/domain
|
||||
oldtype oldname oldrdata oldttl
|
||||
newtype newname newrdata newttl/) {
|
||||
say "$_ : $$param{$_}" if $$param{$_};
|
||||
for(@items) {
|
||||
say "::::::::: $_ : $$param{$_}" if $$param{$_};
|
||||
}
|
||||
|
||||
eval {
|
||||
|
||||
unless( $$param{domain} ) {
|
||||
$$res{deferred}{errmsg} = q<Domaine non renseigné.>;
|
||||
$$res{route} = ($$request{referer}) ? $$request{referer} : '/';
|
||||
return $res;
|
||||
}
|
||||
|
||||
my $rdata = $$param{newrdata};
|
||||
|
||||
if ($$param{type} eq 'A' && ! is_ipv4($rdata)) {
|
||||
$$res{deferred}{errmsg} =
|
||||
"Il faut une adresse IPv4 pour un enregistrement de type A."
|
||||
. " Ceci n'est pas une adresse IPv4 : $rdata";
|
||||
$$res{route} = ($$request{referer}) ? $$request{referer} : '/';
|
||||
return $res;
|
||||
}
|
||||
|
||||
if ($$param{type} eq 'AAAA' && ! is_ipv6($rdata)) {
|
||||
$$res{deferred}{errmsg} =
|
||||
"Il faut une adresse IPv6 pour un enregistrement de type AAAA."
|
||||
. " Ceci n'est pas une adresse IPv6 : $rdata";
|
||||
$$res{route} = ($$request{referer}) ? $$request{referer} : '/';
|
||||
return $res;
|
||||
}
|
||||
|
||||
if ($$param{type} =~ /^(CNAME|MX|NS|PTR|SRV)$/i
|
||||
&& ! is_domain_name ($rdata))
|
||||
{
|
||||
$$res{deferred}{errmsg} =
|
||||
"Une entrée CNAME doit avoir un nom de domaine "
|
||||
. "(pas une URL, pas de http://) : $rdata n'est pas correct.";
|
||||
$$res{route} = ($$request{referer}) ? $$request{referer} : '/';
|
||||
return $res;
|
||||
}
|
||||
|
||||
if($$param{type} =~ /^(CNAME|MX|NS|PTR)$/ && $rdata !~ /\.$/) {
|
||||
$rdata .= ".$$param{domain}.";
|
||||
}
|
||||
|
||||
my $str_old = "$$param{oldname} $$param{oldttl} $$param{type} ";
|
||||
my $str_new = "$$param{newname} $$param{newttl} $$param{type} ";
|
||||
|
||||
if($$param{type} eq "MX") {
|
||||
$str_old .= "$$param{oldpriority} $$param{oldrdata}";
|
||||
$str_new .= "$$param{newpriority} $$param{newrdata}";
|
||||
}
|
||||
elsif ($$param{type} eq "SRV") {
|
||||
$str_old .= "$$param{oldpriority} $$param{oldweight} "
|
||||
."$$param{oldport} $$param{oldrdata}";
|
||||
$str_new .= "$$param{newpriority} $$param{newweight} "
|
||||
."$$param{newport} $rdata";
|
||||
}
|
||||
else {
|
||||
$str_old .= "$$param{oldrdata}";
|
||||
$str_new .= "$rdata";
|
||||
}
|
||||
|
||||
say "str_old : $str_old";
|
||||
say "str_new : $str_new";
|
||||
|
||||
# Do the modification of the entry
|
||||
|
||||
my $app = app->new(get_cfg());
|
||||
my $user = $app->auth($$session{login}, $$session{passwd});
|
||||
|
||||
|
@ -113,26 +181,8 @@ sub rt_dom_mod_entry {
|
|||
return $res;
|
||||
}
|
||||
|
||||
unless( $$param{domain} ) {
|
||||
$$res{deferred}{errmsg} = q<Domaine non renseigné.>;
|
||||
$$res{route} = ($$request{referer}) ? $$request{referer} : '/';
|
||||
return $res;
|
||||
}
|
||||
|
||||
my $zone = $app->get_zone( $$param{domain} );
|
||||
my $zf = $zone->get_zonefile();
|
||||
my $str_old =
|
||||
"$$param{oldname} $$param{oldttl} $$param{oldtype} $$param{oldrdata}";
|
||||
my $str_new = "$$param{newname} $$param{newttl} $$param{newtype} ";
|
||||
if($$param{newtype} eq "MX") {
|
||||
$str_new .= "$$param{newpriority} $$param{newrdata}";
|
||||
}
|
||||
else {
|
||||
$str_new .= "$$param{newrdata}";
|
||||
}
|
||||
|
||||
say "old rdata : $$param{oldrdata}";
|
||||
say "new rdata : $$param{newrdata}";
|
||||
|
||||
$zf->rr_mod( $str_old, $str_new);
|
||||
$zone->update( $zf );
|
||||
|
@ -140,6 +190,11 @@ sub rt_dom_mod_entry {
|
|||
$app->disconnect();
|
||||
};
|
||||
|
||||
if($@) {
|
||||
$$res{deferred}{errmsg} = q{Modification impossible. } . $@;
|
||||
return $res;
|
||||
}
|
||||
|
||||
$res
|
||||
}
|
||||
|
||||
|
@ -161,17 +216,47 @@ sub rt_dom_del_entry {
|
|||
return $res;
|
||||
}
|
||||
|
||||
unless( $$param{domain} ) {
|
||||
$$res{deferred}{errmsg} = q{Domaine non renseigné.};
|
||||
my @missingitems;
|
||||
my @items = qw/domain name ttl type rdata/;
|
||||
|
||||
if ($$param{type} && $$param{type} eq 'SRV') {
|
||||
push @items, qw/priority weight port/;
|
||||
}
|
||||
elsif ($$param{type} && $$param{type} eq 'MX') {
|
||||
push @items, qw/priority/;
|
||||
}
|
||||
|
||||
for(@items) {
|
||||
push @missingitems, $_ unless($$param{$_});
|
||||
}
|
||||
|
||||
for(@items) {
|
||||
say "::::::::: $_ : $$param{$_}" if $$param{$_};
|
||||
}
|
||||
|
||||
if(@missingitems != 0) {
|
||||
$$res{deferred}{errmsg} = "Il manque : " . join ', ', @missingitems;
|
||||
$$res{route} = ($$request{referer}) ? $$request{referer} : '/';
|
||||
return $res;
|
||||
}
|
||||
|
||||
my $zone = $app->get_zone( $$param{domain} );
|
||||
my $zf = $zone->get_zonefile();
|
||||
$zf->rr_del_raw(
|
||||
"$$param{name} $$param{ttl} $$param{type} $$param{rdata}"
|
||||
);
|
||||
|
||||
my $str_del = "$$param{name} $$param{ttl} $$param{type} ";
|
||||
|
||||
if( $$param{type} eq 'SRV') {
|
||||
$str_del .=
|
||||
"$$param{priority} $$param{weight} $$param{port} $$param{rdata}";
|
||||
}
|
||||
elsif ($$param{type} eq 'MX') {
|
||||
$str_del .= "$$param{priority} $$param{rdata}";
|
||||
}
|
||||
else {
|
||||
$str_del .= "$$param{rdata}";
|
||||
}
|
||||
|
||||
$zf->rr_del_raw( $str_del );
|
||||
$zone->update( $zf );
|
||||
|
||||
$app->disconnect();
|
||||
|
@ -348,7 +433,7 @@ sub rt_dom_details {
|
|||
|
||||
if($@) {
|
||||
$app->disconnect() if $app;
|
||||
$$res{deferred}{errmsg} = $@;
|
||||
$$res{deferred}{errmsg} = q{Une erreur est survenue. } . $@;
|
||||
$$res{route} = '/';
|
||||
return $res;
|
||||
}
|
||||
|
@ -356,8 +441,8 @@ sub rt_dom_details {
|
|||
$res
|
||||
}
|
||||
|
||||
sub rt_dom_update {
|
||||
my ($session, $param) = @_;
|
||||
sub rt_dom_add_entry {
|
||||
my ($session, $param, $request) = @_;
|
||||
my $res;
|
||||
|
||||
unless( $$session{login} && $$param{domain} ) {
|
||||
|
@ -368,13 +453,18 @@ sub rt_dom_update {
|
|||
$$res{route} = '/domain/details/'. $$param{domain};
|
||||
|
||||
my @missingitems;
|
||||
my @items = qw/domain type name ttl rdata/;
|
||||
|
||||
for(qw/name ttl type rdata domain/) {
|
||||
push @missingitems, $_ unless($$param{$_});
|
||||
if($$param{type} && $$param{type} eq 'MX') {
|
||||
push @items, qw/priority/;
|
||||
}
|
||||
|
||||
if($$param{type} eq 'MX' && ! $$param{priority}) {
|
||||
push @missingitems, "priority";
|
||||
|
||||
if($$param{type} && $$param{type} eq 'SRV') {
|
||||
push @items, qw/priority weight port/;
|
||||
}
|
||||
|
||||
for(@items) {
|
||||
push @missingitems, $_ unless($$param{$_});
|
||||
}
|
||||
|
||||
if(@missingitems != 0) {
|
||||
|
@ -383,6 +473,64 @@ sub rt_dom_update {
|
|||
}
|
||||
|
||||
eval {
|
||||
# Perform tests on the different entries
|
||||
|
||||
my $name = $$param{name};
|
||||
|
||||
if($name =~ /$$param{domain}$/) {
|
||||
$name .= '.';
|
||||
}
|
||||
|
||||
if($name !~ /\.$/) {
|
||||
$name .= ".$$param{domain}."
|
||||
}
|
||||
|
||||
my $str_new = "$name $$param{ttl} $$param{type} ";
|
||||
my $rdata = $$param{rdata};
|
||||
|
||||
if ($$param{type} =~ /^(CNAME|MX|NS|PTR)$/i
|
||||
&& ! is_domain_name ($rdata))
|
||||
{
|
||||
$$res{deferred}{errmsg} =
|
||||
"Une entrée CNAME doit avoir un nom de domaine "
|
||||
. "(pas une URL, pas de http://) : $rdata n'est pas correct.";
|
||||
$$res{route} = ($$request{referer}) ? $$request{referer} : '/';
|
||||
return $res;
|
||||
}
|
||||
|
||||
if ($$param{type} eq 'A' && ! is_ipv4($rdata)) {
|
||||
$$res{deferred}{errmsg} =
|
||||
"Il faut une adresse IPv4 pour un enregistrement de type A."
|
||||
. " Ceci n'est pas une adresse IPv4 : $rdata";
|
||||
$$res{route} = ($$request{referer}) ? $$request{referer} : '/';
|
||||
return $res;
|
||||
}
|
||||
|
||||
if ($$param{type} eq 'AAAA' && ! is_ipv6($rdata)) {
|
||||
$$res{deferred}{errmsg} =
|
||||
"Il faut une adresse IPv6 pour un enregistrement de type AAAA."
|
||||
. " Ceci n'est pas une adresse IPv6 : $rdata";
|
||||
$$res{route} = ($$request{referer}) ? $$request{referer} : '/';
|
||||
return $res;
|
||||
}
|
||||
|
||||
if($$param{type} =~ /^(CNAME|MX|NS|PTR|SRV)$/ && $rdata !~ /\.$/) {
|
||||
$rdata .= ".$$param{domain}.";
|
||||
}
|
||||
|
||||
if($$param{type} eq "MX") {
|
||||
$str_new .= "$$param{priority} $rdata";
|
||||
}
|
||||
elsif ($$param{type} eq "SRV") {
|
||||
$str_new .=
|
||||
"$$param{priority} $$param{weight} $$param{port} $rdata";
|
||||
}
|
||||
else {
|
||||
$str_new .= "$rdata";
|
||||
}
|
||||
|
||||
# Add the entry
|
||||
|
||||
my $app = app->new(get_cfg());
|
||||
my $user = $app->auth($$session{login}, $$session{passwd});
|
||||
|
||||
|
@ -396,23 +544,6 @@ sub rt_dom_update {
|
|||
|
||||
my $zone = $app->get_zone( $$param{domain} );
|
||||
my $zf = $zone->get_zonefile();
|
||||
|
||||
my $name = $$param{name};
|
||||
$name .= ".$$param{domain}" unless $name =~ /$$param{domain}$/;
|
||||
my $str_new = "$name $$param{ttl} $$param{type} ";
|
||||
|
||||
my $rdata = $$param{rdata};
|
||||
|
||||
if($$param{type} =~ /^(CNAME|MX|NS|PTR)$/ && $rdata !~ /\.$/) {
|
||||
$rdata .= ".$$param{domain}";
|
||||
}
|
||||
|
||||
if($$param{type} eq "MX") {
|
||||
$str_new .= "$$param{priority} $$param{rdata}";
|
||||
}
|
||||
else {
|
||||
$str_new .= "$$param{rdata}";
|
||||
}
|
||||
$zf->rr_add_raw($str_new);
|
||||
$zf->new_serial();
|
||||
$zone->update( $zf );
|
||||
|
@ -421,7 +552,7 @@ sub rt_dom_update {
|
|||
};
|
||||
|
||||
if ( $@ ) {
|
||||
$$res{deferred}{errmsg} = q{Problème de mise à jour du domaine. }. $@;
|
||||
$$res{deferred}{errmsg} = q{Problème à l'ajout d'une entrée. }. $@;
|
||||
}
|
||||
|
||||
$res
|
||||
|
|
|
@ -78,7 +78,7 @@ sub rt_user_login {
|
|||
};
|
||||
|
||||
if( $@ ) {
|
||||
$$res{deferred}{errmsg} = q{Impossible de se connecter ! } . $@;
|
||||
$$res{deferred}{errmsg} = q{Impossible de se connecter ! };
|
||||
$$res{sessiondestroy} = 1;
|
||||
$$res{route} = '/';
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ sub rt_user_add {
|
|||
};
|
||||
|
||||
if($@) {
|
||||
$$res{deferred}{errmsg} = q{Ce pseudo est déjà pris.} . $@;
|
||||
$$res{deferred}{errmsg} = q{Ce pseudo est déjà pris.};
|
||||
$$res{route} = '/user/subscribe';
|
||||
return $res;
|
||||
}
|
||||
|
|
|
@ -125,8 +125,9 @@ sub rr_del {
|
|||
sub rr_add_raw {
|
||||
my ($self, $rrline) = @_;
|
||||
utf8::decode($rrline);
|
||||
say "to add : $rrline";
|
||||
say "to add raw : $rrline";
|
||||
my $rr = Net::DNS::RR->new($rrline);
|
||||
say "to add reformed : " . $rr->plain;
|
||||
$self->rr_add($rr)
|
||||
}
|
||||
|
||||
|
@ -193,8 +194,23 @@ sub rr_array_to_array {
|
|||
$$rr{rdata} = $_->rdstring;
|
||||
utf8::decode($$rr{rdata});
|
||||
}
|
||||
elsif($list[3] =~ /^SRV$/) {
|
||||
# _service._proto.name. TTL class SRV priority weight port target.
|
||||
# _sip._tcp.example.com. 86400 IN SRV 10 60 5060 bigbox.example.com.
|
||||
$$rr{priority} = $list[4];
|
||||
$$rr{weight} = $list[5];
|
||||
$$rr{port} = $list[6];
|
||||
$$rr{rdata} = $list[7];
|
||||
|
||||
utf8::decode($$rr{priority});
|
||||
utf8::decode($$rr{weight});
|
||||
utf8::decode($$rr{port});
|
||||
utf8::decode($$rr{rdata});
|
||||
}
|
||||
else {
|
||||
die "This RR is not available : " . $_->plain;
|
||||
$$rr{rdata} = $_->rdstring;
|
||||
utf8::decode($$rr{rdata});
|
||||
say "This RR is not available : " . $_->plain;
|
||||
}
|
||||
|
||||
push @$rr_list, $rr;
|
||||
|
|
|
@ -0,0 +1,587 @@
|
|||
/*!
|
||||
* Bootstrap v3.3.6 (http://getbootstrap.com)
|
||||
* Copyright 2011-2015 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
.btn-default,
|
||||
.btn-primary,
|
||||
.btn-success,
|
||||
.btn-info,
|
||||
.btn-warning,
|
||||
.btn-danger {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
}
|
||||
.btn-default:active,
|
||||
.btn-primary:active,
|
||||
.btn-success:active,
|
||||
.btn-info:active,
|
||||
.btn-warning:active,
|
||||
.btn-danger:active,
|
||||
.btn-default.active,
|
||||
.btn-primary.active,
|
||||
.btn-success.active,
|
||||
.btn-info.active,
|
||||
.btn-warning.active,
|
||||
.btn-danger.active {
|
||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||
}
|
||||
.btn-default.disabled,
|
||||
.btn-primary.disabled,
|
||||
.btn-success.disabled,
|
||||
.btn-info.disabled,
|
||||
.btn-warning.disabled,
|
||||
.btn-danger.disabled,
|
||||
.btn-default[disabled],
|
||||
.btn-primary[disabled],
|
||||
.btn-success[disabled],
|
||||
.btn-info[disabled],
|
||||
.btn-warning[disabled],
|
||||
.btn-danger[disabled],
|
||||
fieldset[disabled] .btn-default,
|
||||
fieldset[disabled] .btn-primary,
|
||||
fieldset[disabled] .btn-success,
|
||||
fieldset[disabled] .btn-info,
|
||||
fieldset[disabled] .btn-warning,
|
||||
fieldset[disabled] .btn-danger {
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.btn-default .badge,
|
||||
.btn-primary .badge,
|
||||
.btn-success .badge,
|
||||
.btn-info .badge,
|
||||
.btn-warning .badge,
|
||||
.btn-danger .badge {
|
||||
text-shadow: none;
|
||||
}
|
||||
.btn:active,
|
||||
.btn.active {
|
||||
background-image: none;
|
||||
}
|
||||
.btn-default {
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
|
||||
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dbdbdb;
|
||||
border-color: #ccc;
|
||||
}
|
||||
.btn-default:hover,
|
||||
.btn-default:focus {
|
||||
background-color: #e0e0e0;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-default:active,
|
||||
.btn-default.active {
|
||||
background-color: #e0e0e0;
|
||||
border-color: #dbdbdb;
|
||||
}
|
||||
.btn-default.disabled,
|
||||
.btn-default[disabled],
|
||||
fieldset[disabled] .btn-default,
|
||||
.btn-default.disabled:hover,
|
||||
.btn-default[disabled]:hover,
|
||||
fieldset[disabled] .btn-default:hover,
|
||||
.btn-default.disabled:focus,
|
||||
.btn-default[disabled]:focus,
|
||||
fieldset[disabled] .btn-default:focus,
|
||||
.btn-default.disabled.focus,
|
||||
.btn-default[disabled].focus,
|
||||
fieldset[disabled] .btn-default.focus,
|
||||
.btn-default.disabled:active,
|
||||
.btn-default[disabled]:active,
|
||||
fieldset[disabled] .btn-default:active,
|
||||
.btn-default.disabled.active,
|
||||
.btn-default[disabled].active,
|
||||
fieldset[disabled] .btn-default.active {
|
||||
background-color: #e0e0e0;
|
||||
background-image: none;
|
||||
}
|
||||
.btn-primary {
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #245580;
|
||||
}
|
||||
.btn-primary:hover,
|
||||
.btn-primary:focus {
|
||||
background-color: #265a88;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-primary:active,
|
||||
.btn-primary.active {
|
||||
background-color: #265a88;
|
||||
border-color: #245580;
|
||||
}
|
||||
.btn-primary.disabled,
|
||||
.btn-primary[disabled],
|
||||
fieldset[disabled] .btn-primary,
|
||||
.btn-primary.disabled:hover,
|
||||
.btn-primary[disabled]:hover,
|
||||
fieldset[disabled] .btn-primary:hover,
|
||||
.btn-primary.disabled:focus,
|
||||
.btn-primary[disabled]:focus,
|
||||
fieldset[disabled] .btn-primary:focus,
|
||||
.btn-primary.disabled.focus,
|
||||
.btn-primary[disabled].focus,
|
||||
fieldset[disabled] .btn-primary.focus,
|
||||
.btn-primary.disabled:active,
|
||||
.btn-primary[disabled]:active,
|
||||
fieldset[disabled] .btn-primary:active,
|
||||
.btn-primary.disabled.active,
|
||||
.btn-primary[disabled].active,
|
||||
fieldset[disabled] .btn-primary.active {
|
||||
background-color: #265a88;
|
||||
background-image: none;
|
||||
}
|
||||
.btn-success {
|
||||
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #3e8f3e;
|
||||
}
|
||||
.btn-success:hover,
|
||||
.btn-success:focus {
|
||||
background-color: #419641;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-success:active,
|
||||
.btn-success.active {
|
||||
background-color: #419641;
|
||||
border-color: #3e8f3e;
|
||||
}
|
||||
.btn-success.disabled,
|
||||
.btn-success[disabled],
|
||||
fieldset[disabled] .btn-success,
|
||||
.btn-success.disabled:hover,
|
||||
.btn-success[disabled]:hover,
|
||||
fieldset[disabled] .btn-success:hover,
|
||||
.btn-success.disabled:focus,
|
||||
.btn-success[disabled]:focus,
|
||||
fieldset[disabled] .btn-success:focus,
|
||||
.btn-success.disabled.focus,
|
||||
.btn-success[disabled].focus,
|
||||
fieldset[disabled] .btn-success.focus,
|
||||
.btn-success.disabled:active,
|
||||
.btn-success[disabled]:active,
|
||||
fieldset[disabled] .btn-success:active,
|
||||
.btn-success.disabled.active,
|
||||
.btn-success[disabled].active,
|
||||
fieldset[disabled] .btn-success.active {
|
||||
background-color: #419641;
|
||||
background-image: none;
|
||||
}
|
||||
.btn-info {
|
||||
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #28a4c9;
|
||||
}
|
||||
.btn-info:hover,
|
||||
.btn-info:focus {
|
||||
background-color: #2aabd2;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-info:active,
|
||||
.btn-info.active {
|
||||
background-color: #2aabd2;
|
||||
border-color: #28a4c9;
|
||||
}
|
||||
.btn-info.disabled,
|
||||
.btn-info[disabled],
|
||||
fieldset[disabled] .btn-info,
|
||||
.btn-info.disabled:hover,
|
||||
.btn-info[disabled]:hover,
|
||||
fieldset[disabled] .btn-info:hover,
|
||||
.btn-info.disabled:focus,
|
||||
.btn-info[disabled]:focus,
|
||||
fieldset[disabled] .btn-info:focus,
|
||||
.btn-info.disabled.focus,
|
||||
.btn-info[disabled].focus,
|
||||
fieldset[disabled] .btn-info.focus,
|
||||
.btn-info.disabled:active,
|
||||
.btn-info[disabled]:active,
|
||||
fieldset[disabled] .btn-info:active,
|
||||
.btn-info.disabled.active,
|
||||
.btn-info[disabled].active,
|
||||
fieldset[disabled] .btn-info.active {
|
||||
background-color: #2aabd2;
|
||||
background-image: none;
|
||||
}
|
||||
.btn-warning {
|
||||
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #e38d13;
|
||||
}
|
||||
.btn-warning:hover,
|
||||
.btn-warning:focus {
|
||||
background-color: #eb9316;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-warning:active,
|
||||
.btn-warning.active {
|
||||
background-color: #eb9316;
|
||||
border-color: #e38d13;
|
||||
}
|
||||
.btn-warning.disabled,
|
||||
.btn-warning[disabled],
|
||||
fieldset[disabled] .btn-warning,
|
||||
.btn-warning.disabled:hover,
|
||||
.btn-warning[disabled]:hover,
|
||||
fieldset[disabled] .btn-warning:hover,
|
||||
.btn-warning.disabled:focus,
|
||||
.btn-warning[disabled]:focus,
|
||||
fieldset[disabled] .btn-warning:focus,
|
||||
.btn-warning.disabled.focus,
|
||||
.btn-warning[disabled].focus,
|
||||
fieldset[disabled] .btn-warning.focus,
|
||||
.btn-warning.disabled:active,
|
||||
.btn-warning[disabled]:active,
|
||||
fieldset[disabled] .btn-warning:active,
|
||||
.btn-warning.disabled.active,
|
||||
.btn-warning[disabled].active,
|
||||
fieldset[disabled] .btn-warning.active {
|
||||
background-color: #eb9316;
|
||||
background-image: none;
|
||||
}
|
||||
.btn-danger {
|
||||
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #b92c28;
|
||||
}
|
||||
.btn-danger:hover,
|
||||
.btn-danger:focus {
|
||||
background-color: #c12e2a;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
.btn-danger:active,
|
||||
.btn-danger.active {
|
||||
background-color: #c12e2a;
|
||||
border-color: #b92c28;
|
||||
}
|
||||
.btn-danger.disabled,
|
||||
.btn-danger[disabled],
|
||||
fieldset[disabled] .btn-danger,
|
||||
.btn-danger.disabled:hover,
|
||||
.btn-danger[disabled]:hover,
|
||||
fieldset[disabled] .btn-danger:hover,
|
||||
.btn-danger.disabled:focus,
|
||||
.btn-danger[disabled]:focus,
|
||||
fieldset[disabled] .btn-danger:focus,
|
||||
.btn-danger.disabled.focus,
|
||||
.btn-danger[disabled].focus,
|
||||
fieldset[disabled] .btn-danger.focus,
|
||||
.btn-danger.disabled:active,
|
||||
.btn-danger[disabled]:active,
|
||||
fieldset[disabled] .btn-danger:active,
|
||||
.btn-danger.disabled.active,
|
||||
.btn-danger[disabled].active,
|
||||
fieldset[disabled] .btn-danger.active {
|
||||
background-color: #c12e2a;
|
||||
background-image: none;
|
||||
}
|
||||
.thumbnail,
|
||||
.img-thumbnail {
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
}
|
||||
.dropdown-menu > li > a:hover,
|
||||
.dropdown-menu > li > a:focus {
|
||||
background-color: #e8e8e8;
|
||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.dropdown-menu > .active > a,
|
||||
.dropdown-menu > .active > a:hover,
|
||||
.dropdown-menu > .active > a:focus {
|
||||
background-color: #2e6da4;
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.navbar-default {
|
||||
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
|
||||
background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
|
||||
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
|
||||
}
|
||||
.navbar-default .navbar-nav > .open > a,
|
||||
.navbar-default .navbar-nav > .active > a {
|
||||
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
||||
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
|
||||
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
|
||||
}
|
||||
.navbar-brand,
|
||||
.navbar-nav > li > a {
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
|
||||
}
|
||||
.navbar-inverse {
|
||||
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
||||
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
|
||||
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
||||
background-repeat: repeat-x;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.navbar-inverse .navbar-nav > .open > a,
|
||||
.navbar-inverse .navbar-nav > .active > a {
|
||||
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
||||
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
|
||||
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
|
||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
|
||||
}
|
||||
.navbar-inverse .navbar-brand,
|
||||
.navbar-inverse .navbar-nav > li > a {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
|
||||
}
|
||||
.navbar-static-top,
|
||||
.navbar-fixed-top,
|
||||
.navbar-fixed-bottom {
|
||||
border-radius: 0;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.navbar .navbar-nav .open .dropdown-menu > .active > a,
|
||||
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
|
||||
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
|
||||
color: #fff;
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
}
|
||||
.alert {
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
|
||||
}
|
||||
.alert-success {
|
||||
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #b2dba1;
|
||||
}
|
||||
.alert-info {
|
||||
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #9acfea;
|
||||
}
|
||||
.alert-warning {
|
||||
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #f5e79e;
|
||||
}
|
||||
.alert-danger {
|
||||
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dca7a7;
|
||||
}
|
||||
.progress {
|
||||
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
|
||||
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar {
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-success {
|
||||
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
|
||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-info {
|
||||
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
|
||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-warning {
|
||||
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
|
||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-danger {
|
||||
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
|
||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.progress-bar-striped {
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
||||
}
|
||||
.list-group {
|
||||
border-radius: 4px;
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
||||
}
|
||||
.list-group-item.active,
|
||||
.list-group-item.active:hover,
|
||||
.list-group-item.active:focus {
|
||||
text-shadow: 0 -1px 0 #286090;
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #2b669a;
|
||||
}
|
||||
.list-group-item.active .badge,
|
||||
.list-group-item.active:hover .badge,
|
||||
.list-group-item.active:focus .badge {
|
||||
text-shadow: none;
|
||||
}
|
||||
.panel {
|
||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
|
||||
}
|
||||
.panel-default > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
|
||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-primary > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-success > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
|
||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-info > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
|
||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-warning > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
|
||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.panel-danger > .panel-heading {
|
||||
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
|
||||
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
}
|
||||
.well {
|
||||
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
|
||||
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #dcdcdc;
|
||||
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
|
||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-theme.css.map */
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,70 +0,0 @@
|
|||
body {
|
||||
font-family: Lucida,sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #AA0000;
|
||||
border-bottom: 1px solid #444;
|
||||
}
|
||||
|
||||
h2 { color: #444; }
|
||||
|
||||
pre {
|
||||
font-family: "lucida console","monaco","andale mono","bitstream vera sans mono","consolas",monospace;
|
||||
font-size: 12px;
|
||||
border-left: 2px solid #777;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
footer {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
span.key {
|
||||
color: #449;
|
||||
font-weight: bold;
|
||||
width: 120px;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
span.value {
|
||||
color: #494;
|
||||
}
|
||||
|
||||
/* these are for the message boxes */
|
||||
|
||||
pre.content {
|
||||
background-color: #eee;
|
||||
color: #000;
|
||||
padding: 1em;
|
||||
margin: 0;
|
||||
border: 1px solid #aaa;
|
||||
border-top: 0;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
div.title {
|
||||
font-family: "lucida console","monaco","andale mono","bitstream vera sans mono","consolas",monospace;
|
||||
font-size: 12px;
|
||||
background-color: #aaa;
|
||||
color: #444;
|
||||
font-weight: bold;
|
||||
padding: 3px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
pre.content span.nu {
|
||||
color: #889;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
pre.error {
|
||||
background: #334;
|
||||
color: #ccd;
|
||||
padding: 1em;
|
||||
border-top: 1px solid #000;
|
||||
border-left: 1px solid #000;
|
||||
border-right: 1px solid #eee;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
|
@ -1,189 +0,0 @@
|
|||
|
||||
body {
|
||||
margin: 0;
|
||||
margin-bottom: 25px;
|
||||
padding: 0;
|
||||
background-color: #ddd;
|
||||
background-image: url("/images/perldancer-bg.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: top left;
|
||||
|
||||
font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana";
|
||||
font-size: 13px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 28px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
a {color: #03c}
|
||||
a:hover {
|
||||
background-color: #03c;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#page {
|
||||
background-color: #ddd;
|
||||
width: 750px;
|
||||
margin: auto;
|
||||
margin-left: auto;
|
||||
padding-left: 0px;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
#content {
|
||||
background-color: white;
|
||||
border: 3px solid #aaa;
|
||||
border-top: none;
|
||||
padding: 25px;
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
float: right;
|
||||
width: 175px;
|
||||
}
|
||||
|
||||
#header, #about, #getting-started {
|
||||
padding-left: 75px;
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
|
||||
#header {
|
||||
background-image: url("/images/perldancer.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-position: top left;
|
||||
height: 64px;
|
||||
}
|
||||
#header h1, #header h2 {margin: 0}
|
||||
#header h2 {
|
||||
color: #888;
|
||||
font-weight: normal;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#about h3 {
|
||||
margin: 0;
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#about-content {
|
||||
background-color: #ffd;
|
||||
border: 1px solid #fc0;
|
||||
margin-left: -11px;
|
||||
}
|
||||
#about-content table {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
font-size: 11px;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
#about-content td {
|
||||
padding: 10px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
#about-content td.name {color: #555}
|
||||
#about-content td.value {color: #000}
|
||||
|
||||
#about-content.failure {
|
||||
background-color: #fcc;
|
||||
border: 1px solid #f00;
|
||||
}
|
||||
#about-content.failure p {
|
||||
margin: 0;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#getting-started {
|
||||
border-top: 1px solid #ccc;
|
||||
margin-top: 25px;
|
||||
padding-top: 15px;
|
||||
}
|
||||
#getting-started h1 {
|
||||
margin: 0;
|
||||
font-size: 20px;
|
||||
}
|
||||
#getting-started h2 {
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
color: #333;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
#getting-started ol {
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
#getting-started li {
|
||||
font-size: 18px;
|
||||
color: #888;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
#getting-started li h2 {
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
font-size: 18px;
|
||||
color: #333;
|
||||
}
|
||||
#getting-started li p {
|
||||
color: #555;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
#search {
|
||||
margin: 0;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
font-size: 11px;
|
||||
}
|
||||
#search input {
|
||||
font-size: 11px;
|
||||
margin: 2px;
|
||||
}
|
||||
#search-text {width: 170px}
|
||||
|
||||
#sidebar ul {
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
#sidebar ul h3 {
|
||||
margin-top: 25px;
|
||||
font-size: 16px;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
#sidebar li {
|
||||
list-style-type: none;
|
||||
}
|
||||
#sidebar ul.links li {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5 {
|
||||
font-family: sans-serif;
|
||||
margin: 1.2em 0 0.6em 0;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height: 1.5em;
|
||||
margin: 1.6em 0;
|
||||
}
|
||||
|
||||
code, tt { |